[Pkg-samba-maint] r2200 - in branches/samba/upstream: . docs docs/htmldocs/Samba3-Developers-Guide docs/htmldocs/manpages docs/manpages docs-xml docs-xml/Samba3-ByExample/images docs-xml/Samba3-Developers-Guide docs-xml/Samba3-HOWTO/images docs-xml/build docs-xml/manpages-3 docs-xml/smbdotconf/logon docs-xml/smbdotconf/winbind examples/VFS examples/libsmbclient examples/libsmbclient/smbwrapper packaging packaging/RHEL release-scripts source source/auth source/client source/exports source/groupdb source/include source/lib source/lib/ldb/common source/lib/ldb/web source/lib/netapi source/lib/netapi/examples source/lib/netapi/examples/netdomjoin-gui source/lib/netapi/examples/user source/lib/replace source/lib/replace/system source/lib/smbconf source/lib/socket_wrapper source/lib/talloc source/lib/talloc/web source/lib/tdb source/libaddns source/libads source/libgpo source/libnet source/librpc source/librpc/gen_ndr source/librpc/idl source/librpc/ndr source/libsmb source/locking source/m4 source/modules source/nmbd source/nsswitch source/nsswitch/libwbclient source/param source/passdb source/printing source/profile source/registry source/rpc_client source/rpc_parse source/rpc_server source/rpcclient source/script source/services source/smbd source/torture source/utils source/web source/winbindd

bubulle at alioth.debian.org bubulle at alioth.debian.org
Sat Nov 1 11:10:02 UTC 2008


Author: bubulle
Date: 2008-11-01 11:09:46 +0000 (Sat, 01 Nov 2008)
New Revision: 2200

Added:
   branches/samba/upstream/.gitignore
   branches/samba/upstream/docs-xml/.gitignore
   branches/samba/upstream/docs-xml/Makefile.settings
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/AccountingNetwork.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/Charity-Network.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/UNIX-Samba-and-LDAP.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/acct2net.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-dual-additive-LDAP-Ok.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-dual-additive-LDAP.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-fail-overLDAP.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-singleLDAP.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch8-migration.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap4-net.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap5-net.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap6-net.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap7-idresol.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap9-ADSDC.png
   branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap9-SambaDC.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/access1.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/browsing1.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/cups1.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/cups2.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/domain.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-gid2sid.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-sid2gid.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-sid2uid.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-store-gid2sid.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-uid2sid.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/pdftoepsonusb.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/pdftosocket.png
   branches/samba/upstream/docs-xml/Samba3-HOWTO/images/trusts1.png
   branches/samba/upstream/docs-xml/autom4te.cache/
   branches/samba/upstream/docs-xml/build/catalog.xml
   branches/samba/upstream/docs-xml/config.log
   branches/samba/upstream/docs-xml/config.status
   branches/samba/upstream/docs-xml/configure
   branches/samba/upstream/docs-xml/output/
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapdomains.xml
   branches/samba/upstream/packaging/RHEL4-CTDB/
   branches/samba/upstream/source/exports/libsmbclient.syms
   branches/samba/upstream/source/exports/libsmbsharemodes.syms
   branches/samba/upstream/source/include/libmsrpc.h
   branches/samba/upstream/source/include/libmsrpc_internal.h
   branches/samba/upstream/source/lib/dbwrap_tdb2.c
   branches/samba/upstream/source/lib/netapi/examples/getjoinableous/
   branches/samba/upstream/source/lib/netapi/examples/netdomjoin/
   branches/samba/upstream/source/lib/tdb/swig/
   branches/samba/upstream/source/script/mkproto.awk
   branches/samba/upstream/source/script/mkproto.sh
   branches/samba/upstream/source/winbindd/idmap_cache.c
Removed:
   branches/samba/upstream/docs-xml/manpages-3/idmap_adex.8.xml
   branches/samba/upstream/docs-xml/manpages-3/idmap_hash.8.xml
   branches/samba/upstream/docs-xml/manpages-3/vfs_smb_traffic_analyzer.8.xml
   branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelay.xml
   branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml
   branches/samba/upstream/docs-xml/using_samba/
   branches/samba/upstream/docs/htmldocs/manpages/idmap_adex.8.html
   branches/samba/upstream/docs/htmldocs/manpages/idmap_hash.8.html
   branches/samba/upstream/docs/htmldocs/manpages/vfs_smb_traffic_analyzer.8.html
   branches/samba/upstream/docs/manpages/idmap_adex.8
   branches/samba/upstream/docs/manpages/idmap_hash.8
   branches/samba/upstream/docs/manpages/vfs_smb_traffic_analyzer.8
   branches/samba/upstream/examples/libsmbclient/Makefile.internal.in
   branches/samba/upstream/packaging/RHEL-CTDB/
   branches/samba/upstream/packaging/RHEL/makerpms.git.sh
   branches/samba/upstream/source/client/client_proto.h
   branches/samba/upstream/source/include/async_sock.h
   branches/samba/upstream/source/include/proto.h
   branches/samba/upstream/source/lib/async_sock.c
   branches/samba/upstream/source/lib/compression/
   branches/samba/upstream/source/lib/idmap_cache.c
   branches/samba/upstream/source/lib/netapi/examples/file/
   branches/samba/upstream/source/lib/netapi/examples/group/
   branches/samba/upstream/source/lib/netapi/examples/join/
   branches/samba/upstream/source/lib/netapi/examples/localgroup/
   branches/samba/upstream/source/lib/netapi/examples/server/
   branches/samba/upstream/source/lib/netapi/examples/share/
   branches/samba/upstream/source/lib/netapi/examples/user/user_chgpwd.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_getgroups.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_getinfo.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_getlocalgroups.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_modalsget.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_modalsset.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_setgroups.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_setinfo.c
   branches/samba/upstream/source/lib/netapi/file.c
   branches/samba/upstream/source/lib/netapi/group.c
   branches/samba/upstream/source/lib/netapi/localgroup.c
   branches/samba/upstream/source/lib/netapi/samr.c
   branches/samba/upstream/source/lib/netapi/share.c
   branches/samba/upstream/source/lib/netapi/sid.c
   branches/samba/upstream/source/lib/netapi/tests/
   branches/samba/upstream/source/lib/socket_wrapper/config.mk
   branches/samba/upstream/source/lib/socket_wrapper/testsuite.c
   branches/samba/upstream/source/lib/talloc/NEWS
   branches/samba/upstream/source/lib/tdb/python.mk
   branches/samba/upstream/source/lib/tdb/python/
   branches/samba/upstream/source/lib/tdb/rules.mk
   branches/samba/upstream/source/lib/tdb/tdb.i
   branches/samba/upstream/source/lib/tdb/tdb.mk
   branches/samba/upstream/source/lib/tdb/tdb.py
   branches/samba/upstream/source/lib/tdb/tdb_wrap.c
   branches/samba/upstream/source/lib/tdb/web/
   branches/samba/upstream/source/libgpo/gpext/
   branches/samba/upstream/source/libgpo/gpo_reg.c
   branches/samba/upstream/source/libnet/libnet_dssync.c
   branches/samba/upstream/source/libnet/libnet_dssync.h
   branches/samba/upstream/source/libnet/libnet_dssync_keytab.c
   branches/samba/upstream/source/libnet/libnet_keytab.c
   branches/samba/upstream/source/libnet/libnet_keytab.h
   branches/samba/upstream/source/libnet/libnet_proto.h
   branches/samba/upstream/source/libnet/libnet_samsync.h
   branches/samba/upstream/source/libnet/libnet_samsync_display.c
   branches/samba/upstream/source/libnet/libnet_samsync_keytab.c
   branches/samba/upstream/source/libnet/libnet_samsync_ldif.c
   branches/samba/upstream/source/libnet/libnet_samsync_passdb.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.h
   branches/samba/upstream/source/librpc/gen_ndr/drsblobs.h
   branches/samba/upstream/source/librpc/gen_ndr/drsuapi.h
   branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.h
   branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.h
   branches/samba/upstream/source/librpc/idl/drsblobs.idl
   branches/samba/upstream/source/librpc/idl/drsuapi.idl
   branches/samba/upstream/source/librpc/ndr/ndr_compression.c
   branches/samba/upstream/source/librpc/ndr/ndr_compression.h
   branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.c
   branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.h
   branches/samba/upstream/source/librpc/rpc/
   branches/samba/upstream/source/modules/vfs_acl_xattr.c
   branches/samba/upstream/source/modules/vfs_hpuxacl.h
   branches/samba/upstream/source/modules/vfs_irixacl.h
   branches/samba/upstream/source/modules/vfs_posixacl.h
   branches/samba/upstream/source/modules/vfs_smb_traffic_analyzer.c
   branches/samba/upstream/source/modules/vfs_solarisacl.h
   branches/samba/upstream/source/modules/vfs_tru64acl.h
   branches/samba/upstream/source/rpcclient/cmd_drsuapi.c
   branches/samba/upstream/source/torture/rpc_open_tcp.c
   branches/samba/upstream/source/utils/net_afs.c
   branches/samba/upstream/source/utils/net_afs.h
   branches/samba/upstream/source/utils/net_file.c
   branches/samba/upstream/source/utils/net_group.c
   branches/samba/upstream/source/utils/net_help_common.c
   branches/samba/upstream/source/utils/net_help_common.h
   branches/samba/upstream/source/utils/net_join.c
   branches/samba/upstream/source/utils/net_proto.h
   branches/samba/upstream/source/utils/net_share.c
   branches/samba/upstream/source/utils/net_user.c
   branches/samba/upstream/source/utils/ntlm_auth_proto.h
   branches/samba/upstream/source/utils/passwd_proto.h
   branches/samba/upstream/source/web/swat_proto.h
   branches/samba/upstream/source/winbindd/idmap_adex/
   branches/samba/upstream/source/winbindd/idmap_hash/
   branches/samba/upstream/source/winbindd/winbindd_proto.h
Modified:
   branches/samba/upstream/README.Coding
   branches/samba/upstream/WHATSNEW.txt
   branches/samba/upstream/docs-xml/Makefile
   branches/samba/upstream/docs-xml/Samba3-Developers-Guide/packagers.xml
   branches/samba/upstream/docs-xml/manpages-3/idmap_ad.8.xml
   branches/samba/upstream/docs-xml/manpages-3/idmap_ldap.8.xml
   branches/samba/upstream/docs-xml/manpages-3/idmap_nss.8.xml
   branches/samba/upstream/docs-xml/manpages-3/idmap_rid.8.xml
   branches/samba/upstream/docs-xml/manpages-3/idmap_tdb.8.xml
   branches/samba/upstream/docs-xml/manpages-3/net.8.xml
   branches/samba/upstream/docs-xml/manpages-3/smbcontrol.1.xml
   branches/samba/upstream/docs-xml/manpages-3/winbindd.8.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapallocbackend.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapbackend.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapcachetime.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapconfig.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapgid.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapuid.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml
   branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindtrusteddomainsonly.xml
   branches/samba/upstream/docs/Samba3-ByExample.pdf
   branches/samba/upstream/docs/Samba3-Developers-Guide.pdf
   branches/samba/upstream/docs/Samba3-HOWTO.pdf
   branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/Packaging.html
   branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/index.html
   branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/pt05.html
   branches/samba/upstream/docs/htmldocs/manpages/idmap_ad.8.html
   branches/samba/upstream/docs/htmldocs/manpages/idmap_ldap.8.html
   branches/samba/upstream/docs/htmldocs/manpages/idmap_nss.8.html
   branches/samba/upstream/docs/htmldocs/manpages/idmap_rid.8.html
   branches/samba/upstream/docs/htmldocs/manpages/idmap_tdb.8.html
   branches/samba/upstream/docs/htmldocs/manpages/index.html
   branches/samba/upstream/docs/htmldocs/manpages/net.8.html
   branches/samba/upstream/docs/htmldocs/manpages/smb.conf.5.html
   branches/samba/upstream/docs/htmldocs/manpages/smbcontrol.1.html
   branches/samba/upstream/docs/htmldocs/manpages/winbindd.8.html
   branches/samba/upstream/docs/manpages/cifs.upcall.8
   branches/samba/upstream/docs/manpages/eventlogadm.8
   branches/samba/upstream/docs/manpages/findsmb.1
   branches/samba/upstream/docs/manpages/idmap_ad.8
   branches/samba/upstream/docs/manpages/idmap_ldap.8
   branches/samba/upstream/docs/manpages/idmap_nss.8
   branches/samba/upstream/docs/manpages/idmap_rid.8
   branches/samba/upstream/docs/manpages/idmap_tdb.8
   branches/samba/upstream/docs/manpages/ldb.3
   branches/samba/upstream/docs/manpages/ldbadd.1
   branches/samba/upstream/docs/manpages/ldbdel.1
   branches/samba/upstream/docs/manpages/ldbedit.1
   branches/samba/upstream/docs/manpages/ldbmodify.1
   branches/samba/upstream/docs/manpages/ldbsearch.1
   branches/samba/upstream/docs/manpages/libsmbclient.7
   branches/samba/upstream/docs/manpages/lmhosts.5
   branches/samba/upstream/docs/manpages/log2pcap.1
   branches/samba/upstream/docs/manpages/mount.cifs.8
   branches/samba/upstream/docs/manpages/net.8
   branches/samba/upstream/docs/manpages/nmbd.8
   branches/samba/upstream/docs/manpages/nmblookup.1
   branches/samba/upstream/docs/manpages/ntlm_auth.1
   branches/samba/upstream/docs/manpages/pam_winbind.7
   branches/samba/upstream/docs/manpages/pdbedit.8
   branches/samba/upstream/docs/manpages/profiles.1
   branches/samba/upstream/docs/manpages/rpcclient.1
   branches/samba/upstream/docs/manpages/samba.7
   branches/samba/upstream/docs/manpages/smb.conf.5
   branches/samba/upstream/docs/manpages/smbcacls.1
   branches/samba/upstream/docs/manpages/smbclient.1
   branches/samba/upstream/docs/manpages/smbcontrol.1
   branches/samba/upstream/docs/manpages/smbcquotas.1
   branches/samba/upstream/docs/manpages/smbd.8
   branches/samba/upstream/docs/manpages/smbget.1
   branches/samba/upstream/docs/manpages/smbgetrc.5
   branches/samba/upstream/docs/manpages/smbpasswd.5
   branches/samba/upstream/docs/manpages/smbpasswd.8
   branches/samba/upstream/docs/manpages/smbspool.8
   branches/samba/upstream/docs/manpages/smbstatus.1
   branches/samba/upstream/docs/manpages/smbtar.1
   branches/samba/upstream/docs/manpages/smbtree.1
   branches/samba/upstream/docs/manpages/swat.8
   branches/samba/upstream/docs/manpages/tdbbackup.8
   branches/samba/upstream/docs/manpages/tdbdump.8
   branches/samba/upstream/docs/manpages/tdbtool.8
   branches/samba/upstream/docs/manpages/testparm.1
   branches/samba/upstream/docs/manpages/umount.cifs.8
   branches/samba/upstream/docs/manpages/vfs_audit.8
   branches/samba/upstream/docs/manpages/vfs_cacheprime.8
   branches/samba/upstream/docs/manpages/vfs_cap.8
   branches/samba/upstream/docs/manpages/vfs_catia.8
   branches/samba/upstream/docs/manpages/vfs_commit.8
   branches/samba/upstream/docs/manpages/vfs_default_quota.8
   branches/samba/upstream/docs/manpages/vfs_extd_audit.8
   branches/samba/upstream/docs/manpages/vfs_fake_perms.8
   branches/samba/upstream/docs/manpages/vfs_full_audit.8
   branches/samba/upstream/docs/manpages/vfs_gpfs.8
   branches/samba/upstream/docs/manpages/vfs_netatalk.8
   branches/samba/upstream/docs/manpages/vfs_notify_fam.8
   branches/samba/upstream/docs/manpages/vfs_prealloc.8
   branches/samba/upstream/docs/manpages/vfs_readahead.8
   branches/samba/upstream/docs/manpages/vfs_readonly.8
   branches/samba/upstream/docs/manpages/vfs_recycle.8
   branches/samba/upstream/docs/manpages/vfs_shadow_copy.8
   branches/samba/upstream/docs/manpages/vfs_streams_depot.8
   branches/samba/upstream/docs/manpages/vfs_streams_xattr.8
   branches/samba/upstream/docs/manpages/vfs_xattr_tdb.8
   branches/samba/upstream/docs/manpages/vfstest.1
   branches/samba/upstream/docs/manpages/wbinfo.1
   branches/samba/upstream/docs/manpages/winbindd.8
   branches/samba/upstream/examples/VFS/skel_opaque.c
   branches/samba/upstream/examples/VFS/skel_transparent.c
   branches/samba/upstream/examples/libsmbclient/Makefile
   branches/samba/upstream/examples/libsmbclient/smbwrapper/Makefile
   branches/samba/upstream/examples/libsmbclient/smbwrapper/wrapper.c
   branches/samba/upstream/examples/libsmbclient/testacl.c
   branches/samba/upstream/packaging/RHEL/makerpms.sh
   branches/samba/upstream/packaging/RHEL/samba.spec
   branches/samba/upstream/packaging/RHEL/samba.spec.tmpl
   branches/samba/upstream/release-scripts/build-docs
   branches/samba/upstream/source/Doxyfile
   branches/samba/upstream/source/Makefile.in
   branches/samba/upstream/source/VERSION
   branches/samba/upstream/source/auth/auth_builtin.c
   branches/samba/upstream/source/auth/auth_domain.c
   branches/samba/upstream/source/auth/auth_ntlmssp.c
   branches/samba/upstream/source/auth/auth_sam.c
   branches/samba/upstream/source/auth/auth_server.c
   branches/samba/upstream/source/auth/auth_util.c
   branches/samba/upstream/source/auth/auth_winbind.c
   branches/samba/upstream/source/auth/pampass.c
   branches/samba/upstream/source/auth/token_util.c
   branches/samba/upstream/source/autogen.sh
   branches/samba/upstream/source/client/client.c
   branches/samba/upstream/source/client/mount.cifs.c
   branches/samba/upstream/source/configure
   branches/samba/upstream/source/configure.in
   branches/samba/upstream/source/dynconfig.c
   branches/samba/upstream/source/groupdb/mapping_tdb.c
   branches/samba/upstream/source/include/ads.h
   branches/samba/upstream/source/include/async_req.h
   branches/samba/upstream/source/include/auth.h
   branches/samba/upstream/source/include/client.h
   branches/samba/upstream/source/include/config.h.in
   branches/samba/upstream/source/include/ctdbd_conn.h
   branches/samba/upstream/source/include/dbwrap.h
   branches/samba/upstream/source/include/doserr.h
   branches/samba/upstream/source/include/dynconfig.h
   branches/samba/upstream/source/include/fake_file.h
   branches/samba/upstream/source/include/gpo.h
   branches/samba/upstream/source/include/idmap.h
   branches/samba/upstream/source/include/includes.h
   branches/samba/upstream/source/include/libsmb_internal.h
   branches/samba/upstream/source/include/libsmbclient.h
   branches/samba/upstream/source/include/nss_info.h
   branches/samba/upstream/source/include/ntdomain.h
   branches/samba/upstream/source/include/ntlmssp.h
   branches/samba/upstream/source/include/ntquotas.h
   branches/samba/upstream/source/include/passdb.h
   branches/samba/upstream/source/include/popt_common.h
   branches/samba/upstream/source/include/printing.h
   branches/samba/upstream/source/include/reg_objects.h
   branches/samba/upstream/source/include/rpc_client.h
   branches/samba/upstream/source/include/rpc_dce.h
   branches/samba/upstream/source/include/rpc_ntsvcs.h
   branches/samba/upstream/source/include/rpc_secdes.h
   branches/samba/upstream/source/include/rpc_svcctl.h
   branches/samba/upstream/source/include/smb.h
   branches/samba/upstream/source/include/smb_macros.h
   branches/samba/upstream/source/include/smbldap.h
   branches/samba/upstream/source/include/smbprofile.h
   branches/samba/upstream/source/include/version.h
   branches/samba/upstream/source/include/vfs.h
   branches/samba/upstream/source/include/vfs_macros.h
   branches/samba/upstream/source/lib/access.c
   branches/samba/upstream/source/lib/account_pol.c
   branches/samba/upstream/source/lib/afs.c
   branches/samba/upstream/source/lib/async_req.c
   branches/samba/upstream/source/lib/charcnv.c
   branches/samba/upstream/source/lib/ctdbd_conn.c
   branches/samba/upstream/source/lib/data_blob.c
   branches/samba/upstream/source/lib/dbwrap.c
   branches/samba/upstream/source/lib/dbwrap_ctdb.c
   branches/samba/upstream/source/lib/dbwrap_util.c
   branches/samba/upstream/source/lib/events.c
   branches/samba/upstream/source/lib/fault.c
   branches/samba/upstream/source/lib/fsusage.c
   branches/samba/upstream/source/lib/iconv.c
   branches/samba/upstream/source/lib/ldb/common/ldb.c
   branches/samba/upstream/source/lib/ldb/web/index.html
   branches/samba/upstream/source/lib/messages.c
   branches/samba/upstream/source/lib/messages_ctdbd.c
   branches/samba/upstream/source/lib/messages_local.c
   branches/samba/upstream/source/lib/module.c
   branches/samba/upstream/source/lib/ms_fnmatch.c
   branches/samba/upstream/source/lib/netapi/cm.c
   branches/samba/upstream/source/lib/netapi/examples/Makefile.in
   branches/samba/upstream/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_dispinfo.c
   branches/samba/upstream/source/lib/netapi/examples/user/user_enum.c
   branches/samba/upstream/source/lib/netapi/getdc.c
   branches/samba/upstream/source/lib/netapi/joindomain.c
   branches/samba/upstream/source/lib/netapi/libnetapi.c
   branches/samba/upstream/source/lib/netapi/libnetapi.h
   branches/samba/upstream/source/lib/netapi/netapi.c
   branches/samba/upstream/source/lib/netapi/netapi.h
   branches/samba/upstream/source/lib/netapi/netapi_private.h
   branches/samba/upstream/source/lib/netapi/serverinfo.c
   branches/samba/upstream/source/lib/netapi/user.c
   branches/samba/upstream/source/lib/popt_common.c
   branches/samba/upstream/source/lib/replace/libreplace_ld.m4
   branches/samba/upstream/source/lib/replace/system/kerberos.h
   branches/samba/upstream/source/lib/sendfile.c
   branches/samba/upstream/source/lib/sharesec.c
   branches/samba/upstream/source/lib/smbconf/smbconf_reg.c
   branches/samba/upstream/source/lib/smbldap.c
   branches/samba/upstream/source/lib/socket_wrapper/config.m4
   branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.c
   branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.h
   branches/samba/upstream/source/lib/substitute.c
   branches/samba/upstream/source/lib/talloc/Makefile.in
   branches/samba/upstream/source/lib/talloc/config.mk
   branches/samba/upstream/source/lib/talloc/configure.ac
   branches/samba/upstream/source/lib/talloc/talloc.c
   branches/samba/upstream/source/lib/talloc/talloc.mk
   branches/samba/upstream/source/lib/talloc/testsuite.c
   branches/samba/upstream/source/lib/talloc/web/index.html
   branches/samba/upstream/source/lib/tdb/Makefile.in
   branches/samba/upstream/source/lib/tdb/autogen.sh
   branches/samba/upstream/source/lib/tdb/config.mk
   branches/samba/upstream/source/lib/tdb/configure.ac
   branches/samba/upstream/source/lib/tdb/libtdb.m4
   branches/samba/upstream/source/lib/tdb/tdb.pc.in
   branches/samba/upstream/source/lib/time.c
   branches/samba/upstream/source/lib/util.c
   branches/samba/upstream/source/lib/util_nttoken.c
   branches/samba/upstream/source/lib/util_reg_api.c
   branches/samba/upstream/source/lib/util_str.c
   branches/samba/upstream/source/lib/util_unistr.c
   branches/samba/upstream/source/lib/util_uuid.c
   branches/samba/upstream/source/lib/version.c
   branches/samba/upstream/source/libaddns/dns.h
   branches/samba/upstream/source/libads/kerberos.c
   branches/samba/upstream/source/libads/kerberos_keytab.c
   branches/samba/upstream/source/libads/kerberos_verify.c
   branches/samba/upstream/source/libads/ldap.c
   branches/samba/upstream/source/libads/ldap_printer.c
   branches/samba/upstream/source/libads/ldap_schema.c
   branches/samba/upstream/source/libgpo/gpo_ini.c
   branches/samba/upstream/source/libgpo/gpo_ldap.c
   branches/samba/upstream/source/libgpo/gpo_util.c
   branches/samba/upstream/source/libnet/libnet.h
   branches/samba/upstream/source/libnet/libnet_join.c
   branches/samba/upstream/source/libnet/libnet_samsync.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_dfs.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_dssetup.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_echo.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_epmapper.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_eventlog.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.h
   branches/samba/upstream/source/librpc/gen_ndr/cli_lsa.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_netlogon.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.h
   branches/samba/upstream/source/librpc/gen_ndr/cli_samr.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_srvsvc.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.h
   branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.c
   branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.h
   branches/samba/upstream/source/librpc/gen_ndr/cli_wkssvc.c
   branches/samba/upstream/source/librpc/gen_ndr/dfs.h
   branches/samba/upstream/source/librpc/gen_ndr/initshutdown.h
   branches/samba/upstream/source/librpc/gen_ndr/libnet_join.h
   branches/samba/upstream/source/librpc/gen_ndr/libnetapi.h
   branches/samba/upstream/source/librpc/gen_ndr/ndr_dfs.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_initshutdown.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_libnet_join.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.h
   branches/samba/upstream/source/librpc/gen_ndr/ndr_nbt.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_ntsvcs.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.h
   branches/samba/upstream/source/librpc/gen_ndr/ndr_winreg.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_wkssvc.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.c
   branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.h
   branches/samba/upstream/source/librpc/gen_ndr/ntsvcs.h
   branches/samba/upstream/source/librpc/gen_ndr/srv_dfs.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_dssetup.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_echo.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_epmapper.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_eventlog.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_initshutdown.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_lsa.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_netlogon.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_ntsvcs.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_samr.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_srvsvc.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_svcctl.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_winreg.c
   branches/samba/upstream/source/librpc/gen_ndr/srv_wkssvc.c
   branches/samba/upstream/source/librpc/gen_ndr/svcctl.h
   branches/samba/upstream/source/librpc/gen_ndr/winreg.h
   branches/samba/upstream/source/librpc/gen_ndr/wkssvc.h
   branches/samba/upstream/source/librpc/gen_ndr/xattr.h
   branches/samba/upstream/source/librpc/idl/dfs.idl
   branches/samba/upstream/source/librpc/idl/initshutdown.idl
   branches/samba/upstream/source/librpc/idl/libnet_join.idl
   branches/samba/upstream/source/librpc/idl/libnetapi.idl
   branches/samba/upstream/source/librpc/idl/ntsvcs.idl
   branches/samba/upstream/source/librpc/idl/svcctl.idl
   branches/samba/upstream/source/librpc/idl/winreg.idl
   branches/samba/upstream/source/librpc/idl/wkssvc.idl
   branches/samba/upstream/source/librpc/idl/xattr.idl
   branches/samba/upstream/source/librpc/ndr/libndr.h
   branches/samba/upstream/source/librpc/ndr/ndr_misc.c
   branches/samba/upstream/source/librpc/ndr/ndr_string.c
   branches/samba/upstream/source/libsmb/asn1.c
   branches/samba/upstream/source/libsmb/cliconnect.c
   branches/samba/upstream/source/libsmb/clientgen.c
   branches/samba/upstream/source/libsmb/clifile.c
   branches/samba/upstream/source/libsmb/clikrb5.c
   branches/samba/upstream/source/libsmb/clirap.c
   branches/samba/upstream/source/libsmb/clirap2.c
   branches/samba/upstream/source/libsmb/clireadwrite.c
   branches/samba/upstream/source/libsmb/conncache.c
   branches/samba/upstream/source/libsmb/doserr.c
   branches/samba/upstream/source/libsmb/dsgetdcname.c
   branches/samba/upstream/source/libsmb/libsmb_compat.c
   branches/samba/upstream/source/libsmb/libsmb_context.c
   branches/samba/upstream/source/libsmb/libsmb_dir.c
   branches/samba/upstream/source/libsmb/libsmb_file.c
   branches/samba/upstream/source/libsmb/libsmb_server.c
   branches/samba/upstream/source/libsmb/libsmb_xattr.c
   branches/samba/upstream/source/libsmb/ntlmssp.c
   branches/samba/upstream/source/libsmb/passchange.c
   branches/samba/upstream/source/libsmb/smbencrypt.c
   branches/samba/upstream/source/libsmb/trusts_util.c
   branches/samba/upstream/source/locking/locking.c
   branches/samba/upstream/source/m4/check_path.m4
   branches/samba/upstream/source/modules/nfs4_acls.c
   branches/samba/upstream/source/modules/vfs_afsacl.c
   branches/samba/upstream/source/modules/vfs_aio_fork.c
   branches/samba/upstream/source/modules/vfs_aixacl2.c
   branches/samba/upstream/source/modules/vfs_cap.c
   branches/samba/upstream/source/modules/vfs_catia.c
   branches/samba/upstream/source/modules/vfs_default.c
   branches/samba/upstream/source/modules/vfs_expand_msdfs.c
   branches/samba/upstream/source/modules/vfs_fake_perms.c
   branches/samba/upstream/source/modules/vfs_fileid.c
   branches/samba/upstream/source/modules/vfs_full_audit.c
   branches/samba/upstream/source/modules/vfs_gpfs.c
   branches/samba/upstream/source/modules/vfs_recycle.c
   branches/samba/upstream/source/modules/vfs_shadow_copy2.c
   branches/samba/upstream/source/modules/vfs_zfsacl.c
   branches/samba/upstream/source/nmbd/nmbd.c
   branches/samba/upstream/source/nmbd/nmbd_packets.c
   branches/samba/upstream/source/nmbd/nmbd_processlogon.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbc_idmap.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbc_pam.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbc_pwd.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbc_sid.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbc_util.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbclient.c
   branches/samba/upstream/source/nsswitch/libwbclient/wbclient.h
   branches/samba/upstream/source/nsswitch/pam_winbind.c
   branches/samba/upstream/source/nsswitch/pam_winbind.h
   branches/samba/upstream/source/nsswitch/wbinfo.c
   branches/samba/upstream/source/nsswitch/winbind_krb5_locator.c
   branches/samba/upstream/source/param/loadparm.c
   branches/samba/upstream/source/passdb/lookup_sid.c
   branches/samba/upstream/source/passdb/passdb.c
   branches/samba/upstream/source/passdb/pdb_get_set.c
   branches/samba/upstream/source/passdb/pdb_interface.c
   branches/samba/upstream/source/passdb/pdb_ldap.c
   branches/samba/upstream/source/passdb/pdb_tdb.c
   branches/samba/upstream/source/passdb/secrets.c
   branches/samba/upstream/source/printing/nt_printing.c
   branches/samba/upstream/source/printing/print_cups.c
   branches/samba/upstream/source/printing/printfsp.c
   branches/samba/upstream/source/printing/printing.c
   branches/samba/upstream/source/profile/profile.c
   branches/samba/upstream/source/registry/reg_backend_db.c
   branches/samba/upstream/source/registry/reg_util.c
   branches/samba/upstream/source/rpc_client/cli_lsarpc.c
   branches/samba/upstream/source/rpc_client/cli_netlogon.c
   branches/samba/upstream/source/rpc_client/cli_pipe.c
   branches/samba/upstream/source/rpc_client/cli_samr.c
   branches/samba/upstream/source/rpc_client/cli_spoolss.c
   branches/samba/upstream/source/rpc_client/cli_spoolss_notify.c
   branches/samba/upstream/source/rpc_client/cli_svcctl.c
   branches/samba/upstream/source/rpc_client/init_netlogon.c
   branches/samba/upstream/source/rpc_client/init_samr.c
   branches/samba/upstream/source/rpc_client/ndr.c
   branches/samba/upstream/source/rpc_parse/parse_rpc.c
   branches/samba/upstream/source/rpc_parse/parse_spoolss.c
   branches/samba/upstream/source/rpc_parse/parse_svcctl.c
   branches/samba/upstream/source/rpc_server/srv_dfs_nt.c
   branches/samba/upstream/source/rpc_server/srv_eventlog.c
   branches/samba/upstream/source/rpc_server/srv_initshutdown_nt.c
   branches/samba/upstream/source/rpc_server/srv_lsa_hnd.c
   branches/samba/upstream/source/rpc_server/srv_lsa_nt.c
   branches/samba/upstream/source/rpc_server/srv_netlog_nt.c
   branches/samba/upstream/source/rpc_server/srv_ntsvcs.c
   branches/samba/upstream/source/rpc_server/srv_pipe.c
   branches/samba/upstream/source/rpc_server/srv_pipe_hnd.c
   branches/samba/upstream/source/rpc_server/srv_samr_nt.c
   branches/samba/upstream/source/rpc_server/srv_spoolss.c
   branches/samba/upstream/source/rpc_server/srv_spoolss_nt.c
   branches/samba/upstream/source/rpc_server/srv_srvsvc_nt.c
   branches/samba/upstream/source/rpc_server/srv_svcctl.c
   branches/samba/upstream/source/rpc_server/srv_svcctl_nt.c
   branches/samba/upstream/source/rpc_server/srv_winreg_nt.c
   branches/samba/upstream/source/rpc_server/srv_wkssvc_nt.c
   branches/samba/upstream/source/rpcclient/cmd_dfs.c
   branches/samba/upstream/source/rpcclient/cmd_dssetup.c
   branches/samba/upstream/source/rpcclient/cmd_echo.c
   branches/samba/upstream/source/rpcclient/cmd_lsarpc.c
   branches/samba/upstream/source/rpcclient/cmd_netlogon.c
   branches/samba/upstream/source/rpcclient/cmd_ntsvcs.c
   branches/samba/upstream/source/rpcclient/cmd_samr.c
   branches/samba/upstream/source/rpcclient/cmd_shutdown.c
   branches/samba/upstream/source/rpcclient/cmd_spoolss.c
   branches/samba/upstream/source/rpcclient/cmd_srvsvc.c
   branches/samba/upstream/source/rpcclient/cmd_test.c
   branches/samba/upstream/source/rpcclient/cmd_wkssvc.c
   branches/samba/upstream/source/rpcclient/rpcclient.c
   branches/samba/upstream/source/rpcclient/rpcclient.h
   branches/samba/upstream/source/script/installman.sh
   branches/samba/upstream/source/script/mkbuildoptions.awk
   branches/samba/upstream/source/script/mkversion.sh
   branches/samba/upstream/source/services/services_db.c
   branches/samba/upstream/source/services/svc_rcinit.c
   branches/samba/upstream/source/smbd/change_trust_pw.c
   branches/samba/upstream/source/smbd/close.c
   branches/samba/upstream/source/smbd/conn.c
   branches/samba/upstream/source/smbd/connection.c
   branches/samba/upstream/source/smbd/dfree.c
   branches/samba/upstream/source/smbd/dir.c
   branches/samba/upstream/source/smbd/fake_file.c
   branches/samba/upstream/source/smbd/file_access.c
   branches/samba/upstream/source/smbd/filename.c
   branches/samba/upstream/source/smbd/files.c
   branches/samba/upstream/source/smbd/ipc.c
   branches/samba/upstream/source/smbd/lanman.c
   branches/samba/upstream/source/smbd/mangle_hash.c
   branches/samba/upstream/source/smbd/message.c
   branches/samba/upstream/source/smbd/msdfs.c
   branches/samba/upstream/source/smbd/negprot.c
   branches/samba/upstream/source/smbd/notify.c
   branches/samba/upstream/source/smbd/ntquotas.c
   branches/samba/upstream/source/smbd/nttrans.c
   branches/samba/upstream/source/smbd/open.c
   branches/samba/upstream/source/smbd/password.c
   branches/samba/upstream/source/smbd/pipes.c
   branches/samba/upstream/source/smbd/posix_acls.c
   branches/samba/upstream/source/smbd/process.c
   branches/samba/upstream/source/smbd/reply.c
   branches/samba/upstream/source/smbd/sec_ctx.c
   branches/samba/upstream/source/smbd/server.c
   branches/samba/upstream/source/smbd/service.c
   branches/samba/upstream/source/smbd/session.c
   branches/samba/upstream/source/smbd/sesssetup.c
   branches/samba/upstream/source/smbd/share_access.c
   branches/samba/upstream/source/smbd/trans2.c
   branches/samba/upstream/source/smbd/uid.c
   branches/samba/upstream/source/smbd/utmp.c
   branches/samba/upstream/source/smbd/vfs.c
   branches/samba/upstream/source/torture/t_push_ucs2.c
   branches/samba/upstream/source/torture/torture.c
   branches/samba/upstream/source/torture/vfstest.c
   branches/samba/upstream/source/utils/net.c
   branches/samba/upstream/source/utils/net.h
   branches/samba/upstream/source/utils/net_ads.c
   branches/samba/upstream/source/utils/net_ads_gpo.c
   branches/samba/upstream/source/utils/net_cache.c
   branches/samba/upstream/source/utils/net_conf.c
   branches/samba/upstream/source/utils/net_dom.c
   branches/samba/upstream/source/utils/net_groupmap.c
   branches/samba/upstream/source/utils/net_help.c
   branches/samba/upstream/source/utils/net_idmap.c
   branches/samba/upstream/source/utils/net_lookup.c
   branches/samba/upstream/source/utils/net_rap.c
   branches/samba/upstream/source/utils/net_registry.c
   branches/samba/upstream/source/utils/net_registry_util.c
   branches/samba/upstream/source/utils/net_registry_util.h
   branches/samba/upstream/source/utils/net_rpc.c
   branches/samba/upstream/source/utils/net_rpc_audit.c
   branches/samba/upstream/source/utils/net_rpc_join.c
   branches/samba/upstream/source/utils/net_rpc_printer.c
   branches/samba/upstream/source/utils/net_rpc_registry.c
   branches/samba/upstream/source/utils/net_rpc_rights.c
   branches/samba/upstream/source/utils/net_rpc_samsync.c
   branches/samba/upstream/source/utils/net_rpc_service.c
   branches/samba/upstream/source/utils/net_rpc_sh_acct.c
   branches/samba/upstream/source/utils/net_rpc_shell.c
   branches/samba/upstream/source/utils/net_sam.c
   branches/samba/upstream/source/utils/net_status.c
   branches/samba/upstream/source/utils/net_time.c
   branches/samba/upstream/source/utils/net_usershare.c
   branches/samba/upstream/source/utils/net_util.c
   branches/samba/upstream/source/utils/netlookup.c
   branches/samba/upstream/source/utils/ntlm_auth_diagnostics.c
   branches/samba/upstream/source/utils/smbcacls.c
   branches/samba/upstream/source/utils/smbcontrol.c
   branches/samba/upstream/source/utils/smbcquotas.c
   branches/samba/upstream/source/utils/smbtree.c
   branches/samba/upstream/source/utils/status.c
   branches/samba/upstream/source/utils/status_profile.c
   branches/samba/upstream/source/utils/testparm.c
   branches/samba/upstream/source/web/statuspage.c
   branches/samba/upstream/source/web/swat.c
   branches/samba/upstream/source/winbindd/idmap.c
   branches/samba/upstream/source/winbindd/idmap_ad.c
   branches/samba/upstream/source/winbindd/idmap_ldap.c
   branches/samba/upstream/source/winbindd/idmap_nss.c
   branches/samba/upstream/source/winbindd/idmap_passdb.c
   branches/samba/upstream/source/winbindd/idmap_rid.c
   branches/samba/upstream/source/winbindd/idmap_tdb.c
   branches/samba/upstream/source/winbindd/idmap_tdb2.c
   branches/samba/upstream/source/winbindd/idmap_util.c
   branches/samba/upstream/source/winbindd/nss_info.c
   branches/samba/upstream/source/winbindd/nss_info_template.c
   branches/samba/upstream/source/winbindd/winbindd.c
   branches/samba/upstream/source/winbindd/winbindd.h
   branches/samba/upstream/source/winbindd/winbindd_ads.c
   branches/samba/upstream/source/winbindd/winbindd_async.c
   branches/samba/upstream/source/winbindd/winbindd_cache.c
   branches/samba/upstream/source/winbindd/winbindd_cm.c
   branches/samba/upstream/source/winbindd/winbindd_dual.c
   branches/samba/upstream/source/winbindd/winbindd_group.c
   branches/samba/upstream/source/winbindd/winbindd_idmap.c
   branches/samba/upstream/source/winbindd/winbindd_locator.c
   branches/samba/upstream/source/winbindd/winbindd_misc.c
   branches/samba/upstream/source/winbindd/winbindd_pam.c
   branches/samba/upstream/source/winbindd/winbindd_rpc.c
   branches/samba/upstream/source/winbindd/winbindd_sid.c
   branches/samba/upstream/source/winbindd/winbindd_user.c
   branches/samba/upstream/source/winbindd/winbindd_util.c
Log:
Revert the merge of 3.3.0~pre2 in upstream branch


Copied: branches/samba/upstream/.gitignore (from rev 2163, branches/samba/upstream/.gitignore)
===================================================================
--- branches/samba/upstream/.gitignore	                        (rev 0)
+++ branches/samba/upstream/.gitignore	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,69 @@
+*.o
+*.po
+*~
+semantic.cache
+source/TAGS
+source/client/client_proto.h
+source/libnet/libnet_proto.h
+source/include/build_env.h
+source/include/config.h
+source/include/config.h.in
+source/include/proto.h
+source/include/stamp-h
+source/include/version.h
+source/Makefile
+source/lib/netapi/examples/Makefile
+source/config.log
+source/config.status
+source/configure
+source/smbadduser
+source/bin/*
+source/script/findsmb
+source/script/gen-8bit-gap.sh
+source/script/installbin.sh
+source/script/uninstallbin.sh
+source/smbd/build_options.c
+source/utils/net_proto.h
+source/utils/ntlm_auth_proto.h
+source/web/swat_proto.h
+source/tags
+source/utils/passwd_proto.h
+source/include/includes.h.gch
+source/config.cache
+source/library-versions
+source/nsswitch/*.so
+source/proto_exists
+source/winbindd/winbindd_proto.h
+source/cscope.out
+source/torture.tdb
+source/pkgconfig/*.pc
+source/st
+source/exports/libnetapi.syms
+source/exports/libtalloc.syms
+source/exports/libtdb.syms
+source/exports/libwbclient.syms
+examples/VFS/Makefile
+examples/VFS/config.log
+examples/VFS/config.status
+examples/VFS/configure
+examples/VFS/module_config.h
+examples/VFS/module_config.h.in
+examples/VFS/shadow_copy_test.so
+examples/VFS/skel_opaque.so
+examples/VFS/skel_transparent.so
+examples/libsmbclient/smbwrapper/smbsh
+examples/libsmbclient/smbwrapper/smbwrapper.so
+examples/libsmbclient/testacl
+examples/libsmbclient/testacl2
+examples/libsmbclient/testacl3
+examples/libsmbclient/testbrowse
+examples/libsmbclient/testbrowse2
+examples/libsmbclient/testchmod
+examples/libsmbclient/testread
+examples/libsmbclient/testsmbc
+examples/libsmbclient/teststat
+examples/libsmbclient/teststat2
+examples/libsmbclient/teststat3
+examples/libsmbclient/testutime
+examples/libsmbclient/testwrite
+examples/libsmbclient/testtruncate

Modified: branches/samba/upstream/README.Coding
===================================================================
--- branches/samba/upstream/README.Coding	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/README.Coding	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,5 +1,5 @@
 ##
-## Coding conventions in the Samba 3 tree
+## Coding conventions in the Samba 3.0 tree
 ##
 
 ===========
@@ -7,11 +7,11 @@
 ===========
 
 Coding style guidelines are about reducing the number of unnecessary
-reformatting patches and making things easier for developers to work together.
+reformatting patches and making things easier developers to work together.
 You don't have to like them or even agree with them, but once put in place
 we all have to abide by them (or vote to change them).  However, coding
 style should never outweigh coding itself and so the the guidelines
-described here are hopefully easy enough to follow as they are very
+described here are hopefully easier enough to follow as they are very
 common and supported by tools and editors.
 
 The basic style, also mentioned in the SAMBA_4_0/prog_guide.txt is the

Modified: branches/samba/upstream/WHATSNEW.txt
===================================================================
--- branches/samba/upstream/WHATSNEW.txt	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/WHATSNEW.txt	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,214 +1,56 @@
-                   =================================
-                   Release Notes for Samba 3.3.0pre2
-                           October 2, 2008
-                   =================================
+                   ==============================
+                   Release Notes for Samba 3.2.4
+			September 18, 2008
+                   ==============================
 
-This is the second preview release of Samba 3.3.0.  This is *not*
-intended for production environments and is designed for testing
-purposes only.  Please report any defects via the Samba bug reporting
-system at https://bugzilla.samba.org/.
 
-Major enhancements in Samba 3.3.0 include:
+This is a bug fix release of the Samba 3.2 series.
 
- Configuration/installation:
- o Splitting of library directory into library directory and separate
-   modules directory.
+Major bug fixes included in Samba 3.2.4 are:
 
- File Serving:
- o Extended Cluster support.
+  o Fix Winbind crashes.
+  o Fix changing of machine account passwords.
+  o Fix non guest connections to shares when "security = share"
+    is used.
+  o Fix file write times.
 
- Winbind:
- o Simplified idmap configuration.
- o New idmap backends "adex" and "hash".
- o Added new parameter "winbind reconnect delay".
- o Added support for user and group aliasing.
 
- Administrative tools:
- o The destination "all" of smbcontrol does now affect all running
-   daemons including nmbd and winbindd.
- o New 'net rpc vampire keytab' and 'net rpc vampire ldif' commands.
- o The 'net' utility can now use kerberos for joining and authentication.
-
- Libraries:
- o NetApi library implements various new calls for User- and Group
-   Account Management.
-
-
-Configure changes
-=================
-
-The configure option "--with-libdir" has been removed. The library
-directory can still be specified by using the existing "--libdir" option.
-A new option "--with-modulesdir" has been added to allow the specification
-of a separate directory for the shared modules.
-
-
-Winbind idmap backend changes
-=============================
-
-The idmap configuration has changed with version 3.3 to something that
-allows a smoother upgrade path from pre-3.0.25 configurations that use
-"idmap backend". The reason for this change is that to many, also to Samba
-developers, the 3.0.25 style configuration with "idmap config" turned out
-to be very complex. Version 3.3 no longer deprecates the "idmap backend"
-parameter, instead with "idmap backend" the default idmap backend is
-specified.
-
-Accordingly, the "idmap config <domain> : default = yes" setting is no
-longer being looked at.
-
-The alloc backend defaults to the default backend, which should be able to
-allocate IDs. In the default distribution the tdb and ldap backends can
-allocate, the ad and rid backends can not. The idmap alloc range is now
-being set with the "old" parameters "idmap uid" and "idmap gid".
-
-The "idmap domains" parameter has been removed.
-
-
-winbind reconnect delay
-=======================
-
-This is a new parameter which specifies the number of seconds the Winbind
-daemon will wait between attempts to contact a Domain controller for a domain
-that is determined to be down or not contactable.
-
-
-Winbind's Name Aliasing
-=======================
-
-Name aliasing in Winbind is a feature that allows an administrator to
-map a fully qualified user or group name from a Windows domain to a
-convenient short name for Unix access.  This is similar to the username
-map functionality supported by smbd but is primary intended for
-clients and servers making use of Winbind's PAM and NSS libraries.
-
-For example, the user "DOMAIN\fred" has been mapped to the Unix name
-"freddie".
-
-   $ getent passwd "DOMAIN\fred"
-   freddie:x:1000:1001:Fred Jones:/home/freddie:/bin/bash
-
-   $ getent passwd freddie
-   freddie:x:1000:1001:Fred Jones:/home/freddie:/bin/bash
-
-The name aliasing support is provided by individual nss_info plugins.
-For example, the new "adex" plugin reads the uid attribute from Active
-Directory to make a short login name to the fully qualified name.
-While the new "hash" module utilizes a local file to map "short_name
-= QUALIFIED\name".  Both user and group name mapping is supported.
-Please refer to the "winbind nss info" option in smb.conf(5) and
-to individual plugin man pages for further details.
-
-
-idmap_hash
-==========
-
-The idmap_hash plugin provides similar support as the idmap_rid
-module.  However, uids and gids are generated from the full domain
-SID using a hashing algorithm that maps the lower 19 bits from the user
-or group RID to bits 0 - 19 in the Unix id and hashes 96 bits from
-the domain SID to bits 20 - 30 in the Unix id.  The result is a 31 bit
-uid or gid that is consistent across machines and provides support for
-trusted domains.
-
-Please refer to the idmap_hash(8) man page for more details.
-
-
-idmap_adex
-==========
-
-The adex idmap/nss_info plugin is an adaptation of the Likewise
-Enterprise plugin with support for OU based cells removed
-(since the Windows pieces to manage the cells are not available).
-
-This plugin supports
-
-      * The RFC2307 schema for users and groups.
-      * Connections to trusted domains
-      * Global catalog searches
-      * Cross forest trusts
-      * User and group aliases
-
-Prerequisite: Add the following attributes to the Partial Attribute
-Set in global catalog:
-
-      * uidNumber
-      * uid
-      * gidNumber
-
-A basic config using the current trunk code would look like:
-
-[global]
-	idmap backend = adex
-	idmap uid = 10000 - 29999
-	idmap gid = 10000 - 29999
-	winbind nss info = adex
-
-	winbind normalize names = yes
-	winbind refresh tickets = yes
-	template homedir = /home/%D/%U
-	template shell = /bin/bash
-
-Please refer to the idmap_adex(8) man page for more details.
-
-
 ######################################################################
 Changes
 #######
 
-smb.conf changes
-----------------
+Changes since 3.2.3
+-------------------
 
-    Parameter Name                      Description     Default
-    --------------                      -----------     -------
-    cups connection timeout		New		30
-    idmap domains			Removed
-    init logon delayed hosts		New		""
-    init logon delay			New		100
-    winbind reconnect delay		New		30
 
-
-Changes since 3.3.0pre1:
-------------------------
-
-
 o   Michael Adam <obnox at samba.org>
-
+    * BUG 5590: Fix binary stripping on older OS.
     * BUG 5492: Fix RHEL SPEC file by removing libmsrpc stuff.
     * BUG 5507: Fix several issues in the RHEL SPEC file.
+    * Fix linking of cifs.upcall when nscd_flush_cache() is found.
 
+
 o   Jeremy Allison <jra at samba.org>
+    * BUG 5052: Allow inheritable permissions.
+    * BUG 5697: Fix spinning of nmbd in reload_interfaces when only loopback
+      has an IPv4 address.
+    * BUG 5698: Fix non guest connections to shares when "security = share"
+      is used.
     * BUG 5729: Explicitly allow "-valid".
-    * BUG 5737: Fix winbindd crash in an unusual failure mode.
+    * BUG 5745: Fix Kerberos authentication with (lib)smbclient.
     * BUG 5751: Fix showing of ACLs on DFS in (lib)smbclient.
-    * BUG 5762: Fix opening of mangled directory name (resulted
+    * BUG 5761: Fix opening of mangled directory name (resulted
       'is a stream name').
-    * BUG 5783: Fix FindFirst where search pattern == mangled filename.
-    * BUG 5790: Fix returning of STATUS_OBJECT_NAME_NOT_FOUND on set file
-      disposition.
-    * BUG 5797: Fix moving of readonly files.
-    * Fix crashes when looking up a non-existant uid.
-    * Fix getting/setting of NT ACLs on a file.
-    * Add st_birthtime and friends for accurate create times on *BSD
-      and MacOSX).
     * Fix the wcache_invalidate_samlogon calls.
+    * Add st_birthtime and friends for accurate create times on *BSD and MacOSX.
     * Clarify usage of "force create mode".
-    * Get smbd to look (read-only) into the winbindd cache for uid/gid <--> sid
-      mappings.
     * Write times code update.
-    * Add experimental version of VFS module acl_xattr.
-    * Fix rename_open_files.
-    * Make SMB traffic analyzer VFS module more efficient.
 
 
-o   Gerald W. Carter <jerry at samba.org>
-    * Fix segfault when calling nss_get_info() with a NULL ads structure.
-    * Add support for name aliasing in Winbind.
-    * Add the idmap/nss-info provider from Likewise Open.
-    * Allow an admin to define the "uid" attribute for a RFC2307
-      user object in AD to be the username alias.
-    * Add new idmap backend "adex" to support RFC2307 enabled AD forests.
-    * Add new idmap backend "hash".
+o   Gerald (Jerry) Carter <jerry at samba.org>
+    * Fix Winbind crash.
+    * idmap_ad: Fix a segfault when calling nss_get_info() with a NULL ads
+      structure.
 
 
 o   Steven Danneman <steven.danneman at isilon.com>
@@ -218,11 +60,8 @@
 
 o   Günther Deschner <gd at samba.org>
     * BUG 5710: Fix changing of machine account passwords.
-    * BUG 5784: Fix pam_winbind build issue on Solaris.
+    * Fix several build warnings.
     * Fix invalid sid copy (hit when enumerating sibling domains) in Winbind.
-    * Fix double installation of cifs.upcall.
-    * Add change-user-password command to wbinfo.
-    * Fix segfault in _srvsvc_NetShareAdd.
 
 
 o   James Ding <ding_cc at hotmail.com>
@@ -233,21 +72,17 @@
     * Correct the netsamlogon_clear_cached_user function.
 
 
-o   Holger Hetterich <hhetter at novell.com>
-    * Add new VFS module to analyze SMB traffic to record write and read
-      operations on the Samba server.
-
-
 o   Jeff Layton <jlayton at redhat.com>
+    * Fix handling of MSKRB5 OID in cifs.upcall.
     * Fix build warnings in cifs.upcall.
+    * Change default install location of cifs.upcall to EPREFIX/sbin.
+    * Enable building of cifs.upcall by default on Linux.
 
 
 o   Volker Lendecke <vl at sernet.de>
     * BUG 5707: Do proper error handling if the socket is closed.
-    * BUG 5778: Don't define 'strlcat' and 'strlcpy' if it's already defined.
-    * Fix Coverity IDs 587 and 589.
-    * Increase the default positive idmap cache time to a week.
     * Fix calculation of useable_space for trans2 and nttrans replies.
+    * Fix Coverity ID 587.
     * Add mapping of generic bits when setting an NFSv4 ACL.
 
 
@@ -255,13 +90,12 @@
     * Some write time fixes.
 
 
-o   Karolin Seeger <kseeger at samba.org>
-    * Add new parameter "cups connection timeout".
+o   David Leonard <David.Leonard at quest.com>
+    * BUG 4516: No IPv6 on Solaris 2.6.
 
 
 o   Simo Sorce <idra at samba.org>
-    * Fix enumeration of nested group memberships in Winbind.
-      This affected only setups using "security = ads".
+    * BUG 5571: Fix group memeberships in Winbind.
 
 
 o   Timur <timur at FreeBSD.org>
@@ -271,63 +105,17 @@
 
 
 o   Andrew Tridgell <tridge at samba.org>
-    * Fix permissions of group_mapping.ldb (CVE-2008-3789).
     * Avoid a race condition in glibc between AIO and setresuid().
     * Add missing become root for AIO operations.
-    * Fix an errno handling bug that could lead to an infinite loop.
     * Fix logic of tsmsm_sendfile().
+    * Fix an errno handling bug that could lead to an infinite loop.
     * Fix handling of arbitrary new PAC types.
-    * Fix segfault on startup with trusted domains.
-    * Fix segfault on the CTDB destructor code.
-    * Fix memory leak.
-    * Re-add "winbind:ignore domains".
 
 
-o   Jelmer Vernooij <jelmer at samba.org>
-    * Fix segfault (Debian bug #431696).
-
-
 o   Qiao Yang <geoyang at ironport.com>
     * Fix a memleak.
 
 
-Commit Highlights:
-------------------
-
-o   Michael Adam <obnox at samba.org>
-    * BUG 5609: Remove configure option "--with-libdir" and add
-      "--with-modulesdir".
-    * Extend "net rpc vampire keytab" to support differential replication
-      and storing of kerberos keys.
-    * Rework internal logic of registry tdb code.
-    * Freeze autogenerated prototype headers (good bye "make proto").
-
-
-o   Jeremy Allison <jra at samba.org>
-    * Add new "winbind reconnect delay" parameter.
-    * Make the change to smbcontrol for "all" to mean broadcast,
-      and "smbd" to mean the main smb daemon.
-
-
-o   Gerald W. Carter <jerry at samba.org>
-    * Add support for name aliasing in Winbind.
-    * Add the idmap/nss-info provider from Likewise Open.
-    * Allow an admin to define the "uid" attribute for a RFC2307
-      user object in AD to be the username alias.
-    * Add new idmap backend "adex" to support RFC2307 enabled AD forests.
-
-
-o   Guenther Deschner <gd at samba.org>
-    * BUG 5710: Fix changing of machine account passwords.
-    * Add "net rpc vampire keytab" and "net rpc vampire ldif".
-
-
-o   Volker Lendecke <vl at samba.org>
-    * Rework of the Winbind idmap backend.
-    * Fix calculation of useable_space for trans2 and nttrans replies.
-    * Add mapping of generic bits when setting an NFSv4 ACL.
-
-
 ######################################################################
 Reporting bugs & Development Discussion
 #######################################
@@ -338,7 +126,7 @@
 If you do report problems then please try to send high quality
 feedback. If you don't provide vital information to help us track down
 the problem then you will probably be ignored.  All bug reports should
-be filed under the Samba 3.3 product in the project's Bugzilla
+be filed under the Samba 3.2 product in the project's Bugzilla
 database (https://bugzilla.samba.org/).
 
 

Modified: branches/samba/upstream/docs/Samba3-ByExample.pdf
===================================================================
--- branches/samba/upstream/docs/Samba3-ByExample.pdf	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/Samba3-ByExample.pdf	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1672,14 +1672,13 @@
 << /S /GoTo /D [1118 0 R  /Fit ] >>
 endobj
 1120 0 obj <<
-/Length 252       
+/Length 258       
 /Filter /FlateDecode
 >>
 stream
-xÚ…½nà F÷<ÅA*ôògðZÕm•¥•â­ê€	i-Ù±e;Rúö…ЭC§Á=>áy‡ÿäC»»’„åR
-í	DÜVt¥¸3Ú#¼“ƒ©¤óLQ¦¬!U’|—usõã<DúÑîS™¼ÆZä2f4¯„&
-7¨KÙÛâÃÖ?$Ü)ÒP&È5.¡_ãZ¶úsÉÃ%„¸®§ËmT
-™4Êñcœ‡é&2ÆsÎíס!xm²}z"Gã’‹âÚ…ýô•¯yá9-i©“$.óº->·€âI[YŽ®*ÌkئŽ²4—ÂÊ»ÂJD—™?ßÛ´»S^P
+xÚ…MOÃ0†ïý>&	ÎwzEÐNHË
+qh»*µ[ÕvÒø÷$Ën¸øµbûÍc#|Âk…ÿèS¨_¤á¸FC8‚¨‘;k@[Ž‘ðAöíD• ]ËeÊÒQ%ÉOÉ›k;Íc¤Ÿa—Ì<ä5Ö"›1£¹˜4Ü .fïKÛoCߎiÜ+ÒP&È5.ý°Æµ<
+§¢ûKßÇu=^n­º`È„QÊÏqÏ7)ž²nw†„àµÉôi!DŽÆ'ŵ)»ówþBZòƳ:¨—$.óº-mvf9ZiCŽÞÞÏç-N4µw”¥—b"üCI$¢ÏÓÝ„ê\`´
 endstream
 endobj
 1118 0 obj <<
@@ -6958,8 +6957,8 @@
 2061 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120607)
-/ModDate (D:20081002120607)
+/CreationDate (D:20080918135156)
+/ModDate (D:20080918135156)
 >>
 endobj
 2062 0 obj
@@ -7890,8 +7889,8 @@
 2231 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120608)
-/ModDate (D:20081002120608)
+/CreationDate (D:20080918135156)
+/ModDate (D:20080918135156)
 >>
 endobj
 2232 0 obj
@@ -8618,8 +8617,8 @@
 2335 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 2336 0 obj
@@ -8841,8 +8840,8 @@
 2360 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120608)
-/ModDate (D:20081002120608)
+/CreationDate (D:20080918135157)
+/ModDate (D:20080918135157)
 >>
 endobj
 2361 0 obj
@@ -10247,8 +10246,8 @@
 2578 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120608)
-/ModDate (D:20081002120608)
+/CreationDate (D:20080918135157)
+/ModDate (D:20080918135157)
 >>
 endobj
 2579 0 obj
@@ -13435,8 +13434,8 @@
 3086 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120609)
-/ModDate (D:20081002120609)
+/CreationDate (D:20080918135158)
+/ModDate (D:20080918135158)
 >>
 endobj
 3087 0 obj
@@ -15574,8 +15573,8 @@
 3441 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120549)
-/ModDate (D:20081002120549)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 3442 0 obj
@@ -16111,8 +16110,8 @@
 3507 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120609)
-/ModDate (D:20081002120609)
+/CreationDate (D:20080918135158)
+/ModDate (D:20080918135158)
 >>
 endobj
 3508 0 obj
@@ -16564,8 +16563,8 @@
 3556 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135109)
+/ModDate (D:20080918135109)
 >>
 endobj
 3557 0 obj
@@ -17080,8 +17079,8 @@
 3635 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120610)
-/ModDate (D:20081002120610)
+/CreationDate (D:20080918135159)
+/ModDate (D:20080918135159)
 >>
 endobj
 3636 0 obj
@@ -21552,8 +21551,8 @@
 4352 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120610)
-/ModDate (D:20081002120610)
+/CreationDate (D:20080918135159)
+/ModDate (D:20080918135159)
 >>
 endobj
 4353 0 obj
@@ -21711,8 +21710,8 @@
 4370 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120611)
-/ModDate (D:20081002120611)
+/CreationDate (D:20080918135200)
+/ModDate (D:20080918135200)
 >>
 endobj
 4371 0 obj
@@ -21808,8 +21807,8 @@
 4377 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120611)
-/ModDate (D:20081002120611)
+/CreationDate (D:20080918135200)
+/ModDate (D:20080918135200)
 >>
 endobj
 4378 0 obj
@@ -21974,8 +21973,8 @@
 4395 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120612)
-/ModDate (D:20081002120612)
+/CreationDate (D:20080918135200)
+/ModDate (D:20080918135200)
 >>
 endobj
 4396 0 obj
@@ -22094,8 +22093,8 @@
 4403 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120613)
-/ModDate (D:20081002120613)
+/CreationDate (D:20080918135201)
+/ModDate (D:20080918135201)
 >>
 endobj
 4404 0 obj
@@ -25798,8 +25797,8 @@
 4775 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120613)
-/ModDate (D:20081002120613)
+/CreationDate (D:20080918135202)
+/ModDate (D:20080918135202)
 >>
 endobj
 4776 0 obj
@@ -26413,8 +26412,8 @@
 4856 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120613)
-/ModDate (D:20081002120613)
+/CreationDate (D:20080918135202)
+/ModDate (D:20080918135202)
 >>
 endobj
 4857 0 obj
@@ -30139,8 +30138,8 @@
 5470 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120614)
-/ModDate (D:20081002120614)
+/CreationDate (D:20080918135202)
+/ModDate (D:20080918135202)
 >>
 endobj
 5471 0 obj
@@ -63377,62 +63376,50 @@
 /FontFile 9357 0 R
 >> endobj
 9359 0 obj <<
-/Length1 1027
-/Length2 3891
+/Length1 1044
+/Length2 4192
 /Length3 0
-/Length 4551      
+/Length 4857      
 /Filter /FlateDecode
 >>
 stream
-xÚ­“u\Ó}×Ç)éTBÒ‘Òl´H#R"ŽmÀ`l°
-Ø‘$é”’R¤S$%•’xæås_^Ïuÿû¼öÏï}òó=çL×ÌBBŠr‚預X	$H	 el’€$Ô‚‚ZhG!o€±0% èÚ5@ÃÛ 
-€ä•d•€rÔ‚ -”'
-wqÅ„µD~) 4<`h8Œƒ±®0B
-°@Aà0,^ @ Ìe` æ0íƒJRƒ@ (‚8Á\àHj©_‚ô‘Î(€Âo3ÔÛó?.C&ˆ$BQH …9SK™ ½`%ÿ¢þ]\ǁ0{ü*ÿkHÿå{Àøÿ
- at yxzcah€1
-
-C#ÿj
-û­Í…{{üÛ«#à
-¤ þ6Á1:pjÇB\Î`ö—†„þ[anI2×650²û½Ï¿|f`8k‰÷ü»ê¯à¿ô‡	ÓAÃq { $"~ÿùrøW/m$…#	!' £Ñ`<5á2$¸À‘P ÃKI"QXB
-€0“û gšú×:¤Rz¿L¿I eð‡®¤Lÿ&E‚Ïòo"ìR
-ü‡RNˆù›d	y”‡ÇŸhá%R°¿‘ [ê÷*þr\ÿ Bþ	é¨ á	žÚªyŽýG¡ú(Âü	zËza}ÿ”—%<͆þmøï5kj¢p÷$ddÒr Â
-rÀûÿ'âFÐؿþA„[ù;Ã	—ƒá`êÉqäz¨[rmXQ€vÞ`ñQbM—×q&¯ZFÞЄL<!Fä0ôý\esü2íýò…å+¾'œ˜È&ÿ›}:ß‚¼âRÆΖ}î.§ùÕsÚì¤ã—<ùBÖkG÷6äˆM‡?÷=µ}Þ‘ù½sý™™ð
-ËŠi^¢wö>ÕïÒCåltÒVá«„dxÍS¼ŠɆÏø2>'›	p§¬›ÚF5y_<ΣÌI8»½·:¬nÏš1&ï€ìûè:îpGEë‰É^‰Î‹I¯o89.͐R”©ŠKAŽªd$€åµëøãÇ>|áð¯Îž}Ø“cä+-Yµ\‰™f7±}ÈýÔ˜~ )¾skYc²Ñ`DürR¦Æÿk^ΐ»ð͏ú¦*ýëÓ΍‡I5á³IZ ûŽ`ÚIÊØý‹(þ™9àA•ïLê…ÛQLe©,‘í_ÌúNĝ7ã׫{©D‹)¢¿8é>“±‘þTd6LšX h$sŽ^Ë㰏ðABµÛ[\K¾º\‹%
-ªð¯79§ºo{ž
-J,Ò[˜ðóÄ'¾ðà
-·×H‰õc}fãiÖöžÓD˪QaÇj¼J¡?iÇÒå€áYÃCœã^œëÓŒ^üÎa™õØAz}ÇÀM‡ëú¤ûéI}˜±qÇ»ãFgŒúå†y¨-Е=„Áù$âª×éEØ¢ÃcÇ)¶rg*ÙËu|3ôZd¦–Mäž–s-4êæ÷*ˆ á`Tâõ4;Íß8ˆSs¾ÄMë¯kg†Ìx´|.Ý^ ¶VAœqhÌ’BÕžÂãÜ|*YÅTA×¼ßô°7ïÓ&“ª]k¬ÀiÑ»Q5*Ü‚sixêÓêîl4ÁŸj¯:·ÅÌÚîoŽà€J2õô8¹–â]±Sç	VžÂŒÑ!ã©Dµ¨'4'‘HÍ ûwO„ÔKKŸÝú1+Yføn Ô³ÒÇr^¿·éóÈ]­þ¹&½¶Ãî€òÞó(ï-©WØÊô^MŽ$U–³ÅG[}{U^fŒy FITô‡<Íc&!¯¾Èºsi;§‡‘IæˆNkŽ·ƒ½8ÚZ6}ž˜ÉŒ9‡ÐÌ«cO{+gÑ5ƒ‰`2§O©mSÿ!L®Ëz~f¡„4þñúq{íŠZAÞ¢4V6gÜ)h?‰²i’ò¼´	z¬˜Oþm1+“û´ñ*OI¾ˆÓ)NµWŸ_¼8¬fÖº*©´¯¬7xwIoÂ_[?V`FÔÖÒV?ͼ:+êßIÃéiäû:Cz¦<bÏìêå7ìt6“gþ£•BS>˜£¦ŽÆÁŸ§bm at f¶cI:,»Aÿê%Õ„sÿ¢™dSk&CV¼4G;žq1æÇ¢@jÎIwxãkŠõ£P¸m’ùR¾%g¡X%6½”|X-²þa=!#Æç#/ý.°îk7¿öw7åhŸ9µ”W_¼Üž‘á›é
-yTýnG§ŠÃ‘„-[gzuÏ·Ë~k
-×ÂÜœ5¸éUMÜ´KÒû6œl!ö×K†ºq8ÔÏÅj[š¢ÅlµâÁ
-Ư>ïܬӓÌ7Ö×£W^®•¦
-Üu¯.+ƒýÄȏÚÓB½I¶“ö
-q6ac›‡0ʍÂ÷7`uáÔV=É:IŠ¥huAx1›Ëˆ@îåOoÏÜF>û‘Sô¬†ÇfVµLÐÿdG”ç<ð÷¼XÃp4d;x¥é=> Wq“ôìN¡=ÂE6^ ßuŒNlvW	‘¥=ª>„”Ò¤±ë‰‘p2x^1
-t{!öáÄ*«AW0thâÛUõàt©šï
-ã°ð´BįPzÆãTSîy›15邳Výq*°,e˜DÑnÁYáÓM‹yA\g”ǒƼߦìÍÈ-â“ԍoM[‚?¹˜5?iMwœùR–D,<+ä6N:9ë¢m·pƒyï\LÀ÷3Ô-ŒÛ^¤0yj3¥ø€¥IùŽQ\Pý[ÎÙÌëR©Þ\Ð’Òk“%AªWåûð®öñjüq<s?΋¬_ˆY/^¦lïÕÕ1Qd<–‹Úëɐ%!Ö,SµÖ;ëî»ÄÅg2˼yŸ1æ¢Ó»K)Q³ÐFáºSÅ#eîP(Ì :•ùÁ—ámYÛsДû2]dyP…Í>Sؾ#2¡òfáÔAY>é+Qr4ïõ›Eêóz´/Íp´vë¨.#èÆødÌuʏ,É¡„±ÈÏqéSM¾|µH{]ݘ½¬+®ÿØkÓA	ø°J¦üd`!x¬D7'àTuþjLßòBËvÛ}Òdø4ùúõçôW;.±¤,±p1ödñã7(“¢¹Éê×,-<Œ¿vTr[¬M2øv¯pnwkÐÈl5ÏÉÖó~(ËV¾Æ,ñ4:Dêòª²ímãºâ´9±Ãò÷±’Þ…ûÇzY¾@ÜUÞbÒÑ{÷ºÈÈ›i³/ðÇx}þ—åñ`µ½X%´à~n·û+ð]€ÿu®áráé0{]˱»n[*·wxÉ,Y¡
-Ö(
-G¶ä¬ÒÑÀú™Âù×l-où¶ø’5
-¯ÓtCm•è­ê²jKDC#ñ8öçãn³gŸ
-©ê›õ,ˆ0ãìXÝÆ…ÇŠ@ÿçž…‰Ø×¹#µ¶º&ߪ…(:7.VÖ2¹‘GP^ÊHÎÉ:Ûõ‰|-“kk0@•Æe0þݳKVì‡OÐùÆžùƒ‹Ÿ–üˆÂH±â!¶_&5½¿•[A…‰É,Û/yh‰Î	¾È/ß>RJ%þYy:ôRŽkÕÁÞ(‡j¸ºoÁ9û%{ƒªC*]æÖä”Û"šw‰7~±Š‚ՏQêDeš×”y\¦`ÔA`tÌËž¤ï«Òí¼>fE‹º”×,ªæÉa î
-H¸>w *–i,§ùÒŽ0O$|±Í=y®pú’i:~âÍ| Gåg¡ZZw'⃰ÈÖs˜HÀ‰ã庀ÞÇOÚ9]0Ž Sâ6’(ƒäÏó"Ç?¬«i.HS<Ì:ï ×©dùò™œÎrÃ.©»‹pé|s­þ«.‹û3+Ë
-8ܤe9–B
-26t¨Yãº/è¥ÄönªL‹Æ MR÷Iÿèëµl)
-U6ŒEßž’—BRv s˜›rðŠ]h‘ñ¶¦uÕÓצ;E­7sc¹*yÃú-`_¶®{i5“ç‘sÈa¨¹c®†{ßx(çcÃzÝ®ÏÂÍÀt¢ÂÔýse§2oþ®‰EQv!½dœu¤ÞØÚŽÁöxó¬±æûý€ä½ÜÖî²{©ïðçH#îSgîMsŽœ}œå
-¶±Ä¤ˆªŸ97º
-|Ÿõ«u+aYK8‚ Î«œú#åãâÒlÂâaí|/ýoïó1u„§ê7|ÿhÍv[Ý—F'Á×´ž~Ž®¶XõvÖ¾æ…a•F#´Ò㟳†‹l¥§Ê6­ßD|¡[PYâ|9y'Cqwu—`Ž¦²êc¨³œamÂ÷“ž‡k,d#Ÿî&ˆñÕ•2aEk³2o.R&‡³³_A^õÀ&6ZyÏ{ÝíË[RŒÄ/~;%/«òÕº¨ÌãÈF&±yjk³ÆÎQ[0÷©çÛÖPT,ζÆg![̇Ä;2ùá™m
-…R=	1qÅL/6„Þª]ÑÕ;˜S¶íéöK8¦
-Iùq¥âFuh´Q‡<çÑsžc+ù½¸úQxUòµ‹2ŪÊ[¬Døõê¹õxg$r^3<´\Îþ"/ûîqØœEe:­Ÿä+J?–Ðn÷0¤òã1ãB|ñä rqÂèü¦–ÆŽÿF«Õ°àESp+qk$§ìí⽕”ó	CõQLZºøÂ$Û_>׬ðÌÞ½	—m˜hml„[nðÀÔÇQLðdÀºúäž{ÂÉg¯Ög%·öšZèvÜ!ðªŸLhh¢R…ªv¯Ï¾×ëíA²Wõâ%QŒvNcv—³¦ö:õS¢nÛ’„?¸ÃN©òДã®øÔÔš?‚O¼êf5[±ô°òžÂÐDbà¨æ¨NnVn&­,»}n“R7¨¿©i‘@Åßò訹¬dzRþ½óí³î(Lõª‚|¥Z·Ô3i¿ÔRÑp±¹cëÜ|E•îtÓ°Õ½¡”–zøxæ¦z”±•ÄÖ…4äI’1]ð6}Rý#aç©Þﳊ/ý[nCÕûB»…‚¸³ž3tŠq-Î
-:›"¶^ÛB·‰Ý³t{©CC}”ˆ|Hë¥ÈG't–Ý(n¢eª"Øq”ç­˜£ò˜
-%/äÛËÞzÖUºHëã?܉"¦fJì­¥mO£’ÿ¦qÑi5Urz™æ¹(eGFÒ¹¡×â÷#A—™.<óºjÿt‰C+JÅ(èìláSÛjçòš[€Ålw>U¹•oÁ\søqì
-Õ“ÁÕ[ÀÏKJgpSË»&ê§wÈ£“׃u’¨ÄÛ™x+Ÿª7ÑBEŸ§îkø€ÎoďE0Óå8XM_)!¿©ÖçzÒåzªnOMù*Ðp®À¯h´Ìç³f"O
-˜)¼eKQþa–ÀbûS²ZDú¾Æ„H?sÃâD èAȬ<mYÍÁ®Ð?³VFrØH~‡5‹¨fæ´$¯?´LâÕË›ƒýV†rޏâ]ÖVH„ù_?.?	ã4@™9ù?ëößaef-vw ò­ß
-‡„\ó­¼/™Áï|
-´hC5õé-Rú0†šc!*ýEÃ¥ï@ásÑ/—D>ù	èÎÄ*yQ-ÍUðµê~òûð</>¥ë…•ZJÈüå¶[7¯]_oi”{á~˜É”}ÛtØÎ[®d}!•ú+eç’°”Y³ºIל—¯Æ]ë²ÓXÊ+¼\çÖéäçNßt•¿žfö¸ùƒðZ4ïŽèv#TùyCOöW×«ÊDéˆÚgA’u›ÏHÔË÷>èÙ±.±K}yôÏÕT%Ÿ»Ú4`³¸+¢ÝâGÿ®„Ö›C­ (Eœ­÷6\„‡QµÎß¹Ülû5.ªÙ!ð±ŠÅý]…#±ñ»íÅAúÙƒØ =Õ²­O|
-LŒä’(E
-ÛOÊcaVbbs¹y?¹”âSΘXIHþ}¼×Ô
+xÚ­Sy<”
+×FÉR	¡†7²$f±g‹ìû–}f023ŒmÈ.»lÙ÷¥‘ì;)	Y*F!Kö%²óMOßûÔ÷¼ÿ~¿ûŸû:×uιîsÎÍÍ¡k (ÀÚ"•±wA&	(héÄ JÍÍ­€CÂÝQXŒ"Ü)	ÀnÞ„ò€€‰I
+KHBE©¹¬‹7åàèð)\ÿ)äÑHÊŽ´àîŽH4±†Ü0ÀÚ¡îÞ`@ÞÙÐÿ™áè#ݐ8O$L
+ƒ”;`‹t at a¨!?
+©aì±€ø¯0ÂÃå?”'çF4ðM^ˆXŒ³7€@ÚSC´±Ä^H¢“ÿSÿ.®ìáì¬
+Gÿ,ÿsHÿEÃÑ(gïÿ`Ñ.îH …E q˜K‘¿¼i!(ô¿Y5w¸3ÊNãàŒ ¿B(7e‰ÐE¹Û9öpg7äßq$ñoĹým"¯'[[ïƯ}þÍéÂQ÷;Þ.ÿTý)þÃ~câtp(<`C¡0¢øüçÍò_½”0vX
+C<Q1 ŽÃÁ½©‰—AD¢À=€Â x ‰'†€1Xwb
+@œ‰`ÅQÿ\§¸ Qýú…D ˆú?HB€üFDîÎ?ˆ¸Kü7’  ¶ÿ ¢Ò‹FÿæaDïä?èòkø¿ÄÇ?àM ‚þ
+aP ‚ù«a·#j±ä4ñ›\~ÓÄf.Ä«Ã"þP»áþ€¢ ÄíHÌømM”ØÛÝëvÄoõAâ~þ{ï·ocñ÷…E A!Qq0€¸(Ôïÿèì<p8$Æýï_Šx<ÿÁö(â©!‘x¤õk'uß)µ.¬Ä_©p¨”œŸô¶C}¼vuLJÖó!H‹z5\ù'«LÊ2.Ó̓ϳ{±¸Eµøêõ+¯¹Æ§œÌ{ÚÌgø4²˜lehyϹpî†,_j®Þ^%Õy?ÙW’dú¨+{ãõr¾.ŸâŠÏ$/Ì=k^dÞ7QÎp6­âæЧMs-‰	Ÿð¢MJ<;1âïNÙpãÓ&¶Åƒþ 2ïá‰Åöâ{9s¦¬1KÌÀȨ#í쏎Q½!ÂS›ÙØttPž¹5$\ÇŸ†–ÉzSjàJéfö­ÉöíËÓôWÍg»}i›¾ 
+Æ›3wÁ[F˜Zí•&“ Ò²1áZßo…yïîò鍪é¸Q¡w¤>Û7ï¥Ô†IQ€ùYÃ/ŒQÆ¥©Ñc¹&¦ »U^éäÑtYYéŒQ¯¦uûìW—kÞRñ—RÄLÛªä›}/Ñ}&¹XBSø·TÈl鉱³VzÕáXîÿÍáfÜ™ JßF­ë§T~¦§éðwÉ%ª_?ú‚Ù“£9ÂÍåÓâ|˜òM\t_v³h+6‹oªÄR¶î8ì^ÊϹŠ·ÞŽwLÊzë½µWa<²›ÙØ5hµj™fܘ◙Ò?è6B°Þ5;h¶w“»Ú4ƒ0Åorß¹yóxª?$Â×,Ó\¿G ¥X+˜xªˆèò\×pe Ifý,êøD³‡Ëµ8’Œ™V’YÄE÷¸he7þ–Ãûˬ|UÔã
+Â0YóV(¡¦ðb±°¥JÒ‡‘{ZŒiT¯ÒØ| «Ià*ºÊ‹í;-ÝÀöŒçKáLXÝRs%^Æ‰ªYÜ
+/8ÏÖžÒ`ã¿Ò‚JRZzbÿ2–ì‹éÎê<T’B¸‘/ÚQúýFž£ýG&¶'YÃï´>%ߊN8pFرÚ;â‘+/Ï7ú1®ƒ_òÿ®ÎÓ·ÐϨˆjÜ^õŒ¸{«Îût²6³®Ël—òÞ£h5HµûóÌ··™SdOÈWJ÷×ú·«\uiZ06¦·ðökä’˜¥=25"®måG7®ªfàü†ò×û‘–^y뭘͠²rÌÐÄÉ˜ç µL åüFâíÓc|Á»_bç¶Vâ–v]e¢lÌ⯠›òпr"?|BŸà§dm`,¬ÁôÊ›EzîöÊO‹µ8³ZåK&»‡OçÂÌ"½´7uύß:͸âHVVŸÏ9éOïÈ$½5|rï¡BÊæ…
+.JF&ïLšjÀÞØ\`ªPc»¹&šoÊ›¿Ç{ùèþă°–û„W7ÅØ£’~(f4¡¼@R«P.U¾hí.Ê»ÇÚhz£¡Î\$›kš?CëX¶=ÎÉ9òR¿|Ü–µÚ—	ÒYÁ\"Õ·&™ÓÔÓj'JÉîÜ‹:–©;½0]ϼ¬]áôêÅØÐö@\[kïñ$SwŸõ¤I—|ä±:w§坸òζŦšqmèŒÉA®„Vù­ñòh¡^Öu®Ü]q¤›Ï®‰µGW׺jÃ…¥Öä·EDGÌÒ» ì‹·bOEA|ÕJžI0.œÖáeÖŽ{TŒV!_yÀϏ’ØÈrvFJä‹>uŽÜˆŠaÛº1sQlL HaíD¢ÒN_¼uxêËkI^,3OÍuòèXÐÐdµ¯ÖBæ¹b]ò!(» {íT°]@C‘‡PéKÐ	úÖ—§ÖRÒž—–ž”ÎoNXdŽ¼Tš³£ÏQüø°\6K¶ai?V! :ñj…³»Â”é,$ò“@
+%û¼Y#Ô=#fƒ™2xÚ~i¶ºtû¸ŒLù{4ur ––™âý¼¦·â5?dæ¥\gk6:uIÔ_ÿåõW¹ýéve„¨…\Ö1¦ ½ÿuÛÆìM9f3¸©çÉ}÷F„ñœõšdQé¾Àµ´0#ˆë­@:ýþ©ô®=ĝAO§wõ5¡Z>Æ‚j²Þ\äàWjyƒ+¹`ò<Ó|òiË‘r·ëFË]>I:*T¼*Bj9JC*wè›w}¾A>ïãÕ ~‘T€yò@־౅ÍË€‡Ï)Öûæ¢Ø¡üÑêuyØÃ?ÅvŒ3ÜŽbTÜ”H
+’ÝŒ÷”;™NŸB]=ÜÚAr-Žv¤É	XE¼mF1­Ùn
+w2.\îµo6£[³zÛ„§¶"©v`¢—º®­Î¢:&É6Þ=ê‰ÕtÌͤÒùað†J!•á9ÞŸ¹pl s8«O¥ŸS\ $Æ o³¦c™ÛßVR©*ËÉð`6	¿üåÒý ýœÝKfñN„‹[“ÏrEDùÞéæ…Yû‘a¯:Zû­à]²Ž>ûcim^=Ý<ÙsÒB‰óL§O@õqÉ'¿qq¾¯Mg×ôEÐù)W—©è-†Ñ凡‰Óí[»ºýzWÃI™²Äd(ds<ö–n)-ƒB‡ŸRŒw»iIæ¼çüºjÉŒ‘ך—œ/VbËZºy<ÈqÆ+b—žô&‹§­µÆgMó]gØ[²£}ýDÅ•í¼öZï´½â[ÒA!U¥‰Ë"÷üPuâ²Sá5wc€ÕÖvGŠí(f]Úªøp$E’]‹Ûˆ
+Ÿ}s\õ.½hz«éÅ´ú¥/"NÞ…,ŒC[`¾F¡)\RÆAC2OMP—÷Slú¾4}¼Ù592 ÿ,(»µ+"Ò¯aò]KféÖà\iÙ\ÑŽžžSºr››%å3ŪšÝt
+Ú:Äâ°úÙ^›¦d5rèlFŠ´{ðkí½Û
+=œ„ÔpW1¦ú1µbç쁳4yK²¼’âÏuI®y4*X@×²q9ÔÖ—ÛÆ_ at Dd:A»-}§/úß“{-hú7¯
+êÞPmÍîa©è¿FŽß°9ómI¬w$V 5·ñZEÀY	ömõìÏEÝÚ/=ûlgN¥’üq史itH#FW³V¦‹ü¦H¥tfã«ÕÎàè)¾Y|TekUqúä¤9JÊÀ³Žô5Ýj3t}&ÌéD]ßš0$fšè$¥©_¼ñ…ƒ Û–}õÜñä1k¾¼ìéäÝ"É
+ÝŒê9%=…iöØØáv=`¯hb¡ð@˜µá0ô$­:NoÔiÑ“œT}Ö,yw-Psmi®îÛ³¿¶¹ÿŠ9lí°aþdÒíg ¾–g%XZ–ÆB„yNæA½'?.iÇÇ'‚Iš
+–á^¢ºIþ‰›¹hßkh•ô^òÒE·ÓÇ-ôÅ1¦§•frö;‘m5رõ»CŒ‹Š¾ =óÉè×›©Á±Ÿë·ß”ûæ‡OÖ_ÅnöÞ72ÌÎù¶³3îˆÑf‡ôÂ?Ó[y—DÚelHdE¯.v;ÑÖ~šŠJyÙÆMQp("?r2y2ÈUu§£#íœvBÚ-Å}cGÌp€þmΣGÔkä¯øŽ`ãOiüY%˜ë5°Õ–Íâ”3 Íí ÿ¯)C›îp/Ž‡13Œ½”Á ›¯„‚liGe’/ƒ¢Rß¼­¯’tâÔí”É´.¸]IIÜ/>byA¬Ž{_<ðÕñQÍh°[è”h‘Âü°@UNjÛ"ÿ¬3›Šá[È›¨ÐÚ¢JCÙžÏ`6úZÄ-£0¶«PÀúJª•áNªLSþêw6›È\9•ý¬BÌ{EŃlþé`fMeɱېQIw7¿š«­öŒÞ©pèm £Y5¤X/cþ¡ž_«ÚÚ?vÒJ¿þÅM¨üßõsÀ<ÚJ÷{­çÊqôÒ¸©Â<Óc¿]Ér–Þ|JÃ.´ÙÉBæ(T®wú]æ}æT'UåÔˆRAk-{6,l\Œü¡þí"*Vë#ië
+®*oÊã4§ÂMŸVh(_ñ¯b}Â{ÎuQãCÖ±˜S¶&L7+Ö;1”S±Ì‘Ã&µŒeDœÈ^OPzƒfº¦¹5&ÒSŠ¤zYSҏÿq9êᆡIàFOâMDý»ÌñÃ"Í”V¯ù\òwîEX®MÏê]–íÀÉÓ¬nìkòsõ).1ósž½:h¡Éµºd¸—U4s^¸.;(4÷f¶îÆC]Ç=2ë¯Eä猒ӡòqɇË36Ñy[*-§Kx+=ú±G}Wößu¾éد¼äÀDzæ€3cLgɯñøŠuö‰bà%Z.á¡
+–n>»Ë>ñãOk‹]‚QïÁe‚©1E&üg·>%|Y…fÇ;†¬¿!…]xp¨J²?¡þdºAǪ¬`Þ†M?~ß¡<³AÊîÛøØ¥êÿ±›’…NºO·u[üp}á”EÔçq7öc&{øž“¨ N9Ìž( \Áê¦bù˜-C€{jN•?û!tg=žÃryËî)ÙÚéÛNW²9nÒ¡Ø£XÞÉE”;£MÇÙÔÝ}uäÓSùüYcɶ›AÆ”I̸å"Rj§‚Ç:7Eŏ%ÄÙ"!£jÕäêc—6.ZÄ«Ê™F4¾ßß„NË0Ó¨;?s‘FP„ÜÝË8’>GÖ7Lòå`*·Eç£r¦ïÈ.òÊUE
+4¯›·MNgé7.®žÄ#“û’%\º^ˆ•Ú:Я.:[zÅ-²
+AA¢Ã¶=VnøzÆmõ¼.R#QSøÈ?^_rØ·4<í‚¡ã€uYN¶Ìe2Ó—n£Îêk)÷øÅÊ…h¶ÎÏ
+4=0
+T<÷µs7¼I)di9)V6¸ˆ+4
+[·zéÖ”ã%ZÏ䐐Õ\oõB\Ú_ËLU˜!Ê&éÎSm%;¼±bÚ!×Þ…«¦WhcõŽ¬ÛAG02Õ6ž‹Y'÷TÓ‰6kÎË}l>oH¡b õQ?øê~-”P¯‡‹ûžø׃xà,«mOñ3’5	xE|„AeË
+jÁ´\e`?¾••ßKÓ­1~î5ûJ±CŸžÏ5×™Yìí|vû¡µ½0¢ÙMYHjÑ×79ˆJsS†^øÈ®JûJ)ðŽ»«ŸX"t3)RUPÂ$L—ôãÃËåê/­+CEãç/Çû[]Ñâéë:¯U¸Œ
+Y…ìkÄqµ‡½£«_ªˆü@ù¸Îß·ñÞìëCs­ÍCé5æ{SþgâŠmžÜjla"÷NÀ¯3I¤Þ£õvõàº+ØÅ4çJd³v¿ÐTµy¸Û¦Íô|·Ì{­ý‚l Ÿç²†~lò;FÞ§¾&W•ÍŠv&7ÄW¾O±NdVŒFÝžQ]Ï&œKÌY"=5³Ín&¿{ \ó"™ÕsU.C“ÿ²OÓÇ…î¶åÒOd¡t7Š«Þ8$L?»¯Ü
+8”@ž¾Ê¤B©ÐsëÊ¡‹6Òϯ„>\[ånJ³fOXW‹2§Jöʤ=†p:sT“@syÌVÐgÜÕ'yy!mí—wKú&?&dUµ:áj)| Ý<`µ¼ÑœHfçžKá*Ú`^,ÀÿL:ÆU5Z`Ý/þ³¶¾B“(ì¸û ½!Šp
 endstream
 endobj
 9360 0 obj <<
 /Type /FontDescriptor
-/FontName /REOJLT+CMR12
+/FontName /AQABNQ+CMR12
 /Flags 4
 /FontBBox [-34 -251 988 750]
 /Ascent 694
@@ -63441,7 +63428,7 @@
 /ItalicAngle 0
 /StemV 65
 /XHeight 431
-/CharSet (/H/J/O/T/a/b/c/comma/e/eight/h/n/o/p/period/r/s/t/two/zero)
+/CharSet (/H/J/S/T/a/b/comma/e/eight/h/m/n/o/one/p/period/r/s/t/two/zero)
 /FontFile 9359 0 R
 >> endobj
 9361 0 obj <<
@@ -64804,7 +64791,7 @@
 1125 0 obj <<
 /Type /Font
 /Subtype /Type1
-/BaseFont /REOJLT+CMR12
+/BaseFont /AQABNQ+CMR12
 /FontDescriptor 9360 0 R
 /FirstChar 44
 /LastChar 116
@@ -70490,8 +70477,8 @@
 >> endobj
 10096 0 obj <<
 /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20081002120742+02'00')
-/ModDate (D:20081002120742+02'00')
+/CreationDate (D:20080918135333+02'00')
+/ModDate (D:20080918135333+02'00')
 /Trapped /False
 /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
 >> endobj
@@ -70503,10102 +70490,10102 @@
 0000000004 00000 f 
 0000000000 00000 f 
 0000000015 00000 n 
-0000032188 00000 n 
-0003418238 00000 n 
+0000032194 00000 n 
+0003418554 00000 n 
 0000000061 00000 n 
 0000000102 00000 n 
-0000032248 00000 n 
-0003418151 00000 n 
+0000032254 00000 n 
+0003418467 00000 n 
 0000000148 00000 n 
 0000000182 00000 n 
-0003156104 00000 n 
-0003418062 00000 n 
+0003156110 00000 n 
+0003418378 00000 n 
 0000000228 00000 n 
 0000000255 00000 n 
-0000034776 00000 n 
-0003417973 00000 n 
+0000034782 00000 n 
+0003418289 00000 n 
 0000000302 00000 n 
 0000000337 00000 n 
-0000101699 00000 n 
-0003417884 00000 n 
+0000101705 00000 n 
+0003418200 00000 n 
 0000000384 00000 n 
 0000000418 00000 n 
-0000128494 00000 n 
-0003417795 00000 n 
+0000128500 00000 n 
+0003418111 00000 n 
 0000000465 00000 n 
 0000000498 00000 n 
-0000139468 00000 n 
-0003417706 00000 n 
+0000139474 00000 n 
+0003418022 00000 n 
 0000000545 00000 n 
 0000000572 00000 n 
-0000142154 00000 n 
-0003417617 00000 n 
+0000142160 00000 n 
+0003417933 00000 n 
 0000000619 00000 n 
 0000000645 00000 n 
-0000175698 00000 n 
-0003417489 00000 n 
+0000175704 00000 n 
+0003417805 00000 n 
 0000000688 00000 n 
 0000000744 00000 n 
-0000178216 00000 n 
-0003417415 00000 n 
+0000178222 00000 n 
+0003417731 00000 n 
 0000000792 00000 n 
 0000000841 00000 n 
-0000180930 00000 n 
-0003417289 00000 n 
+0000180936 00000 n 
+0003417605 00000 n 
 0000000887 00000 n 
 0000000939 00000 n 
-0000181056 00000 n 
-0003417215 00000 n 
+0000181062 00000 n 
+0003417531 00000 n 
 0000000987 00000 n 
 0000001022 00000 n 
-0000183584 00000 n 
-0003417090 00000 n 
+0000183590 00000 n 
+0003417406 00000 n 
 0000001070 00000 n 
 0000001109 00000 n 
-0000183710 00000 n 
-0003416979 00000 n 
+0000183716 00000 n 
+0003417295 00000 n 
 0000001162 00000 n 
 0000001202 00000 n 
-0000186985 00000 n 
-0003416905 00000 n 
+0000186991 00000 n 
+0003417221 00000 n 
 0000001260 00000 n 
 0000001312 00000 n 
-0000189618 00000 n 
-0003416818 00000 n 
+0000189624 00000 n 
+0003417134 00000 n 
 0000001370 00000 n 
 0000001411 00000 n 
-0000193839 00000 n 
-0003416744 00000 n 
+0000193845 00000 n 
+0003417060 00000 n 
 0000001469 00000 n 
 0000001506 00000 n 
-0000199134 00000 n 
-0003416620 00000 n 
+0000199140 00000 n 
+0003416936 00000 n 
 0000001559 00000 n 
 0000001613 00000 n 
-0000202510 00000 n 
-0003416546 00000 n 
+0000202516 00000 n 
+0003416862 00000 n 
 0000001671 00000 n 
 0000001723 00000 n 
-0000205233 00000 n 
-0003416459 00000 n 
+0000205239 00000 n 
+0003416775 00000 n 
 0000001781 00000 n 
 0000001822 00000 n 
-0000242957 00000 n 
-0003416385 00000 n 
+0000242963 00000 n 
+0003416701 00000 n 
 0000001880 00000 n 
 0000001917 00000 n 
-0000243083 00000 n 
-0003416274 00000 n 
+0000243089 00000 n 
+0003416590 00000 n 
 0000001970 00000 n 
 0000002012 00000 n 
-0000245983 00000 n 
-0003416200 00000 n 
+0000245989 00000 n 
+0003416516 00000 n 
 0000002070 00000 n 
 0000002122 00000 n 
-0000246109 00000 n 
-0003416125 00000 n 
+0000246115 00000 n 
+0003416441 00000 n 
 0000002180 00000 n 
 0000002222 00000 n 
-0000270188 00000 n 
-0003416048 00000 n 
+0000270194 00000 n 
+0003416364 00000 n 
 0000002271 00000 n 
 0000002316 00000 n 
-0000279949 00000 n 
-0003415918 00000 n 
+0000279955 00000 n 
+0003416234 00000 n 
 0000002363 00000 n 
 0000002416 00000 n 
-0000282695 00000 n 
-0003415800 00000 n 
+0000282701 00000 n 
+0003416116 00000 n 
 0000002465 00000 n 
 0000002501 00000 n 
-0000282822 00000 n 
-0003415735 00000 n 
+0000282828 00000 n 
+0003416051 00000 n 
 0000002555 00000 n 
 0000002597 00000 n 
-0000285358 00000 n 
-0003415603 00000 n 
+0000285364 00000 n 
+0003415919 00000 n 
 0000002646 00000 n 
 0000002695 00000 n 
-0000285485 00000 n 
-0003415524 00000 n 
+0000285491 00000 n 
+0003415840 00000 n 
 0000002749 00000 n 
 0000002791 00000 n 
-0000292471 00000 n 
-0003415445 00000 n 
+0000292477 00000 n 
+0003415761 00000 n 
 0000002845 00000 n 
 0000002887 00000 n 
-0000292598 00000 n 
-0003415313 00000 n 
+0000292604 00000 n 
+0003415629 00000 n 
 0000002936 00000 n 
 0000002974 00000 n 
-0000317302 00000 n 
-0003415234 00000 n 
+0000317308 00000 n 
+0003415550 00000 n 
 0000003028 00000 n 
 0000003064 00000 n 
-0000329129 00000 n 
-0003415141 00000 n 
+0000329135 00000 n 
+0003415457 00000 n 
 0000003118 00000 n 
 0000003178 00000 n 
-0000329256 00000 n 
-0003415062 00000 n 
+0000329262 00000 n 
+0003415378 00000 n 
 0000003232 00000 n 
 0000003276 00000 n 
-0000331699 00000 n 
-0003414983 00000 n 
+0000331705 00000 n 
+0003415299 00000 n 
 0000003325 00000 n 
 0000003370 00000 n 
-0000352952 00000 n 
-0003414852 00000 n 
+0000352958 00000 n 
+0003415168 00000 n 
 0000003417 00000 n 
 0000003471 00000 n 
-0000353079 00000 n 
-0003414734 00000 n 
+0000353085 00000 n 
+0003415050 00000 n 
 0000003520 00000 n 
 0000003556 00000 n 
-0000355974 00000 n 
-0003414669 00000 n 
+0000355980 00000 n 
+0003414985 00000 n 
 0000003610 00000 n 
 0000003652 00000 n 
-0000374467 00000 n 
-0003414537 00000 n 
+0000374473 00000 n 
+0003414853 00000 n 
 0000003701 00000 n 
 0000003750 00000 n 
-0000374594 00000 n 
-0003414419 00000 n 
+0000374600 00000 n 
+0003414735 00000 n 
 0000003804 00000 n 
 0000003846 00000 n 
-0000382997 00000 n 
-0003414354 00000 n 
+0000383003 00000 n 
+0003414670 00000 n 
 0000003905 00000 n 
 0000003954 00000 n 
-0000388246 00000 n 
-0003414275 00000 n 
+0000388252 00000 n 
+0003414591 00000 n 
 0000004008 00000 n 
 0000004050 00000 n 
-0000388373 00000 n 
-0003414143 00000 n 
+0000388379 00000 n 
+0003414459 00000 n 
 0000004099 00000 n 
 0000004137 00000 n 
-0000394358 00000 n 
-0003414064 00000 n 
+0000394364 00000 n 
+0003414380 00000 n 
 0000004191 00000 n 
 0000004243 00000 n 
-0000401474 00000 n 
-0003413971 00000 n 
+0000401480 00000 n 
+0003414287 00000 n 
 0000004297 00000 n 
 0000004342 00000 n 
-0000414348 00000 n 
-0003413878 00000 n 
+0000414354 00000 n 
+0003414194 00000 n 
 0000004396 00000 n 
 0000004459 00000 n 
-0000417295 00000 n 
-0003413785 00000 n 
+0000417301 00000 n 
+0003414101 00000 n 
 0000004513 00000 n 
 0000004560 00000 n 
-0000421558 00000 n 
-0003413692 00000 n 
+0000421564 00000 n 
+0003414008 00000 n 
 0000004614 00000 n 
 0000004669 00000 n 
-0000424045 00000 n 
-0003413599 00000 n 
+0000424051 00000 n 
+0003413915 00000 n 
 0000004723 00000 n 
 0000004759 00000 n 
-0000440829 00000 n 
-0003413467 00000 n 
+0000440835 00000 n 
+0003413783 00000 n 
 0000004813 00000 n 
 0000004870 00000 n 
-0000443505 00000 n 
-0003413402 00000 n 
+0000443511 00000 n 
+0003413718 00000 n 
 0000004929 00000 n 
 0000004997 00000 n 
-0000446276 00000 n 
-0003413309 00000 n 
+0000446282 00000 n 
+0003413625 00000 n 
 0000005051 00000 n 
 0000005105 00000 n 
-0000453815 00000 n 
-0003413230 00000 n 
+0000453821 00000 n 
+0003413546 00000 n 
 0000005159 00000 n 
 0000005203 00000 n 
-0000456513 00000 n 
-0003413151 00000 n 
+0000456519 00000 n 
+0003413467 00000 n 
 0000005252 00000 n 
 0000005297 00000 n 
-0000494024 00000 n 
-0003413020 00000 n 
+0000494030 00000 n 
+0003413336 00000 n 
 0000005344 00000 n 
 0000005393 00000 n 
-0000496813 00000 n 
-0003412902 00000 n 
+0000496819 00000 n 
+0003413218 00000 n 
 0000005442 00000 n 
 0000005478 00000 n 
-0000499557 00000 n 
-0003412837 00000 n 
+0000499563 00000 n 
+0003413153 00000 n 
 0000005532 00000 n 
 0000005574 00000 n 
-0000502492 00000 n 
-0003412705 00000 n 
+0000502498 00000 n 
+0003413021 00000 n 
 0000005623 00000 n 
 0000005672 00000 n 
-0000502619 00000 n 
-0003412626 00000 n 
+0000502625 00000 n 
+0003412942 00000 n 
 0000005726 00000 n 
 0000005768 00000 n 
-0000508547 00000 n 
-0003412547 00000 n 
+0000508553 00000 n 
+0003412863 00000 n 
 0000005822 00000 n 
 0000005864 00000 n 
-0000508673 00000 n 
-0003412415 00000 n 
+0000508679 00000 n 
+0003412731 00000 n 
 0000005913 00000 n 
 0000005951 00000 n 
-0000508799 00000 n 
-0003412336 00000 n 
+0000508805 00000 n 
+0003412652 00000 n 
 0000006005 00000 n 
 0000006081 00000 n 
-0000508926 00000 n 
-0003412243 00000 n 
+0000508932 00000 n 
+0003412559 00000 n 
 0000006135 00000 n 
 0000006192 00000 n 
-0000540511 00000 n 
-0003412111 00000 n 
+0000540517 00000 n 
+0003412427 00000 n 
 0000006246 00000 n 
 0000006299 00000 n 
-0000542980 00000 n 
-0003412032 00000 n 
+0000542986 00000 n 
+0003412348 00000 n 
 0000006358 00000 n 
 0000006419 00000 n 
-0000553397 00000 n 
-0003411953 00000 n 
+0000553403 00000 n 
+0003412269 00000 n 
 0000006478 00000 n 
 0000006567 00000 n 
-0000560103 00000 n 
-0003411860 00000 n 
+0000560109 00000 n 
+0003412176 00000 n 
 0000006621 00000 n 
 0000006676 00000 n 
-0000580281 00000 n 
-0003411767 00000 n 
+0000580287 00000 n 
+0003412083 00000 n 
 0000006730 00000 n 
 0000006784 00000 n 
-0000587380 00000 n 
-0003411688 00000 n 
+0000587386 00000 n 
+0003412004 00000 n 
 0000006838 00000 n 
 0000006882 00000 n 
-0000589798 00000 n 
-0003411609 00000 n 
+0000589804 00000 n 
+0003411925 00000 n 
 0000006931 00000 n 
 0000006976 00000 n 
-0000608277 00000 n 
-0003411478 00000 n 
+0000608283 00000 n 
+0003411794 00000 n 
 0000007023 00000 n 
 0000007071 00000 n 
-0000619248 00000 n 
-0003411399 00000 n 
+0000619254 00000 n 
+0003411715 00000 n 
 0000007120 00000 n 
 0000007200 00000 n 
-0000619374 00000 n 
-0003411267 00000 n 
+0000619380 00000 n 
+0003411583 00000 n 
 0000007249 00000 n 
 0000007285 00000 n 
-0000624745 00000 n 
-0003411202 00000 n 
+0000624751 00000 n 
+0003411518 00000 n 
 0000007339 00000 n 
 0000007381 00000 n 
-0000625000 00000 n 
-0003411070 00000 n 
+0000625006 00000 n 
+0003411386 00000 n 
 0000007430 00000 n 
 0000007479 00000 n 
-0000635915 00000 n 
-0003410952 00000 n 
+0000635921 00000 n 
+0003411268 00000 n 
 0000007533 00000 n 
 0000007575 00000 n 
-0000647339 00000 n 
-0003410873 00000 n 
+0000647345 00000 n 
+0003411189 00000 n 
 0000007634 00000 n 
 0000007696 00000 n 
-0000650588 00000 n 
-0003410780 00000 n 
+0000650594 00000 n 
+0003411096 00000 n 
 0000007755 00000 n 
 0000007809 00000 n 
-0000653780 00000 n 
-0003410687 00000 n 
+0000653786 00000 n 
+0003411003 00000 n 
 0000007868 00000 n 
 0000007918 00000 n 
-0000653907 00000 n 
-0003410594 00000 n 
+0000653913 00000 n 
+0003410910 00000 n 
 0000007977 00000 n 
 0000008020 00000 n 
-0000654034 00000 n 
-0003410501 00000 n 
+0000654040 00000 n 
+0003410817 00000 n 
 0000008079 00000 n 
 0000008143 00000 n 
-0000657374 00000 n 
-0003410408 00000 n 
+0000657380 00000 n 
+0003410724 00000 n 
 0000008202 00000 n 
 0000008274 00000 n 
-0000659617 00000 n 
-0003410329 00000 n 
+0000659623 00000 n 
+0003410645 00000 n 
 0000008333 00000 n 
 0000008415 00000 n 
-0000674601 00000 n 
-0003410236 00000 n 
+0000674607 00000 n 
+0003410552 00000 n 
 0000008469 00000 n 
 0000008511 00000 n 
-0000674728 00000 n 
-0003410157 00000 n 
+0000674734 00000 n 
+0003410473 00000 n 
 0000008565 00000 n 
 0000008613 00000 n 
-0000695631 00000 n 
-0003410025 00000 n 
+0000695637 00000 n 
+0003410341 00000 n 
 0000008662 00000 n 
 0000008713 00000 n 
-0000699061 00000 n 
-0003409946 00000 n 
+0000699067 00000 n 
+0003410262 00000 n 
 0000008767 00000 n 
 0000008822 00000 n 
-0000704958 00000 n 
-0003409853 00000 n 
+0000704964 00000 n 
+0003410169 00000 n 
 0000008876 00000 n 
 0000008934 00000 n 
-0000712431 00000 n 
-0003409760 00000 n 
+0000712437 00000 n 
+0003410076 00000 n 
 0000008988 00000 n 
 0000009039 00000 n 
-0000719374 00000 n 
-0003409628 00000 n 
+0000719380 00000 n 
+0003409944 00000 n 
 0000009093 00000 n 
 0000009169 00000 n 
-0000721506 00000 n 
-0003409549 00000 n 
+0000721512 00000 n 
+0003409865 00000 n 
 0000009228 00000 n 
 0000009302 00000 n 
-0000723840 00000 n 
-0003409456 00000 n 
+0000723846 00000 n 
+0003409772 00000 n 
 0000009361 00000 n 
 0000009434 00000 n 
-0000727553 00000 n 
-0003409377 00000 n 
+0000727559 00000 n 
+0003409693 00000 n 
 0000009493 00000 n 
 0000009551 00000 n 
-0000733963 00000 n 
-0003409284 00000 n 
+0000733969 00000 n 
+0003409600 00000 n 
 0000009605 00000 n 
 0000009690 00000 n 
-0000759036 00000 n 
-0003409205 00000 n 
+0000759042 00000 n 
+0003409521 00000 n 
 0000009744 00000 n 
 0000009791 00000 n 
-0000764388 00000 n 
-0003409112 00000 n 
+0000764394 00000 n 
+0003409428 00000 n 
 0000009840 00000 n 
 0000009889 00000 n 
-0000775017 00000 n 
-0003408980 00000 n 
+0000775023 00000 n 
+0003409296 00000 n 
 0000009938 00000 n 
 0000010000 00000 n 
-0000775143 00000 n 
-0003408901 00000 n 
+0000775149 00000 n 
+0003409217 00000 n 
 0000010054 00000 n 
 0000010119 00000 n 
-0000776822 00000 n 
-0003408808 00000 n 
+0000776828 00000 n 
+0003409124 00000 n 
 0000010173 00000 n 
 0000010230 00000 n 
-0000779353 00000 n 
-0003408715 00000 n 
+0000779359 00000 n 
+0003409031 00000 n 
 0000010284 00000 n 
 0000010338 00000 n 
-0000782344 00000 n 
-0003408636 00000 n 
+0000782350 00000 n 
+0003408952 00000 n 
 0000010392 00000 n 
 0000010454 00000 n 
-0000786222 00000 n 
-0003408504 00000 n 
+0000786228 00000 n 
+0003408820 00000 n 
 0000010503 00000 n 
 0000010555 00000 n 
-0000789166 00000 n 
-0003408425 00000 n 
+0000789172 00000 n 
+0003408741 00000 n 
 0000010609 00000 n 
 0000010691 00000 n 
-0000793153 00000 n 
-0003408332 00000 n 
+0000793159 00000 n 
+0003408648 00000 n 
 0000010745 00000 n 
 0000010819 00000 n 
-0000818146 00000 n 
-0003408239 00000 n 
+0000818152 00000 n 
+0003408555 00000 n 
 0000010873 00000 n 
 0000010941 00000 n 
-0000818273 00000 n 
-0003408146 00000 n 
+0000818279 00000 n 
+0003408462 00000 n 
 0000010995 00000 n 
 0000011063 00000 n 
-0000825333 00000 n 
-0003408053 00000 n 
+0000825339 00000 n 
+0003408369 00000 n 
 0000011117 00000 n 
 0000011164 00000 n 
-0000827736 00000 n 
-0003407974 00000 n 
+0000827742 00000 n 
+0003408290 00000 n 
 0000011218 00000 n 
 0000011267 00000 n 
-0000827863 00000 n 
-0003407881 00000 n 
+0000827869 00000 n 
+0003408197 00000 n 
 0000011316 00000 n 
 0000011358 00000 n 
-0000830565 00000 n 
-0003407802 00000 n 
+0000830571 00000 n 
+0003408118 00000 n 
 0000011407 00000 n 
 0000011452 00000 n 
-0000878378 00000 n 
-0003407685 00000 n 
+0000878384 00000 n 
+0003408001 00000 n 
 0000011499 00000 n 
 0000011560 00000 n 
-0000881051 00000 n 
-0003407567 00000 n 
+0000881057 00000 n 
+0003407883 00000 n 
 0000011609 00000 n 
 0000011645 00000 n 
-0000881178 00000 n 
-0003407502 00000 n 
+0000881184 00000 n 
+0003407818 00000 n 
 0000011699 00000 n 
 0000011741 00000 n 
-0000884177 00000 n 
-0003407370 00000 n 
+0000884183 00000 n 
+0003407686 00000 n 
 0000011790 00000 n 
 0000011839 00000 n 
-0000886876 00000 n 
-0003407252 00000 n 
+0000886882 00000 n 
+0003407568 00000 n 
 0000011893 00000 n 
 0000011935 00000 n 
-0000889469 00000 n 
-0003407173 00000 n 
+0000889475 00000 n 
+0003407489 00000 n 
 0000011994 00000 n 
 0000012032 00000 n 
-0000892193 00000 n 
-0003407080 00000 n 
+0000892199 00000 n 
+0003407396 00000 n 
 0000012091 00000 n 
 0000012161 00000 n 
-0000897555 00000 n 
-0003407001 00000 n 
+0000897561 00000 n 
+0003407317 00000 n 
 0000012220 00000 n 
 0000012273 00000 n 
-0000912706 00000 n 
-0003406922 00000 n 
+0000912712 00000 n 
+0003407238 00000 n 
 0000012327 00000 n 
 0000012369 00000 n 
-0000912832 00000 n 
-0003406790 00000 n 
+0000912838 00000 n 
+0003407106 00000 n 
 0000012418 00000 n 
 0000012456 00000 n 
-0000943861 00000 n 
-0003406725 00000 n 
+0000943867 00000 n 
+0003407041 00000 n 
 0000012510 00000 n 
 0000012554 00000 n 
-0000943988 00000 n 
-0003406646 00000 n 
+0000943994 00000 n 
+0003406962 00000 n 
 0000012603 00000 n 
 0000012648 00000 n 
-0001187326 00000 n 
-0003406514 00000 n 
+0001187332 00000 n 
+0003406830 00000 n 
 0000012692 00000 n 
 0000012764 00000 n 
-0001188887 00000 n 
-0003406435 00000 n 
+0001188893 00000 n 
+0003406751 00000 n 
 0000012813 00000 n 
 0000012877 00000 n 
-0001191994 00000 n 
-0003406303 00000 n 
+0001192000 00000 n 
+0003406619 00000 n 
 0000012924 00000 n 
 0000012994 00000 n 
-0001192121 00000 n 
-0003406185 00000 n 
+0001192127 00000 n 
+0003406501 00000 n 
 0000013043 00000 n 
 0000013079 00000 n 
-0001212331 00000 n 
-0003406120 00000 n 
+0001212337 00000 n 
+0003406436 00000 n 
 0000013133 00000 n 
 0000013175 00000 n 
-0001214855 00000 n 
-0003405988 00000 n 
+0001214861 00000 n 
+0003406304 00000 n 
 0000013224 00000 n 
 0000013273 00000 n 
-0001214982 00000 n 
-0003405909 00000 n 
+0001214988 00000 n 
+0003406225 00000 n 
 0000013327 00000 n 
 0000013369 00000 n 
-0001223179 00000 n 
-0003405830 00000 n 
+0001223185 00000 n 
+0003406146 00000 n 
 0000013423 00000 n 
 0000013465 00000 n 
-0001223306 00000 n 
-0003405698 00000 n 
+0001223312 00000 n 
+0003406014 00000 n 
 0000013514 00000 n 
 0000013552 00000 n 
-0001226142 00000 n 
-0003405619 00000 n 
+0001226148 00000 n 
+0003405935 00000 n 
 0000013606 00000 n 
 0000013695 00000 n 
-0001250219 00000 n 
-0003405526 00000 n 
+0001250225 00000 n 
+0003405842 00000 n 
 0000013749 00000 n 
 0000013846 00000 n 
-0001258037 00000 n 
-0003405433 00000 n 
+0001258043 00000 n 
+0003405749 00000 n 
 0000013900 00000 n 
 0000013994 00000 n 
-0001261204 00000 n 
-0003405301 00000 n 
+0001261210 00000 n 
+0003405617 00000 n 
 0000014048 00000 n 
 0000014129 00000 n 
-0001292595 00000 n 
-0003405222 00000 n 
+0001292601 00000 n 
+0003405538 00000 n 
 0000014188 00000 n 
 0000014241 00000 n 
-0001296801 00000 n 
-0003405129 00000 n 
+0001296807 00000 n 
+0003405445 00000 n 
 0000014300 00000 n 
 0000014363 00000 n 
-0001304461 00000 n 
-0003405050 00000 n 
+0001304467 00000 n 
+0003405366 00000 n 
 0000014422 00000 n 
 0000014516 00000 n 
-0001307964 00000 n 
-0003404918 00000 n 
+0001307970 00000 n 
+0003405234 00000 n 
 0000014570 00000 n 
 0000014627 00000 n 
-0001313611 00000 n 
-0003404839 00000 n 
+0001313617 00000 n 
+0003405155 00000 n 
 0000014686 00000 n 
 0000014731 00000 n 
-0001314120 00000 n 
-0003404760 00000 n 
+0001314126 00000 n 
+0003405076 00000 n 
 0000014790 00000 n 
 0000014835 00000 n 
-0001317299 00000 n 
-0003404681 00000 n 
+0001317305 00000 n 
+0003404997 00000 n 
 0000014889 00000 n 
 0000014933 00000 n 
-0001319587 00000 n 
-0003404602 00000 n 
+0001319593 00000 n 
+0003404918 00000 n 
 0000014982 00000 n 
 0000015027 00000 n 
-0001372014 00000 n 
-0003404470 00000 n 
+0001372020 00000 n 
+0003404786 00000 n 
 0000015074 00000 n 
 0000015120 00000 n 
-0001374258 00000 n 
-0003404352 00000 n 
+0001374264 00000 n 
+0003404668 00000 n 
 0000015169 00000 n 
 0000015205 00000 n 
-0001376745 00000 n 
-0003404248 00000 n 
+0001376751 00000 n 
+0003404564 00000 n 
 0000015259 00000 n 
 0000015303 00000 n 
-0001376872 00000 n 
-0003404169 00000 n 
+0001376878 00000 n 
+0003404485 00000 n 
 0000015362 00000 n 
 0000015419 00000 n 
-0001385270 00000 n 
-0003404076 00000 n 
+0001385276 00000 n 
+0003404392 00000 n 
 0000015478 00000 n 
 0000015524 00000 n 
-0001387543 00000 n 
-0003403983 00000 n 
+0001387549 00000 n 
+0003404299 00000 n 
 0000015583 00000 n 
 0000015646 00000 n 
-0001387669 00000 n 
-0003403890 00000 n 
+0001387675 00000 n 
+0003404206 00000 n 
 0000015705 00000 n 
 0000015757 00000 n 
-0001391989 00000 n 
-0003403797 00000 n 
+0001391995 00000 n 
+0003404113 00000 n 
 0000015816 00000 n 
 0000015874 00000 n 
-0001392116 00000 n 
-0003403718 00000 n 
+0001392122 00000 n 
+0003404034 00000 n 
 0000015933 00000 n 
 0000016004 00000 n 
-0001394754 00000 n 
-0003403586 00000 n 
+0001394760 00000 n 
+0003403902 00000 n 
 0000016053 00000 n 
 0000016120 00000 n 
-0001394881 00000 n 
-0003403507 00000 n 
+0001394887 00000 n 
+0003403823 00000 n 
 0000016174 00000 n 
 0000016241 00000 n 
-0001400962 00000 n 
-0003403414 00000 n 
+0001400968 00000 n 
+0003403730 00000 n 
 0000016295 00000 n 
 0000016368 00000 n 
-0001403437 00000 n 
-0003403335 00000 n 
+0001403443 00000 n 
+0003403651 00000 n 
 0000016422 00000 n 
 0000016475 00000 n 
-0001410602 00000 n 
-0003403217 00000 n 
+0001410608 00000 n 
+0003403533 00000 n 
 0000016524 00000 n 
 0000016579 00000 n 
-0001412948 00000 n 
-0003403099 00000 n 
+0001412954 00000 n 
+0003403415 00000 n 
 0000016633 00000 n 
 0000016704 00000 n 
-0001413075 00000 n 
-0003403020 00000 n 
+0001413081 00000 n 
+0003403336 00000 n 
 0000016763 00000 n 
 0000016838 00000 n 
-0001413202 00000 n 
-0003402927 00000 n 
+0001413208 00000 n 
+0003403243 00000 n 
 0000016897 00000 n 
 0000016978 00000 n 
-0001415485 00000 n 
-0003402848 00000 n 
+0001415491 00000 n 
+0003403164 00000 n 
 0000017037 00000 n 
 0000017126 00000 n 
-0001415612 00000 n 
-0003402716 00000 n 
+0001415618 00000 n 
+0003403032 00000 n 
 0000017180 00000 n 
 0000017239 00000 n 
-0001418579 00000 n 
-0003402637 00000 n 
+0001418585 00000 n 
+0003402953 00000 n 
 0000017298 00000 n 
 0000017358 00000 n 
-0001418706 00000 n 
-0003402558 00000 n 
+0001418712 00000 n 
+0003402874 00000 n 
 0000017417 00000 n 
 0000017474 00000 n 
-0001424010 00000 n 
-0003402479 00000 n 
+0001424016 00000 n 
+0003402795 00000 n 
 0000017528 00000 n 
 0000017601 00000 n 
-0001428109 00000 n 
-0003402347 00000 n 
+0001428115 00000 n 
+0003402663 00000 n 
 0000017648 00000 n 
 0000017709 00000 n 
-0001428236 00000 n 
-0003402229 00000 n 
+0001428242 00000 n 
+0003402545 00000 n 
 0000017758 00000 n 
 0000017794 00000 n 
-0001430423 00000 n 
-0003402164 00000 n 
+0001430429 00000 n 
+0003402480 00000 n 
 0000017848 00000 n 
 0000017890 00000 n 
-0001430549 00000 n 
-0003402032 00000 n 
+0001430555 00000 n 
+0003402348 00000 n 
 0000017939 00000 n 
 0000017988 00000 n 
-0001433464 00000 n 
-0003401953 00000 n 
+0001433470 00000 n 
+0003402269 00000 n 
 0000018042 00000 n 
 0000018084 00000 n 
-0001475096 00000 n 
-0003401874 00000 n 
+0001475102 00000 n 
+0003402190 00000 n 
 0000018138 00000 n 
 0000018180 00000 n 
-0001478652 00000 n 
-0003401742 00000 n 
+0001478658 00000 n 
+0003402058 00000 n 
 0000018229 00000 n 
 0000018267 00000 n 
-0001481009 00000 n 
-0003401624 00000 n 
+0001481015 00000 n 
+0003401940 00000 n 
 0000018321 00000 n 
 0000018379 00000 n 
-0001506521 00000 n 
-0003401559 00000 n 
+0001506527 00000 n 
+0003401875 00000 n 
 0000018438 00000 n 
 0000018490 00000 n 
-0001509852 00000 n 
-0003401466 00000 n 
+0001509858 00000 n 
+0003401782 00000 n 
 0000018544 00000 n 
 0000018604 00000 n 
-0001517003 00000 n 
-0003401387 00000 n 
+0001517009 00000 n 
+0003401703 00000 n 
 0000018658 00000 n 
 0000018702 00000 n 
-0001517130 00000 n 
-0003401308 00000 n 
+0001517136 00000 n 
+0003401624 00000 n 
 0000018751 00000 n 
 0000018796 00000 n 
-0001547689 00000 n 
-0003401190 00000 n 
+0001547695 00000 n 
+0003401506 00000 n 
 0000018844 00000 n 
 0000018910 00000 n 
-0001550107 00000 n 
-0003401072 00000 n 
+0001550113 00000 n 
+0003401388 00000 n 
 0000018960 00000 n 
 0000018997 00000 n 
-0001552916 00000 n 
-0003401007 00000 n 
+0001552922 00000 n 
+0003401323 00000 n 
 0000019052 00000 n 
 0000019095 00000 n 
-0001555184 00000 n 
-0003400875 00000 n 
+0001555190 00000 n 
+0003401191 00000 n 
 0000019145 00000 n 
 0000019195 00000 n 
-0001555311 00000 n 
-0003400810 00000 n 
+0001555317 00000 n 
+0003401126 00000 n 
 0000019250 00000 n 
 0000019293 00000 n 
-0001559667 00000 n 
-0003400692 00000 n 
+0001559673 00000 n 
+0003401008 00000 n 
 0000019343 00000 n 
 0000019382 00000 n 
-0001559794 00000 n 
-0003400588 00000 n 
+0001559800 00000 n 
+0003400904 00000 n 
 0000019437 00000 n 
 0000019500 00000 n 
-0001561294 00000 n 
-0003400523 00000 n 
+0001561300 00000 n 
+0003400839 00000 n 
 0000019560 00000 n 
 0000019614 00000 n 
-0001640406 00000 n 
-0003400402 00000 n 
+0001640412 00000 n 
+0003400718 00000 n 
 0000019658 00000 n 
 0000019704 00000 n 
-0001641670 00000 n 
-0003400323 00000 n 
+0001641676 00000 n 
+0003400639 00000 n 
 0000019753 00000 n 
 0000019790 00000 n 
-0001644063 00000 n 
-0003400191 00000 n 
+0001644069 00000 n 
+0003400507 00000 n 
 0000019838 00000 n 
 0000019909 00000 n 
-0001646713 00000 n 
-0003400073 00000 n 
+0001646719 00000 n 
+0003400389 00000 n 
 0000019959 00000 n 
 0000019996 00000 n 
-0001653519 00000 n 
-0003400008 00000 n 
+0001653525 00000 n 
+0003400324 00000 n 
 0000020051 00000 n 
 0000020094 00000 n 
-0001656180 00000 n 
-0003399876 00000 n 
+0001656186 00000 n 
+0003400192 00000 n 
 0000020144 00000 n 
 0000020194 00000 n 
-0001658501 00000 n 
-0003399772 00000 n 
+0001658507 00000 n 
+0003400088 00000 n 
 0000020249 00000 n 
 0000020292 00000 n 
-0001671285 00000 n 
-0003399707 00000 n 
+0001671291 00000 n 
+0003400023 00000 n 
 0000020352 00000 n 
 0000020397 00000 n 
-0001677729 00000 n 
-0003399575 00000 n 
+0001677735 00000 n 
+0003399891 00000 n 
 0000020447 00000 n 
 0000020486 00000 n 
-0001677856 00000 n 
-0003399496 00000 n 
+0001677862 00000 n 
+0003399812 00000 n 
 0000020541 00000 n 
 0000020589 00000 n 
-0001681024 00000 n 
-0003399364 00000 n 
+0001681030 00000 n 
+0003399680 00000 n 
 0000020644 00000 n 
 0000020696 00000 n 
-0001683296 00000 n 
-0003399285 00000 n 
+0001683302 00000 n 
+0003399601 00000 n 
 0000020756 00000 n 
 0000020804 00000 n 
-0001690099 00000 n 
-0003399206 00000 n 
+0001690105 00000 n 
+0003399522 00000 n 
 0000020864 00000 n 
 0000020910 00000 n 
-0001692730 00000 n 
-0003399113 00000 n 
+0001692736 00000 n 
+0003399429 00000 n 
 0000020965 00000 n 
 0000021034 00000 n 
-0001697664 00000 n 
-0003398981 00000 n 
+0001697670 00000 n 
+0003399297 00000 n 
 0000021089 00000 n 
 0000021142 00000 n 
-0001697791 00000 n 
-0003398902 00000 n 
+0001697797 00000 n 
+0003399218 00000 n 
 0000021202 00000 n 
 0000021274 00000 n 
-0001703416 00000 n 
-0003398809 00000 n 
+0001703422 00000 n 
+0003399125 00000 n 
 0000021334 00000 n 
 0000021405 00000 n 
-0001703734 00000 n 
-0003398730 00000 n 
+0001703740 00000 n 
+0003399046 00000 n 
 0000021465 00000 n 
 0000021526 00000 n 
-0001707836 00000 n 
-0003398651 00000 n 
+0001707842 00000 n 
+0003398967 00000 n 
 0000021581 00000 n 
 0000021626 00000 n 
-0001710067 00000 n 
-0003398572 00000 n 
+0001710073 00000 n 
+0003398888 00000 n 
 0000021676 00000 n 
 0000021722 00000 n 
-0001716520 00000 n 
-0003398440 00000 n 
+0001716526 00000 n 
+0003398756 00000 n 
 0000021770 00000 n 
 0000021832 00000 n 
-0001716647 00000 n 
-0003398322 00000 n 
+0001716653 00000 n 
+0003398638 00000 n 
 0000021882 00000 n 
 0000021919 00000 n 
-0001719128 00000 n 
-0003398257 00000 n 
+0001719134 00000 n 
+0003398573 00000 n 
 0000021974 00000 n 
 0000022017 00000 n 
-0001721270 00000 n 
-0003398125 00000 n 
+0001721276 00000 n 
+0003398441 00000 n 
 0000022067 00000 n 
 0000022117 00000 n 
-0001721397 00000 n 
-0003398046 00000 n 
+0001721403 00000 n 
+0003398362 00000 n 
 0000022172 00000 n 
 0000022215 00000 n 
-0001723343 00000 n 
-0003397967 00000 n 
+0001723349 00000 n 
+0003398283 00000 n 
 0000022270 00000 n 
 0000022313 00000 n 
-0001723470 00000 n 
-0003397835 00000 n 
+0001723476 00000 n 
+0003398151 00000 n 
 0000022363 00000 n 
 0000022402 00000 n 
-0001725160 00000 n 
-0003397756 00000 n 
+0001725166 00000 n 
+0003398072 00000 n 
 0000022457 00000 n 
 0000022524 00000 n 
-0001728316 00000 n 
-0003397624 00000 n 
+0001728322 00000 n 
+0003397940 00000 n 
 0000022579 00000 n 
 0000022628 00000 n 
-0001730281 00000 n 
-0003397545 00000 n 
+0001730287 00000 n 
+0003397861 00000 n 
 0000022688 00000 n 
 0000022736 00000 n 
-0001736997 00000 n 
-0003397452 00000 n 
+0001737003 00000 n 
+0003397768 00000 n 
 0000022796 00000 n 
 0000022842 00000 n 
-0001741791 00000 n 
-0003397373 00000 n 
+0001741797 00000 n 
+0003397689 00000 n 
 0000022902 00000 n 
 0000022950 00000 n 
-0001741918 00000 n 
-0003397280 00000 n 
+0001741924 00000 n 
+0003397596 00000 n 
 0000023005 00000 n 
 0000023045 00000 n 
-0001746680 00000 n 
-0003397201 00000 n 
+0001746686 00000 n 
+0003397517 00000 n 
 0000023100 00000 n 
 0000023145 00000 n 
-0001749361 00000 n 
-0003397122 00000 n 
+0001749367 00000 n 
+0003397438 00000 n 
 0000023195 00000 n 
 0000023241 00000 n 
-0001754864 00000 n 
-0003396990 00000 n 
+0001754870 00000 n 
+0003397306 00000 n 
 0000023289 00000 n 
 0000023362 00000 n 
-0001754990 00000 n 
-0003396911 00000 n 
+0001754996 00000 n 
+0003397227 00000 n 
 0000023412 00000 n 
 0000023449 00000 n 
-0001758136 00000 n 
-0003396818 00000 n 
+0001758142 00000 n 
+0003397134 00000 n 
 0000023499 00000 n 
 0000023549 00000 n 
-0001763657 00000 n 
-0003396686 00000 n 
+0001763663 00000 n 
+0003397002 00000 n 
 0000023599 00000 n 
 0000023663 00000 n 
-0001763784 00000 n 
-0003396568 00000 n 
+0001763790 00000 n 
+0003396884 00000 n 
 0000023718 00000 n 
 0000023760 00000 n 
-0001763911 00000 n 
-0003396489 00000 n 
+0001763917 00000 n 
+0003396805 00000 n 
 0000023820 00000 n 
 0000023862 00000 n 
-0001766411 00000 n 
-0003396396 00000 n 
+0001766417 00000 n 
+0003396712 00000 n 
 0000023922 00000 n 
 0000023966 00000 n 
-0001769060 00000 n 
-0003396317 00000 n 
+0001769066 00000 n 
+0003396633 00000 n 
 0000024026 00000 n 
 0000024073 00000 n 
-0001769185 00000 n 
-0003396224 00000 n 
+0001769191 00000 n 
+0003396540 00000 n 
 0000024128 00000 n 
 0000024174 00000 n 
-0001775895 00000 n 
-0003396131 00000 n 
+0001775901 00000 n 
+0003396447 00000 n 
 0000024229 00000 n 
 0000024280 00000 n 
-0001776022 00000 n 
-0003396038 00000 n 
+0001776028 00000 n 
+0003396354 00000 n 
 0000024335 00000 n 
 0000024409 00000 n 
-0001776149 00000 n 
-0003395945 00000 n 
+0001776155 00000 n 
+0003396261 00000 n 
 0000024464 00000 n 
 0000024546 00000 n 
-0001778575 00000 n 
-0003395852 00000 n 
+0001778581 00000 n 
+0003396168 00000 n 
 0000024601 00000 n 
 0000024662 00000 n 
-0001778702 00000 n 
-0003395759 00000 n 
+0001778708 00000 n 
+0003396075 00000 n 
 0000024717 00000 n 
 0000024802 00000 n 
-0001778829 00000 n 
-0003395666 00000 n 
+0001778835 00000 n 
+0003395982 00000 n 
 0000024857 00000 n 
 0000024901 00000 n 
-0001781526 00000 n 
-0003395587 00000 n 
+0001781532 00000 n 
+0003395903 00000 n 
 0000024956 00000 n 
 0000025000 00000 n 
-0001783848 00000 n 
-0003395508 00000 n 
+0001783854 00000 n 
+0003395824 00000 n 
 0000025050 00000 n 
 0000025093 00000 n 
-0001787342 00000 n 
-0003395376 00000 n 
+0001787348 00000 n 
+0003395692 00000 n 
 0000025141 00000 n 
 0000025185 00000 n 
-0001790630 00000 n 
-0003395297 00000 n 
+0001790636 00000 n 
+0003395613 00000 n 
 0000025235 00000 n 
 0000025272 00000 n 
-0001793214 00000 n 
-0003395218 00000 n 
+0001793220 00000 n 
+0003395534 00000 n 
 0000025322 00000 n 
 0000025365 00000 n 
-0001796426 00000 n 
-0003395084 00000 n 
+0001796432 00000 n 
+0003395400 00000 n 
 0000025413 00000 n 
 0000025474 00000 n 
-0001796553 00000 n 
-0003395005 00000 n 
+0001796559 00000 n 
+0003395321 00000 n 
 0000025524 00000 n 
 0000025595 00000 n 
-0001912758 00000 n 
-0003394912 00000 n 
+0001912764 00000 n 
+0003395228 00000 n 
 0000025645 00000 n 
 0000025696 00000 n 
-0001918921 00000 n 
-0003394819 00000 n 
+0001918927 00000 n 
+0003395135 00000 n 
 0000025746 00000 n 
 0000025785 00000 n 
-0001922027 00000 n 
-0003394686 00000 n 
+0001922033 00000 n 
+0003395002 00000 n 
 0000025835 00000 n 
 0000025883 00000 n 
-0001922154 00000 n 
-0003394607 00000 n 
+0001922160 00000 n 
+0003394923 00000 n 
 0000025938 00000 n 
 0000026011 00000 n 
-0001922281 00000 n 
-0003394514 00000 n 
+0001922287 00000 n 
+0003394830 00000 n 
 0000026066 00000 n 
 0000026139 00000 n 
-0001922408 00000 n 
-0003394434 00000 n 
+0001922414 00000 n 
+0003394750 00000 n 
 0000026194 00000 n 
 0000026247 00000 n 
-0001925327 00000 n 
-0003394296 00000 n 
+0001925333 00000 n 
+0003394612 00000 n 
 0000026298 00000 n 
 0000026364 00000 n 
-0001925455 00000 n 
-0003394227 00000 n 
+0001925461 00000 n 
+0003394543 00000 n 
 0000026420 00000 n 
 0000026483 00000 n 
-0001932060 00000 n 
-0003394129 00000 n 
+0001932066 00000 n 
+0003394445 00000 n 
 0000026534 00000 n 
 0000026584 00000 n 
-0002189194 00000 n 
-0003394031 00000 n 
+0002189200 00000 n 
+0003394347 00000 n 
 0000026635 00000 n 
 0000026686 00000 n 
-0002353228 00000 n 
-0003393933 00000 n 
+0002353234 00000 n 
+0003394249 00000 n 
 0000026737 00000 n 
 0000026831 00000 n 
-0002527902 00000 n 
-0003393809 00000 n 
+0002527908 00000 n 
+0003394125 00000 n 
 0000026882 00000 n 
 0000026929 00000 n 
-0002530170 00000 n 
-0003393725 00000 n 
+0002530176 00000 n 
+0003394041 00000 n 
 0000026985 00000 n 
 0000027029 00000 n 
-0002533607 00000 n 
-0003393626 00000 n 
+0002533613 00000 n 
+0003393942 00000 n 
 0000027085 00000 n 
 0000027134 00000 n 
-0002533735 00000 n 
-0003393542 00000 n 
+0002533741 00000 n 
+0003393858 00000 n 
 0000027190 00000 n 
 0000027248 00000 n 
-0002550861 00000 n 
-0003393404 00000 n 
+0002550867 00000 n 
+0003393720 00000 n 
 0000027297 00000 n 
 0000027346 00000 n 
-0002550989 00000 n 
-0003393320 00000 n 
+0002550995 00000 n 
+0003393636 00000 n 
 0000027397 00000 n 
 0000027445 00000 n 
-0002556616 00000 n 
-0003393180 00000 n 
+0002556622 00000 n 
+0003393496 00000 n 
 0000027496 00000 n 
 0000027534 00000 n 
-0002558976 00000 n 
-0003393111 00000 n 
+0002558982 00000 n 
+0003393427 00000 n 
 0000027590 00000 n 
 0000027634 00000 n 
-0002559360 00000 n 
-0003392971 00000 n 
+0002559366 00000 n 
+0003393287 00000 n 
 0000027685 00000 n 
 0000027720 00000 n 
-0002561799 00000 n 
-0003392846 00000 n 
+0002561805 00000 n 
+0003393162 00000 n 
 0000027776 00000 n 
 0000027837 00000 n 
-0002565564 00000 n 
-0003392777 00000 n 
+0002565570 00000 n 
+0003393093 00000 n 
 0000027898 00000 n 
 0000027936 00000 n 
-0002620888 00000 n 
-0003392637 00000 n 
+0002620894 00000 n 
+0003392953 00000 n 
 0000027992 00000 n 
 0000028064 00000 n 
-0002626954 00000 n 
-0003392568 00000 n 
+0002626960 00000 n 
+0003392884 00000 n 
 0000028125 00000 n 
 0000028163 00000 n 
-0002627082 00000 n 
-0003392428 00000 n 
+0002627088 00000 n 
+0003392744 00000 n 
 0000028219 00000 n 
 0000028295 00000 n 
-0002658067 00000 n 
-0003392359 00000 n 
+0002658073 00000 n 
+0003392675 00000 n 
 0000028356 00000 n 
 0000028407 00000 n 
-0002690687 00000 n 
-0003392219 00000 n 
+0002690693 00000 n 
+0003392535 00000 n 
 0000028463 00000 n 
 0000028538 00000 n 
-0002713358 00000 n 
-0003392150 00000 n 
+0002713364 00000 n 
+0003392466 00000 n 
 0000028599 00000 n 
 0000028639 00000 n 
-0002730539 00000 n 
-0003392066 00000 n 
+0002730545 00000 n 
+0003392382 00000 n 
 0000028695 00000 n 
 0000028747 00000 n 
-0002733182 00000 n 
-0003391926 00000 n 
+0002733188 00000 n 
+0003392242 00000 n 
 0000028798 00000 n 
 0000028849 00000 n 
-0002733310 00000 n 
-0003391857 00000 n 
+0002733316 00000 n 
+0003392173 00000 n 
 0000028905 00000 n 
 0000028949 00000 n 
-0002735443 00000 n 
-0003391773 00000 n 
+0002735449 00000 n 
+0003392089 00000 n 
 0000029000 00000 n 
 0000029047 00000 n 
-0002744867 00000 n 
-0003391675 00000 n 
+0002744873 00000 n 
+0003391991 00000 n 
 0000029096 00000 n 
 0000029163 00000 n 
-0002784911 00000 n 
-0003391577 00000 n 
+0002784917 00000 n 
+0003391893 00000 n 
 0000029213 00000 n 
 0000029242 00000 n 
-0002790018 00000 n 
-0003391494 00000 n 
+0002790024 00000 n 
+0003391810 00000 n 
 0000029293 00000 n 
 0000029327 00000 n 
-0000029715 00000 n 
-0000029959 00000 n 
+0000029721 00000 n 
+0000029965 00000 n 
 0000029381 00000 n 
-0000029831 00000 n 
-0000029895 00000 n 
-0003371401 00000 n 
-0003371254 00000 n 
-0003372722 00000 n 
-0003375355 00000 n 
-0000032372 00000 n 
-0000032008 00000 n 
-0000030061 00000 n 
-0000032124 00000 n 
-0003373890 00000 n 
-0000032309 00000 n 
-0003372576 00000 n 
-0003374333 00000 n 
-0000034902 00000 n 
-0000034596 00000 n 
-0000032488 00000 n 
-0000034712 00000 n 
-0000034838 00000 n 
-0000036296 00000 n 
-0000036447 00000 n 
-0000036601 00000 n 
-0000036755 00000 n 
-0000036909 00000 n 
-0000037062 00000 n 
-0000037216 00000 n 
-0000037370 00000 n 
-0000037519 00000 n 
-0000037674 00000 n 
-0000037827 00000 n 
-0000037981 00000 n 
-0000038136 00000 n 
-0000038296 00000 n 
-0000038461 00000 n 
-0000038626 00000 n 
-0000038790 00000 n 
-0000038950 00000 n 
-0000039115 00000 n 
-0000039280 00000 n 
-0000039445 00000 n 
-0000039604 00000 n 
-0000039769 00000 n 
-0000039934 00000 n 
-0000041922 00000 n 
-0000040153 00000 n 
-0000035952 00000 n 
-0000035018 00000 n 
-0000040089 00000 n 
-0000042074 00000 n 
-0000042229 00000 n 
-0000042389 00000 n 
-0000042544 00000 n 
-0000042704 00000 n 
-0000042864 00000 n 
-0000043019 00000 n 
-0000043179 00000 n 
-0000043339 00000 n 
-0000043499 00000 n 
-0000043654 00000 n 
-0000043806 00000 n 
-0000043961 00000 n 
-0000044121 00000 n 
-0000044275 00000 n 
-0000044435 00000 n 
-0000044600 00000 n 
-0000044760 00000 n 
-0000044915 00000 n 
-0000045075 00000 n 
-0000045235 00000 n 
-0000045395 00000 n 
-0000045555 00000 n 
-0000045715 00000 n 
-0000045875 00000 n 
-0000046035 00000 n 
-0000046200 00000 n 
-0000046360 00000 n 
-0000046520 00000 n 
-0000046674 00000 n 
-0000046827 00000 n 
-0000046982 00000 n 
-0000047142 00000 n 
-0000047297 00000 n 
-0000047457 00000 n 
-0000047617 00000 n 
-0000047772 00000 n 
-0000050142 00000 n 
-0000047996 00000 n 
-0000041452 00000 n 
-0000040269 00000 n 
-0000047932 00000 n 
-0003373744 00000 n 
-0000050301 00000 n 
-0000050461 00000 n 
-0000050625 00000 n 
-0000050790 00000 n 
-0000050950 00000 n 
-0000051110 00000 n 
-0000051270 00000 n 
-0000051424 00000 n 
-0000051577 00000 n 
-0000051732 00000 n 
-0000051887 00000 n 
-0000052047 00000 n 
-0000052201 00000 n 
-0000052361 00000 n 
-0000052525 00000 n 
-0000052690 00000 n 
-0000052855 00000 n 
-0000053020 00000 n 
-0000053185 00000 n 
-0000053350 00000 n 
-0000053515 00000 n 
-0000053674 00000 n 
-0000053834 00000 n 
-0000053989 00000 n 
-0000054149 00000 n 
-0000054309 00000 n 
-0000054469 00000 n 
-0000054629 00000 n 
-0000054794 00000 n 
-0000054959 00000 n 
-0000055124 00000 n 
-0000055284 00000 n 
-0000055444 00000 n 
-0000055598 00000 n 
-0000057780 00000 n 
-0000055817 00000 n 
-0000049699 00000 n 
-0000048098 00000 n 
-0000055753 00000 n 
-0000057939 00000 n 
-0000058099 00000 n 
-0000058259 00000 n 
-0000058419 00000 n 
-0000058574 00000 n 
-0000058733 00000 n 
-0000058893 00000 n 
-0000059053 00000 n 
-0000059213 00000 n 
-0000059373 00000 n 
-0000059532 00000 n 
-0000059687 00000 n 
-0000059842 00000 n 
-0000059995 00000 n 
-0000060150 00000 n 
-0000060310 00000 n 
-0000060465 00000 n 
-0000060625 00000 n 
-0000060790 00000 n 
-0000060955 00000 n 
-0000061120 00000 n 
-0000061280 00000 n 
-0000061435 00000 n 
-0000061594 00000 n 
-0000061749 00000 n 
-0000061898 00000 n 
-0000062053 00000 n 
-0000062205 00000 n 
-0000062360 00000 n 
-0000062520 00000 n 
-0000062675 00000 n 
-0000065075 00000 n 
-0000062899 00000 n 
-0000057364 00000 n 
-0000055919 00000 n 
-0000062835 00000 n 
-0003375480 00000 n 
-0000065234 00000 n 
-0000065389 00000 n 
-0000065548 00000 n 
-0000065708 00000 n 
-0000065868 00000 n 
-0000066028 00000 n 
-0000066193 00000 n 
-0000066358 00000 n 
-0000066523 00000 n 
-0000066683 00000 n 
-0000066848 00000 n 
-0000067013 00000 n 
-0000067172 00000 n 
-0000067327 00000 n 
-0000067480 00000 n 
-0000067634 00000 n 
-0000067794 00000 n 
-0000067957 00000 n 
-0000068122 00000 n 
-0000068287 00000 n 
-0000068452 00000 n 
-0000068617 00000 n 
-0000068781 00000 n 
-0000068936 00000 n 
-0000069096 00000 n 
-0000069256 00000 n 
-0000069416 00000 n 
-0000069571 00000 n 
-0000069731 00000 n 
-0000069896 00000 n 
-0000071990 00000 n 
-0000070125 00000 n 
-0000064668 00000 n 
-0000063015 00000 n 
-0000070061 00000 n 
-0000072155 00000 n 
-0000072314 00000 n 
-0000072479 00000 n 
-0000072644 00000 n 
-0000072804 00000 n 
-0000072957 00000 n 
-0000073112 00000 n 
-0000073271 00000 n 
-0000073426 00000 n 
-0000073585 00000 n 
-0000073745 00000 n 
-0000073900 00000 n 
-0000074060 00000 n 
-0000074225 00000 n 
-0000074383 00000 n 
-0000074543 00000 n 
-0000074696 00000 n 
-0000074850 00000 n 
-0000075006 00000 n 
-0000075167 00000 n 
-0000075323 00000 n 
-0000075484 00000 n 
-0000075640 00000 n 
-0000075801 00000 n 
-0000075967 00000 n 
-0000076117 00000 n 
-0000076272 00000 n 
-0000076426 00000 n 
-0000076582 00000 n 
-0000076742 00000 n 
-0000078906 00000 n 
-0000076962 00000 n 
-0000071583 00000 n 
-0000070227 00000 n 
-0000076898 00000 n 
-0000079066 00000 n 
-0000079232 00000 n 
-0000079388 00000 n 
-0000079549 00000 n 
-0000079709 00000 n 
-0000079874 00000 n 
-0000080040 00000 n 
-0000080201 00000 n 
-0000080362 00000 n 
-0000080527 00000 n 
-0000080693 00000 n 
-0000080859 00000 n 
-0000081020 00000 n 
-0000081176 00000 n 
-0000081329 00000 n 
-0000081485 00000 n 
-0000081646 00000 n 
-0000081802 00000 n 
-0000081963 00000 n 
-0000082123 00000 n 
-0000082279 00000 n 
-0000082440 00000 n 
-0000082601 00000 n 
-0000082767 00000 n 
-0000082932 00000 n 
-0000083098 00000 n 
-0000083259 00000 n 
-0000083420 00000 n 
-0000083576 00000 n 
-0000083730 00000 n 
-0000083886 00000 n 
-0000084041 00000 n 
-0000084197 00000 n 
-0000084358 00000 n 
-0000084524 00000 n 
-0000086916 00000 n 
-0000084754 00000 n 
-0000078454 00000 n 
-0000077078 00000 n 
-0000084690 00000 n 
-0000087081 00000 n 
-0000087242 00000 n 
-0000087402 00000 n 
-0000087563 00000 n 
-0000087723 00000 n 
-0000087884 00000 n 
-0000088045 00000 n 
-0000088206 00000 n 
-0000088366 00000 n 
-0000088522 00000 n 
-0000088676 00000 n 
-0000088832 00000 n 
-0000088988 00000 n 
-0000089142 00000 n 
-0000089297 00000 n 
-0000089453 00000 n 
-0000089608 00000 n 
-0000089764 00000 n 
-0000089925 00000 n 
-0000090086 00000 n 
-0000090247 00000 n 
-0000090403 00000 n 
-0000090564 00000 n 
-0000090720 00000 n 
-0000090876 00000 n 
-0000091032 00000 n 
-0000091188 00000 n 
-0000091349 00000 n 
-0000091510 00000 n 
-0000091671 00000 n 
-0000091825 00000 n 
-0000091981 00000 n 
-0000092137 00000 n 
-0000093556 00000 n 
-0000092362 00000 n 
-0000086482 00000 n 
-0000084856 00000 n 
-0000092298 00000 n 
-0000093711 00000 n 
-0000093872 00000 n 
-0000094038 00000 n 
-0000094198 00000 n 
-0000094364 00000 n 
-0000094525 00000 n 
-0000094691 00000 n 
-0000094852 00000 n 
-0000095018 00000 n 
-0000095179 00000 n 
-0000095335 00000 n 
-0000095496 00000 n 
-0000095650 00000 n 
-0000095803 00000 n 
-0000095958 00000 n 
-0000096178 00000 n 
-0000093284 00000 n 
-0000092464 00000 n 
-0000096114 00000 n 
-0000096561 00000 n 
-0000096381 00000 n 
-0000096280 00000 n 
-0000096497 00000 n 
-0003375605 00000 n 
-0000098209 00000 n 
-0000098365 00000 n 
-0000098521 00000 n 
-0000098677 00000 n 
-0000098829 00000 n 
-0000098985 00000 n 
-0000099140 00000 n 
-0000099296 00000 n 
-0000099452 00000 n 
-0000099607 00000 n 
-0000099763 00000 n 
-0000099918 00000 n 
-0000100074 00000 n 
-0000100230 00000 n 
-0000100386 00000 n 
-0000100542 00000 n 
-0000100698 00000 n 
-0000100854 00000 n 
-0000101010 00000 n 
-0000101165 00000 n 
-0000101321 00000 n 
-0000101478 00000 n 
-0000103545 00000 n 
-0000101761 00000 n 
-0000097883 00000 n 
-0000096603 00000 n 
-0000101635 00000 n 
-0000192817 00000 n 
-0000225051 00000 n 
-0000231142 00000 n 
-0000236393 00000 n 
-0000266309 00000 n 
-0000312180 00000 n 
-0000340132 00000 n 
-0000343784 00000 n 
-0000348165 00000 n 
-0000383124 00000 n 
-0000385508 00000 n 
-0000466046 00000 n 
-0000471474 00000 n 
-0000477226 00000 n 
-0000481471 00000 n 
-0000482494 00000 n 
-0000483898 00000 n 
-0000485093 00000 n 
-0000486154 00000 n 
-0000487202 00000 n 
-0000488389 00000 n 
-0000488515 00000 n 
-0000103701 00000 n 
-0000103858 00000 n 
-0000104014 00000 n 
-0000104168 00000 n 
-0000104322 00000 n 
-0000104478 00000 n 
-0000104634 00000 n 
-0000104789 00000 n 
-0000104945 00000 n 
-0000105101 00000 n 
-0000105257 00000 n 
-0000105414 00000 n 
-0000105571 00000 n 
-0000105728 00000 n 
-0000105885 00000 n 
-0000106042 00000 n 
-0000106197 00000 n 
-0000106350 00000 n 
-0000106507 00000 n 
-0000106662 00000 n 
-0000106818 00000 n 
-0000106974 00000 n 
-0000107130 00000 n 
-0000107286 00000 n 
-0000107442 00000 n 
-0000107597 00000 n 
-0000107753 00000 n 
-0000107909 00000 n 
-0000109966 00000 n 
-0000108129 00000 n 
-0000103156 00000 n 
-0000101877 00000 n 
-0000108065 00000 n 
-0000489673 00000 n 
-0000490810 00000 n 
-0000558058 00000 n 
-0000564121 00000 n 
-0000570222 00000 n 
-0000575523 00000 n 
-0000576035 00000 n 
-0000576546 00000 n 
-0000595462 00000 n 
-0000596605 00000 n 
-0000597742 00000 n 
-0000598930 00000 n 
-0000599965 00000 n 
-0000600986 00000 n 
-0000602125 00000 n 
-0000603242 00000 n 
-0000604450 00000 n 
-0000605482 00000 n 
-0000606593 00000 n 
-0000704830 00000 n 
-0000841283 00000 n 
-0000842322 00000 n 
-0000843378 00000 n 
-0000844430 00000 n 
-0000848623 00000 n 
-0000853204 00000 n 
-0000858511 00000 n 
-0000864784 00000 n 
-0000869604 00000 n 
-0000110121 00000 n 
-0000110278 00000 n 
-0000110434 00000 n 
-0000110590 00000 n 
-0000110746 00000 n 
-0000110902 00000 n 
-0000111057 00000 n 
-0000111213 00000 n 
-0000111368 00000 n 
-0000111524 00000 n 
-0000111681 00000 n 
-0000111837 00000 n 
-0000111993 00000 n 
-0000112149 00000 n 
-0000112305 00000 n 
-0000112460 00000 n 
-0000112616 00000 n 
-0000112770 00000 n 
-0000112927 00000 n 
-0000113084 00000 n 
-0000113240 00000 n 
-0000115220 00000 n 
-0000113461 00000 n 
-0000109640 00000 n 
-0000108231 00000 n 
-0000113397 00000 n 
-0000874221 00000 n 
-0000876136 00000 n 
-0000955640 00000 n 
-0000957000 00000 n 
-0000962425 00000 n 
-0000967847 00000 n 
-0000972307 00000 n 
-0000978600 00000 n 
-0000984639 00000 n 
-0001333523 00000 n 
-0001337527 00000 n 
-0001337654 00000 n 
-0001338713 00000 n 
-0001342977 00000 n 
-0001349698 00000 n 
-0001356199 00000 n 
-0001362505 00000 n 
-0001363782 00000 n 
-0001367503 00000 n 
-0001368526 00000 n 
-0001369983 00000 n 
-0001370109 00000 n 
-0000115375 00000 n 
-0000115531 00000 n 
-0000115687 00000 n 
-0000115843 00000 n 
-0000115999 00000 n 
-0000116155 00000 n 
-0000116311 00000 n 
-0000116468 00000 n 
-0000116625 00000 n 
-0000116782 00000 n 
-0000116939 00000 n 
-0000117096 00000 n 
-0000117253 00000 n 
-0000117410 00000 n 
-0000117567 00000 n 
-0000117723 00000 n 
-0000117879 00000 n 
-0000118037 00000 n 
-0000118195 00000 n 
-0000118353 00000 n 
-0000118510 00000 n 
-0000118668 00000 n 
-0000118826 00000 n 
-0000118984 00000 n 
-0000119142 00000 n 
-0000119300 00000 n 
-0000119457 00000 n 
-0000119614 00000 n 
-0000121215 00000 n 
-0000119835 00000 n 
-0000114831 00000 n 
-0000113563 00000 n 
-0000119771 00000 n 
-0001531294 00000 n 
-0001537408 00000 n 
-0001540821 00000 n 
-0001542123 00000 n 
-0001543139 00000 n 
-0001544209 00000 n 
-0001545289 00000 n 
-0001559539 00000 n 
-0001594341 00000 n 
-0001595725 00000 n 
-0001600847 00000 n 
-0001606914 00000 n 
-0001612831 00000 n 
-0001618527 00000 n 
-0001623109 00000 n 
-0001626058 00000 n 
-0001626984 00000 n 
-0001628541 00000 n 
-0001629850 00000 n 
-0001631295 00000 n 
-0001632826 00000 n 
-0001634070 00000 n 
-0001635383 00000 n 
-0001637186 00000 n 
-0001638607 00000 n 
-0001639832 00000 n 
-0001730153 00000 n 
-0001740383 00000 n 
-0001741663 00000 n 
-0000121372 00000 n 
-0000121528 00000 n 
-0000121684 00000 n 
-0000121841 00000 n 
-0000121998 00000 n 
-0000122154 00000 n 
-0000122311 00000 n 
-0000122468 00000 n 
-0000122625 00000 n 
-0000122782 00000 n 
-0000122939 00000 n 
-0000123095 00000 n 
-0000123252 00000 n 
-0000123473 00000 n 
-0000120961 00000 n 
-0000119937 00000 n 
-0000123409 00000 n 
-0001746425 00000 n 
-0001746552 00000 n 
-0002536458 00000 n 
-0002537956 00000 n 
-0002539147 00000 n 
-0002539275 00000 n 
-0002540739 00000 n 
-0002542111 00000 n 
-0002543476 00000 n 
-0002544975 00000 n 
-0002546153 00000 n 
-0002547272 00000 n 
-0002548634 00000 n 
-0002548760 00000 n 
-0000123856 00000 n 
-0000123676 00000 n 
-0000123575 00000 n 
-0000123792 00000 n 
-0003375730 00000 n 
-0000125417 00000 n 
-0000125561 00000 n 
-0000125714 00000 n 
-0000125867 00000 n 
-0000126011 00000 n 
-0000126164 00000 n 
-0000126309 00000 n 
-0000126462 00000 n 
-0000126608 00000 n 
-0000126761 00000 n 
-0000126907 00000 n 
-0000127060 00000 n 
-0000127213 00000 n 
-0000127366 00000 n 
-0000127512 00000 n 
-0000127665 00000 n 
-0000127818 00000 n 
-0000127971 00000 n 
-0000128124 00000 n 
-0000128277 00000 n 
-0000130408 00000 n 
-0000128556 00000 n 
-0000125109 00000 n 
-0000123898 00000 n 
-0000128430 00000 n 
-0003156070 00000 n 
-0000215740 00000 n 
-0000258506 00000 n 
-0003156036 00000 n 
-0000305961 00000 n 
-0003156002 00000 n 
-0000374339 00000 n 
-0003155968 00000 n 
-0000526691 00000 n 
-0003155934 00000 n 
-0000644412 00000 n 
-0000695758 00000 n 
-0000809563 00000 n 
-0003155900 00000 n 
-0000912958 00000 n 
-0000922141 00000 n 
-0000922269 00000 n 
-0000933006 00000 n 
-0000933134 00000 n 
-0001085739 00000 n 
-0000130560 00000 n 
-0000130706 00000 n 
-0000130858 00000 n 
-0000131011 00000 n 
-0000131164 00000 n 
-0000131310 00000 n 
-0000131463 00000 n 
-0000131615 00000 n 
-0000131761 00000 n 
-0000131915 00000 n 
-0000132068 00000 n 
-0000132222 00000 n 
-0000132376 00000 n 
-0000132530 00000 n 
-0000132684 00000 n 
-0000132838 00000 n 
-0000132992 00000 n 
-0000133146 00000 n 
-0000133300 00000 n 
-0000133454 00000 n 
-0000133609 00000 n 
-0000133754 00000 n 
-0000133908 00000 n 
-0000134062 00000 n 
-0000134212 00000 n 
-0000134366 00000 n 
-0000134520 00000 n 
-0000134674 00000 n 
-0000134892 00000 n 
-0000130019 00000 n 
-0000128658 00000 n 
-0000134828 00000 n 
-0001186358 00000 n 
-0003155866 00000 n 
-0001212203 00000 n 
-0001240602 00000 n 
-0001271841 00000 n 
-0003155832 00000 n 
-0001442341 00000 n 
-0001474968 00000 n 
-0003155798 00000 n 
-0001831092 00000 n 
-0001863418 00000 n 
-0001890590 00000 n 
-0001890718 00000 n 
-0001912630 00000 n 
-0002019541 00000 n 
-0002095569 00000 n 
-0002189066 00000 n 
-0002275659 00000 n 
-0002353100 00000 n 
-0002433478 00000 n 
-0002525934 00000 n 
-0003155764 00000 n 
-0002594410 00000 n 
-0002620760 00000 n 
-0002654742 00000 n 
-0002674197 00000 n 
-0002690559 00000 n 
-0002713230 00000 n 
-0002730411 00000 n 
-0000136406 00000 n 
-0000136558 00000 n 
-0000136702 00000 n 
-0000136854 00000 n 
-0000136999 00000 n 
-0000137151 00000 n 
-0000137303 00000 n 
-0000137449 00000 n 
-0000137601 00000 n 
-0000137747 00000 n 
-0000137899 00000 n 
-0000138051 00000 n 
-0000138203 00000 n 
-0000138355 00000 n 
-0000138501 00000 n 
-0000138653 00000 n 
-0000138799 00000 n 
-0000138952 00000 n 
-0000139098 00000 n 
-0000139251 00000 n 
-0000139530 00000 n 
-0000136098 00000 n 
-0000134994 00000 n 
-0000139404 00000 n 
-0000175085 00000 n 
-0000258634 00000 n 
-0000359106 00000 n 
-0000414667 00000 n 
-0000532934 00000 n 
-0000647466 00000 n 
-0000699188 00000 n 
-0000738735 00000 n 
-0000809691 00000 n 
-0001483440 00000 n 
-0003155730 00000 n 
-0001761019 00000 n 
-0002623764 00000 n 
-0002629931 00000 n 
-0000139913 00000 n 
-0000139733 00000 n 
-0000139632 00000 n 
-0000139849 00000 n 
-0000142280 00000 n 
-0000141846 00000 n 
-0000139955 00000 n 
-0000141962 00000 n 
-0000142026 00000 n 
-0000142090 00000 n 
-0000142216 00000 n 
-0000144867 00000 n 
-0000144687 00000 n 
-0000142382 00000 n 
-0000144803 00000 n 
-0003375855 00000 n 
-0000145743 00000 n 
-0000145563 00000 n 
-0000144983 00000 n 
-0000145679 00000 n 
-0000148360 00000 n 
-0000148052 00000 n 
-0000145845 00000 n 
-0000148168 00000 n 
-0000148232 00000 n 
-0000148296 00000 n 
-0000150548 00000 n 
-0000151020 00000 n 
-0000150411 00000 n 
-0000148462 00000 n 
-0000150700 00000 n 
-0000150764 00000 n 
-0000150828 00000 n 
-0000150892 00000 n 
-0000150956 00000 n 
-0000175149 00000 n 
-0000153922 00000 n 
-0000153486 00000 n 
-0000151150 00000 n 
-0000153602 00000 n 
-0000153666 00000 n 
-0000153730 00000 n 
-0000153794 00000 n 
-0000153858 00000 n 
-0003374915 00000 n 
-0000156561 00000 n 
-0000156253 00000 n 
-0000154066 00000 n 
-0000156369 00000 n 
-0000156433 00000 n 
-0000156497 00000 n 
-0003374187 00000 n 
-0000159075 00000 n 
-0000158895 00000 n 
-0000156719 00000 n 
-0000159011 00000 n 
-0003371991 00000 n 
-0003375980 00000 n 
-0000161966 00000 n 
-0000161786 00000 n 
-0000159233 00000 n 
-0000161902 00000 n 
-0000164593 00000 n 
-0000164838 00000 n 
-0000164456 00000 n 
-0000162096 00000 n 
-0000164774 00000 n 
-0003373012 00000 n 
-0003372868 00000 n 
-0003372431 00000 n 
-0003375062 00000 n 
-0000167308 00000 n 
-0000167128 00000 n 
-0000165010 00000 n 
-0000167244 00000 n 
-0000169997 00000 n 
-0000169817 00000 n 
-0000167424 00000 n 
-0000169933 00000 n 
-0000172470 00000 n 
-0000172162 00000 n 
-0000170113 00000 n 
-0000172278 00000 n 
-0000172342 00000 n 
-0000172406 00000 n 
-0000175213 00000 n 
-0000174905 00000 n 
-0000172614 00000 n 
-0000175021 00000 n 
-0003376105 00000 n 
-0000175760 00000 n 
-0000175582 00000 n 
-0000175343 00000 n 
-0000176051 00000 n 
-0000175935 00000 n 
-0000175834 00000 n 
-0000177904 00000 n 
-0000178406 00000 n 
-0000177767 00000 n 
-0000176093 00000 n 
-0000178088 00000 n 
-0000178152 00000 n 
-0000178278 00000 n 
-0000178342 00000 n 
-0000178859 00000 n 
-0000178679 00000 n 
-0000178578 00000 n 
-0000178795 00000 n 
-0000181182 00000 n 
-0000180750 00000 n 
-0000178901 00000 n 
-0000180866 00000 n 
-0003373597 00000 n 
-0000180992 00000 n 
-0000181118 00000 n 
-0003373157 00000 n 
-0000186752 00000 n 
-0000183835 00000 n 
-0000183404 00000 n 
-0000181340 00000 n 
-0000183520 00000 n 
-0000183646 00000 n 
-0000183772 00000 n 
-0003376230 00000 n 
-0000187111 00000 n 
-0000186615 00000 n 
-0000183979 00000 n 
-0000186921 00000 n 
-0000187047 00000 n 
-0000189386 00000 n 
-0000189230 00000 n 
-0000190062 00000 n 
-0000189084 00000 n 
-0000187311 00000 n 
-0000189554 00000 n 
-0000189680 00000 n 
-0000189744 00000 n 
-0000189808 00000 n 
-0000189872 00000 n 
-0000189935 00000 n 
-0000189998 00000 n 
-0000192881 00000 n 
-0000193965 00000 n 
-0000192637 00000 n 
-0000190248 00000 n 
-0000192753 00000 n 
-0000192945 00000 n 
-0003375208 00000 n 
-0000193009 00000 n 
-0000193073 00000 n 
-0000193137 00000 n 
-0000193201 00000 n 
-0000193265 00000 n 
-0000193329 00000 n 
-0000193393 00000 n 
-0000193456 00000 n 
-0000193520 00000 n 
-0000193583 00000 n 
-0000193647 00000 n 
-0000193711 00000 n 
-0000193775 00000 n 
-0000193901 00000 n 
-0000196092 00000 n 
-0000195720 00000 n 
-0000194122 00000 n 
-0000195836 00000 n 
-0000195900 00000 n 
-0000195964 00000 n 
-0000196028 00000 n 
-0000199260 00000 n 
-0000198954 00000 n 
-0000196250 00000 n 
-0000199070 00000 n 
-0000199196 00000 n 
-0000202137 00000 n 
-0000202289 00000 n 
-0000202636 00000 n 
-0000201991 00000 n 
-0000199404 00000 n 
-0000202446 00000 n 
-0000202572 00000 n 
-0003376355 00000 n 
-0001796489 00000 n 
-0002353292 00000 n 
-0000205015 00000 n 
-0000206823 00000 n 
-0000205486 00000 n 
-0000204878 00000 n 
-0000202766 00000 n 
-0000205169 00000 n 
-0000205295 00000 n 
-0000205359 00000 n 
-0000205422 00000 n 
-0000215804 00000 n 
-0000215996 00000 n 
-0000206707 00000 n 
-0000205616 00000 n 
-0000215676 00000 n 
-0000215868 00000 n 
-0000215932 00000 n 
-0000210965 00000 n 
-0000211083 00000 n 
-0000211131 00000 n 
-0000211560 00000 n 
-0000211583 00000 n 
-0000211963 00000 n 
-0000215653 00000 n 
-0000218406 00000 n 
-0000218098 00000 n 
-0000216141 00000 n 
-0000218214 00000 n 
-0000218278 00000 n 
-0000218342 00000 n 
-0000220377 00000 n 
-0000220538 00000 n 
-0000220697 00000 n 
-0000221361 00000 n 
-0000220222 00000 n 
-0000218564 00000 n 
-0000220851 00000 n 
-0000220915 00000 n 
-0000220979 00000 n 
-0000221043 00000 n 
-0000221105 00000 n 
-0000221169 00000 n 
-0000221233 00000 n 
-0000221297 00000 n 
-0000225115 00000 n 
-0000231206 00000 n 
-0000224833 00000 n 
-0000227288 00000 n 
-0000224696 00000 n 
-0000221477 00000 n 
-0000224987 00000 n 
-0000225179 00000 n 
-0000225243 00000 n 
-0000225307 00000 n 
-0000225371 00000 n 
-0000225435 00000 n 
-0000225499 00000 n 
-0000225563 00000 n 
-0000225627 00000 n 
-0000225691 00000 n 
-0000225755 00000 n 
-0000225819 00000 n 
-0000225883 00000 n 
-0000225946 00000 n 
-0000226010 00000 n 
-0000226073 00000 n 
-0000226137 00000 n 
-0000226200 00000 n 
-0000226264 00000 n 
-0000226328 00000 n 
-0000226392 00000 n 
-0000226456 00000 n 
-0000226520 00000 n 
-0000226584 00000 n 
-0000226648 00000 n 
-0000226712 00000 n 
-0000226776 00000 n 
-0000226840 00000 n 
-0000226904 00000 n 
-0000226968 00000 n 
-0000227032 00000 n 
-0000227096 00000 n 
-0000227160 00000 n 
-0000227224 00000 n 
-0000233633 00000 n 
-0000230962 00000 n 
-0000227445 00000 n 
-0000231078 00000 n 
-0000231270 00000 n 
-0000231334 00000 n 
-0000231398 00000 n 
-0000231462 00000 n 
-0000231526 00000 n 
-0000231590 00000 n 
-0000231654 00000 n 
-0000231718 00000 n 
-0000231781 00000 n 
-0000231845 00000 n 
-0000231908 00000 n 
-0000231972 00000 n 
-0000232034 00000 n 
-0000232098 00000 n 
-0000232162 00000 n 
-0000232226 00000 n 
-0000232290 00000 n 
-0000232354 00000 n 
-0000232418 00000 n 
-0000232482 00000 n 
-0000232546 00000 n 
-0000232610 00000 n 
-0000232674 00000 n 
-0000232738 00000 n 
-0000232802 00000 n 
-0000232866 00000 n 
-0000232930 00000 n 
-0000232994 00000 n 
-0000233058 00000 n 
-0000233122 00000 n 
-0000233186 00000 n 
-0000233250 00000 n 
-0000233314 00000 n 
-0000233378 00000 n 
-0000233442 00000 n 
-0000233506 00000 n 
-0000233569 00000 n 
-0003376480 00000 n 
-0000235989 00000 n 
-0000236841 00000 n 
-0000235852 00000 n 
-0000233790 00000 n 
-0000236137 00000 n 
-0000236201 00000 n 
-0000236265 00000 n 
-0000236329 00000 n 
-0000236457 00000 n 
-0000236521 00000 n 
-0000236585 00000 n 
-0000236649 00000 n 
-0000236713 00000 n 
-0000236777 00000 n 
-0000242740 00000 n 
-0000240370 00000 n 
-0000239360 00000 n 
-0000236985 00000 n 
-0000239476 00000 n 
-0000239540 00000 n 
-0000239604 00000 n 
-0000239668 00000 n 
-0000239732 00000 n 
-0000239796 00000 n 
-0000239860 00000 n 
-0000239924 00000 n 
-0000239987 00000 n 
-0000240051 00000 n 
-0000240115 00000 n 
-0000240179 00000 n 
-0000240243 00000 n 
-0000240307 00000 n 
-0000243209 00000 n 
-0000242603 00000 n 
-0000240514 00000 n 
-0000242893 00000 n 
-0000243019 00000 n 
-0000243145 00000 n 
-0000245612 00000 n 
-0000245764 00000 n 
-0000248878 00000 n 
-0000246491 00000 n 
-0000245466 00000 n 
-0000243325 00000 n 
-0000245919 00000 n 
-0000246045 00000 n 
-0000246171 00000 n 
-0000246235 00000 n 
-0000246299 00000 n 
-0000246363 00000 n 
-0000246427 00000 n 
-0000258698 00000 n 
-0000258570 00000 n 
-0000258138 00000 n 
-0000258289 00000 n 
-0000258890 00000 n 
-0000248732 00000 n 
-0000246621 00000 n 
-0000258442 00000 n 
-0000258762 00000 n 
-0000258826 00000 n 
-0000252512 00000 n 
-0000252630 00000 n 
-0000252678 00000 n 
-0000253119 00000 n 
-0000253142 00000 n 
-0000253567 00000 n 
-0000253663 00000 n 
-0000258115 00000 n 
-0000266373 00000 n 
-0000260486 00000 n 
-0000260114 00000 n 
-0000259105 00000 n 
-0000260230 00000 n 
-0000260294 00000 n 
-0000260358 00000 n 
-0000260422 00000 n 
-0003376605 00000 n 
-0000263055 00000 n 
-0000262363 00000 n 
-0000260602 00000 n 
-0000262479 00000 n 
-0000262543 00000 n 
-0000262607 00000 n 
-0000262671 00000 n 
-0000262735 00000 n 
-0000262799 00000 n 
-0000262863 00000 n 
-0000262927 00000 n 
-0000262991 00000 n 
-0000267971 00000 n 
-0000266066 00000 n 
-0000263185 00000 n 
-0000266182 00000 n 
-0000266246 00000 n 
-0000266437 00000 n 
-0000266501 00000 n 
-0000266565 00000 n 
-0000266629 00000 n 
-0000266693 00000 n 
-0000266757 00000 n 
-0000266821 00000 n 
-0000266885 00000 n 
-0000266949 00000 n 
-0000267013 00000 n 
-0000267077 00000 n 
-0000267141 00000 n 
-0000267205 00000 n 
-0000267269 00000 n 
-0000267333 00000 n 
-0000267397 00000 n 
-0000267461 00000 n 
-0000267525 00000 n 
-0000267589 00000 n 
-0000267653 00000 n 
-0000267717 00000 n 
-0000267781 00000 n 
-0000267844 00000 n 
-0000267908 00000 n 
-0000270379 00000 n 
-0000270008 00000 n 
-0000268114 00000 n 
-0000270124 00000 n 
-0000270251 00000 n 
-0000270315 00000 n 
-0000273071 00000 n 
-0000272891 00000 n 
-0000270537 00000 n 
-0000273007 00000 n 
-0000275874 00000 n 
-0000275694 00000 n 
-0000273187 00000 n 
-0000275810 00000 n 
-0000277593 00000 n 
-0000277413 00000 n 
-0000276018 00000 n 
-0000277529 00000 n 
-0003376730 00000 n 
-0000279736 00000 n 
-0000280076 00000 n 
-0000279599 00000 n 
-0000277709 00000 n 
-0000279885 00000 n 
-0000280012 00000 n 
-0000282949 00000 n 
-0000282515 00000 n 
-0000280192 00000 n 
-0000282631 00000 n 
-0000282758 00000 n 
-0000282885 00000 n 
-0000285135 00000 n 
-0000289127 00000 n 
-0000285611 00000 n 
-0000284998 00000 n 
-0000283065 00000 n 
-0000285294 00000 n 
-0000285421 00000 n 
-0000285548 00000 n 
-0000288048 00000 n 
-0000289341 00000 n 
-0000287911 00000 n 
-0000285755 00000 n 
-0000289277 00000 n 
-0003371843 00000 n 
-0003373450 00000 n 
-0000288432 00000 n 
-0000288550 00000 n 
-0000288598 00000 n 
-0000289106 00000 n 
-0000340196 00000 n 
-0000291950 00000 n 
-0000292102 00000 n 
-0000292724 00000 n 
-0000291795 00000 n 
-0000289514 00000 n 
-0000292407 00000 n 
-0000292534 00000 n 
-0000292661 00000 n 
-0000292254 00000 n 
-0001428172 00000 n 
-0000294375 00000 n 
-0000306279 00000 n 
-0000294259 00000 n 
-0000292868 00000 n 
-0000305897 00000 n 
-0000306024 00000 n 
-0000306087 00000 n 
-0000306151 00000 n 
-0000306215 00000 n 
-0003376855 00000 n 
-0000300643 00000 n 
-0000300761 00000 n 
-0000300809 00000 n 
-0000301248 00000 n 
-0000301271 00000 n 
-0000301660 00000 n 
-0000305874 00000 n 
-0000308242 00000 n 
-0000308393 00000 n 
-0000308930 00000 n 
-0000308096 00000 n 
-0000306424 00000 n 
-0000308546 00000 n 
-0000308610 00000 n 
-0000308674 00000 n 
-0000308738 00000 n 
-0000308802 00000 n 
-0000308866 00000 n 
-0000343848 00000 n 
-0000348229 00000 n 
-0000310359 00000 n 
-0000310639 00000 n 
-0000310222 00000 n 
-0000309046 00000 n 
-0000310511 00000 n 
-0000310575 00000 n 
-0000312244 00000 n 
-0000312372 00000 n 
-0000312000 00000 n 
-0000310755 00000 n 
-0000312116 00000 n 
-0000312308 00000 n 
-0000314531 00000 n 
-0000315131 00000 n 
-0000314394 00000 n 
-0000312488 00000 n 
-0000314683 00000 n 
-0000314747 00000 n 
-0000314811 00000 n 
-0000314875 00000 n 
-0000314939 00000 n 
-0000315003 00000 n 
-0000315067 00000 n 
-0000316832 00000 n 
-0000317493 00000 n 
-0000316695 00000 n 
-0000315247 00000 n 
-0000316982 00000 n 
-0000317046 00000 n 
-0000317110 00000 n 
-0000317174 00000 n 
-0000317238 00000 n 
-0000317365 00000 n 
-0000317429 00000 n 
-0000318873 00000 n 
-0000318693 00000 n 
-0000317623 00000 n 
-0000318809 00000 n 
-0003376980 00000 n 
-0000320567 00000 n 
-0000320261 00000 n 
-0000318989 00000 n 
-0000320377 00000 n 
-0000320441 00000 n 
-0000320504 00000 n 
-0000322727 00000 n 
-0000322419 00000 n 
-0000320697 00000 n 
-0000322535 00000 n 
-0000322599 00000 n 
-0000322663 00000 n 
-0000325246 00000 n 
-0000325397 00000 n 
-0000325700 00000 n 
-0000326426 00000 n 
-0000325082 00000 n 
-0000322843 00000 n 
-0000325851 00000 n 
-0000325915 00000 n 
-0000325979 00000 n 
-0000325548 00000 n 
-0000326043 00000 n 
-0000326107 00000 n 
-0000326171 00000 n 
-0000326235 00000 n 
-0000326299 00000 n 
-0000326363 00000 n 
-0001796616 00000 n 
-0000329383 00000 n 
-0000328758 00000 n 
-0000326570 00000 n 
-0000328874 00000 n 
-0000328938 00000 n 
-0000329002 00000 n 
-0000329066 00000 n 
-0000329192 00000 n 
-0000329319 00000 n 
-0000331890 00000 n 
-0000331519 00000 n 
-0000329527 00000 n 
-0000331635 00000 n 
-0000331762 00000 n 
-0000331826 00000 n 
-0000334508 00000 n 
-0000334328 00000 n 
-0000332048 00000 n 
-0000334444 00000 n 
-0003377105 00000 n 
-0000337414 00000 n 
-0000336978 00000 n 
-0000334666 00000 n 
-0000337094 00000 n 
-0000337158 00000 n 
-0000337222 00000 n 
-0000337286 00000 n 
-0000337350 00000 n 
-0003371694 00000 n 
-0000338826 00000 n 
-0000338646 00000 n 
-0000337586 00000 n 
-0000338762 00000 n 
-0000340260 00000 n 
-0000339952 00000 n 
-0000338970 00000 n 
-0000340068 00000 n 
-0000345383 00000 n 
-0000343604 00000 n 
-0000340376 00000 n 
-0000343720 00000 n 
-0000343912 00000 n 
-0000343976 00000 n 
-0000344040 00000 n 
-0000344104 00000 n 
-0000344168 00000 n 
-0003372139 00000 n 
-0000344232 00000 n 
-0000344296 00000 n 
-0000344360 00000 n 
-0000344424 00000 n 
-0000344488 00000 n 
-0000344552 00000 n 
-0000344616 00000 n 
-0000344680 00000 n 
-0000344744 00000 n 
-0000344808 00000 n 
-0000344872 00000 n 
-0000344936 00000 n 
-0000345000 00000 n 
-0000345063 00000 n 
-0000345127 00000 n 
-0000345191 00000 n 
-0000345255 00000 n 
-0000345319 00000 n 
-0000350081 00000 n 
-0000347985 00000 n 
-0000345540 00000 n 
-0000348101 00000 n 
-0000348293 00000 n 
-0000348357 00000 n 
-0000348421 00000 n 
-0000348485 00000 n 
-0000348549 00000 n 
-0000348613 00000 n 
-0000348677 00000 n 
-0000348741 00000 n 
-0000348805 00000 n 
-0000348869 00000 n 
-0000348933 00000 n 
-0000348997 00000 n 
-0000349061 00000 n 
-0000349125 00000 n 
-0000349189 00000 n 
-0000349253 00000 n 
-0000349317 00000 n 
-0000349381 00000 n 
-0000349445 00000 n 
-0000349509 00000 n 
-0000349573 00000 n 
-0000349637 00000 n 
-0000349700 00000 n 
-0000349764 00000 n 
-0000349827 00000 n 
-0000349891 00000 n 
-0000349953 00000 n 
-0000350017 00000 n 
-0000350477 00000 n 
-0000350297 00000 n 
-0000350196 00000 n 
-0000350413 00000 n 
-0003377230 00000 n 
-0000352441 00000 n 
-0000352739 00000 n 
-0000353206 00000 n 
-0000352286 00000 n 
-0000350519 00000 n 
-0000352888 00000 n 
-0000353015 00000 n 
-0000352590 00000 n 
-0000353142 00000 n 
-0000356101 00000 n 
-0000355794 00000 n 
-0000353322 00000 n 
-0000355910 00000 n 
-0000356037 00000 n 
-0000358888 00000 n 
-0000360809 00000 n 
-0000359232 00000 n 
-0000358751 00000 n 
-0000356217 00000 n 
-0000359042 00000 n 
-0000359170 00000 n 
-0000374721 00000 n 
-0000360693 00000 n 
-0000359348 00000 n 
-0000374275 00000 n 
-0000374403 00000 n 
-0000374530 00000 n 
-0000374657 00000 n 
-0000369027 00000 n 
-0000369145 00000 n 
-0000369193 00000 n 
-0000369634 00000 n 
-0000369657 00000 n 
-0000370046 00000 n 
-0000374252 00000 n 
-0000377720 00000 n 
-0000377540 00000 n 
-0000374866 00000 n 
-0000377656 00000 n 
-0000380128 00000 n 
-0000380426 00000 n 
-0000382780 00000 n 
-0000380640 00000 n 
-0000379973 00000 n 
-0000377836 00000 n 
-0000380576 00000 n 
-0000380277 00000 n 
-0003377355 00000 n 
-0000383252 00000 n 
-0000382643 00000 n 
-0000380756 00000 n 
-0000382933 00000 n 
-0000383060 00000 n 
-0000383188 00000 n 
-0000385290 00000 n 
-0000385636 00000 n 
-0000385153 00000 n 
-0000383382 00000 n 
-0000385444 00000 n 
-0000385572 00000 n 
-0000388032 00000 n 
-0000388500 00000 n 
-0000387895 00000 n 
-0000385752 00000 n 
-0000388182 00000 n 
-0000388309 00000 n 
-0000388436 00000 n 
-0000391436 00000 n 
-0000391700 00000 n 
-0000391299 00000 n 
-0000388658 00000 n 
-0000391636 00000 n 
-0003374770 00000 n 
-0000393632 00000 n 
-0000394549 00000 n 
-0000393495 00000 n 
-0000391942 00000 n 
-0000393783 00000 n 
-0000393847 00000 n 
-0000393911 00000 n 
-0000393974 00000 n 
-0000394038 00000 n 
-0000394102 00000 n 
-0000394166 00000 n 
-0000394230 00000 n 
-0000394294 00000 n 
-0000394421 00000 n 
-0000394485 00000 n 
-0000396493 00000 n 
-0000396185 00000 n 
-0000394693 00000 n 
-0000396301 00000 n 
-0000396365 00000 n 
-0000396429 00000 n 
-0003377480 00000 n 
-0000398468 00000 n 
-0000398812 00000 n 
-0000398331 00000 n 
-0000396609 00000 n 
-0000398620 00000 n 
-0000398684 00000 n 
-0000398748 00000 n 
-0000466110 00000 n 
-0000400943 00000 n 
-0000401096 00000 n 
-0000401253 00000 n 
-0000401793 00000 n 
-0000400788 00000 n 
-0000398970 00000 n 
-0000401410 00000 n 
-0000401537 00000 n 
-0000401601 00000 n 
-0000401665 00000 n 
-0000401729 00000 n 
-0000471538 00000 n 
-0000477290 00000 n 
-0000481535 00000 n 
-0000403426 00000 n 
-0000403575 00000 n 
-0000404070 00000 n 
-0000403271 00000 n 
-0000401923 00000 n 
-0000403879 00000 n 
-0000403943 00000 n 
-0000404007 00000 n 
-0000403727 00000 n 
-0000405957 00000 n 
-0000405713 00000 n 
-0000404186 00000 n 
-0000405829 00000 n 
-0000405893 00000 n 
-0000408398 00000 n 
-0000407962 00000 n 
-0000406073 00000 n 
-0000408078 00000 n 
-0000408142 00000 n 
-0000408206 00000 n 
-0000408270 00000 n 
-0000408334 00000 n 
-0000409931 00000 n 
-0000409687 00000 n 
-0000408528 00000 n 
-0000409803 00000 n 
-0000409867 00000 n 
-0003377605 00000 n 
-0000412288 00000 n 
-0000412440 00000 n 
-0000412595 00000 n 
-0000412753 00000 n 
-0000412911 00000 n 
-0000413224 00000 n 
-0000413375 00000 n 
-0000413526 00000 n 
-0000413678 00000 n 
-0000413830 00000 n 
-0000413981 00000 n 
-0000414132 00000 n 
-0000414858 00000 n 
-0000412043 00000 n 
-0000410047 00000 n 
-0000414284 00000 n 
-0000414411 00000 n 
-0000414475 00000 n 
-0000414539 00000 n 
-0000414603 00000 n 
-0000413067 00000 n 
-0000414731 00000 n 
-0000414794 00000 n 
-0000483962 00000 n 
-0000485157 00000 n 
-0000486218 00000 n 
-0000487266 00000 n 
-0002539211 00000 n 
-0002539339 00000 n 
-0002540803 00000 n 
-0000489737 00000 n 
-0000490874 00000 n 
-0000488452 00000 n 
-0000488579 00000 n 
-0000417614 00000 n 
-0000417051 00000 n 
-0000414988 00000 n 
-0000417167 00000 n 
-0000417231 00000 n 
-0000417358 00000 n 
-0000417422 00000 n 
-0000417486 00000 n 
-0000417550 00000 n 
-0000419457 00000 n 
-0000418959 00000 n 
-0000417744 00000 n 
-0000419075 00000 n 
-0000419139 00000 n 
-0000419203 00000 n 
-0000419266 00000 n 
-0000419329 00000 n 
-0000419393 00000 n 
-0000421810 00000 n 
-0000421378 00000 n 
-0000419573 00000 n 
-0000421494 00000 n 
-0000421620 00000 n 
-0000421684 00000 n 
-0000421748 00000 n 
-0000424236 00000 n 
-0000423865 00000 n 
-0000421954 00000 n 
-0000423981 00000 n 
-0000424108 00000 n 
-0000424172 00000 n 
-0000425976 00000 n 
-0000425668 00000 n 
-0000424366 00000 n 
-0000425784 00000 n 
-0000425848 00000 n 
-0000425912 00000 n 
-0003377730 00000 n 
-0000428029 00000 n 
-0000428371 00000 n 
-0000427892 00000 n 
-0000426092 00000 n 
-0000428180 00000 n 
-0000428244 00000 n 
-0000428308 00000 n 
-0000430094 00000 n 
-0000429850 00000 n 
-0000428515 00000 n 
-0000429966 00000 n 
-0000430030 00000 n 
-0000431324 00000 n 
-0000431144 00000 n 
-0000430210 00000 n 
-0000431260 00000 n 
-0000433110 00000 n 
-0000432802 00000 n 
-0000431426 00000 n 
-0000432918 00000 n 
-0000432982 00000 n 
-0000433046 00000 n 
-0003371548 00000 n 
-0000435331 00000 n 
-0000435023 00000 n 
-0000433296 00000 n 
-0000435139 00000 n 
-0000435203 00000 n 
-0000435267 00000 n 
-0000437021 00000 n 
-0000437327 00000 n 
-0000436884 00000 n 
-0000435447 00000 n 
-0000437199 00000 n 
-0000437263 00000 n 
-0003377855 00000 n 
-0000438781 00000 n 
-0000438601 00000 n 
-0000437499 00000 n 
-0000438717 00000 n 
-0000440956 00000 n 
-0000440649 00000 n 
-0000438897 00000 n 
-0000440765 00000 n 
-0000440892 00000 n 
-0000443631 00000 n 
-0000443325 00000 n 
-0000441100 00000 n 
-0000443441 00000 n 
-0000443567 00000 n 
-0000449211 00000 n 
-0000449515 00000 n 
-0000446530 00000 n 
-0000446096 00000 n 
-0000443747 00000 n 
-0000446212 00000 n 
-0000446339 00000 n 
-0000446402 00000 n 
-0000446466 00000 n 
-0000452936 00000 n 
-0000453088 00000 n 
-0000450241 00000 n 
-0000449056 00000 n 
-0000446660 00000 n 
-0000449666 00000 n 
-0000449363 00000 n 
-0000449730 00000 n 
-0000449793 00000 n 
-0000449857 00000 n 
-0000449921 00000 n 
-0000449985 00000 n 
-0000450049 00000 n 
-0000450113 00000 n 
-0000450177 00000 n 
-0000453942 00000 n 
-0000452790 00000 n 
-0000450371 00000 n 
-0000453239 00000 n 
-0000453303 00000 n 
-0000453367 00000 n 
-0000453431 00000 n 
-0000453495 00000 n 
-0000453559 00000 n 
-0000453623 00000 n 
-0000453687 00000 n 
-0000453751 00000 n 
-0000453878 00000 n 
-0003377980 00000 n 
-0000456704 00000 n 
-0000456333 00000 n 
-0000454086 00000 n 
-0000456449 00000 n 
-0000456576 00000 n 
-0000456640 00000 n 
-0000459416 00000 n 
-0000459236 00000 n 
-0000456876 00000 n 
-0000459352 00000 n 
-0003373302 00000 n 
-0000461909 00000 n 
-0000461729 00000 n 
-0000459602 00000 n 
-0000461845 00000 n 
-0000464587 00000 n 
-0000464407 00000 n 
-0000462025 00000 n 
-0000464523 00000 n 
-0000466174 00000 n 
-0000465866 00000 n 
-0000464787 00000 n 
-0000465982 00000 n 
-0000474352 00000 n 
-0000471294 00000 n 
-0000466290 00000 n 
-0000471410 00000 n 
-0000471602 00000 n 
-0000471666 00000 n 
-0000471730 00000 n 
-0000471794 00000 n 
-0000471858 00000 n 
-0000471922 00000 n 
-0000471986 00000 n 
-0000472050 00000 n 
-0000472114 00000 n 
-0000472178 00000 n 
-0000472242 00000 n 
-0000472306 00000 n 
-0000472370 00000 n 
-0000472434 00000 n 
-0000472498 00000 n 
-0000472562 00000 n 
-0000472626 00000 n 
-0000472690 00000 n 
-0000472754 00000 n 
-0000472818 00000 n 
-0000472882 00000 n 
-0000472946 00000 n 
-0000473010 00000 n 
-0000473074 00000 n 
-0000473137 00000 n 
-0000473201 00000 n 
-0000473264 00000 n 
-0000473328 00000 n 
-0000473392 00000 n 
-0000473456 00000 n 
-0000473520 00000 n 
-0000473584 00000 n 
-0000473648 00000 n 
-0000473712 00000 n 
-0000473776 00000 n 
-0000473840 00000 n 
-0000473904 00000 n 
-0000473968 00000 n 
-0000474032 00000 n 
-0000474096 00000 n 
-0000474160 00000 n 
-0000474224 00000 n 
-0000474288 00000 n 
-0003378105 00000 n 
-0000479142 00000 n 
-0000477046 00000 n 
-0000474509 00000 n 
-0000477162 00000 n 
-0000477354 00000 n 
-0000477418 00000 n 
-0000477482 00000 n 
-0000477546 00000 n 
-0000477610 00000 n 
-0000477674 00000 n 
-0000477738 00000 n 
-0000477802 00000 n 
-0000477866 00000 n 
-0000477930 00000 n 
-0000477994 00000 n 
-0000478058 00000 n 
-0000478122 00000 n 
-0000478186 00000 n 
-0000478250 00000 n 
-0000478313 00000 n 
-0000478377 00000 n 
-0000478440 00000 n 
-0000478504 00000 n 
-0000478566 00000 n 
-0000478630 00000 n 
-0000478694 00000 n 
-0000478758 00000 n 
-0000478822 00000 n 
-0000478886 00000 n 
-0000478950 00000 n 
-0000479014 00000 n 
-0000479078 00000 n 
-0000482622 00000 n 
-0000481291 00000 n 
-0000479271 00000 n 
-0000481407 00000 n 
-0000481599 00000 n 
-0000481663 00000 n 
-0000481727 00000 n 
-0000481791 00000 n 
-0000481855 00000 n 
-0000481919 00000 n 
-0000481983 00000 n 
-0000482047 00000 n 
-0000482111 00000 n 
-0000482175 00000 n 
-0000482239 00000 n 
-0000482303 00000 n 
-0000482367 00000 n 
-0000482430 00000 n 
-0000482558 00000 n 
-0000484026 00000 n 
-0000483718 00000 n 
-0000482765 00000 n 
-0000483834 00000 n 
-0000485221 00000 n 
-0000484913 00000 n 
-0000484142 00000 n 
-0000485029 00000 n 
-0000486282 00000 n 
-0000485974 00000 n 
-0000485337 00000 n 
-0000486090 00000 n 
-0000487330 00000 n 
-0000487022 00000 n 
-0000486398 00000 n 
-0000487138 00000 n 
-0003378230 00000 n 
-0000488643 00000 n 
-0000488209 00000 n 
-0000487446 00000 n 
-0000488325 00000 n 
-0000489801 00000 n 
-0000489493 00000 n 
-0000488759 00000 n 
-0000489609 00000 n 
-0000490938 00000 n 
-0000490630 00000 n 
-0000489917 00000 n 
-0000490746 00000 n 
-0000491335 00000 n 
-0000491155 00000 n 
-0000491054 00000 n 
-0000491271 00000 n 
-0000493217 00000 n 
-0000493516 00000 n 
-0000493813 00000 n 
-0000494150 00000 n 
-0000493044 00000 n 
-0000491377 00000 n 
-0000493960 00000 n 
-0000494087 00000 n 
-0000493367 00000 n 
-0000493665 00000 n 
-0000608340 00000 n 
-0000496940 00000 n 
-0000496633 00000 n 
-0000494294 00000 n 
-0000496749 00000 n 
-0000496876 00000 n 
-0003378355 00000 n 
-0000499684 00000 n 
-0000499377 00000 n 
-0000497056 00000 n 
-0000499493 00000 n 
-0000499620 00000 n 
-0000502132 00000 n 
-0000502746 00000 n 
-0000501986 00000 n 
-0000499800 00000 n 
-0000502428 00000 n 
-0000502555 00000 n 
-0000502281 00000 n 
-0000502682 00000 n 
-0000505475 00000 n 
-0000505295 00000 n 
-0000502890 00000 n 
-0000505411 00000 n 
-0000507718 00000 n 
-0000508016 00000 n 
-0000510432 00000 n 
-0000508169 00000 n 
-0000529919 00000 n 
-0000530077 00000 n 
-0000530234 00000 n 
-0000530391 00000 n 
-0000530548 00000 n 
-0000530705 00000 n 
-0000530862 00000 n 
-0000531018 00000 n 
-0000531171 00000 n 
-0000531324 00000 n 
-0000531481 00000 n 
-0000531638 00000 n 
-0000531796 00000 n 
-0000531951 00000 n 
-0000532105 00000 n 
-0000532260 00000 n 
-0000532416 00000 n 
-0000532568 00000 n 
-0000532720 00000 n 
-0000508330 00000 n 
-0000509116 00000 n 
-0000507545 00000 n 
-0000505605 00000 n 
-0000508483 00000 n 
-0000508610 00000 n 
-0000507867 00000 n 
-0000508735 00000 n 
-0000508862 00000 n 
-0000508989 00000 n 
-0000509053 00000 n 
-0000526755 00000 n 
-0000532998 00000 n 
-0000526947 00000 n 
-0000510316 00000 n 
-0000509260 00000 n 
-0000526627 00000 n 
-0000526819 00000 n 
-0000526883 00000 n 
-0000520972 00000 n 
-0000521090 00000 n 
-0000521138 00000 n 
-0000521593 00000 n 
-0000521617 00000 n 
-0000522020 00000 n 
-0000526604 00000 n 
-0000533126 00000 n 
-0000529620 00000 n 
-0000527092 00000 n 
-0000532870 00000 n 
-0000533062 00000 n 
-0003378480 00000 n 
-0000558122 00000 n 
-0000564185 00000 n 
-0000570286 00000 n 
-0000575587 00000 n 
-0000576099 00000 n 
-0000576610 00000 n 
-0000595526 00000 n 
-0000596669 00000 n 
-0000597805 00000 n 
-0000598994 00000 n 
-0000600029 00000 n 
-0000601050 00000 n 
-0000602189 00000 n 
-0000603306 00000 n 
-0000604514 00000 n 
-0000605546 00000 n 
-0000537185 00000 n 
-0000537335 00000 n 
-0000537487 00000 n 
-0000535021 00000 n 
-0000534649 00000 n 
-0000533242 00000 n 
-0000534765 00000 n 
-0000534829 00000 n 
-0000534893 00000 n 
-0000534957 00000 n 
-0000538023 00000 n 
-0000537030 00000 n 
-0000535137 00000 n 
-0000537639 00000 n 
-0000537703 00000 n 
-0000537767 00000 n 
-0000537831 00000 n 
-0000537895 00000 n 
-0000537959 00000 n 
-0000540102 00000 n 
-0000540638 00000 n 
-0000539965 00000 n 
-0000538167 00000 n 
-0000540256 00000 n 
-0000540320 00000 n 
-0000540384 00000 n 
-0000540448 00000 n 
-0000540574 00000 n 
-0000543235 00000 n 
-0000542800 00000 n 
-0000540825 00000 n 
-0000542916 00000 n 
-0000543043 00000 n 
-0000543107 00000 n 
-0000543171 00000 n 
-0000545721 00000 n 
-0000546324 00000 n 
-0000545584 00000 n 
-0000543365 00000 n 
-0000545876 00000 n 
-0000545940 00000 n 
-0000546004 00000 n 
-0000546068 00000 n 
-0000546132 00000 n 
-0000546196 00000 n 
-0000546260 00000 n 
-0000606657 00000 n 
-0000548106 00000 n 
-0000547862 00000 n 
-0000546440 00000 n 
-0000547978 00000 n 
-0000548042 00000 n 
-0003378605 00000 n 
-0000549833 00000 n 
-0000549989 00000 n 
-0000552416 00000 n 
-0000552715 00000 n 
-0000550466 00000 n 
-0000549687 00000 n 
-0000548222 00000 n 
-0000550147 00000 n 
-0000550211 00000 n 
-0000550275 00000 n 
-0000550338 00000 n 
-0000550402 00000 n 
-0000560166 00000 n 
-0000553460 00000 n 
-0000552867 00000 n 
-0000553023 00000 n 
-0000553181 00000 n 
-0000553844 00000 n 
-0000552234 00000 n 
-0000550596 00000 n 
-0000553333 00000 n 
-0000552566 00000 n 
-0000553524 00000 n 
-0000553588 00000 n 
-0000553652 00000 n 
-0000553716 00000 n 
-0000553780 00000 n 
-0000560230 00000 n 
-0000557878 00000 n 
-0000553974 00000 n 
-0000557994 00000 n 
-0000558186 00000 n 
-0000558250 00000 n 
-0000558314 00000 n 
-0000558378 00000 n 
-0000558442 00000 n 
-0000558506 00000 n 
-0000558570 00000 n 
-0000558634 00000 n 
-0000558698 00000 n 
-0000558762 00000 n 
-0000558826 00000 n 
-0000558890 00000 n 
-0000558954 00000 n 
-0000559018 00000 n 
-0000559082 00000 n 
-0000559146 00000 n 
-0000559210 00000 n 
-0000559274 00000 n 
-0000559338 00000 n 
-0000559402 00000 n 
-0000559466 00000 n 
-0000559530 00000 n 
-0000559594 00000 n 
-0000559657 00000 n 
-0000559721 00000 n 
-0000559784 00000 n 
-0000559848 00000 n 
-0000559911 00000 n 
-0000559975 00000 n 
-0000560039 00000 n 
-0000565973 00000 n 
-0000563941 00000 n 
-0000560415 00000 n 
-0000564057 00000 n 
-0000564249 00000 n 
-0000564313 00000 n 
-0000564377 00000 n 
-0000564441 00000 n 
-0000564505 00000 n 
-0000564569 00000 n 
-0000564633 00000 n 
-0000564697 00000 n 
-0000564761 00000 n 
-0000564825 00000 n 
-0000564889 00000 n 
-0000564953 00000 n 
-0000565017 00000 n 
-0000565081 00000 n 
-0000565143 00000 n 
-0000565207 00000 n 
-0000565270 00000 n 
-0000565334 00000 n 
-0000565397 00000 n 
-0000565461 00000 n 
-0000565525 00000 n 
-0000565589 00000 n 
-0000565653 00000 n 
-0000565717 00000 n 
-0000565781 00000 n 
-0000565845 00000 n 
-0000565909 00000 n 
-0000572586 00000 n 
-0000570042 00000 n 
-0000566144 00000 n 
-0000570158 00000 n 
-0000570350 00000 n 
-0000570414 00000 n 
-0000570478 00000 n 
-0000570542 00000 n 
-0000570606 00000 n 
-0000570670 00000 n 
-0000570734 00000 n 
-0000570798 00000 n 
-0000570862 00000 n 
-0000570926 00000 n 
-0000570990 00000 n 
-0000571054 00000 n 
-0000571118 00000 n 
-0000571182 00000 n 
-0000571244 00000 n 
-0000571308 00000 n 
-0000571371 00000 n 
-0000571435 00000 n 
-0000571498 00000 n 
-0000571562 00000 n 
-0000571626 00000 n 
-0000571690 00000 n 
-0000571754 00000 n 
-0000571818 00000 n 
-0000571882 00000 n 
-0000571946 00000 n 
-0000572010 00000 n 
-0000572074 00000 n 
-0000572138 00000 n 
-0000572202 00000 n 
-0000572266 00000 n 
-0000572330 00000 n 
-0000572394 00000 n 
-0000572458 00000 n 
-0000572522 00000 n 
-0000577375 00000 n 
-0000575343 00000 n 
-0000572743 00000 n 
-0000575459 00000 n 
-0000575651 00000 n 
-0000575715 00000 n 
-0000575779 00000 n 
-0000575843 00000 n 
-0000575907 00000 n 
-0000575971 00000 n 
-0000576162 00000 n 
-0000576226 00000 n 
-0000576290 00000 n 
-0000576354 00000 n 
-0000576418 00000 n 
-0000576482 00000 n 
-0000576674 00000 n 
-0000576738 00000 n 
-0000576802 00000 n 
-0000576866 00000 n 
-0000576930 00000 n 
-0000576994 00000 n 
-0000577058 00000 n 
-0000577120 00000 n 
-0000577184 00000 n 
-0000577247 00000 n 
-0000577311 00000 n 
-0003378730 00000 n 
-0000579762 00000 n 
-0000580066 00000 n 
-0000580728 00000 n 
-0000579607 00000 n 
-0000577546 00000 n 
-0000580217 00000 n 
-0000580344 00000 n 
-0000580408 00000 n 
-0000580472 00000 n 
-0000579914 00000 n 
-0000580536 00000 n 
-0000580600 00000 n 
-0000580664 00000 n 
-0000584284 00000 n 
-0000583529 00000 n 
-0000580858 00000 n 
-0000583645 00000 n 
-0000583709 00000 n 
-0000583773 00000 n 
-0000583837 00000 n 
-0000583901 00000 n 
-0000583965 00000 n 
-0000584028 00000 n 
-0000584092 00000 n 
-0000584156 00000 n 
-0000584220 00000 n 
-0000586608 00000 n 
-0000586760 00000 n 
-0000586911 00000 n 
-0000587507 00000 n 
-0000586453 00000 n 
-0000584428 00000 n 
-0000587060 00000 n 
-0000587124 00000 n 
-0000587188 00000 n 
-0000587252 00000 n 
-0000587316 00000 n 
-0000587443 00000 n 
-0000589989 00000 n 
-0000589618 00000 n 
-0000587651 00000 n 
-0000589734 00000 n 
-0000589861 00000 n 
-0000589925 00000 n 
-0000592597 00000 n 
-0000592417 00000 n 
-0000590161 00000 n 
-0000592533 00000 n 
-0000594364 00000 n 
-0000594184 00000 n 
-0000592741 00000 n 
-0000594300 00000 n 
-0003378855 00000 n 
-0000595590 00000 n 
-0000595282 00000 n 
-0000594508 00000 n 
-0000595398 00000 n 
-0000596733 00000 n 
-0000596425 00000 n 
-0000595706 00000 n 
-0000596541 00000 n 
-0000597868 00000 n 
-0000597562 00000 n 
-0000596849 00000 n 
-0000597678 00000 n 
-0000599058 00000 n 
-0000598750 00000 n 
-0000597984 00000 n 
-0000598866 00000 n 
-0000600093 00000 n 
-0000599785 00000 n 
-0000599174 00000 n 
-0000599901 00000 n 
-0000601114 00000 n 
-0000600806 00000 n 
-0000600209 00000 n 
-0000600922 00000 n 
-0003378980 00000 n 
-0000602253 00000 n 
-0000601945 00000 n 
-0000601230 00000 n 
-0000602061 00000 n 
-0000603370 00000 n 
-0000603062 00000 n 
-0000602369 00000 n 
-0000603178 00000 n 
-0000604578 00000 n 
-0000604270 00000 n 
-0000603486 00000 n 
-0000604386 00000 n 
-0000605610 00000 n 
-0000605302 00000 n 
-0000604694 00000 n 
-0000605418 00000 n 
-0000606721 00000 n 
-0000606413 00000 n 
-0000605726 00000 n 
-0000606529 00000 n 
-0000607118 00000 n 
-0000606938 00000 n 
-0000606837 00000 n 
-0000607054 00000 n 
-0003379105 00000 n 
-0000608059 00000 n 
-0000610921 00000 n 
-0000608404 00000 n 
-0000607922 00000 n 
-0000607160 00000 n 
-0000608213 00000 n 
-0000612021 00000 n 
-0000610805 00000 n 
-0000608520 00000 n 
-0000611957 00000 n 
-0003374039 00000 n 
-0000611305 00000 n 
-0000611423 00000 n 
-0000611471 00000 n 
-0000611936 00000 n 
-0000614496 00000 n 
-0000614316 00000 n 
-0000612194 00000 n 
-0000614432 00000 n 
-0000616633 00000 n 
-0000616453 00000 n 
-0000614598 00000 n 
-0000616569 00000 n 
-0000619501 00000 n 
-0000619068 00000 n 
-0000616749 00000 n 
-0000619184 00000 n 
-0000619311 00000 n 
-0000619437 00000 n 
-0000622075 00000 n 
-0000621895 00000 n 
-0000619617 00000 n 
-0000622011 00000 n 
-0003379230 00000 n 
-0000624490 00000 n 
-0000628021 00000 n 
-0000625127 00000 n 
-0000624353 00000 n 
-0000622177 00000 n 
-0000624681 00000 n 
-0000624808 00000 n 
-0000624872 00000 n 
-0000624936 00000 n 
-0000625063 00000 n 
-0000628233 00000 n 
-0000631282 00000 n 
-0000628748 00000 n 
-0000627866 00000 n 
-0000625327 00000 n 
-0000628684 00000 n 
-0000628458 00000 n 
-0000631491 00000 n 
-0000631666 00000 n 
-0000631836 00000 n 
-0000632022 00000 n 
-0000632189 00000 n 
-0000632370 00000 n 
-0000632542 00000 n 
-0000632791 00000 n 
-0000631082 00000 n 
-0000628934 00000 n 
-0000632727 00000 n 
-0000635480 00000 n 
-0000635655 00000 n 
-0000636042 00000 n 
-0000635334 00000 n 
-0000632949 00000 n 
-0000635851 00000 n 
-0000635978 00000 n 
-0000644147 00000 n 
-0000643989 00000 n 
-0000638226 00000 n 
-0000644540 00000 n 
-0000638080 00000 n 
-0000636285 00000 n 
-0000644348 00000 n 
-0000644476 00000 n 
-0000639495 00000 n 
-0000639613 00000 n 
-0000639661 00000 n 
-0000640088 00000 n 
-0000640110 00000 n 
-0000640482 00000 n 
-0000643966 00000 n 
-0000647594 00000 n 
-0000647159 00000 n 
-0000644755 00000 n 
-0000647275 00000 n 
-0000647402 00000 n 
-0000647530 00000 n 
-0003379355 00000 n 
-0000650715 00000 n 
-0000650408 00000 n 
-0000647724 00000 n 
-0000650524 00000 n 
-0000650651 00000 n 
-0000653365 00000 n 
-0000653516 00000 n 
-0000654161 00000 n 
-0000653219 00000 n 
-0000650845 00000 n 
-0000653716 00000 n 
-0000653843 00000 n 
-0000653970 00000 n 
-0000654097 00000 n 
-0000789229 00000 n 
-0000657140 00000 n 
-0000657501 00000 n 
-0000657003 00000 n 
-0000654375 00000 n 
-0000657310 00000 n 
-0000657437 00000 n 
-0000661789 00000 n 
-0000659872 00000 n 
-0000659437 00000 n 
-0000657673 00000 n 
-0000659553 00000 n 
-0000659680 00000 n 
-0000659744 00000 n 
-0000659808 00000 n 
-0000662671 00000 n 
-0000661673 00000 n 
-0000660002 00000 n 
-0000662481 00000 n 
-0000662545 00000 n 
-0000662608 00000 n 
-0000662293 00000 n 
-0000662411 00000 n 
-0000662459 00000 n 
-0000666111 00000 n 
-0000664260 00000 n 
-0000663952 00000 n 
-0000662858 00000 n 
-0000664068 00000 n 
-0000664132 00000 n 
-0000664196 00000 n 
-0003379480 00000 n 
-0000666460 00000 n 
-0000665974 00000 n 
-0000664376 00000 n 
-0000666268 00000 n 
-0000666332 00000 n 
-0000666396 00000 n 
-0000704894 00000 n 
-0000668608 00000 n 
-0000668428 00000 n 
-0000666590 00000 n 
-0000668544 00000 n 
-0003372286 00000 n 
-0000670440 00000 n 
-0000670260 00000 n 
-0000668752 00000 n 
-0000670376 00000 n 
-0000672202 00000 n 
-0000671894 00000 n 
-0000670570 00000 n 
-0000672010 00000 n 
-0000672074 00000 n 
-0000672138 00000 n 
-0000674099 00000 n 
-0000674854 00000 n 
-0000673953 00000 n 
-0000672332 00000 n 
-0000674409 00000 n 
-0000674473 00000 n 
-0000674537 00000 n 
-0000674664 00000 n 
-0000674791 00000 n 
-0000674254 00000 n 
-0000677582 00000 n 
-0000676059 00000 n 
-0000674998 00000 n 
-0000676175 00000 n 
-0000676239 00000 n 
-0000676303 00000 n 
-0000676367 00000 n 
-0000676431 00000 n 
-0000676495 00000 n 
-0000676559 00000 n 
-0000676623 00000 n 
-0000676686 00000 n 
-0000676750 00000 n 
-0000676814 00000 n 
-0000676878 00000 n 
-0000676942 00000 n 
-0000677006 00000 n 
-0000677070 00000 n 
-0000677134 00000 n 
-0000677198 00000 n 
-0000677262 00000 n 
-0000677326 00000 n 
-0000677390 00000 n 
-0000677454 00000 n 
-0000677518 00000 n 
-0003379605 00000 n 
-0000695288 00000 n 
-0000678855 00000 n 
-0000695886 00000 n 
-0000678718 00000 n 
-0000677698 00000 n 
-0000695439 00000 n 
-0000695503 00000 n 
-0000695567 00000 n 
-0000695694 00000 n 
-0000695822 00000 n 
-0000689600 00000 n 
-0000689718 00000 n 
-0000689766 00000 n 
-0000690213 00000 n 
-0000690237 00000 n 
-0000690644 00000 n 
-0000690740 00000 n 
-0000695265 00000 n 
-0000698377 00000 n 
-0000698532 00000 n 
-0000698692 00000 n 
-0000698845 00000 n 
-0000699316 00000 n 
-0000698213 00000 n 
-0000696032 00000 n 
-0000698997 00000 n 
-0000699124 00000 n 
-0000699252 00000 n 
-0000701546 00000 n 
-0000701705 00000 n 
-0000702180 00000 n 
-0000701400 00000 n 
-0000699503 00000 n 
-0000701862 00000 n 
-0000701926 00000 n 
-0000701990 00000 n 
-0000702053 00000 n 
-0000702117 00000 n 
-0000841347 00000 n 
-0000704610 00000 n 
-0000707592 00000 n 
-0000705213 00000 n 
-0000704473 00000 n 
-0000702296 00000 n 
-0000704766 00000 n 
-0000705021 00000 n 
-0000705085 00000 n 
-0000705149 00000 n 
-0000843442 00000 n 
-0000708096 00000 n 
-0000707446 00000 n 
-0000705357 00000 n 
-0000707904 00000 n 
-0000707748 00000 n 
-0000707968 00000 n 
-0000708032 00000 n 
-0000844494 00000 n 
-0000709637 00000 n 
-0000709457 00000 n 
-0000708269 00000 n 
-0000709573 00000 n 
-0003379730 00000 n 
-0000711712 00000 n 
-0000711879 00000 n 
-0000712046 00000 n 
-0000712207 00000 n 
-0000712685 00000 n 
-0000711548 00000 n 
-0000709753 00000 n 
-0000712367 00000 n 
-0000712494 00000 n 
-0000712558 00000 n 
-0000712621 00000 n 
-0000848687 00000 n 
-0000853268 00000 n 
-0000869668 00000 n 
-0000874283 00000 n 
-0000714409 00000 n 
-0000714037 00000 n 
-0000712815 00000 n 
-0000714153 00000 n 
-0000714217 00000 n 
-0000714281 00000 n 
-0000714345 00000 n 
-0000716631 00000 n 
-0000716323 00000 n 
-0000714525 00000 n 
-0000716439 00000 n 
-0000716503 00000 n 
-0000716567 00000 n 
-0000718722 00000 n 
-0000718906 00000 n 
-0000719105 00000 n 
-0000719499 00000 n 
-0000718567 00000 n 
-0000716747 00000 n 
-0000719310 00000 n 
-0000719437 00000 n 
-0000721824 00000 n 
-0000721326 00000 n 
-0000719685 00000 n 
-0000721442 00000 n 
-0000721569 00000 n 
-0000721632 00000 n 
-0000721696 00000 n 
-0000721760 00000 n 
-0000723492 00000 n 
-0000724030 00000 n 
-0000723355 00000 n 
-0000722011 00000 n 
-0000723648 00000 n 
-0000723712 00000 n 
-0000723776 00000 n 
-0000723903 00000 n 
-0000723967 00000 n 
-0003379855 00000 n 
-0000727616 00000 n 
-0000725398 00000 n 
-0000725873 00000 n 
-0000725261 00000 n 
-0000724160 00000 n 
-0000725554 00000 n 
-0000725618 00000 n 
-0000725682 00000 n 
-0000725746 00000 n 
-0000725810 00000 n 
-0000727808 00000 n 
-0000727373 00000 n 
-0000725989 00000 n 
-0000727489 00000 n 
-0000727680 00000 n 
-0000727744 00000 n 
-0000729439 00000 n 
-0000729259 00000 n 
-0000727938 00000 n 
-0000729375 00000 n 
-0000731089 00000 n 
-0000730846 00000 n 
-0000729541 00000 n 
-0000730962 00000 n 
-0000731026 00000 n 
-0000733593 00000 n 
-0000733745 00000 n 
-0000736485 00000 n 
-0000734090 00000 n 
-0000733447 00000 n 
-0000731205 00000 n 
-0000733899 00000 n 
-0000734026 00000 n 
-0001925391 00000 n 
-0000736705 00000 n 
-0000736348 00000 n 
-0000734234 00000 n 
-0000736641 00000 n 
-0003379980 00000 n 
-0000738799 00000 n 
-0000739055 00000 n 
-0000738555 00000 n 
-0000736878 00000 n 
-0000738671 00000 n 
-0000738863 00000 n 
-0000738927 00000 n 
-0000738991 00000 n 
-0000740684 00000 n 
-0000740312 00000 n 
-0000739171 00000 n 
-0000740428 00000 n 
-0000740492 00000 n 
-0000740556 00000 n 
-0000740620 00000 n 
-0000742214 00000 n 
-0000742499 00000 n 
-0000742077 00000 n 
-0000740800 00000 n 
-0000742371 00000 n 
-0000742435 00000 n 
-0000876200 00000 n 
-0000743873 00000 n 
-0000743629 00000 n 
-0000742615 00000 n 
-0000743745 00000 n 
-0000743809 00000 n 
-0000745497 00000 n 
-0000745841 00000 n 
-0000745360 00000 n 
-0000743989 00000 n 
-0000745649 00000 n 
-0000745713 00000 n 
-0000745777 00000 n 
-0000747399 00000 n 
-0000747091 00000 n 
-0000745957 00000 n 
-0000747207 00000 n 
-0000747271 00000 n 
-0000747335 00000 n 
-0003380105 00000 n 
-0000749403 00000 n 
-0000749031 00000 n 
-0000747515 00000 n 
-0000749147 00000 n 
-0000749211 00000 n 
-0000749275 00000 n 
-0000749339 00000 n 
-0000751063 00000 n 
-0000750755 00000 n 
-0000749519 00000 n 
-0000750871 00000 n 
-0000750935 00000 n 
-0000750999 00000 n 
-0000752826 00000 n 
-0000752518 00000 n 
-0000751179 00000 n 
-0000752634 00000 n 
-0000752698 00000 n 
-0000752762 00000 n 
-0000754861 00000 n 
-0000754489 00000 n 
-0000752942 00000 n 
-0000754605 00000 n 
-0000754669 00000 n 
-0000754733 00000 n 
-0000754797 00000 n 
-0000756332 00000 n 
-0000756024 00000 n 
-0000754977 00000 n 
-0000756140 00000 n 
-0000756204 00000 n 
-0000756268 00000 n 
-0000758376 00000 n 
-0000758673 00000 n 
-0000758823 00000 n 
-0000759419 00000 n 
-0000758212 00000 n 
-0000756448 00000 n 
-0000758972 00000 n 
-0000759099 00000 n 
-0000759163 00000 n 
-0000759227 00000 n 
-0000758526 00000 n 
-0000759291 00000 n 
-0000759355 00000 n 
-0003380230 00000 n 
-0000761680 00000 n 
-0000761116 00000 n 
-0000759549 00000 n 
-0000761232 00000 n 
-0000761296 00000 n 
-0000761360 00000 n 
-0000761424 00000 n 
-0000761488 00000 n 
-0000761552 00000 n 
-0000761616 00000 n 
-0000763362 00000 n 
-0000763526 00000 n 
-0000763687 00000 n 
-0000764008 00000 n 
-0000764166 00000 n 
-0000764771 00000 n 
-0000763180 00000 n 
-0000761810 00000 n 
-0000764324 00000 n 
-0000764451 00000 n 
-0000764515 00000 n 
-0000763848 00000 n 
-0000764579 00000 n 
-0000764643 00000 n 
-0000764707 00000 n 
-0000858575 00000 n 
-0000766182 00000 n 
-0000765938 00000 n 
-0000764901 00000 n 
-0000766054 00000 n 
-0000766118 00000 n 
-0000768310 00000 n 
-0000767938 00000 n 
-0000766298 00000 n 
-0000768054 00000 n 
-0000768118 00000 n 
-0000768182 00000 n 
-0000768246 00000 n 
-0000769928 00000 n 
-0000769620 00000 n 
-0000768426 00000 n 
-0000769736 00000 n 
-0000769800 00000 n 
-0000769864 00000 n 
-0000771811 00000 n 
-0000771503 00000 n 
-0000770044 00000 n 
-0000771619 00000 n 
-0000771683 00000 n 
-0000771747 00000 n 
-0003380355 00000 n 
-0000774023 00000 n 
-0000774187 00000 n 
-0000774348 00000 n 
-0000774670 00000 n 
-0000775270 00000 n 
-0000773850 00000 n 
-0000771927 00000 n 
-0000774825 00000 n 
-0000774889 00000 n 
-0000774509 00000 n 
-0000774953 00000 n 
-0000775079 00000 n 
-0000775206 00000 n 
-0000864848 00000 n 
-0000776949 00000 n 
-0000776642 00000 n 
-0000775414 00000 n 
-0000776758 00000 n 
-0000776885 00000 n 
-0000779088 00000 n 
-0000779480 00000 n 
-0000778951 00000 n 
-0000777079 00000 n 
-0000779289 00000 n 
-0000779416 00000 n 
-0000782110 00000 n 
-0000782471 00000 n 
-0000781973 00000 n 
-0000779680 00000 n 
-0000782280 00000 n 
-0000782407 00000 n 
-0000784374 00000 n 
-0000783938 00000 n 
-0000782671 00000 n 
-0000784054 00000 n 
-0000784118 00000 n 
-0000784182 00000 n 
-0000784246 00000 n 
-0000784310 00000 n 
-0000785948 00000 n 
-0000786349 00000 n 
-0000785811 00000 n 
-0000784490 00000 n 
-0000786158 00000 n 
-0000786285 00000 n 
-0003380480 00000 n 
-0000788795 00000 n 
-0000788950 00000 n 
-0000789676 00000 n 
-0000788649 00000 n 
-0000786535 00000 n 
-0000789102 00000 n 
-0000789293 00000 n 
-0000789357 00000 n 
-0000789421 00000 n 
-0000789485 00000 n 
-0000789548 00000 n 
-0000789612 00000 n 
-0000809627 00000 n 
-0000809755 00000 n 
-0000792610 00000 n 
-0000795028 00000 n 
-0000793280 00000 n 
-0000792473 00000 n 
-0000789820 00000 n 
-0000792770 00000 n 
-0000792834 00000 n 
-0000792898 00000 n 
-0000792962 00000 n 
-0000793026 00000 n 
-0000793089 00000 n 
-0000793216 00000 n 
-0000809947 00000 n 
-0000794912 00000 n 
-0000793480 00000 n 
-0000809499 00000 n 
-0000809819 00000 n 
-0000809883 00000 n 
-0000812575 00000 n 
-0000811947 00000 n 
-0000810115 00000 n 
-0000812063 00000 n 
-0000812127 00000 n 
-0000812191 00000 n 
-0000812255 00000 n 
-0000812319 00000 n 
-0000812383 00000 n 
-0000812447 00000 n 
-0000812511 00000 n 
-0000815045 00000 n 
-0000815232 00000 n 
-0000815733 00000 n 
-0000814890 00000 n 
-0000812762 00000 n 
-0000815669 00000 n 
-0000815451 00000 n 
-0000821387 00000 n 
-0000821691 00000 n 
-0000818399 00000 n 
-0000817966 00000 n 
-0000815962 00000 n 
-0000818082 00000 n 
-0000818209 00000 n 
-0000818336 00000 n 
-0003380605 00000 n 
-0000822354 00000 n 
-0000821232 00000 n 
-0000818543 00000 n 
-0000821842 00000 n 
-0000821906 00000 n 
-0000821539 00000 n 
-0000821970 00000 n 
-0000822034 00000 n 
-0000822098 00000 n 
-0000822162 00000 n 
-0000822226 00000 n 
-0000822290 00000 n 
-0000825460 00000 n 
-0000824897 00000 n 
-0000822498 00000 n 
-0000825013 00000 n 
-0000825077 00000 n 
-0000825141 00000 n 
-0000825205 00000 n 
-0000825269 00000 n 
-0000825396 00000 n 
-0000830296 00000 n 
-0000827990 00000 n 
-0000827556 00000 n 
-0000825590 00000 n 
-0000827672 00000 n 
-0000827799 00000 n 
-0000827926 00000 n 
-0000830692 00000 n 
-0000830159 00000 n 
-0000828106 00000 n 
-0000830501 00000 n 
-0000830628 00000 n 
-0000833414 00000 n 
-0000833170 00000 n 
-0000830892 00000 n 
-0000833286 00000 n 
-0000833350 00000 n 
-0000835973 00000 n 
-0000835793 00000 n 
-0000833544 00000 n 
-0000835909 00000 n 
-0003380730 00000 n 
-0000838525 00000 n 
-0000838345 00000 n 
-0000836103 00000 n 
-0000838461 00000 n 
-0000840080 00000 n 
-0000839900 00000 n 
-0000838669 00000 n 
-0000840016 00000 n 
-0000841411 00000 n 
-0000841103 00000 n 
-0000840196 00000 n 
-0000841219 00000 n 
-0000842450 00000 n 
-0000842142 00000 n 
-0000841527 00000 n 
-0000842258 00000 n 
-0000842386 00000 n 
-0000843506 00000 n 
-0000843198 00000 n 
-0000842566 00000 n 
-0000843314 00000 n 
-0000844558 00000 n 
-0000844250 00000 n 
-0000843622 00000 n 
-0000844366 00000 n 
-0003380855 00000 n 
-0000850543 00000 n 
-0000848443 00000 n 
-0000844674 00000 n 
-0000848559 00000 n 
-0000848751 00000 n 
-0000848815 00000 n 
-0000848879 00000 n 
-0000848943 00000 n 
-0000849007 00000 n 
-0000849071 00000 n 
-0000849135 00000 n 
-0000849199 00000 n 
-0000849263 00000 n 
-0000849327 00000 n 
-0000849391 00000 n 
-0000849455 00000 n 
-0000849519 00000 n 
-0000849583 00000 n 
-0000849647 00000 n 
-0000849711 00000 n 
-0000849775 00000 n 
-0000849839 00000 n 
-0000849903 00000 n 
-0000849967 00000 n 
-0000850031 00000 n 
-0000850095 00000 n 
-0000850159 00000 n 
-0000850223 00000 n 
-0000850287 00000 n 
-0000850351 00000 n 
-0000850415 00000 n 
-0000850479 00000 n 
-0000854545 00000 n 
-0000853024 00000 n 
-0000850700 00000 n 
-0000853140 00000 n 
-0000853332 00000 n 
-0000853396 00000 n 
-0000853460 00000 n 
-0000853523 00000 n 
-0000853587 00000 n 
-0000853650 00000 n 
-0000853714 00000 n 
-0000853777 00000 n 
-0000853841 00000 n 
-0000853905 00000 n 
-0000853969 00000 n 
-0000854033 00000 n 
-0000854097 00000 n 
-0000854161 00000 n 
-0000854225 00000 n 
-0000854289 00000 n 
-0000854353 00000 n 
-0000854417 00000 n 
-0000854481 00000 n 
-0000860811 00000 n 
-0000858331 00000 n 
-0000854674 00000 n 
-0000858447 00000 n 
-0000858639 00000 n 
-0000858703 00000 n 
-0000858767 00000 n 
-0000858831 00000 n 
-0000858895 00000 n 
-0000858959 00000 n 
-0000859023 00000 n 
-0000859087 00000 n 
-0000859151 00000 n 
-0000859215 00000 n 
-0000859279 00000 n 
-0000859343 00000 n 
-0000859407 00000 n 
-0000859471 00000 n 
-0000859535 00000 n 
-0000859599 00000 n 
-0000859663 00000 n 
-0000859727 00000 n 
-0000859790 00000 n 
-0000859854 00000 n 
-0000859917 00000 n 
-0000859981 00000 n 
-0000860043 00000 n 
-0000860107 00000 n 
-0000860171 00000 n 
-0000860235 00000 n 
-0000860299 00000 n 
-0000860363 00000 n 
-0000860427 00000 n 
-0000860491 00000 n 
-0000860555 00000 n 
-0000860619 00000 n 
-0000860683 00000 n 
-0000860747 00000 n 
-0000867084 00000 n 
-0000864604 00000 n 
-0000860954 00000 n 
-0000864720 00000 n 
-0000864912 00000 n 
-0000864976 00000 n 
-0000865040 00000 n 
-0000865104 00000 n 
-0000865168 00000 n 
-0000865232 00000 n 
-0000865296 00000 n 
-0000865360 00000 n 
-0000865424 00000 n 
-0000865488 00000 n 
-0000865552 00000 n 
-0000865616 00000 n 
-0000865680 00000 n 
-0000865744 00000 n 
-0000865808 00000 n 
-0000865872 00000 n 
-0000865936 00000 n 
-0000866000 00000 n 
-0000866063 00000 n 
-0000866127 00000 n 
-0000866190 00000 n 
-0000866254 00000 n 
-0000866316 00000 n 
-0000866380 00000 n 
-0000866444 00000 n 
-0000866508 00000 n 
-0000866572 00000 n 
-0000866636 00000 n 
-0000866700 00000 n 
-0000866764 00000 n 
-0000866828 00000 n 
-0000866892 00000 n 
-0000866956 00000 n 
-0000867020 00000 n 
-0000871264 00000 n 
-0000869424 00000 n 
-0000867227 00000 n 
-0000869540 00000 n 
-0000869732 00000 n 
-0000869796 00000 n 
-0000869860 00000 n 
-0000869924 00000 n 
-0000869988 00000 n 
-0000870052 00000 n 
-0000870116 00000 n 
-0000870180 00000 n 
-0000870244 00000 n 
-0000870308 00000 n 
-0000870372 00000 n 
-0000870436 00000 n 
-0000870500 00000 n 
-0000870563 00000 n 
-0000870627 00000 n 
-0000870690 00000 n 
-0000870754 00000 n 
-0000870816 00000 n 
-0000870880 00000 n 
-0000870944 00000 n 
-0000871008 00000 n 
-0000871072 00000 n 
-0000871136 00000 n 
-0000871200 00000 n 
-0000876264 00000 n 
-0000874041 00000 n 
-0000871379 00000 n 
-0000874157 00000 n 
-0000874346 00000 n 
-0000874410 00000 n 
-0000874474 00000 n 
-0000874538 00000 n 
-0000874602 00000 n 
-0000874666 00000 n 
-0000874730 00000 n 
-0000874794 00000 n 
-0000874858 00000 n 
-0000874922 00000 n 
-0000874986 00000 n 
-0000875050 00000 n 
-0000875114 00000 n 
-0000875178 00000 n 
-0000875242 00000 n 
-0000875306 00000 n 
-0000875370 00000 n 
-0000875434 00000 n 
-0000875498 00000 n 
-0000875562 00000 n 
-0000875626 00000 n 
-0000875690 00000 n 
-0000875754 00000 n 
-0000875818 00000 n 
-0000875882 00000 n 
-0000875945 00000 n 
-0000876009 00000 n 
-0000876072 00000 n 
-0003380980 00000 n 
-0000878505 00000 n 
-0000878198 00000 n 
-0000876393 00000 n 
-0000878314 00000 n 
-0000878441 00000 n 
-0000880838 00000 n 
-0000881304 00000 n 
-0000880701 00000 n 
-0000878621 00000 n 
-0000880987 00000 n 
-0000881114 00000 n 
-0000881240 00000 n 
-0000883966 00000 n 
-0000884304 00000 n 
-0000883829 00000 n 
-0000881434 00000 n 
-0000884113 00000 n 
-0000884240 00000 n 
-0000886664 00000 n 
-0000887003 00000 n 
-0000886527 00000 n 
-0000884448 00000 n 
-0000886812 00000 n 
-0000886939 00000 n 
-0000889596 00000 n 
-0000889289 00000 n 
-0000887133 00000 n 
-0000889405 00000 n 
-0000889532 00000 n 
-0000891980 00000 n 
-0000892320 00000 n 
-0000891843 00000 n 
-0000889712 00000 n 
-0000892129 00000 n 
-0000892256 00000 n 
-0003381105 00000 n 
-0000894932 00000 n 
-0000894752 00000 n 
-0000892450 00000 n 
-0000894868 00000 n 
-0000897682 00000 n 
-0000897375 00000 n 
-0000895048 00000 n 
-0000897491 00000 n 
-0000897618 00000 n 
-0000900311 00000 n 
-0000900458 00000 n 
-0000900761 00000 n 
-0000900978 00000 n 
-0000900147 00000 n 
-0000897812 00000 n 
-0000900914 00000 n 
-0000900610 00000 n 
-0001085803 00000 n 
-0001186422 00000 n 
-0000903654 00000 n 
-0000903474 00000 n 
-0000901080 00000 n 
-0000903590 00000 n 
-0000912488 00000 n 
-0000905764 00000 n 
-0000913086 00000 n 
-0000905627 00000 n 
-0000903770 00000 n 
-0000912642 00000 n 
-0000912768 00000 n 
-0000912894 00000 n 
-0000913022 00000 n 
-0000908079 00000 n 
-0000908197 00000 n 
-0000908245 00000 n 
-0000908648 00000 n 
-0000908671 00000 n 
-0000909035 00000 n 
-0000912465 00000 n 
-0000921765 00000 n 
-0000914789 00000 n 
-0000921922 00000 n 
-0000918012 00000 n 
-0000922397 00000 n 
-0000914643 00000 n 
-0000913246 00000 n 
-0000922077 00000 n 
-0000922205 00000 n 
-0000922333 00000 n 
-0003381230 00000 n 
-0000915427 00000 n 
-0000915545 00000 n 
-0000915593 00000 n 
-0000915968 00000 n 
-0000915990 00000 n 
-0000916277 00000 n 
-0000917989 00000 n 
-0000918820 00000 n 
-0000918938 00000 n 
-0000918986 00000 n 
-0000919363 00000 n 
-0000919385 00000 n 
-0000919686 00000 n 
-0000919782 00000 n 
-0000921742 00000 n 
-0000932635 00000 n 
-0000923958 00000 n 
-0000932789 00000 n 
-0000928648 00000 n 
-0000933261 00000 n 
-0000923812 00000 n 
-0000922572 00000 n 
-0000932942 00000 n 
-0000933070 00000 n 
-0000933198 00000 n 
-0000924901 00000 n 
-0000925019 00000 n 
-0000925067 00000 n 
-0000925466 00000 n 
-0000925488 00000 n 
-0000925816 00000 n 
-0000925912 00000 n 
-0000928625 00000 n 
-0000929499 00000 n 
-0000929617 00000 n 
-0000929665 00000 n 
-0000930060 00000 n 
-0000930082 00000 n 
-0000930385 00000 n 
-0000932612 00000 n 
-0000935237 00000 n 
-0000935386 00000 n 
-0000935801 00000 n 
-0000935091 00000 n 
-0000933422 00000 n 
-0000935545 00000 n 
-0000935609 00000 n 
-0000935673 00000 n 
-0000935737 00000 n 
-0000955704 00000 n 
-0000937481 00000 n 
-0000938022 00000 n 
-0000937344 00000 n 
-0000935974 00000 n 
-0000937639 00000 n 
-0000937703 00000 n 
-0000937767 00000 n 
-0000937831 00000 n 
-0000937895 00000 n 
-0000937958 00000 n 
-0000957064 00000 n 
-0000939431 00000 n 
-0000939125 00000 n 
-0000938138 00000 n 
-0000939241 00000 n 
-0000939305 00000 n 
-0000939368 00000 n 
-0000940979 00000 n 
-0000943415 00000 n 
-0000943574 00000 n 
-0000941384 00000 n 
-0000940842 00000 n 
-0000939547 00000 n 
-0000941128 00000 n 
-0000941192 00000 n 
-0000941256 00000 n 
-0000941320 00000 n 
-0000987724 00000 n 
-0001086559 00000 n 
-0000944178 00000 n 
-0000943269 00000 n 
-0000941500 00000 n 
-0000943733 00000 n 
-0000943797 00000 n 
-0000943924 00000 n 
-0000944050 00000 n 
-0000944114 00000 n 
-0003381355 00000 n 
-0000962489 00000 n 
-0000978664 00000 n 
-0000946555 00000 n 
-0000946375 00000 n 
-0000944336 00000 n 
-0000946491 00000 n 
-0000949213 00000 n 
-0000949362 00000 n 
-0000949517 00000 n 
-0000949734 00000 n 
-0000949058 00000 n 
-0000946685 00000 n 
-0000949670 00000 n 
-0000952315 00000 n 
-0000952531 00000 n 
-0000952178 00000 n 
-0000949878 00000 n 
-0000952467 00000 n 
-0000954323 00000 n 
-0000954143 00000 n 
-0000952689 00000 n 
-0000954259 00000 n 
-0000955768 00000 n 
-0000955460 00000 n 
-0000954439 00000 n 
-0000955576 00000 n 
-0000957128 00000 n 
-0000956820 00000 n 
-0000955884 00000 n 
-0000956936 00000 n 
-0003381480 00000 n 
-0000965229 00000 n 
-0000962245 00000 n 
-0000957244 00000 n 
-0000962361 00000 n 
-0000962553 00000 n 
-0000962617 00000 n 
-0000962681 00000 n 
-0000962745 00000 n 
-0000962809 00000 n 
-0000962873 00000 n 
-0000962937 00000 n 
-0000963001 00000 n 
-0000963064 00000 n 
-0000963128 00000 n 
-0000963191 00000 n 
-0000963255 00000 n 
-0000963317 00000 n 
-0000963381 00000 n 
-0000963445 00000 n 
-0000963509 00000 n 
-0000963573 00000 n 
-0000963637 00000 n 
-0000963701 00000 n 
-0000963765 00000 n 
-0000963829 00000 n 
-0000963893 00000 n 
-0000963957 00000 n 
-0000964021 00000 n 
-0000964085 00000 n 
-0000964149 00000 n 
-0000964213 00000 n 
-0000964277 00000 n 
-0000964341 00000 n 
-0000964405 00000 n 
-0000964468 00000 n 
-0000964532 00000 n 
-0000964594 00000 n 
-0000964658 00000 n 
-0000964721 00000 n 
-0000964785 00000 n 
-0000964849 00000 n 
-0000964913 00000 n 
-0000964977 00000 n 
-0000965040 00000 n 
-0000965103 00000 n 
-0000965166 00000 n 
-0000969635 00000 n 
-0000967667 00000 n 
-0000965386 00000 n 
-0000967783 00000 n 
-0000967911 00000 n 
-0000967975 00000 n 
-0000968039 00000 n 
-0000968103 00000 n 
-0000968167 00000 n 
-0000968231 00000 n 
-0000968295 00000 n 
-0000968359 00000 n 
-0000968423 00000 n 
-0000968487 00000 n 
-0000968551 00000 n 
-0000968615 00000 n 
-0000968679 00000 n 
-0000968743 00000 n 
-0000968807 00000 n 
-0000968870 00000 n 
-0000968934 00000 n 
-0000968997 00000 n 
-0000969061 00000 n 
-0000969123 00000 n 
-0000969187 00000 n 
-0000969251 00000 n 
-0000969315 00000 n 
-0000969379 00000 n 
-0000969443 00000 n 
-0000969507 00000 n 
-0000969571 00000 n 
-0000974161 00000 n 
-0000972127 00000 n 
-0000969750 00000 n 
-0000972243 00000 n 
-0000972371 00000 n 
-0000972435 00000 n 
-0000972499 00000 n 
-0000972562 00000 n 
-0000972626 00000 n 
-0000972689 00000 n 
-0000972753 00000 n 
-0000972817 00000 n 
-0000972881 00000 n 
-0000972945 00000 n 
-0000973009 00000 n 
-0000973073 00000 n 
-0000973137 00000 n 
-0000973201 00000 n 
-0000973265 00000 n 
-0000973329 00000 n 
-0000973393 00000 n 
-0000973457 00000 n 
-0000973521 00000 n 
-0000973585 00000 n 
-0000973649 00000 n 
-0000973713 00000 n 
-0000973777 00000 n 
-0000973841 00000 n 
-0000973905 00000 n 
-0000973969 00000 n 
-0000974033 00000 n 
-0000974097 00000 n 
-0000981412 00000 n 
-0000978420 00000 n 
-0000974276 00000 n 
-0000978536 00000 n 
-0000978728 00000 n 
-0000978792 00000 n 
-0000978856 00000 n 
-0000978920 00000 n 
-0000978984 00000 n 
-0000979048 00000 n 
-0000979112 00000 n 
-0000979176 00000 n 
-0000979240 00000 n 
-0000979304 00000 n 
-0000979368 00000 n 
-0000979432 00000 n 
-0000979496 00000 n 
-0000979560 00000 n 
-0000979624 00000 n 
-0000979688 00000 n 
-0000979752 00000 n 
-0000979816 00000 n 
-0000979880 00000 n 
-0000979944 00000 n 
-0000980008 00000 n 
-0000980072 00000 n 
-0000980135 00000 n 
-0000980199 00000 n 
-0000980262 00000 n 
-0000980326 00000 n 
-0000980388 00000 n 
-0000980452 00000 n 
-0000980516 00000 n 
-0000980580 00000 n 
-0000980644 00000 n 
-0000980708 00000 n 
-0000980772 00000 n 
-0000980836 00000 n 
-0000980900 00000 n 
-0000980964 00000 n 
-0000981028 00000 n 
-0000981092 00000 n 
-0000981156 00000 n 
-0000981220 00000 n 
-0000981284 00000 n 
-0000981348 00000 n 
-0000987065 00000 n 
-0000984459 00000 n 
-0000981555 00000 n 
-0000984575 00000 n 
-0000984702 00000 n 
-0000984765 00000 n 
-0000984829 00000 n 
-0000984893 00000 n 
-0000984957 00000 n 
-0000985021 00000 n 
-0000985085 00000 n 
-0000985149 00000 n 
-0000985213 00000 n 
-0000985277 00000 n 
-0000985341 00000 n 
-0000985405 00000 n 
-0000985469 00000 n 
-0000985533 00000 n 
-0000985597 00000 n 
-0000985661 00000 n 
-0000985725 00000 n 
-0000985789 00000 n 
-0000985853 00000 n 
-0000985917 00000 n 
-0000985980 00000 n 
-0000986044 00000 n 
-0000986107 00000 n 
-0000986171 00000 n 
-0000986233 00000 n 
-0000986297 00000 n 
-0000986361 00000 n 
-0000986425 00000 n 
-0000986489 00000 n 
-0000986553 00000 n 
-0000986617 00000 n 
-0000986681 00000 n 
-0000986745 00000 n 
-0000986809 00000 n 
-0000986873 00000 n 
-0000986937 00000 n 
-0000987001 00000 n 
-0001085867 00000 n 
-0000987608 00000 n 
-0000987180 00000 n 
-0001085675 00000 n 
-0003381605 00000 n 
-0001186486 00000 n 
-0001086443 00000 n 
-0001086007 00000 n 
-0001186294 00000 n 
-0001186907 00000 n 
-0001186727 00000 n 
-0001186626 00000 n 
-0001186843 00000 n 
-0001187389 00000 n 
-0001187210 00000 n 
-0001186949 00000 n 
-0001187680 00000 n 
-0001187564 00000 n 
-0001187463 00000 n 
-0001189078 00000 n 
-0001188643 00000 n 
-0001187722 00000 n 
-0001188759 00000 n 
-0001188823 00000 n 
-0001188950 00000 n 
-0001189014 00000 n 
-0001189475 00000 n 
-0001189295 00000 n 
-0001189194 00000 n 
-0001189411 00000 n 
-0003381730 00000 n 
-0001191481 00000 n 
-0001191326 00000 n 
-0001193882 00000 n 
-0001192248 00000 n 
-0001191171 00000 n 
-0001189517 00000 n 
-0001191930 00000 n 
-0001192057 00000 n 
-0001192184 00000 n 
-0001191706 00000 n 
-0001212267 00000 n 
-0001212458 00000 n 
-0001193766 00000 n 
-0001192434 00000 n 
-0001212139 00000 n 
-0001212394 00000 n 
-0001215109 00000 n 
-0001214675 00000 n 
-0001212612 00000 n 
-0001214791 00000 n 
-0001214918 00000 n 
-0001215045 00000 n 
-0001217907 00000 n 
-0001217727 00000 n 
-0001215239 00000 n 
-0001217843 00000 n 
-0001220647 00000 n 
-0001220467 00000 n 
-0001218051 00000 n 
-0001220583 00000 n 
-0001223433 00000 n 
-0001222999 00000 n 
-0001220777 00000 n 
-0001223115 00000 n 
-0001223242 00000 n 
-0001223369 00000 n 
-0003381855 00000 n 
-0001226269 00000 n 
-0001225962 00000 n 
-0001223563 00000 n 
-0001226078 00000 n 
-0001226205 00000 n 
-0001228807 00000 n 
-0001231049 00000 n 
-0001229025 00000 n 
-0001228670 00000 n 
-0001226413 00000 n 
-0001228961 00000 n 
-0001240666 00000 n 
-0001239783 00000 n 
-0001239931 00000 n 
-0001240236 00000 n 
-0001240385 00000 n 
-0001242771 00000 n 
-0001240730 00000 n 
-0001230876 00000 n 
-0001229226 00000 n 
-0001240538 00000 n 
-0001240084 00000 n 
-0001235368 00000 n 
-0001235486 00000 n 
-0001235534 00000 n 
-0001235957 00000 n 
-0001235980 00000 n 
-0001236330 00000 n 
-0001239760 00000 n 
-0001333587 00000 n 
-0001242925 00000 n 
-0001243141 00000 n 
-0001242625 00000 n 
-0001240918 00000 n 
-0001243077 00000 n 
-0001337718 00000 n 
-0001338777 00000 n 
-0001245027 00000 n 
-0001245245 00000 n 
-0001244890 00000 n 
-0001243257 00000 n 
-0001245181 00000 n 
-0001337591 00000 n 
-0001247239 00000 n 
-0001247059 00000 n 
-0001245361 00000 n 
-0001247175 00000 n 
-0003381980 00000 n 
-0001248926 00000 n 
-0001248746 00000 n 
-0001247383 00000 n 
-0001248862 00000 n 
-0001250346 00000 n 
-0001250039 00000 n 
-0001249042 00000 n 
-0001250155 00000 n 
-0001250282 00000 n 
-0001252706 00000 n 
-0001252861 00000 n 
-0001253270 00000 n 
-0001252560 00000 n 
-0001250476 00000 n 
-0001253015 00000 n 
-0001253079 00000 n 
-0001253142 00000 n 
-0001253206 00000 n 
-0001343041 00000 n 
-0001254664 00000 n 
-0001254356 00000 n 
-0001253457 00000 n 
-0001254472 00000 n 
-0001254536 00000 n 
-0001254600 00000 n 
-0001255879 00000 n 
-0001255699 00000 n 
-0001254780 00000 n 
-0001255815 00000 n 
-0001257754 00000 n 
-0001258418 00000 n 
-0001257617 00000 n 
-0001255995 00000 n 
-0001257909 00000 n 
-0001257973 00000 n 
-0001258100 00000 n 
-0001258164 00000 n 
-0001258228 00000 n 
-0001258290 00000 n 
-0001258354 00000 n 
-0003382105 00000 n 
-0001349762 00000 n 
-0001260988 00000 n 
-0001261331 00000 n 
-0001260851 00000 n 
-0001258548 00000 n 
-0001261140 00000 n 
-0001261267 00000 n 
-0001271905 00000 n 
-0001262725 00000 n 
-0001272033 00000 n 
-0001262609 00000 n 
-0001261461 00000 n 
-0001271777 00000 n 
-0001271969 00000 n 
-0001266517 00000 n 
-0001266635 00000 n 
-0001266683 00000 n 
-0001267128 00000 n 
-0001267151 00000 n 
-0001267545 00000 n 
-0001271754 00000 n 
-0001273309 00000 n 
-0001273129 00000 n 
-0001272179 00000 n 
-0001273245 00000 n 
-0001277405 00000 n 
-0001275064 00000 n 
-0001274820 00000 n 
-0001273425 00000 n 
-0001274936 00000 n 
-0001275000 00000 n 
-0001277100 00000 n 
-0001277253 00000 n 
-0001278021 00000 n 
-0001276945 00000 n 
-0001275180 00000 n 
-0001277573 00000 n 
-0001277637 00000 n 
-0001277701 00000 n 
-0001277765 00000 n 
-0001277829 00000 n 
-0001277893 00000 n 
-0001277957 00000 n 
-0001356263 00000 n 
-0001280229 00000 n 
-0001279985 00000 n 
-0001278193 00000 n 
-0001280101 00000 n 
-0001280165 00000 n 
-0003382230 00000 n 
-0001281736 00000 n 
-0001281430 00000 n 
-0001280359 00000 n 
-0001281546 00000 n 
-0001281610 00000 n 
-0001281674 00000 n 
-0001283067 00000 n 
-0001282823 00000 n 
-0001281852 00000 n 
-0001282939 00000 n 
-0001283003 00000 n 
-0001284788 00000 n 
-0001284481 00000 n 
-0001283183 00000 n 
-0001284597 00000 n 
-0001284661 00000 n 
-0001284724 00000 n 
-0001286156 00000 n 
-0001285976 00000 n 
-0001284904 00000 n 
-0001286092 00000 n 
-0001287716 00000 n 
-0001287536 00000 n 
-0001286258 00000 n 
-0001287652 00000 n 
-0001288725 00000 n 
-0001288545 00000 n 
-0001287832 00000 n 
-0001288661 00000 n 
-0003382355 00000 n 
-0001289780 00000 n 
-0001289600 00000 n 
-0001288827 00000 n 
-0001289716 00000 n 
-0001292373 00000 n 
-0001292722 00000 n 
-0001292236 00000 n 
-0001289896 00000 n 
-0001292531 00000 n 
-0001292658 00000 n 
-0001362569 00000 n 
-0001294774 00000 n 
-0001294274 00000 n 
-0001292866 00000 n 
-0001294390 00000 n 
-0001294454 00000 n 
-0001294518 00000 n 
-0001294582 00000 n 
-0001294646 00000 n 
-0001294710 00000 n 
-0001296586 00000 n 
-0001296928 00000 n 
-0001296449 00000 n 
-0001294904 00000 n 
-0001296737 00000 n 
-0001296864 00000 n 
-0001363845 00000 n 
-0001298453 00000 n 
-0001298273 00000 n 
-0001297072 00000 n 
-0001298389 00000 n 
-0001300023 00000 n 
-0001300510 00000 n 
-0001299886 00000 n 
-0001298626 00000 n 
-0001300190 00000 n 
-0001300254 00000 n 
-0001300318 00000 n 
-0001300382 00000 n 
-0001300446 00000 n 
-0003382480 00000 n 
-0001302370 00000 n 
-0001301934 00000 n 
-0001300682 00000 n 
-0001302050 00000 n 
-0001302114 00000 n 
-0001302178 00000 n 
-0001302242 00000 n 
-0001302306 00000 n 
-0001304241 00000 n 
-0001306960 00000 n 
-0001304716 00000 n 
-0001304104 00000 n 
-0001302486 00000 n 
-0001304397 00000 n 
-0001304524 00000 n 
-0001304588 00000 n 
-0001304652 00000 n 
-0001367567 00000 n 
-0001307146 00000 n 
-0001307604 00000 n 
-0001310493 00000 n 
-0001308091 00000 n 
-0001306796 00000 n 
-0001304846 00000 n 
-0001307772 00000 n 
-0001307836 00000 n 
-0001307900 00000 n 
-0001308027 00000 n 
-0001307376 00000 n 
-0001310662 00000 n 
-0001310896 00000 n 
-0001310347 00000 n 
-0001308277 00000 n 
-0001310832 00000 n 
-0001313087 00000 n 
-0001313237 00000 n 
-0001313397 00000 n 
-0001316663 00000 n 
-0001314374 00000 n 
-0001312932 00000 n 
-0001311082 00000 n 
-0001313547 00000 n 
-0001313674 00000 n 
-0001313738 00000 n 
-0001313801 00000 n 
-0001313865 00000 n 
-0001313929 00000 n 
-0001313993 00000 n 
-0001314056 00000 n 
-0001314183 00000 n 
-0001314247 00000 n 
-0001314310 00000 n 
-0001368590 00000 n 
-0001316820 00000 n 
-0001317426 00000 n 
-0001316517 00000 n 
-0001314504 00000 n 
-0001316980 00000 n 
-0001317044 00000 n 
-0001317108 00000 n 
-0001317172 00000 n 
-0001317236 00000 n 
-0001317362 00000 n 
-0003382605 00000 n 
-0001370173 00000 n 
-0001319778 00000 n 
-0001319407 00000 n 
-0001317570 00000 n 
-0001319523 00000 n 
-0001319650 00000 n 
-0001319714 00000 n 
-0001322291 00000 n 
-0001322111 00000 n 
-0001319936 00000 n 
-0001322227 00000 n 
-0001324910 00000 n 
-0001324730 00000 n 
-0001322407 00000 n 
-0001324846 00000 n 
-0001327263 00000 n 
-0001327083 00000 n 
-0001325068 00000 n 
-0001327199 00000 n 
-0001329052 00000 n 
-0001328872 00000 n 
-0001327407 00000 n 
-0001328988 00000 n 
-0001336400 00000 n 
-0001333343 00000 n 
-0001329182 00000 n 
-0001333459 00000 n 
-0001333651 00000 n 
-0001333715 00000 n 
-0001333779 00000 n 
-0001333843 00000 n 
-0001333907 00000 n 
-0001333971 00000 n 
-0001334035 00000 n 
-0001334099 00000 n 
-0001334163 00000 n 
-0001334227 00000 n 
-0001334291 00000 n 
-0001334355 00000 n 
-0001334419 00000 n 
-0001334483 00000 n 
-0001334547 00000 n 
-0001334611 00000 n 
-0001334675 00000 n 
-0001334739 00000 n 
-0001334803 00000 n 
-0001334867 00000 n 
-0001334930 00000 n 
-0001334994 00000 n 
-0001335057 00000 n 
-0001335121 00000 n 
-0001335184 00000 n 
-0001335248 00000 n 
-0001335312 00000 n 
-0001335376 00000 n 
-0001335440 00000 n 
-0001335504 00000 n 
-0001335568 00000 n 
-0001335632 00000 n 
-0001335696 00000 n 
-0001335760 00000 n 
-0001335824 00000 n 
-0001335888 00000 n 
-0001335952 00000 n 
-0001336016 00000 n 
-0001336080 00000 n 
-0001336144 00000 n 
-0001336208 00000 n 
-0001336272 00000 n 
-0001336336 00000 n 
-0003382730 00000 n 
-0001337782 00000 n 
-0001337347 00000 n 
-0001336543 00000 n 
-0001337463 00000 n 
-0001338841 00000 n 
-0001338533 00000 n 
-0001337898 00000 n 
-0001338649 00000 n 
-0001345598 00000 n 
-0001342797 00000 n 
-0001338957 00000 n 
-0001342913 00000 n 
-0001343105 00000 n 
-0001343169 00000 n 
-0001343233 00000 n 
-0001343297 00000 n 
-0001343361 00000 n 
-0001343425 00000 n 
-0001343489 00000 n 
-0001343553 00000 n 
-0001343617 00000 n 
-0001343681 00000 n 
-0001343745 00000 n 
-0001343809 00000 n 
-0001343873 00000 n 
-0001343936 00000 n 
-0001344000 00000 n 
-0001344063 00000 n 
-0001344127 00000 n 
-0001344190 00000 n 
-0001344254 00000 n 
-0001344318 00000 n 
-0001344382 00000 n 
-0001344446 00000 n 
-0001344510 00000 n 
-0001344574 00000 n 
-0001344638 00000 n 
-0001344702 00000 n 
-0001344766 00000 n 
-0001344830 00000 n 
-0001344894 00000 n 
-0001344958 00000 n 
-0001345022 00000 n 
-0001345086 00000 n 
-0001345150 00000 n 
-0001345214 00000 n 
-0001345278 00000 n 
-0001345342 00000 n 
-0001345406 00000 n 
-0001345470 00000 n 
-0001345534 00000 n 
-0001352254 00000 n 
-0001349518 00000 n 
-0001345741 00000 n 
-0001349634 00000 n 
-0001349826 00000 n 
-0001349890 00000 n 
-0001349954 00000 n 
-0001350018 00000 n 
-0001350082 00000 n 
-0001350146 00000 n 
-0001350210 00000 n 
-0001350274 00000 n 
-0001350338 00000 n 
-0001350402 00000 n 
-0001350466 00000 n 
-0001350530 00000 n 
-0001350594 00000 n 
-0001350658 00000 n 
-0001350722 00000 n 
-0001350786 00000 n 
-0001350850 00000 n 
-0001350914 00000 n 
-0001350978 00000 n 
-0001351042 00000 n 
-0001351106 00000 n 
-0001351170 00000 n 
-0001351234 00000 n 
-0001351298 00000 n 
-0001351362 00000 n 
-0001351426 00000 n 
-0001351490 00000 n 
-0001351553 00000 n 
-0001351617 00000 n 
-0001351680 00000 n 
-0001351744 00000 n 
-0001351806 00000 n 
-0001351870 00000 n 
-0001351934 00000 n 
-0001351998 00000 n 
-0001352062 00000 n 
-0001352126 00000 n 
-0001352190 00000 n 
-0001358691 00000 n 
-0001356019 00000 n 
-0001352397 00000 n 
-0001356135 00000 n 
-0001356327 00000 n 
-0001356391 00000 n 
-0001356455 00000 n 
-0001356519 00000 n 
-0001356583 00000 n 
-0001356647 00000 n 
-0001356711 00000 n 
-0001356775 00000 n 
-0001356838 00000 n 
-0001356902 00000 n 
-0001356965 00000 n 
-0001357029 00000 n 
-0001357092 00000 n 
-0001357156 00000 n 
-0001357220 00000 n 
-0001357284 00000 n 
-0001357348 00000 n 
-0001357412 00000 n 
-0001357476 00000 n 
-0001357540 00000 n 
-0001357604 00000 n 
-0001357668 00000 n 
-0001357732 00000 n 
-0001357796 00000 n 
-0001357860 00000 n 
-0001357924 00000 n 
-0001357988 00000 n 
-0001358052 00000 n 
-0001358116 00000 n 
-0001358180 00000 n 
-0001358244 00000 n 
-0001358308 00000 n 
-0001358372 00000 n 
-0001358436 00000 n 
-0001358500 00000 n 
-0001358564 00000 n 
-0001358628 00000 n 
-0001364996 00000 n 
-0001362325 00000 n 
-0001358834 00000 n 
-0001362441 00000 n 
-0001362633 00000 n 
-0001362697 00000 n 
-0001362760 00000 n 
-0001362824 00000 n 
-0001362886 00000 n 
-0001362950 00000 n 
-0001363014 00000 n 
-0001363078 00000 n 
-0001363142 00000 n 
-0001363206 00000 n 
-0001363270 00000 n 
-0001363334 00000 n 
-0001363398 00000 n 
-0001363462 00000 n 
-0001363526 00000 n 
-0001363590 00000 n 
-0001363654 00000 n 
-0001363718 00000 n 
-0001363908 00000 n 
-0001363972 00000 n 
-0001364036 00000 n 
-0001364100 00000 n 
-0001364164 00000 n 
-0001364228 00000 n 
-0001364292 00000 n 
-0001364356 00000 n 
-0001364420 00000 n 
-0001364484 00000 n 
-0001364548 00000 n 
-0001364612 00000 n 
-0001364676 00000 n 
-0001364740 00000 n 
-0001364804 00000 n 
-0001364868 00000 n 
-0001364932 00000 n 
-0003382855 00000 n 
-0001368654 00000 n 
-0001367323 00000 n 
-0001365139 00000 n 
-0001367439 00000 n 
-0001367631 00000 n 
-0001367695 00000 n 
-0001367758 00000 n 
-0001367822 00000 n 
-0001367886 00000 n 
-0001367950 00000 n 
-0001368014 00000 n 
-0001368078 00000 n 
-0001368142 00000 n 
-0001368206 00000 n 
-0001368270 00000 n 
-0001368334 00000 n 
-0001368398 00000 n 
-0001368462 00000 n 
-0001370237 00000 n 
-0001369803 00000 n 
-0001368811 00000 n 
-0001369919 00000 n 
-0001370046 00000 n 
-0001372141 00000 n 
-0001371834 00000 n 
-0001370353 00000 n 
-0001371950 00000 n 
-0001372077 00000 n 
-0001374385 00000 n 
-0001374078 00000 n 
-0001372257 00000 n 
-0001374194 00000 n 
-0001374321 00000 n 
-0001376998 00000 n 
-0001376565 00000 n 
-0001374558 00000 n 
-0001376681 00000 n 
-0001376808 00000 n 
-0001376934 00000 n 
-0001379459 00000 n 
-0001379279 00000 n 
-0001377128 00000 n 
-0001379395 00000 n 
-0003382980 00000 n 
-0001381378 00000 n 
-0001381198 00000 n 
-0001379575 00000 n 
-0001381314 00000 n 
-0001382874 00000 n 
-0001382694 00000 n 
-0001381551 00000 n 
-0001382810 00000 n 
-0001385397 00000 n 
-0001385090 00000 n 
-0001382990 00000 n 
-0001385206 00000 n 
-0001385333 00000 n 
-0001387795 00000 n 
-0001387363 00000 n 
-0001385541 00000 n 
-0001387479 00000 n 
-0001387605 00000 n 
-0001387732 00000 n 
-0001389488 00000 n 
-0001389308 00000 n 
-0001387996 00000 n 
-0001389424 00000 n 
-0001391751 00000 n 
-0001392243 00000 n 
-0001391614 00000 n 
-0001389604 00000 n 
-0001391925 00000 n 
-0001392052 00000 n 
-0001392179 00000 n 
-0003383105 00000 n 
-0001395072 00000 n 
-0001394574 00000 n 
-0001392429 00000 n 
-0001394690 00000 n 
-0001394817 00000 n 
-0001394944 00000 n 
-0001395008 00000 n 
-0001397319 00000 n 
-0001398109 00000 n 
-0001397182 00000 n 
-0001395202 00000 n 
-0001397469 00000 n 
-0001397533 00000 n 
-0001397597 00000 n 
-0001397661 00000 n 
-0001397725 00000 n 
-0001397789 00000 n 
-0001397853 00000 n 
-0001397917 00000 n 
-0001397981 00000 n 
-0001398045 00000 n 
-0001400228 00000 n 
-0001400528 00000 n 
-0001401089 00000 n 
-0001400064 00000 n 
-0001398225 00000 n 
-0001400834 00000 n 
-0001400898 00000 n 
-0001401025 00000 n 
-0001400378 00000 n 
-0001400681 00000 n 
-0001403223 00000 n 
-0001403564 00000 n 
-0001403086 00000 n 
-0001401233 00000 n 
-0001403373 00000 n 
-0001403500 00000 n 
-0001405312 00000 n 
-0001405132 00000 n 
-0001403708 00000 n 
-0001405248 00000 n 
-0001406786 00000 n 
-0001406606 00000 n 
-0001405414 00000 n 
-0001406722 00000 n 
-0003383230 00000 n 
-0001408297 00000 n 
-0001408117 00000 n 
-0001406888 00000 n 
-0001408233 00000 n 
-0001410388 00000 n 
-0001410729 00000 n 
-0001410251 00000 n 
-0001408399 00000 n 
-0001410538 00000 n 
-0001410665 00000 n 
-0001413327 00000 n 
-0001412768 00000 n 
-0001410859 00000 n 
-0001412884 00000 n 
-0001413011 00000 n 
-0001413138 00000 n 
-0001413265 00000 n 
-0001415268 00000 n 
-0001418205 00000 n 
-0001415738 00000 n 
-0001415131 00000 n 
-0001413485 00000 n 
-0001415421 00000 n 
-0001415548 00000 n 
-0001415675 00000 n 
-0001418833 00000 n 
-0001418059 00000 n 
-0001415882 00000 n 
-0001418515 00000 n 
-0001418642 00000 n 
-0001418360 00000 n 
-0001418769 00000 n 
-0001421361 00000 n 
-0001421574 00000 n 
-0001421224 00000 n 
-0001418977 00000 n 
-0001421510 00000 n 
-0003383355 00000 n 
-0001424393 00000 n 
-0001423830 00000 n 
-0001421704 00000 n 
-0001423946 00000 n 
-0001424073 00000 n 
-0001424137 00000 n 
-0001424201 00000 n 
-0001424265 00000 n 
-0001424329 00000 n 
-0001426407 00000 n 
-0001426163 00000 n 
-0001424537 00000 n 
-0001426279 00000 n 
-0001426343 00000 n 
-0001428363 00000 n 
-0001427929 00000 n 
-0001426523 00000 n 
-0001428045 00000 n 
-0001428299 00000 n 
-0001430676 00000 n 
-0001430243 00000 n 
-0001428479 00000 n 
-0001430359 00000 n 
-0001430486 00000 n 
-0001430612 00000 n 
-0001433243 00000 n 
-0001435542 00000 n 
-0001433590 00000 n 
-0001433106 00000 n 
-0001430877 00000 n 
-0001433400 00000 n 
-0001433526 00000 n 
-0001442405 00000 n 
-0001443673 00000 n 
-0001442469 00000 n 
-0001435426 00000 n 
-0001433720 00000 n 
-0001442277 00000 n 
-0003383480 00000 n 
-0001437921 00000 n 
-0001438039 00000 n 
-0001438087 00000 n 
-0001438510 00000 n 
-0001438533 00000 n 
-0001438888 00000 n 
-0001442254 00000 n 
-0001475223 00000 n 
-0001443557 00000 n 
-0001442615 00000 n 
-0001474904 00000 n 
-0001475032 00000 n 
-0001475159 00000 n 
-0001477679 00000 n 
-0001477977 00000 n 
-0001478132 00000 n 
-0001478429 00000 n 
-0001478779 00000 n 
-0001477497 00000 n 
-0001475377 00000 n 
-0001478588 00000 n 
-0001478715 00000 n 
-0001477828 00000 n 
-0001478281 00000 n 
-0001480641 00000 n 
-0001480791 00000 n 
-0001481136 00000 n 
-0001480495 00000 n 
-0001478937 00000 n 
-0001480945 00000 n 
-0001481072 00000 n 
-0001483504 00000 n 
-0001483568 00000 n 
-0001483260 00000 n 
-0001481280 00000 n 
-0001483376 00000 n 
-0001486132 00000 n 
-0001486285 00000 n 
-0001486439 00000 n 
-0001486596 00000 n 
-0001487131 00000 n 
-0001485968 00000 n 
-0001483769 00000 n 
-0001486747 00000 n 
-0001486811 00000 n 
-0001486875 00000 n 
-0001486939 00000 n 
-0001487003 00000 n 
-0001487067 00000 n 
-0001531358 00000 n 
-0001540884 00000 n 
-0001543203 00000 n 
-0001544273 00000 n 
-0001488836 00000 n 
-0001489181 00000 n 
-0001488699 00000 n 
-0001487318 00000 n 
-0001488989 00000 n 
-0001489053 00000 n 
-0001489117 00000 n 
-0003383605 00000 n 
-0001490868 00000 n 
-0001490688 00000 n 
-0001489297 00000 n 
-0001490804 00000 n 
-0001492449 00000 n 
-0001492269 00000 n 
-0001490984 00000 n 
-0001492385 00000 n 
-0001494223 00000 n 
-0001494631 00000 n 
-0001494086 00000 n 
-0001492551 00000 n 
-0001494375 00000 n 
-0001494439 00000 n 
-0001494503 00000 n 
-0001494567 00000 n 
-0001545353 00000 n 
-0001496195 00000 n 
-0001495887 00000 n 
-0001494747 00000 n 
-0001496003 00000 n 
-0001496067 00000 n 
-0001496131 00000 n 
-0001497734 00000 n 
-0001497426 00000 n 
-0001496311 00000 n 
-0001497542 00000 n 
-0001497606 00000 n 
-0001497670 00000 n 
-0001499375 00000 n 
-0001499067 00000 n 
-0001497850 00000 n 
-0001499183 00000 n 
-0001499247 00000 n 
-0001499311 00000 n 
-0003383730 00000 n 
-0001500992 00000 n 
-0001501335 00000 n 
-0001500855 00000 n 
-0001499491 00000 n 
-0001501143 00000 n 
-0001501207 00000 n 
-0001501271 00000 n 
-0001506583 00000 n 
-0001502802 00000 n 
-0001502558 00000 n 
-0001501451 00000 n 
-0001502674 00000 n 
-0001502738 00000 n 
-0001506238 00000 n 
-0001504936 00000 n 
-0001504500 00000 n 
-0001502918 00000 n 
-0001504616 00000 n 
-0001504680 00000 n 
-0001504744 00000 n 
-0001504808 00000 n 
-0001504872 00000 n 
-0001506647 00000 n 
-0001506101 00000 n 
-0001505080 00000 n 
-0001506393 00000 n 
-0001506457 00000 n 
-0001507682 00000 n 
-0001507502 00000 n 
-0001506777 00000 n 
-0001507618 00000 n 
-0001509633 00000 n 
-0001510106 00000 n 
-0001509496 00000 n 
-0001507784 00000 n 
-0001509788 00000 n 
-0001509915 00000 n 
-0001509979 00000 n 
-0001510043 00000 n 
-0003383855 00000 n 
-0001511501 00000 n 
-0001511129 00000 n 
-0001510250 00000 n 
-0001511245 00000 n 
-0001511309 00000 n 
-0001511373 00000 n 
-0001511437 00000 n 
-0001513343 00000 n 
-0001513099 00000 n 
-0001511617 00000 n 
-0001513215 00000 n 
-0001513279 00000 n 
-0001514985 00000 n 
-0001514677 00000 n 
-0001513459 00000 n 
-0001514793 00000 n 
-0001514857 00000 n 
-0001514921 00000 n 
-0001517321 00000 n 
-0001516760 00000 n 
-0001515101 00000 n 
-0001516876 00000 n 
-0001516940 00000 n 
-0001517066 00000 n 
-0001517193 00000 n 
-0001517257 00000 n 
-0001519629 00000 n 
-0001519449 00000 n 
-0001517479 00000 n 
-0001519565 00000 n 
-0001522184 00000 n 
-0001522004 00000 n 
-0001519773 00000 n 
-0001522120 00000 n 
-0003383980 00000 n 
-0001524631 00000 n 
-0001524451 00000 n 
-0001522300 00000 n 
-0001524567 00000 n 
-0001525857 00000 n 
-0001525677 00000 n 
-0001524761 00000 n 
-0001525793 00000 n 
-0001534098 00000 n 
-0001531114 00000 n 
-0001525959 00000 n 
-0001531230 00000 n 
-0001531422 00000 n 
-0001531486 00000 n 
-0001531550 00000 n 
-0001531614 00000 n 
-0001531678 00000 n 
-0001531742 00000 n 
-0001531806 00000 n 
-0001531870 00000 n 
-0001531933 00000 n 
-0001531997 00000 n 
-0001532060 00000 n 
-0001532124 00000 n 
-0001532186 00000 n 
-0001532250 00000 n 
-0001532314 00000 n 
-0001532378 00000 n 
-0001532442 00000 n 
-0001532506 00000 n 
-0001532570 00000 n 
-0001532634 00000 n 
-0001532698 00000 n 
-0001532762 00000 n 
-0001532826 00000 n 
-0001532890 00000 n 
-0001532954 00000 n 
-0001533018 00000 n 
-0001533082 00000 n 
-0001533146 00000 n 
-0001533210 00000 n 
-0001533274 00000 n 
-0001533337 00000 n 
-0001533401 00000 n 
-0001533463 00000 n 
-0001533527 00000 n 
-0001533590 00000 n 
-0001533654 00000 n 
-0001533718 00000 n 
-0001533782 00000 n 
-0001533846 00000 n 
-0001533909 00000 n 
-0001533972 00000 n 
-0001534035 00000 n 
-0001539834 00000 n 
-0001537228 00000 n 
-0001534255 00000 n 
-0001537344 00000 n 
-0001537471 00000 n 
-0001537534 00000 n 
-0001537598 00000 n 
-0001537662 00000 n 
-0001537726 00000 n 
-0001537790 00000 n 
-0001537854 00000 n 
-0001537918 00000 n 
-0001537982 00000 n 
-0001538046 00000 n 
-0001538110 00000 n 
-0001538174 00000 n 
-0001538238 00000 n 
-0001538302 00000 n 
-0001538366 00000 n 
-0001538430 00000 n 
-0001538494 00000 n 
-0001538558 00000 n 
-0001538622 00000 n 
-0001538686 00000 n 
-0001538749 00000 n 
-0001538813 00000 n 
-0001538876 00000 n 
-0001538940 00000 n 
-0001539002 00000 n 
-0001539066 00000 n 
-0001539130 00000 n 
-0001539194 00000 n 
-0001539258 00000 n 
-0001539322 00000 n 
-0001539386 00000 n 
-0001539450 00000 n 
-0001539514 00000 n 
-0001539578 00000 n 
-0001539642 00000 n 
-0001539706 00000 n 
-0001539770 00000 n 
-0001540948 00000 n 
-0001540641 00000 n 
-0001539949 00000 n 
-0001540757 00000 n 
-0001542251 00000 n 
-0001541943 00000 n 
-0001541064 00000 n 
-0001542059 00000 n 
-0001542187 00000 n 
-0003384105 00000 n 
-0001543267 00000 n 
-0001542959 00000 n 
-0001542367 00000 n 
-0001543075 00000 n 
-0001544336 00000 n 
-0001544029 00000 n 
-0001543383 00000 n 
-0001544145 00000 n 
-0001545416 00000 n 
-0001545109 00000 n 
-0001544452 00000 n 
-0001545225 00000 n 
-0001545813 00000 n 
-0001545633 00000 n 
-0001545532 00000 n 
-0001545749 00000 n 
-0001547816 00000 n 
-0001547509 00000 n 
-0001545855 00000 n 
-0001547625 00000 n 
-0001547752 00000 n 
-0001550234 00000 n 
-0001549927 00000 n 
-0001547932 00000 n 
-0001550043 00000 n 
-0001550170 00000 n 
-0003384230 00000 n 
-0001552555 00000 n 
-0001553043 00000 n 
-0001552409 00000 n 
-0001550350 00000 n 
-0001552852 00000 n 
-0001552979 00000 n 
-0001552703 00000 n 
-0001555437 00000 n 
-0001555004 00000 n 
-0001553173 00000 n 
-0001555120 00000 n 
-0001555247 00000 n 
-0001555374 00000 n 
-0001557740 00000 n 
-0001557890 00000 n 
-0001558122 00000 n 
-0001557594 00000 n 
-0001555567 00000 n 
-0001558058 00000 n 
-0003374625 00000 n 
-0003374480 00000 n 
-0001559603 00000 n 
-0001559921 00000 n 
-0001559359 00000 n 
-0001558351 00000 n 
-0001559475 00000 n 
-0001559730 00000 n 
-0001559857 00000 n 
-0001561421 00000 n 
-0001561114 00000 n 
-0001560051 00000 n 
-0001561230 00000 n 
-0001561357 00000 n 
-0001562675 00000 n 
-0001562495 00000 n 
-0001561551 00000 n 
-0001562611 00000 n 
-0003384355 00000 n 
-0001563850 00000 n 
-0001563670 00000 n 
-0001562777 00000 n 
-0001563786 00000 n 
-0001565014 00000 n 
-0001564834 00000 n 
-0001563952 00000 n 
-0001564950 00000 n 
-0001566483 00000 n 
-0001569404 00000 n 
-0001566696 00000 n 
-0001566346 00000 n 
-0001565116 00000 n 
-0001566632 00000 n 
-0001594405 00000 n 
-0001570463 00000 n 
-0001569553 00000 n 
-0001569860 00000 n 
-0001570162 00000 n 
-0001570842 00000 n 
-0001569195 00000 n 
-0001566812 00000 n 
-0001570778 00000 n 
-0001569707 00000 n 
-0001570012 00000 n 
-0001570312 00000 n 
-0001570628 00000 n 
-0001595789 00000 n 
-0001600911 00000 n 
-0001626122 00000 n 
-0001627047 00000 n 
-0001573584 00000 n 
-0001573732 00000 n 
-0001573948 00000 n 
-0001573119 00000 n 
-0001571028 00000 n 
-0001573283 00000 n 
-0001573884 00000 n 
-0001573433 00000 n 
-0001628605 00000 n 
-0001575891 00000 n 
-0001575711 00000 n 
-0001574135 00000 n 
-0001575827 00000 n 
-0003384480 00000 n 
-0001577139 00000 n 
-0001576959 00000 n 
-0001576007 00000 n 
-0001577075 00000 n 
-0001578960 00000 n 
-0001578780 00000 n 
-0001577255 00000 n 
-0001578896 00000 n 
-0001580214 00000 n 
-0001580034 00000 n 
-0001579076 00000 n 
-0001580150 00000 n 
-0001582018 00000 n 
-0001582252 00000 n 
-0001581881 00000 n 
-0001580330 00000 n 
-0001582188 00000 n 
-0001584506 00000 n 
-0001584716 00000 n 
-0001584369 00000 n 
-0001582424 00000 n 
-0001584652 00000 n 
-0001634134 00000 n 
-0001587742 00000 n 
-0001587114 00000 n 
-0001584832 00000 n 
-0001587230 00000 n 
-0001587294 00000 n 
-0001587358 00000 n 
-0001587422 00000 n 
-0001587486 00000 n 
-0001587550 00000 n 
-0001587614 00000 n 
-0001587678 00000 n 
-0003384605 00000 n 
-0001590217 00000 n 
-0001590037 00000 n 
-0001587886 00000 n 
-0001590153 00000 n 
-0001592648 00000 n 
-0001592881 00000 n 
-0001592511 00000 n 
-0001590347 00000 n 
-0001592817 00000 n 
-0001594469 00000 n 
-0001594161 00000 n 
-0001593039 00000 n 
-0001594277 00000 n 
-0001595853 00000 n 
-0001595545 00000 n 
-0001594585 00000 n 
-0001595661 00000 n 
-0001603463 00000 n 
-0001600667 00000 n 
-0001595969 00000 n 
-0001600783 00000 n 
-0001600975 00000 n 
-0001601039 00000 n 
-0001601103 00000 n 
-0001601167 00000 n 
-0001601231 00000 n 
-0001601295 00000 n 
-0001601359 00000 n 
-0001601423 00000 n 
-0001601486 00000 n 
-0001601550 00000 n 
-0001601613 00000 n 
-0001601677 00000 n 
-0001601739 00000 n 
-0001601803 00000 n 
-0001601867 00000 n 
-0001601931 00000 n 
-0001601995 00000 n 
-0001602059 00000 n 
-0001602123 00000 n 
-0001602187 00000 n 
-0001602251 00000 n 
-0001602315 00000 n 
-0001602379 00000 n 
-0001602443 00000 n 
-0001602507 00000 n 
-0001602571 00000 n 
-0001602635 00000 n 
-0001602699 00000 n 
-0001602763 00000 n 
-0001602827 00000 n 
-0001602891 00000 n 
-0001602955 00000 n 
-0001603019 00000 n 
-0001603082 00000 n 
-0001603146 00000 n 
-0001603208 00000 n 
-0001603272 00000 n 
-0001603335 00000 n 
-0001603399 00000 n 
-0001609214 00000 n 
-0001606734 00000 n 
-0001603620 00000 n 
-0001606850 00000 n 
-0001606978 00000 n 
-0001607042 00000 n 
-0001607106 00000 n 
-0001607170 00000 n 
-0001607234 00000 n 
-0001607297 00000 n 
-0001607361 00000 n 
-0001607424 00000 n 
-0001607488 00000 n 
-0001607551 00000 n 
-0001607615 00000 n 
-0001607679 00000 n 
-0001607743 00000 n 
-0001607807 00000 n 
-0001607871 00000 n 
-0001607935 00000 n 
-0001607999 00000 n 
-0001608063 00000 n 
-0001608127 00000 n 
-0001608191 00000 n 
-0001608255 00000 n 
-0001608319 00000 n 
-0001608383 00000 n 
-0001608447 00000 n 
-0001608511 00000 n 
-0001608575 00000 n 
-0001608639 00000 n 
-0001608703 00000 n 
-0001608767 00000 n 
-0001608831 00000 n 
-0001608895 00000 n 
-0001608959 00000 n 
-0001609023 00000 n 
-0001609087 00000 n 
-0001609151 00000 n 
-0003384730 00000 n 
-0001615194 00000 n 
-0001612651 00000 n 
-0001609357 00000 n 
-0001612767 00000 n 
-0001612895 00000 n 
-0001612959 00000 n 
-0001613022 00000 n 
-0001613086 00000 n 
-0001613150 00000 n 
-0001613214 00000 n 
-0001613277 00000 n 
-0001613341 00000 n 
-0001613404 00000 n 
-0001613468 00000 n 
-0001613531 00000 n 
-0001613595 00000 n 
-0001613659 00000 n 
-0001613723 00000 n 
-0001613787 00000 n 
-0001613851 00000 n 
-0001613915 00000 n 
-0001613979 00000 n 
-0001614043 00000 n 
-0001614107 00000 n 
-0001614171 00000 n 
-0001614235 00000 n 
-0001614299 00000 n 
-0001614363 00000 n 
-0001614427 00000 n 
-0001614491 00000 n 
-0001614555 00000 n 
-0001614619 00000 n 
-0001614683 00000 n 
-0001614747 00000 n 
-0001614811 00000 n 
-0001614875 00000 n 
-0001614939 00000 n 
-0001615003 00000 n 
-0001615067 00000 n 
-0001615130 00000 n 
-0001620763 00000 n 
-0001618347 00000 n 
-0001615337 00000 n 
-0001618463 00000 n 
-0001618591 00000 n 
-0001618655 00000 n 
-0001618719 00000 n 
-0001618783 00000 n 
-0001618847 00000 n 
-0001618910 00000 n 
-0001618974 00000 n 
-0001619037 00000 n 
-0001619101 00000 n 
-0001619164 00000 n 
-0001619228 00000 n 
-0001619292 00000 n 
-0001619356 00000 n 
-0001619420 00000 n 
-0001619484 00000 n 
-0001619548 00000 n 
-0001619612 00000 n 
-0001619676 00000 n 
-0001619740 00000 n 
-0001619804 00000 n 
-0001619868 00000 n 
-0001619932 00000 n 
-0001619996 00000 n 
-0001620060 00000 n 
-0001620124 00000 n 
-0001620188 00000 n 
-0001620252 00000 n 
-0001620316 00000 n 
-0001620380 00000 n 
-0001620444 00000 n 
-0001620508 00000 n 
-0001620572 00000 n 
-0001620636 00000 n 
-0001620700 00000 n 
-0001624641 00000 n 
-0001622929 00000 n 
-0001620920 00000 n 
-0001623045 00000 n 
-0001623173 00000 n 
-0001623237 00000 n 
-0001623301 00000 n 
-0001623365 00000 n 
-0001623429 00000 n 
-0001623493 00000 n 
-0001623557 00000 n 
-0001623621 00000 n 
-0001623685 00000 n 
-0001623749 00000 n 
-0001623813 00000 n 
-0001623877 00000 n 
-0001623941 00000 n 
-0001624004 00000 n 
-0001624068 00000 n 
-0001624131 00000 n 
-0001624195 00000 n 
-0001624257 00000 n 
-0001624321 00000 n 
-0001624385 00000 n 
-0001624449 00000 n 
-0001624513 00000 n 
-0001624577 00000 n 
-0001626186 00000 n 
-0001625878 00000 n 
-0001624756 00000 n 
-0001625994 00000 n 
-0001627111 00000 n 
-0001626804 00000 n 
-0001626302 00000 n 
-0001626920 00000 n 
-0001628669 00000 n 
-0001628361 00000 n 
-0001627227 00000 n 
-0001628477 00000 n 
-0003384855 00000 n 
-0001629978 00000 n 
-0001629670 00000 n 
-0001628785 00000 n 
-0001629786 00000 n 
-0001629914 00000 n 
-0001631423 00000 n 
-0001631115 00000 n 
-0001630094 00000 n 
-0001631231 00000 n 
-0001631359 00000 n 
-0001632954 00000 n 
-0001632646 00000 n 
-0001631539 00000 n 
-0001632762 00000 n 
-0001632890 00000 n 
-0001634198 00000 n 
-0001633890 00000 n 
-0001633070 00000 n 
-0001634006 00000 n 
-0001635511 00000 n 
-0001635203 00000 n 
-0001634314 00000 n 
-0001635319 00000 n 
-0001635447 00000 n 
-0001637314 00000 n 
-0001637006 00000 n 
-0001635627 00000 n 
-0001637122 00000 n 
-0001637250 00000 n 
-0003384980 00000 n 
-0001638735 00000 n 
-0001638427 00000 n 
-0001637430 00000 n 
-0001638543 00000 n 
-0001638671 00000 n 
-0001639960 00000 n 
-0001639652 00000 n 
-0001638851 00000 n 
-0001639768 00000 n 
-0001639896 00000 n 
-0001640469 00000 n 
-0001640290 00000 n 
-0001640076 00000 n 
-0001640760 00000 n 
-0001640644 00000 n 
-0001640543 00000 n 
-0001641861 00000 n 
-0001641426 00000 n 
-0001640802 00000 n 
-0001641542 00000 n 
-0001641606 00000 n 
-0001641733 00000 n 
-0001641797 00000 n 
-0001642258 00000 n 
-0001642078 00000 n 
-0001641977 00000 n 
-0001642194 00000 n 
-0003385105 00000 n 
-0001644190 00000 n 
-0001643883 00000 n 
-0001642300 00000 n 
-0001643999 00000 n 
-0001644126 00000 n 
-0001646840 00000 n 
-0001646533 00000 n 
-0001644306 00000 n 
-0001646649 00000 n 
-0001646776 00000 n 
-0001649110 00000 n 
-0001648930 00000 n 
-0001646998 00000 n 
-0001649046 00000 n 
-0001651327 00000 n 
-0001651147 00000 n 
-0001649212 00000 n 
-0001651263 00000 n 
-0001653646 00000 n 
-0001653339 00000 n 
-0001651429 00000 n 
-0001653455 00000 n 
-0001653582 00000 n 
-0001656305 00000 n 
-0001656000 00000 n 
-0001653762 00000 n 
-0001656116 00000 n 
-0001656243 00000 n 
-0003385230 00000 n 
-0001658628 00000 n 
-0001658321 00000 n 
-0001656421 00000 n 
-0001658437 00000 n 
-0001658564 00000 n 
-0001660859 00000 n 
-0001661075 00000 n 
-0001660722 00000 n 
-0001658744 00000 n 
-0001661011 00000 n 
-0001677792 00000 n 
-0001663484 00000 n 
-0001663304 00000 n 
-0001661205 00000 n 
-0001663420 00000 n 
-0001666079 00000 n 
-0001666279 00000 n 
-0001666547 00000 n 
-0001665933 00000 n 
-0001663586 00000 n 
-0001666483 00000 n 
-0001668961 00000 n 
-0001668781 00000 n 
-0001666719 00000 n 
-0001668897 00000 n 
-0001674077 00000 n 
-0001671411 00000 n 
-0001671105 00000 n 
-0001669063 00000 n 
-0001671221 00000 n 
-0001671348 00000 n 
-0003385355 00000 n 
-0001674256 00000 n 
-0001674713 00000 n 
-0001674970 00000 n 
-0001673913 00000 n 
-0001671527 00000 n 
-0001674906 00000 n 
-0001674485 00000 n 
-0001677228 00000 n 
-0001677983 00000 n 
-0001677082 00000 n 
-0001675156 00000 n 
-0001677665 00000 n 
-0001677919 00000 n 
-0001677446 00000 n 
-0001681151 00000 n 
-0001680397 00000 n 
-0001678155 00000 n 
-0001680513 00000 n 
-0001680577 00000 n 
-0001680641 00000 n 
-0001680704 00000 n 
-0001680768 00000 n 
-0001680832 00000 n 
-0001680896 00000 n 
-0001680960 00000 n 
-0001681087 00000 n 
-0001683423 00000 n 
-0001682860 00000 n 
-0001681295 00000 n 
-0001682976 00000 n 
-0001683040 00000 n 
-0001683104 00000 n 
-0001683168 00000 n 
-0001683232 00000 n 
-0001683359 00000 n 
-0001685688 00000 n 
-0001685508 00000 n 
-0001683553 00000 n 
-0001685624 00000 n 
-0001687690 00000 n 
-0001687510 00000 n 
-0001685903 00000 n 
-0001687626 00000 n 
-0003385480 00000 n 
-0001690226 00000 n 
-0001689919 00000 n 
-0001687806 00000 n 
-0001690035 00000 n 
-0001690162 00000 n 
-0001693176 00000 n 
-0001692550 00000 n 
-0001690370 00000 n 
-0001692666 00000 n 
-0001692793 00000 n 
-0001692857 00000 n 
-0001692921 00000 n 
-0001692985 00000 n 
-0001693048 00000 n 
-0001693112 00000 n 
-0001695452 00000 n 
-0001695080 00000 n 
-0001693306 00000 n 
-0001695196 00000 n 
-0001695260 00000 n 
-0001695324 00000 n 
-0001695388 00000 n 
-0001697980 00000 n 
-0001697356 00000 n 
-0001695568 00000 n 
-0001697472 00000 n 
-0001697536 00000 n 
-0001697600 00000 n 
-0001697727 00000 n 
-0001697854 00000 n 
-0001697917 00000 n 
-0001700860 00000 n 
-0001700296 00000 n 
-0001698110 00000 n 
-0001700412 00000 n 
-0001700476 00000 n 
-0001700540 00000 n 
-0001700604 00000 n 
-0001700668 00000 n 
-0001700732 00000 n 
-0001700796 00000 n 
-0001703989 00000 n 
-0001703236 00000 n 
-0001701004 00000 n 
-0001703352 00000 n 
-0001703479 00000 n 
-0001703543 00000 n 
-0001703607 00000 n 
-0001703670 00000 n 
-0001703797 00000 n 
-0001703861 00000 n 
-0001703925 00000 n 
-0003385605 00000 n 
-0001705358 00000 n 
-0001705114 00000 n 
-0001704133 00000 n 
-0001705230 00000 n 
-0001705294 00000 n 
-0001707963 00000 n 
-0001707592 00000 n 
-0001705474 00000 n 
-0001707708 00000 n 
-0001707772 00000 n 
-0001707899 00000 n 
-0001710258 00000 n 
-0001709887 00000 n 
-0001708107 00000 n 
-0001710003 00000 n 
-0001710130 00000 n 
-0001710194 00000 n 
-0001712723 00000 n 
-0001712543 00000 n 
-0001710416 00000 n 
-0001712659 00000 n 
-0001714303 00000 n 
-0001714123 00000 n 
-0001712867 00000 n 
-0001714239 00000 n 
-0001714742 00000 n 
-0001714562 00000 n 
-0001714461 00000 n 
-0001714678 00000 n 
-0003385730 00000 n 
-0001716774 00000 n 
-0001716340 00000 n 
-0001714784 00000 n 
-0001716456 00000 n 
-0001716583 00000 n 
-0001716710 00000 n 
-0001719255 00000 n 
-0001718948 00000 n 
-0001716890 00000 n 
-0001719064 00000 n 
-0001719191 00000 n 
-0001721524 00000 n 
-0001721090 00000 n 
-0001719371 00000 n 
-0001721206 00000 n 
-0001721333 00000 n 
-0001721460 00000 n 
-0001723596 00000 n 
-0001723163 00000 n 
-0001721654 00000 n 
-0001723279 00000 n 
-0001723406 00000 n 
-0001723532 00000 n 
-0001725287 00000 n 
-0001724980 00000 n 
-0001723726 00000 n 
-0001725096 00000 n 
-0001725223 00000 n 
-0001727939 00000 n 
-0001728571 00000 n 
-0001727793 00000 n 
-0001725474 00000 n 
-0001728252 00000 n 
-0001728379 00000 n 
-0001728443 00000 n 
-0001728096 00000 n 
-0001728507 00000 n 
-0003385855 00000 n 
-0001730217 00000 n 
-0001730408 00000 n 
-0001729909 00000 n 
-0001728701 00000 n 
-0001730025 00000 n 
-0001730089 00000 n 
-0001730344 00000 n 
-0001732753 00000 n 
-0001732920 00000 n 
-0001732598 00000 n 
-0001733417 00000 n 
-0001732443 00000 n 
-0001730538 00000 n 
-0001733097 00000 n 
-0001733161 00000 n 
-0001733225 00000 n 
-0001733289 00000 n 
-0001733353 00000 n 
-0001740447 00000 n 
-0001735007 00000 n 
-0001734699 00000 n 
-0001733589 00000 n 
-0001734815 00000 n 
-0001734879 00000 n 
-0001734943 00000 n 
-0001736711 00000 n 
-0001737124 00000 n 
-0001736574 00000 n 
-0001735123 00000 n 
-0001736869 00000 n 
-0001736933 00000 n 
-0001737060 00000 n 
-0001741727 00000 n 
-0001742109 00000 n 
-0001740203 00000 n 
-0001737254 00000 n 
-0001740319 00000 n 
-0001740511 00000 n 
-0001740575 00000 n 
-0001740639 00000 n 
-0001740703 00000 n 
-0001740767 00000 n 
-0001740831 00000 n 
-0001740895 00000 n 
-0001740959 00000 n 
-0001741023 00000 n 
-0001741087 00000 n 
-0001741151 00000 n 
-0001741215 00000 n 
-0001741279 00000 n 
-0001741343 00000 n 
-0001741407 00000 n 
-0001741471 00000 n 
-0001741535 00000 n 
-0001741599 00000 n 
-0001741854 00000 n 
-0001741981 00000 n 
-0001742045 00000 n 
-0001743809 00000 n 
-0001743962 00000 n 
-0001744625 00000 n 
-0001743663 00000 n 
-0001742294 00000 n 
-0001744113 00000 n 
-0001744177 00000 n 
-0001744241 00000 n 
-0001744305 00000 n 
-0001744369 00000 n 
-0001744433 00000 n 
-0001744497 00000 n 
-0001744561 00000 n 
-0003385980 00000 n 
-0001746489 00000 n 
-0001746616 00000 n 
-0001746806 00000 n 
-0001746245 00000 n 
-0001744741 00000 n 
-0001746361 00000 n 
-0001746742 00000 n 
-0001749551 00000 n 
-0001749181 00000 n 
-0001746936 00000 n 
-0001749297 00000 n 
-0001749424 00000 n 
-0001749488 00000 n 
-0001752022 00000 n 
-0001751842 00000 n 
-0001749681 00000 n 
-0001751958 00000 n 
-0001753210 00000 n 
-0001753030 00000 n 
-0001752152 00000 n 
-0001753146 00000 n 
-0001755117 00000 n 
-0001754684 00000 n 
-0001753312 00000 n 
-0001754800 00000 n 
-0001754927 00000 n 
-0001755053 00000 n 
-0001757601 00000 n 
-0001758263 00000 n 
-0001757455 00000 n 
-0001755233 00000 n 
-0001758072 00000 n 
-0001758199 00000 n 
-0001757836 00000 n 
-0003386105 00000 n 
-0001761147 00000 n 
-0001760839 00000 n 
-0001758449 00000 n 
-0001760955 00000 n 
-0001761083 00000 n 
-0001764038 00000 n 
-0001763477 00000 n 
-0001761263 00000 n 
-0001763593 00000 n 
-0001763720 00000 n 
-0001763847 00000 n 
-0001763974 00000 n 
-0001766048 00000 n 
-0001766537 00000 n 
-0001765902 00000 n 
-0001764182 00000 n 
-0001766347 00000 n 
-0001766474 00000 n 
-0001766197 00000 n 
-0002550925 00000 n 
-0001768846 00000 n 
-0001769312 00000 n 
-0001768709 00000 n 
-0001766752 00000 n 
-0001768996 00000 n 
-0001769121 00000 n 
-0001769248 00000 n 
-0001771226 00000 n 
-0001771046 00000 n 
-0001769499 00000 n 
-0001771162 00000 n 
-0001773515 00000 n 
-0001773732 00000 n 
-0001773378 00000 n 
-0001771342 00000 n 
-0001773668 00000 n 
-0003386230 00000 n 
-0002527966 00000 n 
-0001776275 00000 n 
-0001775715 00000 n 
-0001773862 00000 n 
-0001775831 00000 n 
-0001775958 00000 n 
-0001776085 00000 n 
-0001776211 00000 n 
-0001778956 00000 n 
-0001778395 00000 n 
-0001776391 00000 n 
-0001778511 00000 n 
-0001778638 00000 n 
-0001778765 00000 n 
-0001778892 00000 n 
-0001781653 00000 n 
-0001781346 00000 n 
-0001779086 00000 n 
-0001781462 00000 n 
-0001781589 00000 n 
-0001783975 00000 n 
-0001783668 00000 n 
-0001781769 00000 n 
-0001783784 00000 n 
-0001783911 00000 n 
-0001785157 00000 n 
-0001784977 00000 n 
-0001784133 00000 n 
-0001785093 00000 n 
-0001785540 00000 n 
-0001785360 00000 n 
-0001785259 00000 n 
-0001785476 00000 n 
-0003386355 00000 n 
-0001787469 00000 n 
-0001787162 00000 n 
-0001785582 00000 n 
-0001787278 00000 n 
-0001787405 00000 n 
-0001790031 00000 n 
-0001790210 00000 n 
-0001790392 00000 n 
-0001790756 00000 n 
-0001789876 00000 n 
-0001787585 00000 n 
-0001790566 00000 n 
-0001790693 00000 n 
-0001792962 00000 n 
-0001793341 00000 n 
-0001792825 00000 n 
-0001790942 00000 n 
-0001793150 00000 n 
-0001793277 00000 n 
-0001794502 00000 n 
-0001794322 00000 n 
-0001793527 00000 n 
-0001794438 00000 n 
-0001796211 00000 n 
-0001798551 00000 n 
-0001830420 00000 n 
-0001833199 00000 n 
-0001796871 00000 n 
-0001796074 00000 n 
-0001794604 00000 n 
-0001796362 00000 n 
-0001796680 00000 n 
-0001796743 00000 n 
-0001796807 00000 n 
-0001831156 00000 n 
-0001830572 00000 n 
-0001864732 00000 n 
-0001830876 00000 n 
-0001877564 00000 n 
-0001863050 00000 n 
-0001892847 00000 n 
-0001831475 00000 n 
-0001798387 00000 n 
-0001796987 00000 n 
-0001831028 00000 n 
-0001831220 00000 n 
-0001831284 00000 n 
-0001830724 00000 n 
-0001831348 00000 n 
-0001831411 00000 n 
-0003386480 00000 n 
-0001863482 00000 n 
-0001890654 00000 n 
-0001890782 00000 n 
-0001863202 00000 n 
-0001863610 00000 n 
-0001833053 00000 n 
-0001831629 00000 n 
-0001863354 00000 n 
-0001863546 00000 n 
-0001912694 00000 n 
-0001890846 00000 n 
-0001864616 00000 n 
-0001863764 00000 n 
-0001890526 00000 n 
-0001912885 00000 n 
-0001892731 00000 n 
-0001891001 00000 n 
-0001912566 00000 n 
-0001912821 00000 n 
-0001915048 00000 n 
-0001914868 00000 n 
-0001913053 00000 n 
-0001914984 00000 n 
-0001916370 00000 n 
-0001916190 00000 n 
-0001915164 00000 n 
-0001916306 00000 n 
-0001918707 00000 n 
-0001919048 00000 n 
-0001918570 00000 n 
-0001916486 00000 n 
-0001918857 00000 n 
-0001918984 00000 n 
-0003386605 00000 n 
-0002536522 00000 n 
-0001921199 00000 n 
-0001921355 00000 n 
-0001921507 00000 n 
-0001921811 00000 n 
-0001922535 00000 n 
-0001921026 00000 n 
-0001919192 00000 n 
-0001921963 00000 n 
-0001922090 00000 n 
-0001922217 00000 n 
-0001922344 00000 n 
-0001921659 00000 n 
-0001922471 00000 n 
-0002538020 00000 n 
-0001924459 00000 n 
-0001924621 00000 n 
-0001924783 00000 n 
-0001924945 00000 n 
-0001925104 00000 n 
-0001925775 00000 n 
-0001924286 00000 n 
-0001922665 00000 n 
-0001925263 00000 n 
-0001925519 00000 n 
-0001925583 00000 n 
-0001925647 00000 n 
-0001925711 00000 n 
-0002542175 00000 n 
-0002543540 00000 n 
-0002545039 00000 n 
-0002546217 00000 n 
-0002547336 00000 n 
-0001927371 00000 n 
-0001927128 00000 n 
-0001925905 00000 n 
-0001927244 00000 n 
-0001927308 00000 n 
-0001928724 00000 n 
-0001928480 00000 n 
-0001927487 00000 n 
-0001928596 00000 n 
-0001928660 00000 n 
-0001930270 00000 n 
-0001929962 00000 n 
-0001928840 00000 n 
-0001930078 00000 n 
-0001930142 00000 n 
-0001930206 00000 n 
-0001931812 00000 n 
-0001932188 00000 n 
-0001931675 00000 n 
-0001930386 00000 n 
-0001931996 00000 n 
-0001932124 00000 n 
-0003386730 00000 n 
-0001934066 00000 n 
-0001934298 00000 n 
-0001933929 00000 n 
-0001932374 00000 n 
-0001934234 00000 n 
-0001935870 00000 n 
-0001939625 00000 n 
-0001936338 00000 n 
-0001935733 00000 n 
-0001934470 00000 n 
-0001936019 00000 n 
-0001936083 00000 n 
-0001936147 00000 n 
-0001936211 00000 n 
-0001936275 00000 n 
-0002548697 00000 n 
-0001939018 00000 n 
-0001939166 00000 n 
-0001941539 00000 n 
-0001939319 00000 n 
-0002021418 00000 n 
-0001939473 00000 n 
-0001939922 00000 n 
-0001938845 00000 n 
-0001936454 00000 n 
-0001939794 00000 n 
-0001939858 00000 n 
-0002548824 00000 n 
-0002019605 00000 n 
-0002095633 00000 n 
-0002189130 00000 n 
-0002096884 00000 n 
-0002019168 00000 n 
-0002019320 00000 n 
-0002190720 00000 n 
-0002277548 00000 n 
-0002095203 00000 n 
-0002019669 00000 n 
-0001941393 00000 n 
-0001940108 00000 n 
-0002019477 00000 n 
-0002018236 00000 n 
-0002275723 00000 n 
-0002353164 00000 n 
-0002354679 00000 n 
-0002095697 00000 n 
-0002021272 00000 n 
-0002019823 00000 n 
-0002095505 00000 n 
-0002095355 00000 n 
-0002433542 00000 n 
-0002275079 00000 n 
-0002189322 00000 n 
-0002096768 00000 n 
-0002095837 00000 n 
-0002189002 00000 n 
-0002189258 00000 n 
-0003386855 00000 n 
-0002187995 00000 n 
-0002434698 00000 n 
-0002275232 00000 n 
-0002275406 00000 n 
-0002275787 00000 n 
-0002190565 00000 n 
-0002189476 00000 n 
-0002275595 00000 n 
-0002274224 00000 n 
-0002525998 00000 n 
-0002353356 00000 n 
-0002277432 00000 n 
-0002275983 00000 n 
-0002353036 00000 n 
-0002352290 00000 n 
-0002433606 00000 n 
-0002354563 00000 n 
-0002353524 00000 n 
-0002433414 00000 n 
-0002432688 00000 n 
-0002526062 00000 n 
-0002434582 00000 n 
-0002433760 00000 n 
-0002525870 00000 n 
-0002528030 00000 n 
-0002527722 00000 n 
-0002526216 00000 n 
-0002527838 00000 n 
-0002532937 00000 n 
-0002533144 00000 n 
-0002530298 00000 n 
-0002529990 00000 n 
-0002528160 00000 n 
-0002530106 00000 n 
-0002530234 00000 n 
-0003386980 00000 n 
-0002533350 00000 n 
-0002533862 00000 n 
-0002532782 00000 n 
-0002530442 00000 n 
-0002533543 00000 n 
-0002533671 00000 n 
-0002533798 00000 n 
-0002535429 00000 n 
-0002535249 00000 n 
-0002534048 00000 n 
-0002535365 00000 n 
-0002536586 00000 n 
-0002536278 00000 n 
-0002535545 00000 n 
-0002536394 00000 n 
-0002538084 00000 n 
-0002537776 00000 n 
-0002536702 00000 n 
-0002537892 00000 n 
-0002539403 00000 n 
-0002538967 00000 n 
-0002538200 00000 n 
-0002539083 00000 n 
-0002540867 00000 n 
-0002540559 00000 n 
-0002539519 00000 n 
-0002540675 00000 n 
-0003387105 00000 n 
-0002542239 00000 n 
-0002541931 00000 n 
-0002540983 00000 n 
-0002542047 00000 n 
-0002543604 00000 n 
-0002543296 00000 n 
-0002542355 00000 n 
-0002543412 00000 n 
-0002545102 00000 n 
-0002544795 00000 n 
-0002543720 00000 n 
-0002544911 00000 n 
-0002546281 00000 n 
-0002545973 00000 n 
-0002545218 00000 n 
-0002546089 00000 n 
-0002547400 00000 n 
-0002547092 00000 n 
-0002546397 00000 n 
-0002547208 00000 n 
-0002548888 00000 n 
-0002548454 00000 n 
-0002547516 00000 n 
-0002548570 00000 n 
-0003387230 00000 n 
-0002553497 00000 n 
-0002551117 00000 n 
-0002550681 00000 n 
-0002549004 00000 n 
-0002550797 00000 n 
-0002551053 00000 n 
-0002553668 00000 n 
-0002553917 00000 n 
-0002553351 00000 n 
-0002551233 00000 n 
-0002553853 00000 n 
-0002556247 00000 n 
-0002556400 00000 n 
-0002556744 00000 n 
-0002556101 00000 n 
-0002554146 00000 n 
-0002556552 00000 n 
-0002556680 00000 n 
-0002733246 00000 n 
-0002735507 00000 n 
-0002559488 00000 n 
-0002558796 00000 n 
-0002556874 00000 n 
-0002558912 00000 n 
-0002559040 00000 n 
-0002559104 00000 n 
-0002559168 00000 n 
-0002559232 00000 n 
-0002559296 00000 n 
-0002559424 00000 n 
-0002562183 00000 n 
-0002561619 00000 n 
-0002559632 00000 n 
-0002561735 00000 n 
-0002561863 00000 n 
-0002561927 00000 n 
-0002561991 00000 n 
-0002562055 00000 n 
-0002562119 00000 n 
-0002564410 00000 n 
-0002564724 00000 n 
-0002564876 00000 n 
-0002566498 00000 n 
-0002595832 00000 n 
-0002565028 00000 n 
-0002565692 00000 n 
-0002564237 00000 n 
-0002562327 00000 n 
-0002565182 00000 n 
-0002565246 00000 n 
-0002565310 00000 n 
-0002565374 00000 n 
-0002565437 00000 n 
-0002564567 00000 n 
-0002565500 00000 n 
-0002565628 00000 n 
-0003387355 00000 n 
-0002620952 00000 n 
-0002594474 00000 n 
-0002620824 00000 n 
-0002623828 00000 n 
-0002594538 00000 n 
-0002566382 00000 n 
-0002565808 00000 n 
-0002594346 00000 n 
-0002621143 00000 n 
-0002595716 00000 n 
-0002594678 00000 n 
-0002620696 00000 n 
-0002621016 00000 n 
-0002621079 00000 n 
-0002624211 00000 n 
-0002623584 00000 n 
-0002621311 00000 n 
-0002623700 00000 n 
-0002623892 00000 n 
-0002623956 00000 n 
-0002624020 00000 n 
-0002624084 00000 n 
-0002624148 00000 n 
-0002626298 00000 n 
-0002626451 00000 n 
-0002631532 00000 n 
-0002627209 00000 n 
-0002626143 00000 n 
-0002624341 00000 n 
-0002626762 00000 n 
-0002626826 00000 n 
-0002626890 00000 n 
-0002627018 00000 n 
-0002626607 00000 n 
-0002627146 00000 n 
-0002629995 00000 n 
-0002654806 00000 n 
-0002630378 00000 n 
-0002629751 00000 n 
-0002627325 00000 n 
-0002629867 00000 n 
-0002630059 00000 n 
-0002630123 00000 n 
-0002630187 00000 n 
-0002630250 00000 n 
-0002630314 00000 n 
-0002655062 00000 n 
-0002631416 00000 n 
-0002630550 00000 n 
-0002654678 00000 n 
-0002654870 00000 n 
-0002654934 00000 n 
-0002654998 00000 n 
-0003387480 00000 n 
-0002657723 00000 n 
-0002659652 00000 n 
-0002673978 00000 n 
-0002658195 00000 n 
-0002657586 00000 n 
-0002655230 00000 n 
-0002657875 00000 n 
-0002657939 00000 n 
-0002658003 00000 n 
-0002658131 00000 n 
-0002674261 00000 n 
-0002675787 00000 n 
-0002674325 00000 n 
-0002659515 00000 n 
-0002658395 00000 n 
-0002674133 00000 n 
-0002690623 00000 n 
-0002690815 00000 n 
-0002675671 00000 n 
-0002674479 00000 n 
-0002690495 00000 n 
-0002690751 00000 n 
-0002693952 00000 n 
-0002693068 00000 n 
-0002690983 00000 n 
-0002693184 00000 n 
-0002693248 00000 n 
-0002693312 00000 n 
-0002693376 00000 n 
-0002693440 00000 n 
-0002693504 00000 n 
-0002693568 00000 n 
-0002693632 00000 n 
-0002693696 00000 n 
-0002693760 00000 n 
-0002693824 00000 n 
-0002693888 00000 n 
-0002696205 00000 n 
-0002696355 00000 n 
-0002698372 00000 n 
-0002714698 00000 n 
-0002697105 00000 n 
-0002696050 00000 n 
-0002694096 00000 n 
-0002696657 00000 n 
-0002696721 00000 n 
-0002696785 00000 n 
-0002696849 00000 n 
-0002696913 00000 n 
-0002696977 00000 n 
-0002696506 00000 n 
-0002697041 00000 n 
-0002713294 00000 n 
-0002730475 00000 n 
-0002713486 00000 n 
-0002698256 00000 n 
-0002697235 00000 n 
-0002713166 00000 n 
-0002713422 00000 n 
-0003387605 00000 n 
-0002730667 00000 n 
-0002714582 00000 n 
-0002713654 00000 n 
-0002730347 00000 n 
-0002730603 00000 n 
-0002732908 00000 n 
-0002733438 00000 n 
-0002732771 00000 n 
-0002730835 00000 n 
-0002733118 00000 n 
-0002733374 00000 n 
-0002735635 00000 n 
-0002735263 00000 n 
-0002733666 00000 n 
-0002735379 00000 n 
-0002735571 00000 n 
-0002738280 00000 n 
-0002738100 00000 n 
-0002735793 00000 n 
-0002738216 00000 n 
-0002740678 00000 n 
-0002740498 00000 n 
-0002738438 00000 n 
-0002740614 00000 n 
-0002742802 00000 n 
-0002742622 00000 n 
-0002740879 00000 n 
-0002742738 00000 n 
-0003387730 00000 n 
-0002744476 00000 n 
-0002745058 00000 n 
-0002744330 00000 n 
-0002742946 00000 n 
-0002744803 00000 n 
-0002744931 00000 n 
-0002744639 00000 n 
-0002744994 00000 n 
-0002747582 00000 n 
-0002747402 00000 n 
-0002745216 00000 n 
-0002747518 00000 n 
-0002749658 00000 n 
-0002749350 00000 n 
-0002747684 00000 n 
-0002749466 00000 n 
-0002749530 00000 n 
-0002749594 00000 n 
-0002752054 00000 n 
-0002751811 00000 n 
-0002749760 00000 n 
-0002751927 00000 n 
-0002751991 00000 n 
-0002754341 00000 n 
-0002754097 00000 n 
-0002752170 00000 n 
-0002754213 00000 n 
-0002754277 00000 n 
-0002756476 00000 n 
-0002756169 00000 n 
-0002754443 00000 n 
-0002756285 00000 n 
-0002756349 00000 n 
-0002756412 00000 n 
-0003387855 00000 n 
-0002758985 00000 n 
-0002758486 00000 n 
-0002756592 00000 n 
-0002758602 00000 n 
-0002758666 00000 n 
-0002758730 00000 n 
-0002758794 00000 n 
-0002758858 00000 n 
-0002758922 00000 n 
-0002761680 00000 n 
-0002761180 00000 n 
-0002759087 00000 n 
-0002761296 00000 n 
-0002761360 00000 n 
-0002761424 00000 n 
-0002761488 00000 n 
-0002761552 00000 n 
-0002761616 00000 n 
-0002764176 00000 n 
-0002763932 00000 n 
-0002761796 00000 n 
-0002764048 00000 n 
-0002764112 00000 n 
-0002766517 00000 n 
-0002766273 00000 n 
-0002764264 00000 n 
-0002766389 00000 n 
-0002766453 00000 n 
-0002769124 00000 n 
-0002768561 00000 n 
-0002766633 00000 n 
-0002768677 00000 n 
-0002768741 00000 n 
-0002768805 00000 n 
-0002768869 00000 n 
-0002768933 00000 n 
-0002768997 00000 n 
-0002769060 00000 n 
-0002771444 00000 n 
-0002771136 00000 n 
-0002769212 00000 n 
-0002771252 00000 n 
-0002771316 00000 n 
-0002771380 00000 n 
-0003387980 00000 n 
-0002773679 00000 n 
-0002773371 00000 n 
-0002771560 00000 n 
-0002773487 00000 n 
-0002773551 00000 n 
-0002773615 00000 n 
-0002776227 00000 n 
-0002776047 00000 n 
-0002773781 00000 n 
-0002776163 00000 n 
-0002778558 00000 n 
-0002778314 00000 n 
-0002776329 00000 n 
-0002778430 00000 n 
-0002778494 00000 n 
-0002780817 00000 n 
-0002780510 00000 n 
-0002778660 00000 n 
-0002780626 00000 n 
-0002780690 00000 n 
-0002780753 00000 n 
-0002782845 00000 n 
-0002782473 00000 n 
-0002780933 00000 n 
-0002782589 00000 n 
-0002782653 00000 n 
-0002782717 00000 n 
-0002782781 00000 n 
-0002784975 00000 n 
-0002784668 00000 n 
-0002782947 00000 n 
-0002784784 00000 n 
-0002784848 00000 n 
-0003388105 00000 n 
-0002786792 00000 n 
-0002786969 00000 n 
-0002787425 00000 n 
-0002786637 00000 n 
-0002785105 00000 n 
-0002787361 00000 n 
-0002787165 00000 n 
-0002787822 00000 n 
-0002787642 00000 n 
-0002787541 00000 n 
-0002787758 00000 n 
-0002789783 00000 n 
-0002790146 00000 n 
-0002789646 00000 n 
-0002787864 00000 n 
-0002789954 00000 n 
-0002790082 00000 n 
-0002792387 00000 n 
-0002792207 00000 n 
-0002790318 00000 n 
-0002792323 00000 n 
-0002794695 00000 n 
-0002794515 00000 n 
-0002792503 00000 n 
-0002794631 00000 n 
-0002796881 00000 n 
-0002796701 00000 n 
-0002794811 00000 n 
-0002796817 00000 n 
-0003388230 00000 n 
-0002798544 00000 n 
-0002798781 00000 n 
-0002798407 00000 n 
-0002796997 00000 n 
-0002798717 00000 n 
-0002799234 00000 n 
-0002799054 00000 n 
-0002798953 00000 n 
-0002799170 00000 n 
-0002802279 00000 n 
-0002802431 00000 n 
-0002802582 00000 n 
-0002802733 00000 n 
-0002802884 00000 n 
-0002803035 00000 n 
-0002803186 00000 n 
-0002803337 00000 n 
-0002803488 00000 n 
-0002803639 00000 n 
-0002803790 00000 n 
-0002803941 00000 n 
-0002804091 00000 n 
-0002804241 00000 n 
-0002804391 00000 n 
-0002804541 00000 n 
-0002804692 00000 n 
-0002804841 00000 n 
-0002804992 00000 n 
-0002805143 00000 n 
-0002805294 00000 n 
-0002805444 00000 n 
-0002805594 00000 n 
-0002805746 00000 n 
-0002805898 00000 n 
-0002806050 00000 n 
-0002806202 00000 n 
-0002806354 00000 n 
-0002806505 00000 n 
-0002806656 00000 n 
-0002806807 00000 n 
-0002806958 00000 n 
-0002807110 00000 n 
-0002807260 00000 n 
-0002807411 00000 n 
-0002807562 00000 n 
-0002807713 00000 n 
-0002807864 00000 n 
-0002808015 00000 n 
-0002808167 00000 n 
-0002808319 00000 n 
-0002808468 00000 n 
-0002808619 00000 n 
-0002808770 00000 n 
-0002808921 00000 n 
-0002809072 00000 n 
-0002809222 00000 n 
-0002809374 00000 n 
-0002809526 00000 n 
-0002809677 00000 n 
-0002809829 00000 n 
-0002809981 00000 n 
-0002810133 00000 n 
-0002810285 00000 n 
-0002810437 00000 n 
-0002810588 00000 n 
-0002810739 00000 n 
-0002810889 00000 n 
-0002811039 00000 n 
-0002811189 00000 n 
-0002811340 00000 n 
-0002811491 00000 n 
-0002811641 00000 n 
-0002811792 00000 n 
-0002811943 00000 n 
-0002812094 00000 n 
-0002812245 00000 n 
-0002812396 00000 n 
-0002812547 00000 n 
-0002812699 00000 n 
-0002812851 00000 n 
-0002813003 00000 n 
-0002813155 00000 n 
-0002813306 00000 n 
-0002813458 00000 n 
-0002813609 00000 n 
-0002813759 00000 n 
-0002813911 00000 n 
-0002814063 00000 n 
-0002814215 00000 n 
-0002814367 00000 n 
-0002814519 00000 n 
-0002814670 00000 n 
-0002814821 00000 n 
-0002814972 00000 n 
-0002815124 00000 n 
-0002815275 00000 n 
-0002815427 00000 n 
-0002815579 00000 n 
-0002815731 00000 n 
-0002815882 00000 n 
-0002816033 00000 n 
-0002816185 00000 n 
-0002816336 00000 n 
-0002816486 00000 n 
-0002816637 00000 n 
-0002816789 00000 n 
-0002816941 00000 n 
-0002817093 00000 n 
-0002817242 00000 n 
-0002817394 00000 n 
-0002817545 00000 n 
-0002817696 00000 n 
-0002817848 00000 n 
-0002817998 00000 n 
-0002818150 00000 n 
-0002818302 00000 n 
-0002818453 00000 n 
-0002818604 00000 n 
-0002818756 00000 n 
-0002818907 00000 n 
-0002819058 00000 n 
-0002819209 00000 n 
-0002819359 00000 n 
-0002819511 00000 n 
-0002819663 00000 n 
-0002819815 00000 n 
-0002819967 00000 n 
-0002820118 00000 n 
-0002820270 00000 n 
-0002820422 00000 n 
-0002820574 00000 n 
-0002820726 00000 n 
-0002820877 00000 n 
-0002821028 00000 n 
-0002821179 00000 n 
-0002821330 00000 n 
-0002821482 00000 n 
-0002821633 00000 n 
-0002821785 00000 n 
-0002821936 00000 n 
-0002822088 00000 n 
-0002822236 00000 n 
-0002822388 00000 n 
-0002822539 00000 n 
-0002822691 00000 n 
-0002822843 00000 n 
-0002822995 00000 n 
-0002823147 00000 n 
-0002823299 00000 n 
-0002823450 00000 n 
-0002823601 00000 n 
-0002823752 00000 n 
-0002823904 00000 n 
-0002824056 00000 n 
-0002827332 00000 n 
-0002827484 00000 n 
-0002827636 00000 n 
-0002824272 00000 n 
-0002800846 00000 n 
-0002799276 00000 n 
-0002824208 00000 n 
-0002827788 00000 n 
-0002827940 00000 n 
-0002828091 00000 n 
-0002828243 00000 n 
-0002828394 00000 n 
-0002828544 00000 n 
-0002828693 00000 n 
-0002828843 00000 n 
-0002828993 00000 n 
-0002829143 00000 n 
-0002829293 00000 n 
-0002829443 00000 n 
-0002829593 00000 n 
-0002829743 00000 n 
-0002829893 00000 n 
-0002830044 00000 n 
-0002830196 00000 n 
-0002830348 00000 n 
-0002830500 00000 n 
-0002830651 00000 n 
-0002830802 00000 n 
-0002830953 00000 n 
-0002831104 00000 n 
-0002831255 00000 n 
-0002831407 00000 n 
-0002831558 00000 n 
-0002831710 00000 n 
-0002831860 00000 n 
-0002832012 00000 n 
-0002832164 00000 n 
-0002832316 00000 n 
-0002832468 00000 n 
-0002832620 00000 n 
-0002832771 00000 n 
-0002832922 00000 n 
-0002833073 00000 n 
-0002833224 00000 n 
-0002833376 00000 n 
-0002833528 00000 n 
-0002833680 00000 n 
-0002833831 00000 n 
-0002833982 00000 n 
-0002834134 00000 n 
-0002834286 00000 n 
-0002834437 00000 n 
-0002834588 00000 n 
-0002834739 00000 n 
-0002834890 00000 n 
-0002835042 00000 n 
-0002835193 00000 n 
-0002835344 00000 n 
-0002835495 00000 n 
-0002835645 00000 n 
-0002835795 00000 n 
-0002835947 00000 n 
-0002836097 00000 n 
-0002836249 00000 n 
-0002836400 00000 n 
-0002836552 00000 n 
-0002836703 00000 n 
-0002836855 00000 n 
-0002837007 00000 n 
-0002837158 00000 n 
-0002837309 00000 n 
-0002837461 00000 n 
-0002837611 00000 n 
-0002837762 00000 n 
-0002837912 00000 n 
-0002838064 00000 n 
-0002838215 00000 n 
-0002838366 00000 n 
-0002838517 00000 n 
-0002838668 00000 n 
-0002838820 00000 n 
-0002838972 00000 n 
-0002839124 00000 n 
-0002839274 00000 n 
-0002839425 00000 n 
-0002839577 00000 n 
-0002839729 00000 n 
-0002839881 00000 n 
-0002840031 00000 n 
-0002840182 00000 n 
-0002840334 00000 n 
-0002840485 00000 n 
-0002840636 00000 n 
-0002840788 00000 n 
-0002840940 00000 n 
-0002841092 00000 n 
-0002841244 00000 n 
-0002841396 00000 n 
-0002841548 00000 n 
-0002841700 00000 n 
-0002841852 00000 n 
-0002842004 00000 n 
-0002842155 00000 n 
-0002842307 00000 n 
-0002842459 00000 n 
-0002842611 00000 n 
-0002842763 00000 n 
-0002842913 00000 n 
-0002843065 00000 n 
-0002843217 00000 n 
-0002843369 00000 n 
-0002843521 00000 n 
-0002843673 00000 n 
-0002843825 00000 n 
-0002843976 00000 n 
-0002844128 00000 n 
-0002844280 00000 n 
-0002844431 00000 n 
-0002844583 00000 n 
-0002844735 00000 n 
-0002844887 00000 n 
-0002845039 00000 n 
-0002845189 00000 n 
-0002845340 00000 n 
-0002845492 00000 n 
-0002845644 00000 n 
-0002845796 00000 n 
-0002845947 00000 n 
-0002846098 00000 n 
-0002846249 00000 n 
-0002846400 00000 n 
-0002846552 00000 n 
-0002846704 00000 n 
-0002846855 00000 n 
-0002847006 00000 n 
-0002847158 00000 n 
-0002850020 00000 n 
-0002850172 00000 n 
-0002847373 00000 n 
-0002826016 00000 n 
-0002824388 00000 n 
-0002847309 00000 n 
-0002850323 00000 n 
-0002850475 00000 n 
-0002850627 00000 n 
-0002850778 00000 n 
-0002850930 00000 n 
-0002851082 00000 n 
-0002851234 00000 n 
-0002851386 00000 n 
-0002851538 00000 n 
-0002851690 00000 n 
-0002851842 00000 n 
-0002851994 00000 n 
-0002852145 00000 n 
-0002852296 00000 n 
-0002852447 00000 n 
-0002852599 00000 n 
-0002852751 00000 n 
-0002852903 00000 n 
-0002853055 00000 n 
-0002853206 00000 n 
-0002853358 00000 n 
-0002853509 00000 n 
-0002853660 00000 n 
-0002853812 00000 n 
-0002853964 00000 n 
-0002854114 00000 n 
-0002854264 00000 n 
-0002854415 00000 n 
-0002854564 00000 n 
-0002854716 00000 n 
-0002854866 00000 n 
-0002855016 00000 n 
-0002855166 00000 n 
-0002855317 00000 n 
-0002855467 00000 n 
-0002855618 00000 n 
-0002855770 00000 n 
-0002855922 00000 n 
-0002856074 00000 n 
-0002856225 00000 n 
-0002856377 00000 n 
-0002856529 00000 n 
-0002856681 00000 n 
-0002856833 00000 n 
-0002856985 00000 n 
-0002857137 00000 n 
-0002857289 00000 n 
-0002857441 00000 n 
-0002857593 00000 n 
-0002857744 00000 n 
-0002857896 00000 n 
-0002858047 00000 n 
-0002858198 00000 n 
-0002858350 00000 n 
-0002858501 00000 n 
-0002858652 00000 n 
-0002858803 00000 n 
-0002858954 00000 n 
-0002859102 00000 n 
-0002859250 00000 n 
-0002859402 00000 n 
-0002859554 00000 n 
-0002859706 00000 n 
-0002859858 00000 n 
-0002860010 00000 n 
-0002860162 00000 n 
-0002860314 00000 n 
-0002860466 00000 n 
-0002860618 00000 n 
-0002860770 00000 n 
-0002860922 00000 n 
-0002861073 00000 n 
-0002861224 00000 n 
-0002861375 00000 n 
-0002861527 00000 n 
-0002861679 00000 n 
-0002861831 00000 n 
-0002861982 00000 n 
-0002862134 00000 n 
-0002862284 00000 n 
-0002862436 00000 n 
-0002862588 00000 n 
-0002862740 00000 n 
-0002862891 00000 n 
-0002863041 00000 n 
-0002863193 00000 n 
-0002863345 00000 n 
-0002863497 00000 n 
-0002863648 00000 n 
-0002863798 00000 n 
-0002863950 00000 n 
-0002864102 00000 n 
-0002864254 00000 n 
-0002864406 00000 n 
-0002864558 00000 n 
-0002864710 00000 n 
-0002864861 00000 n 
-0002865013 00000 n 
-0002865165 00000 n 
-0002868251 00000 n 
-0002868402 00000 n 
-0002865381 00000 n 
-0002848983 00000 n 
-0002847489 00000 n 
-0002865317 00000 n 
-0002868554 00000 n 
-0002868704 00000 n 
-0002868856 00000 n 
-0002869006 00000 n 
-0002869155 00000 n 
-0002869305 00000 n 
-0002869454 00000 n 
-0002869604 00000 n 
-0002869754 00000 n 
-0002869905 00000 n 
-0002870056 00000 n 
-0002870207 00000 n 
-0002870358 00000 n 
-0002870508 00000 n 
-0002870659 00000 n 
-0002870810 00000 n 
-0002870960 00000 n 
-0002871110 00000 n 
-0002871262 00000 n 
-0002871414 00000 n 
-0002871564 00000 n 
-0002871714 00000 n 
-0002871865 00000 n 
-0002872016 00000 n 
-0002872168 00000 n 
-0002872320 00000 n 
-0002872471 00000 n 
-0002872621 00000 n 
-0002872773 00000 n 
-0002872925 00000 n 
-0002873076 00000 n 
-0002873227 00000 n 
-0002873378 00000 n 
-0002873529 00000 n 
-0002873681 00000 n 
-0002873833 00000 n 
-0002873985 00000 n 
-0002874137 00000 n 
-0002874289 00000 n 
-0002874440 00000 n 
-0002874592 00000 n 
-0002874744 00000 n 
-0002874895 00000 n 
-0002875047 00000 n 
-0002875199 00000 n 
-0002875349 00000 n 
-0002875499 00000 n 
-0002875649 00000 n 
-0002875801 00000 n 
-0002875952 00000 n 
-0002876104 00000 n 
-0002876255 00000 n 
-0002876406 00000 n 
-0002876558 00000 n 
-0002876710 00000 n 
-0002876862 00000 n 
-0002877013 00000 n 
-0002877165 00000 n 
-0002877317 00000 n 
-0002877469 00000 n 
-0002877619 00000 n 
-0002877770 00000 n 
-0002877920 00000 n 
-0002878071 00000 n 
-0002878223 00000 n 
-0002878375 00000 n 
-0002878527 00000 n 
-0002878679 00000 n 
-0002878831 00000 n 
-0002878983 00000 n 
-0002879132 00000 n 
-0002879282 00000 n 
-0002879434 00000 n 
-0002879586 00000 n 
-0002879737 00000 n 
-0002879887 00000 n 
-0002880038 00000 n 
-0002880189 00000 n 
-0002880340 00000 n 
-0002880492 00000 n 
-0002880644 00000 n 
-0002880796 00000 n 
-0002880948 00000 n 
-0002881098 00000 n 
-0002881249 00000 n 
-0002881400 00000 n 
-0002881551 00000 n 
-0002881702 00000 n 
-0002881853 00000 n 
-0002882005 00000 n 
-0002882156 00000 n 
-0002882308 00000 n 
-0002882460 00000 n 
-0002882612 00000 n 
-0002882763 00000 n 
-0002882915 00000 n 
-0002883067 00000 n 
-0002883219 00000 n 
-0002883371 00000 n 
-0002883522 00000 n 
-0002883672 00000 n 
-0002883824 00000 n 
-0002883976 00000 n 
-0002884128 00000 n 
-0002884280 00000 n 
-0002884432 00000 n 
-0002884583 00000 n 
-0002884735 00000 n 
-0002884886 00000 n 
-0002885037 00000 n 
-0002885188 00000 n 
-0002885339 00000 n 
-0002885491 00000 n 
-0002885643 00000 n 
-0002885795 00000 n 
-0002885947 00000 n 
-0002886098 00000 n 
-0002886250 00000 n 
-0002886401 00000 n 
-0002886553 00000 n 
-0002886705 00000 n 
-0002889434 00000 n 
-0002886921 00000 n 
-0002867016 00000 n 
-0002865497 00000 n 
-0002886857 00000 n 
-0003388355 00000 n 
-0002889586 00000 n 
-0002889738 00000 n 
-0002889890 00000 n 
-0002890040 00000 n 
-0002890191 00000 n 
-0002890341 00000 n 
-0002890490 00000 n 
-0002890639 00000 n 
-0002890790 00000 n 
-0002890940 00000 n 
-0002891091 00000 n 
-0002891243 00000 n 
-0002891395 00000 n 
-0002891547 00000 n 
-0002891699 00000 n 
-0002891851 00000 n 
-0002892003 00000 n 
-0002892154 00000 n 
-0002892306 00000 n 
-0002892458 00000 n 
-0002892610 00000 n 
-0002892762 00000 n 
-0002892913 00000 n 
-0002893064 00000 n 
-0002893215 00000 n 
-0002893366 00000 n 
-0002893518 00000 n 
-0002893670 00000 n 
-0002893822 00000 n 
-0002893974 00000 n 
-0002894126 00000 n 
-0002894278 00000 n 
-0002894429 00000 n 
-0002894581 00000 n 
-0002894731 00000 n 
-0002894880 00000 n 
-0002895032 00000 n 
-0002895184 00000 n 
-0002895335 00000 n 
-0002895486 00000 n 
-0002895638 00000 n 
-0002895790 00000 n 
-0002895942 00000 n 
-0002896094 00000 n 
-0002896246 00000 n 
-0002896398 00000 n 
-0002896550 00000 n 
-0002896702 00000 n 
-0002896854 00000 n 
-0002897006 00000 n 
-0002897155 00000 n 
-0002897304 00000 n 
-0002897456 00000 n 
-0002897607 00000 n 
-0002897759 00000 n 
-0002897911 00000 n 
-0002898063 00000 n 
-0002898214 00000 n 
-0002898366 00000 n 
-0002898518 00000 n 
-0002898670 00000 n 
-0002898822 00000 n 
-0002898974 00000 n 
-0002899126 00000 n 
-0002899278 00000 n 
-0002899430 00000 n 
-0002899581 00000 n 
-0002899733 00000 n 
-0002899885 00000 n 
-0002900036 00000 n 
-0002900187 00000 n 
-0002900338 00000 n 
-0002900489 00000 n 
-0002900641 00000 n 
-0002900793 00000 n 
-0002900944 00000 n 
-0002901095 00000 n 
-0002901246 00000 n 
-0002901396 00000 n 
-0002901547 00000 n 
-0002901699 00000 n 
-0002901851 00000 n 
-0002902002 00000 n 
-0002902154 00000 n 
-0002902305 00000 n 
-0002902457 00000 n 
-0002902608 00000 n 
-0002902760 00000 n 
-0002902912 00000 n 
-0002903064 00000 n 
-0002903215 00000 n 
-0002906063 00000 n 
-0002903431 00000 n 
-0002888478 00000 n 
-0002887037 00000 n 
-0002903367 00000 n 
-0002906213 00000 n 
-0002906365 00000 n 
-0002906517 00000 n 
-0002906669 00000 n 
-0002906820 00000 n 
-0002906970 00000 n 
-0002907122 00000 n 
-0002907273 00000 n 
-0002907424 00000 n 
-0002907576 00000 n 
-0002907728 00000 n 
-0002907879 00000 n 
-0002908031 00000 n 
-0002908183 00000 n 
-0002908335 00000 n 
-0002908484 00000 n 
-0002908636 00000 n 
-0002908788 00000 n 
-0002908939 00000 n 
-0002909091 00000 n 
-0002909243 00000 n 
-0002909395 00000 n 
-0002909546 00000 n 
-0002909696 00000 n 
-0002909848 00000 n 
-0002909999 00000 n 
-0002910150 00000 n 
-0002910299 00000 n 
-0002910450 00000 n 
-0002910602 00000 n 
-0002910752 00000 n 
-0002910904 00000 n 
-0002911055 00000 n 
-0002911205 00000 n 
-0002911356 00000 n 
-0002911508 00000 n 
-0002911660 00000 n 
-0002911812 00000 n 
-0002911964 00000 n 
-0002912115 00000 n 
-0002912267 00000 n 
-0002912419 00000 n 
-0002912570 00000 n 
-0002912721 00000 n 
-0002912872 00000 n 
-0002913024 00000 n 
-0002913175 00000 n 
-0002913327 00000 n 
-0002913479 00000 n 
-0002913631 00000 n 
-0002913782 00000 n 
-0002913933 00000 n 
-0002914085 00000 n 
-0002914237 00000 n 
-0002914389 00000 n 
-0002914541 00000 n 
-0002914693 00000 n 
-0002914845 00000 n 
-0002914997 00000 n 
-0002915149 00000 n 
-0002915301 00000 n 
-0002915453 00000 n 
-0002915605 00000 n 
-0002915757 00000 n 
-0002915909 00000 n 
-0002916059 00000 n 
-0002916211 00000 n 
-0002916362 00000 n 
-0002916513 00000 n 
-0002916664 00000 n 
-0002916816 00000 n 
-0002916968 00000 n 
-0002917120 00000 n 
-0002917272 00000 n 
-0002917424 00000 n 
-0002917576 00000 n 
-0002917728 00000 n 
-0002917880 00000 n 
-0002918032 00000 n 
-0002918183 00000 n 
-0002918334 00000 n 
-0002918485 00000 n 
-0002918636 00000 n 
-0002918786 00000 n 
-0002918938 00000 n 
-0002919089 00000 n 
-0002919240 00000 n 
-0002919390 00000 n 
-0002919541 00000 n 
-0002919691 00000 n 
-0002919842 00000 n 
-0002919993 00000 n 
-0002920144 00000 n 
-0002920296 00000 n 
-0002920448 00000 n 
-0002920600 00000 n 
-0002920752 00000 n 
-0002920904 00000 n 
-0002921056 00000 n 
-0002921208 00000 n 
-0002921358 00000 n 
-0002921509 00000 n 
-0002921660 00000 n 
-0002921811 00000 n 
-0002921963 00000 n 
-0002922115 00000 n 
-0002925200 00000 n 
-0002925351 00000 n 
-0002922331 00000 n 
-0002904972 00000 n 
-0002903547 00000 n 
-0002922267 00000 n 
-0002925502 00000 n 
-0002925654 00000 n 
-0002925805 00000 n 
-0002925956 00000 n 
-0002926107 00000 n 
-0002926259 00000 n 
-0002926409 00000 n 
-0002926561 00000 n 
-0002926713 00000 n 
-0002926865 00000 n 
-0002927017 00000 n 
-0002927168 00000 n 
-0002927319 00000 n 
-0002927471 00000 n 
-0002927623 00000 n 
-0002927775 00000 n 
-0002927926 00000 n 
-0002928077 00000 n 
-0002928229 00000 n 
-0002928380 00000 n 
-0002928532 00000 n 
-0002928684 00000 n 
-0002928835 00000 n 
-0002928987 00000 n 
-0002929139 00000 n 
-0002929290 00000 n 
-0002929442 00000 n 
-0002929594 00000 n 
-0002929744 00000 n 
-0002929896 00000 n 
-0002930048 00000 n 
-0002930200 00000 n 
-0002930352 00000 n 
-0002930504 00000 n 
-0002930656 00000 n 
-0002930808 00000 n 
-0002930959 00000 n 
-0002931111 00000 n 
-0002931263 00000 n 
-0002931415 00000 n 
-0002931567 00000 n 
-0002931719 00000 n 
-0002931871 00000 n 
-0002932022 00000 n 
-0002932172 00000 n 
-0002932324 00000 n 
-0002932476 00000 n 
-0002932628 00000 n 
-0002932780 00000 n 
-0002932932 00000 n 
-0002933084 00000 n 
-0002933236 00000 n 
-0002933388 00000 n 
-0002933540 00000 n 
-0002933692 00000 n 
-0002933844 00000 n 
-0002933995 00000 n 
-0002934147 00000 n 
-0002934299 00000 n 
-0002934451 00000 n 
-0002934603 00000 n 
-0002934755 00000 n 
-0002934907 00000 n 
-0002935059 00000 n 
-0002935209 00000 n 
-0002935360 00000 n 
-0002935512 00000 n 
-0002935664 00000 n 
-0002935815 00000 n 
-0002935964 00000 n 
-0002936115 00000 n 
-0002936266 00000 n 
-0002936418 00000 n 
-0002936570 00000 n 
-0002936721 00000 n 
-0002936873 00000 n 
-0002937023 00000 n 
-0002937174 00000 n 
-0002937325 00000 n 
-0002937477 00000 n 
-0002937629 00000 n 
-0002937781 00000 n 
-0002937933 00000 n 
-0002938085 00000 n 
-0002938237 00000 n 
-0002938389 00000 n 
-0002938541 00000 n 
-0002938692 00000 n 
-0002938843 00000 n 
-0002938995 00000 n 
-0002939145 00000 n 
-0002939296 00000 n 
-0002939448 00000 n 
-0002939600 00000 n 
-0002939750 00000 n 
-0002939901 00000 n 
-0002940053 00000 n 
-0002940204 00000 n 
-0002940353 00000 n 
-0002940504 00000 n 
-0002940653 00000 n 
-0002940804 00000 n 
-0002940956 00000 n 
-0002941108 00000 n 
-0002941260 00000 n 
-0002941411 00000 n 
-0002941562 00000 n 
-0002941713 00000 n 
-0002941864 00000 n 
-0002942014 00000 n 
-0002942164 00000 n 
-0002942313 00000 n 
-0002942464 00000 n 
-0002942615 00000 n 
-0002942766 00000 n 
-0002942918 00000 n 
-0002946031 00000 n 
-0002943133 00000 n 
-0002924010 00000 n 
-0002922447 00000 n 
-0002943069 00000 n 
-0002946183 00000 n 
-0002946334 00000 n 
-0002946486 00000 n 
-0002946638 00000 n 
-0002946790 00000 n 
-0002946942 00000 n 
-0002947092 00000 n 
-0002947244 00000 n 
-0002947396 00000 n 
-0002947548 00000 n 
-0002947699 00000 n 
-0002947851 00000 n 
-0002948003 00000 n 
-0002948155 00000 n 
-0002948307 00000 n 
-0002948459 00000 n 
-0002948610 00000 n 
-0002948761 00000 n 
-0002948913 00000 n 
-0002949065 00000 n 
-0002949216 00000 n 
-0002949368 00000 n 
-0002949520 00000 n 
-0002949672 00000 n 
-0002949823 00000 n 
-0002949974 00000 n 
-0002950126 00000 n 
-0002950278 00000 n 
-0002950430 00000 n 
-0002950581 00000 n 
-0002950732 00000 n 
-0002950884 00000 n 
-0002951034 00000 n 
-0002951185 00000 n 
-0002951336 00000 n 
-0002951487 00000 n 
-0002951637 00000 n 
-0002951787 00000 n 
-0002951937 00000 n 
-0002952088 00000 n 
-0002952239 00000 n 
-0002952390 00000 n 
-0002952541 00000 n 
-0002952692 00000 n 
-0002952843 00000 n 
-0002952992 00000 n 
-0002953144 00000 n 
-0002953296 00000 n 
-0002953448 00000 n 
-0002953600 00000 n 
-0002953752 00000 n 
-0002953904 00000 n 
-0002954056 00000 n 
-0002954208 00000 n 
-0002954359 00000 n 
-0002954511 00000 n 
-0002954662 00000 n 
-0002954814 00000 n 
-0002954964 00000 n 
-0002955116 00000 n 
-0002955267 00000 n 
-0002955419 00000 n 
-0002955571 00000 n 
-0002955723 00000 n 
-0002955875 00000 n 
-0002956026 00000 n 
-0002956178 00000 n 
-0002956330 00000 n 
-0002956481 00000 n 
-0002956632 00000 n 
-0002956780 00000 n 
-0002956928 00000 n 
-0002957077 00000 n 
-0002957226 00000 n 
-0002957375 00000 n 
-0002957524 00000 n 
-0002957673 00000 n 
-0002957825 00000 n 
-0002957976 00000 n 
-0002958128 00000 n 
-0002958280 00000 n 
-0002958432 00000 n 
-0002958584 00000 n 
-0002958736 00000 n 
-0002958888 00000 n 
-0002959039 00000 n 
-0002959191 00000 n 
-0002959343 00000 n 
-0002959495 00000 n 
-0002959646 00000 n 
-0002959797 00000 n 
-0002959948 00000 n 
-0002960098 00000 n 
-0002960250 00000 n 
-0002960401 00000 n 
-0002960553 00000 n 
-0002960705 00000 n 
-0002960857 00000 n 
-0002961009 00000 n 
-0002961161 00000 n 
-0002961313 00000 n 
-0002961463 00000 n 
-0002961614 00000 n 
-0002961764 00000 n 
-0002961916 00000 n 
-0002962068 00000 n 
-0002962219 00000 n 
-0002962369 00000 n 
-0002962520 00000 n 
-0002962671 00000 n 
-0002962822 00000 n 
-0002962973 00000 n 
-0002963124 00000 n 
-0002963275 00000 n 
-0002963426 00000 n 
-0002963577 00000 n 
-0002966464 00000 n 
-0002963793 00000 n 
-0002944850 00000 n 
-0002943235 00000 n 
-0002963729 00000 n 
-0002966616 00000 n 
-0002966768 00000 n 
-0002966918 00000 n 
-0002967070 00000 n 
-0002967222 00000 n 
-0002967373 00000 n 
-0002967524 00000 n 
-0002967675 00000 n 
-0002967826 00000 n 
-0002967978 00000 n 
-0002968129 00000 n 
-0002968281 00000 n 
-0002968433 00000 n 
-0002968585 00000 n 
-0002968736 00000 n 
-0002968888 00000 n 
-0002969040 00000 n 
-0002969192 00000 n 
-0002969344 00000 n 
-0002969496 00000 n 
-0002969648 00000 n 
-0002969800 00000 n 
-0002969952 00000 n 
-0002970103 00000 n 
-0002970254 00000 n 
-0002970405 00000 n 
-0002970557 00000 n 
-0002970708 00000 n 
-0002970859 00000 n 
-0002971010 00000 n 
-0002971161 00000 n 
-0002971311 00000 n 
-0002971462 00000 n 
-0002971612 00000 n 
-0002971764 00000 n 
-0002971913 00000 n 
-0002972064 00000 n 
-0002972215 00000 n 
-0002972365 00000 n 
-0002972517 00000 n 
-0002972668 00000 n 
-0002972820 00000 n 
-0002972972 00000 n 
-0002973124 00000 n 
-0002973275 00000 n 
-0002973427 00000 n 
-0002973579 00000 n 
-0002973730 00000 n 
-0002973881 00000 n 
-0002974032 00000 n 
-0002974183 00000 n 
-0002974335 00000 n 
-0002974487 00000 n 
-0002974639 00000 n 
-0002974791 00000 n 
-0002974943 00000 n 
-0002975094 00000 n 
-0002975245 00000 n 
-0002975396 00000 n 
-0002975547 00000 n 
-0002975699 00000 n 
-0002975850 00000 n 
-0002976001 00000 n 
-0002976153 00000 n 
-0002976305 00000 n 
-0002976457 00000 n 
-0002976609 00000 n 
-0002976761 00000 n 
-0002976913 00000 n 
-0002977065 00000 n 
-0002977217 00000 n 
-0002977369 00000 n 
-0002977521 00000 n 
-0002977673 00000 n 
-0002977825 00000 n 
-0002977976 00000 n 
-0002978128 00000 n 
-0002978280 00000 n 
-0002978432 00000 n 
-0002978584 00000 n 
-0002978734 00000 n 
-0002978886 00000 n 
-0002979037 00000 n 
-0002979189 00000 n 
-0002979340 00000 n 
-0002979492 00000 n 
-0002979643 00000 n 
-0002979795 00000 n 
-0002979946 00000 n 
-0002980098 00000 n 
-0002980248 00000 n 
-0002980400 00000 n 
-0002980552 00000 n 
-0002980704 00000 n 
-0002980854 00000 n 
-0002981006 00000 n 
-0002981156 00000 n 
-0002981307 00000 n 
-0002981459 00000 n 
-0002984161 00000 n 
-0002984312 00000 n 
-0002981675 00000 n 
-0002965436 00000 n 
-0002963909 00000 n 
-0002981611 00000 n 
-0002984464 00000 n 
-0002984615 00000 n 
-0002984766 00000 n 
-0002984916 00000 n 
-0002985067 00000 n 
-0002985217 00000 n 
-0002985368 00000 n 
-0002985519 00000 n 
-0002985670 00000 n 
-0002985821 00000 n 
-0002985973 00000 n 
-0002986125 00000 n 
-0002986277 00000 n 
-0002986428 00000 n 
-0002986580 00000 n 
-0002986731 00000 n 
-0002986882 00000 n 
-0002987034 00000 n 
-0002987185 00000 n 
-0002987335 00000 n 
-0002987485 00000 n 
-0002987635 00000 n 
-0002987786 00000 n 
-0002987937 00000 n 
-0002988088 00000 n 
-0002988239 00000 n 
-0002988390 00000 n 
-0002988541 00000 n 
-0002988693 00000 n 
-0002988845 00000 n 
-0002988997 00000 n 
-0002989149 00000 n 
-0002989301 00000 n 
-0002989453 00000 n 
-0002989605 00000 n 
-0002989757 00000 n 
-0002989909 00000 n 
-0002990061 00000 n 
-0002990212 00000 n 
-0002990364 00000 n 
-0002990515 00000 n 
-0002990665 00000 n 
-0002990817 00000 n 
-0002990969 00000 n 
-0002991121 00000 n 
-0002991272 00000 n 
-0002991423 00000 n 
-0002991575 00000 n 
-0002991727 00000 n 
-0002991878 00000 n 
-0002992028 00000 n 
-0002992180 00000 n 
-0002992332 00000 n 
-0002992482 00000 n 
-0002992634 00000 n 
-0002992786 00000 n 
-0002992937 00000 n 
-0002993087 00000 n 
-0002993239 00000 n 
-0002993391 00000 n 
-0002993543 00000 n 
-0002993693 00000 n 
-0002993842 00000 n 
-0002993994 00000 n 
-0002994146 00000 n 
-0002994298 00000 n 
-0002994450 00000 n 
-0002994602 00000 n 
-0002994754 00000 n 
-0002994904 00000 n 
-0002995056 00000 n 
-0002995207 00000 n 
-0002995359 00000 n 
-0002995510 00000 n 
-0002995660 00000 n 
-0002995811 00000 n 
-0002995963 00000 n 
-0002996115 00000 n 
-0002996267 00000 n 
-0002996418 00000 n 
-0002996570 00000 n 
-0002996722 00000 n 
-0002996874 00000 n 
-0002997023 00000 n 
-0002997175 00000 n 
-0002997327 00000 n 
-0002997478 00000 n 
-0002997628 00000 n 
-0002997780 00000 n 
-0002997931 00000 n 
-0002998082 00000 n 
-0002998233 00000 n 
-0002998449 00000 n 
-0002983187 00000 n 
-0002981791 00000 n 
-0002998385 00000 n 
-0003388480 00000 n 
-0003001773 00000 n 
-0003001923 00000 n 
-0003002075 00000 n 
-0003002226 00000 n 
-0003002377 00000 n 
-0003002529 00000 n 
-0003002680 00000 n 
-0003002832 00000 n 
-0003002983 00000 n 
-0003003134 00000 n 
-0003003285 00000 n 
-0003003437 00000 n 
-0003003589 00000 n 
-0003003741 00000 n 
-0003003893 00000 n 
-0003004045 00000 n 
-0003004197 00000 n 
-0003004348 00000 n 
-0003004500 00000 n 
-0003004652 00000 n 
-0003004803 00000 n 
-0003004953 00000 n 
-0003005104 00000 n 
-0003005256 00000 n 
-0003005408 00000 n 
-0003005560 00000 n 
-0003005712 00000 n 
-0003005863 00000 n 
-0003006013 00000 n 
-0003006165 00000 n 
-0003006317 00000 n 
-0003006469 00000 n 
-0003006621 00000 n 
-0003006773 00000 n 
-0003006925 00000 n 
-0003007077 00000 n 
-0003007229 00000 n 
-0003007381 00000 n 
-0003007533 00000 n 
-0003007685 00000 n 
-0003007837 00000 n 
-0003007989 00000 n 
-0003008141 00000 n 
-0003008293 00000 n 
-0003008445 00000 n 
-0003008597 00000 n 
-0003008749 00000 n 
-0003008901 00000 n 
-0003009053 00000 n 
-0003009204 00000 n 
-0003009355 00000 n 
-0003009506 00000 n 
-0003009658 00000 n 
-0003009810 00000 n 
-0003009960 00000 n 
-0003010112 00000 n 
-0003010264 00000 n 
-0003010416 00000 n 
-0003010568 00000 n 
-0003010720 00000 n 
-0003010872 00000 n 
-0003011023 00000 n 
-0003011174 00000 n 
-0003011324 00000 n 
-0003011475 00000 n 
-0003011626 00000 n 
-0003011778 00000 n 
-0003011930 00000 n 
-0003012082 00000 n 
-0003012230 00000 n 
-0003012380 00000 n 
-0003012532 00000 n 
-0003012684 00000 n 
-0003012836 00000 n 
-0003012987 00000 n 
-0003013139 00000 n 
-0003013291 00000 n 
-0003013443 00000 n 
-0003013595 00000 n 
-0003013747 00000 n 
-0003013899 00000 n 
-0003014051 00000 n 
-0003014203 00000 n 
-0003014355 00000 n 
-0003014507 00000 n 
-0003014658 00000 n 
-0003014810 00000 n 
-0003014957 00000 n 
-0003015109 00000 n 
-0003015261 00000 n 
-0003015409 00000 n 
-0003015559 00000 n 
-0003015711 00000 n 
-0003015862 00000 n 
-0003016014 00000 n 
-0003016166 00000 n 
-0003016318 00000 n 
-0003016469 00000 n 
-0003016620 00000 n 
-0003016771 00000 n 
-0003016923 00000 n 
-0003017073 00000 n 
-0003017223 00000 n 
-0003017375 00000 n 
-0003017527 00000 n 
-0003017679 00000 n 
-0003017831 00000 n 
-0003017983 00000 n 
-0003018134 00000 n 
-0003018284 00000 n 
-0003018435 00000 n 
-0003018587 00000 n 
-0003018739 00000 n 
-0003018891 00000 n 
-0003019042 00000 n 
-0003019193 00000 n 
-0003019345 00000 n 
-0003019497 00000 n 
-0003019649 00000 n 
-0003019801 00000 n 
-0003019953 00000 n 
-0003020105 00000 n 
-0003020257 00000 n 
-0003020408 00000 n 
-0003020560 00000 n 
-0003020711 00000 n 
-0003020863 00000 n 
-0003021015 00000 n 
-0003021165 00000 n 
-0003021317 00000 n 
-0003021469 00000 n 
-0003021621 00000 n 
-0003021773 00000 n 
-0003021925 00000 n 
-0003022077 00000 n 
-0003022228 00000 n 
-0003022378 00000 n 
-0003022528 00000 n 
-0003022678 00000 n 
-0003022830 00000 n 
-0003022982 00000 n 
-0003023132 00000 n 
-0003023283 00000 n 
-0003023498 00000 n 
-0003000358 00000 n 
-0002998565 00000 n 
-0003023434 00000 n 
-0003026423 00000 n 
-0003026574 00000 n 
-0003026725 00000 n 
-0003026877 00000 n 
-0003027028 00000 n 
-0003027180 00000 n 
-0003027331 00000 n 
-0003027482 00000 n 
-0003027631 00000 n 
-0003027783 00000 n 
-0003027935 00000 n 
-0003028087 00000 n 
-0003028239 00000 n 
-0003028391 00000 n 
-0003028543 00000 n 
-0003028694 00000 n 
-0003028845 00000 n 
-0003028995 00000 n 
-0003029146 00000 n 
-0003029296 00000 n 
-0003029447 00000 n 
-0003029598 00000 n 
-0003029749 00000 n 
-0003029900 00000 n 
-0003030051 00000 n 
-0003030200 00000 n 
-0003030351 00000 n 
-0003030502 00000 n 
-0003030654 00000 n 
-0003030806 00000 n 
-0003030958 00000 n 
-0003031110 00000 n 
-0003031262 00000 n 
-0003031414 00000 n 
-0003031566 00000 n 
-0003031718 00000 n 
-0003031870 00000 n 
-0003032022 00000 n 
-0003032174 00000 n 
-0003032325 00000 n 
-0003032476 00000 n 
-0003032628 00000 n 
-0003032780 00000 n 
-0003032931 00000 n 
-0003033082 00000 n 
-0003033233 00000 n 
-0003033384 00000 n 
-0003033536 00000 n 
-0003033688 00000 n 
-0003033839 00000 n 
-0003033991 00000 n 
-0003034143 00000 n 
-0003034295 00000 n 
-0003034447 00000 n 
-0003034599 00000 n 
-0003034751 00000 n 
-0003034903 00000 n 
-0003035054 00000 n 
-0003035205 00000 n 
-0003035357 00000 n 
-0003035509 00000 n 
-0003035660 00000 n 
-0003035811 00000 n 
-0003035961 00000 n 
-0003036113 00000 n 
-0003036264 00000 n 
-0003036415 00000 n 
-0003036566 00000 n 
-0003036717 00000 n 
-0003036868 00000 n 
-0003037019 00000 n 
-0003037171 00000 n 
-0003037323 00000 n 
-0003037474 00000 n 
-0003037625 00000 n 
-0003037777 00000 n 
-0003037929 00000 n 
-0003038080 00000 n 
-0003038232 00000 n 
-0003038384 00000 n 
-0003038535 00000 n 
-0003038687 00000 n 
-0003038839 00000 n 
-0003038991 00000 n 
-0003039142 00000 n 
-0003039290 00000 n 
-0003039438 00000 n 
-0003039590 00000 n 
-0003039741 00000 n 
-0003039891 00000 n 
-0003040043 00000 n 
-0003040195 00000 n 
-0003040345 00000 n 
-0003040496 00000 n 
-0003040645 00000 n 
-0003040797 00000 n 
-0003040948 00000 n 
-0003041098 00000 n 
-0003041249 00000 n 
-0003041401 00000 n 
-0003041553 00000 n 
-0003041704 00000 n 
-0003041855 00000 n 
-0003042006 00000 n 
-0003042158 00000 n 
-0003042308 00000 n 
-0003042458 00000 n 
-0003042609 00000 n 
-0003042760 00000 n 
-0003042912 00000 n 
-0003043062 00000 n 
-0003043214 00000 n 
-0003043366 00000 n 
-0003043518 00000 n 
-0003043669 00000 n 
-0003043820 00000 n 
-0003043971 00000 n 
-0003044122 00000 n 
-0003044272 00000 n 
-0003044424 00000 n 
-0003044575 00000 n 
-0003044727 00000 n 
-0003044879 00000 n 
-0003045029 00000 n 
-0003045181 00000 n 
-0003045333 00000 n 
-0003048229 00000 n 
-0003045548 00000 n 
-0003025161 00000 n 
-0003023614 00000 n 
-0003045484 00000 n 
-0003048381 00000 n 
-0003048532 00000 n 
-0003048683 00000 n 
-0003048835 00000 n 
-0003048987 00000 n 
-0003049138 00000 n 
-0003049290 00000 n 
-0003049442 00000 n 
-0003049594 00000 n 
-0003049746 00000 n 
-0003049898 00000 n 
-0003050050 00000 n 
-0003050202 00000 n 
-0003050353 00000 n 
-0003050504 00000 n 
-0003050655 00000 n 
-0003050807 00000 n 
-0003050958 00000 n 
-0003051110 00000 n 
-0003051262 00000 n 
-0003051414 00000 n 
-0003051565 00000 n 
-0003051715 00000 n 
-0003051867 00000 n 
-0003052018 00000 n 
-0003052169 00000 n 
-0003052321 00000 n 
-0003052473 00000 n 
-0003052625 00000 n 
-0003052777 00000 n 
-0003052928 00000 n 
-0003053079 00000 n 
-0003053230 00000 n 
-0003053382 00000 n 
-0003053534 00000 n 
-0003053686 00000 n 
-0003053836 00000 n 
-0003053987 00000 n 
-0003054139 00000 n 
-0003054290 00000 n 
-0003054439 00000 n 
-0003054591 00000 n 
-0003054743 00000 n 
-0003054895 00000 n 
-0003055047 00000 n 
-0003055199 00000 n 
-0003055351 00000 n 
-0003055502 00000 n 
-0003055654 00000 n 
-0003055805 00000 n 
-0003055955 00000 n 
-0003056105 00000 n 
-0003056257 00000 n 
-0003056408 00000 n 
-0003056556 00000 n 
-0003056707 00000 n 
-0003056859 00000 n 
-0003057009 00000 n 
-0003057158 00000 n 
-0003057310 00000 n 
-0003057462 00000 n 
-0003057614 00000 n 
-0003057766 00000 n 
-0003057917 00000 n 
-0003058069 00000 n 
-0003058221 00000 n 
-0003058373 00000 n 
-0003058525 00000 n 
-0003058677 00000 n 
-0003058829 00000 n 
-0003058980 00000 n 
-0003059131 00000 n 
-0003059282 00000 n 
-0003059433 00000 n 
-0003059584 00000 n 
-0003059736 00000 n 
-0003059888 00000 n 
-0003060040 00000 n 
-0003060192 00000 n 
-0003060344 00000 n 
-0003060496 00000 n 
-0003060647 00000 n 
-0003060799 00000 n 
-0003060951 00000 n 
-0003061103 00000 n 
-0003061254 00000 n 
-0003061406 00000 n 
-0003061557 00000 n 
-0003061708 00000 n 
-0003061858 00000 n 
-0003062009 00000 n 
-0003062158 00000 n 
-0003062310 00000 n 
-0003062462 00000 n 
-0003062614 00000 n 
-0003062766 00000 n 
-0003062918 00000 n 
-0003063069 00000 n 
-0003063219 00000 n 
-0003063371 00000 n 
-0003063523 00000 n 
-0003063674 00000 n 
-0003063826 00000 n 
-0003063978 00000 n 
-0003064130 00000 n 
-0003064281 00000 n 
-0003064432 00000 n 
-0003064584 00000 n 
-0003064736 00000 n 
-0003064888 00000 n 
-0003067744 00000 n 
-0003065104 00000 n 
-0003047102 00000 n 
-0003045664 00000 n 
-0003065040 00000 n 
-0003067894 00000 n 
-0003068046 00000 n 
-0003068198 00000 n 
-0003068350 00000 n 
-0003068502 00000 n 
-0003068653 00000 n 
-0003068804 00000 n 
-0003068955 00000 n 
-0003069107 00000 n 
-0003069259 00000 n 
-0003069411 00000 n 
-0003069563 00000 n 
-0003069713 00000 n 
-0003069865 00000 n 
-0003070017 00000 n 
-0003070165 00000 n 
-0003070317 00000 n 
-0003070468 00000 n 
-0003070620 00000 n 
-0003070772 00000 n 
-0003070924 00000 n 
-0003071076 00000 n 
-0003071228 00000 n 
-0003071380 00000 n 
-0003071532 00000 n 
-0003071684 00000 n 
-0003071836 00000 n 
-0003071988 00000 n 
-0003072139 00000 n 
-0003072291 00000 n 
-0003072442 00000 n 
-0003072593 00000 n 
-0003072744 00000 n 
-0003072894 00000 n 
-0003073046 00000 n 
-0003073197 00000 n 
-0003073348 00000 n 
-0003073499 00000 n 
-0003073650 00000 n 
-0003073801 00000 n 
-0003073953 00000 n 
-0003074105 00000 n 
-0003074257 00000 n 
-0003074409 00000 n 
-0003074561 00000 n 
-0003074713 00000 n 
-0003074865 00000 n 
-0003075017 00000 n 
-0003075169 00000 n 
-0003075321 00000 n 
-0003075473 00000 n 
-0003075625 00000 n 
-0003075776 00000 n 
-0003075928 00000 n 
-0003076080 00000 n 
-0003076232 00000 n 
-0003076384 00000 n 
-0003076536 00000 n 
-0003076688 00000 n 
-0003076840 00000 n 
-0003076992 00000 n 
-0003077144 00000 n 
-0003077296 00000 n 
-0003077448 00000 n 
-0003077600 00000 n 
-0003077749 00000 n 
-0003077897 00000 n 
-0003078048 00000 n 
-0003078200 00000 n 
-0003078352 00000 n 
-0003078503 00000 n 
-0003078654 00000 n 
-0003078805 00000 n 
-0003078957 00000 n 
-0003079109 00000 n 
-0003079261 00000 n 
-0003079412 00000 n 
-0003079562 00000 n 
-0003079714 00000 n 
-0003079865 00000 n 
-0003080017 00000 n 
-0003080168 00000 n 
-0003080319 00000 n 
-0003080471 00000 n 
-0003080623 00000 n 
-0003080774 00000 n 
-0003080926 00000 n 
-0003081078 00000 n 
-0003081229 00000 n 
-0003081381 00000 n 
-0003081533 00000 n 
-0003081684 00000 n 
-0003081834 00000 n 
-0003081985 00000 n 
-0003082137 00000 n 
-0003082288 00000 n 
-0003082439 00000 n 
-0003082590 00000 n 
-0003082741 00000 n 
-0003082893 00000 n 
-0003083044 00000 n 
-0003083196 00000 n 
-0003083348 00000 n 
-0003083500 00000 n 
-0003087085 00000 n 
-0003083716 00000 n 
-0003066671 00000 n 
-0003065206 00000 n 
-0003083652 00000 n 
-0003087236 00000 n 
-0003087387 00000 n 
-0003087539 00000 n 
-0003087691 00000 n 
-0003087843 00000 n 
-0003087995 00000 n 
-0003088147 00000 n 
-0003088299 00000 n 
-0003088451 00000 n 
-0003088603 00000 n 
-0003088755 00000 n 
-0003088907 00000 n 
-0003089059 00000 n 
-0003089209 00000 n 
-0003089358 00000 n 
-0003089510 00000 n 
-0003089662 00000 n 
-0003089814 00000 n 
-0003089966 00000 n 
-0003090117 00000 n 
-0003090269 00000 n 
-0003090421 00000 n 
-0003090573 00000 n 
-0003090725 00000 n 
-0003090877 00000 n 
-0003091029 00000 n 
-0003091181 00000 n 
-0003091333 00000 n 
-0003091484 00000 n 
-0003091634 00000 n 
-0003091785 00000 n 
-0003091934 00000 n 
-0003092085 00000 n 
-0003092237 00000 n 
-0003092389 00000 n 
-0003092539 00000 n 
-0003092690 00000 n 
-0003092841 00000 n 
-0003092992 00000 n 
-0003093144 00000 n 
-0003093296 00000 n 
-0003093448 00000 n 
-0003093600 00000 n 
-0003093752 00000 n 
-0003093904 00000 n 
-0003094056 00000 n 
-0003094208 00000 n 
-0003094360 00000 n 
-0003094512 00000 n 
-0003094664 00000 n 
-0003094816 00000 n 
-0003094967 00000 n 
-0003095119 00000 n 
-0003095270 00000 n 
-0003095422 00000 n 
-0003095574 00000 n 
-0003095725 00000 n 
-0003095876 00000 n 
-0003096027 00000 n 
-0003096178 00000 n 
-0003096329 00000 n 
-0003096479 00000 n 
-0003096629 00000 n 
-0003096781 00000 n 
-0003096933 00000 n 
-0003097084 00000 n 
-0003097236 00000 n 
-0003097387 00000 n 
-0003097537 00000 n 
-0003097688 00000 n 
-0003097839 00000 n 
-0003097989 00000 n 
-0003098140 00000 n 
-0003098291 00000 n 
-0003098443 00000 n 
-0003098591 00000 n 
-0003098743 00000 n 
-0003098895 00000 n 
-0003099047 00000 n 
-0003099199 00000 n 
-0003099351 00000 n 
-0003099503 00000 n 
-0003099655 00000 n 
-0003099807 00000 n 
-0003099959 00000 n 
-0003100111 00000 n 
-0003100263 00000 n 
-0003100414 00000 n 
-0003100565 00000 n 
-0003100717 00000 n 
-0003100869 00000 n 
-0003101021 00000 n 
-0003101172 00000 n 
-0003101324 00000 n 
-0003101475 00000 n 
-0003101627 00000 n 
-0003101779 00000 n 
-0003101930 00000 n 
-0003102080 00000 n 
-0003102231 00000 n 
-0003102382 00000 n 
-0003102534 00000 n 
-0003102685 00000 n 
-0003102835 00000 n 
-0003102986 00000 n 
-0003103138 00000 n 
-0003103290 00000 n 
-0003103442 00000 n 
-0003103594 00000 n 
-0003103746 00000 n 
-0003103896 00000 n 
-0003104047 00000 n 
-0003104199 00000 n 
-0003104351 00000 n 
-0003104503 00000 n 
-0003104654 00000 n 
-0003104806 00000 n 
-0003104957 00000 n 
-0003105107 00000 n 
-0003105258 00000 n 
-0003105409 00000 n 
-0003105560 00000 n 
-0003105711 00000 n 
-0003105863 00000 n 
-0003106013 00000 n 
-0003106163 00000 n 
-0003106314 00000 n 
-0003106463 00000 n 
-0003106614 00000 n 
-0003106766 00000 n 
-0003106918 00000 n 
-0003107068 00000 n 
-0003107219 00000 n 
-0003107369 00000 n 
-0003107519 00000 n 
-0003107670 00000 n 
-0003107821 00000 n 
-0003107973 00000 n 
-0003108124 00000 n 
-0003108275 00000 n 
-0003108427 00000 n 
-0003108579 00000 n 
-0003108731 00000 n 
-0003108882 00000 n 
-0003109032 00000 n 
-0003109183 00000 n 
-0003109334 00000 n 
-0003109486 00000 n 
-0003109637 00000 n 
-0003109789 00000 n 
-0003109941 00000 n 
-0003110093 00000 n 
-0003110245 00000 n 
-0003110395 00000 n 
-0003110545 00000 n 
-0003110697 00000 n 
-0003110848 00000 n 
-0003110999 00000 n 
-0003111150 00000 n 
-0003111301 00000 n 
-0003111453 00000 n 
-0003111605 00000 n 
-0003111757 00000 n 
-0003111909 00000 n 
-0003115027 00000 n 
-0003115178 00000 n 
-0003112125 00000 n 
-0003085472 00000 n 
-0003083832 00000 n 
-0003112061 00000 n 
-0003115329 00000 n 
-0003115480 00000 n 
-0003115631 00000 n 
-0003115781 00000 n 
-0003115932 00000 n 
-0003116084 00000 n 
-0003116235 00000 n 
-0003116387 00000 n 
-0003116539 00000 n 
-0003116691 00000 n 
-0003116843 00000 n 
-0003116995 00000 n 
-0003117146 00000 n 
-0003117297 00000 n 
-0003117448 00000 n 
-0003117600 00000 n 
-0003117752 00000 n 
-0003117904 00000 n 
-0003118056 00000 n 
-0003118208 00000 n 
-0003118360 00000 n 
-0003118512 00000 n 
-0003118664 00000 n 
-0003118816 00000 n 
-0003118966 00000 n 
-0003119117 00000 n 
-0003119267 00000 n 
-0003119418 00000 n 
-0003119569 00000 n 
-0003119721 00000 n 
-0003119873 00000 n 
-0003120024 00000 n 
-0003120175 00000 n 
-0003120327 00000 n 
-0003120479 00000 n 
-0003120629 00000 n 
-0003120781 00000 n 
-0003120933 00000 n 
-0003121084 00000 n 
-0003121235 00000 n 
-0003121386 00000 n 
-0003121538 00000 n 
-0003121690 00000 n 
-0003121842 00000 n 
-0003121994 00000 n 
-0003122145 00000 n 
-0003122297 00000 n 
-0003122449 00000 n 
-0003122601 00000 n 
-0003122753 00000 n 
-0003122905 00000 n 
-0003123056 00000 n 
-0003123208 00000 n 
-0003123359 00000 n 
-0003123511 00000 n 
-0003123660 00000 n 
-0003123811 00000 n 
-0003123963 00000 n 
-0003124115 00000 n 
-0003124267 00000 n 
-0003124419 00000 n 
-0003124571 00000 n 
-0003124723 00000 n 
-0003124875 00000 n 
-0003125027 00000 n 
-0003125179 00000 n 
-0003125331 00000 n 
-0003125481 00000 n 
-0003125633 00000 n 
-0003125784 00000 n 
-0003125935 00000 n 
-0003126086 00000 n 
-0003126237 00000 n 
-0003126389 00000 n 
-0003126540 00000 n 
-0003126692 00000 n 
-0003126843 00000 n 
-0003126995 00000 n 
-0003127146 00000 n 
-0003127297 00000 n 
-0003127449 00000 n 
-0003127601 00000 n 
-0003127753 00000 n 
-0003127905 00000 n 
-0003128057 00000 n 
-0003128209 00000 n 
-0003128359 00000 n 
-0003128509 00000 n 
-0003128659 00000 n 
-0003128810 00000 n 
-0003128962 00000 n 
-0003129114 00000 n 
-0003129265 00000 n 
-0003129417 00000 n 
-0003129569 00000 n 
-0003129721 00000 n 
-0003129872 00000 n 
-0003130024 00000 n 
-0003130175 00000 n 
-0003130326 00000 n 
-0003130478 00000 n 
-0003130628 00000 n 
-0003130779 00000 n 
-0003130931 00000 n 
-0003131081 00000 n 
-0003131232 00000 n 
-0003131383 00000 n 
-0003131534 00000 n 
-0003131686 00000 n 
-0003131838 00000 n 
-0003131989 00000 n 
-0003132141 00000 n 
-0003132292 00000 n 
-0003132444 00000 n 
-0003132595 00000 n 
-0003132746 00000 n 
-0003132898 00000 n 
-0003133050 00000 n 
-0003133202 00000 n 
-0003133354 00000 n 
-0003133506 00000 n 
-0003133658 00000 n 
-0003136783 00000 n 
-0003136934 00000 n 
-0003133874 00000 n 
-0003113783 00000 n 
-0003112241 00000 n 
-0003133810 00000 n 
-0003388605 00000 n 
-0003137086 00000 n 
-0003137236 00000 n 
-0003137386 00000 n 
-0003137536 00000 n 
-0003137686 00000 n 
-0003137835 00000 n 
-0003137987 00000 n 
-0003138139 00000 n 
-0003138291 00000 n 
-0003138443 00000 n 
-0003138593 00000 n 
-0003138744 00000 n 
-0003138896 00000 n 
-0003139048 00000 n 
-0003139199 00000 n 
-0003139350 00000 n 
-0003139501 00000 n 
-0003139652 00000 n 
-0003139804 00000 n 
-0003139955 00000 n 
-0003140107 00000 n 
-0003140259 00000 n 
-0003140411 00000 n 
-0003140563 00000 n 
-0003140715 00000 n 
-0003140867 00000 n 
-0003141019 00000 n 
-0003141171 00000 n 
-0003141323 00000 n 
-0003141475 00000 n 
-0003141627 00000 n 
-0003141778 00000 n 
-0003141929 00000 n 
-0003142081 00000 n 
-0003142233 00000 n 
-0003142384 00000 n 
-0003142535 00000 n 
-0003142686 00000 n 
-0003142838 00000 n 
-0003142990 00000 n 
-0003143142 00000 n 
-0003143294 00000 n 
-0003143446 00000 n 
-0003143598 00000 n 
-0003143750 00000 n 
-0003143902 00000 n 
-0003144054 00000 n 
-0003144206 00000 n 
-0003144358 00000 n 
-0003144510 00000 n 
-0003144662 00000 n 
-0003144813 00000 n 
-0003144964 00000 n 
-0003145115 00000 n 
-0003145267 00000 n 
-0003145419 00000 n 
-0003145570 00000 n 
-0003145722 00000 n 
-0003145873 00000 n 
-0003146025 00000 n 
-0003146177 00000 n 
-0003146329 00000 n 
-0003146481 00000 n 
-0003146633 00000 n 
-0003146785 00000 n 
-0003146937 00000 n 
-0003147089 00000 n 
-0003147241 00000 n 
-0003147392 00000 n 
-0003147544 00000 n 
-0003147695 00000 n 
-0003147845 00000 n 
-0003147997 00000 n 
-0003148147 00000 n 
-0003148299 00000 n 
-0003148451 00000 n 
-0003148603 00000 n 
-0003148755 00000 n 
-0003148906 00000 n 
-0003149057 00000 n 
-0003149206 00000 n 
-0003149355 00000 n 
-0003149506 00000 n 
-0003149655 00000 n 
-0003149806 00000 n 
-0003149956 00000 n 
-0003150107 00000 n 
-0003150258 00000 n 
-0003150409 00000 n 
-0003150561 00000 n 
-0003150713 00000 n 
-0003150865 00000 n 
-0003151016 00000 n 
-0003151167 00000 n 
-0003151318 00000 n 
-0003151470 00000 n 
-0003151622 00000 n 
-0003151770 00000 n 
-0003151922 00000 n 
-0003152074 00000 n 
-0003152224 00000 n 
-0003152375 00000 n 
-0003152526 00000 n 
-0003152677 00000 n 
-0003152828 00000 n 
-0003152978 00000 n 
-0003153129 00000 n 
-0003153280 00000 n 
-0003153432 00000 n 
-0003153584 00000 n 
-0003153734 00000 n 
-0003153886 00000 n 
-0003154038 00000 n 
-0003154190 00000 n 
-0003154342 00000 n 
-0003154493 00000 n 
-0003154644 00000 n 
-0003154795 00000 n 
-0003154945 00000 n 
-0003155096 00000 n 
-0003155248 00000 n 
-0003155400 00000 n 
-0003155614 00000 n 
-0003135539 00000 n 
-0003133990 00000 n 
-0003155550 00000 n 
-0003156136 00000 n 
-0003156162 00000 n 
-0003156188 00000 n 
-0003156214 00000 n 
-0003156646 00000 n 
-0003156670 00000 n 
-0003156796 00000 n 
-0003157010 00000 n 
-0003157454 00000 n 
-0003157618 00000 n 
-0003158269 00000 n 
-0003158590 00000 n 
-0003158626 00000 n 
-0003159280 00000 n 
-0003159730 00000 n 
-0003160106 00000 n 
-0003160144 00000 n 
-0003160224 00000 n 
-0003160657 00000 n 
-0003161029 00000 n 
-0003161666 00000 n 
-0003162062 00000 n 
-0003162742 00000 n 
-0003163412 00000 n 
-0003164045 00000 n 
-0003164697 00000 n 
-0003165100 00000 n 
-0003165749 00000 n 
-0003166387 00000 n 
-0003180963 00000 n 
-0003181428 00000 n 
-0003189085 00000 n 
-0003189403 00000 n 
-0003191699 00000 n 
-0003191927 00000 n 
-0003196584 00000 n 
-0003196841 00000 n 
-0003200458 00000 n 
-0003200699 00000 n 
-0003211337 00000 n 
-0003211732 00000 n 
-0003217975 00000 n 
-0003218267 00000 n 
-0003220007 00000 n 
-0003220230 00000 n 
-0003222047 00000 n 
-0003222281 00000 n 
-0003240953 00000 n 
-0003241575 00000 n 
-0003246247 00000 n 
-0003246523 00000 n 
-0003249854 00000 n 
-0003250122 00000 n 
-0003254087 00000 n 
-0003254363 00000 n 
-0003266395 00000 n 
-0003266829 00000 n 
-0003268631 00000 n 
-0003268860 00000 n 
-0003278834 00000 n 
-0003279320 00000 n 
-0003283647 00000 n 
-0003283940 00000 n 
-0003293148 00000 n 
-0003293557 00000 n 
-0003306822 00000 n 
-0003307327 00000 n 
-0003310465 00000 n 
-0003310721 00000 n 
-0003313245 00000 n 
-0003313562 00000 n 
-0003331223 00000 n 
-0003331744 00000 n 
-0003333508 00000 n 
-0003333731 00000 n 
-0003335478 00000 n 
-0003335701 00000 n 
-0003339228 00000 n 
-0003339467 00000 n 
-0003356074 00000 n 
-0003356721 00000 n 
-0003368719 00000 n 
-0003369171 00000 n 
-0003371024 00000 n 
-0003388694 00000 n 
-0003388820 00000 n 
-0003388946 00000 n 
-0003389072 00000 n 
-0003389198 00000 n 
-0003389324 00000 n 
-0003389450 00000 n 
-0003389576 00000 n 
-0003389702 00000 n 
-0003389828 00000 n 
-0003389954 00000 n 
-0003390080 00000 n 
-0003390206 00000 n 
-0003390332 00000 n 
-0003390458 00000 n 
-0003390584 00000 n 
-0003390710 00000 n 
-0003390836 00000 n 
-0003390953 00000 n 
-0003391080 00000 n 
-0003391207 00000 n 
-0003391334 00000 n 
-0003391417 00000 n 
-0003418311 00000 n 
-0003418460 00000 n 
-0003418599 00000 n 
-0003418800 00000 n 
-0003418980 00000 n 
-0003419165 00000 n 
-0003419349 00000 n 
-0003419534 00000 n 
-0003419718 00000 n 
-0003419903 00000 n 
-0003420086 00000 n 
-0003420269 00000 n 
-0003420454 00000 n 
-0003420638 00000 n 
-0003420823 00000 n 
-0003421007 00000 n 
-0003421192 00000 n 
-0003421376 00000 n 
-0003421561 00000 n 
-0003421745 00000 n 
-0003421930 00000 n 
-0003422113 00000 n 
-0003422294 00000 n 
-0003422477 00000 n 
-0003422660 00000 n 
-0003422845 00000 n 
-0003423029 00000 n 
-0003423214 00000 n 
-0003423398 00000 n 
-0003423583 00000 n 
-0003423767 00000 n 
-0003423952 00000 n 
-0003424136 00000 n 
-0003424321 00000 n 
-0003424504 00000 n 
-0003424687 00000 n 
-0003424872 00000 n 
-0003425056 00000 n 
-0003425241 00000 n 
-0003425425 00000 n 
-0003425610 00000 n 
-0003425792 00000 n 
-0003425977 00000 n 
-0003426161 00000 n 
-0003426346 00000 n 
-0003426530 00000 n 
-0003426715 00000 n 
-0003426898 00000 n 
-0003427081 00000 n 
-0003427266 00000 n 
-0003427450 00000 n 
-0003427635 00000 n 
-0003427819 00000 n 
-0003428004 00000 n 
-0003428188 00000 n 
-0003428373 00000 n 
-0003428557 00000 n 
-0003428742 00000 n 
-0003428925 00000 n 
-0003429106 00000 n 
-0003429289 00000 n 
-0003429472 00000 n 
-0003429657 00000 n 
-0003429841 00000 n 
-0003430026 00000 n 
-0003430210 00000 n 
-0003430395 00000 n 
-0003430579 00000 n 
-0003430764 00000 n 
-0003430948 00000 n 
-0003431133 00000 n 
-0003431316 00000 n 
-0003431499 00000 n 
-0003431684 00000 n 
-0003431868 00000 n 
-0003432053 00000 n 
-0003432237 00000 n 
-0003432422 00000 n 
-0003432604 00000 n 
-0003432789 00000 n 
-0003432973 00000 n 
-0003433158 00000 n 
-0003433342 00000 n 
-0003433527 00000 n 
-0003433710 00000 n 
-0003433893 00000 n 
-0003434078 00000 n 
-0003434262 00000 n 
-0003434447 00000 n 
-0003434631 00000 n 
-0003434816 00000 n 
-0003435000 00000 n 
-0003435185 00000 n 
-0003435369 00000 n 
-0003435554 00000 n 
-0003435737 00000 n 
-0003435918 00000 n 
-0003436101 00000 n 
-0003436284 00000 n 
-0003436469 00000 n 
-0003436653 00000 n 
-0003436838 00000 n 
-0003437022 00000 n 
-0003437207 00000 n 
-0003437391 00000 n 
-0003437576 00000 n 
-0003437760 00000 n 
-0003437945 00000 n 
-0003438128 00000 n 
-0003438311 00000 n 
-0003438496 00000 n 
-0003438680 00000 n 
-0003438865 00000 n 
-0003439049 00000 n 
-0003439234 00000 n 
-0003439416 00000 n 
-0003439601 00000 n 
-0003439785 00000 n 
-0003439964 00000 n 
-0003440140 00000 n 
-0003440317 00000 n 
-0003440493 00000 n 
-0003440670 00000 n 
-0003440858 00000 n 
-0003441046 00000 n 
-0003441242 00000 n 
-0003441439 00000 n 
-0003441646 00000 n 
-0003441850 00000 n 
-0003442052 00000 n 
-0003442254 00000 n 
-0003442458 00000 n 
-0003442681 00000 n 
-0003442913 00000 n 
-0003443141 00000 n 
-0003443363 00000 n 
-0003443565 00000 n 
-0003443741 00000 n 
-0003443944 00000 n 
-0003444161 00000 n 
-0003444360 00000 n 
-0003444558 00000 n 
-0003444753 00000 n 
-0003444947 00000 n 
-0003445141 00000 n 
-0003445328 00000 n 
-0003445528 00000 n 
-0003445721 00000 n 
-0003445936 00000 n 
-0003446174 00000 n 
-0003446413 00000 n 
-0003446646 00000 n 
-0003446879 00000 n 
-0003447112 00000 n 
-0003447345 00000 n 
-0003447570 00000 n 
-0003447799 00000 n 
-0003448024 00000 n 
-0003448254 00000 n 
-0003448484 00000 n 
-0003448709 00000 n 
-0003448934 00000 n 
-0003449159 00000 n 
-0003449384 00000 n 
-0003449614 00000 n 
-0003449839 00000 n 
-0003450064 00000 n 
-0003450279 00000 n 
-0003450492 00000 n 
-0003450701 00000 n 
-0003450910 00000 n 
-0003451111 00000 n 
-0003451312 00000 n 
-0003451513 00000 n 
-0003451699 00000 n 
-0003451892 00000 n 
-0003452085 00000 n 
-0003452278 00000 n 
-0003452471 00000 n 
-0003452664 00000 n 
-0003452857 00000 n 
-0003453050 00000 n 
-0003453243 00000 n 
-0003453436 00000 n 
-0003453629 00000 n 
-0003453822 00000 n 
-0003454015 00000 n 
-0003454208 00000 n 
-0003454401 00000 n 
-0003454594 00000 n 
-0003454787 00000 n 
-0003454980 00000 n 
-0003455173 00000 n 
-0003455366 00000 n 
-0003455559 00000 n 
-0003455752 00000 n 
-0003455945 00000 n 
-0003456138 00000 n 
-0003456331 00000 n 
-0003456524 00000 n 
-0003456717 00000 n 
-0003456910 00000 n 
-0003457103 00000 n 
-0003457296 00000 n 
-0003457489 00000 n 
-0003457682 00000 n 
-0003457875 00000 n 
-0003458068 00000 n 
-0003458261 00000 n 
-0003458454 00000 n 
-0003458647 00000 n 
-0003458840 00000 n 
-0003459030 00000 n 
-0003459226 00000 n 
-0003459428 00000 n 
-0003459679 00000 n 
-0003459926 00000 n 
-0003460173 00000 n 
-0003460422 00000 n 
-0003460671 00000 n 
-0003460920 00000 n 
-0003461168 00000 n 
-0003461417 00000 n 
-0003461665 00000 n 
-0003461914 00000 n 
-0003462157 00000 n 
-0003462402 00000 n 
-0003462651 00000 n 
-0003462899 00000 n 
-0003463144 00000 n 
-0003463387 00000 n 
-0003463636 00000 n 
-0003463884 00000 n 
-0003464133 00000 n 
-0003464381 00000 n 
-0003464624 00000 n 
-0003464865 00000 n 
-0003465106 00000 n 
-0003465347 00000 n 
-0003465592 00000 n 
-0003465841 00000 n 
-0003466089 00000 n 
-0003466335 00000 n 
-0003466576 00000 n 
-0003466825 00000 n 
-0003467070 00000 n 
-0003467311 00000 n 
-0003467560 00000 n 
-0003467808 00000 n 
-0003468057 00000 n 
-0003468305 00000 n 
-0003468549 00000 n 
-0003468794 00000 n 
-0003469043 00000 n 
-0003469291 00000 n 
-0003469540 00000 n 
-0003469785 00000 n 
-0003470024 00000 n 
-0003470265 00000 n 
-0003470505 00000 n 
-0003470746 00000 n 
-0003470986 00000 n 
-0003471219 00000 n 
-0003471466 00000 n 
-0003471713 00000 n 
-0003471959 00000 n 
-0003472200 00000 n 
-0003472449 00000 n 
-0003472697 00000 n 
-0003472946 00000 n 
-0003473189 00000 n 
-0003473434 00000 n 
-0003473683 00000 n 
-0003473931 00000 n 
-0003474180 00000 n 
-0003474427 00000 n 
-0003474674 00000 n 
-0003474918 00000 n 
-0003475164 00000 n 
-0003475413 00000 n 
-0003475660 00000 n 
-0003475903 00000 n 
-0003476148 00000 n 
-0003476397 00000 n 
-0003476645 00000 n 
-0003476890 00000 n 
-0003477133 00000 n 
-0003477382 00000 n 
-0003477630 00000 n 
-0003477879 00000 n 
-0003478127 00000 n 
-0003478376 00000 n 
-0003478621 00000 n 
-0003478865 00000 n 
-0003479114 00000 n 
-0003479362 00000 n 
-0003479611 00000 n 
-0003479859 00000 n 
-0003480103 00000 n 
-0003480348 00000 n 
-0003480597 00000 n 
-0003480845 00000 n 
-0003481094 00000 n 
-0003481341 00000 n 
-0003481588 00000 n 
-0003481833 00000 n 
-0003482078 00000 n 
-0003482327 00000 n 
-0003482575 00000 n 
-0003482824 00000 n 
-0003483071 00000 n 
-0003483317 00000 n 
-0003483560 00000 n 
-0003483809 00000 n 
-0003484057 00000 n 
-0003484306 00000 n 
-0003484554 00000 n 
-0003484801 00000 n 
-0003485040 00000 n 
-0003485281 00000 n 
-0003485521 00000 n 
-0003485762 00000 n 
-0003486002 00000 n 
-0003486237 00000 n 
-0003486481 00000 n 
-0003486730 00000 n 
-0003486977 00000 n 
-0003487224 00000 n 
-0003487473 00000 n 
-0003487716 00000 n 
-0003487962 00000 n 
-0003488208 00000 n 
-0003488449 00000 n 
-0003488696 00000 n 
-0003488940 00000 n 
-0003489183 00000 n 
-0003489428 00000 n 
-0003489669 00000 n 
-0003489918 00000 n 
-0003490166 00000 n 
-0003490415 00000 n 
-0003490663 00000 n 
-0003490912 00000 n 
-0003491158 00000 n 
-0003491401 00000 n 
-0003491650 00000 n 
-0003491898 00000 n 
-0003492147 00000 n 
-0003492395 00000 n 
-0003492640 00000 n 
-0003492884 00000 n 
-0003493133 00000 n 
-0003493381 00000 n 
-0003493630 00000 n 
-0003493878 00000 n 
-0003494125 00000 n 
-0003494366 00000 n 
-0003494615 00000 n 
-0003494863 00000 n 
-0003495112 00000 n 
-0003495360 00000 n 
-0003495604 00000 n 
-0003495849 00000 n 
-0003496098 00000 n 
-0003496346 00000 n 
-0003496595 00000 n 
-0003496842 00000 n 
-0003497083 00000 n 
-0003497330 00000 n 
-0003497577 00000 n 
-0003497826 00000 n 
-0003498074 00000 n 
-0003498318 00000 n 
-0003498558 00000 n 
-0003498799 00000 n 
-0003499039 00000 n 
-0003499272 00000 n 
-0003499516 00000 n 
-0003499765 00000 n 
-0003500008 00000 n 
-0003500251 00000 n 
-0003500500 00000 n 
-0003500743 00000 n 
-0003500983 00000 n 
-0003501224 00000 n 
-0003501464 00000 n 
-0003501697 00000 n 
-0003501935 00000 n 
-0003502176 00000 n 
-0003502415 00000 n 
-0003502652 00000 n 
-0003502883 00000 n 
-0003503105 00000 n 
-0003503287 00000 n 
-0003503472 00000 n 
-0003503656 00000 n 
-0003503841 00000 n 
-0003504024 00000 n 
-0003504207 00000 n 
-0003504392 00000 n 
-0003504576 00000 n 
-0003504761 00000 n 
-0003504945 00000 n 
-0003505130 00000 n 
-0003505314 00000 n 
-0003505499 00000 n 
-0003505683 00000 n 
-0003505868 00000 n 
-0003506051 00000 n 
-0003506234 00000 n 
-0003506419 00000 n 
-0003506600 00000 n 
-0003506785 00000 n 
-0003506969 00000 n 
-0003507154 00000 n 
-0003507338 00000 n 
-0003507523 00000 n 
-0003507707 00000 n 
-0003507892 00000 n 
-0003508076 00000 n 
-0003508261 00000 n 
-0003508444 00000 n 
-0003508627 00000 n 
-0003508812 00000 n 
-0003508996 00000 n 
-0003509181 00000 n 
-0003509365 00000 n 
-0003509550 00000 n 
-0003509734 00000 n 
-0003509919 00000 n 
-0003510101 00000 n 
-0003510286 00000 n 
-0003510470 00000 n 
-0003510655 00000 n 
-0003510838 00000 n 
-0003511021 00000 n 
-0003511206 00000 n 
-0003511390 00000 n 
-0003511575 00000 n 
-0003511759 00000 n 
-0003511944 00000 n 
-0003512128 00000 n 
-0003512313 00000 n 
-0003512497 00000 n 
-0003512682 00000 n 
-0003512865 00000 n 
-0003513048 00000 n 
-0003513233 00000 n 
-0003513414 00000 n 
-0003513599 00000 n 
-0003513783 00000 n 
-0003513968 00000 n 
-0003514152 00000 n 
-0003514337 00000 n 
-0003514521 00000 n 
-0003514706 00000 n 
-0003514890 00000 n 
-0003515075 00000 n 
-0003515258 00000 n 
-0003515441 00000 n 
-0003515626 00000 n 
-0003515810 00000 n 
-0003515995 00000 n 
-0003516179 00000 n 
-0003516364 00000 n 
-0003516548 00000 n 
-0003516733 00000 n 
-0003516915 00000 n 
-0003517100 00000 n 
-0003517284 00000 n 
-0003517469 00000 n 
-0003517652 00000 n 
-0003517835 00000 n 
-0003518020 00000 n 
-0003518204 00000 n 
-0003518389 00000 n 
-0003518573 00000 n 
-0003518758 00000 n 
-0003518942 00000 n 
-0003519127 00000 n 
-0003519311 00000 n 
-0003519496 00000 n 
-0003519679 00000 n 
-0003519862 00000 n 
-0003520047 00000 n 
-0003520222 00000 n 
-0003520397 00000 n 
-0003520574 00000 n 
-0003520750 00000 n 
-0003520927 00000 n 
-0003521103 00000 n 
-0003521280 00000 n 
-0003521461 00000 n 
-0003521642 00000 n 
-0003521827 00000 n 
-0003522020 00000 n 
-0003522213 00000 n 
-0003522411 00000 n 
-0003522595 00000 n 
-0003522779 00000 n 
-0003522978 00000 n 
-0003523186 00000 n 
-0003523436 00000 n 
-0003523687 00000 n 
-0003523926 00000 n 
-0003524168 00000 n 
-0003524363 00000 n 
-0003524546 00000 n 
-0003524749 00000 n 
-0003524953 00000 n 
-0003525160 00000 n 
-0003525369 00000 n 
-0003525577 00000 n 
-0003525785 00000 n 
-0003525994 00000 n 
-0003526203 00000 n 
-0003526412 00000 n 
-0003526614 00000 n 
-0003526823 00000 n 
-0003527034 00000 n 
-0003527245 00000 n 
-0003527458 00000 n 
-0003527675 00000 n 
-0003527883 00000 n 
-0003528086 00000 n 
-0003528289 00000 n 
-0003528492 00000 n 
-0003528695 00000 n 
-0003528898 00000 n 
-0003529091 00000 n 
-0003529335 00000 n 
-0003529586 00000 n 
-0003529837 00000 n 
-0003530088 00000 n 
-0003530339 00000 n 
-0003530594 00000 n 
-0003530851 00000 n 
-0003531097 00000 n 
-0003531340 00000 n 
-0003531583 00000 n 
-0003531826 00000 n 
-0003532069 00000 n 
-0003532312 00000 n 
-0003532555 00000 n 
-0003532798 00000 n 
-0003533041 00000 n 
-0003533284 00000 n 
-0003533527 00000 n 
-0003533770 00000 n 
-0003534034 00000 n 
-0003534316 00000 n 
-0003534607 00000 n 
-0003534899 00000 n 
-0003535189 00000 n 
-0003535472 00000 n 
-0003535755 00000 n 
-0003536038 00000 n 
-0003536321 00000 n 
-0003536604 00000 n 
-0003536814 00000 n 
-0003537010 00000 n 
-0003537203 00000 n 
-0003537393 00000 n 
-0003537506 00000 n 
-0003537624 00000 n 
-0003537742 00000 n 
-0003537859 00000 n 
-0003537977 00000 n 
-0003538095 00000 n 
-0003538213 00000 n 
-0003538330 00000 n 
-0003538448 00000 n 
-0003538566 00000 n 
-0003538684 00000 n 
-0003538801 00000 n 
-0003538919 00000 n 
-0003539037 00000 n 
-0003539155 00000 n 
-0003539271 00000 n 
-0003539388 00000 n 
-0003539506 00000 n 
-0003539624 00000 n 
-0003539741 00000 n 
-0003539863 00000 n 
-0003539994 00000 n 
-0003540120 00000 n 
-0003540242 00000 n 
-0003540368 00000 n 
-0003540498 00000 n 
-0003540627 00000 n 
-0003540754 00000 n 
-0003540877 00000 n 
-0003540998 00000 n 
-0003541119 00000 n 
-0003541240 00000 n 
-0003541361 00000 n 
-0003541482 00000 n 
-0003541603 00000 n 
-0003541730 00000 n 
-0003541864 00000 n 
-0003541999 00000 n 
-0003542134 00000 n 
-0003542269 00000 n 
-0003542403 00000 n 
-0003542538 00000 n 
-0003542672 00000 n 
-0003542805 00000 n 
-0003542939 00000 n 
-0003543072 00000 n 
-0003543207 00000 n 
-0003543342 00000 n 
-0003543477 00000 n 
-0003543612 00000 n 
-0003543747 00000 n 
-0003543882 00000 n 
-0003544015 00000 n 
-0003544149 00000 n 
-0003544284 00000 n 
-0003544418 00000 n 
-0003544552 00000 n 
-0003544687 00000 n 
-0003544822 00000 n 
-0003544957 00000 n 
-0003545092 00000 n 
-0003545225 00000 n 
-0003545359 00000 n 
-0003545492 00000 n 
-0003545624 00000 n 
-0003545749 00000 n 
-0003545867 00000 n 
-0003545986 00000 n 
-0003546105 00000 n 
-0003546224 00000 n 
-0003546342 00000 n 
-0003546461 00000 n 
-0003546580 00000 n 
-0003546699 00000 n 
-0003546817 00000 n 
-0003546936 00000 n 
-0003547055 00000 n 
-0003547174 00000 n 
-0003547293 00000 n 
-0003547412 00000 n 
-0003547529 00000 n 
-0003547648 00000 n 
-0003547763 00000 n 
-0003547884 00000 n 
-0003548010 00000 n 
-0003548135 00000 n 
-0003548261 00000 n 
-0003548387 00000 n 
-0003548518 00000 n 
-0003548654 00000 n 
-0003548789 00000 n 
-0003548930 00000 n 
-0003549076 00000 n 
-0003549188 00000 n 
-0003549302 00000 n 
-0003549420 00000 n 
-0003549539 00000 n 
-0003549663 00000 n 
-0003549790 00000 n 
-0003549923 00000 n 
-0003550063 00000 n 
-0003550204 00000 n 
-0003550345 00000 n 
-0003550486 00000 n 
-0003550619 00000 n 
-0003550743 00000 n 
-0003550868 00000 n 
-0003550995 00000 n 
-0003551132 00000 n 
-0003551243 00000 n 
-0003551370 00000 n 
-0003551502 00000 n 
-0003551605 00000 n 
-0003551693 00000 n 
-0003551735 00000 n 
-0003552015 00000 n 
+0000029837 00000 n 
+0000029901 00000 n 
+0003371717 00000 n 
+0003371570 00000 n 
+0003373038 00000 n 
+0003375671 00000 n 
+0000032378 00000 n 
+0000032014 00000 n 
+0000030067 00000 n 
+0000032130 00000 n 
+0003374206 00000 n 
+0000032315 00000 n 
+0003372892 00000 n 
+0003374649 00000 n 
+0000034908 00000 n 
+0000034602 00000 n 
+0000032494 00000 n 
+0000034718 00000 n 
+0000034844 00000 n 
+0000036302 00000 n 
+0000036453 00000 n 
+0000036607 00000 n 
+0000036761 00000 n 
+0000036915 00000 n 
+0000037068 00000 n 
+0000037222 00000 n 
+0000037376 00000 n 
+0000037525 00000 n 
+0000037680 00000 n 
+0000037833 00000 n 
+0000037987 00000 n 
+0000038142 00000 n 
+0000038302 00000 n 
+0000038467 00000 n 
+0000038632 00000 n 
+0000038796 00000 n 
+0000038956 00000 n 
+0000039121 00000 n 
+0000039286 00000 n 
+0000039451 00000 n 
+0000039610 00000 n 
+0000039775 00000 n 
+0000039940 00000 n 
+0000041928 00000 n 
+0000040159 00000 n 
+0000035958 00000 n 
+0000035024 00000 n 
+0000040095 00000 n 
+0000042080 00000 n 
+0000042235 00000 n 
+0000042395 00000 n 
+0000042550 00000 n 
+0000042710 00000 n 
+0000042870 00000 n 
+0000043025 00000 n 
+0000043185 00000 n 
+0000043345 00000 n 
+0000043505 00000 n 
+0000043660 00000 n 
+0000043812 00000 n 
+0000043967 00000 n 
+0000044127 00000 n 
+0000044281 00000 n 
+0000044441 00000 n 
+0000044606 00000 n 
+0000044766 00000 n 
+0000044921 00000 n 
+0000045081 00000 n 
+0000045241 00000 n 
+0000045401 00000 n 
+0000045561 00000 n 
+0000045721 00000 n 
+0000045881 00000 n 
+0000046041 00000 n 
+0000046206 00000 n 
+0000046366 00000 n 
+0000046526 00000 n 
+0000046680 00000 n 
+0000046833 00000 n 
+0000046988 00000 n 
+0000047148 00000 n 
+0000047303 00000 n 
+0000047463 00000 n 
+0000047623 00000 n 
+0000047778 00000 n 
+0000050148 00000 n 
+0000048002 00000 n 
+0000041458 00000 n 
+0000040275 00000 n 
+0000047938 00000 n 
+0003374060 00000 n 
+0000050307 00000 n 
+0000050467 00000 n 
+0000050631 00000 n 
+0000050796 00000 n 
+0000050956 00000 n 
+0000051116 00000 n 
+0000051276 00000 n 
+0000051430 00000 n 
+0000051583 00000 n 
+0000051738 00000 n 
+0000051893 00000 n 
+0000052053 00000 n 
+0000052207 00000 n 
+0000052367 00000 n 
+0000052531 00000 n 
+0000052696 00000 n 
+0000052861 00000 n 
+0000053026 00000 n 
+0000053191 00000 n 
+0000053356 00000 n 
+0000053521 00000 n 
+0000053680 00000 n 
+0000053840 00000 n 
+0000053995 00000 n 
+0000054155 00000 n 
+0000054315 00000 n 
+0000054475 00000 n 
+0000054635 00000 n 
+0000054800 00000 n 
+0000054965 00000 n 
+0000055130 00000 n 
+0000055290 00000 n 
+0000055450 00000 n 
+0000055604 00000 n 
+0000057786 00000 n 
+0000055823 00000 n 
+0000049705 00000 n 
+0000048104 00000 n 
+0000055759 00000 n 
+0000057945 00000 n 
+0000058105 00000 n 
+0000058265 00000 n 
+0000058425 00000 n 
+0000058580 00000 n 
+0000058739 00000 n 
+0000058899 00000 n 
+0000059059 00000 n 
+0000059219 00000 n 
+0000059379 00000 n 
+0000059538 00000 n 
+0000059693 00000 n 
+0000059848 00000 n 
+0000060001 00000 n 
+0000060156 00000 n 
+0000060316 00000 n 
+0000060471 00000 n 
+0000060631 00000 n 
+0000060796 00000 n 
+0000060961 00000 n 
+0000061126 00000 n 
+0000061286 00000 n 
+0000061441 00000 n 
+0000061600 00000 n 
+0000061755 00000 n 
+0000061904 00000 n 
+0000062059 00000 n 
+0000062211 00000 n 
+0000062366 00000 n 
+0000062526 00000 n 
+0000062681 00000 n 
+0000065081 00000 n 
+0000062905 00000 n 
+0000057370 00000 n 
+0000055925 00000 n 
+0000062841 00000 n 
+0003375796 00000 n 
+0000065240 00000 n 
+0000065395 00000 n 
+0000065554 00000 n 
+0000065714 00000 n 
+0000065874 00000 n 
+0000066034 00000 n 
+0000066199 00000 n 
+0000066364 00000 n 
+0000066529 00000 n 
+0000066689 00000 n 
+0000066854 00000 n 
+0000067019 00000 n 
+0000067178 00000 n 
+0000067333 00000 n 
+0000067486 00000 n 
+0000067640 00000 n 
+0000067800 00000 n 
+0000067963 00000 n 
+0000068128 00000 n 
+0000068293 00000 n 
+0000068458 00000 n 
+0000068623 00000 n 
+0000068787 00000 n 
+0000068942 00000 n 
+0000069102 00000 n 
+0000069262 00000 n 
+0000069422 00000 n 
+0000069577 00000 n 
+0000069737 00000 n 
+0000069902 00000 n 
+0000071996 00000 n 
+0000070131 00000 n 
+0000064674 00000 n 
+0000063021 00000 n 
+0000070067 00000 n 
+0000072161 00000 n 
+0000072320 00000 n 
+0000072485 00000 n 
+0000072650 00000 n 
+0000072810 00000 n 
+0000072963 00000 n 
+0000073118 00000 n 
+0000073277 00000 n 
+0000073432 00000 n 
+0000073591 00000 n 
+0000073751 00000 n 
+0000073906 00000 n 
+0000074066 00000 n 
+0000074231 00000 n 
+0000074389 00000 n 
+0000074549 00000 n 
+0000074702 00000 n 
+0000074856 00000 n 
+0000075012 00000 n 
+0000075173 00000 n 
+0000075329 00000 n 
+0000075490 00000 n 
+0000075646 00000 n 
+0000075807 00000 n 
+0000075973 00000 n 
+0000076123 00000 n 
+0000076278 00000 n 
+0000076432 00000 n 
+0000076588 00000 n 
+0000076748 00000 n 
+0000078912 00000 n 
+0000076968 00000 n 
+0000071589 00000 n 
+0000070233 00000 n 
+0000076904 00000 n 
+0000079072 00000 n 
+0000079238 00000 n 
+0000079394 00000 n 
+0000079555 00000 n 
+0000079715 00000 n 
+0000079880 00000 n 
+0000080046 00000 n 
+0000080207 00000 n 
+0000080368 00000 n 
+0000080533 00000 n 
+0000080699 00000 n 
+0000080865 00000 n 
+0000081026 00000 n 
+0000081182 00000 n 
+0000081335 00000 n 
+0000081491 00000 n 
+0000081652 00000 n 
+0000081808 00000 n 
+0000081969 00000 n 
+0000082129 00000 n 
+0000082285 00000 n 
+0000082446 00000 n 
+0000082607 00000 n 
+0000082773 00000 n 
+0000082938 00000 n 
+0000083104 00000 n 
+0000083265 00000 n 
+0000083426 00000 n 
+0000083582 00000 n 
+0000083736 00000 n 
+0000083892 00000 n 
+0000084047 00000 n 
+0000084203 00000 n 
+0000084364 00000 n 
+0000084530 00000 n 
+0000086922 00000 n 
+0000084760 00000 n 
+0000078460 00000 n 
+0000077084 00000 n 
+0000084696 00000 n 
+0000087087 00000 n 
+0000087248 00000 n 
+0000087408 00000 n 
+0000087569 00000 n 
+0000087729 00000 n 
+0000087890 00000 n 
+0000088051 00000 n 
+0000088212 00000 n 
+0000088372 00000 n 
+0000088528 00000 n 
+0000088682 00000 n 
+0000088838 00000 n 
+0000088994 00000 n 
+0000089148 00000 n 
+0000089303 00000 n 
+0000089459 00000 n 
+0000089614 00000 n 
+0000089770 00000 n 
+0000089931 00000 n 
+0000090092 00000 n 
+0000090253 00000 n 
+0000090409 00000 n 
+0000090570 00000 n 
+0000090726 00000 n 
+0000090882 00000 n 
+0000091038 00000 n 
+0000091194 00000 n 
+0000091355 00000 n 
+0000091516 00000 n 
+0000091677 00000 n 
+0000091831 00000 n 
+0000091987 00000 n 
+0000092143 00000 n 
+0000093562 00000 n 
+0000092368 00000 n 
+0000086488 00000 n 
+0000084862 00000 n 
+0000092304 00000 n 
+0000093717 00000 n 
+0000093878 00000 n 
+0000094044 00000 n 
+0000094204 00000 n 
+0000094370 00000 n 
+0000094531 00000 n 
+0000094697 00000 n 
+0000094858 00000 n 
+0000095024 00000 n 
+0000095185 00000 n 
+0000095341 00000 n 
+0000095502 00000 n 
+0000095656 00000 n 
+0000095809 00000 n 
+0000095964 00000 n 
+0000096184 00000 n 
+0000093290 00000 n 
+0000092470 00000 n 
+0000096120 00000 n 
+0000096567 00000 n 
+0000096387 00000 n 
+0000096286 00000 n 
+0000096503 00000 n 
+0003375921 00000 n 
+0000098215 00000 n 
+0000098371 00000 n 
+0000098527 00000 n 
+0000098683 00000 n 
+0000098835 00000 n 
+0000098991 00000 n 
+0000099146 00000 n 
+0000099302 00000 n 
+0000099458 00000 n 
+0000099613 00000 n 
+0000099769 00000 n 
+0000099924 00000 n 
+0000100080 00000 n 
+0000100236 00000 n 
+0000100392 00000 n 
+0000100548 00000 n 
+0000100704 00000 n 
+0000100860 00000 n 
+0000101016 00000 n 
+0000101171 00000 n 
+0000101327 00000 n 
+0000101484 00000 n 
+0000103551 00000 n 
+0000101767 00000 n 
+0000097889 00000 n 
+0000096609 00000 n 
+0000101641 00000 n 
+0000192823 00000 n 
+0000225057 00000 n 
+0000231148 00000 n 
+0000236399 00000 n 
+0000266315 00000 n 
+0000312186 00000 n 
+0000340138 00000 n 
+0000343790 00000 n 
+0000348171 00000 n 
+0000383130 00000 n 
+0000385514 00000 n 
+0000466052 00000 n 
+0000471480 00000 n 
+0000477232 00000 n 
+0000481477 00000 n 
+0000482500 00000 n 
+0000483904 00000 n 
+0000485099 00000 n 
+0000486160 00000 n 
+0000487208 00000 n 
+0000488395 00000 n 
+0000488521 00000 n 
+0000103707 00000 n 
+0000103864 00000 n 
+0000104020 00000 n 
+0000104174 00000 n 
+0000104328 00000 n 
+0000104484 00000 n 
+0000104640 00000 n 
+0000104795 00000 n 
+0000104951 00000 n 
+0000105107 00000 n 
+0000105263 00000 n 
+0000105420 00000 n 
+0000105577 00000 n 
+0000105734 00000 n 
+0000105891 00000 n 
+0000106048 00000 n 
+0000106203 00000 n 
+0000106356 00000 n 
+0000106513 00000 n 
+0000106668 00000 n 
+0000106824 00000 n 
+0000106980 00000 n 
+0000107136 00000 n 
+0000107292 00000 n 
+0000107448 00000 n 
+0000107603 00000 n 
+0000107759 00000 n 
+0000107915 00000 n 
+0000109972 00000 n 
+0000108135 00000 n 
+0000103162 00000 n 
+0000101883 00000 n 
+0000108071 00000 n 
+0000489679 00000 n 
+0000490816 00000 n 
+0000558064 00000 n 
+0000564127 00000 n 
+0000570228 00000 n 
+0000575529 00000 n 
+0000576041 00000 n 
+0000576552 00000 n 
+0000595468 00000 n 
+0000596611 00000 n 
+0000597748 00000 n 
+0000598936 00000 n 
+0000599971 00000 n 
+0000600992 00000 n 
+0000602131 00000 n 
+0000603248 00000 n 
+0000604456 00000 n 
+0000605488 00000 n 
+0000606599 00000 n 
+0000704836 00000 n 
+0000841289 00000 n 
+0000842328 00000 n 
+0000843384 00000 n 
+0000844436 00000 n 
+0000848629 00000 n 
+0000853210 00000 n 
+0000858517 00000 n 
+0000864790 00000 n 
+0000869610 00000 n 
+0000110127 00000 n 
+0000110284 00000 n 
+0000110440 00000 n 
+0000110596 00000 n 
+0000110752 00000 n 
+0000110908 00000 n 
+0000111063 00000 n 
+0000111219 00000 n 
+0000111374 00000 n 
+0000111530 00000 n 
+0000111687 00000 n 
+0000111843 00000 n 
+0000111999 00000 n 
+0000112155 00000 n 
+0000112311 00000 n 
+0000112466 00000 n 
+0000112622 00000 n 
+0000112776 00000 n 
+0000112933 00000 n 
+0000113090 00000 n 
+0000113246 00000 n 
+0000115226 00000 n 
+0000113467 00000 n 
+0000109646 00000 n 
+0000108237 00000 n 
+0000113403 00000 n 
+0000874227 00000 n 
+0000876142 00000 n 
+0000955646 00000 n 
+0000957006 00000 n 
+0000962431 00000 n 
+0000967853 00000 n 
+0000972313 00000 n 
+0000978606 00000 n 
+0000984645 00000 n 
+0001333529 00000 n 
+0001337533 00000 n 
+0001337660 00000 n 
+0001338719 00000 n 
+0001342983 00000 n 
+0001349704 00000 n 
+0001356205 00000 n 
+0001362511 00000 n 
+0001363788 00000 n 
+0001367509 00000 n 
+0001368532 00000 n 
+0001369989 00000 n 
+0001370115 00000 n 
+0000115381 00000 n 
+0000115537 00000 n 
+0000115693 00000 n 
+0000115849 00000 n 
+0000116005 00000 n 
+0000116161 00000 n 
+0000116317 00000 n 
+0000116474 00000 n 
+0000116631 00000 n 
+0000116788 00000 n 
+0000116945 00000 n 
+0000117102 00000 n 
+0000117259 00000 n 
+0000117416 00000 n 
+0000117573 00000 n 
+0000117729 00000 n 
+0000117885 00000 n 
+0000118043 00000 n 
+0000118201 00000 n 
+0000118359 00000 n 
+0000118516 00000 n 
+0000118674 00000 n 
+0000118832 00000 n 
+0000118990 00000 n 
+0000119148 00000 n 
+0000119306 00000 n 
+0000119463 00000 n 
+0000119620 00000 n 
+0000121221 00000 n 
+0000119841 00000 n 
+0000114837 00000 n 
+0000113569 00000 n 
+0000119777 00000 n 
+0001531300 00000 n 
+0001537414 00000 n 
+0001540827 00000 n 
+0001542129 00000 n 
+0001543145 00000 n 
+0001544215 00000 n 
+0001545295 00000 n 
+0001559545 00000 n 
+0001594347 00000 n 
+0001595731 00000 n 
+0001600853 00000 n 
+0001606920 00000 n 
+0001612837 00000 n 
+0001618533 00000 n 
+0001623115 00000 n 
+0001626064 00000 n 
+0001626990 00000 n 
+0001628547 00000 n 
+0001629856 00000 n 
+0001631301 00000 n 
+0001632832 00000 n 
+0001634076 00000 n 
+0001635389 00000 n 
+0001637192 00000 n 
+0001638613 00000 n 
+0001639838 00000 n 
+0001730159 00000 n 
+0001740389 00000 n 
+0001741669 00000 n 
+0000121378 00000 n 
+0000121534 00000 n 
+0000121690 00000 n 
+0000121847 00000 n 
+0000122004 00000 n 
+0000122160 00000 n 
+0000122317 00000 n 
+0000122474 00000 n 
+0000122631 00000 n 
+0000122788 00000 n 
+0000122945 00000 n 
+0000123101 00000 n 
+0000123258 00000 n 
+0000123479 00000 n 
+0000120967 00000 n 
+0000119943 00000 n 
+0000123415 00000 n 
+0001746431 00000 n 
+0001746558 00000 n 
+0002536464 00000 n 
+0002537962 00000 n 
+0002539153 00000 n 
+0002539281 00000 n 
+0002540745 00000 n 
+0002542117 00000 n 
+0002543482 00000 n 
+0002544981 00000 n 
+0002546159 00000 n 
+0002547278 00000 n 
+0002548640 00000 n 
+0002548766 00000 n 
+0000123862 00000 n 
+0000123682 00000 n 
+0000123581 00000 n 
+0000123798 00000 n 
+0003376046 00000 n 
+0000125423 00000 n 
+0000125567 00000 n 
+0000125720 00000 n 
+0000125873 00000 n 
+0000126017 00000 n 
+0000126170 00000 n 
+0000126315 00000 n 
+0000126468 00000 n 
+0000126614 00000 n 
+0000126767 00000 n 
+0000126913 00000 n 
+0000127066 00000 n 
+0000127219 00000 n 
+0000127372 00000 n 
+0000127518 00000 n 
+0000127671 00000 n 
+0000127824 00000 n 
+0000127977 00000 n 
+0000128130 00000 n 
+0000128283 00000 n 
+0000130414 00000 n 
+0000128562 00000 n 
+0000125115 00000 n 
+0000123904 00000 n 
+0000128436 00000 n 
+0003156076 00000 n 
+0000215746 00000 n 
+0000258512 00000 n 
+0003156042 00000 n 
+0000305967 00000 n 
+0003156008 00000 n 
+0000374345 00000 n 
+0003155974 00000 n 
+0000526697 00000 n 
+0003155940 00000 n 
+0000644418 00000 n 
+0000695764 00000 n 
+0000809569 00000 n 
+0003155906 00000 n 
+0000912964 00000 n 
+0000922147 00000 n 
+0000922275 00000 n 
+0000933012 00000 n 
+0000933140 00000 n 
+0001085745 00000 n 
+0000130566 00000 n 
+0000130712 00000 n 
+0000130864 00000 n 
+0000131017 00000 n 
+0000131170 00000 n 
+0000131316 00000 n 
+0000131469 00000 n 
+0000131621 00000 n 
+0000131767 00000 n 
+0000131921 00000 n 
+0000132074 00000 n 
+0000132228 00000 n 
+0000132382 00000 n 
+0000132536 00000 n 
+0000132690 00000 n 
+0000132844 00000 n 
+0000132998 00000 n 
+0000133152 00000 n 
+0000133306 00000 n 
+0000133460 00000 n 
+0000133615 00000 n 
+0000133760 00000 n 
+0000133914 00000 n 
+0000134068 00000 n 
+0000134218 00000 n 
+0000134372 00000 n 
+0000134526 00000 n 
+0000134680 00000 n 
+0000134898 00000 n 
+0000130025 00000 n 
+0000128664 00000 n 
+0000134834 00000 n 
+0001186364 00000 n 
+0003155872 00000 n 
+0001212209 00000 n 
+0001240608 00000 n 
+0001271847 00000 n 
+0003155838 00000 n 
+0001442347 00000 n 
+0001474974 00000 n 
+0003155804 00000 n 
+0001831098 00000 n 
+0001863424 00000 n 
+0001890596 00000 n 
+0001890724 00000 n 
+0001912636 00000 n 
+0002019547 00000 n 
+0002095575 00000 n 
+0002189072 00000 n 
+0002275665 00000 n 
+0002353106 00000 n 
+0002433484 00000 n 
+0002525940 00000 n 
+0003155770 00000 n 
+0002594416 00000 n 
+0002620766 00000 n 
+0002654748 00000 n 
+0002674203 00000 n 
+0002690565 00000 n 
+0002713236 00000 n 
+0002730417 00000 n 
+0000136412 00000 n 
+0000136564 00000 n 
+0000136708 00000 n 
+0000136860 00000 n 
+0000137005 00000 n 
+0000137157 00000 n 
+0000137309 00000 n 
+0000137455 00000 n 
+0000137607 00000 n 
+0000137753 00000 n 
+0000137905 00000 n 
+0000138057 00000 n 
+0000138209 00000 n 
+0000138361 00000 n 
+0000138507 00000 n 
+0000138659 00000 n 
+0000138805 00000 n 
+0000138958 00000 n 
+0000139104 00000 n 
+0000139257 00000 n 
+0000139536 00000 n 
+0000136104 00000 n 
+0000135000 00000 n 
+0000139410 00000 n 
+0000175091 00000 n 
+0000258640 00000 n 
+0000359112 00000 n 
+0000414673 00000 n 
+0000532940 00000 n 
+0000647472 00000 n 
+0000699194 00000 n 
+0000738741 00000 n 
+0000809697 00000 n 
+0001483446 00000 n 
+0003155736 00000 n 
+0001761025 00000 n 
+0002623770 00000 n 
+0002629937 00000 n 
+0000139919 00000 n 
+0000139739 00000 n 
+0000139638 00000 n 
+0000139855 00000 n 
+0000142286 00000 n 
+0000141852 00000 n 
+0000139961 00000 n 
+0000141968 00000 n 
+0000142032 00000 n 
+0000142096 00000 n 
+0000142222 00000 n 
+0000144873 00000 n 
+0000144693 00000 n 
+0000142388 00000 n 
+0000144809 00000 n 
+0003376171 00000 n 
+0000145749 00000 n 
+0000145569 00000 n 
+0000144989 00000 n 
+0000145685 00000 n 
+0000148366 00000 n 
+0000148058 00000 n 
+0000145851 00000 n 
+0000148174 00000 n 
+0000148238 00000 n 
+0000148302 00000 n 
+0000150554 00000 n 
+0000151026 00000 n 
+0000150417 00000 n 
+0000148468 00000 n 
+0000150706 00000 n 
+0000150770 00000 n 
+0000150834 00000 n 
+0000150898 00000 n 
+0000150962 00000 n 
+0000175155 00000 n 
+0000153928 00000 n 
+0000153492 00000 n 
+0000151156 00000 n 
+0000153608 00000 n 
+0000153672 00000 n 
+0000153736 00000 n 
+0000153800 00000 n 
+0000153864 00000 n 
+0003375231 00000 n 
+0000156567 00000 n 
+0000156259 00000 n 
+0000154072 00000 n 
+0000156375 00000 n 
+0000156439 00000 n 
+0000156503 00000 n 
+0003374503 00000 n 
+0000159081 00000 n 
+0000158901 00000 n 
+0000156725 00000 n 
+0000159017 00000 n 
+0003372307 00000 n 
+0003376296 00000 n 
+0000161972 00000 n 
+0000161792 00000 n 
+0000159239 00000 n 
+0000161908 00000 n 
+0000164599 00000 n 
+0000164844 00000 n 
+0000164462 00000 n 
+0000162102 00000 n 
+0000164780 00000 n 
+0003373328 00000 n 
+0003373184 00000 n 
+0003372747 00000 n 
+0003375378 00000 n 
+0000167314 00000 n 
+0000167134 00000 n 
+0000165016 00000 n 
+0000167250 00000 n 
+0000170003 00000 n 
+0000169823 00000 n 
+0000167430 00000 n 
+0000169939 00000 n 
+0000172476 00000 n 
+0000172168 00000 n 
+0000170119 00000 n 
+0000172284 00000 n 
+0000172348 00000 n 
+0000172412 00000 n 
+0000175219 00000 n 
+0000174911 00000 n 
+0000172620 00000 n 
+0000175027 00000 n 
+0003376421 00000 n 
+0000175766 00000 n 
+0000175588 00000 n 
+0000175349 00000 n 
+0000176057 00000 n 
+0000175941 00000 n 
+0000175840 00000 n 
+0000177910 00000 n 
+0000178412 00000 n 
+0000177773 00000 n 
+0000176099 00000 n 
+0000178094 00000 n 
+0000178158 00000 n 
+0000178284 00000 n 
+0000178348 00000 n 
+0000178865 00000 n 
+0000178685 00000 n 
+0000178584 00000 n 
+0000178801 00000 n 
+0000181188 00000 n 
+0000180756 00000 n 
+0000178907 00000 n 
+0000180872 00000 n 
+0003373913 00000 n 
+0000180998 00000 n 
+0000181124 00000 n 
+0003373473 00000 n 
+0000186758 00000 n 
+0000183841 00000 n 
+0000183410 00000 n 
+0000181346 00000 n 
+0000183526 00000 n 
+0000183652 00000 n 
+0000183778 00000 n 
+0003376546 00000 n 
+0000187117 00000 n 
+0000186621 00000 n 
+0000183985 00000 n 
+0000186927 00000 n 
+0000187053 00000 n 
+0000189392 00000 n 
+0000189236 00000 n 
+0000190068 00000 n 
+0000189090 00000 n 
+0000187317 00000 n 
+0000189560 00000 n 
+0000189686 00000 n 
+0000189750 00000 n 
+0000189814 00000 n 
+0000189878 00000 n 
+0000189941 00000 n 
+0000190004 00000 n 
+0000192887 00000 n 
+0000193971 00000 n 
+0000192643 00000 n 
+0000190254 00000 n 
+0000192759 00000 n 
+0000192951 00000 n 
+0003375524 00000 n 
+0000193015 00000 n 
+0000193079 00000 n 
+0000193143 00000 n 
+0000193207 00000 n 
+0000193271 00000 n 
+0000193335 00000 n 
+0000193399 00000 n 
+0000193462 00000 n 
+0000193526 00000 n 
+0000193589 00000 n 
+0000193653 00000 n 
+0000193717 00000 n 
+0000193781 00000 n 
+0000193907 00000 n 
+0000196098 00000 n 
+0000195726 00000 n 
+0000194128 00000 n 
+0000195842 00000 n 
+0000195906 00000 n 
+0000195970 00000 n 
+0000196034 00000 n 
+0000199266 00000 n 
+0000198960 00000 n 
+0000196256 00000 n 
+0000199076 00000 n 
+0000199202 00000 n 
+0000202143 00000 n 
+0000202295 00000 n 
+0000202642 00000 n 
+0000201997 00000 n 
+0000199410 00000 n 
+0000202452 00000 n 
+0000202578 00000 n 
+0003376671 00000 n 
+0001796495 00000 n 
+0002353298 00000 n 
+0000205021 00000 n 
+0000206829 00000 n 
+0000205492 00000 n 
+0000204884 00000 n 
+0000202772 00000 n 
+0000205175 00000 n 
+0000205301 00000 n 
+0000205365 00000 n 
+0000205428 00000 n 
+0000215810 00000 n 
+0000216002 00000 n 
+0000206713 00000 n 
+0000205622 00000 n 
+0000215682 00000 n 
+0000215874 00000 n 
+0000215938 00000 n 
+0000210971 00000 n 
+0000211089 00000 n 
+0000211137 00000 n 
+0000211566 00000 n 
+0000211589 00000 n 
+0000211969 00000 n 
+0000215659 00000 n 
+0000218412 00000 n 
+0000218104 00000 n 
+0000216147 00000 n 
+0000218220 00000 n 
+0000218284 00000 n 
+0000218348 00000 n 
+0000220383 00000 n 
+0000220544 00000 n 
+0000220703 00000 n 
+0000221367 00000 n 
+0000220228 00000 n 
+0000218570 00000 n 
+0000220857 00000 n 
+0000220921 00000 n 
+0000220985 00000 n 
+0000221049 00000 n 
+0000221111 00000 n 
+0000221175 00000 n 
+0000221239 00000 n 
+0000221303 00000 n 
+0000225121 00000 n 
+0000231212 00000 n 
+0000224839 00000 n 
+0000227294 00000 n 
+0000224702 00000 n 
+0000221483 00000 n 
+0000224993 00000 n 
+0000225185 00000 n 
+0000225249 00000 n 
+0000225313 00000 n 
+0000225377 00000 n 
+0000225441 00000 n 
+0000225505 00000 n 
+0000225569 00000 n 
+0000225633 00000 n 
+0000225697 00000 n 
+0000225761 00000 n 
+0000225825 00000 n 
+0000225889 00000 n 
+0000225952 00000 n 
+0000226016 00000 n 
+0000226079 00000 n 
+0000226143 00000 n 
+0000226206 00000 n 
+0000226270 00000 n 
+0000226334 00000 n 
+0000226398 00000 n 
+0000226462 00000 n 
+0000226526 00000 n 
+0000226590 00000 n 
+0000226654 00000 n 
+0000226718 00000 n 
+0000226782 00000 n 
+0000226846 00000 n 
+0000226910 00000 n 
+0000226974 00000 n 
+0000227038 00000 n 
+0000227102 00000 n 
+0000227166 00000 n 
+0000227230 00000 n 
+0000233639 00000 n 
+0000230968 00000 n 
+0000227451 00000 n 
+0000231084 00000 n 
+0000231276 00000 n 
+0000231340 00000 n 
+0000231404 00000 n 
+0000231468 00000 n 
+0000231532 00000 n 
+0000231596 00000 n 
+0000231660 00000 n 
+0000231724 00000 n 
+0000231787 00000 n 
+0000231851 00000 n 
+0000231914 00000 n 
+0000231978 00000 n 
+0000232040 00000 n 
+0000232104 00000 n 
+0000232168 00000 n 
+0000232232 00000 n 
+0000232296 00000 n 
+0000232360 00000 n 
+0000232424 00000 n 
+0000232488 00000 n 
+0000232552 00000 n 
+0000232616 00000 n 
+0000232680 00000 n 
+0000232744 00000 n 
+0000232808 00000 n 
+0000232872 00000 n 
+0000232936 00000 n 
+0000233000 00000 n 
+0000233064 00000 n 
+0000233128 00000 n 
+0000233192 00000 n 
+0000233256 00000 n 
+0000233320 00000 n 
+0000233384 00000 n 
+0000233448 00000 n 
+0000233512 00000 n 
+0000233575 00000 n 
+0003376796 00000 n 
+0000235995 00000 n 
+0000236847 00000 n 
+0000235858 00000 n 
+0000233796 00000 n 
+0000236143 00000 n 
+0000236207 00000 n 
+0000236271 00000 n 
+0000236335 00000 n 
+0000236463 00000 n 
+0000236527 00000 n 
+0000236591 00000 n 
+0000236655 00000 n 
+0000236719 00000 n 
+0000236783 00000 n 
+0000242746 00000 n 
+0000240376 00000 n 
+0000239366 00000 n 
+0000236991 00000 n 
+0000239482 00000 n 
+0000239546 00000 n 
+0000239610 00000 n 
+0000239674 00000 n 
+0000239738 00000 n 
+0000239802 00000 n 
+0000239866 00000 n 
+0000239930 00000 n 
+0000239993 00000 n 
+0000240057 00000 n 
+0000240121 00000 n 
+0000240185 00000 n 
+0000240249 00000 n 
+0000240313 00000 n 
+0000243215 00000 n 
+0000242609 00000 n 
+0000240520 00000 n 
+0000242899 00000 n 
+0000243025 00000 n 
+0000243151 00000 n 
+0000245618 00000 n 
+0000245770 00000 n 
+0000248884 00000 n 
+0000246497 00000 n 
+0000245472 00000 n 
+0000243331 00000 n 
+0000245925 00000 n 
+0000246051 00000 n 
+0000246177 00000 n 
+0000246241 00000 n 
+0000246305 00000 n 
+0000246369 00000 n 
+0000246433 00000 n 
+0000258704 00000 n 
+0000258576 00000 n 
+0000258144 00000 n 
+0000258295 00000 n 
+0000258896 00000 n 
+0000248738 00000 n 
+0000246627 00000 n 
+0000258448 00000 n 
+0000258768 00000 n 
+0000258832 00000 n 
+0000252518 00000 n 
+0000252636 00000 n 
+0000252684 00000 n 
+0000253125 00000 n 
+0000253148 00000 n 
+0000253573 00000 n 
+0000253669 00000 n 
+0000258121 00000 n 
+0000266379 00000 n 
+0000260492 00000 n 
+0000260120 00000 n 
+0000259111 00000 n 
+0000260236 00000 n 
+0000260300 00000 n 
+0000260364 00000 n 
+0000260428 00000 n 
+0003376921 00000 n 
+0000263061 00000 n 
+0000262369 00000 n 
+0000260608 00000 n 
+0000262485 00000 n 
+0000262549 00000 n 
+0000262613 00000 n 
+0000262677 00000 n 
+0000262741 00000 n 
+0000262805 00000 n 
+0000262869 00000 n 
+0000262933 00000 n 
+0000262997 00000 n 
+0000267977 00000 n 
+0000266072 00000 n 
+0000263191 00000 n 
+0000266188 00000 n 
+0000266252 00000 n 
+0000266443 00000 n 
+0000266507 00000 n 
+0000266571 00000 n 
+0000266635 00000 n 
+0000266699 00000 n 
+0000266763 00000 n 
+0000266827 00000 n 
+0000266891 00000 n 
+0000266955 00000 n 
+0000267019 00000 n 
+0000267083 00000 n 
+0000267147 00000 n 
+0000267211 00000 n 
+0000267275 00000 n 
+0000267339 00000 n 
+0000267403 00000 n 
+0000267467 00000 n 
+0000267531 00000 n 
+0000267595 00000 n 
+0000267659 00000 n 
+0000267723 00000 n 
+0000267787 00000 n 
+0000267850 00000 n 
+0000267914 00000 n 
+0000270385 00000 n 
+0000270014 00000 n 
+0000268120 00000 n 
+0000270130 00000 n 
+0000270257 00000 n 
+0000270321 00000 n 
+0000273077 00000 n 
+0000272897 00000 n 
+0000270543 00000 n 
+0000273013 00000 n 
+0000275880 00000 n 
+0000275700 00000 n 
+0000273193 00000 n 
+0000275816 00000 n 
+0000277599 00000 n 
+0000277419 00000 n 
+0000276024 00000 n 
+0000277535 00000 n 
+0003377046 00000 n 
+0000279742 00000 n 
+0000280082 00000 n 
+0000279605 00000 n 
+0000277715 00000 n 
+0000279891 00000 n 
+0000280018 00000 n 
+0000282955 00000 n 
+0000282521 00000 n 
+0000280198 00000 n 
+0000282637 00000 n 
+0000282764 00000 n 
+0000282891 00000 n 
+0000285141 00000 n 
+0000289133 00000 n 
+0000285617 00000 n 
+0000285004 00000 n 
+0000283071 00000 n 
+0000285300 00000 n 
+0000285427 00000 n 
+0000285554 00000 n 
+0000288054 00000 n 
+0000289347 00000 n 
+0000287917 00000 n 
+0000285761 00000 n 
+0000289283 00000 n 
+0003372159 00000 n 
+0003373766 00000 n 
+0000288438 00000 n 
+0000288556 00000 n 
+0000288604 00000 n 
+0000289112 00000 n 
+0000340202 00000 n 
+0000291956 00000 n 
+0000292108 00000 n 
+0000292730 00000 n 
+0000291801 00000 n 
+0000289520 00000 n 
+0000292413 00000 n 
+0000292540 00000 n 
+0000292667 00000 n 
+0000292260 00000 n 
+0001428178 00000 n 
+0000294381 00000 n 
+0000306285 00000 n 
+0000294265 00000 n 
+0000292874 00000 n 
+0000305903 00000 n 
+0000306030 00000 n 
+0000306093 00000 n 
+0000306157 00000 n 
+0000306221 00000 n 
+0003377171 00000 n 
+0000300649 00000 n 
+0000300767 00000 n 
+0000300815 00000 n 
+0000301254 00000 n 
+0000301277 00000 n 
+0000301666 00000 n 
+0000305880 00000 n 
+0000308248 00000 n 
+0000308399 00000 n 
+0000308936 00000 n 
+0000308102 00000 n 
+0000306430 00000 n 
+0000308552 00000 n 
+0000308616 00000 n 
+0000308680 00000 n 
+0000308744 00000 n 
+0000308808 00000 n 
+0000308872 00000 n 
+0000343854 00000 n 
+0000348235 00000 n 
+0000310365 00000 n 
+0000310645 00000 n 
+0000310228 00000 n 
+0000309052 00000 n 
+0000310517 00000 n 
+0000310581 00000 n 
+0000312250 00000 n 
+0000312378 00000 n 
+0000312006 00000 n 
+0000310761 00000 n 
+0000312122 00000 n 
+0000312314 00000 n 
+0000314537 00000 n 
+0000315137 00000 n 
+0000314400 00000 n 
+0000312494 00000 n 
+0000314689 00000 n 
+0000314753 00000 n 
+0000314817 00000 n 
+0000314881 00000 n 
+0000314945 00000 n 
+0000315009 00000 n 
+0000315073 00000 n 
+0000316838 00000 n 
+0000317499 00000 n 
+0000316701 00000 n 
+0000315253 00000 n 
+0000316988 00000 n 
+0000317052 00000 n 
+0000317116 00000 n 
+0000317180 00000 n 
+0000317244 00000 n 
+0000317371 00000 n 
+0000317435 00000 n 
+0000318879 00000 n 
+0000318699 00000 n 
+0000317629 00000 n 
+0000318815 00000 n 
+0003377296 00000 n 
+0000320573 00000 n 
+0000320267 00000 n 
+0000318995 00000 n 
+0000320383 00000 n 
+0000320447 00000 n 
+0000320510 00000 n 
+0000322733 00000 n 
+0000322425 00000 n 
+0000320703 00000 n 
+0000322541 00000 n 
+0000322605 00000 n 
+0000322669 00000 n 
+0000325252 00000 n 
+0000325403 00000 n 
+0000325706 00000 n 
+0000326432 00000 n 
+0000325088 00000 n 
+0000322849 00000 n 
+0000325857 00000 n 
+0000325921 00000 n 
+0000325985 00000 n 
+0000325554 00000 n 
+0000326049 00000 n 
+0000326113 00000 n 
+0000326177 00000 n 
+0000326241 00000 n 
+0000326305 00000 n 
+0000326369 00000 n 
+0001796622 00000 n 
+0000329389 00000 n 
+0000328764 00000 n 
+0000326576 00000 n 
+0000328880 00000 n 
+0000328944 00000 n 
+0000329008 00000 n 
+0000329072 00000 n 
+0000329198 00000 n 
+0000329325 00000 n 
+0000331896 00000 n 
+0000331525 00000 n 
+0000329533 00000 n 
+0000331641 00000 n 
+0000331768 00000 n 
+0000331832 00000 n 
+0000334514 00000 n 
+0000334334 00000 n 
+0000332054 00000 n 
+0000334450 00000 n 
+0003377421 00000 n 
+0000337420 00000 n 
+0000336984 00000 n 
+0000334672 00000 n 
+0000337100 00000 n 
+0000337164 00000 n 
+0000337228 00000 n 
+0000337292 00000 n 
+0000337356 00000 n 
+0003372010 00000 n 
+0000338832 00000 n 
+0000338652 00000 n 
+0000337592 00000 n 
+0000338768 00000 n 
+0000340266 00000 n 
+0000339958 00000 n 
+0000338976 00000 n 
+0000340074 00000 n 
+0000345389 00000 n 
+0000343610 00000 n 
+0000340382 00000 n 
+0000343726 00000 n 
+0000343918 00000 n 
+0000343982 00000 n 
+0000344046 00000 n 
+0000344110 00000 n 
+0000344174 00000 n 
+0003372455 00000 n 
+0000344238 00000 n 
+0000344302 00000 n 
+0000344366 00000 n 
+0000344430 00000 n 
+0000344494 00000 n 
+0000344558 00000 n 
+0000344622 00000 n 
+0000344686 00000 n 
+0000344750 00000 n 
+0000344814 00000 n 
+0000344878 00000 n 
+0000344942 00000 n 
+0000345006 00000 n 
+0000345069 00000 n 
+0000345133 00000 n 
+0000345197 00000 n 
+0000345261 00000 n 
+0000345325 00000 n 
+0000350087 00000 n 
+0000347991 00000 n 
+0000345546 00000 n 
+0000348107 00000 n 
+0000348299 00000 n 
+0000348363 00000 n 
+0000348427 00000 n 
+0000348491 00000 n 
+0000348555 00000 n 
+0000348619 00000 n 
+0000348683 00000 n 
+0000348747 00000 n 
+0000348811 00000 n 
+0000348875 00000 n 
+0000348939 00000 n 
+0000349003 00000 n 
+0000349067 00000 n 
+0000349131 00000 n 
+0000349195 00000 n 
+0000349259 00000 n 
+0000349323 00000 n 
+0000349387 00000 n 
+0000349451 00000 n 
+0000349515 00000 n 
+0000349579 00000 n 
+0000349643 00000 n 
+0000349706 00000 n 
+0000349770 00000 n 
+0000349833 00000 n 
+0000349897 00000 n 
+0000349959 00000 n 
+0000350023 00000 n 
+0000350483 00000 n 
+0000350303 00000 n 
+0000350202 00000 n 
+0000350419 00000 n 
+0003377546 00000 n 
+0000352447 00000 n 
+0000352745 00000 n 
+0000353212 00000 n 
+0000352292 00000 n 
+0000350525 00000 n 
+0000352894 00000 n 
+0000353021 00000 n 
+0000352596 00000 n 
+0000353148 00000 n 
+0000356107 00000 n 
+0000355800 00000 n 
+0000353328 00000 n 
+0000355916 00000 n 
+0000356043 00000 n 
+0000358894 00000 n 
+0000360815 00000 n 
+0000359238 00000 n 
+0000358757 00000 n 
+0000356223 00000 n 
+0000359048 00000 n 
+0000359176 00000 n 
+0000374727 00000 n 
+0000360699 00000 n 
+0000359354 00000 n 
+0000374281 00000 n 
+0000374409 00000 n 
+0000374536 00000 n 
+0000374663 00000 n 
+0000369033 00000 n 
+0000369151 00000 n 
+0000369199 00000 n 
+0000369640 00000 n 
+0000369663 00000 n 
+0000370052 00000 n 
+0000374258 00000 n 
+0000377726 00000 n 
+0000377546 00000 n 
+0000374872 00000 n 
+0000377662 00000 n 
+0000380134 00000 n 
+0000380432 00000 n 
+0000382786 00000 n 
+0000380646 00000 n 
+0000379979 00000 n 
+0000377842 00000 n 
+0000380582 00000 n 
+0000380283 00000 n 
+0003377671 00000 n 
+0000383258 00000 n 
+0000382649 00000 n 
+0000380762 00000 n 
+0000382939 00000 n 
+0000383066 00000 n 
+0000383194 00000 n 
+0000385296 00000 n 
+0000385642 00000 n 
+0000385159 00000 n 
+0000383388 00000 n 
+0000385450 00000 n 
+0000385578 00000 n 
+0000388038 00000 n 
+0000388506 00000 n 
+0000387901 00000 n 
+0000385758 00000 n 
+0000388188 00000 n 
+0000388315 00000 n 
+0000388442 00000 n 
+0000391442 00000 n 
+0000391706 00000 n 
+0000391305 00000 n 
+0000388664 00000 n 
+0000391642 00000 n 
+0003375086 00000 n 
+0000393638 00000 n 
+0000394555 00000 n 
+0000393501 00000 n 
+0000391948 00000 n 
+0000393789 00000 n 
+0000393853 00000 n 
+0000393917 00000 n 
+0000393980 00000 n 
+0000394044 00000 n 
+0000394108 00000 n 
+0000394172 00000 n 
+0000394236 00000 n 
+0000394300 00000 n 
+0000394427 00000 n 
+0000394491 00000 n 
+0000396499 00000 n 
+0000396191 00000 n 
+0000394699 00000 n 
+0000396307 00000 n 
+0000396371 00000 n 
+0000396435 00000 n 
+0003377796 00000 n 
+0000398474 00000 n 
+0000398818 00000 n 
+0000398337 00000 n 
+0000396615 00000 n 
+0000398626 00000 n 
+0000398690 00000 n 
+0000398754 00000 n 
+0000466116 00000 n 
+0000400949 00000 n 
+0000401102 00000 n 
+0000401259 00000 n 
+0000401799 00000 n 
+0000400794 00000 n 
+0000398976 00000 n 
+0000401416 00000 n 
+0000401543 00000 n 
+0000401607 00000 n 
+0000401671 00000 n 
+0000401735 00000 n 
+0000471544 00000 n 
+0000477296 00000 n 
+0000481541 00000 n 
+0000403432 00000 n 
+0000403581 00000 n 
+0000404076 00000 n 
+0000403277 00000 n 
+0000401929 00000 n 
+0000403885 00000 n 
+0000403949 00000 n 
+0000404013 00000 n 
+0000403733 00000 n 
+0000405963 00000 n 
+0000405719 00000 n 
+0000404192 00000 n 
+0000405835 00000 n 
+0000405899 00000 n 
+0000408404 00000 n 
+0000407968 00000 n 
+0000406079 00000 n 
+0000408084 00000 n 
+0000408148 00000 n 
+0000408212 00000 n 
+0000408276 00000 n 
+0000408340 00000 n 
+0000409937 00000 n 
+0000409693 00000 n 
+0000408534 00000 n 
+0000409809 00000 n 
+0000409873 00000 n 
+0003377921 00000 n 
+0000412294 00000 n 
+0000412446 00000 n 
+0000412601 00000 n 
+0000412759 00000 n 
+0000412917 00000 n 
+0000413230 00000 n 
+0000413381 00000 n 
+0000413532 00000 n 
+0000413684 00000 n 
+0000413836 00000 n 
+0000413987 00000 n 
+0000414138 00000 n 
+0000414864 00000 n 
+0000412049 00000 n 
+0000410053 00000 n 
+0000414290 00000 n 
+0000414417 00000 n 
+0000414481 00000 n 
+0000414545 00000 n 
+0000414609 00000 n 
+0000413073 00000 n 
+0000414737 00000 n 
+0000414800 00000 n 
+0000483968 00000 n 
+0000485163 00000 n 
+0000486224 00000 n 
+0000487272 00000 n 
+0002539217 00000 n 
+0002539345 00000 n 
+0002540809 00000 n 
+0000489743 00000 n 
+0000490880 00000 n 
+0000488458 00000 n 
+0000488585 00000 n 
+0000417620 00000 n 
+0000417057 00000 n 
+0000414994 00000 n 
+0000417173 00000 n 
+0000417237 00000 n 
+0000417364 00000 n 
+0000417428 00000 n 
+0000417492 00000 n 
+0000417556 00000 n 
+0000419463 00000 n 
+0000418965 00000 n 
+0000417750 00000 n 
+0000419081 00000 n 
+0000419145 00000 n 
+0000419209 00000 n 
+0000419272 00000 n 
+0000419335 00000 n 
+0000419399 00000 n 
+0000421816 00000 n 
+0000421384 00000 n 
+0000419579 00000 n 
+0000421500 00000 n 
+0000421626 00000 n 
+0000421690 00000 n 
+0000421754 00000 n 
+0000424242 00000 n 
+0000423871 00000 n 
+0000421960 00000 n 
+0000423987 00000 n 
+0000424114 00000 n 
+0000424178 00000 n 
+0000425982 00000 n 
+0000425674 00000 n 
+0000424372 00000 n 
+0000425790 00000 n 
+0000425854 00000 n 
+0000425918 00000 n 
+0003378046 00000 n 
+0000428035 00000 n 
+0000428377 00000 n 
+0000427898 00000 n 
+0000426098 00000 n 
+0000428186 00000 n 
+0000428250 00000 n 
+0000428314 00000 n 
+0000430100 00000 n 
+0000429856 00000 n 
+0000428521 00000 n 
+0000429972 00000 n 
+0000430036 00000 n 
+0000431330 00000 n 
+0000431150 00000 n 
+0000430216 00000 n 
+0000431266 00000 n 
+0000433116 00000 n 
+0000432808 00000 n 
+0000431432 00000 n 
+0000432924 00000 n 
+0000432988 00000 n 
+0000433052 00000 n 
+0003371864 00000 n 
+0000435337 00000 n 
+0000435029 00000 n 
+0000433302 00000 n 
+0000435145 00000 n 
+0000435209 00000 n 
+0000435273 00000 n 
+0000437027 00000 n 
+0000437333 00000 n 
+0000436890 00000 n 
+0000435453 00000 n 
+0000437205 00000 n 
+0000437269 00000 n 
+0003378171 00000 n 
+0000438787 00000 n 
+0000438607 00000 n 
+0000437505 00000 n 
+0000438723 00000 n 
+0000440962 00000 n 
+0000440655 00000 n 
+0000438903 00000 n 
+0000440771 00000 n 
+0000440898 00000 n 
+0000443637 00000 n 
+0000443331 00000 n 
+0000441106 00000 n 
+0000443447 00000 n 
+0000443573 00000 n 
+0000449217 00000 n 
+0000449521 00000 n 
+0000446536 00000 n 
+0000446102 00000 n 
+0000443753 00000 n 
+0000446218 00000 n 
+0000446345 00000 n 
+0000446408 00000 n 
+0000446472 00000 n 
+0000452942 00000 n 
+0000453094 00000 n 
+0000450247 00000 n 
+0000449062 00000 n 
+0000446666 00000 n 
+0000449672 00000 n 
+0000449369 00000 n 
+0000449736 00000 n 
+0000449799 00000 n 
+0000449863 00000 n 
+0000449927 00000 n 
+0000449991 00000 n 
+0000450055 00000 n 
+0000450119 00000 n 
+0000450183 00000 n 
+0000453948 00000 n 
+0000452796 00000 n 
+0000450377 00000 n 
+0000453245 00000 n 
+0000453309 00000 n 
+0000453373 00000 n 
+0000453437 00000 n 
+0000453501 00000 n 
+0000453565 00000 n 
+0000453629 00000 n 
+0000453693 00000 n 
+0000453757 00000 n 
+0000453884 00000 n 
+0003378296 00000 n 
+0000456710 00000 n 
+0000456339 00000 n 
+0000454092 00000 n 
+0000456455 00000 n 
+0000456582 00000 n 
+0000456646 00000 n 
+0000459422 00000 n 
+0000459242 00000 n 
+0000456882 00000 n 
+0000459358 00000 n 
+0003373618 00000 n 
+0000461915 00000 n 
+0000461735 00000 n 
+0000459608 00000 n 
+0000461851 00000 n 
+0000464593 00000 n 
+0000464413 00000 n 
+0000462031 00000 n 
+0000464529 00000 n 
+0000466180 00000 n 
+0000465872 00000 n 
+0000464793 00000 n 
+0000465988 00000 n 
+0000474358 00000 n 
+0000471300 00000 n 
+0000466296 00000 n 
+0000471416 00000 n 
+0000471608 00000 n 
+0000471672 00000 n 
+0000471736 00000 n 
+0000471800 00000 n 
+0000471864 00000 n 
+0000471928 00000 n 
+0000471992 00000 n 
+0000472056 00000 n 
+0000472120 00000 n 
+0000472184 00000 n 
+0000472248 00000 n 
+0000472312 00000 n 
+0000472376 00000 n 
+0000472440 00000 n 
+0000472504 00000 n 
+0000472568 00000 n 
+0000472632 00000 n 
+0000472696 00000 n 
+0000472760 00000 n 
+0000472824 00000 n 
+0000472888 00000 n 
+0000472952 00000 n 
+0000473016 00000 n 
+0000473080 00000 n 
+0000473143 00000 n 
+0000473207 00000 n 
+0000473270 00000 n 
+0000473334 00000 n 
+0000473398 00000 n 
+0000473462 00000 n 
+0000473526 00000 n 
+0000473590 00000 n 
+0000473654 00000 n 
+0000473718 00000 n 
+0000473782 00000 n 
+0000473846 00000 n 
+0000473910 00000 n 
+0000473974 00000 n 
+0000474038 00000 n 
+0000474102 00000 n 
+0000474166 00000 n 
+0000474230 00000 n 
+0000474294 00000 n 
+0003378421 00000 n 
+0000479148 00000 n 
+0000477052 00000 n 
+0000474515 00000 n 
+0000477168 00000 n 
+0000477360 00000 n 
+0000477424 00000 n 
+0000477488 00000 n 
+0000477552 00000 n 
+0000477616 00000 n 
+0000477680 00000 n 
+0000477744 00000 n 
+0000477808 00000 n 
+0000477872 00000 n 
+0000477936 00000 n 
+0000478000 00000 n 
+0000478064 00000 n 
+0000478128 00000 n 
+0000478192 00000 n 
+0000478256 00000 n 
+0000478319 00000 n 
+0000478383 00000 n 
+0000478446 00000 n 
+0000478510 00000 n 
+0000478572 00000 n 
+0000478636 00000 n 
+0000478700 00000 n 
+0000478764 00000 n 
+0000478828 00000 n 
+0000478892 00000 n 
+0000478956 00000 n 
+0000479020 00000 n 
+0000479084 00000 n 
+0000482628 00000 n 
+0000481297 00000 n 
+0000479277 00000 n 
+0000481413 00000 n 
+0000481605 00000 n 
+0000481669 00000 n 
+0000481733 00000 n 
+0000481797 00000 n 
+0000481861 00000 n 
+0000481925 00000 n 
+0000481989 00000 n 
+0000482053 00000 n 
+0000482117 00000 n 
+0000482181 00000 n 
+0000482245 00000 n 
+0000482309 00000 n 
+0000482373 00000 n 
+0000482436 00000 n 
+0000482564 00000 n 
+0000484032 00000 n 
+0000483724 00000 n 
+0000482771 00000 n 
+0000483840 00000 n 
+0000485227 00000 n 
+0000484919 00000 n 
+0000484148 00000 n 
+0000485035 00000 n 
+0000486288 00000 n 
+0000485980 00000 n 
+0000485343 00000 n 
+0000486096 00000 n 
+0000487336 00000 n 
+0000487028 00000 n 
+0000486404 00000 n 
+0000487144 00000 n 
+0003378546 00000 n 
+0000488649 00000 n 
+0000488215 00000 n 
+0000487452 00000 n 
+0000488331 00000 n 
+0000489807 00000 n 
+0000489499 00000 n 
+0000488765 00000 n 
+0000489615 00000 n 
+0000490944 00000 n 
+0000490636 00000 n 
+0000489923 00000 n 
+0000490752 00000 n 
+0000491341 00000 n 
+0000491161 00000 n 
+0000491060 00000 n 
+0000491277 00000 n 
+0000493223 00000 n 
+0000493522 00000 n 
+0000493819 00000 n 
+0000494156 00000 n 
+0000493050 00000 n 
+0000491383 00000 n 
+0000493966 00000 n 
+0000494093 00000 n 
+0000493373 00000 n 
+0000493671 00000 n 
+0000608346 00000 n 
+0000496946 00000 n 
+0000496639 00000 n 
+0000494300 00000 n 
+0000496755 00000 n 
+0000496882 00000 n 
+0003378671 00000 n 
+0000499690 00000 n 
+0000499383 00000 n 
+0000497062 00000 n 
+0000499499 00000 n 
+0000499626 00000 n 
+0000502138 00000 n 
+0000502752 00000 n 
+0000501992 00000 n 
+0000499806 00000 n 
+0000502434 00000 n 
+0000502561 00000 n 
+0000502287 00000 n 
+0000502688 00000 n 
+0000505481 00000 n 
+0000505301 00000 n 
+0000502896 00000 n 
+0000505417 00000 n 
+0000507724 00000 n 
+0000508022 00000 n 
+0000510438 00000 n 
+0000508175 00000 n 
+0000529925 00000 n 
+0000530083 00000 n 
+0000530240 00000 n 
+0000530397 00000 n 
+0000530554 00000 n 
+0000530711 00000 n 
+0000530868 00000 n 
+0000531024 00000 n 
+0000531177 00000 n 
+0000531330 00000 n 
+0000531487 00000 n 
+0000531644 00000 n 
+0000531802 00000 n 
+0000531957 00000 n 
+0000532111 00000 n 
+0000532266 00000 n 
+0000532422 00000 n 
+0000532574 00000 n 
+0000532726 00000 n 
+0000508336 00000 n 
+0000509122 00000 n 
+0000507551 00000 n 
+0000505611 00000 n 
+0000508489 00000 n 
+0000508616 00000 n 
+0000507873 00000 n 
+0000508741 00000 n 
+0000508868 00000 n 
+0000508995 00000 n 
+0000509059 00000 n 
+0000526761 00000 n 
+0000533004 00000 n 
+0000526953 00000 n 
+0000510322 00000 n 
+0000509266 00000 n 
+0000526633 00000 n 
+0000526825 00000 n 
+0000526889 00000 n 
+0000520978 00000 n 
+0000521096 00000 n 
+0000521144 00000 n 
+0000521599 00000 n 
+0000521623 00000 n 
+0000522026 00000 n 
+0000526610 00000 n 
+0000533132 00000 n 
+0000529626 00000 n 
+0000527098 00000 n 
+0000532876 00000 n 
+0000533068 00000 n 
+0003378796 00000 n 
+0000558128 00000 n 
+0000564191 00000 n 
+0000570292 00000 n 
+0000575593 00000 n 
+0000576105 00000 n 
+0000576616 00000 n 
+0000595532 00000 n 
+0000596675 00000 n 
+0000597811 00000 n 
+0000599000 00000 n 
+0000600035 00000 n 
+0000601056 00000 n 
+0000602195 00000 n 
+0000603312 00000 n 
+0000604520 00000 n 
+0000605552 00000 n 
+0000537191 00000 n 
+0000537341 00000 n 
+0000537493 00000 n 
+0000535027 00000 n 
+0000534655 00000 n 
+0000533248 00000 n 
+0000534771 00000 n 
+0000534835 00000 n 
+0000534899 00000 n 
+0000534963 00000 n 
+0000538029 00000 n 
+0000537036 00000 n 
+0000535143 00000 n 
+0000537645 00000 n 
+0000537709 00000 n 
+0000537773 00000 n 
+0000537837 00000 n 
+0000537901 00000 n 
+0000537965 00000 n 
+0000540108 00000 n 
+0000540644 00000 n 
+0000539971 00000 n 
+0000538173 00000 n 
+0000540262 00000 n 
+0000540326 00000 n 
+0000540390 00000 n 
+0000540454 00000 n 
+0000540580 00000 n 
+0000543241 00000 n 
+0000542806 00000 n 
+0000540831 00000 n 
+0000542922 00000 n 
+0000543049 00000 n 
+0000543113 00000 n 
+0000543177 00000 n 
+0000545727 00000 n 
+0000546330 00000 n 
+0000545590 00000 n 
+0000543371 00000 n 
+0000545882 00000 n 
+0000545946 00000 n 
+0000546010 00000 n 
+0000546074 00000 n 
+0000546138 00000 n 
+0000546202 00000 n 
+0000546266 00000 n 
+0000606663 00000 n 
+0000548112 00000 n 
+0000547868 00000 n 
+0000546446 00000 n 
+0000547984 00000 n 
+0000548048 00000 n 
+0003378921 00000 n 
+0000549839 00000 n 
+0000549995 00000 n 
+0000552422 00000 n 
+0000552721 00000 n 
+0000550472 00000 n 
+0000549693 00000 n 
+0000548228 00000 n 
+0000550153 00000 n 
+0000550217 00000 n 
+0000550281 00000 n 
+0000550344 00000 n 
+0000550408 00000 n 
+0000560172 00000 n 
+0000553466 00000 n 
+0000552873 00000 n 
+0000553029 00000 n 
+0000553187 00000 n 
+0000553850 00000 n 
+0000552240 00000 n 
+0000550602 00000 n 
+0000553339 00000 n 
+0000552572 00000 n 
+0000553530 00000 n 
+0000553594 00000 n 
+0000553658 00000 n 
+0000553722 00000 n 
+0000553786 00000 n 
+0000560236 00000 n 
+0000557884 00000 n 
+0000553980 00000 n 
+0000558000 00000 n 
+0000558192 00000 n 
+0000558256 00000 n 
+0000558320 00000 n 
+0000558384 00000 n 
+0000558448 00000 n 
+0000558512 00000 n 
+0000558576 00000 n 
+0000558640 00000 n 
+0000558704 00000 n 
+0000558768 00000 n 
+0000558832 00000 n 
+0000558896 00000 n 
+0000558960 00000 n 
+0000559024 00000 n 
+0000559088 00000 n 
+0000559152 00000 n 
+0000559216 00000 n 
+0000559280 00000 n 
+0000559344 00000 n 
+0000559408 00000 n 
+0000559472 00000 n 
+0000559536 00000 n 
+0000559600 00000 n 
+0000559663 00000 n 
+0000559727 00000 n 
+0000559790 00000 n 
+0000559854 00000 n 
+0000559917 00000 n 
+0000559981 00000 n 
+0000560045 00000 n 
+0000565979 00000 n 
+0000563947 00000 n 
+0000560421 00000 n 
+0000564063 00000 n 
+0000564255 00000 n 
+0000564319 00000 n 
+0000564383 00000 n 
+0000564447 00000 n 
+0000564511 00000 n 
+0000564575 00000 n 
+0000564639 00000 n 
+0000564703 00000 n 
+0000564767 00000 n 
+0000564831 00000 n 
+0000564895 00000 n 
+0000564959 00000 n 
+0000565023 00000 n 
+0000565087 00000 n 
+0000565149 00000 n 
+0000565213 00000 n 
+0000565276 00000 n 
+0000565340 00000 n 
+0000565403 00000 n 
+0000565467 00000 n 
+0000565531 00000 n 
+0000565595 00000 n 
+0000565659 00000 n 
+0000565723 00000 n 
+0000565787 00000 n 
+0000565851 00000 n 
+0000565915 00000 n 
+0000572592 00000 n 
+0000570048 00000 n 
+0000566150 00000 n 
+0000570164 00000 n 
+0000570356 00000 n 
+0000570420 00000 n 
+0000570484 00000 n 
+0000570548 00000 n 
+0000570612 00000 n 
+0000570676 00000 n 
+0000570740 00000 n 
+0000570804 00000 n 
+0000570868 00000 n 
+0000570932 00000 n 
+0000570996 00000 n 
+0000571060 00000 n 
+0000571124 00000 n 
+0000571188 00000 n 
+0000571250 00000 n 
+0000571314 00000 n 
+0000571377 00000 n 
+0000571441 00000 n 
+0000571504 00000 n 
+0000571568 00000 n 
+0000571632 00000 n 
+0000571696 00000 n 
+0000571760 00000 n 
+0000571824 00000 n 
+0000571888 00000 n 
+0000571952 00000 n 
+0000572016 00000 n 
+0000572080 00000 n 
+0000572144 00000 n 
+0000572208 00000 n 
+0000572272 00000 n 
+0000572336 00000 n 
+0000572400 00000 n 
+0000572464 00000 n 
+0000572528 00000 n 
+0000577381 00000 n 
+0000575349 00000 n 
+0000572749 00000 n 
+0000575465 00000 n 
+0000575657 00000 n 
+0000575721 00000 n 
+0000575785 00000 n 
+0000575849 00000 n 
+0000575913 00000 n 
+0000575977 00000 n 
+0000576168 00000 n 
+0000576232 00000 n 
+0000576296 00000 n 
+0000576360 00000 n 
+0000576424 00000 n 
+0000576488 00000 n 
+0000576680 00000 n 
+0000576744 00000 n 
+0000576808 00000 n 
+0000576872 00000 n 
+0000576936 00000 n 
+0000577000 00000 n 
+0000577064 00000 n 
+0000577126 00000 n 
+0000577190 00000 n 
+0000577253 00000 n 
+0000577317 00000 n 
+0003379046 00000 n 
+0000579768 00000 n 
+0000580072 00000 n 
+0000580734 00000 n 
+0000579613 00000 n 
+0000577552 00000 n 
+0000580223 00000 n 
+0000580350 00000 n 
+0000580414 00000 n 
+0000580478 00000 n 
+0000579920 00000 n 
+0000580542 00000 n 
+0000580606 00000 n 
+0000580670 00000 n 
+0000584290 00000 n 
+0000583535 00000 n 
+0000580864 00000 n 
+0000583651 00000 n 
+0000583715 00000 n 
+0000583779 00000 n 
+0000583843 00000 n 
+0000583907 00000 n 
+0000583971 00000 n 
+0000584034 00000 n 
+0000584098 00000 n 
+0000584162 00000 n 
+0000584226 00000 n 
+0000586614 00000 n 
+0000586766 00000 n 
+0000586917 00000 n 
+0000587513 00000 n 
+0000586459 00000 n 
+0000584434 00000 n 
+0000587066 00000 n 
+0000587130 00000 n 
+0000587194 00000 n 
+0000587258 00000 n 
+0000587322 00000 n 
+0000587449 00000 n 
+0000589995 00000 n 
+0000589624 00000 n 
+0000587657 00000 n 
+0000589740 00000 n 
+0000589867 00000 n 
+0000589931 00000 n 
+0000592603 00000 n 
+0000592423 00000 n 
+0000590167 00000 n 
+0000592539 00000 n 
+0000594370 00000 n 
+0000594190 00000 n 
+0000592747 00000 n 
+0000594306 00000 n 
+0003379171 00000 n 
+0000595596 00000 n 
+0000595288 00000 n 
+0000594514 00000 n 
+0000595404 00000 n 
+0000596739 00000 n 
+0000596431 00000 n 
+0000595712 00000 n 
+0000596547 00000 n 
+0000597874 00000 n 
+0000597568 00000 n 
+0000596855 00000 n 
+0000597684 00000 n 
+0000599064 00000 n 
+0000598756 00000 n 
+0000597990 00000 n 
+0000598872 00000 n 
+0000600099 00000 n 
+0000599791 00000 n 
+0000599180 00000 n 
+0000599907 00000 n 
+0000601120 00000 n 
+0000600812 00000 n 
+0000600215 00000 n 
+0000600928 00000 n 
+0003379296 00000 n 
+0000602259 00000 n 
+0000601951 00000 n 
+0000601236 00000 n 
+0000602067 00000 n 
+0000603376 00000 n 
+0000603068 00000 n 
+0000602375 00000 n 
+0000603184 00000 n 
+0000604584 00000 n 
+0000604276 00000 n 
+0000603492 00000 n 
+0000604392 00000 n 
+0000605616 00000 n 
+0000605308 00000 n 
+0000604700 00000 n 
+0000605424 00000 n 
+0000606727 00000 n 
+0000606419 00000 n 
+0000605732 00000 n 
+0000606535 00000 n 
+0000607124 00000 n 
+0000606944 00000 n 
+0000606843 00000 n 
+0000607060 00000 n 
+0003379421 00000 n 
+0000608065 00000 n 
+0000610927 00000 n 
+0000608410 00000 n 
+0000607928 00000 n 
+0000607166 00000 n 
+0000608219 00000 n 
+0000612027 00000 n 
+0000610811 00000 n 
+0000608526 00000 n 
+0000611963 00000 n 
+0003374355 00000 n 
+0000611311 00000 n 
+0000611429 00000 n 
+0000611477 00000 n 
+0000611942 00000 n 
+0000614502 00000 n 
+0000614322 00000 n 
+0000612200 00000 n 
+0000614438 00000 n 
+0000616639 00000 n 
+0000616459 00000 n 
+0000614604 00000 n 
+0000616575 00000 n 
+0000619507 00000 n 
+0000619074 00000 n 
+0000616755 00000 n 
+0000619190 00000 n 
+0000619317 00000 n 
+0000619443 00000 n 
+0000622081 00000 n 
+0000621901 00000 n 
+0000619623 00000 n 
+0000622017 00000 n 
+0003379546 00000 n 
+0000624496 00000 n 
+0000628027 00000 n 
+0000625133 00000 n 
+0000624359 00000 n 
+0000622183 00000 n 
+0000624687 00000 n 
+0000624814 00000 n 
+0000624878 00000 n 
+0000624942 00000 n 
+0000625069 00000 n 
+0000628239 00000 n 
+0000631288 00000 n 
+0000628754 00000 n 
+0000627872 00000 n 
+0000625333 00000 n 
+0000628690 00000 n 
+0000628464 00000 n 
+0000631497 00000 n 
+0000631672 00000 n 
+0000631842 00000 n 
+0000632028 00000 n 
+0000632195 00000 n 
+0000632376 00000 n 
+0000632548 00000 n 
+0000632797 00000 n 
+0000631088 00000 n 
+0000628940 00000 n 
+0000632733 00000 n 
+0000635486 00000 n 
+0000635661 00000 n 
+0000636048 00000 n 
+0000635340 00000 n 
+0000632955 00000 n 
+0000635857 00000 n 
+0000635984 00000 n 
+0000644153 00000 n 
+0000643995 00000 n 
+0000638232 00000 n 
+0000644546 00000 n 
+0000638086 00000 n 
+0000636291 00000 n 
+0000644354 00000 n 
+0000644482 00000 n 
+0000639501 00000 n 
+0000639619 00000 n 
+0000639667 00000 n 
+0000640094 00000 n 
+0000640116 00000 n 
+0000640488 00000 n 
+0000643972 00000 n 
+0000647600 00000 n 
+0000647165 00000 n 
+0000644761 00000 n 
+0000647281 00000 n 
+0000647408 00000 n 
+0000647536 00000 n 
+0003379671 00000 n 
+0000650721 00000 n 
+0000650414 00000 n 
+0000647730 00000 n 
+0000650530 00000 n 
+0000650657 00000 n 
+0000653371 00000 n 
+0000653522 00000 n 
+0000654167 00000 n 
+0000653225 00000 n 
+0000650851 00000 n 
+0000653722 00000 n 
+0000653849 00000 n 
+0000653976 00000 n 
+0000654103 00000 n 
+0000789235 00000 n 
+0000657146 00000 n 
+0000657507 00000 n 
+0000657009 00000 n 
+0000654381 00000 n 
+0000657316 00000 n 
+0000657443 00000 n 
+0000661795 00000 n 
+0000659878 00000 n 
+0000659443 00000 n 
+0000657679 00000 n 
+0000659559 00000 n 
+0000659686 00000 n 
+0000659750 00000 n 
+0000659814 00000 n 
+0000662677 00000 n 
+0000661679 00000 n 
+0000660008 00000 n 
+0000662487 00000 n 
+0000662551 00000 n 
+0000662614 00000 n 
+0000662299 00000 n 
+0000662417 00000 n 
+0000662465 00000 n 
+0000666117 00000 n 
+0000664266 00000 n 
+0000663958 00000 n 
+0000662864 00000 n 
+0000664074 00000 n 
+0000664138 00000 n 
+0000664202 00000 n 
+0003379796 00000 n 
+0000666466 00000 n 
+0000665980 00000 n 
+0000664382 00000 n 
+0000666274 00000 n 
+0000666338 00000 n 
+0000666402 00000 n 
+0000704900 00000 n 
+0000668614 00000 n 
+0000668434 00000 n 
+0000666596 00000 n 
+0000668550 00000 n 
+0003372602 00000 n 
+0000670446 00000 n 
+0000670266 00000 n 
+0000668758 00000 n 
+0000670382 00000 n 
+0000672208 00000 n 
+0000671900 00000 n 
+0000670576 00000 n 
+0000672016 00000 n 
+0000672080 00000 n 
+0000672144 00000 n 
+0000674105 00000 n 
+0000674860 00000 n 
+0000673959 00000 n 
+0000672338 00000 n 
+0000674415 00000 n 
+0000674479 00000 n 
+0000674543 00000 n 
+0000674670 00000 n 
+0000674797 00000 n 
+0000674260 00000 n 
+0000677588 00000 n 
+0000676065 00000 n 
+0000675004 00000 n 
+0000676181 00000 n 
+0000676245 00000 n 
+0000676309 00000 n 
+0000676373 00000 n 
+0000676437 00000 n 
+0000676501 00000 n 
+0000676565 00000 n 
+0000676629 00000 n 
+0000676692 00000 n 
+0000676756 00000 n 
+0000676820 00000 n 
+0000676884 00000 n 
+0000676948 00000 n 
+0000677012 00000 n 
+0000677076 00000 n 
+0000677140 00000 n 
+0000677204 00000 n 
+0000677268 00000 n 
+0000677332 00000 n 
+0000677396 00000 n 
+0000677460 00000 n 
+0000677524 00000 n 
+0003379921 00000 n 
+0000695294 00000 n 
+0000678861 00000 n 
+0000695892 00000 n 
+0000678724 00000 n 
+0000677704 00000 n 
+0000695445 00000 n 
+0000695509 00000 n 
+0000695573 00000 n 
+0000695700 00000 n 
+0000695828 00000 n 
+0000689606 00000 n 
+0000689724 00000 n 
+0000689772 00000 n 
+0000690219 00000 n 
+0000690243 00000 n 
+0000690650 00000 n 
+0000690746 00000 n 
+0000695271 00000 n 
+0000698383 00000 n 
+0000698538 00000 n 
+0000698698 00000 n 
+0000698851 00000 n 
+0000699322 00000 n 
+0000698219 00000 n 
+0000696038 00000 n 
+0000699003 00000 n 
+0000699130 00000 n 
+0000699258 00000 n 
+0000701552 00000 n 
+0000701711 00000 n 
+0000702186 00000 n 
+0000701406 00000 n 
+0000699509 00000 n 
+0000701868 00000 n 
+0000701932 00000 n 
+0000701996 00000 n 
+0000702059 00000 n 
+0000702123 00000 n 
+0000841353 00000 n 
+0000704616 00000 n 
+0000707598 00000 n 
+0000705219 00000 n 
+0000704479 00000 n 
+0000702302 00000 n 
+0000704772 00000 n 
+0000705027 00000 n 
+0000705091 00000 n 
+0000705155 00000 n 
+0000843448 00000 n 
+0000708102 00000 n 
+0000707452 00000 n 
+0000705363 00000 n 
+0000707910 00000 n 
+0000707754 00000 n 
+0000707974 00000 n 
+0000708038 00000 n 
+0000844500 00000 n 
+0000709643 00000 n 
+0000709463 00000 n 
+0000708275 00000 n 
+0000709579 00000 n 
+0003380046 00000 n 
+0000711718 00000 n 
+0000711885 00000 n 
+0000712052 00000 n 
+0000712213 00000 n 
+0000712691 00000 n 
+0000711554 00000 n 
+0000709759 00000 n 
+0000712373 00000 n 
+0000712500 00000 n 
+0000712564 00000 n 
+0000712627 00000 n 
+0000848693 00000 n 
+0000853274 00000 n 
+0000869674 00000 n 
+0000874289 00000 n 
+0000714415 00000 n 
+0000714043 00000 n 
+0000712821 00000 n 
+0000714159 00000 n 
+0000714223 00000 n 
+0000714287 00000 n 
+0000714351 00000 n 
+0000716637 00000 n 
+0000716329 00000 n 
+0000714531 00000 n 
+0000716445 00000 n 
+0000716509 00000 n 
+0000716573 00000 n 
+0000718728 00000 n 
+0000718912 00000 n 
+0000719111 00000 n 
+0000719505 00000 n 
+0000718573 00000 n 
+0000716753 00000 n 
+0000719316 00000 n 
+0000719443 00000 n 
+0000721830 00000 n 
+0000721332 00000 n 
+0000719691 00000 n 
+0000721448 00000 n 
+0000721575 00000 n 
+0000721638 00000 n 
+0000721702 00000 n 
+0000721766 00000 n 
+0000723498 00000 n 
+0000724036 00000 n 
+0000723361 00000 n 
+0000722017 00000 n 
+0000723654 00000 n 
+0000723718 00000 n 
+0000723782 00000 n 
+0000723909 00000 n 
+0000723973 00000 n 
+0003380171 00000 n 
+0000727622 00000 n 
+0000725404 00000 n 
+0000725879 00000 n 
+0000725267 00000 n 
+0000724166 00000 n 
+0000725560 00000 n 
+0000725624 00000 n 
+0000725688 00000 n 
+0000725752 00000 n 
+0000725816 00000 n 
+0000727814 00000 n 
+0000727379 00000 n 
+0000725995 00000 n 
+0000727495 00000 n 
+0000727686 00000 n 
+0000727750 00000 n 
+0000729445 00000 n 
+0000729265 00000 n 
+0000727944 00000 n 
+0000729381 00000 n 
+0000731095 00000 n 
+0000730852 00000 n 
+0000729547 00000 n 
+0000730968 00000 n 
+0000731032 00000 n 
+0000733599 00000 n 
+0000733751 00000 n 
+0000736491 00000 n 
+0000734096 00000 n 
+0000733453 00000 n 
+0000731211 00000 n 
+0000733905 00000 n 
+0000734032 00000 n 
+0001925397 00000 n 
+0000736711 00000 n 
+0000736354 00000 n 
+0000734240 00000 n 
+0000736647 00000 n 
+0003380296 00000 n 
+0000738805 00000 n 
+0000739061 00000 n 
+0000738561 00000 n 
+0000736884 00000 n 
+0000738677 00000 n 
+0000738869 00000 n 
+0000738933 00000 n 
+0000738997 00000 n 
+0000740690 00000 n 
+0000740318 00000 n 
+0000739177 00000 n 
+0000740434 00000 n 
+0000740498 00000 n 
+0000740562 00000 n 
+0000740626 00000 n 
+0000742220 00000 n 
+0000742505 00000 n 
+0000742083 00000 n 
+0000740806 00000 n 
+0000742377 00000 n 
+0000742441 00000 n 
+0000876206 00000 n 
+0000743879 00000 n 
+0000743635 00000 n 
+0000742621 00000 n 
+0000743751 00000 n 
+0000743815 00000 n 
+0000745503 00000 n 
+0000745847 00000 n 
+0000745366 00000 n 
+0000743995 00000 n 
+0000745655 00000 n 
+0000745719 00000 n 
+0000745783 00000 n 
+0000747405 00000 n 
+0000747097 00000 n 
+0000745963 00000 n 
+0000747213 00000 n 
+0000747277 00000 n 
+0000747341 00000 n 
+0003380421 00000 n 
+0000749409 00000 n 
+0000749037 00000 n 
+0000747521 00000 n 
+0000749153 00000 n 
+0000749217 00000 n 
+0000749281 00000 n 
+0000749345 00000 n 
+0000751069 00000 n 
+0000750761 00000 n 
+0000749525 00000 n 
+0000750877 00000 n 
+0000750941 00000 n 
+0000751005 00000 n 
+0000752832 00000 n 
+0000752524 00000 n 
+0000751185 00000 n 
+0000752640 00000 n 
+0000752704 00000 n 
+0000752768 00000 n 
+0000754867 00000 n 
+0000754495 00000 n 
+0000752948 00000 n 
+0000754611 00000 n 
+0000754675 00000 n 
+0000754739 00000 n 
+0000754803 00000 n 
+0000756338 00000 n 
+0000756030 00000 n 
+0000754983 00000 n 
+0000756146 00000 n 
+0000756210 00000 n 
+0000756274 00000 n 
+0000758382 00000 n 
+0000758679 00000 n 
+0000758829 00000 n 
+0000759425 00000 n 
+0000758218 00000 n 
+0000756454 00000 n 
+0000758978 00000 n 
+0000759105 00000 n 
+0000759169 00000 n 
+0000759233 00000 n 
+0000758532 00000 n 
+0000759297 00000 n 
+0000759361 00000 n 
+0003380546 00000 n 
+0000761686 00000 n 
+0000761122 00000 n 
+0000759555 00000 n 
+0000761238 00000 n 
+0000761302 00000 n 
+0000761366 00000 n 
+0000761430 00000 n 
+0000761494 00000 n 
+0000761558 00000 n 
+0000761622 00000 n 
+0000763368 00000 n 
+0000763532 00000 n 
+0000763693 00000 n 
+0000764014 00000 n 
+0000764172 00000 n 
+0000764777 00000 n 
+0000763186 00000 n 
+0000761816 00000 n 
+0000764330 00000 n 
+0000764457 00000 n 
+0000764521 00000 n 
+0000763854 00000 n 
+0000764585 00000 n 
+0000764649 00000 n 
+0000764713 00000 n 
+0000858581 00000 n 
+0000766188 00000 n 
+0000765944 00000 n 
+0000764907 00000 n 
+0000766060 00000 n 
+0000766124 00000 n 
+0000768316 00000 n 
+0000767944 00000 n 
+0000766304 00000 n 
+0000768060 00000 n 
+0000768124 00000 n 
+0000768188 00000 n 
+0000768252 00000 n 
+0000769934 00000 n 
+0000769626 00000 n 
+0000768432 00000 n 
+0000769742 00000 n 
+0000769806 00000 n 
+0000769870 00000 n 
+0000771817 00000 n 
+0000771509 00000 n 
+0000770050 00000 n 
+0000771625 00000 n 
+0000771689 00000 n 
+0000771753 00000 n 
+0003380671 00000 n 
+0000774029 00000 n 
+0000774193 00000 n 
+0000774354 00000 n 
+0000774676 00000 n 
+0000775276 00000 n 
+0000773856 00000 n 
+0000771933 00000 n 
+0000774831 00000 n 
+0000774895 00000 n 
+0000774515 00000 n 
+0000774959 00000 n 
+0000775085 00000 n 
+0000775212 00000 n 
+0000864854 00000 n 
+0000776955 00000 n 
+0000776648 00000 n 
+0000775420 00000 n 
+0000776764 00000 n 
+0000776891 00000 n 
+0000779094 00000 n 
+0000779486 00000 n 
+0000778957 00000 n 
+0000777085 00000 n 
+0000779295 00000 n 
+0000779422 00000 n 
+0000782116 00000 n 
+0000782477 00000 n 
+0000781979 00000 n 
+0000779686 00000 n 
+0000782286 00000 n 
+0000782413 00000 n 
+0000784380 00000 n 
+0000783944 00000 n 
+0000782677 00000 n 
+0000784060 00000 n 
+0000784124 00000 n 
+0000784188 00000 n 
+0000784252 00000 n 
+0000784316 00000 n 
+0000785954 00000 n 
+0000786355 00000 n 
+0000785817 00000 n 
+0000784496 00000 n 
+0000786164 00000 n 
+0000786291 00000 n 
+0003380796 00000 n 
+0000788801 00000 n 
+0000788956 00000 n 
+0000789682 00000 n 
+0000788655 00000 n 
+0000786541 00000 n 
+0000789108 00000 n 
+0000789299 00000 n 
+0000789363 00000 n 
+0000789427 00000 n 
+0000789491 00000 n 
+0000789554 00000 n 
+0000789618 00000 n 
+0000809633 00000 n 
+0000809761 00000 n 
+0000792616 00000 n 
+0000795034 00000 n 
+0000793286 00000 n 
+0000792479 00000 n 
+0000789826 00000 n 
+0000792776 00000 n 
+0000792840 00000 n 
+0000792904 00000 n 
+0000792968 00000 n 
+0000793032 00000 n 
+0000793095 00000 n 
+0000793222 00000 n 
+0000809953 00000 n 
+0000794918 00000 n 
+0000793486 00000 n 
+0000809505 00000 n 
+0000809825 00000 n 
+0000809889 00000 n 
+0000812581 00000 n 
+0000811953 00000 n 
+0000810121 00000 n 
+0000812069 00000 n 
+0000812133 00000 n 
+0000812197 00000 n 
+0000812261 00000 n 
+0000812325 00000 n 
+0000812389 00000 n 
+0000812453 00000 n 
+0000812517 00000 n 
+0000815051 00000 n 
+0000815238 00000 n 
+0000815739 00000 n 
+0000814896 00000 n 
+0000812768 00000 n 
+0000815675 00000 n 
+0000815457 00000 n 
+0000821393 00000 n 
+0000821697 00000 n 
+0000818405 00000 n 
+0000817972 00000 n 
+0000815968 00000 n 
+0000818088 00000 n 
+0000818215 00000 n 
+0000818342 00000 n 
+0003380921 00000 n 
+0000822360 00000 n 
+0000821238 00000 n 
+0000818549 00000 n 
+0000821848 00000 n 
+0000821912 00000 n 
+0000821545 00000 n 
+0000821976 00000 n 
+0000822040 00000 n 
+0000822104 00000 n 
+0000822168 00000 n 
+0000822232 00000 n 
+0000822296 00000 n 
+0000825466 00000 n 
+0000824903 00000 n 
+0000822504 00000 n 
+0000825019 00000 n 
+0000825083 00000 n 
+0000825147 00000 n 
+0000825211 00000 n 
+0000825275 00000 n 
+0000825402 00000 n 
+0000830302 00000 n 
+0000827996 00000 n 
+0000827562 00000 n 
+0000825596 00000 n 
+0000827678 00000 n 
+0000827805 00000 n 
+0000827932 00000 n 
+0000830698 00000 n 
+0000830165 00000 n 
+0000828112 00000 n 
+0000830507 00000 n 
+0000830634 00000 n 
+0000833420 00000 n 
+0000833176 00000 n 
+0000830898 00000 n 
+0000833292 00000 n 
+0000833356 00000 n 
+0000835979 00000 n 
+0000835799 00000 n 
+0000833550 00000 n 
+0000835915 00000 n 
+0003381046 00000 n 
+0000838531 00000 n 
+0000838351 00000 n 
+0000836109 00000 n 
+0000838467 00000 n 
+0000840086 00000 n 
+0000839906 00000 n 
+0000838675 00000 n 
+0000840022 00000 n 
+0000841417 00000 n 
+0000841109 00000 n 
+0000840202 00000 n 
+0000841225 00000 n 
+0000842456 00000 n 
+0000842148 00000 n 
+0000841533 00000 n 
+0000842264 00000 n 
+0000842392 00000 n 
+0000843512 00000 n 
+0000843204 00000 n 
+0000842572 00000 n 
+0000843320 00000 n 
+0000844564 00000 n 
+0000844256 00000 n 
+0000843628 00000 n 
+0000844372 00000 n 
+0003381171 00000 n 
+0000850549 00000 n 
+0000848449 00000 n 
+0000844680 00000 n 
+0000848565 00000 n 
+0000848757 00000 n 
+0000848821 00000 n 
+0000848885 00000 n 
+0000848949 00000 n 
+0000849013 00000 n 
+0000849077 00000 n 
+0000849141 00000 n 
+0000849205 00000 n 
+0000849269 00000 n 
+0000849333 00000 n 
+0000849397 00000 n 
+0000849461 00000 n 
+0000849525 00000 n 
+0000849589 00000 n 
+0000849653 00000 n 
+0000849717 00000 n 
+0000849781 00000 n 
+0000849845 00000 n 
+0000849909 00000 n 
+0000849973 00000 n 
+0000850037 00000 n 
+0000850101 00000 n 
+0000850165 00000 n 
+0000850229 00000 n 
+0000850293 00000 n 
+0000850357 00000 n 
+0000850421 00000 n 
+0000850485 00000 n 
+0000854551 00000 n 
+0000853030 00000 n 
+0000850706 00000 n 
+0000853146 00000 n 
+0000853338 00000 n 
+0000853402 00000 n 
+0000853466 00000 n 
+0000853529 00000 n 
+0000853593 00000 n 
+0000853656 00000 n 
+0000853720 00000 n 
+0000853783 00000 n 
+0000853847 00000 n 
+0000853911 00000 n 
+0000853975 00000 n 
+0000854039 00000 n 
+0000854103 00000 n 
+0000854167 00000 n 
+0000854231 00000 n 
+0000854295 00000 n 
+0000854359 00000 n 
+0000854423 00000 n 
+0000854487 00000 n 
+0000860817 00000 n 
+0000858337 00000 n 
+0000854680 00000 n 
+0000858453 00000 n 
+0000858645 00000 n 
+0000858709 00000 n 
+0000858773 00000 n 
+0000858837 00000 n 
+0000858901 00000 n 
+0000858965 00000 n 
+0000859029 00000 n 
+0000859093 00000 n 
+0000859157 00000 n 
+0000859221 00000 n 
+0000859285 00000 n 
+0000859349 00000 n 
+0000859413 00000 n 
+0000859477 00000 n 
+0000859541 00000 n 
+0000859605 00000 n 
+0000859669 00000 n 
+0000859733 00000 n 
+0000859796 00000 n 
+0000859860 00000 n 
+0000859923 00000 n 
+0000859987 00000 n 
+0000860049 00000 n 
+0000860113 00000 n 
+0000860177 00000 n 
+0000860241 00000 n 
+0000860305 00000 n 
+0000860369 00000 n 
+0000860433 00000 n 
+0000860497 00000 n 
+0000860561 00000 n 
+0000860625 00000 n 
+0000860689 00000 n 
+0000860753 00000 n 
+0000867090 00000 n 
+0000864610 00000 n 
+0000860960 00000 n 
+0000864726 00000 n 
+0000864918 00000 n 
+0000864982 00000 n 
+0000865046 00000 n 
+0000865110 00000 n 
+0000865174 00000 n 
+0000865238 00000 n 
+0000865302 00000 n 
+0000865366 00000 n 
+0000865430 00000 n 
+0000865494 00000 n 
+0000865558 00000 n 
+0000865622 00000 n 
+0000865686 00000 n 
+0000865750 00000 n 
+0000865814 00000 n 
+0000865878 00000 n 
+0000865942 00000 n 
+0000866006 00000 n 
+0000866069 00000 n 
+0000866133 00000 n 
+0000866196 00000 n 
+0000866260 00000 n 
+0000866322 00000 n 
+0000866386 00000 n 
+0000866450 00000 n 
+0000866514 00000 n 
+0000866578 00000 n 
+0000866642 00000 n 
+0000866706 00000 n 
+0000866770 00000 n 
+0000866834 00000 n 
+0000866898 00000 n 
+0000866962 00000 n 
+0000867026 00000 n 
+0000871270 00000 n 
+0000869430 00000 n 
+0000867233 00000 n 
+0000869546 00000 n 
+0000869738 00000 n 
+0000869802 00000 n 
+0000869866 00000 n 
+0000869930 00000 n 
+0000869994 00000 n 
+0000870058 00000 n 
+0000870122 00000 n 
+0000870186 00000 n 
+0000870250 00000 n 
+0000870314 00000 n 
+0000870378 00000 n 
+0000870442 00000 n 
+0000870506 00000 n 
+0000870569 00000 n 
+0000870633 00000 n 
+0000870696 00000 n 
+0000870760 00000 n 
+0000870822 00000 n 
+0000870886 00000 n 
+0000870950 00000 n 
+0000871014 00000 n 
+0000871078 00000 n 
+0000871142 00000 n 
+0000871206 00000 n 
+0000876270 00000 n 
+0000874047 00000 n 
+0000871385 00000 n 
+0000874163 00000 n 
+0000874352 00000 n 
+0000874416 00000 n 
+0000874480 00000 n 
+0000874544 00000 n 
+0000874608 00000 n 
+0000874672 00000 n 
+0000874736 00000 n 
+0000874800 00000 n 
+0000874864 00000 n 
+0000874928 00000 n 
+0000874992 00000 n 
+0000875056 00000 n 
+0000875120 00000 n 
+0000875184 00000 n 
+0000875248 00000 n 
+0000875312 00000 n 
+0000875376 00000 n 
+0000875440 00000 n 
+0000875504 00000 n 
+0000875568 00000 n 
+0000875632 00000 n 
+0000875696 00000 n 
+0000875760 00000 n 
+0000875824 00000 n 
+0000875888 00000 n 
+0000875951 00000 n 
+0000876015 00000 n 
+0000876078 00000 n 
+0003381296 00000 n 
+0000878511 00000 n 
+0000878204 00000 n 
+0000876399 00000 n 
+0000878320 00000 n 
+0000878447 00000 n 
+0000880844 00000 n 
+0000881310 00000 n 
+0000880707 00000 n 
+0000878627 00000 n 
+0000880993 00000 n 
+0000881120 00000 n 
+0000881246 00000 n 
+0000883972 00000 n 
+0000884310 00000 n 
+0000883835 00000 n 
+0000881440 00000 n 
+0000884119 00000 n 
+0000884246 00000 n 
+0000886670 00000 n 
+0000887009 00000 n 
+0000886533 00000 n 
+0000884454 00000 n 
+0000886818 00000 n 
+0000886945 00000 n 
+0000889602 00000 n 
+0000889295 00000 n 
+0000887139 00000 n 
+0000889411 00000 n 
+0000889538 00000 n 
+0000891986 00000 n 
+0000892326 00000 n 
+0000891849 00000 n 
+0000889718 00000 n 
+0000892135 00000 n 
+0000892262 00000 n 
+0003381421 00000 n 
+0000894938 00000 n 
+0000894758 00000 n 
+0000892456 00000 n 
+0000894874 00000 n 
+0000897688 00000 n 
+0000897381 00000 n 
+0000895054 00000 n 
+0000897497 00000 n 
+0000897624 00000 n 
+0000900317 00000 n 
+0000900464 00000 n 
+0000900767 00000 n 
+0000900984 00000 n 
+0000900153 00000 n 
+0000897818 00000 n 
+0000900920 00000 n 
+0000900616 00000 n 
+0001085809 00000 n 
+0001186428 00000 n 
+0000903660 00000 n 
+0000903480 00000 n 
+0000901086 00000 n 
+0000903596 00000 n 
+0000912494 00000 n 
+0000905770 00000 n 
+0000913092 00000 n 
+0000905633 00000 n 
+0000903776 00000 n 
+0000912648 00000 n 
+0000912774 00000 n 
+0000912900 00000 n 
+0000913028 00000 n 
+0000908085 00000 n 
+0000908203 00000 n 
+0000908251 00000 n 
+0000908654 00000 n 
+0000908677 00000 n 
+0000909041 00000 n 
+0000912471 00000 n 
+0000921771 00000 n 
+0000914795 00000 n 
+0000921928 00000 n 
+0000918018 00000 n 
+0000922403 00000 n 
+0000914649 00000 n 
+0000913252 00000 n 
+0000922083 00000 n 
+0000922211 00000 n 
+0000922339 00000 n 
+0003381546 00000 n 
+0000915433 00000 n 
+0000915551 00000 n 
+0000915599 00000 n 
+0000915974 00000 n 
+0000915996 00000 n 
+0000916283 00000 n 
+0000917995 00000 n 
+0000918826 00000 n 
+0000918944 00000 n 
+0000918992 00000 n 
+0000919369 00000 n 
+0000919391 00000 n 
+0000919692 00000 n 
+0000919788 00000 n 
+0000921748 00000 n 
+0000932641 00000 n 
+0000923964 00000 n 
+0000932795 00000 n 
+0000928654 00000 n 
+0000933267 00000 n 
+0000923818 00000 n 
+0000922578 00000 n 
+0000932948 00000 n 
+0000933076 00000 n 
+0000933204 00000 n 
+0000924907 00000 n 
+0000925025 00000 n 
+0000925073 00000 n 
+0000925472 00000 n 
+0000925494 00000 n 
+0000925822 00000 n 
+0000925918 00000 n 
+0000928631 00000 n 
+0000929505 00000 n 
+0000929623 00000 n 
+0000929671 00000 n 
+0000930066 00000 n 
+0000930088 00000 n 
+0000930391 00000 n 
+0000932618 00000 n 
+0000935243 00000 n 
+0000935392 00000 n 
+0000935807 00000 n 
+0000935097 00000 n 
+0000933428 00000 n 
+0000935551 00000 n 
+0000935615 00000 n 
+0000935679 00000 n 
+0000935743 00000 n 
+0000955710 00000 n 
+0000937487 00000 n 
+0000938028 00000 n 
+0000937350 00000 n 
+0000935980 00000 n 
+0000937645 00000 n 
+0000937709 00000 n 
+0000937773 00000 n 
+0000937837 00000 n 
+0000937901 00000 n 
+0000937964 00000 n 
+0000957070 00000 n 
+0000939437 00000 n 
+0000939131 00000 n 
+0000938144 00000 n 
+0000939247 00000 n 
+0000939311 00000 n 
+0000939374 00000 n 
+0000940985 00000 n 
+0000943421 00000 n 
+0000943580 00000 n 
+0000941390 00000 n 
+0000940848 00000 n 
+0000939553 00000 n 
+0000941134 00000 n 
+0000941198 00000 n 
+0000941262 00000 n 
+0000941326 00000 n 
+0000987730 00000 n 
+0001086565 00000 n 
+0000944184 00000 n 
+0000943275 00000 n 
+0000941506 00000 n 
+0000943739 00000 n 
+0000943803 00000 n 
+0000943930 00000 n 
+0000944056 00000 n 
+0000944120 00000 n 
+0003381671 00000 n 
+0000962495 00000 n 
+0000978670 00000 n 
+0000946561 00000 n 
+0000946381 00000 n 
+0000944342 00000 n 
+0000946497 00000 n 
+0000949219 00000 n 
+0000949368 00000 n 
+0000949523 00000 n 
+0000949740 00000 n 
+0000949064 00000 n 
+0000946691 00000 n 
+0000949676 00000 n 
+0000952321 00000 n 
+0000952537 00000 n 
+0000952184 00000 n 
+0000949884 00000 n 
+0000952473 00000 n 
+0000954329 00000 n 
+0000954149 00000 n 
+0000952695 00000 n 
+0000954265 00000 n 
+0000955774 00000 n 
+0000955466 00000 n 
+0000954445 00000 n 
+0000955582 00000 n 
+0000957134 00000 n 
+0000956826 00000 n 
+0000955890 00000 n 
+0000956942 00000 n 
+0003381796 00000 n 
+0000965235 00000 n 
+0000962251 00000 n 
+0000957250 00000 n 
+0000962367 00000 n 
+0000962559 00000 n 
+0000962623 00000 n 
+0000962687 00000 n 
+0000962751 00000 n 
+0000962815 00000 n 
+0000962879 00000 n 
+0000962943 00000 n 
+0000963007 00000 n 
+0000963070 00000 n 
+0000963134 00000 n 
+0000963197 00000 n 
+0000963261 00000 n 
+0000963323 00000 n 
+0000963387 00000 n 
+0000963451 00000 n 
+0000963515 00000 n 
+0000963579 00000 n 
+0000963643 00000 n 
+0000963707 00000 n 
+0000963771 00000 n 
+0000963835 00000 n 
+0000963899 00000 n 
+0000963963 00000 n 
+0000964027 00000 n 
+0000964091 00000 n 
+0000964155 00000 n 
+0000964219 00000 n 
+0000964283 00000 n 
+0000964347 00000 n 
+0000964411 00000 n 
+0000964474 00000 n 
+0000964538 00000 n 
+0000964600 00000 n 
+0000964664 00000 n 
+0000964727 00000 n 
+0000964791 00000 n 
+0000964855 00000 n 
+0000964919 00000 n 
+0000964983 00000 n 
+0000965046 00000 n 
+0000965109 00000 n 
+0000965172 00000 n 
+0000969641 00000 n 
+0000967673 00000 n 
+0000965392 00000 n 
+0000967789 00000 n 
+0000967917 00000 n 
+0000967981 00000 n 
+0000968045 00000 n 
+0000968109 00000 n 
+0000968173 00000 n 
+0000968237 00000 n 
+0000968301 00000 n 
+0000968365 00000 n 
+0000968429 00000 n 
+0000968493 00000 n 
+0000968557 00000 n 
+0000968621 00000 n 
+0000968685 00000 n 
+0000968749 00000 n 
+0000968813 00000 n 
+0000968876 00000 n 
+0000968940 00000 n 
+0000969003 00000 n 
+0000969067 00000 n 
+0000969129 00000 n 
+0000969193 00000 n 
+0000969257 00000 n 
+0000969321 00000 n 
+0000969385 00000 n 
+0000969449 00000 n 
+0000969513 00000 n 
+0000969577 00000 n 
+0000974167 00000 n 
+0000972133 00000 n 
+0000969756 00000 n 
+0000972249 00000 n 
+0000972377 00000 n 
+0000972441 00000 n 
+0000972505 00000 n 
+0000972568 00000 n 
+0000972632 00000 n 
+0000972695 00000 n 
+0000972759 00000 n 
+0000972823 00000 n 
+0000972887 00000 n 
+0000972951 00000 n 
+0000973015 00000 n 
+0000973079 00000 n 
+0000973143 00000 n 
+0000973207 00000 n 
+0000973271 00000 n 
+0000973335 00000 n 
+0000973399 00000 n 
+0000973463 00000 n 
+0000973527 00000 n 
+0000973591 00000 n 
+0000973655 00000 n 
+0000973719 00000 n 
+0000973783 00000 n 
+0000973847 00000 n 
+0000973911 00000 n 
+0000973975 00000 n 
+0000974039 00000 n 
+0000974103 00000 n 
+0000981418 00000 n 
+0000978426 00000 n 
+0000974282 00000 n 
+0000978542 00000 n 
+0000978734 00000 n 
+0000978798 00000 n 
+0000978862 00000 n 
+0000978926 00000 n 
+0000978990 00000 n 
+0000979054 00000 n 
+0000979118 00000 n 
+0000979182 00000 n 
+0000979246 00000 n 
+0000979310 00000 n 
+0000979374 00000 n 
+0000979438 00000 n 
+0000979502 00000 n 
+0000979566 00000 n 
+0000979630 00000 n 
+0000979694 00000 n 
+0000979758 00000 n 
+0000979822 00000 n 
+0000979886 00000 n 
+0000979950 00000 n 
+0000980014 00000 n 
+0000980078 00000 n 
+0000980141 00000 n 
+0000980205 00000 n 
+0000980268 00000 n 
+0000980332 00000 n 
+0000980394 00000 n 
+0000980458 00000 n 
+0000980522 00000 n 
+0000980586 00000 n 
+0000980650 00000 n 
+0000980714 00000 n 
+0000980778 00000 n 
+0000980842 00000 n 
+0000980906 00000 n 
+0000980970 00000 n 
+0000981034 00000 n 
+0000981098 00000 n 
+0000981162 00000 n 
+0000981226 00000 n 
+0000981290 00000 n 
+0000981354 00000 n 
+0000987071 00000 n 
+0000984465 00000 n 
+0000981561 00000 n 
+0000984581 00000 n 
+0000984708 00000 n 
+0000984771 00000 n 
+0000984835 00000 n 
+0000984899 00000 n 
+0000984963 00000 n 
+0000985027 00000 n 
+0000985091 00000 n 
+0000985155 00000 n 
+0000985219 00000 n 
+0000985283 00000 n 
+0000985347 00000 n 
+0000985411 00000 n 
+0000985475 00000 n 
+0000985539 00000 n 
+0000985603 00000 n 
+0000985667 00000 n 
+0000985731 00000 n 
+0000985795 00000 n 
+0000985859 00000 n 
+0000985923 00000 n 
+0000985986 00000 n 
+0000986050 00000 n 
+0000986113 00000 n 
+0000986177 00000 n 
+0000986239 00000 n 
+0000986303 00000 n 
+0000986367 00000 n 
+0000986431 00000 n 
+0000986495 00000 n 
+0000986559 00000 n 
+0000986623 00000 n 
+0000986687 00000 n 
+0000986751 00000 n 
+0000986815 00000 n 
+0000986879 00000 n 
+0000986943 00000 n 
+0000987007 00000 n 
+0001085873 00000 n 
+0000987614 00000 n 
+0000987186 00000 n 
+0001085681 00000 n 
+0003381921 00000 n 
+0001186492 00000 n 
+0001086449 00000 n 
+0001086013 00000 n 
+0001186300 00000 n 
+0001186913 00000 n 
+0001186733 00000 n 
+0001186632 00000 n 
+0001186849 00000 n 
+0001187395 00000 n 
+0001187216 00000 n 
+0001186955 00000 n 
+0001187686 00000 n 
+0001187570 00000 n 
+0001187469 00000 n 
+0001189084 00000 n 
+0001188649 00000 n 
+0001187728 00000 n 
+0001188765 00000 n 
+0001188829 00000 n 
+0001188956 00000 n 
+0001189020 00000 n 
+0001189481 00000 n 
+0001189301 00000 n 
+0001189200 00000 n 
+0001189417 00000 n 
+0003382046 00000 n 
+0001191487 00000 n 
+0001191332 00000 n 
+0001193888 00000 n 
+0001192254 00000 n 
+0001191177 00000 n 
+0001189523 00000 n 
+0001191936 00000 n 
+0001192063 00000 n 
+0001192190 00000 n 
+0001191712 00000 n 
+0001212273 00000 n 
+0001212464 00000 n 
+0001193772 00000 n 
+0001192440 00000 n 
+0001212145 00000 n 
+0001212400 00000 n 
+0001215115 00000 n 
+0001214681 00000 n 
+0001212618 00000 n 
+0001214797 00000 n 
+0001214924 00000 n 
+0001215051 00000 n 
+0001217913 00000 n 
+0001217733 00000 n 
+0001215245 00000 n 
+0001217849 00000 n 
+0001220653 00000 n 
+0001220473 00000 n 
+0001218057 00000 n 
+0001220589 00000 n 
+0001223439 00000 n 
+0001223005 00000 n 
+0001220783 00000 n 
+0001223121 00000 n 
+0001223248 00000 n 
+0001223375 00000 n 
+0003382171 00000 n 
+0001226275 00000 n 
+0001225968 00000 n 
+0001223569 00000 n 
+0001226084 00000 n 
+0001226211 00000 n 
+0001228813 00000 n 
+0001231055 00000 n 
+0001229031 00000 n 
+0001228676 00000 n 
+0001226419 00000 n 
+0001228967 00000 n 
+0001240672 00000 n 
+0001239789 00000 n 
+0001239937 00000 n 
+0001240242 00000 n 
+0001240391 00000 n 
+0001242777 00000 n 
+0001240736 00000 n 
+0001230882 00000 n 
+0001229232 00000 n 
+0001240544 00000 n 
+0001240090 00000 n 
+0001235374 00000 n 
+0001235492 00000 n 
+0001235540 00000 n 
+0001235963 00000 n 
+0001235986 00000 n 
+0001236336 00000 n 
+0001239766 00000 n 
+0001333593 00000 n 
+0001242931 00000 n 
+0001243147 00000 n 
+0001242631 00000 n 
+0001240924 00000 n 
+0001243083 00000 n 
+0001337724 00000 n 
+0001338783 00000 n 
+0001245033 00000 n 
+0001245251 00000 n 
+0001244896 00000 n 
+0001243263 00000 n 
+0001245187 00000 n 
+0001337597 00000 n 
+0001247245 00000 n 
+0001247065 00000 n 
+0001245367 00000 n 
+0001247181 00000 n 
+0003382296 00000 n 
+0001248932 00000 n 
+0001248752 00000 n 
+0001247389 00000 n 
+0001248868 00000 n 
+0001250352 00000 n 
+0001250045 00000 n 
+0001249048 00000 n 
+0001250161 00000 n 
+0001250288 00000 n 
+0001252712 00000 n 
+0001252867 00000 n 
+0001253276 00000 n 
+0001252566 00000 n 
+0001250482 00000 n 
+0001253021 00000 n 
+0001253085 00000 n 
+0001253148 00000 n 
+0001253212 00000 n 
+0001343047 00000 n 
+0001254670 00000 n 
+0001254362 00000 n 
+0001253463 00000 n 
+0001254478 00000 n 
+0001254542 00000 n 
+0001254606 00000 n 
+0001255885 00000 n 
+0001255705 00000 n 
+0001254786 00000 n 
+0001255821 00000 n 
+0001257760 00000 n 
+0001258424 00000 n 
+0001257623 00000 n 
+0001256001 00000 n 
+0001257915 00000 n 
+0001257979 00000 n 
+0001258106 00000 n 
+0001258170 00000 n 
+0001258234 00000 n 
+0001258296 00000 n 
+0001258360 00000 n 
+0003382421 00000 n 
+0001349768 00000 n 
+0001260994 00000 n 
+0001261337 00000 n 
+0001260857 00000 n 
+0001258554 00000 n 
+0001261146 00000 n 
+0001261273 00000 n 
+0001271911 00000 n 
+0001262731 00000 n 
+0001272039 00000 n 
+0001262615 00000 n 
+0001261467 00000 n 
+0001271783 00000 n 
+0001271975 00000 n 
+0001266523 00000 n 
+0001266641 00000 n 
+0001266689 00000 n 
+0001267134 00000 n 
+0001267157 00000 n 
+0001267551 00000 n 
+0001271760 00000 n 
+0001273315 00000 n 
+0001273135 00000 n 
+0001272185 00000 n 
+0001273251 00000 n 
+0001277411 00000 n 
+0001275070 00000 n 
+0001274826 00000 n 
+0001273431 00000 n 
+0001274942 00000 n 
+0001275006 00000 n 
+0001277106 00000 n 
+0001277259 00000 n 
+0001278027 00000 n 
+0001276951 00000 n 
+0001275186 00000 n 
+0001277579 00000 n 
+0001277643 00000 n 
+0001277707 00000 n 
+0001277771 00000 n 
+0001277835 00000 n 
+0001277899 00000 n 
+0001277963 00000 n 
+0001356269 00000 n 
+0001280235 00000 n 
+0001279991 00000 n 
+0001278199 00000 n 
+0001280107 00000 n 
+0001280171 00000 n 
+0003382546 00000 n 
+0001281742 00000 n 
+0001281436 00000 n 
+0001280365 00000 n 
+0001281552 00000 n 
+0001281616 00000 n 
+0001281680 00000 n 
+0001283073 00000 n 
+0001282829 00000 n 
+0001281858 00000 n 
+0001282945 00000 n 
+0001283009 00000 n 
+0001284794 00000 n 
+0001284487 00000 n 
+0001283189 00000 n 
+0001284603 00000 n 
+0001284667 00000 n 
+0001284730 00000 n 
+0001286162 00000 n 
+0001285982 00000 n 
+0001284910 00000 n 
+0001286098 00000 n 
+0001287722 00000 n 
+0001287542 00000 n 
+0001286264 00000 n 
+0001287658 00000 n 
+0001288731 00000 n 
+0001288551 00000 n 
+0001287838 00000 n 
+0001288667 00000 n 
+0003382671 00000 n 
+0001289786 00000 n 
+0001289606 00000 n 
+0001288833 00000 n 
+0001289722 00000 n 
+0001292379 00000 n 
+0001292728 00000 n 
+0001292242 00000 n 
+0001289902 00000 n 
+0001292537 00000 n 
+0001292664 00000 n 
+0001362575 00000 n 
+0001294780 00000 n 
+0001294280 00000 n 
+0001292872 00000 n 
+0001294396 00000 n 
+0001294460 00000 n 
+0001294524 00000 n 
+0001294588 00000 n 
+0001294652 00000 n 
+0001294716 00000 n 
+0001296592 00000 n 
+0001296934 00000 n 
+0001296455 00000 n 
+0001294910 00000 n 
+0001296743 00000 n 
+0001296870 00000 n 
+0001363851 00000 n 
+0001298459 00000 n 
+0001298279 00000 n 
+0001297078 00000 n 
+0001298395 00000 n 
+0001300029 00000 n 
+0001300516 00000 n 
+0001299892 00000 n 
+0001298632 00000 n 
+0001300196 00000 n 
+0001300260 00000 n 
+0001300324 00000 n 
+0001300388 00000 n 
+0001300452 00000 n 
+0003382796 00000 n 
+0001302376 00000 n 
+0001301940 00000 n 
+0001300688 00000 n 
+0001302056 00000 n 
+0001302120 00000 n 
+0001302184 00000 n 
+0001302248 00000 n 
+0001302312 00000 n 
+0001304247 00000 n 
+0001306966 00000 n 
+0001304722 00000 n 
+0001304110 00000 n 
+0001302492 00000 n 
+0001304403 00000 n 
+0001304530 00000 n 
+0001304594 00000 n 
+0001304658 00000 n 
+0001367573 00000 n 
+0001307152 00000 n 
+0001307610 00000 n 
+0001310499 00000 n 
+0001308097 00000 n 
+0001306802 00000 n 
+0001304852 00000 n 
+0001307778 00000 n 
+0001307842 00000 n 
+0001307906 00000 n 
+0001308033 00000 n 
+0001307382 00000 n 
+0001310668 00000 n 
+0001310902 00000 n 
+0001310353 00000 n 
+0001308283 00000 n 
+0001310838 00000 n 
+0001313093 00000 n 
+0001313243 00000 n 
+0001313403 00000 n 
+0001316669 00000 n 
+0001314380 00000 n 
+0001312938 00000 n 
+0001311088 00000 n 
+0001313553 00000 n 
+0001313680 00000 n 
+0001313744 00000 n 
+0001313807 00000 n 
+0001313871 00000 n 
+0001313935 00000 n 
+0001313999 00000 n 
+0001314062 00000 n 
+0001314189 00000 n 
+0001314253 00000 n 
+0001314316 00000 n 
+0001368596 00000 n 
+0001316826 00000 n 
+0001317432 00000 n 
+0001316523 00000 n 
+0001314510 00000 n 
+0001316986 00000 n 
+0001317050 00000 n 
+0001317114 00000 n 
+0001317178 00000 n 
+0001317242 00000 n 
+0001317368 00000 n 
+0003382921 00000 n 
+0001370179 00000 n 
+0001319784 00000 n 
+0001319413 00000 n 
+0001317576 00000 n 
+0001319529 00000 n 
+0001319656 00000 n 
+0001319720 00000 n 
+0001322297 00000 n 
+0001322117 00000 n 
+0001319942 00000 n 
+0001322233 00000 n 
+0001324916 00000 n 
+0001324736 00000 n 
+0001322413 00000 n 
+0001324852 00000 n 
+0001327269 00000 n 
+0001327089 00000 n 
+0001325074 00000 n 
+0001327205 00000 n 
+0001329058 00000 n 
+0001328878 00000 n 
+0001327413 00000 n 
+0001328994 00000 n 
+0001336406 00000 n 
+0001333349 00000 n 
+0001329188 00000 n 
+0001333465 00000 n 
+0001333657 00000 n 
+0001333721 00000 n 
+0001333785 00000 n 
+0001333849 00000 n 
+0001333913 00000 n 
+0001333977 00000 n 
+0001334041 00000 n 
+0001334105 00000 n 
+0001334169 00000 n 
+0001334233 00000 n 
+0001334297 00000 n 
+0001334361 00000 n 
+0001334425 00000 n 
+0001334489 00000 n 
+0001334553 00000 n 
+0001334617 00000 n 
+0001334681 00000 n 
+0001334745 00000 n 
+0001334809 00000 n 
+0001334873 00000 n 
+0001334936 00000 n 
+0001335000 00000 n 
+0001335063 00000 n 
+0001335127 00000 n 
+0001335190 00000 n 
+0001335254 00000 n 
+0001335318 00000 n 
+0001335382 00000 n 
+0001335446 00000 n 
+0001335510 00000 n 
+0001335574 00000 n 
+0001335638 00000 n 
+0001335702 00000 n 
+0001335766 00000 n 
+0001335830 00000 n 
+0001335894 00000 n 
+0001335958 00000 n 
+0001336022 00000 n 
+0001336086 00000 n 
+0001336150 00000 n 
+0001336214 00000 n 
+0001336278 00000 n 
+0001336342 00000 n 
+0003383046 00000 n 
+0001337788 00000 n 
+0001337353 00000 n 
+0001336549 00000 n 
+0001337469 00000 n 
+0001338847 00000 n 
+0001338539 00000 n 
+0001337904 00000 n 
+0001338655 00000 n 
+0001345604 00000 n 
+0001342803 00000 n 
+0001338963 00000 n 
+0001342919 00000 n 
+0001343111 00000 n 
+0001343175 00000 n 
+0001343239 00000 n 
+0001343303 00000 n 
+0001343367 00000 n 
+0001343431 00000 n 
+0001343495 00000 n 
+0001343559 00000 n 
+0001343623 00000 n 
+0001343687 00000 n 
+0001343751 00000 n 
+0001343815 00000 n 
+0001343879 00000 n 
+0001343942 00000 n 
+0001344006 00000 n 
+0001344069 00000 n 
+0001344133 00000 n 
+0001344196 00000 n 
+0001344260 00000 n 
+0001344324 00000 n 
+0001344388 00000 n 
+0001344452 00000 n 
+0001344516 00000 n 
+0001344580 00000 n 
+0001344644 00000 n 
+0001344708 00000 n 
+0001344772 00000 n 
+0001344836 00000 n 
+0001344900 00000 n 
+0001344964 00000 n 
+0001345028 00000 n 
+0001345092 00000 n 
+0001345156 00000 n 
+0001345220 00000 n 
+0001345284 00000 n 
+0001345348 00000 n 
+0001345412 00000 n 
+0001345476 00000 n 
+0001345540 00000 n 
+0001352260 00000 n 
+0001349524 00000 n 
+0001345747 00000 n 
+0001349640 00000 n 
+0001349832 00000 n 
+0001349896 00000 n 
+0001349960 00000 n 
+0001350024 00000 n 
+0001350088 00000 n 
+0001350152 00000 n 
+0001350216 00000 n 
+0001350280 00000 n 
+0001350344 00000 n 
+0001350408 00000 n 
+0001350472 00000 n 
+0001350536 00000 n 
+0001350600 00000 n 
+0001350664 00000 n 
+0001350728 00000 n 
+0001350792 00000 n 
+0001350856 00000 n 
+0001350920 00000 n 
+0001350984 00000 n 
+0001351048 00000 n 
+0001351112 00000 n 
+0001351176 00000 n 
+0001351240 00000 n 
+0001351304 00000 n 
+0001351368 00000 n 
+0001351432 00000 n 
+0001351496 00000 n 
+0001351559 00000 n 
+0001351623 00000 n 
+0001351686 00000 n 
+0001351750 00000 n 
+0001351812 00000 n 
+0001351876 00000 n 
+0001351940 00000 n 
+0001352004 00000 n 
+0001352068 00000 n 
+0001352132 00000 n 
+0001352196 00000 n 
+0001358697 00000 n 
+0001356025 00000 n 
+0001352403 00000 n 
+0001356141 00000 n 
+0001356333 00000 n 
+0001356397 00000 n 
+0001356461 00000 n 
+0001356525 00000 n 
+0001356589 00000 n 
+0001356653 00000 n 
+0001356717 00000 n 
+0001356781 00000 n 
+0001356844 00000 n 
+0001356908 00000 n 
+0001356971 00000 n 
+0001357035 00000 n 
+0001357098 00000 n 
+0001357162 00000 n 
+0001357226 00000 n 
+0001357290 00000 n 
+0001357354 00000 n 
+0001357418 00000 n 
+0001357482 00000 n 
+0001357546 00000 n 
+0001357610 00000 n 
+0001357674 00000 n 
+0001357738 00000 n 
+0001357802 00000 n 
+0001357866 00000 n 
+0001357930 00000 n 
+0001357994 00000 n 
+0001358058 00000 n 
+0001358122 00000 n 
+0001358186 00000 n 
+0001358250 00000 n 
+0001358314 00000 n 
+0001358378 00000 n 
+0001358442 00000 n 
+0001358506 00000 n 
+0001358570 00000 n 
+0001358634 00000 n 
+0001365002 00000 n 
+0001362331 00000 n 
+0001358840 00000 n 
+0001362447 00000 n 
+0001362639 00000 n 
+0001362703 00000 n 
+0001362766 00000 n 
+0001362830 00000 n 
+0001362892 00000 n 
+0001362956 00000 n 
+0001363020 00000 n 
+0001363084 00000 n 
+0001363148 00000 n 
+0001363212 00000 n 
+0001363276 00000 n 
+0001363340 00000 n 
+0001363404 00000 n 
+0001363468 00000 n 
+0001363532 00000 n 
+0001363596 00000 n 
+0001363660 00000 n 
+0001363724 00000 n 
+0001363914 00000 n 
+0001363978 00000 n 
+0001364042 00000 n 
+0001364106 00000 n 
+0001364170 00000 n 
+0001364234 00000 n 
+0001364298 00000 n 
+0001364362 00000 n 
+0001364426 00000 n 
+0001364490 00000 n 
+0001364554 00000 n 
+0001364618 00000 n 
+0001364682 00000 n 
+0001364746 00000 n 
+0001364810 00000 n 
+0001364874 00000 n 
+0001364938 00000 n 
+0003383171 00000 n 
+0001368660 00000 n 
+0001367329 00000 n 
+0001365145 00000 n 
+0001367445 00000 n 
+0001367637 00000 n 
+0001367701 00000 n 
+0001367764 00000 n 
+0001367828 00000 n 
+0001367892 00000 n 
+0001367956 00000 n 
+0001368020 00000 n 
+0001368084 00000 n 
+0001368148 00000 n 
+0001368212 00000 n 
+0001368276 00000 n 
+0001368340 00000 n 
+0001368404 00000 n 
+0001368468 00000 n 
+0001370243 00000 n 
+0001369809 00000 n 
+0001368817 00000 n 
+0001369925 00000 n 
+0001370052 00000 n 
+0001372147 00000 n 
+0001371840 00000 n 
+0001370359 00000 n 
+0001371956 00000 n 
+0001372083 00000 n 
+0001374391 00000 n 
+0001374084 00000 n 
+0001372263 00000 n 
+0001374200 00000 n 
+0001374327 00000 n 
+0001377004 00000 n 
+0001376571 00000 n 
+0001374564 00000 n 
+0001376687 00000 n 
+0001376814 00000 n 
+0001376940 00000 n 
+0001379465 00000 n 
+0001379285 00000 n 
+0001377134 00000 n 
+0001379401 00000 n 
+0003383296 00000 n 
+0001381384 00000 n 
+0001381204 00000 n 
+0001379581 00000 n 
+0001381320 00000 n 
+0001382880 00000 n 
+0001382700 00000 n 
+0001381557 00000 n 
+0001382816 00000 n 
+0001385403 00000 n 
+0001385096 00000 n 
+0001382996 00000 n 
+0001385212 00000 n 
+0001385339 00000 n 
+0001387801 00000 n 
+0001387369 00000 n 
+0001385547 00000 n 
+0001387485 00000 n 
+0001387611 00000 n 
+0001387738 00000 n 
+0001389494 00000 n 
+0001389314 00000 n 
+0001388002 00000 n 
+0001389430 00000 n 
+0001391757 00000 n 
+0001392249 00000 n 
+0001391620 00000 n 
+0001389610 00000 n 
+0001391931 00000 n 
+0001392058 00000 n 
+0001392185 00000 n 
+0003383421 00000 n 
+0001395078 00000 n 
+0001394580 00000 n 
+0001392435 00000 n 
+0001394696 00000 n 
+0001394823 00000 n 
+0001394950 00000 n 
+0001395014 00000 n 
+0001397325 00000 n 
+0001398115 00000 n 
+0001397188 00000 n 
+0001395208 00000 n 
+0001397475 00000 n 
+0001397539 00000 n 
+0001397603 00000 n 
+0001397667 00000 n 
+0001397731 00000 n 
+0001397795 00000 n 
+0001397859 00000 n 
+0001397923 00000 n 
+0001397987 00000 n 
+0001398051 00000 n 
+0001400234 00000 n 
+0001400534 00000 n 
+0001401095 00000 n 
+0001400070 00000 n 
+0001398231 00000 n 
+0001400840 00000 n 
+0001400904 00000 n 
+0001401031 00000 n 
+0001400384 00000 n 
+0001400687 00000 n 
+0001403229 00000 n 
+0001403570 00000 n 
+0001403092 00000 n 
+0001401239 00000 n 
+0001403379 00000 n 
+0001403506 00000 n 
+0001405318 00000 n 
+0001405138 00000 n 
+0001403714 00000 n 
+0001405254 00000 n 
+0001406792 00000 n 
+0001406612 00000 n 
+0001405420 00000 n 
+0001406728 00000 n 
+0003383546 00000 n 
+0001408303 00000 n 
+0001408123 00000 n 
+0001406894 00000 n 
+0001408239 00000 n 
+0001410394 00000 n 
+0001410735 00000 n 
+0001410257 00000 n 
+0001408405 00000 n 
+0001410544 00000 n 
+0001410671 00000 n 
+0001413333 00000 n 
+0001412774 00000 n 
+0001410865 00000 n 
+0001412890 00000 n 
+0001413017 00000 n 
+0001413144 00000 n 
+0001413271 00000 n 
+0001415274 00000 n 
+0001418211 00000 n 
+0001415744 00000 n 
+0001415137 00000 n 
+0001413491 00000 n 
+0001415427 00000 n 
+0001415554 00000 n 
+0001415681 00000 n 
+0001418839 00000 n 
+0001418065 00000 n 
+0001415888 00000 n 
+0001418521 00000 n 
+0001418648 00000 n 
+0001418366 00000 n 
+0001418775 00000 n 
+0001421367 00000 n 
+0001421580 00000 n 
+0001421230 00000 n 
+0001418983 00000 n 
+0001421516 00000 n 
+0003383671 00000 n 
+0001424399 00000 n 
+0001423836 00000 n 
+0001421710 00000 n 
+0001423952 00000 n 
+0001424079 00000 n 
+0001424143 00000 n 
+0001424207 00000 n 
+0001424271 00000 n 
+0001424335 00000 n 
+0001426413 00000 n 
+0001426169 00000 n 
+0001424543 00000 n 
+0001426285 00000 n 
+0001426349 00000 n 
+0001428369 00000 n 
+0001427935 00000 n 
+0001426529 00000 n 
+0001428051 00000 n 
+0001428305 00000 n 
+0001430682 00000 n 
+0001430249 00000 n 
+0001428485 00000 n 
+0001430365 00000 n 
+0001430492 00000 n 
+0001430618 00000 n 
+0001433249 00000 n 
+0001435548 00000 n 
+0001433596 00000 n 
+0001433112 00000 n 
+0001430883 00000 n 
+0001433406 00000 n 
+0001433532 00000 n 
+0001442411 00000 n 
+0001443679 00000 n 
+0001442475 00000 n 
+0001435432 00000 n 
+0001433726 00000 n 
+0001442283 00000 n 
+0003383796 00000 n 
+0001437927 00000 n 
+0001438045 00000 n 
+0001438093 00000 n 
+0001438516 00000 n 
+0001438539 00000 n 
+0001438894 00000 n 
+0001442260 00000 n 
+0001475229 00000 n 
+0001443563 00000 n 
+0001442621 00000 n 
+0001474910 00000 n 
+0001475038 00000 n 
+0001475165 00000 n 
+0001477685 00000 n 
+0001477983 00000 n 
+0001478138 00000 n 
+0001478435 00000 n 
+0001478785 00000 n 
+0001477503 00000 n 
+0001475383 00000 n 
+0001478594 00000 n 
+0001478721 00000 n 
+0001477834 00000 n 
+0001478287 00000 n 
+0001480647 00000 n 
+0001480797 00000 n 
+0001481142 00000 n 
+0001480501 00000 n 
+0001478943 00000 n 
+0001480951 00000 n 
+0001481078 00000 n 
+0001483510 00000 n 
+0001483574 00000 n 
+0001483266 00000 n 
+0001481286 00000 n 
+0001483382 00000 n 
+0001486138 00000 n 
+0001486291 00000 n 
+0001486445 00000 n 
+0001486602 00000 n 
+0001487137 00000 n 
+0001485974 00000 n 
+0001483775 00000 n 
+0001486753 00000 n 
+0001486817 00000 n 
+0001486881 00000 n 
+0001486945 00000 n 
+0001487009 00000 n 
+0001487073 00000 n 
+0001531364 00000 n 
+0001540890 00000 n 
+0001543209 00000 n 
+0001544279 00000 n 
+0001488842 00000 n 
+0001489187 00000 n 
+0001488705 00000 n 
+0001487324 00000 n 
+0001488995 00000 n 
+0001489059 00000 n 
+0001489123 00000 n 
+0003383921 00000 n 
+0001490874 00000 n 
+0001490694 00000 n 
+0001489303 00000 n 
+0001490810 00000 n 
+0001492455 00000 n 
+0001492275 00000 n 
+0001490990 00000 n 
+0001492391 00000 n 
+0001494229 00000 n 
+0001494637 00000 n 
+0001494092 00000 n 
+0001492557 00000 n 
+0001494381 00000 n 
+0001494445 00000 n 
+0001494509 00000 n 
+0001494573 00000 n 
+0001545359 00000 n 
+0001496201 00000 n 
+0001495893 00000 n 
+0001494753 00000 n 
+0001496009 00000 n 
+0001496073 00000 n 
+0001496137 00000 n 
+0001497740 00000 n 
+0001497432 00000 n 
+0001496317 00000 n 
+0001497548 00000 n 
+0001497612 00000 n 
+0001497676 00000 n 
+0001499381 00000 n 
+0001499073 00000 n 
+0001497856 00000 n 
+0001499189 00000 n 
+0001499253 00000 n 
+0001499317 00000 n 
+0003384046 00000 n 
+0001500998 00000 n 
+0001501341 00000 n 
+0001500861 00000 n 
+0001499497 00000 n 
+0001501149 00000 n 
+0001501213 00000 n 
+0001501277 00000 n 
+0001506589 00000 n 
+0001502808 00000 n 
+0001502564 00000 n 
+0001501457 00000 n 
+0001502680 00000 n 
+0001502744 00000 n 
+0001506244 00000 n 
+0001504942 00000 n 
+0001504506 00000 n 
+0001502924 00000 n 
+0001504622 00000 n 
+0001504686 00000 n 
+0001504750 00000 n 
+0001504814 00000 n 
+0001504878 00000 n 
+0001506653 00000 n 
+0001506107 00000 n 
+0001505086 00000 n 
+0001506399 00000 n 
+0001506463 00000 n 
+0001507688 00000 n 
+0001507508 00000 n 
+0001506783 00000 n 
+0001507624 00000 n 
+0001509639 00000 n 
+0001510112 00000 n 
+0001509502 00000 n 
+0001507790 00000 n 
+0001509794 00000 n 
+0001509921 00000 n 
+0001509985 00000 n 
+0001510049 00000 n 
+0003384171 00000 n 
+0001511507 00000 n 
+0001511135 00000 n 
+0001510256 00000 n 
+0001511251 00000 n 
+0001511315 00000 n 
+0001511379 00000 n 
+0001511443 00000 n 
+0001513349 00000 n 
+0001513105 00000 n 
+0001511623 00000 n 
+0001513221 00000 n 
+0001513285 00000 n 
+0001514991 00000 n 
+0001514683 00000 n 
+0001513465 00000 n 
+0001514799 00000 n 
+0001514863 00000 n 
+0001514927 00000 n 
+0001517327 00000 n 
+0001516766 00000 n 
+0001515107 00000 n 
+0001516882 00000 n 
+0001516946 00000 n 
+0001517072 00000 n 
+0001517199 00000 n 
+0001517263 00000 n 
+0001519635 00000 n 
+0001519455 00000 n 
+0001517485 00000 n 
+0001519571 00000 n 
+0001522190 00000 n 
+0001522010 00000 n 
+0001519779 00000 n 
+0001522126 00000 n 
+0003384296 00000 n 
+0001524637 00000 n 
+0001524457 00000 n 
+0001522306 00000 n 
+0001524573 00000 n 
+0001525863 00000 n 
+0001525683 00000 n 
+0001524767 00000 n 
+0001525799 00000 n 
+0001534104 00000 n 
+0001531120 00000 n 
+0001525965 00000 n 
+0001531236 00000 n 
+0001531428 00000 n 
+0001531492 00000 n 
+0001531556 00000 n 
+0001531620 00000 n 
+0001531684 00000 n 
+0001531748 00000 n 
+0001531812 00000 n 
+0001531876 00000 n 
+0001531939 00000 n 
+0001532003 00000 n 
+0001532066 00000 n 
+0001532130 00000 n 
+0001532192 00000 n 
+0001532256 00000 n 
+0001532320 00000 n 
+0001532384 00000 n 
+0001532448 00000 n 
+0001532512 00000 n 
+0001532576 00000 n 
+0001532640 00000 n 
+0001532704 00000 n 
+0001532768 00000 n 
+0001532832 00000 n 
+0001532896 00000 n 
+0001532960 00000 n 
+0001533024 00000 n 
+0001533088 00000 n 
+0001533152 00000 n 
+0001533216 00000 n 
+0001533280 00000 n 
+0001533343 00000 n 
+0001533407 00000 n 
+0001533469 00000 n 
+0001533533 00000 n 
+0001533596 00000 n 
+0001533660 00000 n 
+0001533724 00000 n 
+0001533788 00000 n 
+0001533852 00000 n 
+0001533915 00000 n 
+0001533978 00000 n 
+0001534041 00000 n 
+0001539840 00000 n 
+0001537234 00000 n 
+0001534261 00000 n 
+0001537350 00000 n 
+0001537477 00000 n 
+0001537540 00000 n 
+0001537604 00000 n 
+0001537668 00000 n 
+0001537732 00000 n 
+0001537796 00000 n 
+0001537860 00000 n 
+0001537924 00000 n 
+0001537988 00000 n 
+0001538052 00000 n 
+0001538116 00000 n 
+0001538180 00000 n 
+0001538244 00000 n 
+0001538308 00000 n 
+0001538372 00000 n 
+0001538436 00000 n 
+0001538500 00000 n 
+0001538564 00000 n 
+0001538628 00000 n 
+0001538692 00000 n 
+0001538755 00000 n 
+0001538819 00000 n 
+0001538882 00000 n 
+0001538946 00000 n 
+0001539008 00000 n 
+0001539072 00000 n 
+0001539136 00000 n 
+0001539200 00000 n 
+0001539264 00000 n 
+0001539328 00000 n 
+0001539392 00000 n 
+0001539456 00000 n 
+0001539520 00000 n 
+0001539584 00000 n 
+0001539648 00000 n 
+0001539712 00000 n 
+0001539776 00000 n 
+0001540954 00000 n 
+0001540647 00000 n 
+0001539955 00000 n 
+0001540763 00000 n 
+0001542257 00000 n 
+0001541949 00000 n 
+0001541070 00000 n 
+0001542065 00000 n 
+0001542193 00000 n 
+0003384421 00000 n 
+0001543273 00000 n 
+0001542965 00000 n 
+0001542373 00000 n 
+0001543081 00000 n 
+0001544342 00000 n 
+0001544035 00000 n 
+0001543389 00000 n 
+0001544151 00000 n 
+0001545422 00000 n 
+0001545115 00000 n 
+0001544458 00000 n 
+0001545231 00000 n 
+0001545819 00000 n 
+0001545639 00000 n 
+0001545538 00000 n 
+0001545755 00000 n 
+0001547822 00000 n 
+0001547515 00000 n 
+0001545861 00000 n 
+0001547631 00000 n 
+0001547758 00000 n 
+0001550240 00000 n 
+0001549933 00000 n 
+0001547938 00000 n 
+0001550049 00000 n 
+0001550176 00000 n 
+0003384546 00000 n 
+0001552561 00000 n 
+0001553049 00000 n 
+0001552415 00000 n 
+0001550356 00000 n 
+0001552858 00000 n 
+0001552985 00000 n 
+0001552709 00000 n 
+0001555443 00000 n 
+0001555010 00000 n 
+0001553179 00000 n 
+0001555126 00000 n 
+0001555253 00000 n 
+0001555380 00000 n 
+0001557746 00000 n 
+0001557896 00000 n 
+0001558128 00000 n 
+0001557600 00000 n 
+0001555573 00000 n 
+0001558064 00000 n 
+0003374941 00000 n 
+0003374796 00000 n 
+0001559609 00000 n 
+0001559927 00000 n 
+0001559365 00000 n 
+0001558357 00000 n 
+0001559481 00000 n 
+0001559736 00000 n 
+0001559863 00000 n 
+0001561427 00000 n 
+0001561120 00000 n 
+0001560057 00000 n 
+0001561236 00000 n 
+0001561363 00000 n 
+0001562681 00000 n 
+0001562501 00000 n 
+0001561557 00000 n 
+0001562617 00000 n 
+0003384671 00000 n 
+0001563856 00000 n 
+0001563676 00000 n 
+0001562783 00000 n 
+0001563792 00000 n 
+0001565020 00000 n 
+0001564840 00000 n 
+0001563958 00000 n 
+0001564956 00000 n 
+0001566489 00000 n 
+0001569410 00000 n 
+0001566702 00000 n 
+0001566352 00000 n 
+0001565122 00000 n 
+0001566638 00000 n 
+0001594411 00000 n 
+0001570469 00000 n 
+0001569559 00000 n 
+0001569866 00000 n 
+0001570168 00000 n 
+0001570848 00000 n 
+0001569201 00000 n 
+0001566818 00000 n 
+0001570784 00000 n 
+0001569713 00000 n 
+0001570018 00000 n 
+0001570318 00000 n 
+0001570634 00000 n 
+0001595795 00000 n 
+0001600917 00000 n 
+0001626128 00000 n 
+0001627053 00000 n 
+0001573590 00000 n 
+0001573738 00000 n 
+0001573954 00000 n 
+0001573125 00000 n 
+0001571034 00000 n 
+0001573289 00000 n 
+0001573890 00000 n 
+0001573439 00000 n 
+0001628611 00000 n 
+0001575897 00000 n 
+0001575717 00000 n 
+0001574141 00000 n 
+0001575833 00000 n 
+0003384796 00000 n 
+0001577145 00000 n 
+0001576965 00000 n 
+0001576013 00000 n 
+0001577081 00000 n 
+0001578966 00000 n 
+0001578786 00000 n 
+0001577261 00000 n 
+0001578902 00000 n 
+0001580220 00000 n 
+0001580040 00000 n 
+0001579082 00000 n 
+0001580156 00000 n 
+0001582024 00000 n 
+0001582258 00000 n 
+0001581887 00000 n 
+0001580336 00000 n 
+0001582194 00000 n 
+0001584512 00000 n 
+0001584722 00000 n 
+0001584375 00000 n 
+0001582430 00000 n 
+0001584658 00000 n 
+0001634140 00000 n 
+0001587748 00000 n 
+0001587120 00000 n 
+0001584838 00000 n 
+0001587236 00000 n 
+0001587300 00000 n 
+0001587364 00000 n 
+0001587428 00000 n 
+0001587492 00000 n 
+0001587556 00000 n 
+0001587620 00000 n 
+0001587684 00000 n 
+0003384921 00000 n 
+0001590223 00000 n 
+0001590043 00000 n 
+0001587892 00000 n 
+0001590159 00000 n 
+0001592654 00000 n 
+0001592887 00000 n 
+0001592517 00000 n 
+0001590353 00000 n 
+0001592823 00000 n 
+0001594475 00000 n 
+0001594167 00000 n 
+0001593045 00000 n 
+0001594283 00000 n 
+0001595859 00000 n 
+0001595551 00000 n 
+0001594591 00000 n 
+0001595667 00000 n 
+0001603469 00000 n 
+0001600673 00000 n 
+0001595975 00000 n 
+0001600789 00000 n 
+0001600981 00000 n 
+0001601045 00000 n 
+0001601109 00000 n 
+0001601173 00000 n 
+0001601237 00000 n 
+0001601301 00000 n 
+0001601365 00000 n 
+0001601429 00000 n 
+0001601492 00000 n 
+0001601556 00000 n 
+0001601619 00000 n 
+0001601683 00000 n 
+0001601745 00000 n 
+0001601809 00000 n 
+0001601873 00000 n 
+0001601937 00000 n 
+0001602001 00000 n 
+0001602065 00000 n 
+0001602129 00000 n 
+0001602193 00000 n 
+0001602257 00000 n 
+0001602321 00000 n 
+0001602385 00000 n 
+0001602449 00000 n 
+0001602513 00000 n 
+0001602577 00000 n 
+0001602641 00000 n 
+0001602705 00000 n 
+0001602769 00000 n 
+0001602833 00000 n 
+0001602897 00000 n 
+0001602961 00000 n 
+0001603025 00000 n 
+0001603088 00000 n 
+0001603152 00000 n 
+0001603214 00000 n 
+0001603278 00000 n 
+0001603341 00000 n 
+0001603405 00000 n 
+0001609220 00000 n 
+0001606740 00000 n 
+0001603626 00000 n 
+0001606856 00000 n 
+0001606984 00000 n 
+0001607048 00000 n 
+0001607112 00000 n 
+0001607176 00000 n 
+0001607240 00000 n 
+0001607303 00000 n 
+0001607367 00000 n 
+0001607430 00000 n 
+0001607494 00000 n 
+0001607557 00000 n 
+0001607621 00000 n 
+0001607685 00000 n 
+0001607749 00000 n 
+0001607813 00000 n 
+0001607877 00000 n 
+0001607941 00000 n 
+0001608005 00000 n 
+0001608069 00000 n 
+0001608133 00000 n 
+0001608197 00000 n 
+0001608261 00000 n 
+0001608325 00000 n 
+0001608389 00000 n 
+0001608453 00000 n 
+0001608517 00000 n 
+0001608581 00000 n 
+0001608645 00000 n 
+0001608709 00000 n 
+0001608773 00000 n 
+0001608837 00000 n 
+0001608901 00000 n 
+0001608965 00000 n 
+0001609029 00000 n 
+0001609093 00000 n 
+0001609157 00000 n 
+0003385046 00000 n 
+0001615200 00000 n 
+0001612657 00000 n 
+0001609363 00000 n 
+0001612773 00000 n 
+0001612901 00000 n 
+0001612965 00000 n 
+0001613028 00000 n 
+0001613092 00000 n 
+0001613156 00000 n 
+0001613220 00000 n 
+0001613283 00000 n 
+0001613347 00000 n 
+0001613410 00000 n 
+0001613474 00000 n 
+0001613537 00000 n 
+0001613601 00000 n 
+0001613665 00000 n 
+0001613729 00000 n 
+0001613793 00000 n 
+0001613857 00000 n 
+0001613921 00000 n 
+0001613985 00000 n 
+0001614049 00000 n 
+0001614113 00000 n 
+0001614177 00000 n 
+0001614241 00000 n 
+0001614305 00000 n 
+0001614369 00000 n 
+0001614433 00000 n 
+0001614497 00000 n 
+0001614561 00000 n 
+0001614625 00000 n 
+0001614689 00000 n 
+0001614753 00000 n 
+0001614817 00000 n 
+0001614881 00000 n 
+0001614945 00000 n 
+0001615009 00000 n 
+0001615073 00000 n 
+0001615136 00000 n 
+0001620769 00000 n 
+0001618353 00000 n 
+0001615343 00000 n 
+0001618469 00000 n 
+0001618597 00000 n 
+0001618661 00000 n 
+0001618725 00000 n 
+0001618789 00000 n 
+0001618853 00000 n 
+0001618916 00000 n 
+0001618980 00000 n 
+0001619043 00000 n 
+0001619107 00000 n 
+0001619170 00000 n 
+0001619234 00000 n 
+0001619298 00000 n 
+0001619362 00000 n 
+0001619426 00000 n 
+0001619490 00000 n 
+0001619554 00000 n 
+0001619618 00000 n 
+0001619682 00000 n 
+0001619746 00000 n 
+0001619810 00000 n 
+0001619874 00000 n 
+0001619938 00000 n 
+0001620002 00000 n 
+0001620066 00000 n 
+0001620130 00000 n 
+0001620194 00000 n 
+0001620258 00000 n 
+0001620322 00000 n 
+0001620386 00000 n 
+0001620450 00000 n 
+0001620514 00000 n 
+0001620578 00000 n 
+0001620642 00000 n 
+0001620706 00000 n 
+0001624647 00000 n 
+0001622935 00000 n 
+0001620926 00000 n 
+0001623051 00000 n 
+0001623179 00000 n 
+0001623243 00000 n 
+0001623307 00000 n 
+0001623371 00000 n 
+0001623435 00000 n 
+0001623499 00000 n 
+0001623563 00000 n 
+0001623627 00000 n 
+0001623691 00000 n 
+0001623755 00000 n 
+0001623819 00000 n 
+0001623883 00000 n 
+0001623947 00000 n 
+0001624010 00000 n 
+0001624074 00000 n 
+0001624137 00000 n 
+0001624201 00000 n 
+0001624263 00000 n 
+0001624327 00000 n 
+0001624391 00000 n 
+0001624455 00000 n 
+0001624519 00000 n 
+0001624583 00000 n 
+0001626192 00000 n 
+0001625884 00000 n 
+0001624762 00000 n 
+0001626000 00000 n 
+0001627117 00000 n 
+0001626810 00000 n 
+0001626308 00000 n 
+0001626926 00000 n 
+0001628675 00000 n 
+0001628367 00000 n 
+0001627233 00000 n 
+0001628483 00000 n 
+0003385171 00000 n 
+0001629984 00000 n 
+0001629676 00000 n 
+0001628791 00000 n 
+0001629792 00000 n 
+0001629920 00000 n 
+0001631429 00000 n 
+0001631121 00000 n 
+0001630100 00000 n 
+0001631237 00000 n 
+0001631365 00000 n 
+0001632960 00000 n 
+0001632652 00000 n 
+0001631545 00000 n 
+0001632768 00000 n 
+0001632896 00000 n 
+0001634204 00000 n 
+0001633896 00000 n 
+0001633076 00000 n 
+0001634012 00000 n 
+0001635517 00000 n 
+0001635209 00000 n 
+0001634320 00000 n 
+0001635325 00000 n 
+0001635453 00000 n 
+0001637320 00000 n 
+0001637012 00000 n 
+0001635633 00000 n 
+0001637128 00000 n 
+0001637256 00000 n 
+0003385296 00000 n 
+0001638741 00000 n 
+0001638433 00000 n 
+0001637436 00000 n 
+0001638549 00000 n 
+0001638677 00000 n 
+0001639966 00000 n 
+0001639658 00000 n 
+0001638857 00000 n 
+0001639774 00000 n 
+0001639902 00000 n 
+0001640475 00000 n 
+0001640296 00000 n 
+0001640082 00000 n 
+0001640766 00000 n 
+0001640650 00000 n 
+0001640549 00000 n 
+0001641867 00000 n 
+0001641432 00000 n 
+0001640808 00000 n 
+0001641548 00000 n 
+0001641612 00000 n 
+0001641739 00000 n 
+0001641803 00000 n 
+0001642264 00000 n 
+0001642084 00000 n 
+0001641983 00000 n 
+0001642200 00000 n 
+0003385421 00000 n 
+0001644196 00000 n 
+0001643889 00000 n 
+0001642306 00000 n 
+0001644005 00000 n 
+0001644132 00000 n 
+0001646846 00000 n 
+0001646539 00000 n 
+0001644312 00000 n 
+0001646655 00000 n 
+0001646782 00000 n 
+0001649116 00000 n 
+0001648936 00000 n 
+0001647004 00000 n 
+0001649052 00000 n 
+0001651333 00000 n 
+0001651153 00000 n 
+0001649218 00000 n 
+0001651269 00000 n 
+0001653652 00000 n 
+0001653345 00000 n 
+0001651435 00000 n 
+0001653461 00000 n 
+0001653588 00000 n 
+0001656311 00000 n 
+0001656006 00000 n 
+0001653768 00000 n 
+0001656122 00000 n 
+0001656249 00000 n 
+0003385546 00000 n 
+0001658634 00000 n 
+0001658327 00000 n 
+0001656427 00000 n 
+0001658443 00000 n 
+0001658570 00000 n 
+0001660865 00000 n 
+0001661081 00000 n 
+0001660728 00000 n 
+0001658750 00000 n 
+0001661017 00000 n 
+0001677798 00000 n 
+0001663490 00000 n 
+0001663310 00000 n 
+0001661211 00000 n 
+0001663426 00000 n 
+0001666085 00000 n 
+0001666285 00000 n 
+0001666553 00000 n 
+0001665939 00000 n 
+0001663592 00000 n 
+0001666489 00000 n 
+0001668967 00000 n 
+0001668787 00000 n 
+0001666725 00000 n 
+0001668903 00000 n 
+0001674083 00000 n 
+0001671417 00000 n 
+0001671111 00000 n 
+0001669069 00000 n 
+0001671227 00000 n 
+0001671354 00000 n 
+0003385671 00000 n 
+0001674262 00000 n 
+0001674719 00000 n 
+0001674976 00000 n 
+0001673919 00000 n 
+0001671533 00000 n 
+0001674912 00000 n 
+0001674491 00000 n 
+0001677234 00000 n 
+0001677989 00000 n 
+0001677088 00000 n 
+0001675162 00000 n 
+0001677671 00000 n 
+0001677925 00000 n 
+0001677452 00000 n 
+0001681157 00000 n 
+0001680403 00000 n 
+0001678161 00000 n 
+0001680519 00000 n 
+0001680583 00000 n 
+0001680647 00000 n 
+0001680710 00000 n 
+0001680774 00000 n 
+0001680838 00000 n 
+0001680902 00000 n 
+0001680966 00000 n 
+0001681093 00000 n 
+0001683429 00000 n 
+0001682866 00000 n 
+0001681301 00000 n 
+0001682982 00000 n 
+0001683046 00000 n 
+0001683110 00000 n 
+0001683174 00000 n 
+0001683238 00000 n 
+0001683365 00000 n 
+0001685694 00000 n 
+0001685514 00000 n 
+0001683559 00000 n 
+0001685630 00000 n 
+0001687696 00000 n 
+0001687516 00000 n 
+0001685909 00000 n 
+0001687632 00000 n 
+0003385796 00000 n 
+0001690232 00000 n 
+0001689925 00000 n 
+0001687812 00000 n 
+0001690041 00000 n 
+0001690168 00000 n 
+0001693182 00000 n 
+0001692556 00000 n 
+0001690376 00000 n 
+0001692672 00000 n 
+0001692799 00000 n 
+0001692863 00000 n 
+0001692927 00000 n 
+0001692991 00000 n 
+0001693054 00000 n 
+0001693118 00000 n 
+0001695458 00000 n 
+0001695086 00000 n 
+0001693312 00000 n 
+0001695202 00000 n 
+0001695266 00000 n 
+0001695330 00000 n 
+0001695394 00000 n 
+0001697986 00000 n 
+0001697362 00000 n 
+0001695574 00000 n 
+0001697478 00000 n 
+0001697542 00000 n 
+0001697606 00000 n 
+0001697733 00000 n 
+0001697860 00000 n 
+0001697923 00000 n 
+0001700866 00000 n 
+0001700302 00000 n 
+0001698116 00000 n 
+0001700418 00000 n 
+0001700482 00000 n 
+0001700546 00000 n 
+0001700610 00000 n 
+0001700674 00000 n 
+0001700738 00000 n 
+0001700802 00000 n 
+0001703995 00000 n 
+0001703242 00000 n 
+0001701010 00000 n 
+0001703358 00000 n 
+0001703485 00000 n 
+0001703549 00000 n 
+0001703613 00000 n 
+0001703676 00000 n 
+0001703803 00000 n 
+0001703867 00000 n 
+0001703931 00000 n 
+0003385921 00000 n 
+0001705364 00000 n 
+0001705120 00000 n 
+0001704139 00000 n 
+0001705236 00000 n 
+0001705300 00000 n 
+0001707969 00000 n 
+0001707598 00000 n 
+0001705480 00000 n 
+0001707714 00000 n 
+0001707778 00000 n 
+0001707905 00000 n 
+0001710264 00000 n 
+0001709893 00000 n 
+0001708113 00000 n 
+0001710009 00000 n 
+0001710136 00000 n 
+0001710200 00000 n 
+0001712729 00000 n 
+0001712549 00000 n 
+0001710422 00000 n 
+0001712665 00000 n 
+0001714309 00000 n 
+0001714129 00000 n 
+0001712873 00000 n 
+0001714245 00000 n 
+0001714748 00000 n 
+0001714568 00000 n 
+0001714467 00000 n 
+0001714684 00000 n 
+0003386046 00000 n 
+0001716780 00000 n 
+0001716346 00000 n 
+0001714790 00000 n 
+0001716462 00000 n 
+0001716589 00000 n 
+0001716716 00000 n 
+0001719261 00000 n 
+0001718954 00000 n 
+0001716896 00000 n 
+0001719070 00000 n 
+0001719197 00000 n 
+0001721530 00000 n 
+0001721096 00000 n 
+0001719377 00000 n 
+0001721212 00000 n 
+0001721339 00000 n 
+0001721466 00000 n 
+0001723602 00000 n 
+0001723169 00000 n 
+0001721660 00000 n 
+0001723285 00000 n 
+0001723412 00000 n 
+0001723538 00000 n 
+0001725293 00000 n 
+0001724986 00000 n 
+0001723732 00000 n 
+0001725102 00000 n 
+0001725229 00000 n 
+0001727945 00000 n 
+0001728577 00000 n 
+0001727799 00000 n 
+0001725480 00000 n 
+0001728258 00000 n 
+0001728385 00000 n 
+0001728449 00000 n 
+0001728102 00000 n 
+0001728513 00000 n 
+0003386171 00000 n 
+0001730223 00000 n 
+0001730414 00000 n 
+0001729915 00000 n 
+0001728707 00000 n 
+0001730031 00000 n 
+0001730095 00000 n 
+0001730350 00000 n 
+0001732759 00000 n 
+0001732926 00000 n 
+0001732604 00000 n 
+0001733423 00000 n 
+0001732449 00000 n 
+0001730544 00000 n 
+0001733103 00000 n 
+0001733167 00000 n 
+0001733231 00000 n 
+0001733295 00000 n 
+0001733359 00000 n 
+0001740453 00000 n 
+0001735013 00000 n 
+0001734705 00000 n 
+0001733595 00000 n 
+0001734821 00000 n 
+0001734885 00000 n 
+0001734949 00000 n 
+0001736717 00000 n 
+0001737130 00000 n 
+0001736580 00000 n 
+0001735129 00000 n 
+0001736875 00000 n 
+0001736939 00000 n 
+0001737066 00000 n 
+0001741733 00000 n 
+0001742115 00000 n 
+0001740209 00000 n 
+0001737260 00000 n 
+0001740325 00000 n 
+0001740517 00000 n 
+0001740581 00000 n 
+0001740645 00000 n 
+0001740709 00000 n 
+0001740773 00000 n 
+0001740837 00000 n 
+0001740901 00000 n 
+0001740965 00000 n 
+0001741029 00000 n 
+0001741093 00000 n 
+0001741157 00000 n 
+0001741221 00000 n 
+0001741285 00000 n 
+0001741349 00000 n 
+0001741413 00000 n 
+0001741477 00000 n 
+0001741541 00000 n 
+0001741605 00000 n 
+0001741860 00000 n 
+0001741987 00000 n 
+0001742051 00000 n 
+0001743815 00000 n 
+0001743968 00000 n 
+0001744631 00000 n 
+0001743669 00000 n 
+0001742300 00000 n 
+0001744119 00000 n 
+0001744183 00000 n 
+0001744247 00000 n 
+0001744311 00000 n 
+0001744375 00000 n 
+0001744439 00000 n 
+0001744503 00000 n 
+0001744567 00000 n 
+0003386296 00000 n 
+0001746495 00000 n 
+0001746622 00000 n 
+0001746812 00000 n 
+0001746251 00000 n 
+0001744747 00000 n 
+0001746367 00000 n 
+0001746748 00000 n 
+0001749557 00000 n 
+0001749187 00000 n 
+0001746942 00000 n 
+0001749303 00000 n 
+0001749430 00000 n 
+0001749494 00000 n 
+0001752028 00000 n 
+0001751848 00000 n 
+0001749687 00000 n 
+0001751964 00000 n 
+0001753216 00000 n 
+0001753036 00000 n 
+0001752158 00000 n 
+0001753152 00000 n 
+0001755123 00000 n 
+0001754690 00000 n 
+0001753318 00000 n 
+0001754806 00000 n 
+0001754933 00000 n 
+0001755059 00000 n 
+0001757607 00000 n 
+0001758269 00000 n 
+0001757461 00000 n 
+0001755239 00000 n 
+0001758078 00000 n 
+0001758205 00000 n 
+0001757842 00000 n 
+0003386421 00000 n 
+0001761153 00000 n 
+0001760845 00000 n 
+0001758455 00000 n 
+0001760961 00000 n 
+0001761089 00000 n 
+0001764044 00000 n 
+0001763483 00000 n 
+0001761269 00000 n 
+0001763599 00000 n 
+0001763726 00000 n 
+0001763853 00000 n 
+0001763980 00000 n 
+0001766054 00000 n 
+0001766543 00000 n 
+0001765908 00000 n 
+0001764188 00000 n 
+0001766353 00000 n 
+0001766480 00000 n 
+0001766203 00000 n 
+0002550931 00000 n 
+0001768852 00000 n 
+0001769318 00000 n 
+0001768715 00000 n 
+0001766758 00000 n 
+0001769002 00000 n 
+0001769127 00000 n 
+0001769254 00000 n 
+0001771232 00000 n 
+0001771052 00000 n 
+0001769505 00000 n 
+0001771168 00000 n 
+0001773521 00000 n 
+0001773738 00000 n 
+0001773384 00000 n 
+0001771348 00000 n 
+0001773674 00000 n 
+0003386546 00000 n 
+0002527972 00000 n 
+0001776281 00000 n 
+0001775721 00000 n 
+0001773868 00000 n 
+0001775837 00000 n 
+0001775964 00000 n 
+0001776091 00000 n 
+0001776217 00000 n 
+0001778962 00000 n 
+0001778401 00000 n 
+0001776397 00000 n 
+0001778517 00000 n 
+0001778644 00000 n 
+0001778771 00000 n 
+0001778898 00000 n 
+0001781659 00000 n 
+0001781352 00000 n 
+0001779092 00000 n 
+0001781468 00000 n 
+0001781595 00000 n 
+0001783981 00000 n 
+0001783674 00000 n 
+0001781775 00000 n 
+0001783790 00000 n 
+0001783917 00000 n 
+0001785163 00000 n 
+0001784983 00000 n 
+0001784139 00000 n 
+0001785099 00000 n 
+0001785546 00000 n 
+0001785366 00000 n 
+0001785265 00000 n 
+0001785482 00000 n 
+0003386671 00000 n 
+0001787475 00000 n 
+0001787168 00000 n 
+0001785588 00000 n 
+0001787284 00000 n 
+0001787411 00000 n 
+0001790037 00000 n 
+0001790216 00000 n 
+0001790398 00000 n 
+0001790762 00000 n 
+0001789882 00000 n 
+0001787591 00000 n 
+0001790572 00000 n 
+0001790699 00000 n 
+0001792968 00000 n 
+0001793347 00000 n 
+0001792831 00000 n 
+0001790948 00000 n 
+0001793156 00000 n 
+0001793283 00000 n 
+0001794508 00000 n 
+0001794328 00000 n 
+0001793533 00000 n 
+0001794444 00000 n 
+0001796217 00000 n 
+0001798557 00000 n 
+0001830426 00000 n 
+0001833205 00000 n 
+0001796877 00000 n 
+0001796080 00000 n 
+0001794610 00000 n 
+0001796368 00000 n 
+0001796686 00000 n 
+0001796749 00000 n 
+0001796813 00000 n 
+0001831162 00000 n 
+0001830578 00000 n 
+0001864738 00000 n 
+0001830882 00000 n 
+0001877570 00000 n 
+0001863056 00000 n 
+0001892853 00000 n 
+0001831481 00000 n 
+0001798393 00000 n 
+0001796993 00000 n 
+0001831034 00000 n 
+0001831226 00000 n 
+0001831290 00000 n 
+0001830730 00000 n 
+0001831354 00000 n 
+0001831417 00000 n 
+0003386796 00000 n 
+0001863488 00000 n 
+0001890660 00000 n 
+0001890788 00000 n 
+0001863208 00000 n 
+0001863616 00000 n 
+0001833059 00000 n 
+0001831635 00000 n 
+0001863360 00000 n 
+0001863552 00000 n 
+0001912700 00000 n 
+0001890852 00000 n 
+0001864622 00000 n 
+0001863770 00000 n 
+0001890532 00000 n 
+0001912891 00000 n 
+0001892737 00000 n 
+0001891007 00000 n 
+0001912572 00000 n 
+0001912827 00000 n 
+0001915054 00000 n 
+0001914874 00000 n 
+0001913059 00000 n 
+0001914990 00000 n 
+0001916376 00000 n 
+0001916196 00000 n 
+0001915170 00000 n 
+0001916312 00000 n 
+0001918713 00000 n 
+0001919054 00000 n 
+0001918576 00000 n 
+0001916492 00000 n 
+0001918863 00000 n 
+0001918990 00000 n 
+0003386921 00000 n 
+0002536528 00000 n 
+0001921205 00000 n 
+0001921361 00000 n 
+0001921513 00000 n 
+0001921817 00000 n 
+0001922541 00000 n 
+0001921032 00000 n 
+0001919198 00000 n 
+0001921969 00000 n 
+0001922096 00000 n 
+0001922223 00000 n 
+0001922350 00000 n 
+0001921665 00000 n 
+0001922477 00000 n 
+0002538026 00000 n 
+0001924465 00000 n 
+0001924627 00000 n 
+0001924789 00000 n 
+0001924951 00000 n 
+0001925110 00000 n 
+0001925781 00000 n 
+0001924292 00000 n 
+0001922671 00000 n 
+0001925269 00000 n 
+0001925525 00000 n 
+0001925589 00000 n 
+0001925653 00000 n 
+0001925717 00000 n 
+0002542181 00000 n 
+0002543546 00000 n 
+0002545045 00000 n 
+0002546223 00000 n 
+0002547342 00000 n 
+0001927377 00000 n 
+0001927134 00000 n 
+0001925911 00000 n 
+0001927250 00000 n 
+0001927314 00000 n 
+0001928730 00000 n 
+0001928486 00000 n 
+0001927493 00000 n 
+0001928602 00000 n 
+0001928666 00000 n 
+0001930276 00000 n 
+0001929968 00000 n 
+0001928846 00000 n 
+0001930084 00000 n 
+0001930148 00000 n 
+0001930212 00000 n 
+0001931818 00000 n 
+0001932194 00000 n 
+0001931681 00000 n 
+0001930392 00000 n 
+0001932002 00000 n 
+0001932130 00000 n 
+0003387046 00000 n 
+0001934072 00000 n 
+0001934304 00000 n 
+0001933935 00000 n 
+0001932380 00000 n 
+0001934240 00000 n 
+0001935876 00000 n 
+0001939631 00000 n 
+0001936344 00000 n 
+0001935739 00000 n 
+0001934476 00000 n 
+0001936025 00000 n 
+0001936089 00000 n 
+0001936153 00000 n 
+0001936217 00000 n 
+0001936281 00000 n 
+0002548703 00000 n 
+0001939024 00000 n 
+0001939172 00000 n 
+0001941545 00000 n 
+0001939325 00000 n 
+0002021424 00000 n 
+0001939479 00000 n 
+0001939928 00000 n 
+0001938851 00000 n 
+0001936460 00000 n 
+0001939800 00000 n 
+0001939864 00000 n 
+0002548830 00000 n 
+0002019611 00000 n 
+0002095639 00000 n 
+0002189136 00000 n 
+0002096890 00000 n 
+0002019174 00000 n 
+0002019326 00000 n 
+0002190726 00000 n 
+0002277554 00000 n 
+0002095209 00000 n 
+0002019675 00000 n 
+0001941399 00000 n 
+0001940114 00000 n 
+0002019483 00000 n 
+0002018242 00000 n 
+0002275729 00000 n 
+0002353170 00000 n 
+0002354685 00000 n 
+0002095703 00000 n 
+0002021278 00000 n 
+0002019829 00000 n 
+0002095511 00000 n 
+0002095361 00000 n 
+0002433548 00000 n 
+0002275085 00000 n 
+0002189328 00000 n 
+0002096774 00000 n 
+0002095843 00000 n 
+0002189008 00000 n 
+0002189264 00000 n 
+0003387171 00000 n 
+0002188001 00000 n 
+0002434704 00000 n 
+0002275238 00000 n 
+0002275412 00000 n 
+0002275793 00000 n 
+0002190571 00000 n 
+0002189482 00000 n 
+0002275601 00000 n 
+0002274230 00000 n 
+0002526004 00000 n 
+0002353362 00000 n 
+0002277438 00000 n 
+0002275989 00000 n 
+0002353042 00000 n 
+0002352296 00000 n 
+0002433612 00000 n 
+0002354569 00000 n 
+0002353530 00000 n 
+0002433420 00000 n 
+0002432694 00000 n 
+0002526068 00000 n 
+0002434588 00000 n 
+0002433766 00000 n 
+0002525876 00000 n 
+0002528036 00000 n 
+0002527728 00000 n 
+0002526222 00000 n 
+0002527844 00000 n 
+0002532943 00000 n 
+0002533150 00000 n 
+0002530304 00000 n 
+0002529996 00000 n 
+0002528166 00000 n 
+0002530112 00000 n 
+0002530240 00000 n 
+0003387296 00000 n 
+0002533356 00000 n 
+0002533868 00000 n 
+0002532788 00000 n 
+0002530448 00000 n 
+0002533549 00000 n 
+0002533677 00000 n 
+0002533804 00000 n 
+0002535435 00000 n 
+0002535255 00000 n 
+0002534054 00000 n 
+0002535371 00000 n 
+0002536592 00000 n 
+0002536284 00000 n 
+0002535551 00000 n 
+0002536400 00000 n 
+0002538090 00000 n 
+0002537782 00000 n 
+0002536708 00000 n 
+0002537898 00000 n 
+0002539409 00000 n 
+0002538973 00000 n 
+0002538206 00000 n 
+0002539089 00000 n 
+0002540873 00000 n 
+0002540565 00000 n 
+0002539525 00000 n 
+0002540681 00000 n 
+0003387421 00000 n 
+0002542245 00000 n 
+0002541937 00000 n 
+0002540989 00000 n 
+0002542053 00000 n 
+0002543610 00000 n 
+0002543302 00000 n 
+0002542361 00000 n 
+0002543418 00000 n 
+0002545108 00000 n 
+0002544801 00000 n 
+0002543726 00000 n 
+0002544917 00000 n 
+0002546287 00000 n 
+0002545979 00000 n 
+0002545224 00000 n 
+0002546095 00000 n 
+0002547406 00000 n 
+0002547098 00000 n 
+0002546403 00000 n 
+0002547214 00000 n 
+0002548894 00000 n 
+0002548460 00000 n 
+0002547522 00000 n 
+0002548576 00000 n 
+0003387546 00000 n 
+0002553503 00000 n 
+0002551123 00000 n 
+0002550687 00000 n 
+0002549010 00000 n 
+0002550803 00000 n 
+0002551059 00000 n 
+0002553674 00000 n 
+0002553923 00000 n 
+0002553357 00000 n 
+0002551239 00000 n 
+0002553859 00000 n 
+0002556253 00000 n 
+0002556406 00000 n 
+0002556750 00000 n 
+0002556107 00000 n 
+0002554152 00000 n 
+0002556558 00000 n 
+0002556686 00000 n 
+0002733252 00000 n 
+0002735513 00000 n 
+0002559494 00000 n 
+0002558802 00000 n 
+0002556880 00000 n 
+0002558918 00000 n 
+0002559046 00000 n 
+0002559110 00000 n 
+0002559174 00000 n 
+0002559238 00000 n 
+0002559302 00000 n 
+0002559430 00000 n 
+0002562189 00000 n 
+0002561625 00000 n 
+0002559638 00000 n 
+0002561741 00000 n 
+0002561869 00000 n 
+0002561933 00000 n 
+0002561997 00000 n 
+0002562061 00000 n 
+0002562125 00000 n 
+0002564416 00000 n 
+0002564730 00000 n 
+0002564882 00000 n 
+0002566504 00000 n 
+0002595838 00000 n 
+0002565034 00000 n 
+0002565698 00000 n 
+0002564243 00000 n 
+0002562333 00000 n 
+0002565188 00000 n 
+0002565252 00000 n 
+0002565316 00000 n 
+0002565380 00000 n 
+0002565443 00000 n 
+0002564573 00000 n 
+0002565506 00000 n 
+0002565634 00000 n 
+0003387671 00000 n 
+0002620958 00000 n 
+0002594480 00000 n 
+0002620830 00000 n 
+0002623834 00000 n 
+0002594544 00000 n 
+0002566388 00000 n 
+0002565814 00000 n 
+0002594352 00000 n 
+0002621149 00000 n 
+0002595722 00000 n 
+0002594684 00000 n 
+0002620702 00000 n 
+0002621022 00000 n 
+0002621085 00000 n 
+0002624217 00000 n 
+0002623590 00000 n 
+0002621317 00000 n 
+0002623706 00000 n 
+0002623898 00000 n 
+0002623962 00000 n 
+0002624026 00000 n 
+0002624090 00000 n 
+0002624154 00000 n 
+0002626304 00000 n 
+0002626457 00000 n 
+0002631538 00000 n 
+0002627215 00000 n 
+0002626149 00000 n 
+0002624347 00000 n 
+0002626768 00000 n 
+0002626832 00000 n 
+0002626896 00000 n 
+0002627024 00000 n 
+0002626613 00000 n 
+0002627152 00000 n 
+0002630001 00000 n 
+0002654812 00000 n 
+0002630384 00000 n 
+0002629757 00000 n 
+0002627331 00000 n 
+0002629873 00000 n 
+0002630065 00000 n 
+0002630129 00000 n 
+0002630193 00000 n 
+0002630256 00000 n 
+0002630320 00000 n 
+0002655068 00000 n 
+0002631422 00000 n 
+0002630556 00000 n 
+0002654684 00000 n 
+0002654876 00000 n 
+0002654940 00000 n 
+0002655004 00000 n 
+0003387796 00000 n 
+0002657729 00000 n 
+0002659658 00000 n 
+0002673984 00000 n 
+0002658201 00000 n 
+0002657592 00000 n 
+0002655236 00000 n 
+0002657881 00000 n 
+0002657945 00000 n 
+0002658009 00000 n 
+0002658137 00000 n 
+0002674267 00000 n 
+0002675793 00000 n 
+0002674331 00000 n 
+0002659521 00000 n 
+0002658401 00000 n 
+0002674139 00000 n 
+0002690629 00000 n 
+0002690821 00000 n 
+0002675677 00000 n 
+0002674485 00000 n 
+0002690501 00000 n 
+0002690757 00000 n 
+0002693958 00000 n 
+0002693074 00000 n 
+0002690989 00000 n 
+0002693190 00000 n 
+0002693254 00000 n 
+0002693318 00000 n 
+0002693382 00000 n 
+0002693446 00000 n 
+0002693510 00000 n 
+0002693574 00000 n 
+0002693638 00000 n 
+0002693702 00000 n 
+0002693766 00000 n 
+0002693830 00000 n 
+0002693894 00000 n 
+0002696211 00000 n 
+0002696361 00000 n 
+0002698378 00000 n 
+0002714704 00000 n 
+0002697111 00000 n 
+0002696056 00000 n 
+0002694102 00000 n 
+0002696663 00000 n 
+0002696727 00000 n 
+0002696791 00000 n 
+0002696855 00000 n 
+0002696919 00000 n 
+0002696983 00000 n 
+0002696512 00000 n 
+0002697047 00000 n 
+0002713300 00000 n 
+0002730481 00000 n 
+0002713492 00000 n 
+0002698262 00000 n 
+0002697241 00000 n 
+0002713172 00000 n 
+0002713428 00000 n 
+0003387921 00000 n 
+0002730673 00000 n 
+0002714588 00000 n 
+0002713660 00000 n 
+0002730353 00000 n 
+0002730609 00000 n 
+0002732914 00000 n 
+0002733444 00000 n 
+0002732777 00000 n 
+0002730841 00000 n 
+0002733124 00000 n 
+0002733380 00000 n 
+0002735641 00000 n 
+0002735269 00000 n 
+0002733672 00000 n 
+0002735385 00000 n 
+0002735577 00000 n 
+0002738286 00000 n 
+0002738106 00000 n 
+0002735799 00000 n 
+0002738222 00000 n 
+0002740684 00000 n 
+0002740504 00000 n 
+0002738444 00000 n 
+0002740620 00000 n 
+0002742808 00000 n 
+0002742628 00000 n 
+0002740885 00000 n 
+0002742744 00000 n 
+0003388046 00000 n 
+0002744482 00000 n 
+0002745064 00000 n 
+0002744336 00000 n 
+0002742952 00000 n 
+0002744809 00000 n 
+0002744937 00000 n 
+0002744645 00000 n 
+0002745000 00000 n 
+0002747588 00000 n 
+0002747408 00000 n 
+0002745222 00000 n 
+0002747524 00000 n 
+0002749664 00000 n 
+0002749356 00000 n 
+0002747690 00000 n 
+0002749472 00000 n 
+0002749536 00000 n 
+0002749600 00000 n 
+0002752060 00000 n 
+0002751817 00000 n 
+0002749766 00000 n 
+0002751933 00000 n 
+0002751997 00000 n 
+0002754347 00000 n 
+0002754103 00000 n 
+0002752176 00000 n 
+0002754219 00000 n 
+0002754283 00000 n 
+0002756482 00000 n 
+0002756175 00000 n 
+0002754449 00000 n 
+0002756291 00000 n 
+0002756355 00000 n 
+0002756418 00000 n 
+0003388171 00000 n 
+0002758991 00000 n 
+0002758492 00000 n 
+0002756598 00000 n 
+0002758608 00000 n 
+0002758672 00000 n 
+0002758736 00000 n 
+0002758800 00000 n 
+0002758864 00000 n 
+0002758928 00000 n 
+0002761686 00000 n 
+0002761186 00000 n 
+0002759093 00000 n 
+0002761302 00000 n 
+0002761366 00000 n 
+0002761430 00000 n 
+0002761494 00000 n 
+0002761558 00000 n 
+0002761622 00000 n 
+0002764182 00000 n 
+0002763938 00000 n 
+0002761802 00000 n 
+0002764054 00000 n 
+0002764118 00000 n 
+0002766523 00000 n 
+0002766279 00000 n 
+0002764270 00000 n 
+0002766395 00000 n 
+0002766459 00000 n 
+0002769130 00000 n 
+0002768567 00000 n 
+0002766639 00000 n 
+0002768683 00000 n 
+0002768747 00000 n 
+0002768811 00000 n 
+0002768875 00000 n 
+0002768939 00000 n 
+0002769003 00000 n 
+0002769066 00000 n 
+0002771450 00000 n 
+0002771142 00000 n 
+0002769218 00000 n 
+0002771258 00000 n 
+0002771322 00000 n 
+0002771386 00000 n 
+0003388296 00000 n 
+0002773685 00000 n 
+0002773377 00000 n 
+0002771566 00000 n 
+0002773493 00000 n 
+0002773557 00000 n 
+0002773621 00000 n 
+0002776233 00000 n 
+0002776053 00000 n 
+0002773787 00000 n 
+0002776169 00000 n 
+0002778564 00000 n 
+0002778320 00000 n 
+0002776335 00000 n 
+0002778436 00000 n 
+0002778500 00000 n 
+0002780823 00000 n 
+0002780516 00000 n 
+0002778666 00000 n 
+0002780632 00000 n 
+0002780696 00000 n 
+0002780759 00000 n 
+0002782851 00000 n 
+0002782479 00000 n 
+0002780939 00000 n 
+0002782595 00000 n 
+0002782659 00000 n 
+0002782723 00000 n 
+0002782787 00000 n 
+0002784981 00000 n 
+0002784674 00000 n 
+0002782953 00000 n 
+0002784790 00000 n 
+0002784854 00000 n 
+0003388421 00000 n 
+0002786798 00000 n 
+0002786975 00000 n 
+0002787431 00000 n 
+0002786643 00000 n 
+0002785111 00000 n 
+0002787367 00000 n 
+0002787171 00000 n 
+0002787828 00000 n 
+0002787648 00000 n 
+0002787547 00000 n 
+0002787764 00000 n 
+0002789789 00000 n 
+0002790152 00000 n 
+0002789652 00000 n 
+0002787870 00000 n 
+0002789960 00000 n 
+0002790088 00000 n 
+0002792393 00000 n 
+0002792213 00000 n 
+0002790324 00000 n 
+0002792329 00000 n 
+0002794701 00000 n 
+0002794521 00000 n 
+0002792509 00000 n 
+0002794637 00000 n 
+0002796887 00000 n 
+0002796707 00000 n 
+0002794817 00000 n 
+0002796823 00000 n 
+0003388546 00000 n 
+0002798550 00000 n 
+0002798787 00000 n 
+0002798413 00000 n 
+0002797003 00000 n 
+0002798723 00000 n 
+0002799240 00000 n 
+0002799060 00000 n 
+0002798959 00000 n 
+0002799176 00000 n 
+0002802285 00000 n 
+0002802437 00000 n 
+0002802588 00000 n 
+0002802739 00000 n 
+0002802890 00000 n 
+0002803041 00000 n 
+0002803192 00000 n 
+0002803343 00000 n 
+0002803494 00000 n 
+0002803645 00000 n 
+0002803796 00000 n 
+0002803947 00000 n 
+0002804097 00000 n 
+0002804247 00000 n 
+0002804397 00000 n 
+0002804547 00000 n 
+0002804698 00000 n 
+0002804847 00000 n 
+0002804998 00000 n 
+0002805149 00000 n 
+0002805300 00000 n 
+0002805450 00000 n 
+0002805600 00000 n 
+0002805752 00000 n 
+0002805904 00000 n 
+0002806056 00000 n 
+0002806208 00000 n 
+0002806360 00000 n 
+0002806511 00000 n 
+0002806662 00000 n 
+0002806813 00000 n 
+0002806964 00000 n 
+0002807116 00000 n 
+0002807266 00000 n 
+0002807417 00000 n 
+0002807568 00000 n 
+0002807719 00000 n 
+0002807870 00000 n 
+0002808021 00000 n 
+0002808173 00000 n 
+0002808325 00000 n 
+0002808474 00000 n 
+0002808625 00000 n 
+0002808776 00000 n 
+0002808927 00000 n 
+0002809078 00000 n 
+0002809228 00000 n 
+0002809380 00000 n 
+0002809532 00000 n 
+0002809683 00000 n 
+0002809835 00000 n 
+0002809987 00000 n 
+0002810139 00000 n 
+0002810291 00000 n 
+0002810443 00000 n 
+0002810594 00000 n 
+0002810745 00000 n 
+0002810895 00000 n 
+0002811045 00000 n 
+0002811195 00000 n 
+0002811346 00000 n 
+0002811497 00000 n 
+0002811647 00000 n 
+0002811798 00000 n 
+0002811949 00000 n 
+0002812100 00000 n 
+0002812251 00000 n 
+0002812402 00000 n 
+0002812553 00000 n 
+0002812705 00000 n 
+0002812857 00000 n 
+0002813009 00000 n 
+0002813161 00000 n 
+0002813312 00000 n 
+0002813464 00000 n 
+0002813615 00000 n 
+0002813765 00000 n 
+0002813917 00000 n 
+0002814069 00000 n 
+0002814221 00000 n 
+0002814373 00000 n 
+0002814525 00000 n 
+0002814676 00000 n 
+0002814827 00000 n 
+0002814978 00000 n 
+0002815130 00000 n 
+0002815281 00000 n 
+0002815433 00000 n 
+0002815585 00000 n 
+0002815737 00000 n 
+0002815888 00000 n 
+0002816039 00000 n 
+0002816191 00000 n 
+0002816342 00000 n 
+0002816492 00000 n 
+0002816643 00000 n 
+0002816795 00000 n 
+0002816947 00000 n 
+0002817099 00000 n 
+0002817248 00000 n 
+0002817400 00000 n 
+0002817551 00000 n 
+0002817702 00000 n 
+0002817854 00000 n 
+0002818004 00000 n 
+0002818156 00000 n 
+0002818308 00000 n 
+0002818459 00000 n 
+0002818610 00000 n 
+0002818762 00000 n 
+0002818913 00000 n 
+0002819064 00000 n 
+0002819215 00000 n 
+0002819365 00000 n 
+0002819517 00000 n 
+0002819669 00000 n 
+0002819821 00000 n 
+0002819973 00000 n 
+0002820124 00000 n 
+0002820276 00000 n 
+0002820428 00000 n 
+0002820580 00000 n 
+0002820732 00000 n 
+0002820883 00000 n 
+0002821034 00000 n 
+0002821185 00000 n 
+0002821336 00000 n 
+0002821488 00000 n 
+0002821639 00000 n 
+0002821791 00000 n 
+0002821942 00000 n 
+0002822094 00000 n 
+0002822242 00000 n 
+0002822394 00000 n 
+0002822545 00000 n 
+0002822697 00000 n 
+0002822849 00000 n 
+0002823001 00000 n 
+0002823153 00000 n 
+0002823305 00000 n 
+0002823456 00000 n 
+0002823607 00000 n 
+0002823758 00000 n 
+0002823910 00000 n 
+0002824062 00000 n 
+0002827338 00000 n 
+0002827490 00000 n 
+0002827642 00000 n 
+0002824278 00000 n 
+0002800852 00000 n 
+0002799282 00000 n 
+0002824214 00000 n 
+0002827794 00000 n 
+0002827946 00000 n 
+0002828097 00000 n 
+0002828249 00000 n 
+0002828400 00000 n 
+0002828550 00000 n 
+0002828699 00000 n 
+0002828849 00000 n 
+0002828999 00000 n 
+0002829149 00000 n 
+0002829299 00000 n 
+0002829449 00000 n 
+0002829599 00000 n 
+0002829749 00000 n 
+0002829899 00000 n 
+0002830050 00000 n 
+0002830202 00000 n 
+0002830354 00000 n 
+0002830506 00000 n 
+0002830657 00000 n 
+0002830808 00000 n 
+0002830959 00000 n 
+0002831110 00000 n 
+0002831261 00000 n 
+0002831413 00000 n 
+0002831564 00000 n 
+0002831716 00000 n 
+0002831866 00000 n 
+0002832018 00000 n 
+0002832170 00000 n 
+0002832322 00000 n 
+0002832474 00000 n 
+0002832626 00000 n 
+0002832777 00000 n 
+0002832928 00000 n 
+0002833079 00000 n 
+0002833230 00000 n 
+0002833382 00000 n 
+0002833534 00000 n 
+0002833686 00000 n 
+0002833837 00000 n 
+0002833988 00000 n 
+0002834140 00000 n 
+0002834292 00000 n 
+0002834443 00000 n 
+0002834594 00000 n 
+0002834745 00000 n 
+0002834896 00000 n 
+0002835048 00000 n 
+0002835199 00000 n 
+0002835350 00000 n 
+0002835501 00000 n 
+0002835651 00000 n 
+0002835801 00000 n 
+0002835953 00000 n 
+0002836103 00000 n 
+0002836255 00000 n 
+0002836406 00000 n 
+0002836558 00000 n 
+0002836709 00000 n 
+0002836861 00000 n 
+0002837013 00000 n 
+0002837164 00000 n 
+0002837315 00000 n 
+0002837467 00000 n 
+0002837617 00000 n 
+0002837768 00000 n 
+0002837918 00000 n 
+0002838070 00000 n 
+0002838221 00000 n 
+0002838372 00000 n 
+0002838523 00000 n 
+0002838674 00000 n 
+0002838826 00000 n 
+0002838978 00000 n 
+0002839130 00000 n 
+0002839280 00000 n 
+0002839431 00000 n 
+0002839583 00000 n 
+0002839735 00000 n 
+0002839887 00000 n 
+0002840037 00000 n 
+0002840188 00000 n 
+0002840340 00000 n 
+0002840491 00000 n 
+0002840642 00000 n 
+0002840794 00000 n 
+0002840946 00000 n 
+0002841098 00000 n 
+0002841250 00000 n 
+0002841402 00000 n 
+0002841554 00000 n 
+0002841706 00000 n 
+0002841858 00000 n 
+0002842010 00000 n 
+0002842161 00000 n 
+0002842313 00000 n 
+0002842465 00000 n 
+0002842617 00000 n 
+0002842769 00000 n 
+0002842919 00000 n 
+0002843071 00000 n 
+0002843223 00000 n 
+0002843375 00000 n 
+0002843527 00000 n 
+0002843679 00000 n 
+0002843831 00000 n 
+0002843982 00000 n 
+0002844134 00000 n 
+0002844286 00000 n 
+0002844437 00000 n 
+0002844589 00000 n 
+0002844741 00000 n 
+0002844893 00000 n 
+0002845045 00000 n 
+0002845195 00000 n 
+0002845346 00000 n 
+0002845498 00000 n 
+0002845650 00000 n 
+0002845802 00000 n 
+0002845953 00000 n 
+0002846104 00000 n 
+0002846255 00000 n 
+0002846406 00000 n 
+0002846558 00000 n 
+0002846710 00000 n 
+0002846861 00000 n 
+0002847012 00000 n 
+0002847164 00000 n 
+0002850026 00000 n 
+0002850178 00000 n 
+0002847379 00000 n 
+0002826022 00000 n 
+0002824394 00000 n 
+0002847315 00000 n 
+0002850329 00000 n 
+0002850481 00000 n 
+0002850633 00000 n 
+0002850784 00000 n 
+0002850936 00000 n 
+0002851088 00000 n 
+0002851240 00000 n 
+0002851392 00000 n 
+0002851544 00000 n 
+0002851696 00000 n 
+0002851848 00000 n 
+0002852000 00000 n 
+0002852151 00000 n 
+0002852302 00000 n 
+0002852453 00000 n 
+0002852605 00000 n 
+0002852757 00000 n 
+0002852909 00000 n 
+0002853061 00000 n 
+0002853212 00000 n 
+0002853364 00000 n 
+0002853515 00000 n 
+0002853666 00000 n 
+0002853818 00000 n 
+0002853970 00000 n 
+0002854120 00000 n 
+0002854270 00000 n 
+0002854421 00000 n 
+0002854570 00000 n 
+0002854722 00000 n 
+0002854872 00000 n 
+0002855022 00000 n 
+0002855172 00000 n 
+0002855323 00000 n 
+0002855473 00000 n 
+0002855624 00000 n 
+0002855776 00000 n 
+0002855928 00000 n 
+0002856080 00000 n 
+0002856231 00000 n 
+0002856383 00000 n 
+0002856535 00000 n 
+0002856687 00000 n 
+0002856839 00000 n 
+0002856991 00000 n 
+0002857143 00000 n 
+0002857295 00000 n 
+0002857447 00000 n 
+0002857599 00000 n 
+0002857750 00000 n 
+0002857902 00000 n 
+0002858053 00000 n 
+0002858204 00000 n 
+0002858356 00000 n 
+0002858507 00000 n 
+0002858658 00000 n 
+0002858809 00000 n 
+0002858960 00000 n 
+0002859108 00000 n 
+0002859256 00000 n 
+0002859408 00000 n 
+0002859560 00000 n 
+0002859712 00000 n 
+0002859864 00000 n 
+0002860016 00000 n 
+0002860168 00000 n 
+0002860320 00000 n 
+0002860472 00000 n 
+0002860624 00000 n 
+0002860776 00000 n 
+0002860928 00000 n 
+0002861079 00000 n 
+0002861230 00000 n 
+0002861381 00000 n 
+0002861533 00000 n 
+0002861685 00000 n 
+0002861837 00000 n 
+0002861988 00000 n 
+0002862140 00000 n 
+0002862290 00000 n 
+0002862442 00000 n 
+0002862594 00000 n 
+0002862746 00000 n 
+0002862897 00000 n 
+0002863047 00000 n 
+0002863199 00000 n 
+0002863351 00000 n 
+0002863503 00000 n 
+0002863654 00000 n 
+0002863804 00000 n 
+0002863956 00000 n 
+0002864108 00000 n 
+0002864260 00000 n 
+0002864412 00000 n 
+0002864564 00000 n 
+0002864716 00000 n 
+0002864867 00000 n 
+0002865019 00000 n 
+0002865171 00000 n 
+0002868257 00000 n 
+0002868408 00000 n 
+0002865387 00000 n 
+0002848989 00000 n 
+0002847495 00000 n 
+0002865323 00000 n 
+0002868560 00000 n 
+0002868710 00000 n 
+0002868862 00000 n 
+0002869012 00000 n 
+0002869161 00000 n 
+0002869311 00000 n 
+0002869460 00000 n 
+0002869610 00000 n 
+0002869760 00000 n 
+0002869911 00000 n 
+0002870062 00000 n 
+0002870213 00000 n 
+0002870364 00000 n 
+0002870514 00000 n 
+0002870665 00000 n 
+0002870816 00000 n 
+0002870966 00000 n 
+0002871116 00000 n 
+0002871268 00000 n 
+0002871420 00000 n 
+0002871570 00000 n 
+0002871720 00000 n 
+0002871871 00000 n 
+0002872022 00000 n 
+0002872174 00000 n 
+0002872326 00000 n 
+0002872477 00000 n 
+0002872627 00000 n 
+0002872779 00000 n 
+0002872931 00000 n 
+0002873082 00000 n 
+0002873233 00000 n 
+0002873384 00000 n 
+0002873535 00000 n 
+0002873687 00000 n 
+0002873839 00000 n 
+0002873991 00000 n 
+0002874143 00000 n 
+0002874295 00000 n 
+0002874446 00000 n 
+0002874598 00000 n 
+0002874750 00000 n 
+0002874901 00000 n 
+0002875053 00000 n 
+0002875205 00000 n 
+0002875355 00000 n 
+0002875505 00000 n 
+0002875655 00000 n 
+0002875807 00000 n 
+0002875958 00000 n 
+0002876110 00000 n 
+0002876261 00000 n 
+0002876412 00000 n 
+0002876564 00000 n 
+0002876716 00000 n 
+0002876868 00000 n 
+0002877019 00000 n 
+0002877171 00000 n 
+0002877323 00000 n 
+0002877475 00000 n 
+0002877625 00000 n 
+0002877776 00000 n 
+0002877926 00000 n 
+0002878077 00000 n 
+0002878229 00000 n 
+0002878381 00000 n 
+0002878533 00000 n 
+0002878685 00000 n 
+0002878837 00000 n 
+0002878989 00000 n 
+0002879138 00000 n 
+0002879288 00000 n 
+0002879440 00000 n 
+0002879592 00000 n 
+0002879743 00000 n 
+0002879893 00000 n 
+0002880044 00000 n 
+0002880195 00000 n 
+0002880346 00000 n 
+0002880498 00000 n 
+0002880650 00000 n 
+0002880802 00000 n 
+0002880954 00000 n 
+0002881104 00000 n 
+0002881255 00000 n 
+0002881406 00000 n 
+0002881557 00000 n 
+0002881708 00000 n 
+0002881859 00000 n 
+0002882011 00000 n 
+0002882162 00000 n 
+0002882314 00000 n 
+0002882466 00000 n 
+0002882618 00000 n 
+0002882769 00000 n 
+0002882921 00000 n 
+0002883073 00000 n 
+0002883225 00000 n 
+0002883377 00000 n 
+0002883528 00000 n 
+0002883678 00000 n 
+0002883830 00000 n 
+0002883982 00000 n 
+0002884134 00000 n 
+0002884286 00000 n 
+0002884438 00000 n 
+0002884589 00000 n 
+0002884741 00000 n 
+0002884892 00000 n 
+0002885043 00000 n 
+0002885194 00000 n 
+0002885345 00000 n 
+0002885497 00000 n 
+0002885649 00000 n 
+0002885801 00000 n 
+0002885953 00000 n 
+0002886104 00000 n 
+0002886256 00000 n 
+0002886407 00000 n 
+0002886559 00000 n 
+0002886711 00000 n 
+0002889440 00000 n 
+0002886927 00000 n 
+0002867022 00000 n 
+0002865503 00000 n 
+0002886863 00000 n 
+0003388671 00000 n 
+0002889592 00000 n 
+0002889744 00000 n 
+0002889896 00000 n 
+0002890046 00000 n 
+0002890197 00000 n 
+0002890347 00000 n 
+0002890496 00000 n 
+0002890645 00000 n 
+0002890796 00000 n 
+0002890946 00000 n 
+0002891097 00000 n 
+0002891249 00000 n 
+0002891401 00000 n 
+0002891553 00000 n 
+0002891705 00000 n 
+0002891857 00000 n 
+0002892009 00000 n 
+0002892160 00000 n 
+0002892312 00000 n 
+0002892464 00000 n 
+0002892616 00000 n 
+0002892768 00000 n 
+0002892919 00000 n 
+0002893070 00000 n 
+0002893221 00000 n 
+0002893372 00000 n 
+0002893524 00000 n 
+0002893676 00000 n 
+0002893828 00000 n 
+0002893980 00000 n 
+0002894132 00000 n 
+0002894284 00000 n 
+0002894435 00000 n 
+0002894587 00000 n 
+0002894737 00000 n 
+0002894886 00000 n 
+0002895038 00000 n 
+0002895190 00000 n 
+0002895341 00000 n 
+0002895492 00000 n 
+0002895644 00000 n 
+0002895796 00000 n 
+0002895948 00000 n 
+0002896100 00000 n 
+0002896252 00000 n 
+0002896404 00000 n 
+0002896556 00000 n 
+0002896708 00000 n 
+0002896860 00000 n 
+0002897012 00000 n 
+0002897161 00000 n 
+0002897310 00000 n 
+0002897462 00000 n 
+0002897613 00000 n 
+0002897765 00000 n 
+0002897917 00000 n 
+0002898069 00000 n 
+0002898220 00000 n 
+0002898372 00000 n 
+0002898524 00000 n 
+0002898676 00000 n 
+0002898828 00000 n 
+0002898980 00000 n 
+0002899132 00000 n 
+0002899284 00000 n 
+0002899436 00000 n 
+0002899587 00000 n 
+0002899739 00000 n 
+0002899891 00000 n 
+0002900042 00000 n 
+0002900193 00000 n 
+0002900344 00000 n 
+0002900495 00000 n 
+0002900647 00000 n 
+0002900799 00000 n 
+0002900950 00000 n 
+0002901101 00000 n 
+0002901252 00000 n 
+0002901402 00000 n 
+0002901553 00000 n 
+0002901705 00000 n 
+0002901857 00000 n 
+0002902008 00000 n 
+0002902160 00000 n 
+0002902311 00000 n 
+0002902463 00000 n 
+0002902614 00000 n 
+0002902766 00000 n 
+0002902918 00000 n 
+0002903070 00000 n 
+0002903221 00000 n 
+0002906069 00000 n 
+0002903437 00000 n 
+0002888484 00000 n 
+0002887043 00000 n 
+0002903373 00000 n 
+0002906219 00000 n 
+0002906371 00000 n 
+0002906523 00000 n 
+0002906675 00000 n 
+0002906826 00000 n 
+0002906976 00000 n 
+0002907128 00000 n 
+0002907279 00000 n 
+0002907430 00000 n 
+0002907582 00000 n 
+0002907734 00000 n 
+0002907885 00000 n 
+0002908037 00000 n 
+0002908189 00000 n 
+0002908341 00000 n 
+0002908490 00000 n 
+0002908642 00000 n 
+0002908794 00000 n 
+0002908945 00000 n 
+0002909097 00000 n 
+0002909249 00000 n 
+0002909401 00000 n 
+0002909552 00000 n 
+0002909702 00000 n 
+0002909854 00000 n 
+0002910005 00000 n 
+0002910156 00000 n 
+0002910305 00000 n 
+0002910456 00000 n 
+0002910608 00000 n 
+0002910758 00000 n 
+0002910910 00000 n 
+0002911061 00000 n 
+0002911211 00000 n 
+0002911362 00000 n 
+0002911514 00000 n 
+0002911666 00000 n 
+0002911818 00000 n 
+0002911970 00000 n 
+0002912121 00000 n 
+0002912273 00000 n 
+0002912425 00000 n 
+0002912576 00000 n 
+0002912727 00000 n 
+0002912878 00000 n 
+0002913030 00000 n 
+0002913181 00000 n 
+0002913333 00000 n 
+0002913485 00000 n 
+0002913637 00000 n 
+0002913788 00000 n 
+0002913939 00000 n 
+0002914091 00000 n 
+0002914243 00000 n 
+0002914395 00000 n 
+0002914547 00000 n 
+0002914699 00000 n 
+0002914851 00000 n 
+0002915003 00000 n 
+0002915155 00000 n 
+0002915307 00000 n 
+0002915459 00000 n 
+0002915611 00000 n 
+0002915763 00000 n 
+0002915915 00000 n 
+0002916065 00000 n 
+0002916217 00000 n 
+0002916368 00000 n 
+0002916519 00000 n 
+0002916670 00000 n 
+0002916822 00000 n 
+0002916974 00000 n 
+0002917126 00000 n 
+0002917278 00000 n 
+0002917430 00000 n 
+0002917582 00000 n 
+0002917734 00000 n 
+0002917886 00000 n 
+0002918038 00000 n 
+0002918189 00000 n 
+0002918340 00000 n 
+0002918491 00000 n 
+0002918642 00000 n 
+0002918792 00000 n 
+0002918944 00000 n 
+0002919095 00000 n 
+0002919246 00000 n 
+0002919396 00000 n 
+0002919547 00000 n 
+0002919697 00000 n 
+0002919848 00000 n 
+0002919999 00000 n 
+0002920150 00000 n 
+0002920302 00000 n 
+0002920454 00000 n 
+0002920606 00000 n 
+0002920758 00000 n 
+0002920910 00000 n 
+0002921062 00000 n 
+0002921214 00000 n 
+0002921364 00000 n 
+0002921515 00000 n 
+0002921666 00000 n 
+0002921817 00000 n 
+0002921969 00000 n 
+0002922121 00000 n 
+0002925206 00000 n 
+0002925357 00000 n 
+0002922337 00000 n 
+0002904978 00000 n 
+0002903553 00000 n 
+0002922273 00000 n 
+0002925508 00000 n 
+0002925660 00000 n 
+0002925811 00000 n 
+0002925962 00000 n 
+0002926113 00000 n 
+0002926265 00000 n 
+0002926415 00000 n 
+0002926567 00000 n 
+0002926719 00000 n 
+0002926871 00000 n 
+0002927023 00000 n 
+0002927174 00000 n 
+0002927325 00000 n 
+0002927477 00000 n 
+0002927629 00000 n 
+0002927781 00000 n 
+0002927932 00000 n 
+0002928083 00000 n 
+0002928235 00000 n 
+0002928386 00000 n 
+0002928538 00000 n 
+0002928690 00000 n 
+0002928841 00000 n 
+0002928993 00000 n 
+0002929145 00000 n 
+0002929296 00000 n 
+0002929448 00000 n 
+0002929600 00000 n 
+0002929750 00000 n 
+0002929902 00000 n 
+0002930054 00000 n 
+0002930206 00000 n 
+0002930358 00000 n 
+0002930510 00000 n 
+0002930662 00000 n 
+0002930814 00000 n 
+0002930965 00000 n 
+0002931117 00000 n 
+0002931269 00000 n 
+0002931421 00000 n 
+0002931573 00000 n 
+0002931725 00000 n 
+0002931877 00000 n 
+0002932028 00000 n 
+0002932178 00000 n 
+0002932330 00000 n 
+0002932482 00000 n 
+0002932634 00000 n 
+0002932786 00000 n 
+0002932938 00000 n 
+0002933090 00000 n 
+0002933242 00000 n 
+0002933394 00000 n 
+0002933546 00000 n 
+0002933698 00000 n 
+0002933850 00000 n 
+0002934001 00000 n 
+0002934153 00000 n 
+0002934305 00000 n 
+0002934457 00000 n 
+0002934609 00000 n 
+0002934761 00000 n 
+0002934913 00000 n 
+0002935065 00000 n 
+0002935215 00000 n 
+0002935366 00000 n 
+0002935518 00000 n 
+0002935670 00000 n 
+0002935821 00000 n 
+0002935970 00000 n 
+0002936121 00000 n 
+0002936272 00000 n 
+0002936424 00000 n 
+0002936576 00000 n 
+0002936727 00000 n 
+0002936879 00000 n 
+0002937029 00000 n 
+0002937180 00000 n 
+0002937331 00000 n 
+0002937483 00000 n 
+0002937635 00000 n 
+0002937787 00000 n 
+0002937939 00000 n 
+0002938091 00000 n 
+0002938243 00000 n 
+0002938395 00000 n 
+0002938547 00000 n 
+0002938698 00000 n 
+0002938849 00000 n 
+0002939001 00000 n 
+0002939151 00000 n 
+0002939302 00000 n 
+0002939454 00000 n 
+0002939606 00000 n 
+0002939756 00000 n 
+0002939907 00000 n 
+0002940059 00000 n 
+0002940210 00000 n 
+0002940359 00000 n 
+0002940510 00000 n 
+0002940659 00000 n 
+0002940810 00000 n 
+0002940962 00000 n 
+0002941114 00000 n 
+0002941266 00000 n 
+0002941417 00000 n 
+0002941568 00000 n 
+0002941719 00000 n 
+0002941870 00000 n 
+0002942020 00000 n 
+0002942170 00000 n 
+0002942319 00000 n 
+0002942470 00000 n 
+0002942621 00000 n 
+0002942772 00000 n 
+0002942924 00000 n 
+0002946037 00000 n 
+0002943139 00000 n 
+0002924016 00000 n 
+0002922453 00000 n 
+0002943075 00000 n 
+0002946189 00000 n 
+0002946340 00000 n 
+0002946492 00000 n 
+0002946644 00000 n 
+0002946796 00000 n 
+0002946948 00000 n 
+0002947098 00000 n 
+0002947250 00000 n 
+0002947402 00000 n 
+0002947554 00000 n 
+0002947705 00000 n 
+0002947857 00000 n 
+0002948009 00000 n 
+0002948161 00000 n 
+0002948313 00000 n 
+0002948465 00000 n 
+0002948616 00000 n 
+0002948767 00000 n 
+0002948919 00000 n 
+0002949071 00000 n 
+0002949222 00000 n 
+0002949374 00000 n 
+0002949526 00000 n 
+0002949678 00000 n 
+0002949829 00000 n 
+0002949980 00000 n 
+0002950132 00000 n 
+0002950284 00000 n 
+0002950436 00000 n 
+0002950587 00000 n 
+0002950738 00000 n 
+0002950890 00000 n 
+0002951040 00000 n 
+0002951191 00000 n 
+0002951342 00000 n 
+0002951493 00000 n 
+0002951643 00000 n 
+0002951793 00000 n 
+0002951943 00000 n 
+0002952094 00000 n 
+0002952245 00000 n 
+0002952396 00000 n 
+0002952547 00000 n 
+0002952698 00000 n 
+0002952849 00000 n 
+0002952998 00000 n 
+0002953150 00000 n 
+0002953302 00000 n 
+0002953454 00000 n 
+0002953606 00000 n 
+0002953758 00000 n 
+0002953910 00000 n 
+0002954062 00000 n 
+0002954214 00000 n 
+0002954365 00000 n 
+0002954517 00000 n 
+0002954668 00000 n 
+0002954820 00000 n 
+0002954970 00000 n 
+0002955122 00000 n 
+0002955273 00000 n 
+0002955425 00000 n 
+0002955577 00000 n 
+0002955729 00000 n 
+0002955881 00000 n 
+0002956032 00000 n 
+0002956184 00000 n 
+0002956336 00000 n 
+0002956487 00000 n 
+0002956638 00000 n 
+0002956786 00000 n 
+0002956934 00000 n 
+0002957083 00000 n 
+0002957232 00000 n 
+0002957381 00000 n 
+0002957530 00000 n 
+0002957679 00000 n 
+0002957831 00000 n 
+0002957982 00000 n 
+0002958134 00000 n 
+0002958286 00000 n 
+0002958438 00000 n 
+0002958590 00000 n 
+0002958742 00000 n 
+0002958894 00000 n 
+0002959045 00000 n 
+0002959197 00000 n 
+0002959349 00000 n 
+0002959501 00000 n 
+0002959652 00000 n 
+0002959803 00000 n 
+0002959954 00000 n 
+0002960104 00000 n 
+0002960256 00000 n 
+0002960407 00000 n 
+0002960559 00000 n 
+0002960711 00000 n 
+0002960863 00000 n 
+0002961015 00000 n 
+0002961167 00000 n 
+0002961319 00000 n 
+0002961469 00000 n 
+0002961620 00000 n 
+0002961770 00000 n 
+0002961922 00000 n 
+0002962074 00000 n 
+0002962225 00000 n 
+0002962375 00000 n 
+0002962526 00000 n 
+0002962677 00000 n 
+0002962828 00000 n 
+0002962979 00000 n 
+0002963130 00000 n 
+0002963281 00000 n 
+0002963432 00000 n 
+0002963583 00000 n 
+0002966470 00000 n 
+0002963799 00000 n 
+0002944856 00000 n 
+0002943241 00000 n 
+0002963735 00000 n 
+0002966622 00000 n 
+0002966774 00000 n 
+0002966924 00000 n 
+0002967076 00000 n 
+0002967228 00000 n 
+0002967379 00000 n 
+0002967530 00000 n 
+0002967681 00000 n 
+0002967832 00000 n 
+0002967984 00000 n 
+0002968135 00000 n 
+0002968287 00000 n 
+0002968439 00000 n 
+0002968591 00000 n 
+0002968742 00000 n 
+0002968894 00000 n 
+0002969046 00000 n 
+0002969198 00000 n 
+0002969350 00000 n 
+0002969502 00000 n 
+0002969654 00000 n 
+0002969806 00000 n 
+0002969958 00000 n 
+0002970109 00000 n 
+0002970260 00000 n 
+0002970411 00000 n 
+0002970563 00000 n 
+0002970714 00000 n 
+0002970865 00000 n 
+0002971016 00000 n 
+0002971167 00000 n 
+0002971317 00000 n 
+0002971468 00000 n 
+0002971618 00000 n 
+0002971770 00000 n 
+0002971919 00000 n 
+0002972070 00000 n 
+0002972221 00000 n 
+0002972371 00000 n 
+0002972523 00000 n 
+0002972674 00000 n 
+0002972826 00000 n 
+0002972978 00000 n 
+0002973130 00000 n 
+0002973281 00000 n 
+0002973433 00000 n 
+0002973585 00000 n 
+0002973736 00000 n 
+0002973887 00000 n 
+0002974038 00000 n 
+0002974189 00000 n 
+0002974341 00000 n 
+0002974493 00000 n 
+0002974645 00000 n 
+0002974797 00000 n 
+0002974949 00000 n 
+0002975100 00000 n 
+0002975251 00000 n 
+0002975402 00000 n 
+0002975553 00000 n 
+0002975705 00000 n 
+0002975856 00000 n 
+0002976007 00000 n 
+0002976159 00000 n 
+0002976311 00000 n 
+0002976463 00000 n 
+0002976615 00000 n 
+0002976767 00000 n 
+0002976919 00000 n 
+0002977071 00000 n 
+0002977223 00000 n 
+0002977375 00000 n 
+0002977527 00000 n 
+0002977679 00000 n 
+0002977831 00000 n 
+0002977982 00000 n 
+0002978134 00000 n 
+0002978286 00000 n 
+0002978438 00000 n 
+0002978590 00000 n 
+0002978740 00000 n 
+0002978892 00000 n 
+0002979043 00000 n 
+0002979195 00000 n 
+0002979346 00000 n 
+0002979498 00000 n 
+0002979649 00000 n 
+0002979801 00000 n 
+0002979952 00000 n 
+0002980104 00000 n 
+0002980254 00000 n 
+0002980406 00000 n 
+0002980558 00000 n 
+0002980710 00000 n 
+0002980860 00000 n 
+0002981012 00000 n 
+0002981162 00000 n 
+0002981313 00000 n 
+0002981465 00000 n 
+0002984167 00000 n 
+0002984318 00000 n 
+0002981681 00000 n 
+0002965442 00000 n 
+0002963915 00000 n 
+0002981617 00000 n 
+0002984470 00000 n 
+0002984621 00000 n 
+0002984772 00000 n 
+0002984922 00000 n 
+0002985073 00000 n 
+0002985223 00000 n 
+0002985374 00000 n 
+0002985525 00000 n 
+0002985676 00000 n 
+0002985827 00000 n 
+0002985979 00000 n 
+0002986131 00000 n 
+0002986283 00000 n 
+0002986434 00000 n 
+0002986586 00000 n 
+0002986737 00000 n 
+0002986888 00000 n 
+0002987040 00000 n 
+0002987191 00000 n 
+0002987341 00000 n 
+0002987491 00000 n 
+0002987641 00000 n 
+0002987792 00000 n 
+0002987943 00000 n 
+0002988094 00000 n 
+0002988245 00000 n 
+0002988396 00000 n 
+0002988547 00000 n 
+0002988699 00000 n 
+0002988851 00000 n 
+0002989003 00000 n 
+0002989155 00000 n 
+0002989307 00000 n 
+0002989459 00000 n 
+0002989611 00000 n 
+0002989763 00000 n 
+0002989915 00000 n 
+0002990067 00000 n 
+0002990218 00000 n 
+0002990370 00000 n 
+0002990521 00000 n 
+0002990671 00000 n 
+0002990823 00000 n 
+0002990975 00000 n 
+0002991127 00000 n 
+0002991278 00000 n 
+0002991429 00000 n 
+0002991581 00000 n 
+0002991733 00000 n 
+0002991884 00000 n 
+0002992034 00000 n 
+0002992186 00000 n 
+0002992338 00000 n 
+0002992488 00000 n 
+0002992640 00000 n 
+0002992792 00000 n 
+0002992943 00000 n 
+0002993093 00000 n 
+0002993245 00000 n 
+0002993397 00000 n 
+0002993549 00000 n 
+0002993699 00000 n 
+0002993848 00000 n 
+0002994000 00000 n 
+0002994152 00000 n 
+0002994304 00000 n 
+0002994456 00000 n 
+0002994608 00000 n 
+0002994760 00000 n 
+0002994910 00000 n 
+0002995062 00000 n 
+0002995213 00000 n 
+0002995365 00000 n 
+0002995516 00000 n 
+0002995666 00000 n 
+0002995817 00000 n 
+0002995969 00000 n 
+0002996121 00000 n 
+0002996273 00000 n 
+0002996424 00000 n 
+0002996576 00000 n 
+0002996728 00000 n 
+0002996880 00000 n 
+0002997029 00000 n 
+0002997181 00000 n 
+0002997333 00000 n 
+0002997484 00000 n 
+0002997634 00000 n 
+0002997786 00000 n 
+0002997937 00000 n 
+0002998088 00000 n 
+0002998239 00000 n 
+0002998455 00000 n 
+0002983193 00000 n 
+0002981797 00000 n 
+0002998391 00000 n 
+0003388796 00000 n 
+0003001779 00000 n 
+0003001929 00000 n 
+0003002081 00000 n 
+0003002232 00000 n 
+0003002383 00000 n 
+0003002535 00000 n 
+0003002686 00000 n 
+0003002838 00000 n 
+0003002989 00000 n 
+0003003140 00000 n 
+0003003291 00000 n 
+0003003443 00000 n 
+0003003595 00000 n 
+0003003747 00000 n 
+0003003899 00000 n 
+0003004051 00000 n 
+0003004203 00000 n 
+0003004354 00000 n 
+0003004506 00000 n 
+0003004658 00000 n 
+0003004809 00000 n 
+0003004959 00000 n 
+0003005110 00000 n 
+0003005262 00000 n 
+0003005414 00000 n 
+0003005566 00000 n 
+0003005718 00000 n 
+0003005869 00000 n 
+0003006019 00000 n 
+0003006171 00000 n 
+0003006323 00000 n 
+0003006475 00000 n 
+0003006627 00000 n 
+0003006779 00000 n 
+0003006931 00000 n 
+0003007083 00000 n 
+0003007235 00000 n 
+0003007387 00000 n 
+0003007539 00000 n 
+0003007691 00000 n 
+0003007843 00000 n 
+0003007995 00000 n 
+0003008147 00000 n 
+0003008299 00000 n 
+0003008451 00000 n 
+0003008603 00000 n 
+0003008755 00000 n 
+0003008907 00000 n 
+0003009059 00000 n 
+0003009210 00000 n 
+0003009361 00000 n 
+0003009512 00000 n 
+0003009664 00000 n 
+0003009816 00000 n 
+0003009966 00000 n 
+0003010118 00000 n 
+0003010270 00000 n 
+0003010422 00000 n 
+0003010574 00000 n 
+0003010726 00000 n 
+0003010878 00000 n 
+0003011029 00000 n 
+0003011180 00000 n 
+0003011330 00000 n 
+0003011481 00000 n 
+0003011632 00000 n 
+0003011784 00000 n 
+0003011936 00000 n 
+0003012088 00000 n 
+0003012236 00000 n 
+0003012386 00000 n 
+0003012538 00000 n 
+0003012690 00000 n 
+0003012842 00000 n 
+0003012993 00000 n 
+0003013145 00000 n 
+0003013297 00000 n 
+0003013449 00000 n 
+0003013601 00000 n 
+0003013753 00000 n 
+0003013905 00000 n 
+0003014057 00000 n 
+0003014209 00000 n 
+0003014361 00000 n 
+0003014513 00000 n 
+0003014664 00000 n 
+0003014816 00000 n 
+0003014963 00000 n 
+0003015115 00000 n 
+0003015267 00000 n 
+0003015415 00000 n 
+0003015565 00000 n 
+0003015717 00000 n 
+0003015868 00000 n 
+0003016020 00000 n 
+0003016172 00000 n 
+0003016324 00000 n 
+0003016475 00000 n 
+0003016626 00000 n 
+0003016777 00000 n 
+0003016929 00000 n 
+0003017079 00000 n 
+0003017229 00000 n 
+0003017381 00000 n 
+0003017533 00000 n 
+0003017685 00000 n 
+0003017837 00000 n 
+0003017989 00000 n 
+0003018140 00000 n 
+0003018290 00000 n 
+0003018441 00000 n 
+0003018593 00000 n 
+0003018745 00000 n 
+0003018897 00000 n 
+0003019048 00000 n 
+0003019199 00000 n 
+0003019351 00000 n 
+0003019503 00000 n 
+0003019655 00000 n 
+0003019807 00000 n 
+0003019959 00000 n 
+0003020111 00000 n 
+0003020263 00000 n 
+0003020414 00000 n 
+0003020566 00000 n 
+0003020717 00000 n 
+0003020869 00000 n 
+0003021021 00000 n 
+0003021171 00000 n 
+0003021323 00000 n 
+0003021475 00000 n 
+0003021627 00000 n 
+0003021779 00000 n 
+0003021931 00000 n 
+0003022083 00000 n 
+0003022234 00000 n 
+0003022384 00000 n 
+0003022534 00000 n 
+0003022684 00000 n 
+0003022836 00000 n 
+0003022988 00000 n 
+0003023138 00000 n 
+0003023289 00000 n 
+0003023504 00000 n 
+0003000364 00000 n 
+0002998571 00000 n 
+0003023440 00000 n 
+0003026429 00000 n 
+0003026580 00000 n 
+0003026731 00000 n 
+0003026883 00000 n 
+0003027034 00000 n 
+0003027186 00000 n 
+0003027337 00000 n 
+0003027488 00000 n 
+0003027637 00000 n 
+0003027789 00000 n 
+0003027941 00000 n 
+0003028093 00000 n 
+0003028245 00000 n 
+0003028397 00000 n 
+0003028549 00000 n 
+0003028700 00000 n 
+0003028851 00000 n 
+0003029001 00000 n 
+0003029152 00000 n 
+0003029302 00000 n 
+0003029453 00000 n 
+0003029604 00000 n 
+0003029755 00000 n 
+0003029906 00000 n 
+0003030057 00000 n 
+0003030206 00000 n 
+0003030357 00000 n 
+0003030508 00000 n 
+0003030660 00000 n 
+0003030812 00000 n 
+0003030964 00000 n 
+0003031116 00000 n 
+0003031268 00000 n 
+0003031420 00000 n 
+0003031572 00000 n 
+0003031724 00000 n 
+0003031876 00000 n 
+0003032028 00000 n 
+0003032180 00000 n 
+0003032331 00000 n 
+0003032482 00000 n 
+0003032634 00000 n 
+0003032786 00000 n 
+0003032937 00000 n 
+0003033088 00000 n 
+0003033239 00000 n 
+0003033390 00000 n 
+0003033542 00000 n 
+0003033694 00000 n 
+0003033845 00000 n 
+0003033997 00000 n 
+0003034149 00000 n 
+0003034301 00000 n 
+0003034453 00000 n 
+0003034605 00000 n 
+0003034757 00000 n 
+0003034909 00000 n 
+0003035060 00000 n 
+0003035211 00000 n 
+0003035363 00000 n 
+0003035515 00000 n 
+0003035666 00000 n 
+0003035817 00000 n 
+0003035967 00000 n 
+0003036119 00000 n 
+0003036270 00000 n 
+0003036421 00000 n 
+0003036572 00000 n 
+0003036723 00000 n 
+0003036874 00000 n 
+0003037025 00000 n 
+0003037177 00000 n 
+0003037329 00000 n 
+0003037480 00000 n 
+0003037631 00000 n 
+0003037783 00000 n 
+0003037935 00000 n 
+0003038086 00000 n 
+0003038238 00000 n 
+0003038390 00000 n 
+0003038541 00000 n 
+0003038693 00000 n 
+0003038845 00000 n 
+0003038997 00000 n 
+0003039148 00000 n 
+0003039296 00000 n 
+0003039444 00000 n 
+0003039596 00000 n 
+0003039747 00000 n 
+0003039897 00000 n 
+0003040049 00000 n 
+0003040201 00000 n 
+0003040351 00000 n 
+0003040502 00000 n 
+0003040651 00000 n 
+0003040803 00000 n 
+0003040954 00000 n 
+0003041104 00000 n 
+0003041255 00000 n 
+0003041407 00000 n 
+0003041559 00000 n 
+0003041710 00000 n 
+0003041861 00000 n 
+0003042012 00000 n 
+0003042164 00000 n 
+0003042314 00000 n 
+0003042464 00000 n 
+0003042615 00000 n 
+0003042766 00000 n 
+0003042918 00000 n 
+0003043068 00000 n 
+0003043220 00000 n 
+0003043372 00000 n 
+0003043524 00000 n 
+0003043675 00000 n 
+0003043826 00000 n 
+0003043977 00000 n 
+0003044128 00000 n 
+0003044278 00000 n 
+0003044430 00000 n 
+0003044581 00000 n 
+0003044733 00000 n 
+0003044885 00000 n 
+0003045035 00000 n 
+0003045187 00000 n 
+0003045339 00000 n 
+0003048235 00000 n 
+0003045554 00000 n 
+0003025167 00000 n 
+0003023620 00000 n 
+0003045490 00000 n 
+0003048387 00000 n 
+0003048538 00000 n 
+0003048689 00000 n 
+0003048841 00000 n 
+0003048993 00000 n 
+0003049144 00000 n 
+0003049296 00000 n 
+0003049448 00000 n 
+0003049600 00000 n 
+0003049752 00000 n 
+0003049904 00000 n 
+0003050056 00000 n 
+0003050208 00000 n 
+0003050359 00000 n 
+0003050510 00000 n 
+0003050661 00000 n 
+0003050813 00000 n 
+0003050964 00000 n 
+0003051116 00000 n 
+0003051268 00000 n 
+0003051420 00000 n 
+0003051571 00000 n 
+0003051721 00000 n 
+0003051873 00000 n 
+0003052024 00000 n 
+0003052175 00000 n 
+0003052327 00000 n 
+0003052479 00000 n 
+0003052631 00000 n 
+0003052783 00000 n 
+0003052934 00000 n 
+0003053085 00000 n 
+0003053236 00000 n 
+0003053388 00000 n 
+0003053540 00000 n 
+0003053692 00000 n 
+0003053842 00000 n 
+0003053993 00000 n 
+0003054145 00000 n 
+0003054296 00000 n 
+0003054445 00000 n 
+0003054597 00000 n 
+0003054749 00000 n 
+0003054901 00000 n 
+0003055053 00000 n 
+0003055205 00000 n 
+0003055357 00000 n 
+0003055508 00000 n 
+0003055660 00000 n 
+0003055811 00000 n 
+0003055961 00000 n 
+0003056111 00000 n 
+0003056263 00000 n 
+0003056414 00000 n 
+0003056562 00000 n 
+0003056713 00000 n 
+0003056865 00000 n 
+0003057015 00000 n 
+0003057164 00000 n 
+0003057316 00000 n 
+0003057468 00000 n 
+0003057620 00000 n 
+0003057772 00000 n 
+0003057923 00000 n 
+0003058075 00000 n 
+0003058227 00000 n 
+0003058379 00000 n 
+0003058531 00000 n 
+0003058683 00000 n 
+0003058835 00000 n 
+0003058986 00000 n 
+0003059137 00000 n 
+0003059288 00000 n 
+0003059439 00000 n 
+0003059590 00000 n 
+0003059742 00000 n 
+0003059894 00000 n 
+0003060046 00000 n 
+0003060198 00000 n 
+0003060350 00000 n 
+0003060502 00000 n 
+0003060653 00000 n 
+0003060805 00000 n 
+0003060957 00000 n 
+0003061109 00000 n 
+0003061260 00000 n 
+0003061412 00000 n 
+0003061563 00000 n 
+0003061714 00000 n 
+0003061864 00000 n 
+0003062015 00000 n 
+0003062164 00000 n 
+0003062316 00000 n 
+0003062468 00000 n 
+0003062620 00000 n 
+0003062772 00000 n 
+0003062924 00000 n 
+0003063075 00000 n 
+0003063225 00000 n 
+0003063377 00000 n 
+0003063529 00000 n 
+0003063680 00000 n 
+0003063832 00000 n 
+0003063984 00000 n 
+0003064136 00000 n 
+0003064287 00000 n 
+0003064438 00000 n 
+0003064590 00000 n 
+0003064742 00000 n 
+0003064894 00000 n 
+0003067750 00000 n 
+0003065110 00000 n 
+0003047108 00000 n 
+0003045670 00000 n 
+0003065046 00000 n 
+0003067900 00000 n 
+0003068052 00000 n 
+0003068204 00000 n 
+0003068356 00000 n 
+0003068508 00000 n 
+0003068659 00000 n 
+0003068810 00000 n 
+0003068961 00000 n 
+0003069113 00000 n 
+0003069265 00000 n 
+0003069417 00000 n 
+0003069569 00000 n 
+0003069719 00000 n 
+0003069871 00000 n 
+0003070023 00000 n 
+0003070171 00000 n 
+0003070323 00000 n 
+0003070474 00000 n 
+0003070626 00000 n 
+0003070778 00000 n 
+0003070930 00000 n 
+0003071082 00000 n 
+0003071234 00000 n 
+0003071386 00000 n 
+0003071538 00000 n 
+0003071690 00000 n 
+0003071842 00000 n 
+0003071994 00000 n 
+0003072145 00000 n 
+0003072297 00000 n 
+0003072448 00000 n 
+0003072599 00000 n 
+0003072750 00000 n 
+0003072900 00000 n 
+0003073052 00000 n 
+0003073203 00000 n 
+0003073354 00000 n 
+0003073505 00000 n 
+0003073656 00000 n 
+0003073807 00000 n 
+0003073959 00000 n 
+0003074111 00000 n 
+0003074263 00000 n 
+0003074415 00000 n 
+0003074567 00000 n 
+0003074719 00000 n 
+0003074871 00000 n 
+0003075023 00000 n 
+0003075175 00000 n 
+0003075327 00000 n 
+0003075479 00000 n 
+0003075631 00000 n 
+0003075782 00000 n 
+0003075934 00000 n 
+0003076086 00000 n 
+0003076238 00000 n 
+0003076390 00000 n 
+0003076542 00000 n 
+0003076694 00000 n 
+0003076846 00000 n 
+0003076998 00000 n 
+0003077150 00000 n 
+0003077302 00000 n 
+0003077454 00000 n 
+0003077606 00000 n 
+0003077755 00000 n 
+0003077903 00000 n 
+0003078054 00000 n 
+0003078206 00000 n 
+0003078358 00000 n 
+0003078509 00000 n 
+0003078660 00000 n 
+0003078811 00000 n 
+0003078963 00000 n 
+0003079115 00000 n 
+0003079267 00000 n 
+0003079418 00000 n 
+0003079568 00000 n 
+0003079720 00000 n 
+0003079871 00000 n 
+0003080023 00000 n 
+0003080174 00000 n 
+0003080325 00000 n 
+0003080477 00000 n 
+0003080629 00000 n 
+0003080780 00000 n 
+0003080932 00000 n 
+0003081084 00000 n 
+0003081235 00000 n 
+0003081387 00000 n 
+0003081539 00000 n 
+0003081690 00000 n 
+0003081840 00000 n 
+0003081991 00000 n 
+0003082143 00000 n 
+0003082294 00000 n 
+0003082445 00000 n 
+0003082596 00000 n 
+0003082747 00000 n 
+0003082899 00000 n 
+0003083050 00000 n 
+0003083202 00000 n 
+0003083354 00000 n 
+0003083506 00000 n 
+0003087091 00000 n 
+0003083722 00000 n 
+0003066677 00000 n 
+0003065212 00000 n 
+0003083658 00000 n 
+0003087242 00000 n 
+0003087393 00000 n 
+0003087545 00000 n 
+0003087697 00000 n 
+0003087849 00000 n 
+0003088001 00000 n 
+0003088153 00000 n 
+0003088305 00000 n 
+0003088457 00000 n 
+0003088609 00000 n 
+0003088761 00000 n 
+0003088913 00000 n 
+0003089065 00000 n 
+0003089215 00000 n 
+0003089364 00000 n 
+0003089516 00000 n 
+0003089668 00000 n 
+0003089820 00000 n 
+0003089972 00000 n 
+0003090123 00000 n 
+0003090275 00000 n 
+0003090427 00000 n 
+0003090579 00000 n 
+0003090731 00000 n 
+0003090883 00000 n 
+0003091035 00000 n 
+0003091187 00000 n 
+0003091339 00000 n 
+0003091490 00000 n 
+0003091640 00000 n 
+0003091791 00000 n 
+0003091940 00000 n 
+0003092091 00000 n 
+0003092243 00000 n 
+0003092395 00000 n 
+0003092545 00000 n 
+0003092696 00000 n 
+0003092847 00000 n 
+0003092998 00000 n 
+0003093150 00000 n 
+0003093302 00000 n 
+0003093454 00000 n 
+0003093606 00000 n 
+0003093758 00000 n 
+0003093910 00000 n 
+0003094062 00000 n 
+0003094214 00000 n 
+0003094366 00000 n 
+0003094518 00000 n 
+0003094670 00000 n 
+0003094822 00000 n 
+0003094973 00000 n 
+0003095125 00000 n 
+0003095276 00000 n 
+0003095428 00000 n 
+0003095580 00000 n 
+0003095731 00000 n 
+0003095882 00000 n 
+0003096033 00000 n 
+0003096184 00000 n 
+0003096335 00000 n 
+0003096485 00000 n 
+0003096635 00000 n 
+0003096787 00000 n 
+0003096939 00000 n 
+0003097090 00000 n 
+0003097242 00000 n 
+0003097393 00000 n 
+0003097543 00000 n 
+0003097694 00000 n 
+0003097845 00000 n 
+0003097995 00000 n 
+0003098146 00000 n 
+0003098297 00000 n 
+0003098449 00000 n 
+0003098597 00000 n 
+0003098749 00000 n 
+0003098901 00000 n 
+0003099053 00000 n 
+0003099205 00000 n 
+0003099357 00000 n 
+0003099509 00000 n 
+0003099661 00000 n 
+0003099813 00000 n 
+0003099965 00000 n 
+0003100117 00000 n 
+0003100269 00000 n 
+0003100420 00000 n 
+0003100571 00000 n 
+0003100723 00000 n 
+0003100875 00000 n 
+0003101027 00000 n 
+0003101178 00000 n 
+0003101330 00000 n 
+0003101481 00000 n 
+0003101633 00000 n 
+0003101785 00000 n 
+0003101936 00000 n 
+0003102086 00000 n 
+0003102237 00000 n 
+0003102388 00000 n 
+0003102540 00000 n 
+0003102691 00000 n 
+0003102841 00000 n 
+0003102992 00000 n 
+0003103144 00000 n 
+0003103296 00000 n 
+0003103448 00000 n 
+0003103600 00000 n 
+0003103752 00000 n 
+0003103902 00000 n 
+0003104053 00000 n 
+0003104205 00000 n 
+0003104357 00000 n 
+0003104509 00000 n 
+0003104660 00000 n 
+0003104812 00000 n 
+0003104963 00000 n 
+0003105113 00000 n 
+0003105264 00000 n 
+0003105415 00000 n 
+0003105566 00000 n 
+0003105717 00000 n 
+0003105869 00000 n 
+0003106019 00000 n 
+0003106169 00000 n 
+0003106320 00000 n 
+0003106469 00000 n 
+0003106620 00000 n 
+0003106772 00000 n 
+0003106924 00000 n 
+0003107074 00000 n 
+0003107225 00000 n 
+0003107375 00000 n 
+0003107525 00000 n 
+0003107676 00000 n 
+0003107827 00000 n 
+0003107979 00000 n 
+0003108130 00000 n 
+0003108281 00000 n 
+0003108433 00000 n 
+0003108585 00000 n 
+0003108737 00000 n 
+0003108888 00000 n 
+0003109038 00000 n 
+0003109189 00000 n 
+0003109340 00000 n 
+0003109492 00000 n 
+0003109643 00000 n 
+0003109795 00000 n 
+0003109947 00000 n 
+0003110099 00000 n 
+0003110251 00000 n 
+0003110401 00000 n 
+0003110551 00000 n 
+0003110703 00000 n 
+0003110854 00000 n 
+0003111005 00000 n 
+0003111156 00000 n 
+0003111307 00000 n 
+0003111459 00000 n 
+0003111611 00000 n 
+0003111763 00000 n 
+0003111915 00000 n 
+0003115033 00000 n 
+0003115184 00000 n 
+0003112131 00000 n 
+0003085478 00000 n 
+0003083838 00000 n 
+0003112067 00000 n 
+0003115335 00000 n 
+0003115486 00000 n 
+0003115637 00000 n 
+0003115787 00000 n 
+0003115938 00000 n 
+0003116090 00000 n 
+0003116241 00000 n 
+0003116393 00000 n 
+0003116545 00000 n 
+0003116697 00000 n 
+0003116849 00000 n 
+0003117001 00000 n 
+0003117152 00000 n 
+0003117303 00000 n 
+0003117454 00000 n 
+0003117606 00000 n 
+0003117758 00000 n 
+0003117910 00000 n 
+0003118062 00000 n 
+0003118214 00000 n 
+0003118366 00000 n 
+0003118518 00000 n 
+0003118670 00000 n 
+0003118822 00000 n 
+0003118972 00000 n 
+0003119123 00000 n 
+0003119273 00000 n 
+0003119424 00000 n 
+0003119575 00000 n 
+0003119727 00000 n 
+0003119879 00000 n 
+0003120030 00000 n 
+0003120181 00000 n 
+0003120333 00000 n 
+0003120485 00000 n 
+0003120635 00000 n 
+0003120787 00000 n 
+0003120939 00000 n 
+0003121090 00000 n 
+0003121241 00000 n 
+0003121392 00000 n 
+0003121544 00000 n 
+0003121696 00000 n 
+0003121848 00000 n 
+0003122000 00000 n 
+0003122151 00000 n 
+0003122303 00000 n 
+0003122455 00000 n 
+0003122607 00000 n 
+0003122759 00000 n 
+0003122911 00000 n 
+0003123062 00000 n 
+0003123214 00000 n 
+0003123365 00000 n 
+0003123517 00000 n 
+0003123666 00000 n 
+0003123817 00000 n 
+0003123969 00000 n 
+0003124121 00000 n 
+0003124273 00000 n 
+0003124425 00000 n 
+0003124577 00000 n 
+0003124729 00000 n 
+0003124881 00000 n 
+0003125033 00000 n 
+0003125185 00000 n 
+0003125337 00000 n 
+0003125487 00000 n 
+0003125639 00000 n 
+0003125790 00000 n 
+0003125941 00000 n 
+0003126092 00000 n 
+0003126243 00000 n 
+0003126395 00000 n 
+0003126546 00000 n 
+0003126698 00000 n 
+0003126849 00000 n 
+0003127001 00000 n 
+0003127152 00000 n 
+0003127303 00000 n 
+0003127455 00000 n 
+0003127607 00000 n 
+0003127759 00000 n 
+0003127911 00000 n 
+0003128063 00000 n 
+0003128215 00000 n 
+0003128365 00000 n 
+0003128515 00000 n 
+0003128665 00000 n 
+0003128816 00000 n 
+0003128968 00000 n 
+0003129120 00000 n 
+0003129271 00000 n 
+0003129423 00000 n 
+0003129575 00000 n 
+0003129727 00000 n 
+0003129878 00000 n 
+0003130030 00000 n 
+0003130181 00000 n 
+0003130332 00000 n 
+0003130484 00000 n 
+0003130634 00000 n 
+0003130785 00000 n 
+0003130937 00000 n 
+0003131087 00000 n 
+0003131238 00000 n 
+0003131389 00000 n 
+0003131540 00000 n 
+0003131692 00000 n 
+0003131844 00000 n 
+0003131995 00000 n 
+0003132147 00000 n 
+0003132298 00000 n 
+0003132450 00000 n 
+0003132601 00000 n 
+0003132752 00000 n 
+0003132904 00000 n 
+0003133056 00000 n 
+0003133208 00000 n 
+0003133360 00000 n 
+0003133512 00000 n 
+0003133664 00000 n 
+0003136789 00000 n 
+0003136940 00000 n 
+0003133880 00000 n 
+0003113789 00000 n 
+0003112247 00000 n 
+0003133816 00000 n 
+0003388921 00000 n 
+0003137092 00000 n 
+0003137242 00000 n 
+0003137392 00000 n 
+0003137542 00000 n 
+0003137692 00000 n 
+0003137841 00000 n 
+0003137993 00000 n 
+0003138145 00000 n 
+0003138297 00000 n 
+0003138449 00000 n 
+0003138599 00000 n 
+0003138750 00000 n 
+0003138902 00000 n 
+0003139054 00000 n 
+0003139205 00000 n 
+0003139356 00000 n 
+0003139507 00000 n 
+0003139658 00000 n 
+0003139810 00000 n 
+0003139961 00000 n 
+0003140113 00000 n 
+0003140265 00000 n 
+0003140417 00000 n 
+0003140569 00000 n 
+0003140721 00000 n 
+0003140873 00000 n 
+0003141025 00000 n 
+0003141177 00000 n 
+0003141329 00000 n 
+0003141481 00000 n 
+0003141633 00000 n 
+0003141784 00000 n 
+0003141935 00000 n 
+0003142087 00000 n 
+0003142239 00000 n 
+0003142390 00000 n 
+0003142541 00000 n 
+0003142692 00000 n 
+0003142844 00000 n 
+0003142996 00000 n 
+0003143148 00000 n 
+0003143300 00000 n 
+0003143452 00000 n 
+0003143604 00000 n 
+0003143756 00000 n 
+0003143908 00000 n 
+0003144060 00000 n 
+0003144212 00000 n 
+0003144364 00000 n 
+0003144516 00000 n 
+0003144668 00000 n 
+0003144819 00000 n 
+0003144970 00000 n 
+0003145121 00000 n 
+0003145273 00000 n 
+0003145425 00000 n 
+0003145576 00000 n 
+0003145728 00000 n 
+0003145879 00000 n 
+0003146031 00000 n 
+0003146183 00000 n 
+0003146335 00000 n 
+0003146487 00000 n 
+0003146639 00000 n 
+0003146791 00000 n 
+0003146943 00000 n 
+0003147095 00000 n 
+0003147247 00000 n 
+0003147398 00000 n 
+0003147550 00000 n 
+0003147701 00000 n 
+0003147851 00000 n 
+0003148003 00000 n 
+0003148153 00000 n 
+0003148305 00000 n 
+0003148457 00000 n 
+0003148609 00000 n 
+0003148761 00000 n 
+0003148912 00000 n 
+0003149063 00000 n 
+0003149212 00000 n 
+0003149361 00000 n 
+0003149512 00000 n 
+0003149661 00000 n 
+0003149812 00000 n 
+0003149962 00000 n 
+0003150113 00000 n 
+0003150264 00000 n 
+0003150415 00000 n 
+0003150567 00000 n 
+0003150719 00000 n 
+0003150871 00000 n 
+0003151022 00000 n 
+0003151173 00000 n 
+0003151324 00000 n 
+0003151476 00000 n 
+0003151628 00000 n 
+0003151776 00000 n 
+0003151928 00000 n 
+0003152080 00000 n 
+0003152230 00000 n 
+0003152381 00000 n 
+0003152532 00000 n 
+0003152683 00000 n 
+0003152834 00000 n 
+0003152984 00000 n 
+0003153135 00000 n 
+0003153286 00000 n 
+0003153438 00000 n 
+0003153590 00000 n 
+0003153740 00000 n 
+0003153892 00000 n 
+0003154044 00000 n 
+0003154196 00000 n 
+0003154348 00000 n 
+0003154499 00000 n 
+0003154650 00000 n 
+0003154801 00000 n 
+0003154951 00000 n 
+0003155102 00000 n 
+0003155254 00000 n 
+0003155406 00000 n 
+0003155620 00000 n 
+0003135545 00000 n 
+0003133996 00000 n 
+0003155556 00000 n 
+0003156142 00000 n 
+0003156168 00000 n 
+0003156194 00000 n 
+0003156220 00000 n 
+0003156652 00000 n 
+0003156676 00000 n 
+0003156802 00000 n 
+0003157016 00000 n 
+0003157460 00000 n 
+0003157624 00000 n 
+0003158275 00000 n 
+0003158596 00000 n 
+0003158632 00000 n 
+0003159286 00000 n 
+0003159736 00000 n 
+0003160112 00000 n 
+0003160150 00000 n 
+0003160230 00000 n 
+0003160663 00000 n 
+0003161035 00000 n 
+0003161672 00000 n 
+0003162068 00000 n 
+0003162748 00000 n 
+0003163418 00000 n 
+0003164051 00000 n 
+0003164703 00000 n 
+0003165106 00000 n 
+0003165755 00000 n 
+0003166393 00000 n 
+0003180969 00000 n 
+0003181434 00000 n 
+0003189091 00000 n 
+0003189409 00000 n 
+0003191705 00000 n 
+0003191933 00000 n 
+0003196590 00000 n 
+0003196847 00000 n 
+0003200464 00000 n 
+0003200705 00000 n 
+0003211343 00000 n 
+0003211738 00000 n 
+0003217981 00000 n 
+0003218273 00000 n 
+0003220013 00000 n 
+0003220236 00000 n 
+0003222053 00000 n 
+0003222287 00000 n 
+0003240959 00000 n 
+0003241581 00000 n 
+0003246559 00000 n 
+0003246839 00000 n 
+0003250170 00000 n 
+0003250438 00000 n 
+0003254403 00000 n 
+0003254679 00000 n 
+0003266711 00000 n 
+0003267145 00000 n 
+0003268947 00000 n 
+0003269176 00000 n 
+0003279150 00000 n 
+0003279636 00000 n 
+0003283963 00000 n 
+0003284256 00000 n 
+0003293464 00000 n 
+0003293873 00000 n 
+0003307138 00000 n 
+0003307643 00000 n 
+0003310781 00000 n 
+0003311037 00000 n 
+0003313561 00000 n 
+0003313878 00000 n 
+0003331539 00000 n 
+0003332060 00000 n 
+0003333824 00000 n 
+0003334047 00000 n 
+0003335794 00000 n 
+0003336017 00000 n 
+0003339544 00000 n 
+0003339783 00000 n 
+0003356390 00000 n 
+0003357037 00000 n 
+0003369035 00000 n 
+0003369487 00000 n 
+0003371340 00000 n 
+0003389010 00000 n 
+0003389136 00000 n 
+0003389262 00000 n 
+0003389388 00000 n 
+0003389514 00000 n 
+0003389640 00000 n 
+0003389766 00000 n 
+0003389892 00000 n 
+0003390018 00000 n 
+0003390144 00000 n 
+0003390270 00000 n 
+0003390396 00000 n 
+0003390522 00000 n 
+0003390648 00000 n 
+0003390774 00000 n 
+0003390900 00000 n 
+0003391026 00000 n 
+0003391152 00000 n 
+0003391269 00000 n 
+0003391396 00000 n 
+0003391523 00000 n 
+0003391650 00000 n 
+0003391733 00000 n 
+0003418627 00000 n 
+0003418776 00000 n 
+0003418915 00000 n 
+0003419116 00000 n 
+0003419296 00000 n 
+0003419481 00000 n 
+0003419665 00000 n 
+0003419850 00000 n 
+0003420034 00000 n 
+0003420219 00000 n 
+0003420402 00000 n 
+0003420585 00000 n 
+0003420770 00000 n 
+0003420954 00000 n 
+0003421139 00000 n 
+0003421323 00000 n 
+0003421508 00000 n 
+0003421692 00000 n 
+0003421877 00000 n 
+0003422061 00000 n 
+0003422246 00000 n 
+0003422429 00000 n 
+0003422610 00000 n 
+0003422793 00000 n 
+0003422976 00000 n 
+0003423161 00000 n 
+0003423345 00000 n 
+0003423530 00000 n 
+0003423714 00000 n 
+0003423899 00000 n 
+0003424083 00000 n 
+0003424268 00000 n 
+0003424452 00000 n 
+0003424637 00000 n 
+0003424820 00000 n 
+0003425003 00000 n 
+0003425188 00000 n 
+0003425372 00000 n 
+0003425557 00000 n 
+0003425741 00000 n 
+0003425926 00000 n 
+0003426108 00000 n 
+0003426293 00000 n 
+0003426477 00000 n 
+0003426662 00000 n 
+0003426846 00000 n 
+0003427031 00000 n 
+0003427214 00000 n 
+0003427397 00000 n 
+0003427582 00000 n 
+0003427766 00000 n 
+0003427951 00000 n 
+0003428135 00000 n 
+0003428320 00000 n 
+0003428504 00000 n 
+0003428689 00000 n 
+0003428873 00000 n 
+0003429058 00000 n 
+0003429241 00000 n 
+0003429422 00000 n 
+0003429605 00000 n 
+0003429788 00000 n 
+0003429973 00000 n 
+0003430157 00000 n 
+0003430342 00000 n 
+0003430526 00000 n 
+0003430711 00000 n 
+0003430895 00000 n 
+0003431080 00000 n 
+0003431264 00000 n 
+0003431449 00000 n 
+0003431632 00000 n 
+0003431815 00000 n 
+0003432000 00000 n 
+0003432184 00000 n 
+0003432369 00000 n 
+0003432553 00000 n 
+0003432738 00000 n 
+0003432920 00000 n 
+0003433105 00000 n 
+0003433289 00000 n 
+0003433474 00000 n 
+0003433658 00000 n 
+0003433843 00000 n 
+0003434026 00000 n 
+0003434209 00000 n 
+0003434394 00000 n 
+0003434578 00000 n 
+0003434763 00000 n 
+0003434947 00000 n 
+0003435132 00000 n 
+0003435316 00000 n 
+0003435501 00000 n 
+0003435685 00000 n 
+0003435870 00000 n 
+0003436053 00000 n 
+0003436234 00000 n 
+0003436417 00000 n 
+0003436600 00000 n 
+0003436785 00000 n 
+0003436969 00000 n 
+0003437154 00000 n 
+0003437338 00000 n 
+0003437523 00000 n 
+0003437707 00000 n 
+0003437892 00000 n 
+0003438076 00000 n 
+0003438261 00000 n 
+0003438444 00000 n 
+0003438627 00000 n 
+0003438812 00000 n 
+0003438996 00000 n 
+0003439181 00000 n 
+0003439365 00000 n 
+0003439550 00000 n 
+0003439732 00000 n 
+0003439917 00000 n 
+0003440101 00000 n 
+0003440280 00000 n 
+0003440456 00000 n 
+0003440633 00000 n 
+0003440809 00000 n 
+0003440986 00000 n 
+0003441174 00000 n 
+0003441362 00000 n 
+0003441558 00000 n 
+0003441755 00000 n 
+0003441962 00000 n 
+0003442166 00000 n 
+0003442368 00000 n 
+0003442570 00000 n 
+0003442774 00000 n 
+0003442997 00000 n 
+0003443229 00000 n 
+0003443457 00000 n 
+0003443679 00000 n 
+0003443881 00000 n 
+0003444057 00000 n 
+0003444260 00000 n 
+0003444477 00000 n 
+0003444676 00000 n 
+0003444874 00000 n 
+0003445069 00000 n 
+0003445263 00000 n 
+0003445457 00000 n 
+0003445644 00000 n 
+0003445844 00000 n 
+0003446037 00000 n 
+0003446252 00000 n 
+0003446490 00000 n 
+0003446729 00000 n 
+0003446962 00000 n 
+0003447195 00000 n 
+0003447428 00000 n 
+0003447661 00000 n 
+0003447886 00000 n 
+0003448115 00000 n 
+0003448340 00000 n 
+0003448570 00000 n 
+0003448800 00000 n 
+0003449025 00000 n 
+0003449250 00000 n 
+0003449475 00000 n 
+0003449700 00000 n 
+0003449930 00000 n 
+0003450155 00000 n 
+0003450380 00000 n 
+0003450595 00000 n 
+0003450808 00000 n 
+0003451017 00000 n 
+0003451226 00000 n 
+0003451427 00000 n 
+0003451628 00000 n 
+0003451829 00000 n 
+0003452015 00000 n 
+0003452208 00000 n 
+0003452401 00000 n 
+0003452594 00000 n 
+0003452787 00000 n 
+0003452980 00000 n 
+0003453173 00000 n 
+0003453366 00000 n 
+0003453559 00000 n 
+0003453752 00000 n 
+0003453945 00000 n 
+0003454138 00000 n 
+0003454331 00000 n 
+0003454524 00000 n 
+0003454717 00000 n 
+0003454910 00000 n 
+0003455103 00000 n 
+0003455296 00000 n 
+0003455489 00000 n 
+0003455682 00000 n 
+0003455875 00000 n 
+0003456068 00000 n 
+0003456261 00000 n 
+0003456454 00000 n 
+0003456647 00000 n 
+0003456840 00000 n 
+0003457033 00000 n 
+0003457226 00000 n 
+0003457419 00000 n 
+0003457612 00000 n 
+0003457805 00000 n 
+0003457998 00000 n 
+0003458191 00000 n 
+0003458384 00000 n 
+0003458577 00000 n 
+0003458770 00000 n 
+0003458963 00000 n 
+0003459156 00000 n 
+0003459346 00000 n 
+0003459542 00000 n 
+0003459744 00000 n 
+0003459995 00000 n 
+0003460242 00000 n 
+0003460489 00000 n 
+0003460738 00000 n 
+0003460987 00000 n 
+0003461236 00000 n 
+0003461484 00000 n 
+0003461733 00000 n 
+0003461981 00000 n 
+0003462230 00000 n 
+0003462473 00000 n 
+0003462718 00000 n 
+0003462967 00000 n 
+0003463215 00000 n 
+0003463460 00000 n 
+0003463703 00000 n 
+0003463952 00000 n 
+0003464200 00000 n 
+0003464449 00000 n 
+0003464697 00000 n 
+0003464940 00000 n 
+0003465181 00000 n 
+0003465422 00000 n 
+0003465663 00000 n 
+0003465908 00000 n 
+0003466157 00000 n 
+0003466405 00000 n 
+0003466651 00000 n 
+0003466892 00000 n 
+0003467141 00000 n 
+0003467386 00000 n 
+0003467627 00000 n 
+0003467876 00000 n 
+0003468124 00000 n 
+0003468373 00000 n 
+0003468621 00000 n 
+0003468865 00000 n 
+0003469110 00000 n 
+0003469359 00000 n 
+0003469607 00000 n 
+0003469856 00000 n 
+0003470101 00000 n 
+0003470340 00000 n 
+0003470581 00000 n 
+0003470821 00000 n 
+0003471062 00000 n 
+0003471302 00000 n 
+0003471535 00000 n 
+0003471782 00000 n 
+0003472029 00000 n 
+0003472275 00000 n 
+0003472516 00000 n 
+0003472765 00000 n 
+0003473013 00000 n 
+0003473262 00000 n 
+0003473505 00000 n 
+0003473750 00000 n 
+0003473999 00000 n 
+0003474247 00000 n 
+0003474496 00000 n 
+0003474743 00000 n 
+0003474990 00000 n 
+0003475234 00000 n 
+0003475480 00000 n 
+0003475729 00000 n 
+0003475976 00000 n 
+0003476219 00000 n 
+0003476464 00000 n 
+0003476713 00000 n 
+0003476961 00000 n 
+0003477206 00000 n 
+0003477449 00000 n 
+0003477698 00000 n 
+0003477946 00000 n 
+0003478195 00000 n 
+0003478443 00000 n 
+0003478692 00000 n 
+0003478937 00000 n 
+0003479181 00000 n 
+0003479430 00000 n 
+0003479678 00000 n 
+0003479927 00000 n 
+0003480175 00000 n 
+0003480419 00000 n 
+0003480664 00000 n 
+0003480913 00000 n 
+0003481161 00000 n 
+0003481410 00000 n 
+0003481657 00000 n 
+0003481904 00000 n 
+0003482149 00000 n 
+0003482394 00000 n 
+0003482643 00000 n 
+0003482891 00000 n 
+0003483140 00000 n 
+0003483387 00000 n 
+0003483633 00000 n 
+0003483876 00000 n 
+0003484125 00000 n 
+0003484373 00000 n 
+0003484622 00000 n 
+0003484870 00000 n 
+0003485117 00000 n 
+0003485356 00000 n 
+0003485597 00000 n 
+0003485837 00000 n 
+0003486078 00000 n 
+0003486318 00000 n 
+0003486553 00000 n 
+0003486797 00000 n 
+0003487046 00000 n 
+0003487293 00000 n 
+0003487540 00000 n 
+0003487789 00000 n 
+0003488032 00000 n 
+0003488278 00000 n 
+0003488524 00000 n 
+0003488765 00000 n 
+0003489012 00000 n 
+0003489256 00000 n 
+0003489499 00000 n 
+0003489744 00000 n 
+0003489985 00000 n 
+0003490234 00000 n 
+0003490482 00000 n 
+0003490731 00000 n 
+0003490979 00000 n 
+0003491228 00000 n 
+0003491474 00000 n 
+0003491717 00000 n 
+0003491966 00000 n 
+0003492214 00000 n 
+0003492463 00000 n 
+0003492711 00000 n 
+0003492956 00000 n 
+0003493200 00000 n 
+0003493449 00000 n 
+0003493697 00000 n 
+0003493946 00000 n 
+0003494194 00000 n 
+0003494441 00000 n 
+0003494682 00000 n 
+0003494931 00000 n 
+0003495179 00000 n 
+0003495428 00000 n 
+0003495676 00000 n 
+0003495920 00000 n 
+0003496165 00000 n 
+0003496414 00000 n 
+0003496662 00000 n 
+0003496911 00000 n 
+0003497158 00000 n 
+0003497399 00000 n 
+0003497646 00000 n 
+0003497893 00000 n 
+0003498142 00000 n 
+0003498390 00000 n 
+0003498634 00000 n 
+0003498874 00000 n 
+0003499115 00000 n 
+0003499355 00000 n 
+0003499588 00000 n 
+0003499832 00000 n 
+0003500081 00000 n 
+0003500324 00000 n 
+0003500567 00000 n 
+0003500816 00000 n 
+0003501059 00000 n 
+0003501299 00000 n 
+0003501540 00000 n 
+0003501780 00000 n 
+0003502013 00000 n 
+0003502251 00000 n 
+0003502492 00000 n 
+0003502731 00000 n 
+0003502968 00000 n 
+0003503199 00000 n 
+0003503421 00000 n 
+0003503603 00000 n 
+0003503788 00000 n 
+0003503972 00000 n 
+0003504157 00000 n 
+0003504340 00000 n 
+0003504523 00000 n 
+0003504708 00000 n 
+0003504892 00000 n 
+0003505077 00000 n 
+0003505261 00000 n 
+0003505446 00000 n 
+0003505630 00000 n 
+0003505815 00000 n 
+0003505999 00000 n 
+0003506184 00000 n 
+0003506367 00000 n 
+0003506550 00000 n 
+0003506735 00000 n 
+0003506916 00000 n 
+0003507101 00000 n 
+0003507285 00000 n 
+0003507470 00000 n 
+0003507654 00000 n 
+0003507839 00000 n 
+0003508023 00000 n 
+0003508208 00000 n 
+0003508392 00000 n 
+0003508577 00000 n 
+0003508760 00000 n 
+0003508943 00000 n 
+0003509128 00000 n 
+0003509312 00000 n 
+0003509497 00000 n 
+0003509681 00000 n 
+0003509866 00000 n 
+0003510050 00000 n 
+0003510235 00000 n 
+0003510417 00000 n 
+0003510602 00000 n 
+0003510786 00000 n 
+0003510971 00000 n 
+0003511154 00000 n 
+0003511337 00000 n 
+0003511522 00000 n 
+0003511706 00000 n 
+0003511891 00000 n 
+0003512075 00000 n 
+0003512260 00000 n 
+0003512444 00000 n 
+0003512629 00000 n 
+0003512813 00000 n 
+0003512998 00000 n 
+0003513181 00000 n 
+0003513364 00000 n 
+0003513549 00000 n 
+0003513730 00000 n 
+0003513915 00000 n 
+0003514099 00000 n 
+0003514284 00000 n 
+0003514468 00000 n 
+0003514653 00000 n 
+0003514837 00000 n 
+0003515022 00000 n 
+0003515206 00000 n 
+0003515391 00000 n 
+0003515574 00000 n 
+0003515757 00000 n 
+0003515942 00000 n 
+0003516126 00000 n 
+0003516311 00000 n 
+0003516495 00000 n 
+0003516680 00000 n 
+0003516864 00000 n 
+0003517049 00000 n 
+0003517231 00000 n 
+0003517416 00000 n 
+0003517600 00000 n 
+0003517785 00000 n 
+0003517968 00000 n 
+0003518151 00000 n 
+0003518336 00000 n 
+0003518520 00000 n 
+0003518705 00000 n 
+0003518889 00000 n 
+0003519074 00000 n 
+0003519258 00000 n 
+0003519443 00000 n 
+0003519627 00000 n 
+0003519812 00000 n 
+0003519995 00000 n 
+0003520178 00000 n 
+0003520363 00000 n 
+0003520538 00000 n 
+0003520713 00000 n 
+0003520890 00000 n 
+0003521066 00000 n 
+0003521243 00000 n 
+0003521419 00000 n 
+0003521596 00000 n 
+0003521777 00000 n 
+0003521958 00000 n 
+0003522143 00000 n 
+0003522336 00000 n 
+0003522529 00000 n 
+0003522727 00000 n 
+0003522911 00000 n 
+0003523095 00000 n 
+0003523294 00000 n 
+0003523502 00000 n 
+0003523752 00000 n 
+0003524003 00000 n 
+0003524242 00000 n 
+0003524484 00000 n 
+0003524679 00000 n 
+0003524862 00000 n 
+0003525065 00000 n 
+0003525269 00000 n 
+0003525476 00000 n 
+0003525685 00000 n 
+0003525893 00000 n 
+0003526101 00000 n 
+0003526310 00000 n 
+0003526519 00000 n 
+0003526728 00000 n 
+0003526930 00000 n 
+0003527139 00000 n 
+0003527350 00000 n 
+0003527561 00000 n 
+0003527774 00000 n 
+0003527991 00000 n 
+0003528199 00000 n 
+0003528402 00000 n 
+0003528605 00000 n 
+0003528808 00000 n 
+0003529011 00000 n 
+0003529214 00000 n 
+0003529407 00000 n 
+0003529651 00000 n 
+0003529902 00000 n 
+0003530153 00000 n 
+0003530404 00000 n 
+0003530655 00000 n 
+0003530910 00000 n 
+0003531167 00000 n 
+0003531413 00000 n 
+0003531656 00000 n 
+0003531899 00000 n 
+0003532142 00000 n 
+0003532385 00000 n 
+0003532628 00000 n 
+0003532871 00000 n 
+0003533114 00000 n 
+0003533357 00000 n 
+0003533600 00000 n 
+0003533843 00000 n 
+0003534086 00000 n 
+0003534350 00000 n 
+0003534632 00000 n 
+0003534923 00000 n 
+0003535215 00000 n 
+0003535505 00000 n 
+0003535788 00000 n 
+0003536071 00000 n 
+0003536354 00000 n 
+0003536637 00000 n 
+0003536920 00000 n 
+0003537130 00000 n 
+0003537326 00000 n 
+0003537519 00000 n 
+0003537709 00000 n 
+0003537822 00000 n 
+0003537940 00000 n 
+0003538058 00000 n 
+0003538175 00000 n 
+0003538293 00000 n 
+0003538411 00000 n 
+0003538529 00000 n 
+0003538646 00000 n 
+0003538764 00000 n 
+0003538882 00000 n 
+0003539000 00000 n 
+0003539117 00000 n 
+0003539235 00000 n 
+0003539353 00000 n 
+0003539471 00000 n 
+0003539587 00000 n 
+0003539704 00000 n 
+0003539822 00000 n 
+0003539940 00000 n 
+0003540057 00000 n 
+0003540179 00000 n 
+0003540310 00000 n 
+0003540436 00000 n 
+0003540558 00000 n 
+0003540684 00000 n 
+0003540814 00000 n 
+0003540943 00000 n 
+0003541070 00000 n 
+0003541193 00000 n 
+0003541314 00000 n 
+0003541435 00000 n 
+0003541556 00000 n 
+0003541677 00000 n 
+0003541798 00000 n 
+0003541919 00000 n 
+0003542046 00000 n 
+0003542180 00000 n 
+0003542315 00000 n 
+0003542450 00000 n 
+0003542585 00000 n 
+0003542719 00000 n 
+0003542854 00000 n 
+0003542988 00000 n 
+0003543121 00000 n 
+0003543255 00000 n 
+0003543388 00000 n 
+0003543523 00000 n 
+0003543658 00000 n 
+0003543793 00000 n 
+0003543928 00000 n 
+0003544063 00000 n 
+0003544198 00000 n 
+0003544331 00000 n 
+0003544465 00000 n 
+0003544600 00000 n 
+0003544734 00000 n 
+0003544868 00000 n 
+0003545003 00000 n 
+0003545138 00000 n 
+0003545273 00000 n 
+0003545408 00000 n 
+0003545541 00000 n 
+0003545675 00000 n 
+0003545808 00000 n 
+0003545940 00000 n 
+0003546065 00000 n 
+0003546183 00000 n 
+0003546302 00000 n 
+0003546421 00000 n 
+0003546540 00000 n 
+0003546658 00000 n 
+0003546777 00000 n 
+0003546896 00000 n 
+0003547015 00000 n 
+0003547133 00000 n 
+0003547252 00000 n 
+0003547371 00000 n 
+0003547490 00000 n 
+0003547609 00000 n 
+0003547728 00000 n 
+0003547845 00000 n 
+0003547964 00000 n 
+0003548079 00000 n 
+0003548200 00000 n 
+0003548326 00000 n 
+0003548451 00000 n 
+0003548577 00000 n 
+0003548703 00000 n 
+0003548834 00000 n 
+0003548970 00000 n 
+0003549105 00000 n 
+0003549246 00000 n 
+0003549392 00000 n 
+0003549504 00000 n 
+0003549618 00000 n 
+0003549736 00000 n 
+0003549855 00000 n 
+0003549979 00000 n 
+0003550106 00000 n 
+0003550239 00000 n 
+0003550379 00000 n 
+0003550520 00000 n 
+0003550661 00000 n 
+0003550802 00000 n 
+0003550935 00000 n 
+0003551059 00000 n 
+0003551184 00000 n 
+0003551311 00000 n 
+0003551448 00000 n 
+0003551559 00000 n 
+0003551686 00000 n 
+0003551818 00000 n 
+0003551921 00000 n 
+0003552009 00000 n 
+0003552051 00000 n 
+0003552331 00000 n 
 trailer
 << /Size 10097
 /Root 10095 0 R
 /Info 10096 0 R
-/ID [<62DAE154C6C4D40A4E97E088C9736ECB> <62DAE154C6C4D40A4E97E088C9736ECB>] >>
+/ID [<11F7D8E7B5F30ECB387668CF0830ECB5> <11F7D8E7B5F30ECB387668CF0830ECB5>] >>
 startxref
-3552348
+3552664
 %%EOF

Modified: branches/samba/upstream/docs/Samba3-Developers-Guide.pdf
===================================================================
--- branches/samba/upstream/docs/Samba3-Developers-Guide.pdf	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/Samba3-Developers-Guide.pdf	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1318,14 +1318,14 @@
 << /S /GoTo /D [882 0 R  /Fit ] >>
 endobj
 884 0 obj <<
-/Length 186       
+/Length 189       
 /Filter /FlateDecode
 >>
 stream
-xÚ…Ë
-Â@E÷ýŠ,gÀÆy43uÙ¢
-"èàFÜhG©T+õñýN-®\¸ºÉMî	pE$þhî¢ñ\Y•¤Ü¤!´š !BM\[¶ÎyÆcm‰Mý‹kÉ|ÓÞ‚Šî>Šg]y¾se ¦ %NˆTO4•“Æ„^雋ïBN¶Â^-ÛðTÚµåqèÚúܳÀbb	©ÂËãÝ–¾5Jˆ´Oýü9sÑ
-ž>†
+xÚ…»Â0E÷~…ÇD¢&Nê$ŒE<$$ˆXj@ B¯ï'¥010]¿î±­`
+¦™ú£Ãõ'Ú9ÔÄ„et†¡`FႵX–óa)sãXŒâS±n.©‚ë­kL‡*ÊM˜%¢"0ë–h-jE³Á‚;Þ,Ö§xM>mÅ[ub%½N´s#ó”5‡cË‚œÐ
+4¤
+¨¼ý\/÷x’ijûžý’È÷º@+å[÷Ͽ㐽 N at x
 endstream
 endobj
 882 0 obj <<
@@ -1395,8 +1395,8 @@
 904 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135109)
+/ModDate (D:20080918135109)
 >>
 endobj
 905 0 obj
@@ -7500,8 +7500,8 @@
 1846 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 1847 0 obj
@@ -9369,22 +9369,18 @@
 /ProcSet [ /PDF ]
 >> endobj
 2118 0 obj <<
-/Length 1393      
+/Length 1271      
 /Filter /FlateDecode
 >>
 stream
-xÚ­W[¯œ6~ß_Á#«.>ØØ"õ¡M“¨©š¤=Û(R’/xÏ¢ÀB¸äòï;ã1{9‡¤­Ô'ÛƒçþÍxˆƒ» ž­b¿þ¼]Ý<MÓ€k&¸’Ávð8fY.‚T⪃m¼
-L7Ú~%<	yº~¿}¾z²]}\qüÌ•H–¤AѬ޾ƒ¾=b–äYðÙÝl‚De,U
-öup»úcQFÌrü!ή!™Îô¥J§°fäÆ‹—Û'·àDªÃíKZ_­sþ´Nxøø7XâðÙ“?oÑ?'–+îâQ³8$Š§Œ¯#jÂ×Èmû¡jÕñÎó*°€åqÎ=¯È˜Ö9ñ¾ª­ì"ìÜ÷q8Ø‘6ã)<?­…í±lûÓ9óº<Ëô.æé:˜cI׎xmjy·ŽPDO7ª#٧ĥ}BgLj	v:û†vê{ó"ñëËKE3GĦ¤÷Ë©W€ÂÔõ’©é=5CÑWÝxÓ|ødÑ-6–4r‰<™8¶¤©:õTZ<ŠR/¢„q´vOëWüšQ	˜Ÿ',¿ö¢3^ù°V*4w–­#)Óp{°=æ$®24õÐÒŽÒ›‚
-Ò‡¡ÚUu5¢œ¯þJKÌ”bä¦e?‹‘²yº%â·fôêNÂÉ+ ¤—‡	t!¾¶þÂu°<ã
-,Gƒ¥Òac>¸¯þö¹ðW!>pàZVá›*ÈÒp@½£qšM_Ò­Áxˆqt)»©ªK/ß·Í¥‰Š,,¦al›ÈÝDljɝ¡ã,÷ïb£-}µ›0LžÜîG{¤mgF—¯Ã|¼ÊÞ ¸K¡Ÿ®3€AO÷ìÓDK„zÜPà}†îZWA­KmIŸ¨,ç2ÂgBUí¿ïÜeûh©@_’°œÓ÷z£„
-¡Ýäù	‹™©»ƒ<Rôavã滫Ìñ
-JA—äç%|ƒúQy›jH”Ðð½.å›å휕;e?…tMÇy?ÅY‡—:WrÈÑ™~ô<X}Ž×#ÆÐqÙÕÓ]u Q
-rCˆEzƒÆžQ‹$@íCL]Ô]m©±-¦Q«Ù8íRӰ›F"CÎ@GG‡ù®³òë𱦣wYÏ.kl¤n5þ‚g©dáä@¨„)‚p³„³ñàz4z%s,M
-ì±.™=p
->¹þ ëÁ óܐbhÁúlûÆÔt¼.P¤Ü«ÏÕz•¥%¥ðâœÌiKæ×¥Y2WTr™/·­+7_s±'”r(+®é\ºg¸ÀGì–—Az^_™‰G͆¾õàãt|4Û* „$[·ØA…†Èt®Õ.¥’Pyz~]¢ès5¢á`z[FM•cK†‹„	¡f>„-êiLå^àV[mtm$¾W=øe hÙ¢‚§\^„ï7‘§à½B\çÀY„΁‚BŒÔªl IgµL3™¥ˆ¡ÑˆïkL@Ÿºž²® 3‘VÈ,~Z|óæ
-àÜ|ÚíЙµVÿ‹B)ˇv0Òjýx8õÀ8Àò=üø°*pCAŠþ•;2I¯Ý¹6cž^y–ƒç¾!›r‚œIuš‹°ö`Ìû'J¡rWH"ŁÒaSaèMcÝ0GË”&N'Àu5vAŽ$ŸÅí1z7õvÉ% ¡éùrÓ@Ã$èq­	þ‰Äg—eaK½ˆüðkÐWþÅmqî-*×é°ü­›£á	ùç'—Ý€ûÊyáÕå<÷]±ànÌ46]¹Ûðç7Lýüu?`I’³,ÑA”JHz‹…¾bÜü
-z at hs
+xÚ­VK7¾ûWÌQF=Z=F£™ =´i E›´ë’d¼dî<’æß—"e¯½ë¤-Г$J¤>’)‰ä.É‹…ˆãëÅÍó<O¤åJš,Yï)/J•äYm²®’wìéÞ&?,S-5“ùòÃúåâÙzñçB‚‘È{-q'ÛvñîƒH*Ø{™®Ë"ùŒ'ÛD›‚çÆÀ¼In¿]µ!xiõ1‚~H›¨ŒÛž»alcAnüújýìœÈ-[¿¢ñõ²T쇥–ìéÏ0öâÙï·Á?´'/Ä¸ˆ$-¹"S2çr™J¸†½	Ú~뾫»»¨k /E)£®*¸µ%é¾n¼ýj™*[°.`ž6`,Xµ”ÌMQ6íq’±OKeã5$è–pvnƒxl±  Rw¨sJ@Ìd	`ÄØÏÃÖßÔݶ™+ó‰,óý5ü¸ õIuêá$ÕYá)’Tjn²è\4¢Áë<à‹³¡¬ßÑ¡/aАôà¶aýqiræî<_¦&“l½¯GÚoÝG´—õDF ˆµ& ʪzœà¶¹Ñ«†s¤ãäºÊ
+U`µd£kƒÝKÅ6sÝT#m톾¥Ùv§¾Mq3ª	عª¼P}/Œ0†z3Oà|÷»Éw×0Ü„îïáœÖ{
+Ææ$D$Ë{¾,2֏uÆü_®"­HËÑp×#›úÈ)”å4?S𛸿ÁÃþÉ5T­y•‰PßÍeÔIY~§¹à®9읒©¡]€&?ùMíº¯T–~I}ª,+뗐H°K67Põo”W¬òÛc:t f{‡\QlœT`ý0‘Ñ…	æ,23„}˜¢‘T=,å–G“‡f¾«»1°T«Kk‘gLU©×N€Æ±Þ4žZÒÔ‡<ZsDgÏÓk¡Bæ‰Ä
+6Š-Žgæ—ñφ–Ñg{ôن‹<x‹Ý&¬nu
+ò´ÇÆÜÊÊP7˜c1fÅ#§`kƽÊDC’8:ð¥Z×Ðò¼ayßLÀUúx_åéFßU',ýE}‚ÞT. :UŽ¾–UÆÖËB‡’ÁbˆeJj¤rAPóe‰W`¹¢sì &ÝSYeb©s÷äˆSA¨XkìúBrmãZ9šjÎ{rš~®§}:îÝà«´í«¹¹^,Ri®”9ê†{ZWã{2Áè+’…œ)+ÔM؉S~[¿2ÛF±Ó¤ô:H[ÀEê"þ*)Ø<Q)
+oÖU	zü»(,ÏŠ<Qð3€ý[?® A]þ.ý‡WÜ£¥TÉKq½}û– À‹@“O»ñ1Ý×Zó¿àPÆp‘=ÆÁéþçÈÁ§ú¿BƒRs	’oÑàû¯„ÕÈdè_¹“Á·îKÇÿ–‚ö
+MŠÐ¸ê*%ÏேºS‚ý Sb©\@—AjšPûƒk=~?ÃY‰<Y‡¾tñWeòh~Ûw¢wóà¯a1
+šßn[b ܃œ„{°ËA|}GËóªðq^	_WùðG[ É·5v8hƒÇŸ¼ÿüÖòðcW£øš^ÏópØ®€¸+7OûÕ¡Ú¬¶°?z|xNþ‡ƒ/´…ï­ä2‹™“Ê^(oþ|
 endstream
 endobj
 2117 0 obj <<
@@ -9413,10 +9409,10 @@
 /D [2117 0 R /XYZ 100.892 475.863 null]
 >> endobj
 878 0 obj <<
-/D [2117 0 R /XYZ 100.892 326.45 null]
+/D [2117 0 R /XYZ 100.892 353.548 null]
 >> endobj
 2122 0 obj <<
-/D [2117 0 R /XYZ 100.892 297.671 null]
+/D [2117 0 R /XYZ 100.892 324.77 null]
 >> endobj
 2116 0 obj <<
 /Font << /F66 1230 0 R /F17 927 0 R /F15 898 0 R /F52 900 0 R /F49 896 0 R >>
@@ -10098,49 +10094,43 @@
 /FontFile 2160 0 R
 >> endobj
 2162 0 obj <<
-/Length1 1028
-/Length2 3817
+/Length1 1045
+/Length2 4066
 /Length3 0
-/Length 4478      
+/Length 4737      
 /Filter /FlateDecode
 >>
 stream
-xÚ­“w<ÕÿÛÇí!|$›sëYÙ2³WÇÁ1α³l!32“‘‘ŒŽ=
-!!ÙZÈÎLæÑ}úvÿªûûû÷~œ>Ïëz½¯ëõ¸®ëðr‹ª8¢h”¯(‘Tõn@ÄHŒŠ—WÕóE¢Qj0_„ ‘•… *~΀¸ ‘–“‘“¢âTÑžÞHg_@@Uð§
-¨x ¼‘p
-Ѓùº <ð5à0wÀ
-G"|A€Š»;pãçàÂáípQA €#î8 œ‘(*ðOCÚ('4 ývôóüOÊáíƒ7àM
-x‹Žh”{ àˆp¢ë£ñ½x'ÿ¦þ]\ÃÏÝ]æñ³üÏ!ýWætü_ÚÃÓÏá
-è¡Þ¨KÍ¿¼é!‘~ÿÎjûÂÜ‘p”³;ûBúh 1GC¤/Üp‚¹û þ‰#PŽÿ6ŸÛ?ÀªFÆ:êׄíóŸœ!‰ò5	ôü]õ§ø†üaüt¼‘ÀZ$&Áñ¿ÿ|Ùþ«—:
-ŽvD¢ð!%
-À¼½aTøËÀ“(G@`ð†Á ÚÿÀÏ$pB{Sý\'T ëüý"Y lð›dÄð?$
-€Í~“¬ vøCøwðß$‰¯	G{xÀ~G xï`ÄoÄ;ÿþ Fþ…x…ë_ˆïæþâÛyüAˆ Fý…ø^è?fð•<ñG‡vüK7èýâ%¬Há«ùüU ß;áý+ðß{¾v
-	•DÅ¥ ø±È P)±Ðÿ£ƒûy{#P¾ÿü…ðÇòvBâOÀ àTï§Ðpù(×û1aêÅ#I…¯97¥è×uŽ?;ù.•Ð½tທÐ,Öâ¸2çÂùÒ®€ïì>ñí!FCÛá^)Y“g+þö+9A-ì»9zËž—q‘´mû›R„c³ƒ÷,Kzó¿¾Ü(4P3ùL>ÍMÐeí_ß•%
-µÐÈq7ÆòIpß Ëòªˆ“Œ	 »—F23æKÑ,üqÝîÇp\Lñ0ýÌfmLÙš9oRÚõfò­Ë”‡»,!QKX’+±8)·¥õûqUXiD¢‘/%5¡—“VoæI›˜g©ÏELOD>Ô
-aWÊò}¦Yõ-»€¢m¹8È®ÙªA³Õ"œ°ò½DCÈjñÃQ7£·Ú>”òÓNmG™
-±Ÿ2U!¡v0ê÷ÉYÚhž™916`&›Ô&>¯:/›)¾gÞp軈ÓVÚFýkJ¡Çä‰óš…Vãâ*Lj3Êdt%~x¯³YßñGÁíÔ{:]ªÂVe“‰ÃkCZôP†ZþȆfTh-¾Dp¦e<òàŽµVÉJb.´ð4ìîc×W5mƒîšNa¡o2wMœq´…h£1vû).÷ò^îU›Oâr[z‡onÙf™·d†æf
-ûLNÙᬎۜ|”/¶.8Zz¯
-F}ùüuÒ‰F0õçYc“§èÈ¿Í<e­Žë
-Þ¾îµÄH%™Á1-åR®ÛÏãUv‡ˆNŽMÒÓð´t—¢ä<vƒ:DS'Å8•·r)Þ[&³^K˜~çH)‹²'‹3HlëK_KÓqÐÞì/øwKäB×Ûj1ªç])Û ¡b°¢sœ-±™Íöa›íÈ{êëåNÝIÄ[¡ŠXù„K¸œk†;¤ÅúUé9u‡²â}à¸M7k,Äjµ5ÎÓKÆí¶\e=0ìe/WØóÖRŠÝ÷ÅÄ))¹^¿å÷Ñã;«;p¢œ4ÊÙxs§NT¹%<7íõÐÀAî%áæɸ?=óœ›q–Þ~ºgúãí@‚|ñ¢]æu¨ó-­·ßVU¨i	ªPÎDtfÄ¦’ŸHGõwõc7é2&ž˜®3axw¶ü°úÆò¾Ò»¡ƒK_üÞÍû7ÐÌ(o0×äYn—%X¼’BgþØr71¢ê¶8zo“!A4ªSI.0L¥,ºàÐ'?ü‰MƒŠ³¶¤¶¨(!R3%å"è°ÿ¤Üü¼"¾ÃúùåƒæX_CÏ è❚ÛDMƒqÑužœêÊÇC
-/OëÃVy'Âcí¿Ô¬—êô£@y~Ï Ïk`ô9®*—Ù;h\Þ¡ò,C÷å5Ç“Òkz9‘-î	‹eO¥nŠ‹#|µ?Ø >æ]åAës;`L µ=˜4‘{	z©of(Ž«iÄŒmä}¿¤Û­pC¦˜Ip¿%ʉá¡ÇâÖNÆ¡w}H©ý:; íïRß-Ç3kèï’XÈWt¨È±´ÓÒi¬|â:⳽ν’_ÙÉxmæÓ´QûElµbΊ$¿Ê>mïÑÅGjBÝa•vìírD.•\!HéÎzÒÌ¢·%)‘¶®{}õ	ëÇ¡Qõ´m…b¬…þ’8aà‚šÉ[=ãÓ+
-Ñ-£²˜”%#,;OÔ+ötg¹"®¼¸ú~æëÇ×JŽŒôQT;*o–t/}¦…²hÌŠG’F@ÇäùLÜ µîûµª£EÍQíó¯žSŒ‰õDÏ;–âTDÐÓ5*&WÂW,TöR7gÖˆÂznÕFÈ0Ûc•ºoO½ŸáeRa1ˆŸ{ÔsbœHðœˆ8ƒnѧõlÁ9敼͔ίñ¢ãá솎¦[‘ 
-\YrµÕ§vvÞUýbÈ„¡ß²ËPW¬Ït“£S}yô¢î~JgÎÊx¸Ÿÿ›6™&c/Võô¨‚™–)cóéÙâݹÙ¦“‚ôêœ}
-¥­ºÊÕVœÐi…äÑõÅe­Û|çú/YˆgZ*òïoË}t>\#²d——?ˆÖõS=šwˆ|å¥bs¯ÑÊ]	p>O†tº›jÇhifÈgpÁõi¢ôÚ6(›œµ€ïý{ÂMÎecæÉtÅ…ˆ¡ZÙtûÒLIhŒÃr­óœ¶_‚>èÈ+Þ-iټπ;¡W´~9Î'9àøö"K˜øÅsJ¯KµB6-K>¿@56Qð°ÂE©o£’ìl÷bÎ.*¤Cý´ÀŒÝ—`ùso«4Ï qÂ=ìµÆ‚çôßj=«°)Ëý|sÂã‚Ãl’Šg^ÅwÅ¡‡™)"u_‡ãeU)¡¤M@Ùöì‰aÅ=·Tº¹Ë?ŠoÅmß	ÉDج5¯‘ÔHpÖ›¾¾É{n‹G<ÚžÁÝCxu;0Šæ	š]Q’LDÇp>dQrzÂË´WN-Ë~ë4qŸ	IÒ2èꔐ9-lS5Ñwó”xq=ªµ<l‡†÷ÊýÛÕÏU$³¡wߐaά9¬7˜ö‘NŸÌúKvGD½¤l³È°;—ƒ7A÷jêÖ¤Ænw2óN&ÿêïf—1²ÐQû¼ñȆ¤ ‰kPF–0ïî˼ˆB_éÑ•jÿµi[õWmçjddîfsŠUåwô%—~Tlhé•ãö@N\	‚Ãb? ©¥0‚†éVªØÈó
-Ç”WGr,Øçñ{M ÇÐîÏ›û.p¾+Œ1Šñ!#Ÿ•òçs¥&Ê|,ä¶9ß½¥pø":˜ÒöM¦ÍØÏkÐqšÄ“PápíØá–Ñ#ŽgUуÅöBBc©Ï©7ŒÙÕ«]TZ• Ü§Æ1Ýñƒ„c(‡µ•øËW
-÷|2îPO”l|Ûéû
-™Ó¬)ÖY6ñPÒsfP“õ˜µwt—_|“7Óœk| ªÛ¡;£Œ%­ãµ}…!%wIVr±0áùÎeófp±CF“§ß0ºä~~ÅÙôœß(ä«[`¼ìÊ ŸË”Únñ½ßë¶)‡„[6‹Ÿ¾3wh6Ôô¢lNŒ
-âwOÐEV‹æœ*òBà„KïîmºIÃœÕv-Wœ»Z«€ø[˜Õ~×ÃR¾üÐÅ̶þ±E(ª;òk›¡~üãŠmé–:Èrn»@¿}ñiô+£^Tå'ã]º_Ïª^vŒ?+¿RËÞŠë ñU¸>WSñÖs–Õ1á”Ñí ÜCç3UŒèÈE³ºòEª9¼#ö¾NËY¶¥÷Z¿fg’Â-Q³+¤—)¬9¶_TelR‘Ôê{&v.溃zF¨äðŒk¨—hE£¯š=UíF±÷œxì8 ÿóï®lÙ[¶¶ÐrÙË;…ZÖ#9J[ó%/l…||îqZ/)ß8 Ý®½í9žË³Ï9QßÂœ{1çùÖ–ïå²Qô=Qûâ.o¸\ûÜgW¥zÚzŸ“ŒqAá1ìn*_XE ¸fz4m1¹Fl&…þÌ°›z†AäXÐèé	{CO®­ÉL‡óÑÎÛu¤|*eV~sÕy-È×7=¥cRÁºŠÅ•ßh×Ì¥Œ·ùUj„§ÍÜ +b¿-çÙ.£%óp.ø|ª,®`î½(ódѧûu׶syXíÊ$ÃÎ'6ºî€ë[òq©Á\ó’‚G¤Z—P1õäÓÖ㯶E~<ØqÒ;N±	]èÍvVYTªUùÙzù¤¡©OŒƒ•oq—V/hªúTÐ0ìVÑÑÅmY¿Þ²/¥è¹VîXíd½ÆðFÁyUâuà¡vF½ÁÒY¯a0›u÷Öx€™$p at .µî*Ô½í!b#¯Þ†ø1h°lX¼¨¶l-\>¶Nûâ^¦‚§ÔŠÞîÇåÒd-ní¦ck’GéèY&÷y¨ÞE–*ÃŽÚ'¦ Çî%¤‡¹õ ’îÆ\›âÛÉ‚Á{È#>fÅ'UÜZj¡§< ŽçìsWcj2AœL ?6M×æ£yÛ*•‘7#tèUÒ¡œM	MʵôÅžÑGÃ!ª’bßåÈEŽæCŸ—d5žiš<:N pö!Y=O}x/•ëéö]Zuñ:âÛµÌ5tIæS¦Ëí­ŠMð»Ë%­ú¶¤E‚ÑÕ÷áœ*/ëE‰Ô'{Ë£A2ª·£;íˆÎ=¡¨éµ.¯Nj`u…9ÓzmIŽ|úü´N;Möƒí¤=Ù¼0EËk
-æ¼½oº‚<¦™¢™æF‹¤{LÅÚv|§¤;CFl/Ç•
-ІšTj/˜¿ãí:ŽŒ TfI®òn—ÄôÅ֝8â=8à£ÒV?ü×ÍÍTšÏ­5Ê&ŠÊ/ñÖpè4¸s9FnWcì>‚œ²—DÂãÓ'"ŽíEwS±+WøÄ'¤êø1~òØ6ûò¤¦ûé}e,ÁÐrW¹¨ïÛ	mŒšÞeD.jõ'/kr›ÖIJ=‚Ndˆ·NqJ·¯™]ìÝÕym{hc%¶ò ƒ®Ž¥mé"1šS/"”/iVÜÊ¢d\´n:Z*yämG¾Ë.¢;´0¯2ýz¹MÞJñÅ8ñL®Õa¨rŠY¨õ5‡VÅ®ò—å?öëh¸å+lÓ]ãXaˆða™õ,Ë.ŸS÷«
-•¤TwïX-úD&Þžæ½w$ûÊD³°êLÍÛàlrO€ ×>{1†ÄÀI)7¢Ÿì“
-=
-\c—N¯ˆ&«¦¿;:£ÇìõdÌì‰`ÿ€˜qš[ê,K7æ‚ImÓ)#ÖžÚ%ÊËZcž#•R'á·ýÃÙæ+'°X8ä9…ˆé½÷h‘n}f|0ƒ¸+1A+pBpo|—–g¨Yý‚ö„°¸KÑÊkÒ\4êåwh	¿(.
-ŒÍ5d¥³½,/¹LmK]ÃTm´‰¼©ø´HˆP;ÉKÁú±vAÜõîùà1¼;yÓÃtÅß7ú›ÃתCö\èMŒ_mm5°”¤!cz°xpÚ¬ ˆÒjv“Z/X6?ØŸ<1.~ ´w;öJW\BÇëM΍+²¢ùòåÿ]ä²¹
+xÚ­—y<TýÛÇÉ–%Ò"e;¶"1ö%!»ìKöe0Ã0fc,-ûVB²+ÙÝ$¡,…ìû¾]ˆ¬‘ÈòLÝÏï®çþýû¼Î?ç}]Ÿs]Ÿs}¯óÇáåÔ5 )Ø£ma*h„HŠZúa "(DÃË«ˆA±4J	Š…I)) àá qiIi!1^@íêA88b>EþŸ"	@Á†AØAQ€ës!Ö°ƒ"´†õH@ÿçî€>̆ÁÁìi Àa‡la
+ø§!u
+Hü¶÷pýO
+øM|D“ü Ñ¢=…ôìap°6šØFtòÿaêßÅU<Hm¨ËÏò?‡ô_i¨éý¿´‹«†´Ðö0êßRcØßÞ´`ö—gÕ±P$ÂN倄B‡î*/˜½.kçÀ¡Hwد8eÿoĹý² ÖÔ7304øû<åt¡ÖÐÛõŸª?Å¿ò›‰ÓÁ ¼ s!A!!QH¼þsgù¯^Ê(;´=E\1q ŠÁ@½iˆ›A$1à@ ìa^ Ì‹h,ˆBc‰ Ä™øp4†æçqJˆ`Ÿ¡_$)€õ“ 6øMâ øþ?$%	€mÿ!Qb;´‹ôŸ„èû‰ÞÀû·@ #þ@¢Âé$ÖGþR Øå7B„ 0ê$öBÿ6CÔ¢Q°?ÒÄ·rý&6r%n!ÚþÑ?æ$J~;#6ÃzþQŸh͆ù;ðß÷.ÚëHD 	‹Aˆs’$Ä„|ÿÎ΃¡°¿¾)âöü‡áâ®Á`^0;šñ´L°Ó³ÊÐ?å—}…7Iï:¼Õ~S?øž6hì	)2·ãžÛÍé2“┋ôKKžG,x½n•Í@·Ø¤á“%œÍRŠO‹ÉNŠ–÷'W®ý 5†šÊ¡Ý/b¤:ӝ	¦ÙÍé[-k/tù”—©œ$
+æ¸ò†Ô`q	•¤QXHÙuNýóIná¢aSžçâȧzƒüœÂξ˜ÜF×z\8|yöyü‰Åîçys¦´aqKTÏð¨ãˆÒ­& ÊýòQjUõÑaqX®O¤òzljH6-*®üŽ;n¸cî¾<ÝOð!a(¤ó¹¦§°`ÙR^º;᪶i5Q“º/xkçþªBûKµI iѸH~ååó~g>½Quwj—=¼æ{bEØL¢"Ä×J7~öq’ú4÷Ô¬Ð~™çT2…EcZIZòåȦ9Ýî£[ðõ¸µò.ê›…TÑs¶ª/DÌ…'
+tÈžæIjŠœbV_^3À¡ì¬•›ê‹ýV¤“–â«´øO©}MO“¡ýOÔÆð‡ìqOs\8ÃÌ’û0½0qÕmleÑV4ª‘Ø1)“èIÜ1tØgx‘Áâe½또Öå½ó½Äxx?µª¹×jÝ2ɸ*Ñ75±»×}xÄzßì°î.Ï\=ooŠÚ2ûݽ¯ã4âÏôy•¯Ñó_‰{<ržj#kêõÕ’ðf¿ÞÍ{n‹—hDŸ²Äó5Û¹Ýò"Î\;/}MÔU÷8÷Ë~¬œÃÀE6:¼ªF¬A(*-|É
+!\–'ºZJñ]ëruS»Ðz‚`c鹺½ÚV`w×(’
+©\­)õR¤w¢®‘ð‚fѲW…%¾³ñûR‹HP^͇7>"[÷Õ¹3ÙqõúÍoÙ¯zëÄ…ÚÙ5»“"Ýíö?¾µze"Tª®BN@Ä;|[·ŠY0)ÃS·™%_ö+.DM.´ë.'çtÏ“S±²mw&eJ#Žz:R‡Ï^Ê7µKëêîØKex7Þá¡uÁ¸nßÙ Ik7Þ5¾pÓ›$]8+E“é”Î×á¢Ú-µÑƒ:’b”Ùó÷+ÉŒD—3)úµw´Ã6kZx›Ške—5DPõ ÷$µä^·¼ÃÊ‚™Ç"1˜>œê‰ov7IÈ~íöxäý² ÷Ï(G	ñŒai·sÇ3îOýãÛ±ºnoJ¬jè7bæ|ç8oÑÑ8}•ˆG~Π’?½jTÜ:ºî§ÿ"K/l	\”\Šç]
+F^@Ü$íä¯*é±ÉòHhqÅÄô@$Z6üNä
+É4TVñkoä>“…<‚Ÿõ§½½ÅšOßËÏTî*ÈÍŠŒåå˜}6ò=Ptÿ´3d³K±Ì^À¯MðƈÅm·Š›+Tª÷ç<Çr¤X›G=k'€6ì*'òná#Nä´×'˜]¸ºMÊþób.™Ã·±‰=÷-j‚Ô.(ðáu÷Û´›éØÄ áhðÛödj
+¾ÅSÙËÎÌCÏÙî°(Ëzéê&PõÚ
+',4É.†Ä
+(\ò륈9(_ý’?Ü<90Ôv©·~JD >|†ž©‡lœ~VèÝûsì¢/âáçøpæ¹øvÀõø~->cbèŽÜñ"˜Âè~;[¼¿P°ýdI¥Ó׫?8*±Ùœd^d.Í®ÍäØyáG”jÞ×Än„CfC溗b~‚ö%žR05Õñ”2§…8¦9yÖ=cóíž$쥼e^=‰ý-cjhkÒ»{i9…Ff—ñãw0Ò’¬#ù¹ÓíbY\èŠ¨ÿUe£,•	–^±ìäÀƒ±Á{ù$‘hœþªp[Ã˹p·_Nô|¤ÆÓŸášoíÛ+;îÝvþ×†q£×º4ç|^2·ë{jÈ„éNŸevRÂ1¢xn._Y'U[š<üPY2™¨ÍzxQQ»¦]NÖæ$™Ìßeò'œÃhÍæ‘ð(-O±ýœÊ^ËDyaž…1£§ì1'è¾O¥%SçúÛ”ÌæÏ—˜
+°´ø )òä›v~óóO=ôLbNÝE><ðpLMƃ}WÅ”…®Þ¿sÝ ú½@g,Sõû¸·˜†ôII'i+|e—ue‰­Á˜ßûNé꺾Û.nCbæù·¦ñÖ.ËNŒ/ïð“bÕ ~–þÅu	*äuÕæÚd³ Î	•EÖÕmG¶«Ï;5ÉÒÇìgâ<ܳõѽGT<OrXM£R[ùbÍl4´ì	hb3;åuÊòŽjö;éÆ[U­³{ƒÍÚÔ=ÁËeJé l­²@CßR¸Ç»nk¾ÿÀ#-.g|[´D]“«5Fxq¬m‰gܤ¢ýŠñZÆð£-~ÇÙ·º_A_†è`TiQ›	Y†<tËWR·Œd&õ½¢pFÒ#1v²¯xÉ’:†Š$”V£Aö-v›ß6ï©ÊuUÇóTÑ+™Rþøø9=¨+‹ÆæJêÉ,#û¼èébþd\,Æãu«œ½ȍRËâÒÜ
+ÅWJ[«SUÉæΧd_]Oœ§|cYÂFésÛKGW".zÓÓØ-¿ü>b¸Í¾Ûyì¤c—7v¦a4÷Ö•3“P®å ‚IPéù¬Ì±ˏlm´˜]©‚ãc¢>AEhù4ÖÜKcPºKÙyƒn",»CÕjŒ8ñsÜxÎÅkABA¹AÜVçAÑ8£K`ÍûEˆA)£ë|\‡M,¨{ñXŸSPå¹7„õ¤½é9ÁÂVÇ*‡`§Õ§Ð.¸ê68x%ë
+Æ0*ÊÆ~D­þ$oÚΖʮך2+ÄZÝñIÑÇh•¬2Žix…‚ù(
+¬hI"ˆ2¨ºÙè¡;´ç:
+{¶ŒÅL&®COÛQkÍù³¶ët9Ç¢ÿh’<eÌŒ»ÒEC;í“5Ó8c¬;¾U“ãÈûÐ SìÔ3ÁõØj+긜_qö˜€¿ïä³ÙÌ}öÒ_œw‹Ý ‘·Y·“šÀ’È~ðÇÅE¿‹¤"+óB}’Ѧ>¹¾ošÈÑ>£ëÛš@^eZh¨{B5Ó×À{ò)Ör]·p›ëÝê>'äd6%¡×=“	yÙÌ…\ä©›|øvn–ZÅÒÿ4×6UŠßJ°¢Ò0Ÿükkf'Hu´Mò‡þrTØ•ËAg‹åq°X}N7i¼íaxƒ–›J`;×3Pæ}Õ¥ÿ\'êc¸¿Ñ¶ï_‚Ëø–!ú©nÕ^ˆSœa‘Z/ÌMÝHR÷Í$§¢{ó|Hw	_P\ii›·Q=¹9LJ°šrÁfv;ë]MŒ4a’+Aía8èpÝÄϬ†Uö¾àœiœÄúü!E©sšX9-šßß%•0òÔGŽÊû³ínAÈ‘J¨wð¡Gâ‡ð(!wçKßå“›½E=‘§eTEw»¦XÆï ò”÷¿H%c®*?›Ê?š¯hÎïÀðêðöðæ¶ÛH¡×Zµ7/:©‘Ód7úÝÖ'S
+¨j‹-òˆñ•¤;¸ë5žÀ¡ˆ}zëÄGß=æú¼®¾é­.ÀýhŸ­L »jAÖ†4³nb çꛏLœ_2æŠ+½³ªUÞ‘@š~6"ÌgáÁ/EYdL¤ø®x½';˜ÉT4{³0£[D¾‚#?’Ö|¿Z“Í}RdµÞn®EÚ¾O“mÉNZ¢Ûç» ¸l*é	Ö0\óM˜ˆK¥yÂOÚ£ÒAªUÄYá»û¾¹í°³õl­7ƒ¶›‡ÙÂÚ(¯xáCÞ¶Û›¾e®V‡X^Jø*LÍ°ƒ@(Ä;Ž¨
+¶ÌÉ@Çá]3ìŽèVJç^<ƒ-kÿ%äc•%[yÂÛE£Ûz8«Ã‘“3bˆô’KÇ™x‘­€íé
+vù #ÂÁ_e:Ô7¸žŸ/€·Å_ÚÌS(b×™¯z·ÄÓ€f©5Ùb2¦«èê©@ư❷›V_Gn,~ÏoS?*Nro¬X±~ãPÄáõÊ$¥Wy{Ы?T1•4ô6ÿ;‡+?ɽŒÆÉÀxÚlF ¤œÒsŠ*q¹Ïoó€ "Ù—%Ui,rŒ<àîé…p¸é‰ƒ+#ÃÖÉ]1ï^k+¾gýþíuùmµ˜ê¦µÃx¸^gð̱%»ÄBcQ¦Émübc5Û§=˪ET†›ÅôA˜-gtÔ"bÕ–Òy8ä?0_fÒì?ó®Ãó¢:S.>>pãÞîÞ^ÆPxG* nºxöùwÍK[L •ÄLø³ÔOe.­¨ì+	[&_g?x¥º¸MTeÝ©™NEX Iï¸N{0í#îÇî­y§$}çM¿Ù¶›×¬DÉøcf¢8džòtî½øµî¹JN¤È!8Öü3óJ¢Ø©VZR)Ùþí–NŸì.¤Òèlпᢴ3|9Œ«Ø)fi£Y`Nò
+nÑIjcÊxc2)õ𡵲ƒí5MsK AÄCûÖ×—Ô¹Ú¹S{ÀCðBÇŠ%ßמZŒ08¾¨¥œ÷0±eÆ䜏;çЛcLç)ïŠÄ<¡×,ó¥‡Íò’¹ûÖ˜Tº¦é{ÜÊ[¼`Ùûˆí~´”ÒÏ>vè•?uÉ«^d‰èØ2­ÚÔƒgw®6‡”{7ñ—rêÍÒS
+’n÷Í>» ’™Jr¾)å/H3
+\8®{Y(ïÓ½®½|¯>1-"Våß}…±šwguŒÑÛPà¥(Ó:._‹ú0½^×8>û¼ˆ ëºÏöã¸YuwÞ­gUÁÝän¯by-¥µ©drÃ_ª[
+Ε²JLgΐ@X[ü©Ëz¾	TL»ËñðÖ"…«›“¢¶èá “vÝ¢ƒBª&­Òkùc•ª¯oÜépŽ)ŦP_׌Ü1ó[J£}¬+È’ïahÓœx˜L›¼¶S›û„›Þì^ƒ²H¨‹/†jÖ 8|ÆC·bûòKî¦ÔýHf@Šb¥Eõ\’Ø[£8ñ]e	%á/×p0(lräŸu3¾AB‚¸©}ÊÃÔ=Ùš1ÀL*ÏÓ8Nò•ÊÛJÕ–—üIõ‘à®tëŒ@´ñÙ`܉~ç÷ܧڪ¸*Ô›-ʼn|g—U_9êÊü—ƒAŒ›Z(LÄ5æ~Í!÷Óµ¬Èö¬yÖÙ)Š6µoŒÜ ‚ÁíÄø)”´~pžQÐïêóV%î¯ÁwëâžD|ºÓx¼z¬6w —Û(<ìßÁ K>v,0aø¥5M][O©Q‘Ïê±MÇVkªÃ4MëÐÓª	a[É^+B߀#Txä‹£©øA±ä/.îsîé_èX\‹QaŽ·„è61;ù'¼5t~p&êâãlɁ\'«®ƒÈÿÚFu
 endstream
 endobj
 2163 0 obj <<
 /Type /FontDescriptor
-/FontName /CQSJEB+CMR12
+/FontName /LRZSTZ+CMR12
 /Flags 4
 /FontBBox [-34 -251 988 750]
 /Ascent 694
@@ -10149,7 +10139,7 @@
 /ItalicAngle 0
 /StemV 65
 /XHeight 431
-/CharSet (/J/O/R/V/b/c/comma/e/eight/i/j/l/m/n/o/period/r/t/two/zero)
+/CharSet (/J/R/S/V/b/comma/e/eight/i/j/l/m/n/o/one/p/period/r/t/two/zero)
 /FontFile 2162 0 R
 >> endobj
 2164 0 obj <<
@@ -11085,7 +11075,7 @@
 888 0 obj <<
 /Type /Font
 /Subtype /Type1
-/BaseFont /CQSJEB+CMR12
+/BaseFont /LRZSTZ+CMR12
 /FontDescriptor 2163 0 R
 /FirstChar 44
 /LastChar 116
@@ -13083,48 +13073,48 @@
 /Limits [(id2430589) (id2457963)]
 >> endobj
 2221 0 obj <<
-/Names [(id2458342) 1744 0 R (id2458417) 1752 0 R (id2460192) 1678 0 R (id2461270) 1615 0 R (id2461808) 2122 0 R (id2462089) 1256 0 R]
-/Limits [(id2458342) (id2462089)]
+/Names [(id2458342) 1744 0 R (id2458417) 1752 0 R (id2460192) 1678 0 R (id2461270) 1615 0 R (id2462089) 1256 0 R (id2462775) 1232 0 R]
+/Limits [(id2458342) (id2462775)]
 >> endobj
 2222 0 obj <<
-/Names [(id2462775) 1232 0 R (id2463576) 1336 0 R (id2463599) 1337 0 R (id2463675) 1338 0 R (id2463736) 1339 0 R (id2463821) 1345 0 R]
-/Limits [(id2462775) (id2463821)]
+/Names [(id2463576) 1336 0 R (id2463599) 1337 0 R (id2463675) 1338 0 R (id2463736) 1339 0 R (id2463821) 1345 0 R (id2464697) 1876 0 R]
+/Limits [(id2463576) (id2464697)]
 >> endobj
 2223 0 obj <<
-/Names [(id2464697) 1876 0 R (id2464708) 2072 0 R (id2465283) 1656 0 R (id2465321) 1657 0 R (id2465410) 1665 0 R (id2465771) 1268 0 R]
-/Limits [(id2464697) (id2465771)]
+/Names [(id2464708) 2072 0 R (id2465283) 1656 0 R (id2465321) 1657 0 R (id2465410) 1665 0 R (id2465771) 1268 0 R (id2467197) 1865 0 R]
+/Limits [(id2464708) (id2467197)]
 >> endobj
 2224 0 obj <<
-/Names [(id2467197) 1865 0 R (id2468764) 1866 0 R (id2469753) 2027 0 R (id2470155) 1321 0 R (id2470168) 1322 0 R (id2470215) 1323 0 R]
-/Limits [(id2467197) (id2470215)]
+/Names [(id2468764) 1866 0 R (id2469753) 2027 0 R (id2470155) 1321 0 R (id2470168) 1322 0 R (id2470215) 1323 0 R (id2470251) 1324 0 R]
+/Limits [(id2468764) (id2470251)]
 >> endobj
 2225 0 obj <<
-/Names [(id2470251) 1324 0 R (id2470275) 1325 0 R (id2470312) 1330 0 R (id2470386) 1331 0 R (id2474298) 1238 0 R (id2474442) 1979 0 R]
-/Limits [(id2470251) (id2474442)]
+/Names [(id2470275) 1325 0 R (id2470312) 1330 0 R (id2470386) 1331 0 R (id2474298) 1238 0 R (id2474442) 1979 0 R (id2474461) 2121 0 R]
+/Limits [(id2470275) (id2474461)]
 >> endobj
 2226 0 obj <<
-/Names [(id2474461) 2121 0 R (id2474704) 1237 0 R (id2475932) 1825 0 R (id2477574) 1881 0 R (id2479102) 1305 0 R (id2479218) 1311 0 R]
-/Limits [(id2474461) (id2479218)]
+/Names [(id2474704) 1237 0 R (id2475932) 1825 0 R (id2477574) 1881 0 R (id2479102) 1305 0 R (id2479218) 1311 0 R (id2479224) 1312 0 R]
+/Limits [(id2474704) (id2479224)]
 >> endobj
 2227 0 obj <<
-/Names [(id2479224) 1312 0 R (id2479234) 1313 0 R (id2479243) 1314 0 R (id2479255) 1315 0 R (id2479266) 1316 0 R (id2479508) 1290 0 R]
-/Limits [(id2479224) (id2479508)]
+/Names [(id2479234) 1313 0 R (id2479243) 1314 0 R (id2479255) 1315 0 R (id2479266) 1316 0 R (id2479508) 1290 0 R (id2479537) 1291 0 R]
+/Limits [(id2479234) (id2479537)]
 >> endobj
 2228 0 obj <<
-/Names [(id2479537) 1291 0 R (id2479571) 1292 0 R (id2479577) 1293 0 R (id2481069) 1647 0 R (id2481484) 1827 0 R (id2481519) 1832 0 R]
-/Limits [(id2479537) (id2481519)]
+/Names [(id2479571) 1292 0 R (id2479577) 1293 0 R (id2481069) 1647 0 R (id2481484) 1827 0 R (id2481519) 1832 0 R (id2482016) 1638 0 R]
+/Limits [(id2479571) (id2482016)]
 >> endobj
 2229 0 obj <<
-/Names [(id2482016) 1638 0 R (id2482354) 1711 0 R (id2482366) 1712 0 R (id2482379) 1713 0 R (id2482391) 1714 0 R (id2482404) 1715 0 R]
-/Limits [(id2482016) (id2482404)]
+/Names [(id2482354) 1711 0 R (id2482366) 1712 0 R (id2482379) 1713 0 R (id2482391) 1714 0 R (id2482404) 1715 0 R (id2482416) 1716 0 R]
+/Limits [(id2482354) (id2482416)]
 >> endobj
 2230 0 obj <<
-/Names [(id2482416) 1716 0 R (id2482429) 1721 0 R (id2482442) 1722 0 R (id2482456) 1723 0 R (id2482483) 1724 0 R (id2482605) 1833 0 R]
-/Limits [(id2482416) (id2482605)]
+/Names [(id2482429) 1721 0 R (id2482442) 1722 0 R (id2482456) 1723 0 R (id2482483) 1724 0 R (id2482605) 1833 0 R (id2482655) 1840 0 R]
+/Limits [(id2482429) (id2482655)]
 >> endobj
 2231 0 obj <<
-/Names [(id2482655) 1840 0 R (id2483067) 1633 0 R (id2485399) 2026 0 R (id2486163) 2016 0 R (id2486240) 1710 0 R (id2489320) 1611 0 R]
-/Limits [(id2482655) (id2489320)]
+/Names [(id2483067) 1633 0 R (id2483416) 2122 0 R (id2485399) 2026 0 R (id2486163) 2016 0 R (id2486240) 1710 0 R (id2489320) 1611 0 R]
+/Limits [(id2483067) (id2489320)]
 >> endobj
 2232 0 obj <<
 /Names [(id2489697) 2078 0 R (id2490718) 1679 0 R (id2491544) 1231 0 R (id2495000) 2071 0 R (id2499011) 1620 0 R (id2499075) 1627 0 R]
@@ -13456,15 +13446,15 @@
 >> endobj
 2314 0 obj <<
 /Kids [2217 0 R 2218 0 R 2219 0 R 2220 0 R 2221 0 R 2222 0 R]
-/Limits [(chapter.8) (id2463821)]
+/Limits [(chapter.8) (id2464697)]
 >> endobj
 2315 0 obj <<
 /Kids [2223 0 R 2224 0 R 2225 0 R 2226 0 R 2227 0 R 2228 0 R]
-/Limits [(id2464697) (id2481519)]
+/Limits [(id2464708) (id2482016)]
 >> endobj
 2316 0 obj <<
 /Kids [2229 0 R 2230 0 R 2231 0 R 2232 0 R 2233 0 R 2234 0 R]
-/Limits [(id2482016) (id2501994)]
+/Limits [(id2482354) (id2501994)]
 >> endobj
 2317 0 obj <<
 /Kids [2235 0 R 2236 0 R 2237 0 R 2238 0 R 2239 0 R 2240 0 R]
@@ -13520,11 +13510,11 @@
 >> endobj
 2330 0 obj <<
 /Kids [2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R]
-/Limits [(CodingSuggestions) (id2481519)]
+/Limits [(CodingSuggestions) (id2482016)]
 >> endobj
 2331 0 obj <<
 /Kids [2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R]
-/Limits [(id2482016) (page.53)]
+/Limits [(id2482354) (page.53)]
 >> endobj
 2332 0 obj <<
 /Kids [2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R]
@@ -13551,8 +13541,8 @@
 >> endobj
 2337 0 obj <<
 /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20081002120814+02'00')
-/ModDate (D:20081002120814+02'00')
+/CreationDate (D:20080918135406+02'00')
+/ModDate (D:20080918135406+02'00')
 /Trapped /False
 /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
 >> endobj
@@ -13564,2343 +13554,2343 @@
 0000000004 00000 f 
 0000000000 00000 f 
 0000000015 00000 n 
-0000028934 00000 n 
-0000511256 00000 n 
+0000028937 00000 n 
+0000511400 00000 n 
 0000000061 00000 n 
 0000000090 00000 n 
-0000332533 00000 n 
-0000511169 00000 n 
+0000332414 00000 n 
+0000511313 00000 n 
 0000000135 00000 n 
 0000000162 00000 n 
-0000080905 00000 n 
-0000511042 00000 n 
+0000080908 00000 n 
+0000511186 00000 n 
 0000000205 00000 n 
 0000000243 00000 n 
-0000083101 00000 n 
-0000510931 00000 n 
+0000083104 00000 n 
+0000511075 00000 n 
 0000000289 00000 n 
 0000000341 00000 n 
-0000083226 00000 n 
-0000510857 00000 n 
+0000083229 00000 n 
+0000511001 00000 n 
 0000000389 00000 n 
 0000000424 00000 n 
-0000083352 00000 n 
-0000510770 00000 n 
+0000083355 00000 n 
+0000510914 00000 n 
 0000000472 00000 n 
 0000000504 00000 n 
-0000085901 00000 n 
-0000510683 00000 n 
+0000085904 00000 n 
+0000510827 00000 n 
 0000000552 00000 n 
 0000000589 00000 n 
-0000086026 00000 n 
-0000510596 00000 n 
+0000086029 00000 n 
+0000510740 00000 n 
 0000000637 00000 n 
 0000000669 00000 n 
-0000088477 00000 n 
-0000510509 00000 n 
+0000088480 00000 n 
+0000510653 00000 n 
 0000000717 00000 n 
 0000000747 00000 n 
-0000091044 00000 n 
-0000510422 00000 n 
+0000091047 00000 n 
+0000510566 00000 n 
 0000000795 00000 n 
 0000000828 00000 n 
-0000091170 00000 n 
-0000510335 00000 n 
+0000091173 00000 n 
+0000510479 00000 n 
 0000000876 00000 n 
 0000000912 00000 n 
-0000091296 00000 n 
-0000510248 00000 n 
+0000091299 00000 n 
+0000510392 00000 n 
 0000000960 00000 n 
 0000000995 00000 n 
-0000094059 00000 n 
-0000510174 00000 n 
+0000094062 00000 n 
+0000510318 00000 n 
 0000001043 00000 n 
 0000001085 00000 n 
-0000098334 00000 n 
-0000510062 00000 n 
+0000098337 00000 n 
+0000510206 00000 n 
 0000001131 00000 n 
 0000001175 00000 n 
-0000098458 00000 n 
-0000509951 00000 n 
+0000098461 00000 n 
+0000510095 00000 n 
 0000001223 00000 n 
 0000001258 00000 n 
-0000104405 00000 n 
-0000509877 00000 n 
+0000104408 00000 n 
+0000510021 00000 n 
 0000001311 00000 n 
 0000001343 00000 n 
-0000104531 00000 n 
-0000509803 00000 n 
+0000104534 00000 n 
+0000509947 00000 n 
 0000001396 00000 n 
 0000001428 00000 n 
-0000104657 00000 n 
-0000509678 00000 n 
+0000104660 00000 n 
+0000509822 00000 n 
 0000001476 00000 n 
 0000001519 00000 n 
-0000104783 00000 n 
-0000509604 00000 n 
+0000104786 00000 n 
+0000509748 00000 n 
 0000001572 00000 n 
 0000001602 00000 n 
-0000106685 00000 n 
-0000509480 00000 n 
+0000106688 00000 n 
+0000509624 00000 n 
 0000001655 00000 n 
 0000001692 00000 n 
-0000106811 00000 n 
-0000509406 00000 n 
+0000106814 00000 n 
+0000509550 00000 n 
 0000001750 00000 n 
 0000001794 00000 n 
-0000106937 00000 n 
-0000509332 00000 n 
+0000106940 00000 n 
+0000509476 00000 n 
 0000001852 00000 n 
 0000001896 00000 n 
-0000108177 00000 n 
-0000509219 00000 n 
+0000108180 00000 n 
+0000509363 00000 n 
 0000001949 00000 n 
 0000001984 00000 n 
-0000108303 00000 n 
-0000509143 00000 n 
+0000108306 00000 n 
+0000509287 00000 n 
 0000002042 00000 n 
 0000002076 00000 n 
-0000108429 00000 n 
-0000509052 00000 n 
+0000108432 00000 n 
+0000509196 00000 n 
 0000002135 00000 n 
 0000002167 00000 n 
-0000108556 00000 n 
-0000508960 00000 n 
+0000108559 00000 n 
+0000509104 00000 n 
 0000002226 00000 n 
 0000002259 00000 n 
-0000108683 00000 n 
-0000508868 00000 n 
+0000108686 00000 n 
+0000509012 00000 n 
 0000002318 00000 n 
 0000002352 00000 n 
-0000108810 00000 n 
-0000508776 00000 n 
+0000108813 00000 n 
+0000508920 00000 n 
 0000002411 00000 n 
 0000002474 00000 n 
-0000110143 00000 n 
-0000508684 00000 n 
+0000110146 00000 n 
+0000508828 00000 n 
 0000002533 00000 n 
 0000002575 00000 n 
-0000110270 00000 n 
-0000508592 00000 n 
+0000110273 00000 n 
+0000508736 00000 n 
 0000002634 00000 n 
 0000002694 00000 n 
-0000110397 00000 n 
-0000508500 00000 n 
+0000110400 00000 n 
+0000508644 00000 n 
 0000002753 00000 n 
 0000002834 00000 n 
-0000110524 00000 n 
-0000508408 00000 n 
+0000110527 00000 n 
+0000508552 00000 n 
 0000002893 00000 n 
 0000002946 00000 n 
-0000110651 00000 n 
-0000508316 00000 n 
+0000110654 00000 n 
+0000508460 00000 n 
 0000003006 00000 n 
 0000003075 00000 n 
-0000111957 00000 n 
-0000508224 00000 n 
+0000111960 00000 n 
+0000508368 00000 n 
 0000003135 00000 n 
 0000003198 00000 n 
-0000112084 00000 n 
-0000508132 00000 n 
+0000112087 00000 n 
+0000508276 00000 n 
 0000003258 00000 n 
 0000003320 00000 n 
-0000113703 00000 n 
-0000508040 00000 n 
+0000113706 00000 n 
+0000508184 00000 n 
 0000003380 00000 n 
 0000003441 00000 n 
-0000113830 00000 n 
-0000507948 00000 n 
+0000113833 00000 n 
+0000508092 00000 n 
 0000003501 00000 n 
 0000003590 00000 n 
-0000113957 00000 n 
-0000507856 00000 n 
+0000113960 00000 n 
+0000508000 00000 n 
 0000003650 00000 n 
 0000003714 00000 n 
-0000114082 00000 n 
-0000507764 00000 n 
+0000114085 00000 n 
+0000507908 00000 n 
 0000003774 00000 n 
 0000003852 00000 n 
-0000115526 00000 n 
-0000507672 00000 n 
+0000115529 00000 n 
+0000507816 00000 n 
 0000003912 00000 n 
 0000003987 00000 n 
-0000115653 00000 n 
-0000507580 00000 n 
+0000115656 00000 n 
+0000507724 00000 n 
 0000004047 00000 n 
 0000004110 00000 n 
-0000117460 00000 n 
-0000507488 00000 n 
+0000117463 00000 n 
+0000507632 00000 n 
 0000004170 00000 n 
 0000004261 00000 n 
-0000117587 00000 n 
-0000507396 00000 n 
+0000117590 00000 n 
+0000507540 00000 n 
 0000004321 00000 n 
 0000004420 00000 n 
-0000117714 00000 n 
-0000507304 00000 n 
+0000117717 00000 n 
+0000507448 00000 n 
 0000004480 00000 n 
 0000004560 00000 n 
-0000119139 00000 n 
-0000507212 00000 n 
+0000119142 00000 n 
+0000507356 00000 n 
 0000004620 00000 n 
 0000004699 00000 n 
-0000120438 00000 n 
-0000507120 00000 n 
+0000120441 00000 n 
+0000507264 00000 n 
 0000004759 00000 n 
 0000004809 00000 n 
-0000120565 00000 n 
-0000507028 00000 n 
+0000120568 00000 n 
+0000507172 00000 n 
 0000004869 00000 n 
 0000004934 00000 n 
-0000122044 00000 n 
-0000506936 00000 n 
+0000122047 00000 n 
+0000507080 00000 n 
 0000004994 00000 n 
 0000005081 00000 n 
-0000122171 00000 n 
-0000506844 00000 n 
+0000122174 00000 n 
+0000506988 00000 n 
 0000005141 00000 n 
 0000005202 00000 n 
-0000126068 00000 n 
-0000506752 00000 n 
+0000126071 00000 n 
+0000506896 00000 n 
 0000005262 00000 n 
 0000005356 00000 n 
-0000126195 00000 n 
-0000506660 00000 n 
+0000126198 00000 n 
+0000506804 00000 n 
 0000005416 00000 n 
 0000005498 00000 n 
-0000126322 00000 n 
-0000506568 00000 n 
+0000126325 00000 n 
+0000506712 00000 n 
 0000005558 00000 n 
 0000005612 00000 n 
-0000128105 00000 n 
-0000506490 00000 n 
+0000128108 00000 n 
+0000506634 00000 n 
 0000005672 00000 n 
 0000005722 00000 n 
-0000131600 00000 n 
-0000506359 00000 n 
+0000131603 00000 n 
+0000506503 00000 n 
 0000005771 00000 n 
 0000005825 00000 n 
-0000131727 00000 n 
-0000506280 00000 n 
+0000131730 00000 n 
+0000506424 00000 n 
 0000005879 00000 n 
 0000005916 00000 n 
-0000136283 00000 n 
-0000506148 00000 n 
+0000136286 00000 n 
+0000506292 00000 n 
 0000005970 00000 n 
 0000006002 00000 n 
-0000136410 00000 n 
-0000506069 00000 n 
+0000136413 00000 n 
+0000506213 00000 n 
 0000006061 00000 n 
 0000006155 00000 n 
-0000138035 00000 n 
-0000505976 00000 n 
+0000138038 00000 n 
+0000506120 00000 n 
 0000006214 00000 n 
 0000006266 00000 n 
-0000138162 00000 n 
-0000505883 00000 n 
+0000138165 00000 n 
+0000506027 00000 n 
 0000006325 00000 n 
 0000006368 00000 n 
-0000138289 00000 n 
-0000505790 00000 n 
+0000138292 00000 n 
+0000505934 00000 n 
 0000006427 00000 n 
 0000006472 00000 n 
-0000139952 00000 n 
-0000505697 00000 n 
+0000139955 00000 n 
+0000505841 00000 n 
 0000006531 00000 n 
 0000006576 00000 n 
-0000140078 00000 n 
-0000505604 00000 n 
+0000140081 00000 n 
+0000505748 00000 n 
 0000006635 00000 n 
 0000006680 00000 n 
-0000141663 00000 n 
-0000505511 00000 n 
+0000141666 00000 n 
+0000505655 00000 n 
 0000006739 00000 n 
 0000006784 00000 n 
-0000143616 00000 n 
-0000505432 00000 n 
+0000143619 00000 n 
+0000505576 00000 n 
 0000006843 00000 n 
 0000006888 00000 n 
-0000143743 00000 n 
-0000505339 00000 n 
+0000143746 00000 n 
+0000505483 00000 n 
 0000006942 00000 n 
 0000006972 00000 n 
-0000143870 00000 n 
-0000505246 00000 n 
+0000143873 00000 n 
+0000505390 00000 n 
 0000007026 00000 n 
 0000007071 00000 n 
-0000145580 00000 n 
-0000505153 00000 n 
+0000145583 00000 n 
+0000505297 00000 n 
 0000007125 00000 n 
 0000007176 00000 n 
-0000147182 00000 n 
-0000505021 00000 n 
+0000147185 00000 n 
+0000505165 00000 n 
 0000007230 00000 n 
 0000007271 00000 n 
-0000147309 00000 n 
-0000504942 00000 n 
+0000147312 00000 n 
+0000505086 00000 n 
 0000007330 00000 n 
 0000007365 00000 n 
-0000148663 00000 n 
-0000504863 00000 n 
+0000148666 00000 n 
+0000505007 00000 n 
 0000007424 00000 n 
 0000007460 00000 n 
-0000148789 00000 n 
-0000504731 00000 n 
+0000148792 00000 n 
+0000504875 00000 n 
 0000007514 00000 n 
 0000007561 00000 n 
-0000148916 00000 n 
-0000504652 00000 n 
+0000148919 00000 n 
+0000504796 00000 n 
 0000007620 00000 n 
 0000007655 00000 n 
-0000149043 00000 n 
-0000504573 00000 n 
+0000149046 00000 n 
+0000504717 00000 n 
 0000007714 00000 n 
 0000007750 00000 n 
-0000150156 00000 n 
-0000504441 00000 n 
+0000150159 00000 n 
+0000504585 00000 n 
 0000007804 00000 n 
 0000007859 00000 n 
-0000150282 00000 n 
-0000504362 00000 n 
+0000150285 00000 n 
+0000504506 00000 n 
 0000007918 00000 n 
 0000007953 00000 n 
-0000150409 00000 n 
-0000504283 00000 n 
+0000150412 00000 n 
+0000504427 00000 n 
 0000008012 00000 n 
 0000008048 00000 n 
-0000150536 00000 n 
-0000504151 00000 n 
+0000150539 00000 n 
+0000504295 00000 n 
 0000008102 00000 n 
 0000008143 00000 n 
-0000150663 00000 n 
-0000504072 00000 n 
+0000150666 00000 n 
+0000504216 00000 n 
 0000008202 00000 n 
 0000008237 00000 n 
-0000150790 00000 n 
-0000503993 00000 n 
+0000150793 00000 n 
+0000504137 00000 n 
 0000008296 00000 n 
 0000008332 00000 n 
-0000152121 00000 n 
-0000503861 00000 n 
+0000152124 00000 n 
+0000504005 00000 n 
 0000008387 00000 n 
 0000008423 00000 n 
-0000152247 00000 n 
-0000503782 00000 n 
+0000152250 00000 n 
+0000503926 00000 n 
 0000008483 00000 n 
 0000008519 00000 n 
-0000152373 00000 n 
-0000503703 00000 n 
+0000152376 00000 n 
+0000503847 00000 n 
 0000008579 00000 n 
 0000008616 00000 n 
-0000152500 00000 n 
-0000503571 00000 n 
+0000152503 00000 n 
+0000503715 00000 n 
 0000008671 00000 n 
 0000008713 00000 n 
-0000152627 00000 n 
-0000503492 00000 n 
+0000152630 00000 n 
+0000503636 00000 n 
 0000008773 00000 n 
 0000008809 00000 n 
-0000154242 00000 n 
-0000503413 00000 n 
+0000154245 00000 n 
+0000503557 00000 n 
 0000008869 00000 n 
 0000008906 00000 n 
-0000154369 00000 n 
-0000503295 00000 n 
+0000154372 00000 n 
+0000503439 00000 n 
 0000008961 00000 n 
 0000009004 00000 n 
-0000154496 00000 n 
-0000503216 00000 n 
+0000154499 00000 n 
+0000503360 00000 n 
 0000009064 00000 n 
 0000009100 00000 n 
-0000155886 00000 n 
-0000503137 00000 n 
+0000155889 00000 n 
+0000503281 00000 n 
 0000009160 00000 n 
 0000009197 00000 n 
-0000156013 00000 n 
-0000503006 00000 n 
+0000156016 00000 n 
+0000503150 00000 n 
 0000009246 00000 n 
 0000009302 00000 n 
-0000157855 00000 n 
-0000502888 00000 n 
+0000157858 00000 n 
+0000503032 00000 n 
 0000009356 00000 n 
 0000009403 00000 n 
-0000159427 00000 n 
-0000502809 00000 n 
+0000159430 00000 n 
+0000502953 00000 n 
 0000009462 00000 n 
 0000009497 00000 n 
-0000159554 00000 n 
-0000502730 00000 n 
+0000159557 00000 n 
+0000502874 00000 n 
 0000009556 00000 n 
 0000009592 00000 n 
-0000159681 00000 n 
-0000502598 00000 n 
+0000159684 00000 n 
+0000502742 00000 n 
 0000009646 00000 n 
 0000009690 00000 n 
-0000159808 00000 n 
-0000502519 00000 n 
+0000159811 00000 n 
+0000502663 00000 n 
 0000009749 00000 n 
 0000009784 00000 n 
-0000161620 00000 n 
-0000502440 00000 n 
+0000161623 00000 n 
+0000502584 00000 n 
 0000009843 00000 n 
 0000009879 00000 n 
-0000161747 00000 n 
-0000502308 00000 n 
+0000161750 00000 n 
+0000502452 00000 n 
 0000009933 00000 n 
 0000009982 00000 n 
-0000161874 00000 n 
-0000502229 00000 n 
+0000161877 00000 n 
+0000502373 00000 n 
 0000010041 00000 n 
 0000010076 00000 n 
-0000162001 00000 n 
-0000502150 00000 n 
+0000162004 00000 n 
+0000502294 00000 n 
 0000010135 00000 n 
 0000010171 00000 n 
-0000163532 00000 n 
-0000502018 00000 n 
+0000163535 00000 n 
+0000502162 00000 n 
 0000010225 00000 n 
 0000010264 00000 n 
-0000163658 00000 n 
-0000501939 00000 n 
+0000163661 00000 n 
+0000502083 00000 n 
 0000010323 00000 n 
 0000010358 00000 n 
-0000163784 00000 n 
-0000501860 00000 n 
+0000163787 00000 n 
+0000502004 00000 n 
 0000010417 00000 n 
 0000010453 00000 n 
-0000165603 00000 n 
-0000501742 00000 n 
+0000165606 00000 n 
+0000501886 00000 n 
 0000010507 00000 n 
 0000010547 00000 n 
-0000165730 00000 n 
-0000501663 00000 n 
+0000165733 00000 n 
+0000501807 00000 n 
 0000010606 00000 n 
 0000010641 00000 n 
-0000165857 00000 n 
-0000501584 00000 n 
+0000165860 00000 n 
+0000501728 00000 n 
 0000010700 00000 n 
 0000010736 00000 n 
-0000165983 00000 n 
-0000501453 00000 n 
+0000165986 00000 n 
+0000501597 00000 n 
 0000010785 00000 n 
 0000010843 00000 n 
-0000166110 00000 n 
-0000501335 00000 n 
+0000166113 00000 n 
+0000501479 00000 n 
 0000010897 00000 n 
 0000010936 00000 n 
-0000166237 00000 n 
-0000501256 00000 n 
+0000166240 00000 n 
+0000501400 00000 n 
 0000010995 00000 n 
 0000011030 00000 n 
-0000167349 00000 n 
-0000501177 00000 n 
+0000167352 00000 n 
+0000501321 00000 n 
 0000011089 00000 n 
 0000011125 00000 n 
-0000168820 00000 n 
-0000501059 00000 n 
+0000168823 00000 n 
+0000501203 00000 n 
 0000011179 00000 n 
 0000011214 00000 n 
-0000168947 00000 n 
-0000500980 00000 n 
+0000168950 00000 n 
+0000501124 00000 n 
 0000011273 00000 n 
 0000011308 00000 n 
-0000170089 00000 n 
-0000500901 00000 n 
+0000170092 00000 n 
+0000501045 00000 n 
 0000011367 00000 n 
 0000011403 00000 n 
-0000170216 00000 n 
-0000500770 00000 n 
+0000170219 00000 n 
+0000500914 00000 n 
 0000011452 00000 n 
 0000011502 00000 n 
-0000171742 00000 n 
-0000500652 00000 n 
+0000171745 00000 n 
+0000500796 00000 n 
 0000011556 00000 n 
 0000011596 00000 n 
-0000171869 00000 n 
-0000500573 00000 n 
+0000171872 00000 n 
+0000500717 00000 n 
 0000011655 00000 n 
 0000011690 00000 n 
-0000171996 00000 n 
-0000500494 00000 n 
+0000171999 00000 n 
+0000500638 00000 n 
 0000011749 00000 n 
 0000011785 00000 n 
-0000173503 00000 n 
-0000500376 00000 n 
+0000173506 00000 n 
+0000500520 00000 n 
 0000011839 00000 n 
 0000011884 00000 n 
-0000173630 00000 n 
-0000500297 00000 n 
+0000173633 00000 n 
+0000500441 00000 n 
 0000011943 00000 n 
 0000011978 00000 n 
-0000173757 00000 n 
-0000500218 00000 n 
+0000173760 00000 n 
+0000500362 00000 n 
 0000012037 00000 n 
 0000012073 00000 n 
-0000173884 00000 n 
-0000500087 00000 n 
+0000173887 00000 n 
+0000500231 00000 n 
 0000012122 00000 n 
 0000012192 00000 n 
-0000174011 00000 n 
-0000500008 00000 n 
+0000174014 00000 n 
+0000500152 00000 n 
 0000012246 00000 n 
 0000012283 00000 n 
-0000175585 00000 n 
-0000499915 00000 n 
+0000175588 00000 n 
+0000500059 00000 n 
 0000012337 00000 n 
 0000012371 00000 n 
-0000177242 00000 n 
-0000499836 00000 n 
+0000177245 00000 n 
+0000499980 00000 n 
 0000012425 00000 n 
 0000012459 00000 n 
-0000179195 00000 n 
-0000499719 00000 n 
+0000179198 00000 n 
+0000499863 00000 n 
 0000012508 00000 n 
 0000012545 00000 n 
-0000179322 00000 n 
-0000499601 00000 n 
+0000179325 00000 n 
+0000499745 00000 n 
 0000012599 00000 n 
 0000012640 00000 n 
-0000179449 00000 n 
-0000499522 00000 n 
+0000179452 00000 n 
+0000499666 00000 n 
 0000012699 00000 n 
 0000012752 00000 n 
-0000180579 00000 n 
-0000499443 00000 n 
+0000180582 00000 n 
+0000499587 00000 n 
 0000012811 00000 n 
 0000012857 00000 n 
-0000182822 00000 n 
-0000499325 00000 n 
+0000182825 00000 n 
+0000499469 00000 n 
 0000012911 00000 n 
 0000012952 00000 n 
-0000182948 00000 n 
-0000499246 00000 n 
+0000182951 00000 n 
+0000499390 00000 n 
 0000013011 00000 n 
 0000013059 00000 n 
-0000183075 00000 n 
-0000499153 00000 n 
+0000183078 00000 n 
+0000499297 00000 n 
 0000013118 00000 n 
 0000013167 00000 n 
-0000183202 00000 n 
-0000499074 00000 n 
+0000183205 00000 n 
+0000499218 00000 n 
 0000013226 00000 n 
 0000013276 00000 n 
-0000184103 00000 n 
-0000498942 00000 n 
+0000184106 00000 n 
+0000499086 00000 n 
 0000013320 00000 n 
 0000013360 00000 n 
-0000186260 00000 n 
-0000498824 00000 n 
+0000186263 00000 n 
+0000498968 00000 n 
 0000013407 00000 n 
 0000013455 00000 n 
-0000186386 00000 n 
-0000498745 00000 n 
+0000186389 00000 n 
+0000498889 00000 n 
 0000013504 00000 n 
 0000013540 00000 n 
-0000186704 00000 n 
-0000498652 00000 n 
+0000186707 00000 n 
+0000498796 00000 n 
 0000013589 00000 n 
 0000013637 00000 n 
-0000189166 00000 n 
-0000498559 00000 n 
+0000189169 00000 n 
+0000498703 00000 n 
 0000013686 00000 n 
 0000013724 00000 n 
-0000189677 00000 n 
-0000498466 00000 n 
+0000189680 00000 n 
+0000498610 00000 n 
 0000013773 00000 n 
 0000013811 00000 n 
-0000192451 00000 n 
-0000498387 00000 n 
+0000192454 00000 n 
+0000498531 00000 n 
 0000013860 00000 n 
 0000013895 00000 n 
-0000193736 00000 n 
-0000498255 00000 n 
+0000193739 00000 n 
+0000498399 00000 n 
 0000013942 00000 n 
 0000013994 00000 n 
-0000193862 00000 n 
-0000498176 00000 n 
+0000193865 00000 n 
+0000498320 00000 n 
 0000014043 00000 n 
 0000014084 00000 n 
-0000196303 00000 n 
-0000498083 00000 n 
+0000196306 00000 n 
+0000498227 00000 n 
 0000014133 00000 n 
 0000014176 00000 n 
-0000199739 00000 n 
-0000497990 00000 n 
+0000199742 00000 n 
+0000498134 00000 n 
 0000014225 00000 n 
 0000014271 00000 n 
-0000199866 00000 n 
-0000497897 00000 n 
+0000199869 00000 n 
+0000498041 00000 n 
 0000014320 00000 n 
 0000014366 00000 n 
-0000201865 00000 n 
-0000497779 00000 n 
+0000201868 00000 n 
+0000497923 00000 n 
 0000014415 00000 n 
 0000014452 00000 n 
-0000201992 00000 n 
-0000497700 00000 n 
+0000201995 00000 n 
+0000497844 00000 n 
 0000014506 00000 n 
 0000014543 00000 n 
-0000203703 00000 n 
-0000497607 00000 n 
+0000203706 00000 n 
+0000497751 00000 n 
 0000014597 00000 n 
 0000014633 00000 n 
-0000203828 00000 n 
-0000497528 00000 n 
+0000203831 00000 n 
+0000497672 00000 n 
 0000014687 00000 n 
 0000014740 00000 n 
-0000205589 00000 n 
-0000497396 00000 n 
+0000205592 00000 n 
+0000497540 00000 n 
 0000014787 00000 n 
 0000014832 00000 n 
-0000205715 00000 n 
-0000497317 00000 n 
+0000205718 00000 n 
+0000497461 00000 n 
 0000014881 00000 n 
 0000014923 00000 n 
-0000205842 00000 n 
-0000497224 00000 n 
+0000205845 00000 n 
+0000497368 00000 n 
 0000014972 00000 n 
 0000015013 00000 n 
-0000211101 00000 n 
-0000497091 00000 n 
+0000211104 00000 n 
+0000497235 00000 n 
 0000015062 00000 n 
 0000015107 00000 n 
-0000211228 00000 n 
-0000497012 00000 n 
+0000211231 00000 n 
+0000497156 00000 n 
 0000015161 00000 n 
 0000015202 00000 n 
-0000211355 00000 n 
-0000496919 00000 n 
+0000211358 00000 n 
+0000497063 00000 n 
 0000015256 00000 n 
 0000015297 00000 n 
-0000211482 00000 n 
-0000496826 00000 n 
+0000211485 00000 n 
+0000496970 00000 n 
 0000015351 00000 n 
 0000015397 00000 n 
-0000211609 00000 n 
-0000496733 00000 n 
+0000211612 00000 n 
+0000496877 00000 n 
 0000015451 00000 n 
 0000015492 00000 n 
-0000211736 00000 n 
-0000496640 00000 n 
+0000211739 00000 n 
+0000496784 00000 n 
 0000015546 00000 n 
 0000015587 00000 n 
-0000211862 00000 n 
-0000496547 00000 n 
+0000211865 00000 n 
+0000496691 00000 n 
 0000015641 00000 n 
 0000015683 00000 n 
-0000213154 00000 n 
-0000496454 00000 n 
+0000213157 00000 n 
+0000496598 00000 n 
 0000015737 00000 n 
 0000015779 00000 n 
-0000213281 00000 n 
-0000496361 00000 n 
+0000213284 00000 n 
+0000496505 00000 n 
 0000015833 00000 n 
 0000015879 00000 n 
-0000213408 00000 n 
-0000496268 00000 n 
+0000213411 00000 n 
+0000496412 00000 n 
 0000015933 00000 n 
 0000015979 00000 n 
-0000213535 00000 n 
-0000496175 00000 n 
+0000213538 00000 n 
+0000496319 00000 n 
 0000016034 00000 n 
 0000016082 00000 n 
-0000213662 00000 n 
-0000496082 00000 n 
+0000213665 00000 n 
+0000496226 00000 n 
 0000016137 00000 n 
 0000016185 00000 n 
-0000213789 00000 n 
-0000495989 00000 n 
+0000213792 00000 n 
+0000496133 00000 n 
 0000016240 00000 n 
 0000016283 00000 n 
-0000213916 00000 n 
-0000495896 00000 n 
+0000213919 00000 n 
+0000496040 00000 n 
 0000016338 00000 n 
 0000016381 00000 n 
-0000215650 00000 n 
-0000495803 00000 n 
+0000215653 00000 n 
+0000495947 00000 n 
 0000016436 00000 n 
 0000016484 00000 n 
-0000215777 00000 n 
-0000495724 00000 n 
+0000215780 00000 n 
+0000495868 00000 n 
 0000016539 00000 n 
 0000016587 00000 n 
-0000215903 00000 n 
-0000495592 00000 n 
+0000215906 00000 n 
+0000495736 00000 n 
 0000016636 00000 n 
 0000016681 00000 n 
-0000216030 00000 n 
-0000495513 00000 n 
+0000216033 00000 n 
+0000495657 00000 n 
 0000016735 00000 n 
 0000016771 00000 n 
-0000219212 00000 n 
-0000495434 00000 n 
+0000219215 00000 n 
+0000495578 00000 n 
 0000016825 00000 n 
 0000016863 00000 n 
-0000221728 00000 n 
-0000495355 00000 n 
+0000221731 00000 n 
+0000495499 00000 n 
 0000016912 00000 n 
 0000016956 00000 n 
-0000225714 00000 n 
-0000495262 00000 n 
+0000225717 00000 n 
+0000495406 00000 n 
 0000017003 00000 n 
 0000017051 00000 n 
-0000235282 00000 n 
-0000495169 00000 n 
+0000235285 00000 n 
+0000495313 00000 n 
 0000017098 00000 n 
 0000017145 00000 n 
-0000239472 00000 n 
-0000495051 00000 n 
+0000239475 00000 n 
+0000495195 00000 n 
 0000017192 00000 n 
 0000017229 00000 n 
-0000239598 00000 n 
-0000494972 00000 n 
+0000239601 00000 n 
+0000495116 00000 n 
 0000017278 00000 n 
 0000017312 00000 n 
-0000239725 00000 n 
-0000494840 00000 n 
+0000239728 00000 n 
+0000494984 00000 n 
 0000017361 00000 n 
 0000017400 00000 n 
-0000239851 00000 n 
-0000494761 00000 n 
+0000239854 00000 n 
+0000494905 00000 n 
 0000017454 00000 n 
 0000017494 00000 n 
-0000242378 00000 n 
-0000494682 00000 n 
+0000242381 00000 n 
+0000494826 00000 n 
 0000017548 00000 n 
 0000017588 00000 n 
-0000242505 00000 n 
-0000494564 00000 n 
+0000242508 00000 n 
+0000494708 00000 n 
 0000017637 00000 n 
 0000017676 00000 n 
-0000244590 00000 n 
-0000494499 00000 n 
+0000244593 00000 n 
+0000494643 00000 n 
 0000017730 00000 n 
 0000017795 00000 n 
-0000247610 00000 n 
-0000494366 00000 n 
+0000247613 00000 n 
+0000494510 00000 n 
 0000017839 00000 n 
 0000017884 00000 n 
-0000249984 00000 n 
-0000494248 00000 n 
+0000249987 00000 n 
+0000494392 00000 n 
 0000017931 00000 n 
 0000017982 00000 n 
-0000250110 00000 n 
-0000494169 00000 n 
+0000250113 00000 n 
+0000494313 00000 n 
 0000018031 00000 n 
 0000018060 00000 n 
-0000250237 00000 n 
-0000494090 00000 n 
+0000250240 00000 n 
+0000494234 00000 n 
 0000018109 00000 n 
 0000018149 00000 n 
-0000253416 00000 n 
-0000493958 00000 n 
+0000253419 00000 n 
+0000494102 00000 n 
 0000018197 00000 n 
 0000018239 00000 n 
-0000253542 00000 n 
-0000493840 00000 n 
+0000253545 00000 n 
+0000493984 00000 n 
 0000018289 00000 n 
 0000018343 00000 n 
-0000256171 00000 n 
-0000493761 00000 n 
+0000256174 00000 n 
+0000493905 00000 n 
 0000018398 00000 n 
 0000018446 00000 n 
-0000263727 00000 n 
-0000493682 00000 n 
+0000263730 00000 n 
+0000493826 00000 n 
 0000018501 00000 n 
 0000018557 00000 n 
-0000265616 00000 n 
-0000493550 00000 n 
+0000265619 00000 n 
+0000493694 00000 n 
 0000018607 00000 n 
 0000018695 00000 n 
-0000265743 00000 n 
-0000493471 00000 n 
+0000265746 00000 n 
+0000493615 00000 n 
 0000018750 00000 n 
 0000018808 00000 n 
-0000267393 00000 n 
-0000493392 00000 n 
+0000267396 00000 n 
+0000493536 00000 n 
 0000018863 00000 n 
 0000018932 00000 n 
-0000274921 00000 n 
-0000493260 00000 n 
+0000274924 00000 n 
+0000493404 00000 n 
 0000018982 00000 n 
 0000019041 00000 n 
-0000275048 00000 n 
-0000493195 00000 n 
+0000275051 00000 n 
+0000493339 00000 n 
 0000019096 00000 n 
 0000019164 00000 n 
-0000284802 00000 n 
-0000493077 00000 n 
+0000284805 00000 n 
+0000493221 00000 n 
 0000019214 00000 n 
 0000019249 00000 n 
-0000284928 00000 n 
-0000492998 00000 n 
+0000284931 00000 n 
+0000493142 00000 n 
 0000019304 00000 n 
 0000019362 00000 n 
-0000286409 00000 n 
-0000492919 00000 n 
+0000286412 00000 n 
+0000493063 00000 n 
 0000019417 00000 n 
 0000019470 00000 n 
-0000287948 00000 n 
-0000492787 00000 n 
+0000287951 00000 n 
+0000492931 00000 n 
 0000019518 00000 n 
 0000019566 00000 n 
-0000288074 00000 n 
-0000492669 00000 n 
+0000288077 00000 n 
+0000492813 00000 n 
 0000019616 00000 n 
 0000019657 00000 n 
-0000290675 00000 n 
-0000492590 00000 n 
+0000290678 00000 n 
+0000492734 00000 n 
 0000019712 00000 n 
 0000019761 00000 n 
-0000291058 00000 n 
-0000492497 00000 n 
+0000291061 00000 n 
+0000492641 00000 n 
 0000019816 00000 n 
 0000019872 00000 n 
-0000292342 00000 n 
-0000492418 00000 n 
+0000292345 00000 n 
+0000492562 00000 n 
 0000019927 00000 n 
 0000019978 00000 n 
-0000294018 00000 n 
-0000492300 00000 n 
+0000294021 00000 n 
+0000492444 00000 n 
 0000020028 00000 n 
 0000020059 00000 n 
-0000294401 00000 n 
-0000492235 00000 n 
+0000294404 00000 n 
+0000492379 00000 n 
 0000020114 00000 n 
 0000020155 00000 n 
-0000296039 00000 n 
-0000492103 00000 n 
+0000296042 00000 n 
+0000492247 00000 n 
 0000020203 00000 n 
 0000020254 00000 n 
-0000296164 00000 n 
-0000492038 00000 n 
+0000296167 00000 n 
+0000492182 00000 n 
 0000020304 00000 n 
 0000020342 00000 n 
-0000299543 00000 n 
-0000491920 00000 n 
+0000299546 00000 n 
+0000492064 00000 n 
 0000020390 00000 n 
 0000020454 00000 n 
-0000299669 00000 n 
-0000491841 00000 n 
+0000299672 00000 n 
+0000491985 00000 n 
 0000020504 00000 n 
 0000020541 00000 n 
-0000299796 00000 n 
-0000491748 00000 n 
+0000299799 00000 n 
+0000491892 00000 n 
 0000020591 00000 n 
 0000020633 00000 n 
-0000302406 00000 n 
-0000491669 00000 n 
+0000302409 00000 n 
+0000491813 00000 n 
 0000020683 00000 n 
 0000020726 00000 n 
-0000307836 00000 n 
-0000491536 00000 n 
+0000307839 00000 n 
+0000491680 00000 n 
 0000020770 00000 n 
 0000020819 00000 n 
-0000310147 00000 n 
-0000491457 00000 n 
+0000310150 00000 n 
+0000491601 00000 n 
 0000020867 00000 n 
 0000020924 00000 n 
-0000314938 00000 n 
-0000491339 00000 n 
+0000314941 00000 n 
+0000491483 00000 n 
 0000020972 00000 n 
 0000021027 00000 n 
-0000315064 00000 n 
-0000491260 00000 n 
+0000315067 00000 n 
+0000491404 00000 n 
 0000021077 00000 n 
 0000021110 00000 n 
-0000315191 00000 n 
-0000491167 00000 n 
+0000315194 00000 n 
+0000491311 00000 n 
 0000021160 00000 n 
 0000021224 00000 n 
-0000317828 00000 n 
-0000491074 00000 n 
+0000317831 00000 n 
+0000491218 00000 n 
 0000021274 00000 n 
 0000021316 00000 n 
-0000322943 00000 n 
-0000490981 00000 n 
+0000322946 00000 n 
+0000491125 00000 n 
 0000021366 00000 n 
 0000021441 00000 n 
-0000323069 00000 n 
-0000490902 00000 n 
+0000323072 00000 n 
+0000491046 00000 n 
 0000021491 00000 n 
 0000021551 00000 n 
-0000329914 00000 n 
-0000490783 00000 n 
+0000329917 00000 n 
+0000490927 00000 n 
 0000021595 00000 n 
 0000021632 00000 n 
-0000332028 00000 n 
-0000490679 00000 n 
+0000331909 00000 n 
+0000490823 00000 n 
 0000021680 00000 n 
 0000021729 00000 n 
-0000332154 00000 n 
-0000490600 00000 n 
+0000332035 00000 n 
+0000490744 00000 n 
 0000021779 00000 n 
 0000021814 00000 n 
-0000332281 00000 n 
-0000490521 00000 n 
+0000332162 00000 n 
+0000490665 00000 n 
 0000021864 00000 n 
 0000021896 00000 n 
-0000022215 00000 n 
-0000022451 00000 n 
+0000022218 00000 n 
+0000022454 00000 n 
 0000021948 00000 n 
-0000022327 00000 n 
-0000022389 00000 n 
-0000483889 00000 n 
-0000484912 00000 n 
-0000486661 00000 n 
-0000024529 00000 n 
-0000024699 00000 n 
-0000023844 00000 n 
-0000025063 00000 n 
-0000023696 00000 n 
-0000022536 00000 n 
-0000483743 00000 n 
-0000486223 00000 n 
-0000484767 00000 n 
-0000484330 00000 n 
-0000486369 00000 n 
-0000024881 00000 n 
-0000484035 00000 n 
-0000485491 00000 n 
-0000024344 00000 n 
-0000024461 00000 n 
-0000024508 00000 n 
-0000026456 00000 n 
-0000026606 00000 n 
-0000026757 00000 n 
-0000026932 00000 n 
-0000027106 00000 n 
-0000027275 00000 n 
-0000027430 00000 n 
-0000027578 00000 n 
-0000027730 00000 n 
-0000027915 00000 n 
-0000028075 00000 n 
-0000028228 00000 n 
-0000028398 00000 n 
-0000028548 00000 n 
-0000028719 00000 n 
-0000030308 00000 n 
-0000029118 00000 n 
-0000026212 00000 n 
-0000025241 00000 n 
-0000028872 00000 n 
-0000485929 00000 n 
-0000028994 00000 n 
-0000029056 00000 n 
-0000486077 00000 n 
-0000083163 00000 n 
-0000098396 00000 n 
-0000186323 00000 n 
-0000193799 00000 n 
-0000205652 00000 n 
-0000225777 00000 n 
-0000235345 00000 n 
-0000239535 00000 n 
-0000250047 00000 n 
-0000030481 00000 n 
-0000030652 00000 n 
-0000030797 00000 n 
-0000030964 00000 n 
-0000031134 00000 n 
-0000031283 00000 n 
-0000031428 00000 n 
-0000031579 00000 n 
-0000031749 00000 n 
-0000031896 00000 n 
-0000032047 00000 n 
-0000032260 00000 n 
-0000030088 00000 n 
-0000029255 00000 n 
-0000032198 00000 n 
-0000485784 00000 n 
-0000253479 00000 n 
-0000288011 00000 n 
-0000296102 00000 n 
-0000299606 00000 n 
-0000310210 00000 n 
-0000315001 00000 n 
-0000332091 00000 n 
-0000032671 00000 n 
-0000032497 00000 n 
-0000032397 00000 n 
-0000032609 00000 n 
-0000034171 00000 n 
-0000034323 00000 n 
-0000034472 00000 n 
-0000034624 00000 n 
-0000034778 00000 n 
-0000034932 00000 n 
-0000035086 00000 n 
-0000035240 00000 n 
-0000035393 00000 n 
-0000035547 00000 n 
-0000035701 00000 n 
-0000035855 00000 n 
-0000036009 00000 n 
-0000036161 00000 n 
-0000036315 00000 n 
-0000036474 00000 n 
-0000036632 00000 n 
-0000036786 00000 n 
-0000036945 00000 n 
-0000037104 00000 n 
-0000037268 00000 n 
-0000037432 00000 n 
-0000037590 00000 n 
-0000037754 00000 n 
-0000037918 00000 n 
-0000038082 00000 n 
-0000038246 00000 n 
-0000038409 00000 n 
-0000038573 00000 n 
-0000041389 00000 n 
-0000038800 00000 n 
-0000033815 00000 n 
-0000032712 00000 n 
-0000038737 00000 n 
-0000041553 00000 n 
-0000041718 00000 n 
-0000041883 00000 n 
-0000042049 00000 n 
-0000042215 00000 n 
-0000042381 00000 n 
-0000042547 00000 n 
-0000042713 00000 n 
-0000042879 00000 n 
-0000043045 00000 n 
-0000043209 00000 n 
-0000043375 00000 n 
-0000043540 00000 n 
-0000043706 00000 n 
-0000043872 00000 n 
-0000044038 00000 n 
-0000044204 00000 n 
-0000044370 00000 n 
-0000044535 00000 n 
-0000044701 00000 n 
-0000044867 00000 n 
-0000045032 00000 n 
-0000045198 00000 n 
-0000045353 00000 n 
-0000045513 00000 n 
-0000045673 00000 n 
-0000045838 00000 n 
-0000046003 00000 n 
-0000046168 00000 n 
-0000046332 00000 n 
-0000046497 00000 n 
-0000048289 00000 n 
-0000046726 00000 n 
-0000040974 00000 n 
-0000038911 00000 n 
-0000046662 00000 n 
-0000486779 00000 n 
-0000048453 00000 n 
-0000048618 00000 n 
-0000048778 00000 n 
-0000048937 00000 n 
-0000049097 00000 n 
-0000049257 00000 n 
-0000049422 00000 n 
-0000049587 00000 n 
-0000049747 00000 n 
-0000049912 00000 n 
-0000050077 00000 n 
-0000050237 00000 n 
-0000050400 00000 n 
-0000050565 00000 n 
-0000050725 00000 n 
-0000050889 00000 n 
-0000051053 00000 n 
-0000051214 00000 n 
-0000051380 00000 n 
-0000051546 00000 n 
-0000051707 00000 n 
-0000051873 00000 n 
-0000052039 00000 n 
-0000052200 00000 n 
-0000052365 00000 n 
-0000052530 00000 n 
-0000052685 00000 n 
-0000052845 00000 n 
-0000053009 00000 n 
-0000053174 00000 n 
-0000053334 00000 n 
-0000053499 00000 n 
-0000053664 00000 n 
-0000053824 00000 n 
-0000053989 00000 n 
-0000054154 00000 n 
-0000054314 00000 n 
-0000054478 00000 n 
-0000054643 00000 n 
-0000056639 00000 n 
-0000054867 00000 n 
-0000047801 00000 n 
-0000046825 00000 n 
-0000054803 00000 n 
-0000056803 00000 n 
-0000056968 00000 n 
-0000057123 00000 n 
-0000057282 00000 n 
-0000057447 00000 n 
-0000057612 00000 n 
-0000057772 00000 n 
-0000057937 00000 n 
-0000058102 00000 n 
-0000058257 00000 n 
-0000058417 00000 n 
-0000058582 00000 n 
-0000058745 00000 n 
-0000058905 00000 n 
-0000059070 00000 n 
-0000059234 00000 n 
-0000059389 00000 n 
-0000059549 00000 n 
-0000059709 00000 n 
-0000059869 00000 n 
-0000060023 00000 n 
-0000060183 00000 n 
-0000060348 00000 n 
-0000060513 00000 n 
-0000060672 00000 n 
-0000060837 00000 n 
-0000061002 00000 n 
-0000061167 00000 n 
-0000061316 00000 n 
-0000061468 00000 n 
-0000061623 00000 n 
-0000061778 00000 n 
-0000061933 00000 n 
-0000062088 00000 n 
-0000062242 00000 n 
-0000064158 00000 n 
-0000062459 00000 n 
-0000056187 00000 n 
-0000054966 00000 n 
-0000062395 00000 n 
-0000064312 00000 n 
-0000064467 00000 n 
-0000064622 00000 n 
-0000064777 00000 n 
-0000064932 00000 n 
-0000065092 00000 n 
-0000065251 00000 n 
-0000065411 00000 n 
-0000065563 00000 n 
-0000065718 00000 n 
-0000065872 00000 n 
-0000066027 00000 n 
-0000066187 00000 n 
-0000066347 00000 n 
-0000066507 00000 n 
-0000066667 00000 n 
-0000066826 00000 n 
-0000066986 00000 n 
-0000067145 00000 n 
-0000067305 00000 n 
-0000067465 00000 n 
-0000067626 00000 n 
-0000067787 00000 n 
-0000067948 00000 n 
-0000068108 00000 n 
-0000068269 00000 n 
-0000068429 00000 n 
-0000068584 00000 n 
-0000068744 00000 n 
-0000068904 00000 n 
-0000069059 00000 n 
-0000069212 00000 n 
-0000069365 00000 n 
-0000069518 00000 n 
-0000069673 00000 n 
-0000071889 00000 n 
-0000069892 00000 n 
-0000063706 00000 n 
-0000062584 00000 n 
-0000069828 00000 n 
-0000072048 00000 n 
-0000072208 00000 n 
-0000072362 00000 n 
-0000072522 00000 n 
-0000072670 00000 n 
-0000072823 00000 n 
-0000072978 00000 n 
-0000073133 00000 n 
-0000073287 00000 n 
-0000073443 00000 n 
-0000073604 00000 n 
-0000073764 00000 n 
-0000073919 00000 n 
-0000074080 00000 n 
-0000074241 00000 n 
-0000074397 00000 n 
-0000074558 00000 n 
-0000074712 00000 n 
-0000074873 00000 n 
-0000075032 00000 n 
-0000075186 00000 n 
-0000075342 00000 n 
-0000075502 00000 n 
-0000075663 00000 n 
-0000075823 00000 n 
-0000075979 00000 n 
-0000076140 00000 n 
-0000076294 00000 n 
-0000076449 00000 n 
-0000076603 00000 n 
-0000076759 00000 n 
-0000076914 00000 n 
-0000078228 00000 n 
-0000078378 00000 n 
-0000077134 00000 n 
-0000071464 00000 n 
-0000069991 00000 n 
-0000077070 00000 n 
-0000078532 00000 n 
-0000078686 00000 n 
-0000078842 00000 n 
-0000078998 00000 n 
-0000079154 00000 n 
-0000079310 00000 n 
-0000079466 00000 n 
-0000079615 00000 n 
-0000079769 00000 n 
-0000079925 00000 n 
-0000080145 00000 n 
-0000077992 00000 n 
-0000077246 00000 n 
-0000080081 00000 n 
-0000080538 00000 n 
-0000080358 00000 n 
-0000080257 00000 n 
-0000080474 00000 n 
-0000486904 00000 n 
-0000080967 00000 n 
-0000080789 00000 n 
-0000080580 00000 n 
-0000081257 00000 n 
-0000081141 00000 n 
-0000081040 00000 n 
-0000083478 00000 n 
-0000082857 00000 n 
-0000081299 00000 n 
-0000082973 00000 n 
-0000083037 00000 n 
-0000485637 00000 n 
-0000083288 00000 n 
-0000083414 00000 n 
-0000086152 00000 n 
-0000085721 00000 n 
-0000083604 00000 n 
-0000085837 00000 n 
-0000085963 00000 n 
-0000086088 00000 n 
-0000088603 00000 n 
-0000088297 00000 n 
-0000086264 00000 n 
-0000088413 00000 n 
-0000088539 00000 n 
-0000091422 00000 n 
-0000090864 00000 n 
-0000088715 00000 n 
-0000090980 00000 n 
-0000091106 00000 n 
-0000091232 00000 n 
-0000091358 00000 n 
-0000487029 00000 n 
-0000094185 00000 n 
-0000093879 00000 n 
-0000091547 00000 n 
-0000093995 00000 n 
-0000094121 00000 n 
-0000095647 00000 n 
-0000095467 00000 n 
-0000094297 00000 n 
-0000095583 00000 n 
-0000097634 00000 n 
-0000097827 00000 n 
-0000100958 00000 n 
-0000098583 00000 n 
-0000097479 00000 n 
-0000095746 00000 n 
-0000098270 00000 n 
-0000098519 00000 n 
-0000098049 00000 n 
-0000101540 00000 n 
-0000101146 00000 n 
-0000101353 00000 n 
-0000102094 00000 n 
-0000100794 00000 n 
-0000098722 00000 n 
-0000101714 00000 n 
-0000485201 00000 n 
-0000101778 00000 n 
-0000101840 00000 n 
-0000101904 00000 n 
-0000101968 00000 n 
-0000102032 00000 n 
-0000485057 00000 n 
-0000484475 00000 n 
-0000486515 00000 n 
-0000105164 00000 n 
-0000104225 00000 n 
-0000102288 00000 n 
-0000104341 00000 n 
-0000104467 00000 n 
-0000104593 00000 n 
-0000104719 00000 n 
-0000104845 00000 n 
-0000104909 00000 n 
-0000104973 00000 n 
-0000105037 00000 n 
-0000105101 00000 n 
-0000107063 00000 n 
-0000106441 00000 n 
-0000105276 00000 n 
-0000106557 00000 n 
-0000106621 00000 n 
-0000106747 00000 n 
-0000106873 00000 n 
-0000106999 00000 n 
-0000487154 00000 n 
-0000108937 00000 n 
-0000107997 00000 n 
-0000107175 00000 n 
-0000108113 00000 n 
-0000108239 00000 n 
-0000108365 00000 n 
-0000108492 00000 n 
-0000108619 00000 n 
-0000108746 00000 n 
-0000108873 00000 n 
-0000110778 00000 n 
-0000109963 00000 n 
-0000109049 00000 n 
-0000110079 00000 n 
-0000110206 00000 n 
-0000110333 00000 n 
-0000110460 00000 n 
-0000110587 00000 n 
-0000110714 00000 n 
-0000112211 00000 n 
-0000111777 00000 n 
-0000110903 00000 n 
-0000111893 00000 n 
-0000112020 00000 n 
-0000112147 00000 n 
-0000114209 00000 n 
-0000113523 00000 n 
-0000112323 00000 n 
-0000113639 00000 n 
-0000113766 00000 n 
-0000113893 00000 n 
-0000114019 00000 n 
-0000114145 00000 n 
-0000115780 00000 n 
-0000115346 00000 n 
-0000114347 00000 n 
-0000115462 00000 n 
+0000022330 00000 n 
+0000022392 00000 n 
+0000484033 00000 n 
+0000485056 00000 n 
+0000486805 00000 n 
+0000024532 00000 n 
+0000024702 00000 n 
+0000023847 00000 n 
+0000025066 00000 n 
+0000023699 00000 n 
+0000022539 00000 n 
+0000483887 00000 n 
+0000486367 00000 n 
+0000484911 00000 n 
+0000484474 00000 n 
+0000486513 00000 n 
+0000024884 00000 n 
+0000484179 00000 n 
+0000485635 00000 n 
+0000024347 00000 n 
+0000024464 00000 n 
+0000024511 00000 n 
+0000026459 00000 n 
+0000026609 00000 n 
+0000026760 00000 n 
+0000026935 00000 n 
+0000027109 00000 n 
+0000027278 00000 n 
+0000027433 00000 n 
+0000027581 00000 n 
+0000027733 00000 n 
+0000027918 00000 n 
+0000028078 00000 n 
+0000028231 00000 n 
+0000028401 00000 n 
+0000028551 00000 n 
+0000028722 00000 n 
+0000030311 00000 n 
+0000029121 00000 n 
+0000026215 00000 n 
+0000025244 00000 n 
+0000028875 00000 n 
+0000486073 00000 n 
+0000028997 00000 n 
+0000029059 00000 n 
+0000486221 00000 n 
+0000083166 00000 n 
+0000098399 00000 n 
+0000186326 00000 n 
+0000193802 00000 n 
+0000205655 00000 n 
+0000225780 00000 n 
+0000235348 00000 n 
+0000239538 00000 n 
+0000250050 00000 n 
+0000030484 00000 n 
+0000030655 00000 n 
+0000030800 00000 n 
+0000030967 00000 n 
+0000031137 00000 n 
+0000031286 00000 n 
+0000031431 00000 n 
+0000031582 00000 n 
+0000031752 00000 n 
+0000031899 00000 n 
+0000032050 00000 n 
+0000032263 00000 n 
+0000030091 00000 n 
+0000029258 00000 n 
+0000032201 00000 n 
+0000485928 00000 n 
+0000253482 00000 n 
+0000288014 00000 n 
+0000296105 00000 n 
+0000299609 00000 n 
+0000310213 00000 n 
+0000315004 00000 n 
+0000331972 00000 n 
+0000032674 00000 n 
+0000032500 00000 n 
+0000032400 00000 n 
+0000032612 00000 n 
+0000034174 00000 n 
+0000034326 00000 n 
+0000034475 00000 n 
+0000034627 00000 n 
+0000034781 00000 n 
+0000034935 00000 n 
+0000035089 00000 n 
+0000035243 00000 n 
+0000035396 00000 n 
+0000035550 00000 n 
+0000035704 00000 n 
+0000035858 00000 n 
+0000036012 00000 n 
+0000036164 00000 n 
+0000036318 00000 n 
+0000036477 00000 n 
+0000036635 00000 n 
+0000036789 00000 n 
+0000036948 00000 n 
+0000037107 00000 n 
+0000037271 00000 n 
+0000037435 00000 n 
+0000037593 00000 n 
+0000037757 00000 n 
+0000037921 00000 n 
+0000038085 00000 n 
+0000038249 00000 n 
+0000038412 00000 n 
+0000038576 00000 n 
+0000041392 00000 n 
+0000038803 00000 n 
+0000033818 00000 n 
+0000032715 00000 n 
+0000038740 00000 n 
+0000041556 00000 n 
+0000041721 00000 n 
+0000041886 00000 n 
+0000042052 00000 n 
+0000042218 00000 n 
+0000042384 00000 n 
+0000042550 00000 n 
+0000042716 00000 n 
+0000042882 00000 n 
+0000043048 00000 n 
+0000043212 00000 n 
+0000043378 00000 n 
+0000043543 00000 n 
+0000043709 00000 n 
+0000043875 00000 n 
+0000044041 00000 n 
+0000044207 00000 n 
+0000044373 00000 n 
+0000044538 00000 n 
+0000044704 00000 n 
+0000044870 00000 n 
+0000045035 00000 n 
+0000045201 00000 n 
+0000045356 00000 n 
+0000045516 00000 n 
+0000045676 00000 n 
+0000045841 00000 n 
+0000046006 00000 n 
+0000046171 00000 n 
+0000046335 00000 n 
+0000046500 00000 n 
+0000048292 00000 n 
+0000046729 00000 n 
+0000040977 00000 n 
+0000038914 00000 n 
+0000046665 00000 n 
+0000486923 00000 n 
+0000048456 00000 n 
+0000048621 00000 n 
+0000048781 00000 n 
+0000048940 00000 n 
+0000049100 00000 n 
+0000049260 00000 n 
+0000049425 00000 n 
+0000049590 00000 n 
+0000049750 00000 n 
+0000049915 00000 n 
+0000050080 00000 n 
+0000050240 00000 n 
+0000050403 00000 n 
+0000050568 00000 n 
+0000050728 00000 n 
+0000050892 00000 n 
+0000051056 00000 n 
+0000051217 00000 n 
+0000051383 00000 n 
+0000051549 00000 n 
+0000051710 00000 n 
+0000051876 00000 n 
+0000052042 00000 n 
+0000052203 00000 n 
+0000052368 00000 n 
+0000052533 00000 n 
+0000052688 00000 n 
+0000052848 00000 n 
+0000053012 00000 n 
+0000053177 00000 n 
+0000053337 00000 n 
+0000053502 00000 n 
+0000053667 00000 n 
+0000053827 00000 n 
+0000053992 00000 n 
+0000054157 00000 n 
+0000054317 00000 n 
+0000054481 00000 n 
+0000054646 00000 n 
+0000056642 00000 n 
+0000054870 00000 n 
+0000047804 00000 n 
+0000046828 00000 n 
+0000054806 00000 n 
+0000056806 00000 n 
+0000056971 00000 n 
+0000057126 00000 n 
+0000057285 00000 n 
+0000057450 00000 n 
+0000057615 00000 n 
+0000057775 00000 n 
+0000057940 00000 n 
+0000058105 00000 n 
+0000058260 00000 n 
+0000058420 00000 n 
+0000058585 00000 n 
+0000058748 00000 n 
+0000058908 00000 n 
+0000059073 00000 n 
+0000059237 00000 n 
+0000059392 00000 n 
+0000059552 00000 n 
+0000059712 00000 n 
+0000059872 00000 n 
+0000060026 00000 n 
+0000060186 00000 n 
+0000060351 00000 n 
+0000060516 00000 n 
+0000060675 00000 n 
+0000060840 00000 n 
+0000061005 00000 n 
+0000061170 00000 n 
+0000061319 00000 n 
+0000061471 00000 n 
+0000061626 00000 n 
+0000061781 00000 n 
+0000061936 00000 n 
+0000062091 00000 n 
+0000062245 00000 n 
+0000064161 00000 n 
+0000062462 00000 n 
+0000056190 00000 n 
+0000054969 00000 n 
+0000062398 00000 n 
+0000064315 00000 n 
+0000064470 00000 n 
+0000064625 00000 n 
+0000064780 00000 n 
+0000064935 00000 n 
+0000065095 00000 n 
+0000065254 00000 n 
+0000065414 00000 n 
+0000065566 00000 n 
+0000065721 00000 n 
+0000065875 00000 n 
+0000066030 00000 n 
+0000066190 00000 n 
+0000066350 00000 n 
+0000066510 00000 n 
+0000066670 00000 n 
+0000066829 00000 n 
+0000066989 00000 n 
+0000067148 00000 n 
+0000067308 00000 n 
+0000067468 00000 n 
+0000067629 00000 n 
+0000067790 00000 n 
+0000067951 00000 n 
+0000068111 00000 n 
+0000068272 00000 n 
+0000068432 00000 n 
+0000068587 00000 n 
+0000068747 00000 n 
+0000068907 00000 n 
+0000069062 00000 n 
+0000069215 00000 n 
+0000069368 00000 n 
+0000069521 00000 n 
+0000069676 00000 n 
+0000071892 00000 n 
+0000069895 00000 n 
+0000063709 00000 n 
+0000062587 00000 n 
+0000069831 00000 n 
+0000072051 00000 n 
+0000072211 00000 n 
+0000072365 00000 n 
+0000072525 00000 n 
+0000072673 00000 n 
+0000072826 00000 n 
+0000072981 00000 n 
+0000073136 00000 n 
+0000073290 00000 n 
+0000073446 00000 n 
+0000073607 00000 n 
+0000073767 00000 n 
+0000073922 00000 n 
+0000074083 00000 n 
+0000074244 00000 n 
+0000074400 00000 n 
+0000074561 00000 n 
+0000074715 00000 n 
+0000074876 00000 n 
+0000075035 00000 n 
+0000075189 00000 n 
+0000075345 00000 n 
+0000075505 00000 n 
+0000075666 00000 n 
+0000075826 00000 n 
+0000075982 00000 n 
+0000076143 00000 n 
+0000076297 00000 n 
+0000076452 00000 n 
+0000076606 00000 n 
+0000076762 00000 n 
+0000076917 00000 n 
+0000078231 00000 n 
+0000078381 00000 n 
+0000077137 00000 n 
+0000071467 00000 n 
+0000069994 00000 n 
+0000077073 00000 n 
+0000078535 00000 n 
+0000078689 00000 n 
+0000078845 00000 n 
+0000079001 00000 n 
+0000079157 00000 n 
+0000079313 00000 n 
+0000079469 00000 n 
+0000079618 00000 n 
+0000079772 00000 n 
+0000079928 00000 n 
+0000080148 00000 n 
+0000077995 00000 n 
+0000077249 00000 n 
+0000080084 00000 n 
+0000080541 00000 n 
+0000080361 00000 n 
+0000080260 00000 n 
+0000080477 00000 n 
+0000487048 00000 n 
+0000080970 00000 n 
+0000080792 00000 n 
+0000080583 00000 n 
+0000081260 00000 n 
+0000081144 00000 n 
+0000081043 00000 n 
+0000083481 00000 n 
+0000082860 00000 n 
+0000081302 00000 n 
+0000082976 00000 n 
+0000083040 00000 n 
+0000485781 00000 n 
+0000083291 00000 n 
+0000083417 00000 n 
+0000086155 00000 n 
+0000085724 00000 n 
+0000083607 00000 n 
+0000085840 00000 n 
+0000085966 00000 n 
+0000086091 00000 n 
+0000088606 00000 n 
+0000088300 00000 n 
+0000086267 00000 n 
+0000088416 00000 n 
+0000088542 00000 n 
+0000091425 00000 n 
+0000090867 00000 n 
+0000088718 00000 n 
+0000090983 00000 n 
+0000091109 00000 n 
+0000091235 00000 n 
+0000091361 00000 n 
+0000487173 00000 n 
+0000094188 00000 n 
+0000093882 00000 n 
+0000091550 00000 n 
+0000093998 00000 n 
+0000094124 00000 n 
+0000095650 00000 n 
+0000095470 00000 n 
+0000094300 00000 n 
+0000095586 00000 n 
+0000097637 00000 n 
+0000097830 00000 n 
+0000100961 00000 n 
+0000098586 00000 n 
+0000097482 00000 n 
+0000095749 00000 n 
+0000098273 00000 n 
+0000098522 00000 n 
+0000098052 00000 n 
+0000101543 00000 n 
+0000101149 00000 n 
+0000101356 00000 n 
+0000102097 00000 n 
+0000100797 00000 n 
+0000098725 00000 n 
+0000101717 00000 n 
 0000485345 00000 n 
-0000115589 00000 n 
-0000115716 00000 n 
-0000117841 00000 n 
-0000117280 00000 n 
-0000115932 00000 n 
-0000117396 00000 n 
-0000117523 00000 n 
-0000117650 00000 n 
-0000117777 00000 n 
-0000487279 00000 n 
-0000119266 00000 n 
-0000118959 00000 n 
-0000117966 00000 n 
-0000119075 00000 n 
-0000119202 00000 n 
-0000120692 00000 n 
-0000120258 00000 n 
-0000119391 00000 n 
-0000120374 00000 n 
-0000120501 00000 n 
-0000120628 00000 n 
-0000122298 00000 n 
-0000121864 00000 n 
-0000120817 00000 n 
-0000121980 00000 n 
-0000122107 00000 n 
-0000122234 00000 n 
-0000123273 00000 n 
-0000123093 00000 n 
-0000122423 00000 n 
-0000123209 00000 n 
-0000124430 00000 n 
-0000124250 00000 n 
-0000123372 00000 n 
-0000124366 00000 n 
-0000126449 00000 n 
-0000125888 00000 n 
-0000124529 00000 n 
-0000126004 00000 n 
-0000126131 00000 n 
-0000126258 00000 n 
-0000126385 00000 n 
-0000487404 00000 n 
-0000128232 00000 n 
-0000127925 00000 n 
-0000126587 00000 n 
-0000128041 00000 n 
-0000128168 00000 n 
-0000129905 00000 n 
-0000129725 00000 n 
-0000128357 00000 n 
-0000129841 00000 n 
-0000131854 00000 n 
-0000131420 00000 n 
-0000130004 00000 n 
-0000131536 00000 n 
-0000131663 00000 n 
-0000131790 00000 n 
-0000134095 00000 n 
-0000133915 00000 n 
-0000131979 00000 n 
-0000134031 00000 n 
-0000136537 00000 n 
-0000136103 00000 n 
-0000134220 00000 n 
-0000136219 00000 n 
-0000136346 00000 n 
-0000136473 00000 n 
-0000138416 00000 n 
-0000137855 00000 n 
-0000136662 00000 n 
-0000137971 00000 n 
-0000138098 00000 n 
-0000138225 00000 n 
-0000138352 00000 n 
-0000487529 00000 n 
-0000140205 00000 n 
-0000139772 00000 n 
-0000138541 00000 n 
-0000139888 00000 n 
-0000140014 00000 n 
-0000140141 00000 n 
-0000141790 00000 n 
-0000141483 00000 n 
-0000140317 00000 n 
-0000141599 00000 n 
-0000141726 00000 n 
-0000143997 00000 n 
-0000143436 00000 n 
-0000141902 00000 n 
-0000143552 00000 n 
-0000143679 00000 n 
-0000143806 00000 n 
-0000143933 00000 n 
-0000145707 00000 n 
-0000145400 00000 n 
-0000144135 00000 n 
-0000145516 00000 n 
-0000483594 00000 n 
-0000145643 00000 n 
-0000147436 00000 n 
-0000147002 00000 n 
-0000145859 00000 n 
-0000147118 00000 n 
-0000147245 00000 n 
-0000147372 00000 n 
-0000149170 00000 n 
-0000148483 00000 n 
-0000147574 00000 n 
-0000148599 00000 n 
-0000148726 00000 n 
-0000148852 00000 n 
-0000148979 00000 n 
-0000149106 00000 n 
-0000487654 00000 n 
-0000150917 00000 n 
-0000149976 00000 n 
-0000149308 00000 n 
-0000150092 00000 n 
-0000150218 00000 n 
-0000150345 00000 n 
-0000150472 00000 n 
-0000150599 00000 n 
-0000150726 00000 n 
-0000150853 00000 n 
-0000152754 00000 n 
-0000151941 00000 n 
-0000151042 00000 n 
-0000152057 00000 n 
-0000152184 00000 n 
-0000152309 00000 n 
-0000152436 00000 n 
-0000152563 00000 n 
-0000152690 00000 n 
-0000154623 00000 n 
-0000154062 00000 n 
-0000152879 00000 n 
-0000154178 00000 n 
-0000154305 00000 n 
-0000154432 00000 n 
-0000154559 00000 n 
-0000156140 00000 n 
-0000155706 00000 n 
-0000154748 00000 n 
-0000155822 00000 n 
-0000155949 00000 n 
-0000156076 00000 n 
-0000157981 00000 n 
-0000157675 00000 n 
-0000156252 00000 n 
-0000157791 00000 n 
-0000157917 00000 n 
-0000159933 00000 n 
-0000159247 00000 n 
-0000158119 00000 n 
-0000159363 00000 n 
-0000159490 00000 n 
-0000159617 00000 n 
-0000159744 00000 n 
-0000159869 00000 n 
-0000487779 00000 n 
-0000162128 00000 n 
-0000161440 00000 n 
-0000160058 00000 n 
-0000161556 00000 n 
-0000161683 00000 n 
-0000161810 00000 n 
-0000161937 00000 n 
-0000162064 00000 n 
-0000163911 00000 n 
-0000163352 00000 n 
-0000162253 00000 n 
-0000163468 00000 n 
-0000163595 00000 n 
-0000163721 00000 n 
-0000163847 00000 n 
-0000166364 00000 n 
-0000165423 00000 n 
-0000164049 00000 n 
-0000165539 00000 n 
-0000165666 00000 n 
-0000165793 00000 n 
-0000165920 00000 n 
-0000166046 00000 n 
-0000166173 00000 n 
-0000166300 00000 n 
-0000167476 00000 n 
-0000167169 00000 n 
-0000166528 00000 n 
-0000167285 00000 n 
-0000167412 00000 n 
-0000169074 00000 n 
-0000168640 00000 n 
-0000167588 00000 n 
-0000168756 00000 n 
-0000168883 00000 n 
-0000169010 00000 n 
-0000170343 00000 n 
-0000169909 00000 n 
-0000169212 00000 n 
-0000170025 00000 n 
-0000170152 00000 n 
-0000170279 00000 n 
-0000487904 00000 n 
-0000172123 00000 n 
-0000171562 00000 n 
-0000170455 00000 n 
-0000171678 00000 n 
-0000171805 00000 n 
-0000171932 00000 n 
-0000172059 00000 n 
-0000174138 00000 n 
-0000173323 00000 n 
-0000172248 00000 n 
-0000173439 00000 n 
-0000173566 00000 n 
-0000173693 00000 n 
-0000173820 00000 n 
-0000173947 00000 n 
-0000174074 00000 n 
-0000175712 00000 n 
-0000175405 00000 n 
-0000174263 00000 n 
-0000175521 00000 n 
-0000175648 00000 n 
-0000177369 00000 n 
-0000177062 00000 n 
-0000175837 00000 n 
-0000177178 00000 n 
-0000177305 00000 n 
-0000179576 00000 n 
-0000179015 00000 n 
-0000177494 00000 n 
-0000179131 00000 n 
-0000179258 00000 n 
-0000179385 00000 n 
-0000179512 00000 n 
-0000180706 00000 n 
-0000180399 00000 n 
-0000179688 00000 n 
-0000180515 00000 n 
-0000180642 00000 n 
-0000488029 00000 n 
-0000183329 00000 n 
-0000182642 00000 n 
-0000180818 00000 n 
-0000182758 00000 n 
-0000182885 00000 n 
-0000183011 00000 n 
-0000183138 00000 n 
-0000183265 00000 n 
-0000183735 00000 n 
-0000183555 00000 n 
-0000183454 00000 n 
-0000183671 00000 n 
-0000184166 00000 n 
-0000183987 00000 n 
-0000183777 00000 n 
-0000184456 00000 n 
-0000184340 00000 n 
-0000184239 00000 n 
-0000186830 00000 n 
-0000186016 00000 n 
-0000184498 00000 n 
-0000186132 00000 n 
-0000186196 00000 n 
-0000186449 00000 n 
-0000186513 00000 n 
-0000186577 00000 n 
-0000186640 00000 n 
-0000186766 00000 n 
-0000189804 00000 n 
-0000188986 00000 n 
-0000186943 00000 n 
-0000189102 00000 n 
-0000189229 00000 n 
-0000189293 00000 n 
-0000189357 00000 n 
-0000189421 00000 n 
-0000189485 00000 n 
-0000189549 00000 n 
-0000189613 00000 n 
-0000189740 00000 n 
-0000488154 00000 n 
-0000192578 00000 n 
-0000192271 00000 n 
-0000189916 00000 n 
-0000192387 00000 n 
-0000192514 00000 n 
-0000193989 00000 n 
-0000193556 00000 n 
-0000192690 00000 n 
-0000193672 00000 n 
-0000193925 00000 n 
-0000196430 00000 n 
-0000195869 00000 n 
-0000194115 00000 n 
-0000195985 00000 n 
-0000196049 00000 n 
-0000196113 00000 n 
-0000196177 00000 n 
-0000196241 00000 n 
-0000196366 00000 n 
-0000198221 00000 n 
-0000198041 00000 n 
-0000196555 00000 n 
-0000198157 00000 n 
-0000199993 00000 n 
-0000199559 00000 n 
-0000198346 00000 n 
-0000199675 00000 n 
-0000199802 00000 n 
-0000199929 00000 n 
-0000202119 00000 n 
-0000201493 00000 n 
-0000200118 00000 n 
-0000201609 00000 n 
-0000201673 00000 n 
-0000201737 00000 n 
-0000201801 00000 n 
-0000201928 00000 n 
-0000202055 00000 n 
-0000488279 00000 n 
-0000203953 00000 n 
-0000203523 00000 n 
-0000202244 00000 n 
-0000203639 00000 n 
-0000203766 00000 n 
-0000203889 00000 n 
-0000206225 00000 n 
-0000205409 00000 n 
-0000204065 00000 n 
-0000205525 00000 n 
-0000205778 00000 n 
-0000205905 00000 n 
-0000205969 00000 n 
-0000206033 00000 n 
-0000206097 00000 n 
-0000206161 00000 n 
-0000209541 00000 n 
-0000209043 00000 n 
-0000206338 00000 n 
-0000209159 00000 n 
-0000209223 00000 n 
-0000209287 00000 n 
-0000209351 00000 n 
-0000209415 00000 n 
-0000209477 00000 n 
-0000211989 00000 n 
-0000210793 00000 n 
-0000209640 00000 n 
-0000210909 00000 n 
-0000210973 00000 n 
-0000211037 00000 n 
-0000211164 00000 n 
-0000211291 00000 n 
-0000211418 00000 n 
-0000211545 00000 n 
-0000211672 00000 n 
-0000211798 00000 n 
-0000211925 00000 n 
-0000214042 00000 n 
-0000212974 00000 n 
-0000212101 00000 n 
-0000213090 00000 n 
-0000213217 00000 n 
-0000213344 00000 n 
-0000213471 00000 n 
-0000213598 00000 n 
-0000213725 00000 n 
-0000213852 00000 n 
-0000213979 00000 n 
-0000216540 00000 n 
-0000215470 00000 n 
-0000214154 00000 n 
-0000215586 00000 n 
-0000215713 00000 n 
-0000215840 00000 n 
-0000215966 00000 n 
-0000216093 00000 n 
-0000216157 00000 n 
-0000216221 00000 n 
-0000216285 00000 n 
-0000216349 00000 n 
-0000216413 00000 n 
-0000216477 00000 n 
-0000488404 00000 n 
-0000219403 00000 n 
-0000218521 00000 n 
-0000216665 00000 n 
-0000218637 00000 n 
-0000218701 00000 n 
-0000218765 00000 n 
-0000218829 00000 n 
-0000218892 00000 n 
-0000218956 00000 n 
-0000219020 00000 n 
-0000219084 00000 n 
-0000219148 00000 n 
-0000219275 00000 n 
-0000219339 00000 n 
-0000222239 00000 n 
-0000221420 00000 n 
-0000219515 00000 n 
-0000221536 00000 n 
-0000221600 00000 n 
-0000221664 00000 n 
-0000221791 00000 n 
-0000221855 00000 n 
-0000221919 00000 n 
-0000221983 00000 n 
-0000222047 00000 n 
-0000222111 00000 n 
-0000222175 00000 n 
-0000223308 00000 n 
-0000222872 00000 n 
-0000222351 00000 n 
-0000222988 00000 n 
-0000223052 00000 n 
-0000223116 00000 n 
-0000223180 00000 n 
-0000223244 00000 n 
-0000225260 00000 n 
-0000225460 00000 n 
-0000225840 00000 n 
-0000225114 00000 n 
-0000223407 00000 n 
-0000225650 00000 n 
-0000229284 00000 n 
-0000228274 00000 n 
-0000225979 00000 n 
-0000228390 00000 n 
-0000228454 00000 n 
-0000228518 00000 n 
-0000228582 00000 n 
-0000228646 00000 n 
-0000228710 00000 n 
-0000228774 00000 n 
-0000228837 00000 n 
-0000228901 00000 n 
-0000228965 00000 n 
-0000229029 00000 n 
-0000229093 00000 n 
-0000229156 00000 n 
-0000229220 00000 n 
-0000232665 00000 n 
-0000231718 00000 n 
-0000229370 00000 n 
-0000231834 00000 n 
-0000231898 00000 n 
-0000231962 00000 n 
-0000232026 00000 n 
-0000232090 00000 n 
-0000232154 00000 n 
-0000232218 00000 n 
-0000232282 00000 n 
-0000232346 00000 n 
-0000232409 00000 n 
-0000232473 00000 n 
-0000232537 00000 n 
-0000232601 00000 n 
-0000488529 00000 n 
-0000233399 00000 n 
-0000233219 00000 n 
-0000232764 00000 n 
-0000233335 00000 n 
-0000235408 00000 n 
-0000235102 00000 n 
-0000233485 00000 n 
-0000235218 00000 n 
-0000237439 00000 n 
-0000237613 00000 n 
-0000237858 00000 n 
-0000237293 00000 n 
-0000235547 00000 n 
-0000237794 00000 n 
-0000239978 00000 n 
-0000239292 00000 n 
-0000238013 00000 n 
-0000239408 00000 n 
-0000239661 00000 n 
-0000239787 00000 n 
-0000239914 00000 n 
-0000242631 00000 n 
-0000242198 00000 n 
-0000240104 00000 n 
-0000242314 00000 n 
-0000242441 00000 n 
-0000242568 00000 n 
-0000484182 00000 n 
-0000245674 00000 n 
-0000244717 00000 n 
-0000244410 00000 n 
-0000242770 00000 n 
-0000244526 00000 n 
-0000244653 00000 n 
-0000488654 00000 n 
-0000246817 00000 n 
-0000245558 00000 n 
-0000244856 00000 n 
-0000246753 00000 n 
-0000246058 00000 n 
-0000246176 00000 n 
-0000246224 00000 n 
-0000246732 00000 n 
-0000247239 00000 n 
-0000247059 00000 n 
-0000246958 00000 n 
-0000247175 00000 n 
-0000247673 00000 n 
-0000247494 00000 n 
-0000247281 00000 n 
-0000247963 00000 n 
-0000247847 00000 n 
-0000247746 00000 n 
-0000250364 00000 n 
-0000249740 00000 n 
-0000248005 00000 n 
-0000249856 00000 n 
-0000249920 00000 n 
-0000250173 00000 n 
-0000250300 00000 n 
-0000251440 00000 n 
-0000251260 00000 n 
-0000250503 00000 n 
-0000251376 00000 n 
-0000488779 00000 n 
-0000253669 00000 n 
-0000253236 00000 n 
-0000251539 00000 n 
-0000253352 00000 n 
-0000253605 00000 n 
-0000256298 00000 n 
-0000255991 00000 n 
-0000253782 00000 n 
-0000256107 00000 n 
-0000256234 00000 n 
-0000259367 00000 n 
-0000259187 00000 n 
-0000256449 00000 n 
-0000259303 00000 n 
-0000260460 00000 n 
-0000260280 00000 n 
-0000259505 00000 n 
-0000260396 00000 n 
-0000261638 00000 n 
-0000261458 00000 n 
-0000260572 00000 n 
-0000261574 00000 n 
-0000263854 00000 n 
-0000263547 00000 n 
-0000261763 00000 n 
-0000263663 00000 n 
-0000263790 00000 n 
-0000488904 00000 n 
-0000265870 00000 n 
-0000265436 00000 n 
-0000263992 00000 n 
-0000265552 00000 n 
-0000265679 00000 n 
-0000265806 00000 n 
-0000267520 00000 n 
-0000267213 00000 n 
-0000265995 00000 n 
-0000267329 00000 n 
-0000267456 00000 n 
-0000269701 00000 n 
-0000269521 00000 n 
-0000267645 00000 n 
-0000269637 00000 n 
-0000271114 00000 n 
-0000270934 00000 n 
-0000269826 00000 n 
-0000271050 00000 n 
-0000272514 00000 n 
-0000272334 00000 n 
-0000271226 00000 n 
-0000272450 00000 n 
-0000275495 00000 n 
-0000274741 00000 n 
-0000272626 00000 n 
-0000274857 00000 n 
-0000274984 00000 n 
-0000275111 00000 n 
-0000275175 00000 n 
-0000275239 00000 n 
-0000275303 00000 n 
-0000275367 00000 n 
-0000275431 00000 n 
-0000489029 00000 n 
-0000276435 00000 n 
-0000276255 00000 n 
-0000275633 00000 n 
-0000276371 00000 n 
-0000277766 00000 n 
-0000277459 00000 n 
-0000276534 00000 n 
-0000277575 00000 n 
-0000277639 00000 n 
-0000277702 00000 n 
-0000280187 00000 n 
-0000280596 00000 n 
-0000280050 00000 n 
-0000277891 00000 n 
-0000280340 00000 n 
-0000280404 00000 n 
-0000280468 00000 n 
-0000280532 00000 n 
-0000281815 00000 n 
-0000281635 00000 n 
-0000280721 00000 n 
-0000281751 00000 n 
-0000282981 00000 n 
-0000282801 00000 n 
-0000281927 00000 n 
-0000282917 00000 n 
-0000285055 00000 n 
-0000284494 00000 n 
-0000283080 00000 n 
-0000284610 00000 n 
-0000284674 00000 n 
-0000284738 00000 n 
-0000284864 00000 n 
-0000284991 00000 n 
-0000489154 00000 n 
-0000286536 00000 n 
-0000286229 00000 n 
-0000285180 00000 n 
-0000286345 00000 n 
-0000286472 00000 n 
-0000288647 00000 n 
-0000287768 00000 n 
-0000286661 00000 n 
-0000287884 00000 n 
-0000288137 00000 n 
-0000288201 00000 n 
-0000288264 00000 n 
-0000288327 00000 n 
-0000288391 00000 n 
-0000288455 00000 n 
-0000288519 00000 n 
-0000288583 00000 n 
-0000291185 00000 n 
-0000290495 00000 n 
-0000288760 00000 n 
-0000290611 00000 n 
-0000290738 00000 n 
-0000290802 00000 n 
-0000290866 00000 n 
-0000290930 00000 n 
-0000290994 00000 n 
-0000291121 00000 n 
-0000292469 00000 n 
-0000292162 00000 n 
-0000291323 00000 n 
-0000292278 00000 n 
-0000292405 00000 n 
-0000294528 00000 n 
-0000293838 00000 n 
-0000292594 00000 n 
-0000293954 00000 n 
-0000294081 00000 n 
-0000294145 00000 n 
-0000294209 00000 n 
-0000294273 00000 n 
-0000294337 00000 n 
-0000294464 00000 n 
-0000296290 00000 n 
-0000295859 00000 n 
-0000294666 00000 n 
-0000295975 00000 n 
-0000296226 00000 n 
-0000489279 00000 n 
-0000297810 00000 n 
-0000297630 00000 n 
-0000296416 00000 n 
-0000297746 00000 n 
-0000299923 00000 n 
-0000299363 00000 n 
-0000297922 00000 n 
-0000299479 00000 n 
-0000299732 00000 n 
-0000299859 00000 n 
-0000302597 00000 n 
-0000302226 00000 n 
-0000300036 00000 n 
-0000302342 00000 n 
-0000302469 00000 n 
-0000302533 00000 n 
-0000304940 00000 n 
-0000304760 00000 n 
-0000302722 00000 n 
-0000304876 00000 n 
-0000307056 00000 n 
-0000306876 00000 n 
-0000305079 00000 n 
-0000306992 00000 n 
-0000307462 00000 n 
-0000307282 00000 n 
-0000307181 00000 n 
-0000307398 00000 n 
-0000489404 00000 n 
-0000307899 00000 n 
-0000307720 00000 n 
-0000307504 00000 n 
-0000308189 00000 n 
-0000308073 00000 n 
-0000307972 00000 n 
-0000310273 00000 n 
-0000309903 00000 n 
-0000308231 00000 n 
-0000310019 00000 n 
-0000310083 00000 n 
-0000312810 00000 n 
-0000312630 00000 n 
-0000310386 00000 n 
-0000312746 00000 n 
-0000484620 00000 n 
-0000313613 00000 n 
-0000313433 00000 n 
-0000312936 00000 n 
-0000313549 00000 n 
-0000315318 00000 n 
-0000314758 00000 n 
-0000313712 00000 n 
-0000314874 00000 n 
-0000315127 00000 n 
-0000315254 00000 n 
-0000489529 00000 n 
-0000317955 00000 n 
-0000317648 00000 n 
-0000315457 00000 n 
-0000317764 00000 n 
-0000317891 00000 n 
-0000320497 00000 n 
-0000319997 00000 n 
-0000318093 00000 n 
-0000320113 00000 n 
-0000320177 00000 n 
-0000320241 00000 n 
-0000320305 00000 n 
-0000320369 00000 n 
-0000320433 00000 n 
-0000323196 00000 n 
-0000322571 00000 n 
-0000320636 00000 n 
-0000322687 00000 n 
-0000322751 00000 n 
-0000322815 00000 n 
-0000322879 00000 n 
-0000323006 00000 n 
-0000323132 00000 n 
-0000325067 00000 n 
-0000324887 00000 n 
-0000323321 00000 n 
-0000325003 00000 n 
-0000327749 00000 n 
-0000327569 00000 n 
-0000325192 00000 n 
-0000327685 00000 n 
-0000329467 00000 n 
-0000329287 00000 n 
-0000327874 00000 n 
-0000329403 00000 n 
-0000489654 00000 n 
-0000329977 00000 n 
-0000329798 00000 n 
-0000329592 00000 n 
-0000330267 00000 n 
-0000330151 00000 n 
-0000330050 00000 n 
-0000332407 00000 n 
-0000331784 00000 n 
-0000330309 00000 n 
-0000331900 00000 n 
-0000331964 00000 n 
-0000332217 00000 n 
-0000332343 00000 n 
-0000332564 00000 n 
-0000332590 00000 n 
-0000332918 00000 n 
-0000332942 00000 n 
-0000332966 00000 n 
-0000333298 00000 n 
-0000333336 00000 n 
-0000333368 00000 n 
-0000333400 00000 n 
-0000333826 00000 n 
-0000334494 00000 n 
-0000335048 00000 n 
-0000335691 00000 n 
-0000336321 00000 n 
-0000336572 00000 n 
-0000336968 00000 n 
-0000337004 00000 n 
-0000337628 00000 n 
-0000338298 00000 n 
-0000338938 00000 n 
-0000339341 00000 n 
-0000339773 00000 n 
-0000341439 00000 n 
-0000341672 00000 n 
-0000357334 00000 n 
-0000357855 00000 n 
-0000364742 00000 n 
-0000365046 00000 n 
-0000368342 00000 n 
-0000368579 00000 n 
-0000375722 00000 n 
-0000376015 00000 n 
-0000377824 00000 n 
-0000378059 00000 n 
-0000379876 00000 n 
-0000380110 00000 n 
-0000381775 00000 n 
-0000382007 00000 n 
-0000399964 00000 n 
-0000400549 00000 n 
-0000405148 00000 n 
-0000405424 00000 n 
-0000407288 00000 n 
-0000407514 00000 n 
-0000409367 00000 n 
-0000409593 00000 n 
-0000411409 00000 n 
-0000411637 00000 n 
-0000417617 00000 n 
-0000417944 00000 n 
-0000421778 00000 n 
-0000422061 00000 n 
-0000430599 00000 n 
-0000431004 00000 n 
-0000443462 00000 n 
-0000443924 00000 n 
-0000445241 00000 n 
-0000445480 00000 n 
-0000461486 00000 n 
-0000461950 00000 n 
-0000478085 00000 n 
-0000478706 00000 n 
-0000483314 00000 n 
-0000489761 00000 n 
-0000489886 00000 n 
-0000490012 00000 n 
-0000490138 00000 n 
-0000490264 00000 n 
-0000490344 00000 n 
-0000490445 00000 n 
-0000511329 00000 n 
-0000511528 00000 n 
-0000511713 00000 n 
-0000511897 00000 n 
-0000512082 00000 n 
-0000512266 00000 n 
-0000512445 00000 n 
-0000512621 00000 n 
-0000512798 00000 n 
-0000512974 00000 n 
-0000513151 00000 n 
-0000513326 00000 n 
-0000513501 00000 n 
-0000513678 00000 n 
-0000513854 00000 n 
-0000514031 00000 n 
-0000514207 00000 n 
-0000514384 00000 n 
-0000514560 00000 n 
-0000514737 00000 n 
-0000514913 00000 n 
-0000515090 00000 n 
-0000515293 00000 n 
-0000515488 00000 n 
-0000515674 00000 n 
-0000515861 00000 n 
-0000516054 00000 n 
-0000516247 00000 n 
-0000516439 00000 n 
-0000516632 00000 n 
-0000516825 00000 n 
-0000517018 00000 n 
-0000517211 00000 n 
-0000517404 00000 n 
-0000517597 00000 n 
-0000517790 00000 n 
-0000517983 00000 n 
-0000518176 00000 n 
-0000518369 00000 n 
-0000518562 00000 n 
-0000518755 00000 n 
-0000518948 00000 n 
-0000519141 00000 n 
-0000519334 00000 n 
-0000519527 00000 n 
-0000519720 00000 n 
-0000519913 00000 n 
-0000520106 00000 n 
-0000520299 00000 n 
-0000520492 00000 n 
-0000520685 00000 n 
-0000520878 00000 n 
-0000521071 00000 n 
-0000521264 00000 n 
-0000521457 00000 n 
-0000521650 00000 n 
-0000521843 00000 n 
-0000522036 00000 n 
-0000522229 00000 n 
-0000522416 00000 n 
-0000522597 00000 n 
-0000522782 00000 n 
-0000522966 00000 n 
-0000523151 00000 n 
-0000523334 00000 n 
-0000523515 00000 n 
-0000523691 00000 n 
-0000523868 00000 n 
-0000524044 00000 n 
-0000524221 00000 n 
-0000524397 00000 n 
-0000524574 00000 n 
-0000524750 00000 n 
-0000524927 00000 n 
-0000525102 00000 n 
-0000525277 00000 n 
-0000525454 00000 n 
-0000525630 00000 n 
-0000525807 00000 n 
-0000525983 00000 n 
-0000526160 00000 n 
-0000526333 00000 n 
-0000526510 00000 n 
-0000526674 00000 n 
-0000526866 00000 n 
-0000527063 00000 n 
-0000527274 00000 n 
-0000527485 00000 n 
-0000527693 00000 n 
-0000527895 00000 n 
-0000528098 00000 n 
-0000528301 00000 n 
-0000528504 00000 n 
-0000528731 00000 n 
-0000528982 00000 n 
-0000529224 00000 n 
-0000529469 00000 n 
-0000529712 00000 n 
-0000529955 00000 n 
-0000530198 00000 n 
-0000530441 00000 n 
-0000530690 00000 n 
-0000530935 00000 n 
-0000531178 00000 n 
-0000531445 00000 n 
-0000531736 00000 n 
-0000532026 00000 n 
-0000532317 00000 n 
-0000532604 00000 n 
-0000532890 00000 n 
-0000533178 00000 n 
-0000533461 00000 n 
-0000533744 00000 n 
-0000534027 00000 n 
-0000534310 00000 n 
-0000534593 00000 n 
-0000534876 00000 n 
-0000535048 00000 n 
-0000535174 00000 n 
-0000535289 00000 n 
-0000535405 00000 n 
-0000535523 00000 n 
-0000535643 00000 n 
-0000535763 00000 n 
-0000535883 00000 n 
-0000536003 00000 n 
-0000536123 00000 n 
-0000536242 00000 n 
-0000536359 00000 n 
-0000536475 00000 n 
-0000536591 00000 n 
-0000536711 00000 n 
-0000536835 00000 n 
-0000536964 00000 n 
-0000537098 00000 n 
-0000537237 00000 n 
+0000101781 00000 n 
+0000101843 00000 n 
+0000101907 00000 n 
+0000101971 00000 n 
+0000102035 00000 n 
+0000485201 00000 n 
+0000484619 00000 n 
+0000486659 00000 n 
+0000105167 00000 n 
+0000104228 00000 n 
+0000102291 00000 n 
+0000104344 00000 n 
+0000104470 00000 n 
+0000104596 00000 n 
+0000104722 00000 n 
+0000104848 00000 n 
+0000104912 00000 n 
+0000104976 00000 n 
+0000105040 00000 n 
+0000105104 00000 n 
+0000107066 00000 n 
+0000106444 00000 n 
+0000105279 00000 n 
+0000106560 00000 n 
+0000106624 00000 n 
+0000106750 00000 n 
+0000106876 00000 n 
+0000107002 00000 n 
+0000487298 00000 n 
+0000108940 00000 n 
+0000108000 00000 n 
+0000107178 00000 n 
+0000108116 00000 n 
+0000108242 00000 n 
+0000108368 00000 n 
+0000108495 00000 n 
+0000108622 00000 n 
+0000108749 00000 n 
+0000108876 00000 n 
+0000110781 00000 n 
+0000109966 00000 n 
+0000109052 00000 n 
+0000110082 00000 n 
+0000110209 00000 n 
+0000110336 00000 n 
+0000110463 00000 n 
+0000110590 00000 n 
+0000110717 00000 n 
+0000112214 00000 n 
+0000111780 00000 n 
+0000110906 00000 n 
+0000111896 00000 n 
+0000112023 00000 n 
+0000112150 00000 n 
+0000114212 00000 n 
+0000113526 00000 n 
+0000112326 00000 n 
+0000113642 00000 n 
+0000113769 00000 n 
+0000113896 00000 n 
+0000114022 00000 n 
+0000114148 00000 n 
+0000115783 00000 n 
+0000115349 00000 n 
+0000114350 00000 n 
+0000115465 00000 n 
+0000485489 00000 n 
+0000115592 00000 n 
+0000115719 00000 n 
+0000117844 00000 n 
+0000117283 00000 n 
+0000115935 00000 n 
+0000117399 00000 n 
+0000117526 00000 n 
+0000117653 00000 n 
+0000117780 00000 n 
+0000487423 00000 n 
+0000119269 00000 n 
+0000118962 00000 n 
+0000117969 00000 n 
+0000119078 00000 n 
+0000119205 00000 n 
+0000120695 00000 n 
+0000120261 00000 n 
+0000119394 00000 n 
+0000120377 00000 n 
+0000120504 00000 n 
+0000120631 00000 n 
+0000122301 00000 n 
+0000121867 00000 n 
+0000120820 00000 n 
+0000121983 00000 n 
+0000122110 00000 n 
+0000122237 00000 n 
+0000123276 00000 n 
+0000123096 00000 n 
+0000122426 00000 n 
+0000123212 00000 n 
+0000124433 00000 n 
+0000124253 00000 n 
+0000123375 00000 n 
+0000124369 00000 n 
+0000126452 00000 n 
+0000125891 00000 n 
+0000124532 00000 n 
+0000126007 00000 n 
+0000126134 00000 n 
+0000126261 00000 n 
+0000126388 00000 n 
+0000487548 00000 n 
+0000128235 00000 n 
+0000127928 00000 n 
+0000126590 00000 n 
+0000128044 00000 n 
+0000128171 00000 n 
+0000129908 00000 n 
+0000129728 00000 n 
+0000128360 00000 n 
+0000129844 00000 n 
+0000131857 00000 n 
+0000131423 00000 n 
+0000130007 00000 n 
+0000131539 00000 n 
+0000131666 00000 n 
+0000131793 00000 n 
+0000134098 00000 n 
+0000133918 00000 n 
+0000131982 00000 n 
+0000134034 00000 n 
+0000136540 00000 n 
+0000136106 00000 n 
+0000134223 00000 n 
+0000136222 00000 n 
+0000136349 00000 n 
+0000136476 00000 n 
+0000138419 00000 n 
+0000137858 00000 n 
+0000136665 00000 n 
+0000137974 00000 n 
+0000138101 00000 n 
+0000138228 00000 n 
+0000138355 00000 n 
+0000487673 00000 n 
+0000140208 00000 n 
+0000139775 00000 n 
+0000138544 00000 n 
+0000139891 00000 n 
+0000140017 00000 n 
+0000140144 00000 n 
+0000141793 00000 n 
+0000141486 00000 n 
+0000140320 00000 n 
+0000141602 00000 n 
+0000141729 00000 n 
+0000144000 00000 n 
+0000143439 00000 n 
+0000141905 00000 n 
+0000143555 00000 n 
+0000143682 00000 n 
+0000143809 00000 n 
+0000143936 00000 n 
+0000145710 00000 n 
+0000145403 00000 n 
+0000144138 00000 n 
+0000145519 00000 n 
+0000483738 00000 n 
+0000145646 00000 n 
+0000147439 00000 n 
+0000147005 00000 n 
+0000145862 00000 n 
+0000147121 00000 n 
+0000147248 00000 n 
+0000147375 00000 n 
+0000149173 00000 n 
+0000148486 00000 n 
+0000147577 00000 n 
+0000148602 00000 n 
+0000148729 00000 n 
+0000148855 00000 n 
+0000148982 00000 n 
+0000149109 00000 n 
+0000487798 00000 n 
+0000150920 00000 n 
+0000149979 00000 n 
+0000149311 00000 n 
+0000150095 00000 n 
+0000150221 00000 n 
+0000150348 00000 n 
+0000150475 00000 n 
+0000150602 00000 n 
+0000150729 00000 n 
+0000150856 00000 n 
+0000152757 00000 n 
+0000151944 00000 n 
+0000151045 00000 n 
+0000152060 00000 n 
+0000152187 00000 n 
+0000152312 00000 n 
+0000152439 00000 n 
+0000152566 00000 n 
+0000152693 00000 n 
+0000154626 00000 n 
+0000154065 00000 n 
+0000152882 00000 n 
+0000154181 00000 n 
+0000154308 00000 n 
+0000154435 00000 n 
+0000154562 00000 n 
+0000156143 00000 n 
+0000155709 00000 n 
+0000154751 00000 n 
+0000155825 00000 n 
+0000155952 00000 n 
+0000156079 00000 n 
+0000157984 00000 n 
+0000157678 00000 n 
+0000156255 00000 n 
+0000157794 00000 n 
+0000157920 00000 n 
+0000159936 00000 n 
+0000159250 00000 n 
+0000158122 00000 n 
+0000159366 00000 n 
+0000159493 00000 n 
+0000159620 00000 n 
+0000159747 00000 n 
+0000159872 00000 n 
+0000487923 00000 n 
+0000162131 00000 n 
+0000161443 00000 n 
+0000160061 00000 n 
+0000161559 00000 n 
+0000161686 00000 n 
+0000161813 00000 n 
+0000161940 00000 n 
+0000162067 00000 n 
+0000163914 00000 n 
+0000163355 00000 n 
+0000162256 00000 n 
+0000163471 00000 n 
+0000163598 00000 n 
+0000163724 00000 n 
+0000163850 00000 n 
+0000166367 00000 n 
+0000165426 00000 n 
+0000164052 00000 n 
+0000165542 00000 n 
+0000165669 00000 n 
+0000165796 00000 n 
+0000165923 00000 n 
+0000166049 00000 n 
+0000166176 00000 n 
+0000166303 00000 n 
+0000167479 00000 n 
+0000167172 00000 n 
+0000166531 00000 n 
+0000167288 00000 n 
+0000167415 00000 n 
+0000169077 00000 n 
+0000168643 00000 n 
+0000167591 00000 n 
+0000168759 00000 n 
+0000168886 00000 n 
+0000169013 00000 n 
+0000170346 00000 n 
+0000169912 00000 n 
+0000169215 00000 n 
+0000170028 00000 n 
+0000170155 00000 n 
+0000170282 00000 n 
+0000488048 00000 n 
+0000172126 00000 n 
+0000171565 00000 n 
+0000170458 00000 n 
+0000171681 00000 n 
+0000171808 00000 n 
+0000171935 00000 n 
+0000172062 00000 n 
+0000174141 00000 n 
+0000173326 00000 n 
+0000172251 00000 n 
+0000173442 00000 n 
+0000173569 00000 n 
+0000173696 00000 n 
+0000173823 00000 n 
+0000173950 00000 n 
+0000174077 00000 n 
+0000175715 00000 n 
+0000175408 00000 n 
+0000174266 00000 n 
+0000175524 00000 n 
+0000175651 00000 n 
+0000177372 00000 n 
+0000177065 00000 n 
+0000175840 00000 n 
+0000177181 00000 n 
+0000177308 00000 n 
+0000179579 00000 n 
+0000179018 00000 n 
+0000177497 00000 n 
+0000179134 00000 n 
+0000179261 00000 n 
+0000179388 00000 n 
+0000179515 00000 n 
+0000180709 00000 n 
+0000180402 00000 n 
+0000179691 00000 n 
+0000180518 00000 n 
+0000180645 00000 n 
+0000488173 00000 n 
+0000183332 00000 n 
+0000182645 00000 n 
+0000180821 00000 n 
+0000182761 00000 n 
+0000182888 00000 n 
+0000183014 00000 n 
+0000183141 00000 n 
+0000183268 00000 n 
+0000183738 00000 n 
+0000183558 00000 n 
+0000183457 00000 n 
+0000183674 00000 n 
+0000184169 00000 n 
+0000183990 00000 n 
+0000183780 00000 n 
+0000184459 00000 n 
+0000184343 00000 n 
+0000184242 00000 n 
+0000186833 00000 n 
+0000186019 00000 n 
+0000184501 00000 n 
+0000186135 00000 n 
+0000186199 00000 n 
+0000186452 00000 n 
+0000186516 00000 n 
+0000186580 00000 n 
+0000186643 00000 n 
+0000186769 00000 n 
+0000189807 00000 n 
+0000188989 00000 n 
+0000186946 00000 n 
+0000189105 00000 n 
+0000189232 00000 n 
+0000189296 00000 n 
+0000189360 00000 n 
+0000189424 00000 n 
+0000189488 00000 n 
+0000189552 00000 n 
+0000189616 00000 n 
+0000189743 00000 n 
+0000488298 00000 n 
+0000192581 00000 n 
+0000192274 00000 n 
+0000189919 00000 n 
+0000192390 00000 n 
+0000192517 00000 n 
+0000193992 00000 n 
+0000193559 00000 n 
+0000192693 00000 n 
+0000193675 00000 n 
+0000193928 00000 n 
+0000196433 00000 n 
+0000195872 00000 n 
+0000194118 00000 n 
+0000195988 00000 n 
+0000196052 00000 n 
+0000196116 00000 n 
+0000196180 00000 n 
+0000196244 00000 n 
+0000196369 00000 n 
+0000198224 00000 n 
+0000198044 00000 n 
+0000196558 00000 n 
+0000198160 00000 n 
+0000199996 00000 n 
+0000199562 00000 n 
+0000198349 00000 n 
+0000199678 00000 n 
+0000199805 00000 n 
+0000199932 00000 n 
+0000202122 00000 n 
+0000201496 00000 n 
+0000200121 00000 n 
+0000201612 00000 n 
+0000201676 00000 n 
+0000201740 00000 n 
+0000201804 00000 n 
+0000201931 00000 n 
+0000202058 00000 n 
+0000488423 00000 n 
+0000203956 00000 n 
+0000203526 00000 n 
+0000202247 00000 n 
+0000203642 00000 n 
+0000203769 00000 n 
+0000203892 00000 n 
+0000206228 00000 n 
+0000205412 00000 n 
+0000204068 00000 n 
+0000205528 00000 n 
+0000205781 00000 n 
+0000205908 00000 n 
+0000205972 00000 n 
+0000206036 00000 n 
+0000206100 00000 n 
+0000206164 00000 n 
+0000209544 00000 n 
+0000209046 00000 n 
+0000206341 00000 n 
+0000209162 00000 n 
+0000209226 00000 n 
+0000209290 00000 n 
+0000209354 00000 n 
+0000209418 00000 n 
+0000209480 00000 n 
+0000211992 00000 n 
+0000210796 00000 n 
+0000209643 00000 n 
+0000210912 00000 n 
+0000210976 00000 n 
+0000211040 00000 n 
+0000211167 00000 n 
+0000211294 00000 n 
+0000211421 00000 n 
+0000211548 00000 n 
+0000211675 00000 n 
+0000211801 00000 n 
+0000211928 00000 n 
+0000214045 00000 n 
+0000212977 00000 n 
+0000212104 00000 n 
+0000213093 00000 n 
+0000213220 00000 n 
+0000213347 00000 n 
+0000213474 00000 n 
+0000213601 00000 n 
+0000213728 00000 n 
+0000213855 00000 n 
+0000213982 00000 n 
+0000216543 00000 n 
+0000215473 00000 n 
+0000214157 00000 n 
+0000215589 00000 n 
+0000215716 00000 n 
+0000215843 00000 n 
+0000215969 00000 n 
+0000216096 00000 n 
+0000216160 00000 n 
+0000216224 00000 n 
+0000216288 00000 n 
+0000216352 00000 n 
+0000216416 00000 n 
+0000216480 00000 n 
+0000488548 00000 n 
+0000219406 00000 n 
+0000218524 00000 n 
+0000216668 00000 n 
+0000218640 00000 n 
+0000218704 00000 n 
+0000218768 00000 n 
+0000218832 00000 n 
+0000218895 00000 n 
+0000218959 00000 n 
+0000219023 00000 n 
+0000219087 00000 n 
+0000219151 00000 n 
+0000219278 00000 n 
+0000219342 00000 n 
+0000222242 00000 n 
+0000221423 00000 n 
+0000219518 00000 n 
+0000221539 00000 n 
+0000221603 00000 n 
+0000221667 00000 n 
+0000221794 00000 n 
+0000221858 00000 n 
+0000221922 00000 n 
+0000221986 00000 n 
+0000222050 00000 n 
+0000222114 00000 n 
+0000222178 00000 n 
+0000223311 00000 n 
+0000222875 00000 n 
+0000222354 00000 n 
+0000222991 00000 n 
+0000223055 00000 n 
+0000223119 00000 n 
+0000223183 00000 n 
+0000223247 00000 n 
+0000225263 00000 n 
+0000225463 00000 n 
+0000225843 00000 n 
+0000225117 00000 n 
+0000223410 00000 n 
+0000225653 00000 n 
+0000229287 00000 n 
+0000228277 00000 n 
+0000225982 00000 n 
+0000228393 00000 n 
+0000228457 00000 n 
+0000228521 00000 n 
+0000228585 00000 n 
+0000228649 00000 n 
+0000228713 00000 n 
+0000228777 00000 n 
+0000228840 00000 n 
+0000228904 00000 n 
+0000228968 00000 n 
+0000229032 00000 n 
+0000229096 00000 n 
+0000229159 00000 n 
+0000229223 00000 n 
+0000232668 00000 n 
+0000231721 00000 n 
+0000229373 00000 n 
+0000231837 00000 n 
+0000231901 00000 n 
+0000231965 00000 n 
+0000232029 00000 n 
+0000232093 00000 n 
+0000232157 00000 n 
+0000232221 00000 n 
+0000232285 00000 n 
+0000232349 00000 n 
+0000232412 00000 n 
+0000232476 00000 n 
+0000232540 00000 n 
+0000232604 00000 n 
+0000488673 00000 n 
+0000233402 00000 n 
+0000233222 00000 n 
+0000232767 00000 n 
+0000233338 00000 n 
+0000235411 00000 n 
+0000235105 00000 n 
+0000233488 00000 n 
+0000235221 00000 n 
+0000237442 00000 n 
+0000237616 00000 n 
+0000237861 00000 n 
+0000237296 00000 n 
+0000235550 00000 n 
+0000237797 00000 n 
+0000239981 00000 n 
+0000239295 00000 n 
+0000238016 00000 n 
+0000239411 00000 n 
+0000239664 00000 n 
+0000239790 00000 n 
+0000239917 00000 n 
+0000242634 00000 n 
+0000242201 00000 n 
+0000240107 00000 n 
+0000242317 00000 n 
+0000242444 00000 n 
+0000242571 00000 n 
+0000484326 00000 n 
+0000245677 00000 n 
+0000244720 00000 n 
+0000244413 00000 n 
+0000242773 00000 n 
+0000244529 00000 n 
+0000244656 00000 n 
+0000488798 00000 n 
+0000246820 00000 n 
+0000245561 00000 n 
+0000244859 00000 n 
+0000246756 00000 n 
+0000246061 00000 n 
+0000246179 00000 n 
+0000246227 00000 n 
+0000246735 00000 n 
+0000247242 00000 n 
+0000247062 00000 n 
+0000246961 00000 n 
+0000247178 00000 n 
+0000247676 00000 n 
+0000247497 00000 n 
+0000247284 00000 n 
+0000247966 00000 n 
+0000247850 00000 n 
+0000247749 00000 n 
+0000250367 00000 n 
+0000249743 00000 n 
+0000248008 00000 n 
+0000249859 00000 n 
+0000249923 00000 n 
+0000250176 00000 n 
+0000250303 00000 n 
+0000251443 00000 n 
+0000251263 00000 n 
+0000250506 00000 n 
+0000251379 00000 n 
+0000488923 00000 n 
+0000253672 00000 n 
+0000253239 00000 n 
+0000251542 00000 n 
+0000253355 00000 n 
+0000253608 00000 n 
+0000256301 00000 n 
+0000255994 00000 n 
+0000253785 00000 n 
+0000256110 00000 n 
+0000256237 00000 n 
+0000259370 00000 n 
+0000259190 00000 n 
+0000256452 00000 n 
+0000259306 00000 n 
+0000260463 00000 n 
+0000260283 00000 n 
+0000259508 00000 n 
+0000260399 00000 n 
+0000261641 00000 n 
+0000261461 00000 n 
+0000260575 00000 n 
+0000261577 00000 n 
+0000263857 00000 n 
+0000263550 00000 n 
+0000261766 00000 n 
+0000263666 00000 n 
+0000263793 00000 n 
+0000489048 00000 n 
+0000265873 00000 n 
+0000265439 00000 n 
+0000263995 00000 n 
+0000265555 00000 n 
+0000265682 00000 n 
+0000265809 00000 n 
+0000267523 00000 n 
+0000267216 00000 n 
+0000265998 00000 n 
+0000267332 00000 n 
+0000267459 00000 n 
+0000269704 00000 n 
+0000269524 00000 n 
+0000267648 00000 n 
+0000269640 00000 n 
+0000271117 00000 n 
+0000270937 00000 n 
+0000269829 00000 n 
+0000271053 00000 n 
+0000272517 00000 n 
+0000272337 00000 n 
+0000271229 00000 n 
+0000272453 00000 n 
+0000275498 00000 n 
+0000274744 00000 n 
+0000272629 00000 n 
+0000274860 00000 n 
+0000274987 00000 n 
+0000275114 00000 n 
+0000275178 00000 n 
+0000275242 00000 n 
+0000275306 00000 n 
+0000275370 00000 n 
+0000275434 00000 n 
+0000489173 00000 n 
+0000276438 00000 n 
+0000276258 00000 n 
+0000275636 00000 n 
+0000276374 00000 n 
+0000277769 00000 n 
+0000277462 00000 n 
+0000276537 00000 n 
+0000277578 00000 n 
+0000277642 00000 n 
+0000277705 00000 n 
+0000280190 00000 n 
+0000280599 00000 n 
+0000280053 00000 n 
+0000277894 00000 n 
+0000280343 00000 n 
+0000280407 00000 n 
+0000280471 00000 n 
+0000280535 00000 n 
+0000281818 00000 n 
+0000281638 00000 n 
+0000280724 00000 n 
+0000281754 00000 n 
+0000282984 00000 n 
+0000282804 00000 n 
+0000281930 00000 n 
+0000282920 00000 n 
+0000285058 00000 n 
+0000284497 00000 n 
+0000283083 00000 n 
+0000284613 00000 n 
+0000284677 00000 n 
+0000284741 00000 n 
+0000284867 00000 n 
+0000284994 00000 n 
+0000489298 00000 n 
+0000286539 00000 n 
+0000286232 00000 n 
+0000285183 00000 n 
+0000286348 00000 n 
+0000286475 00000 n 
+0000288650 00000 n 
+0000287771 00000 n 
+0000286664 00000 n 
+0000287887 00000 n 
+0000288140 00000 n 
+0000288204 00000 n 
+0000288267 00000 n 
+0000288330 00000 n 
+0000288394 00000 n 
+0000288458 00000 n 
+0000288522 00000 n 
+0000288586 00000 n 
+0000291188 00000 n 
+0000290498 00000 n 
+0000288763 00000 n 
+0000290614 00000 n 
+0000290741 00000 n 
+0000290805 00000 n 
+0000290869 00000 n 
+0000290933 00000 n 
+0000290997 00000 n 
+0000291124 00000 n 
+0000292472 00000 n 
+0000292165 00000 n 
+0000291326 00000 n 
+0000292281 00000 n 
+0000292408 00000 n 
+0000294531 00000 n 
+0000293841 00000 n 
+0000292597 00000 n 
+0000293957 00000 n 
+0000294084 00000 n 
+0000294148 00000 n 
+0000294212 00000 n 
+0000294276 00000 n 
+0000294340 00000 n 
+0000294467 00000 n 
+0000296293 00000 n 
+0000295862 00000 n 
+0000294669 00000 n 
+0000295978 00000 n 
+0000296229 00000 n 
+0000489423 00000 n 
+0000297813 00000 n 
+0000297633 00000 n 
+0000296419 00000 n 
+0000297749 00000 n 
+0000299926 00000 n 
+0000299366 00000 n 
+0000297925 00000 n 
+0000299482 00000 n 
+0000299735 00000 n 
+0000299862 00000 n 
+0000302600 00000 n 
+0000302229 00000 n 
+0000300039 00000 n 
+0000302345 00000 n 
+0000302472 00000 n 
+0000302536 00000 n 
+0000304943 00000 n 
+0000304763 00000 n 
+0000302725 00000 n 
+0000304879 00000 n 
+0000307059 00000 n 
+0000306879 00000 n 
+0000305082 00000 n 
+0000306995 00000 n 
+0000307465 00000 n 
+0000307285 00000 n 
+0000307184 00000 n 
+0000307401 00000 n 
+0000489548 00000 n 
+0000307902 00000 n 
+0000307723 00000 n 
+0000307507 00000 n 
+0000308192 00000 n 
+0000308076 00000 n 
+0000307975 00000 n 
+0000310276 00000 n 
+0000309906 00000 n 
+0000308234 00000 n 
+0000310022 00000 n 
+0000310086 00000 n 
+0000312813 00000 n 
+0000312633 00000 n 
+0000310389 00000 n 
+0000312749 00000 n 
+0000484764 00000 n 
+0000313616 00000 n 
+0000313436 00000 n 
+0000312939 00000 n 
+0000313552 00000 n 
+0000315321 00000 n 
+0000314761 00000 n 
+0000313715 00000 n 
+0000314877 00000 n 
+0000315130 00000 n 
+0000315257 00000 n 
+0000489673 00000 n 
+0000317958 00000 n 
+0000317651 00000 n 
+0000315460 00000 n 
+0000317767 00000 n 
+0000317894 00000 n 
+0000320500 00000 n 
+0000320000 00000 n 
+0000318096 00000 n 
+0000320116 00000 n 
+0000320180 00000 n 
+0000320244 00000 n 
+0000320308 00000 n 
+0000320372 00000 n 
+0000320436 00000 n 
+0000323199 00000 n 
+0000322574 00000 n 
+0000320639 00000 n 
+0000322690 00000 n 
+0000322754 00000 n 
+0000322818 00000 n 
+0000322882 00000 n 
+0000323009 00000 n 
+0000323135 00000 n 
+0000325070 00000 n 
+0000324890 00000 n 
+0000323324 00000 n 
+0000325006 00000 n 
+0000327752 00000 n 
+0000327572 00000 n 
+0000325195 00000 n 
+0000327688 00000 n 
+0000329470 00000 n 
+0000329290 00000 n 
+0000327877 00000 n 
+0000329406 00000 n 
+0000489798 00000 n 
+0000329980 00000 n 
+0000329801 00000 n 
+0000329595 00000 n 
+0000330270 00000 n 
+0000330154 00000 n 
+0000330053 00000 n 
+0000332288 00000 n 
+0000331665 00000 n 
+0000330312 00000 n 
+0000331781 00000 n 
+0000331845 00000 n 
+0000332098 00000 n 
+0000332225 00000 n 
+0000332445 00000 n 
+0000332471 00000 n 
+0000332799 00000 n 
+0000332823 00000 n 
+0000332847 00000 n 
+0000333179 00000 n 
+0000333217 00000 n 
+0000333249 00000 n 
+0000333281 00000 n 
+0000333707 00000 n 
+0000334375 00000 n 
+0000334929 00000 n 
+0000335572 00000 n 
+0000336202 00000 n 
+0000336453 00000 n 
+0000336849 00000 n 
+0000336885 00000 n 
+0000337509 00000 n 
+0000338179 00000 n 
+0000338819 00000 n 
+0000339222 00000 n 
+0000339654 00000 n 
+0000341320 00000 n 
+0000341553 00000 n 
+0000357215 00000 n 
+0000357736 00000 n 
+0000364623 00000 n 
+0000364927 00000 n 
+0000368223 00000 n 
+0000368460 00000 n 
+0000375603 00000 n 
+0000375896 00000 n 
+0000377705 00000 n 
+0000377940 00000 n 
+0000379757 00000 n 
+0000379991 00000 n 
+0000381656 00000 n 
+0000381888 00000 n 
+0000399845 00000 n 
+0000400430 00000 n 
+0000405288 00000 n 
+0000405568 00000 n 
+0000407432 00000 n 
+0000407658 00000 n 
+0000409511 00000 n 
+0000409737 00000 n 
+0000411553 00000 n 
+0000411781 00000 n 
+0000417761 00000 n 
+0000418088 00000 n 
+0000421922 00000 n 
+0000422205 00000 n 
+0000430743 00000 n 
+0000431148 00000 n 
+0000443606 00000 n 
+0000444068 00000 n 
+0000445385 00000 n 
+0000445624 00000 n 
+0000461630 00000 n 
+0000462094 00000 n 
+0000478229 00000 n 
+0000478850 00000 n 
+0000483458 00000 n 
+0000489905 00000 n 
+0000490030 00000 n 
+0000490156 00000 n 
+0000490282 00000 n 
+0000490408 00000 n 
+0000490488 00000 n 
+0000490589 00000 n 
+0000511473 00000 n 
+0000511672 00000 n 
+0000511857 00000 n 
+0000512041 00000 n 
+0000512226 00000 n 
+0000512410 00000 n 
+0000512589 00000 n 
+0000512765 00000 n 
+0000512942 00000 n 
+0000513118 00000 n 
+0000513295 00000 n 
+0000513470 00000 n 
+0000513645 00000 n 
+0000513822 00000 n 
+0000513998 00000 n 
+0000514175 00000 n 
+0000514351 00000 n 
+0000514528 00000 n 
+0000514704 00000 n 
+0000514881 00000 n 
+0000515057 00000 n 
+0000515234 00000 n 
+0000515437 00000 n 
+0000515632 00000 n 
+0000515818 00000 n 
+0000516005 00000 n 
+0000516198 00000 n 
+0000516391 00000 n 
+0000516583 00000 n 
+0000516776 00000 n 
+0000516969 00000 n 
+0000517162 00000 n 
+0000517355 00000 n 
+0000517548 00000 n 
+0000517741 00000 n 
+0000517934 00000 n 
+0000518127 00000 n 
+0000518320 00000 n 
+0000518513 00000 n 
+0000518706 00000 n 
+0000518899 00000 n 
+0000519092 00000 n 
+0000519285 00000 n 
+0000519478 00000 n 
+0000519671 00000 n 
+0000519864 00000 n 
+0000520057 00000 n 
+0000520250 00000 n 
+0000520443 00000 n 
+0000520636 00000 n 
+0000520829 00000 n 
+0000521022 00000 n 
+0000521215 00000 n 
+0000521408 00000 n 
+0000521601 00000 n 
+0000521794 00000 n 
+0000521987 00000 n 
+0000522180 00000 n 
+0000522373 00000 n 
+0000522560 00000 n 
+0000522741 00000 n 
+0000522926 00000 n 
+0000523110 00000 n 
+0000523295 00000 n 
+0000523478 00000 n 
+0000523659 00000 n 
+0000523835 00000 n 
+0000524012 00000 n 
+0000524188 00000 n 
+0000524365 00000 n 
+0000524541 00000 n 
+0000524718 00000 n 
+0000524894 00000 n 
+0000525071 00000 n 
+0000525246 00000 n 
+0000525421 00000 n 
+0000525598 00000 n 
+0000525774 00000 n 
+0000525951 00000 n 
+0000526127 00000 n 
+0000526304 00000 n 
+0000526477 00000 n 
+0000526654 00000 n 
+0000526818 00000 n 
+0000527010 00000 n 
+0000527207 00000 n 
+0000527418 00000 n 
+0000527629 00000 n 
+0000527837 00000 n 
+0000528039 00000 n 
+0000528242 00000 n 
+0000528445 00000 n 
+0000528648 00000 n 
+0000528875 00000 n 
+0000529126 00000 n 
+0000529368 00000 n 
+0000529613 00000 n 
+0000529856 00000 n 
+0000530099 00000 n 
+0000530342 00000 n 
+0000530585 00000 n 
+0000530834 00000 n 
+0000531079 00000 n 
+0000531322 00000 n 
+0000531589 00000 n 
+0000531880 00000 n 
+0000532170 00000 n 
+0000532461 00000 n 
+0000532748 00000 n 
+0000533034 00000 n 
+0000533322 00000 n 
+0000533605 00000 n 
+0000533888 00000 n 
+0000534171 00000 n 
+0000534454 00000 n 
+0000534737 00000 n 
+0000535020 00000 n 
+0000535192 00000 n 
+0000535318 00000 n 
+0000535433 00000 n 
+0000535549 00000 n 
+0000535667 00000 n 
+0000535787 00000 n 
+0000535907 00000 n 
+0000536027 00000 n 
+0000536147 00000 n 
+0000536267 00000 n 
+0000536386 00000 n 
+0000536503 00000 n 
+0000536619 00000 n 
+0000536735 00000 n 
+0000536855 00000 n 
+0000536979 00000 n 
+0000537108 00000 n 
+0000537242 00000 n 
 0000537381 00000 n 
-0000537481 00000 n 
-0000537609 00000 n 
-0000537727 00000 n 
-0000537857 00000 n 
-0000537948 00000 n 
-0000538053 00000 n 
-0000538093 00000 n 
-0000538401 00000 n 
+0000537525 00000 n 
+0000537625 00000 n 
+0000537753 00000 n 
+0000537871 00000 n 
+0000538001 00000 n 
+0000538092 00000 n 
+0000538197 00000 n 
+0000538237 00000 n 
+0000538545 00000 n 
 trailer
 << /Size 2338
 /Root 2336 0 R
 /Info 2337 0 R
-/ID [<7133376803CE4D5DB8F55E63EF21027C> <7133376803CE4D5DB8F55E63EF21027C>] >>
+/ID [<024A4DBA6B541E3B2CF52768A94D9679> <024A4DBA6B541E3B2CF52768A94D9679>] >>
 startxref
-538733
+538877
 %%EOF

Modified: branches/samba/upstream/docs/Samba3-HOWTO.pdf
===================================================================
--- branches/samba/upstream/docs/Samba3-HOWTO.pdf	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/Samba3-HOWTO.pdf	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5542,14 +5542,14 @@
 << /S /GoTo /D [3698 0 R  /Fit ] >>
 endobj
 3700 0 obj <<
-/Length 275       
+/Length 279       
 /Filter /FlateDecode
 >>
 stream
-xÚ…‘1OÃ0…÷ü
-¶Ô¾Kì8+Ze‰T,(ƒ›¸´¨M)ü{œ:Lî½Ó=ßw²doL²e&¯Ô[›Ý<PÅ°BU2»cˆ
-4+5V³={ávïE^TŠ·‰º;¸c²î$
-ä[—lßI®ZQ¶m²nèÅ«mX]B)Ë	¡F“_û~èæ˯Cï§áHf"ÔJÑD–×ÐÄ°* T)Ûøãɇ$Í×0ÕŠ?	C܇aytãá}‘ú͸ȇdVBVŒÃŸçà©5±^ÄÒwœõF*Ùø~¢Àôĝç¸{:Iªj itbk»ó¸½0üÒLBRš)÷ï?îmöFAi?
+xÚ…Q=OÃ0Ýû+<ÚRsøœØqV¤Ê©µ` nãÒ |T&Hðïqê01tº÷N÷î½³9y'œ”+~£Þ›ÕÝ“È	æ PfÄœ¢…‚dJ€’91
+y¥æìX’æ’Ö{ŽêØÚ.ҝíYŠô`#MAÀw„›š¥‚¾˜:R;4ìÍT¤È ã’$¡@—oÝÉy7‹ò«mÜ<’é
+)Åœ,) b™B&£¶r]ï|
+E·0ל>3-¨óÃÈ’ÀÆöcûÕxfH‡H6E†i×ÏÉÛulÍY¯ tÞvÞsÉ+çýO W<X?ïù,Dix´p p­b¶»L®gaòpMò—õb$8׳üß·<šÕ/<ájù
 endstream
 endobj
 3698 0 obj <<
@@ -17751,8 +17751,8 @@
 5702 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 5703 0 obj
@@ -20469,8 +20469,8 @@
 6194 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121007)
-/ModDate (D:20081002121007)
+/CreationDate (D:20080918135559)
+/ModDate (D:20080918135559)
 >>
 endobj
 6195 0 obj
@@ -23069,8 +23069,8 @@
 6554 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135109)
+/ModDate (D:20080918135109)
 >>
 endobj
 6555 0 obj
@@ -29475,8 +29475,8 @@
 7162 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120549)
-/ModDate (D:20081002120549)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 7163 0 obj
@@ -30005,8 +30005,8 @@
 7225 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121007)
-/ModDate (D:20081002121007)
+/CreationDate (D:20080918135600)
+/ModDate (D:20080918135600)
 >>
 endobj
 7226 0 obj
@@ -30770,8 +30770,8 @@
 7317 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121008)
-/ModDate (D:20081002121008)
+/CreationDate (D:20080918135600)
+/ModDate (D:20080918135600)
 >>
 endobj
 7318 0 obj
@@ -30953,8 +30953,8 @@
 7333 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121008)
-/ModDate (D:20081002121008)
+/CreationDate (D:20080918135600)
+/ModDate (D:20080918135600)
 >>
 endobj
 7334 0 obj
@@ -33110,8 +33110,8 @@
 7652 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121009)
-/ModDate (D:20081002121009)
+/CreationDate (D:20080918135601)
+/ModDate (D:20080918135601)
 >>
 endobj
 7653 0 obj
@@ -33316,8 +33316,8 @@
 7669 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121009)
-/ModDate (D:20081002121009)
+/CreationDate (D:20080918135601)
+/ModDate (D:20080918135601)
 >>
 endobj
 7670 0 obj
@@ -33460,8 +33460,8 @@
 7680 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121010)
-/ModDate (D:20081002121010)
+/CreationDate (D:20080918135602)
+/ModDate (D:20080918135602)
 >>
 endobj
 7681 0 obj
@@ -37784,8 +37784,8 @@
 8296 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121010)
-/ModDate (D:20081002121010)
+/CreationDate (D:20080918135602)
+/ModDate (D:20080918135602)
 >>
 endobj
 8297 0 obj
@@ -40757,8 +40757,8 @@
 8700 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121010)
-/ModDate (D:20081002121010)
+/CreationDate (D:20080918135602)
+/ModDate (D:20080918135602)
 >>
 endobj
 8701 0 obj
@@ -42041,8 +42041,8 @@
 8889 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120549)
-/ModDate (D:20081002120549)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 8890 0 obj
@@ -43887,8 +43887,8 @@
 9135 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002120550)
-/ModDate (D:20081002120550)
+/CreationDate (D:20080918135108)
+/ModDate (D:20080918135108)
 >>
 endobj
 9136 0 obj
@@ -49219,8 +49219,8 @@
 9535 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121011)
-/ModDate (D:20081002121011)
+/CreationDate (D:20080918135603)
+/ModDate (D:20080918135603)
 >>
 endobj
 9536 0 obj
@@ -49373,8 +49373,8 @@
 9552 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121011)
-/ModDate (D:20081002121011)
+/CreationDate (D:20080918135603)
+/ModDate (D:20080918135603)
 >>
 endobj
 9553 0 obj
@@ -53939,8 +53939,8 @@
 10022 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121012)
-/ModDate (D:20081002121012)
+/CreationDate (D:20080918135604)
+/ModDate (D:20080918135604)
 >>
 endobj
 10023 0 obj
@@ -54555,8 +54555,8 @@
 10102 0 obj
 <<
 /Producer (ESP Ghostscript 8.15)
-/CreationDate (D:20081002121012)
-/ModDate (D:20081002121012)
+/CreationDate (D:20080918135604)
+/ModDate (D:20080918135604)
 >>
 endobj
 10103 0 obj
@@ -109278,71 +109278,77 @@
 /FontFile 17590 0 R
 >> endobj
 17592 0 obj <<
-/Length1 1218
-/Length2 5838
+/Length1 1220
+/Length2 5916
 /Length3 0
-/Length 6578      
+/Length 6662      
 /Filter /FlateDecode
 >>
 stream
-xÚ­”e\ê߇‰ƒ4ˆ‚*CRÆèé”ÎÑ962@º»Ki鐒.Qº‘)éîðÙ9çÿ?úœçíóÙ›]÷ý½¿ëŽ‘NUƒ]Üa
-•AÀØA !€¤’:ˆ âà$`d”DB!NÖ¸Ä	* 	
-‚ âΖ .N ˆOˆ[@ˆ“—€ ‰°wGZ[Z9X$ŸýâˆÛA‘Öf8@	âdµC×0ƒÀ 3k¨“;@¨ÿ¹Â u„"] æ ÀÜÚÌ	`
-µ´† ÿ’‡[  ü›;ÛÿwÊŠtDKXÐ’Ï hEsæ0‡Z •è^P´Éÿ‡Ô¿‹Ë8Ã`Ê»?ËÿyHÿgbg
-sÿO agïìE”æP$üßQèßnJPskg»ÏÊ;A`ÖfâpKÀù÷µ£ŒµÔ\ÕÚÉÌ
-`9Bÿ‡ÂÍÿ->·¿€`=]m°Äó¿ïó¯9Uˆ5ÜIÓÝþŸª†ÿbÐ/FŸÒÚ
- ÏÉÁÉ	BÑŸÿ~3üW/i¸ÂÜŽ~¼| 	q'@¿4ñ<A k¸9Ô
- uC9à'ô úL¼$ÁŸ×ÉÇ Jþ9ôñƒ @Ù_Ä Êý" Pá	€*ÿ :©þ‹ÐIÍ_Ä jÿCè7 „ü" Ðô¡kšýC<è*f;»_i'' hþ¢m¡ÿ zûÀ¿oôW ]Âê7ä ­Cô›ßíû
-Ñ2v¿„n
-ÿ
-Ñ­¿!zÿö¿ÌÑY{
-‡A-~Ùð€þ3Šü_’<h{ôñÛÆ@hoäoˆövü
-Ñ+~­çE7srýÍ…ÝÇýWyô®< È¿çÿï+•@¸y²só عxAèë ðórzÿ¯œ™3-íô× ú©ÿ—-¬Ñ?(Ô
-jF03‰0°Iª,ò‘~;\ŒÃŠ)aù!Z¹ºmì#¡ÿt&,¿ÿ•ëBø²$õ>Éέë5ch³—Ú€ÌÊ!:yâvÍÅd-Õ£|˜ªä¾jÿôÌ‹´©nüx›SetásQ¼î»îŒýž­U)ÍuÜ9:Œv}—šö´ >~°L*L+èM7úÝd‡¢`ž y×»ñ±ÌùûØáÕ?ÿz€hv¾wù/;îÖàxcTLÿAúŸ!|pbÊjÒf	—{ÎCþ62­¡ñú²4(:Ì]ǝIƒðI×ÓÇNô/Q{Õdøpø͍¿ùœ­èÊÅQµVá8G¥¬ÛȝmJ;ã`;Ôž‡×*o7‚Q˜%3ܵ^?ÞfØ²¨MÉ«8â۝ÏY4'Ö-&J‚¼!D3xQÉò÷ôóß8Ϫ\çSpÂÈÒËÒS(B»–T®Ù,vb·j¾à³ã†/™ÊæpëqÍ©Žb'(rÿDn¾¥Öq›KwµY•úü°ŒÂFUx5(=û‰ï­û32’P$·<íò{›gG¤/žåñ l¯ÚÙK£,©ÕĨ5YÅ?˜x¨iyFš“IúÆÍø8Ú*>ý‹ûáy™ÎÄYZC÷ÑŽa²NC¢wZâÀãĤñ™Þe“…£eãws]$ /kÄѝÉE!kØ­f‹äÙÃð ¨É»¸»¹ó•TeÁÝ>C{¯VÈ	xÏñZ*~¢w(Á¢¾+DÍc¯z“¿}-j9zÿ1‘—¬B´F <=xÍÈš«1¨€/p³3.ä\‰"¿+ù‰çN<GYqëIs/àø»K'w¨n³©ÂM’Ä¿‰ß›’Kø¤!(±ÞÄg»Ù:^z³Ð¢3{Ç[åå×~*&ÖÓw´–åC­|œŸ$/Éž($‡:šu|0*sVÈː?çv>Pm äHÎtUí¦)9ry#'8rìä,*jóêµKD^qȏ3¬Ôy…Xü…P‹6x¡®YZ엁þ“´GÏë'‚û•îé´žÙj$+ÇÙÇï¹cdpå¦*>¸‚y[Þ—c“›ºø!NDŠQ
-·Äº«]‡­Å³ž…3¢|¨(¢kÙso4T–ZGžÊB[,LÛ±¾O‚j­À‹¶£ì,” D2DgÍM‚Èî¿Õ
-nÄÖÈ	`WRvÑg¬òN éèíM‹ÂlpYZsYs<\qâ­_îK2{ÝÍêRê“Ãþ`„÷æÅñ|v“È\fñ‹ŸAô"c•û ›ìcÉŸ©Ï¿Š©ÄÇ–†ê}}…µØgé‘%n¸-ƒÆM7p”ö&¾,LJ=&íÿA_íƒßu¥e¬à‹Ã#S¥Á¸—/½|WAÁÈfe@¯[·’±»Ïž°<öbödÞ8µ–G*ã?%ÁMFÕ†'Ë…¿_ä›MýðÇ8‚¸N“}1xåĤ2—ÅI-žOÉùw#þåsJ¼Œ-å¡YxUUuf‹æƒ,îâ’ºží½¾½?FVQ,CŸ2»Ç¢•šížü¤¶À¨pcâªe—òØÉ6+.ƒ‚‰áÇïØ&¦CäHÊtÏWÌbŒ²T5äsz)uE¨ÚxÞE=¨‹Ï´#¢D*¬KÄ]{LTÓ‘«Um <ng~挿äÄ1ãTB¤:&²ÿÁÛ»Úçù]5‹¾||Sâw¬|SzQxy†ÙNä†Ý«©Ôq‘Œ?vawWx.KÂ5÷}îl›ªÅcWÞ½¡…ÞJ¢éŒ—KB«{M6`æŒêͤzpv¨¯æ¡¡9O›ÛšòÒI‘i_WŸpž¬ŠC³4¼3‹§°¡,î°nÒEûÐìîÏÊ\šG­€ý#icP°Ûé\ŽCP­~啒Χ:J‚Ê#ï7§ª:%‡ò‹ºñ6ûÓÆW¸L³ÔFïõL)þW˜°)Ñn̼‰Ö°U>xúÅ&ošagÕ;”ŽZ÷›ÉÏS€8k0iÍýà nÆ$R›WÒƦ®D–NÂD±Ã‘!ùš¤†¤e’wÛ'ñ¯~jcÐ4k(?>Ç/sÔRÇ".­Vv?R0³Ù<³…7ÆX‡œ¼'—¹¤WFí±mmfMúÊ$§¯èôqÓiŠÞ1Õ;.è–aµ¹œ¥
-/»Áû„³<v¾zü~ô¥R¥ç`oí>¥Ötƒé‹.¾8ÜHÙÙóêücIžò3&e$NéUŽøLüd:!ö~;صE+¿r LäCÖQ¥³üË“ªð¾ÀÓԠòcÔlNDx®ºI††ß!&Í`	kŸ;¿›	ûö‹Kc#N°q;°Mm5C/¥yLÐ]‹——\ªºqªyù” ¡<kýÞJû(b³é³Ïjkð­UÖ¿ UE gˆ×Übä–›1ûËÉsÔÔ©šƒñ¼õ¹!j›U K¶áÁN÷–[)AFS¤í†¸Õm‚åq%©£ÎðËÄ®1£§/x/Cz[rm”°çT{ÆúûÛÔòWhq+óô®ç˜;¸}D¸ßm£¤¿XÎ5È)¨Ümoü¸˜¯è¯Ò®yÕ1Æ™|ßñä´ƒ{Rn¯Ç–|náá%ïHYè LŸÙàÄ%H®ƒ}L•™’«zÙ`±øUÜa™$ó†’
-#SgbæG!b+M<u¾es)«  XÁ¯&L¦Ui
-·95.”éÔ´i½4ýÒóÞÁÍbäøéEoޏN¡tE*+&Ü×DŒ=qé§rÎ’SqGŽ¯“mËKêx®·Iñhw!›T	ÄÙsÚ8l’zHÌU˜ô‹µÑã'àùSd~õ<Nþqêì×r’’<™7£ê¾Ü’GuâÑÑ ãÅ¥åáùúIB%7[³“Ók‰|6ŠcÚöN0Á
-“fGò;u%^É&šŠñ:¡ëú6
-î³o«œëß(oèJ+]o×gÉ‹ØG\&1ãWçpDI>æ³ò^xÜáÙj )Ä2 Ò
-M40Ñë~¨Öh>!ìUÖ¤õýÕiqŽlFãñÝÖffÊÓþÛHV³¶"TW¶ÎùÌ•GÕaÛÚ§…
-±žQ×õŸòiBÀ*=@ E¸Ôr^Ò‡ð3ŒuãÀ]aQVúþ‡~H­Hb®‹¤Aƒ(ÞüAwæD}Gί-OEhÛÓiG8¥KesL#k#“ª”ù5y^O-'ñx¿jäLÚh9• … ʼ{8
-7èáQ±ò±¦©jGÌ´ŸÌ*Ê9?¿5x”fH@MÈûŽ¹Ð>póõÇ{¬Ã«¦ULŸú/§Ãœ6tX.êãX_øRêWÝ…Õg²L1+
-êâ–ˆÏ؈Š+ÒU˜0õÚÍ‹_߹☠ÊX™ËV³ÖS癸“ïæ9
-1¾þz–œ—j1ËöS&‘Sb{‹±W»/XµOø>L'0áÐlUö§ríKæL+¿,‡Î“žKrðAÄ“ÓOL»€›”›õ™ÏFmÚ®Ý5$Ñ°¶ ¡ùîFëIÅp	'Eá›Õ]€ùd^NA{@ÆÒS³ÚÇùé¯Yé‰T!úŒ:.v_ÉOúüdÓZi#ÃÐTÊŸ,ÑÝa&ÅjÀ¼þ%/ÞܯXIGš‹ÌºâP±q”¹ õ¯æ#bao? õV×`|ÖgþAExxTÄäQ¼K¦Bç|¼ëóÄG·£I¡Qøµšj¥óÈù.[ØêÜ¡ ÅïzOÇÀWëݏ™°¾89ÕtŸ0ÞAI›j²ºUÁq}캹qõ»®Âô£é¿Û< S­tt¶¬)‘ǘñ„9Ӿȥ±_á#à)÷‘€1Qבݰޙ#iÿÄm·?0í˜ÜZÙ“§>\_U,[<Lvf•¨þö¬çþ§ük»Ôõ•à%ˆ¤ìõªpQ²Å!®úO„HTi¯øC÷gßpÄÇ£ñy¸l„ªÜîÒwžêu%†àQ‘¿a ròË=â“:X°RÑÜŠ—Nó;íŸ-W²åÉ°[mP=$&ãûۀݶ¯‘X7Ì[¶|wt"Ü
-±Ÿ<føÌ,bÚ’;=Ü£‘ weH/S{m5€m_¸A“vt…ÛëéaOHèÊzø¸ûfØ÷”À‚o™iú¦XJéöéz‹Ìùiú»Ï1/
-h›	t—>ô›’º2%¬4ôcÓ?ìk2Y!/ùYÚ¤
-ŸºKésxoløHý¤PÀînübÌ+æ¾Ã/CómºÄr±J_9ÖêPˆ¤UÛ~IÕ1œ-üüž¾zàéØvÃ'ï­¶5Ìiì^wFöúò>¾z¡xèìÛÁ­ê\zþõBÅ‹‘''
-ØÝjÂ#9—åG-Ô%™ò0sù³ir
-¾#•Ú—15æy²´=‹.ðU*:¦·ÈþøâS=€á—LeœÊT#딺ê²C[²ôŒ‚µ%Ò¾}}Ê ÔœÅS©¹\Ë1'§-#VIî4¬ÃëVŽ…sðôû‹±9u£
-oš©
-ÒŽòQ=%ÂJ„9¤€ÍÔG˜â0ÂIK¿™ÀøX;g…©ƒ§‹2•ÏL»ðŽC÷E§f
-a¥TüÿJïbn®"Ø~þ!Õ)SÁEՁ“œ‘¸øàæÓãöïóVåúÑþÁp9¶ÞD>ÝÍig+)®Ñz¿½{6Ûqs×½¶ç3½§ó-4θÇô퇍Ÿç¤Á {
-G°Zf÷Ãùç˜éŽRÖ,>c7È}ÄkÛ:ƒMbØ#Y¬ôÒŸÒC¯ ~J·Å}1µ—Àþ-a¼ˆçè~âóØá/ûªÍ"f—½øùOX	yÏ+’+®ŽÄžøÂâù
-?X…5ð`HQK“")u²âtWìqtÓ!ïê2³?‹S½Üð¾	eOÈS$‡‰Ò¾çêPŸ*§#ß)°׫S£¨mÙ§Û¬•Ñ2êE_ÍñÿØ‘@¶ðÚ³ux†c
-ȉ­ù$Xw¯Uyè{ãñ`µ*.©ùve<’½-
-ä¾<+Ä÷}8d•"Î
-ºû2øÆ,ËÜáÚ \öv¯xEU²vÒ;¹·¹ßÖÖþAŽŒM…O–T³Êï{Š\š^ÆÀhœÎ@z¸56ä›:.©Äî·Ì¼¢~­Žêüp!¯ãóbåkìß±xî-2þ$`°¤¯.Œcš±¬Úk‹‰0Vw.”÷«×8Qøh¹Õ+|¾q¸ªÏ´!´ÿÑI·äü<6%Å3 >;Ér“>½ePþd”
-È¢µIYiã7$£Ñ
-sdÜßÚçÜMº­é„f|ØËîBm+û°:ã§8‹ÆS§æ!Ó÷Œ™©LÂSM¯ªš¯é™>ÍI«E]ÇŠâ7I¿[ºÐ~7ò™ÍÁÕEã9÷ë«‘êø†øZ[<¶ô·Rd0_¼Ár.›Æ­IIãL콜=WW Çž6ÛT€ÊPâs€2|„r-D>ñ³^0=k‰äfè–ËyCíüH”cLí‡íÈ«¤œ¦Ê{ðÐÉk»=ýûmKžž9È}ó@±Ó[g}:-Þ"wÈ9Rë!òøÊwˆ_¶ãy£ŽFµYAXûÔ´a&Åòtmå!Q®†í¼u
-‹½oÆiÂèLýš²…êœõâû ñBå«I>Ëû¥¤á	z'•v#ôiÎMòùd[‘Wœ dÈ»¯•µ6/5qSw¿¬ë"ú²ÙáNÑ›"#Raóí¦Aõmýð{F×7O­“V¶Ü{»]
-zÆ^Hr,Ýr9(à‡¡ EØž%”^_ÆÓ;ºu±e"d¢(o]ÈóN¿ÃàAäA'âa1ASÄóÑ9’ålî\´^G[ÁkLà¥r¿ÜƒÙvÑÍ8]nÚ¾¬Ò»~>	Ê’Dc)¤¤«@ëÑ«À¥×¯ÄY¯ôV¬Ï{L|dµ8•µE©=™)¸³@ò–DtÒ‹0ȲGëGÞ`¼ȳ$A“Ó$2.¬°°Ý!èÞñ—PÌyÂvâáaü%ã3ÿË$Œw凚/Œá*ä¨ÔQßñ—ÌUÊ-òý<OÏ
-dÔãÀ§dà×5A"o°e`^œk'"sˆGȬ¨0…xÉ;*‘ÆKâìUa,¼e?Šdj§^2ÌÌà¬ð[boÐåˆÀ[ÿ†EÂѼô¢¨^´PîíÆwmNU@¹Jy[1'••=óOÚö©XÄXM®HH¨ å­”MÃw²B÷‹ñj	Ÿ=b<»Í“×Ï[¼~V´û)½‚e€É´¥}rËõÓë0›®ùÒ²LþeÙçÔ×Vœ’’pç'«FUìâ+º"ºÚk4¤,Íl{ÌÕ¹²¾1NÕž¥2[g®‰£¢Øؤ
-ŸÐPÖ².qç6wÁüæãOè‘\ÅVcš³‡¬¤™‘+ß0J1‰!Zƒ¥´_†zXŽ|w^§À‘¬žšg '¯í³Pge<¨Îa‘¯èy¯iØJ†é ô\({©£FI~ë¸þNÿر™w¼÷å¸,7?ÓuÚÎqÉÇ-”U§bBqÐ:8f:扁۾?JéeäRQm#æ/ç֏FÍä¶Ü,?º£TéwÄX­èé§ʱw¨I–1ö/³®‚Éê<
-ܨn:p	?%Zpé™ñPmb)îżS Œ§öRòÒRR¨ös£èû8™½^J*îÀ {ÑÆE|õ½£8Ê\¨wöMŽ^:ÛǯlâeZGÐEØT=*#>ŒQÿªÑùû‡ˆœPÆ[ñ’n™	ҦƯͬL¨Ä¶!A‘óVI"ú¨Ñv¯°çû_ÛÝN§òé sN´9fF—ì’v=
-Zɏp¶í¢Ÿ‹\]â8Â#ëÀ‡}ñw>梤H- ÈnÍâ.Ø1…EÀOËÀ3«Ä"{ÓCSVÂ`ÉWfCšÏ”+9ÂŽ¢»ÄWµÇS/- at Iø€Å›{ç\ÁþÕ¶Ðlr{ÃúãÑX¦TZ@–òõ ‘³+›»1S®£³R?Ä-½*/dÎ_?òIEåys8h©}sf&£,ûšŒßåêëª_žÚT:¬ÌÌø°÷ÇJßسÕho lÜÇ
-¤tì
-H†ŠKj·¸ó¶fÈÈקåi)YƒêŠ‰B%¡®AëJ›”¶KÆ
-?Ød.\äA/M„ѐkCaFÆ&ãåš÷­p}´EÕm¹=Q„WÛÑû=!ûìªW×:¤(j\õ•¯çþ›…o¨P1Ò¹o±ʾà¿Ù÷õŠV0`àߦϺöÕn–³§Àωp2ÜCêè2Ú¢ z#I"ÏœLI`ïØV6©{Îrp%…:—Ǫ»	vD…‰6ñ‡¿cѯîG.åݧ¶UdÙ•¶ýÜl¸ÞhÒPÊO¼èºhž·Qèæ'©»÷>óø{zZÞ3Õý·
-ÿÛ®tµ½X[íRxl&Û !õÑù®Aüü®*I§xŽÇj£åË8yE£ÏsVcv’p4Tk÷ªr…~A™Q²Ô¸VU×Ó3¹CÛÿÆžYÊ=Û2
-‹Õ”n²[3ú3÷«ÌRZ–·ÀýÂÎ÷~¬(å¦G(M›ž5×UÝ‹{HÄrTÏãò%ã~¤£‘~`àr«·Æ>T/©‚q£[[6¯|-LÑ
-_PÎdÈ]%Ì-–˜XH¼ Xj*(§­žÖŸ©IóíŠØÀ>^Õ¼n#™î÷35ðî什‚HÖJËÒ.¿)X1ÖÊfX«/æMÿ,ä®ûã´Ætm R%ʍáÄ€õþ	a?@½à ‰&øH
+xÚ­–u\“ûÛÇA¤&- Lbˆ”ăÑJ÷醣dÆhIi‘II¥SJi‘ndrDR‘¥<;çü~GŸóüû¼îî÷•Ÿëú~ï½ÆÃ¥g ¬èàn‡TsGc…!"2\"‚ˆˆxx”1HÖÅ­‚À"e@iiHÑÛ	$&
+‚Àd R2¢ ²»‡?ÆÅÉâWø3H¤ˆBb\ìhuF¢5ìn w{$Ö_¤èæÒÿ3äôBb|" äàbÙ!\Ð ðŸ‚4ÑŽî É¿ÍÞÿuù 1^Q ~‚HA¢ƒ;ÚÍä€t€uÝ	½%ÿ¢þ]\ÍÛÍMú³üŸKú?nÊÅÍÿ?î(o,‚»; 1臚 ÿÖG:¸x£þíÕÄ"Ü\ìÑNnHèß&/5?¤ƒžÖÞäˆpóBþeG¢þ-‚°·¿$€µ4õÕUÿ>Ï¿|z4ÖÐß㟪ÿŐ_LØÆÅd!*"*
+!žÿ¾Yý«—*ÚÞÝÁM¸0ƒAø7ƒ@ @Èí€ô!ý‚Á"hw,!DØIÈÑøó8a’ °òŸ¦¿H«ÿ"1Xã‰Æù‡¤>ý_
+~!ÒðÁ@`ãˆpÀˆ_$ÛýCâ„<{wê—"*
+;ü†}Ȑ00øï3ü@(áüJ€À.¿!!Áõ7$twû
+¥A`Ô/„Z£CBk÷_R	±îhäonÂ><~¹	¹í†tü¥Nò+æ‰'¨ò |î¿
+!́ù
+	sxý†„Œ_ù„fXß_Ú b„>þ¿Ê¦@bþöÿß{ª¤äî(	‹I@"’”
+ú_qöÞ‚hì_?„Ëþ_vt!|H¤Ò0?ãn/áú¤)êE°jáØKÒ[ÄJN¯’të;'__y8—LìVòNÛóÖÇ:ÓÓòì«4k¤kœ¾ç×½âÚÜVûæ™”9ýsÍÇv-; åºé^6Üÿ³Ç
+üÃ-Ú¶¦©ƒm	⻇^¤™õåí¾Ý*ÐãW1üB¾ÈEÔeáÓЕ“4UËv3ŠŽ¬ã…réÓez¾ˆÆùÒ¥¥\ƍ>v¦hüðݽݛᴐâYêO˃	æÜi˜zdzÖyåæŒx¯!(Î_˜ÓÒz~Z™¾3mâMÊDOÉç¦"`ªÍÜ)Óï>4ä‹„/NE=Óñ©[+ÍóZdÕ5ë=_hËÁ‹íãЍºÛ­¦aÄåóÐÆë…ÏÆïóߛռëE‰:”]tl;ÎhŒ^ÊP†Ù ¨æ)35ܹqˆâë|qY¤–ès«r³˜âz?é
+Ÿ9î¤l5¼§¼õ’<þ“zÔ|Rlá…ÞIz©”ô³Y´ˆõAÛÛ¨öv:W¯;I'’„Õ<h\P™]d!ÆÓ_h¬Ì=€„s¤¤£¸¢-3˜L=ôzú¯ë*µIîÍÔIŽdì:áižÒFúÙ$9§å¾÷ß;®2™Æç´ôZïXeš´dådzMÏØàÍOÛ½XZ—Ì0 üq/^­ÔKc~
+[4×â£gèÈ¿>ÇÕ²VÅô~Óö\eˆ§³/J8—ér{–Æ^ÒÉ Å=ô~”lã“î8M\e§z ®•d…΍Y³vk.…EmÖ§ÆÙ2){39DwÒDêèk¨;ÛûAË>=ÐHÓf[Ÿ2+e›d(âùŽ–èŒfÛàív—4ÕÍ2Çž’ »·?¼cå½uTÄéT=ÚT>¥çÐÎŒó²Çw¿²®6­ÑT£¡„úÇ|×kaÉ|ê«×w½L~ß'RãNÔøÖ/æÎWíŸÇÅ/c׿Û_ÊÆi¥P~Œ»Ëoâ؉.3³ÏIy?üî0‡M°y:æ7œÁ¤ß ~ê‘úò›?QžØólæ3UÓU
+!Ù“uE*Z¢J´Ó%:ã&#ñ/ù¤ãº{ºQòfNo¾AF«²›³ù9_Êrv$#\®Ò„uÔP$Ä XzÊ”@	7“òg ôWÍbZ¥I
+"„áº><uAé×»ûûs‰[|>­ù&¯yí­b%š+ªCiÎûnÆyÆVú&3Kü§Æ=&i³†8¨-½·LZâ©ó1RgW¾Èü p7m*¥2^Úüõ„ö¥¥'‘$uËÏ*dê\‹HåÛ+·«)ÝØiß­s×SöžÙh…’Š«Õð|+Q]¡ÓÒ²v]6ï3«åéð¸Rr²pˆ³‰	[+DAª$hÈ3Ãã3Õ©â+–`Ù¯.O¹S7
+/Ŭ²!lkŸócï¥ÁàÞ§äi·Y(ò¶tGÐuuõOß2çC_–7½Ýþ6ðíòøgé0þÑÁ§}S¥I:ðv€ãèHTãÇ+Ö(¬:½óÌþeÒ”}P$4=«ASev¼jŸlÏ\ÝR"ú Þ7ùøî×@º0æ¦\	ÛŽ<œV1)Æ‚œ
+Úx@ÕÐýܨÞRw
+å€÷¦ü„™Ç–SéMÊï¾
+
+ª¤»ç8PBiG]t6kžHÁTÜj…£ßIØ@iÏfOÉ祇»]éëV|AΟ~½
+}lBâZ·tàK$ñíPæc9`~¦Ô†—S2ê[S˜Ç³FÎè?/Œ4\M×týYp½ºrF~.Ô78^<¿fÏ>‡ïx#Àm4ú¨vÉ#NNØÓ_ Ê§}Âün<giêw´Xà™¾×¼ª
+7lbÔÆZEé™”ïiö,™¥¹îÎÙœ‘‹ð. ­+Ìí˜.+jM»–×ãFV~°r—x›WÿˆÿP­™µ¿ËTa<Ó	V\ŒÓY­×£fÒj*aQ'*¤@%†»®[ñD:Ó³.y$.Ž…_1Ç\áøcªh÷±-DTBÖ+m¤ý›¸ç–¤øzõ±`¡-H”½^39•	
+ÏtÎ’(óT¾ß)©®ä’Špe2¾vxòÐw]uaMåÈw„’¿S•M
+å6¸øàt±ïÂ\1×'Õ	Ðä
+ ¹'£³:á™ÜU^”T´ ðr¸Ü7üE$Ó„­8‹wŽXé/¶«X¢Ð™S1ƒqƒS
+0çá¸÷Ü=¹…&‘é½Ò[ÿìÑOy"†÷¼uTÞ>Ôz½0Cw5ŸUiŒÁÓZöƒ
+/îˆ}ÕVë)¢÷PŸÿ
+Ml1‘Ÿç…¯FƒtDqŸ¦÷„ì*5ç—Ü̵™)·ÎZ<ƒkò
+õG’$"["œG œUÒ‹ŽÒº0u_ñÍÌÒÝ«l!wIɴȺ™éß~_H㽨TlOÓ[žÀð¤*öÃh¹ÊVWµ
+VÉ#An·ïîQó䢿¿W€®ÉéY Fÿ¶ºt++c-ž¥Äö¨&Š…âYÔ¬Ç)p§Â5ðÓ/·ŸÀ‡Rƒ¬²ß˜*ÓÑÕ«Éž–²H¸ù5"»—Ì/O$‘?›•´*f¹/@ÍJ4Tt˜?¶%Ãã
+zÔ̵û“Ç6Ê-íÊìq…¢g7·:í(8çÿPkÜÎò*.®[|Y¹™zFïJÏÜñØÅ›™ë¿’embR"ñ|ª»¢ÈB¬½1»¨+x‘㍺IÌÚÔlϦ*÷JSªÜ#½Ît05ÿÕ³Ú=C5¹!IÃeñ†¹œ˜k½¦ZŒ{cHy½"ÁÇÍ3¸z^áï¨Ìt2G~8|pÊ=®µ.ã¤Q26bÊ]¿-4oe·æÆf;®6 PÓI,êù±Dšªî<Ƽ¸°Øt1´(,ªçEmnåi°XñÓT‡È¸F4Ó–âôì^R²éîoï_ ÞDH²¤ÁŽêy Ò¦Ž–kóVMEÙDú/žîRRúÌ“4®ª2·ÓÎ
+× ÂñÂ7ó›1-? †|ûPS}Þ™;ËÓË4'TL1σ€6ºZ"o£TÄò¥XK2ý‰4ÍBÖ‘·&7ƒŸn;ÕˆCRêø-Ö4„éîË×øjH ž4²‡ïÁäág¤‘ã:m?È}^~·—Œp§Ÿ£‘Ir@ªN”蔇eóñ= ¾Ø¡
+?|ò8p QxÈ,!¨äØpi׎yne1¹t‹­éÖ¸ú
+Øn šçª ¾®mð)XãQäY…kÅ3¡Ñõh¿¼ýk©ëd_·´;r€yßöè*ÕrÑ¢;ÖÉú<Ç÷–ïóÅ’0×®BùöccdlK%„©žª&$­ï")Û«?7ÿÐÁ2ÜË\+Óê
+š–ž½_ûž¨$²ŸVÛõnç«vS­þkôxì­NÙ…øØ÷€”ÁE¿SŽþSﻀÝSèêÍ©ïáFÙƒ“5‡£`ºE'q@ç×…/øŒs
+\øÉÞçY
+‹:yn¾„™D˜ì—q DÝ¿3­ÊÖ²<¾§¶Š“K7éËW¥Ï>¡=~¤Ä6 žp¦›t¤û/ýHKÁût½~OXZ\Zæò!µE…ìgQL1öà‘
+kéB[‹p²©«îIë3ãìÚãáÁvdJÄÜ}d
+[¿8éiºòö	Ðá…ÿcóJ}v/ž¨…©VÏæ†S†¿´!n¡¾Þ.™¶íµ[,Îýö-È}׃®“¦d¼âä±oä“·UaDtZôæ¤^«~ãÝAÔ_ßEfÔ£V|]æÕr€'BÁsÕ mí-»Ð]mŽÂ.õ¤DT–¦|býâe-ãåÍCšWï²SÜ/€•P²<|ñ9øH$Óm^kQà[{æß»Ë8u^/Þje
+¨ÒÌ¤û\UMÚxËéYȈ¥«¡›.•à%†M§Õ‚Õg Ž­bÿ‘‡÷zé~bØe¦áÀÏ5	$J³Çž8J®vþû›võ
+
+g‘Ô{ê,œ‚ï²Ýp‘æ7Ô-í#í^[Máy÷ÝÕ“Úßo–Èóª{|7ÚèGylæá4©Ä®Š¾úÑ“a_1JÒûÎÊ(JÆU¼áÒÕ0¡Ös;÷`C-*oÎgÍÅ»7U¿Ñ7^[u²…×eÝOqÁÊ]ÒJBe‡¦ªî©o*±·n¸{•†ÝÑtå™{³úÆTCüÎ="™Ô·Vúê¦	¬j‘³ì“ †tnâöqKMš&\WÉ*æäÀ<—|Õnf«rñÇVçÔúPûãŽÈ’Z1`êðöǘÇ N󆓈3…}Õˆµ ¶][Tȸy´•fÄo¿‰/6OôPÀÝa§öËYÉ›ÿ,ÝKv4Ƈ…±øò…ý¨ª+«ÜË v‹“€šRÕb8ñ$fÇÃÚKšäKƒÃ_’•.c9ž-)AôZÛÕiUV–üÀ!ìœ%$xi•HrEöƒ$lV­]¥QÒix›rówW•ëL4‹;ëc3ç3—³±bÚîÐ;_ÚâÉ°VÕf=Üs;h{`ñ6ûr;óȆ(püîjÏ#ý‚¥ECÜvƒùxÿÉ
+€B­ÞG>_zÝ‹ˆÈÈYÔvìîó€{Ù=D,¿Î’šŽmHKyô¶ÏaZm¶¸ºw2åWâ`iõÒzr£Åt¼ìÜ(#ZÿnÇ·%*Õÿ^Hš›z!£Wà8}}ËJšô)ÕHI¢¹–l‹~ܦÛ-Ãê‘ë;lÂÆ"î©—Ø|NO«Xal&Ñ®_zÓF­“ÖQxUÐPý↑óp”\]™:W˜ÄºrÙ99§/_–‰×ì#ßαqò­šÍ ‡ ­}+q×—îòd\àâ£\;¿kÖà†|q‘²Ì…ºŒª´OÏ?ÎDÆ]óÞØ93–’A•&í±›VírPâcÃÂÆöAÛ´Üó'=év
+_Êú{¼åfy¸àûK™‰¥¤Ûû*˜}Î÷<	Ú×ËU‡#w{a÷‹O9MíÝ®pÖÖmÍZ´¸¼²YÛ‡MžJºUyd'“M%Û®µ{arw•a*»ù¢t!鬫Ô}–[z—;*|“I2}TZ
+³d)?Ú¯´+²FãG°	–Ñô£Ð›8çë%tA8PpcÝ®SÿçÒ"
+!2@{K©]œp8CNÇü å㣇³»f&¥ü¡¯Czú§÷‚D|Ëã|Ëš¢#¯"Ö­súÃõn쟵͟_Ô¬š)󀆟Ýø¨ +(
+_éž¿‰È|pÓÄ–º¾È_)Û‰ÅÕ˜—Ÿsn¨0gËq°%pŽè]e§;õ\ÿlÀm4tÚªiv=¹›²¨”GöÇ„æR‡*fƒH‹$‰{[â–ºbÐÓšl‡náÀج¹R>ú
+X ½Áá•j0 iX^´a«iìEÃs%-wL¥™çxÛº in™3®
+fäO··ÜÄË
+ÕM*(ìŸ{«šãPq·{nœõjæXÍ0Ò–/<ÉŸ2L 
+¦j‡É™ÜïNδ¥¼/æ·ýMûàHÕ3L,ôSÚÊøí•xŽ‡²Üþן¿n'‘ ÃûY’‰¯†Èq4ÔhÁYN¾41©îëù§íßÐ×$ŽÖýzQðRÚ>V/¤©,&	xóµ;ËBPÚ…ø<›(ìQÌùNù€xöá+õ´å¡ø$c«sÚ@7}—‘™ÅµÛKöER’”åªÌx`Ëuišk¨ŸØ`ç•X¸ 3eOµlÔººëß@¯ÈãäX/Y7›OO[R»Šìúev£>à«çe1?Á‹Ó:Œf÷÷>¥® N5Ðñ\|±¨Q¿E~I¾i’¾úmiÈ.sÕà–^$+ùèLPi²dãkTb¨ÃP¦èÊ' $ˆ»tæÚQœÌ:wz›ÉSMXçÑðÞ8»a¿Fÿ\ŠÎA…]Ú÷]Bû{ÿá&‹D£Ä”~ù]«î4¨ÀsÉÊC¦G	ïlz/û”¢:N(dÐ:5"RôÚq“ž…Üg2ÇTÂß¼t„Å›þ¥ÐöL?–ñŠÙA8Ÿ[†ô¶•ŒoäW¿=Ò_¿Á:ÏÌBº•Ãz´©_›Ðâ7“Ý_Ö¢L‘]u‡_õ+·)œúÃWÿó>8ZÚä§a!ÔˆãÍq¾­û ñ®y™'õW_ŽõÏÝiœjÕåA•¡ÙpÜçžÔ]RoBpEýŠ6ªñÇ3«Ix˘À†&+7tìTZ<1õcïÖ¬+õƝä½Å9¡ÍËEx¤£þM®k[]
+Žr[ŒCƒNÛŸ[ùOÜ@3†7bWcî¬çÃêg|~ÐLŒÜøº%6iÖa.´í’1A’Ð23VðŠ’kÞ÷QGøå(>#k–
+]pÈÊÃ!•cé½GÍ:„~Y¡&ŠòÐô!¸H¯€ÙÞö+ºp-J0h avý‘”>¯þ“Ã2yB•št÷y÷ã-ž 6ãÖ’îfª™*ï0EË»…MÝ5²EÍINᯅYÕ”~cÜC-‘„qEñÆ_\聾¹h¨ÖT/|IS´6§s(2I4{Âdû#”¡tåéMŠ¹gÍV†×Õ"aX6‡\‘0m²=¾Ôš@!¼?‡éËó×̧ü®ÉŽî5C§£X×’®00&
+•êÌ,Ï:(|Š6WCJ?¥%sJµµÞ¦jª÷ý#\kæ1œi©PfZsyœÞ²ë*ѐê<D); j’^Á` ãé÷ºTU”ò®¯zÿ¡sòìý‰®*xÉp!³t°Vžïàʬy3råÖ¥ýöVTk­Ou%…ÄUâYiza¦È»éY63üLÚG|3C‘%ÙÔDϨÊzîŠâ—ù&‰îÜÿZ¨ø¸ÜùÆkÎÞÆEÙbmM¦ÔOœáRÞÅÜ‚)ôz›*}Ù¢Áx(´©D~ð¸W)ž)ßu´‰	Žlkbu(WR´QNãÿ¹‹à$i÷‚Z±PÕX·õOK“+÷ruç
+j Å9­r&°Ú<W>øb¨Ÿ:rÌ>❘®tîAîkù-[ßp
++ùšd4à=>8D볜_"ÍZÉÇ>
+P
+³­<§±TÆheGÅßïg%+ÿa¦p•‰äÉîÀÉ;p|}‡„—“FËà†²÷-ÿr‹ga˃p³C]+.Ðó5‘
+èíRþ].«Zøh-¿Äý~zÒxofTXŒÉ˜§![ãW)Ð黀ù½vš´Õ‚\kM«ËmA|²FÛOºÄ<i¢ÔhYV™nž+¬Lv½Ñ¡'µw5/C‰¼–égy“wð|¹yJ!ìñ³hm¸ôiï|/X—ÑâÁ’qó^“4’"‚ÍÀ@L	øöÚþÈÍè£nø„Tݪ¹Á
+vÕ¾.Ñõ=Üù–ò=¿>[²­;‰sÐÔf_[ƒ«7;%üô2؉ØàlÂF]¢`¯-¶ó<”zQƒ[:÷]ŸDÎÝ9ã–ZùPölísQ åéÊtf{(äõmTl „AÂÕ½ÑX}ü	÷/ÿÄùeÖð3^ÜPunÐtðúÚúä%v1z§/'´ã‡‘!˜Í¬F2#†ãböîgÞ ŽtšæžÕ¨“6õØGÝí¡ñ¡&~‹†8æ<‹Qýï_ŠËÔý>ßäáÂæµ³Úö,wDŽ\c(Y©ùÓÞê«<³›¥ä¹F7ý~Ácïp aùÍõ¾¹Ÿö+>RÀ¬kÃCýw:Ðæ2>hír晑÷ë½Å{¹ÞÖå6^Ñ	Õ^qÛ݇ÄR•çªµ	@Kúãw¶ªngÏ9[»×u‹)˜Â`꣖*¦Îäÿ›íéý
 endstream
 endobj
 17593 0 obj <<
 /Type /FontDescriptor
-/FontName /XZYVXB+CMR12
+/FontName /JIRVGE+CMR12
 /Flags 4
 /FontBBox [-34 -251 988 750]
 /Ascent 694
@@ -109351,7 +109357,7 @@
 /ItalicAngle 0
 /StemV 65
 /XHeight 431
-/CharSet (/C/G/H/J/O/R/T/V/a/b/c/comma/d/e/eight/h/i/j/l/m/n/o/p/parenleft/parenright/period/r/s/t/two/y/zero)
+/CharSet (/C/G/H/J/R/S/T/V/a/b/comma/d/e/eight/h/i/j/l/m/n/o/one/p/parenleft/parenright/period/r/s/t/two/y/zero)
 /FontFile 17592 0 R
 >> endobj
 17594 0 obj <<
@@ -110793,7 +110799,7 @@
 3704 0 obj <<
 /Type /Font
 /Subtype /Type1
-/BaseFont /XZYVXB+CMR12
+/BaseFont /JIRVGE+CMR12
 /FontDescriptor 17593 0 R
 /FirstChar 40
 /LastChar 121
@@ -122487,8 +122493,8 @@
 >> endobj
 18579 0 obj <<
 /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20081002121211+02'00')
-/ModDate (D:20081002121211+02'00')
+/CreationDate (D:20080918135758+02'00')
+/ModDate (D:20080918135758+02'00')
 /Trapped /False
 /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
 >> endobj
@@ -122500,18585 +122506,18585 @@
 0000000004 00000 f 
 0000005425 00000 f 
 0000000015 00000 n 
-0000105466 00000 n 
-0004883852 00000 n 
+0000105470 00000 n 
+0004883942 00000 n 
 0000000061 00000 n 
 0000000102 00000 n 
-0000105527 00000 n 
-0004883764 00000 n 
+0000105531 00000 n 
+0004883854 00000 n 
 0000000148 00000 n 
 0000000178 00000 n 
-0004517800 00000 n 
-0004883674 00000 n 
+0004517804 00000 n 
+0004883764 00000 n 
 0000000224 00000 n 
 0000000251 00000 n 
-0000111799 00000 n 
-0004883584 00000 n 
+0000111803 00000 n 
+0004883674 00000 n 
 0000000298 00000 n 
 0000000333 00000 n 
-0000355467 00000 n 
-0004883494 00000 n 
+0000355471 00000 n 
+0004883584 00000 n 
 0000000380 00000 n 
 0000000414 00000 n 
-0000373440 00000 n 
-0004883404 00000 n 
+0000373444 00000 n 
+0004883494 00000 n 
 0000000461 00000 n 
 0000000494 00000 n 
-0000386657 00000 n 
-0004883314 00000 n 
+0000386661 00000 n 
+0004883404 00000 n 
 0000000541 00000 n 
 0000000568 00000 n 
-0000397297 00000 n 
-0004883224 00000 n 
+0000397301 00000 n 
+0004883314 00000 n 
 0000000615 00000 n 
 0000000641 00000 n 
-0000402385 00000 n 
-0004883134 00000 n 
+0000402389 00000 n 
+0004883224 00000 n 
 0000000688 00000 n 
 0000000719 00000 n 
-0000414523 00000 n 
-0004883005 00000 n 
+0000414527 00000 n 
+0004883095 00000 n 
 0000000762 00000 n 
 0000000808 00000 n 
-0000415652 00000 n 
-0004882931 00000 n 
+0000415656 00000 n 
+0004883021 00000 n 
 0000000856 00000 n 
 0000000908 00000 n 
-0000418472 00000 n 
-0004882805 00000 n 
+0000418476 00000 n 
+0004882895 00000 n 
 0000000954 00000 n 
 0000001012 00000 n 
-0000418598 00000 n 
-0004882731 00000 n 
+0000418602 00000 n 
+0004882821 00000 n 
 0000001060 00000 n 
 0000001113 00000 n 
-0000418724 00000 n 
-0004882607 00000 n 
+0000418728 00000 n 
+0004882697 00000 n 
 0000001161 00000 n 
 0000001214 00000 n 
-0000418850 00000 n 
-0004882533 00000 n 
+0000418854 00000 n 
+0004882623 00000 n 
 0000001267 00000 n 
 0000001317 00000 n 
-0000425669 00000 n 
-0004882446 00000 n 
+0000425673 00000 n 
+0004882536 00000 n 
 0000001370 00000 n 
 0000001424 00000 n 
-0000425795 00000 n 
-0004882359 00000 n 
+0000425799 00000 n 
+0004882449 00000 n 
 0000001477 00000 n 
 0000001516 00000 n 
-0000431810 00000 n 
-0004882235 00000 n 
+0000431814 00000 n 
+0004882325 00000 n 
 0000001569 00000 n 
 0000001615 00000 n 
-0000435002 00000 n 
-0004882174 00000 n 
+0000435006 00000 n 
+0004882264 00000 n 
 0000001673 00000 n 
 0000001735 00000 n 
-0000438198 00000 n 
-0004882100 00000 n 
+0000438202 00000 n 
+0004882190 00000 n 
 0000001788 00000 n 
 0000001817 00000 n 
-0000438324 00000 n 
-0004882013 00000 n 
+0000438328 00000 n 
+0004882103 00000 n 
 0000001865 00000 n 
 0000001923 00000 n 
-0000440262 00000 n 
-0004881926 00000 n 
+0000440266 00000 n 
+0004882016 00000 n 
 0000001971 00000 n 
 0000002020 00000 n 
-0000440388 00000 n 
-0004881800 00000 n 
+0000440392 00000 n 
+0004881890 00000 n 
 0000002068 00000 n 
 0000002123 00000 n 
-0000443612 00000 n 
-0004881724 00000 n 
+0000443616 00000 n 
+0004881814 00000 n 
 0000002176 00000 n 
 0000002228 00000 n 
-0000443738 00000 n 
-0004881647 00000 n 
+0000443742 00000 n 
+0004881737 00000 n 
 0000002282 00000 n 
 0000002320 00000 n 
-0000446099 00000 n 
-0004881531 00000 n 
+0000446103 00000 n 
+0004881621 00000 n 
 0000002369 00000 n 
 0000002406 00000 n 
-0000446226 00000 n 
-0004881452 00000 n 
+0000446230 00000 n 
+0004881542 00000 n 
 0000002460 00000 n 
 0000002516 00000 n 
-0000446353 00000 n 
-0004881359 00000 n 
+0000446357 00000 n 
+0004881449 00000 n 
 0000002570 00000 n 
 0000002632 00000 n 
-0000446480 00000 n 
-0004881280 00000 n 
+0000446484 00000 n 
+0004881370 00000 n 
 0000002686 00000 n 
 0000002748 00000 n 
-0000452736 00000 n 
-0004881164 00000 n 
+0000452740 00000 n 
+0004881254 00000 n 
 0000002795 00000 n 
 0000002856 00000 n 
-0000456441 00000 n 
-0004881085 00000 n 
+0000456445 00000 n 
+0004881175 00000 n 
 0000002905 00000 n 
 0000002950 00000 n 
-0000456568 00000 n 
-0004880992 00000 n 
+0000456572 00000 n 
+0004881082 00000 n 
 0000002999 00000 n 
 0000003051 00000 n 
-0000459016 00000 n 
-0004880874 00000 n 
+0000459020 00000 n 
+0004880964 00000 n 
 0000003100 00000 n 
 0000003139 00000 n 
-0000459143 00000 n 
-0004880756 00000 n 
+0000459147 00000 n 
+0004880846 00000 n 
 0000003193 00000 n 
 0000003236 00000 n 
-0000459270 00000 n 
-0004880677 00000 n 
+0000459274 00000 n 
+0004880767 00000 n 
 0000003295 00000 n 
 0000003358 00000 n 
-0000468314 00000 n 
-0004880584 00000 n 
+0000468318 00000 n 
+0004880674 00000 n 
 0000003417 00000 n 
 0000003481 00000 n 
-0000469401 00000 n 
-0004880491 00000 n 
+0000469405 00000 n 
+0004880581 00000 n 
 0000003540 00000 n 
 0000003590 00000 n 
-0000480135 00000 n 
-0004880412 00000 n 
+0000480139 00000 n 
+0004880502 00000 n 
 0000003649 00000 n 
 0000003716 00000 n 
-0000491424 00000 n 
-0004880280 00000 n 
+0000491428 00000 n 
+0004880370 00000 n 
 0000003770 00000 n 
 0000003816 00000 n 
-0000495058 00000 n 
-0004880215 00000 n 
+0000495062 00000 n 
+0004880305 00000 n 
 0000003875 00000 n 
 0000003924 00000 n 
-0000505357 00000 n 
-0004880097 00000 n 
+0000505361 00000 n 
+0004880187 00000 n 
 0000003978 00000 n 
 0000004021 00000 n 
-0000507852 00000 n 
-0004880018 00000 n 
+0000507856 00000 n 
+0004880108 00000 n 
 0000004080 00000 n 
 0000004135 00000 n 
-0000516882 00000 n 
-0004879939 00000 n 
+0000516886 00000 n 
+0004880029 00000 n 
 0000004194 00000 n 
 0000004240 00000 n 
-0000542205 00000 n 
-0004879806 00000 n 
+0000542209 00000 n 
+0004879896 00000 n 
 0000004284 00000 n 
 0000004339 00000 n 
-0000543382 00000 n 
-0004879727 00000 n 
+0000543386 00000 n 
+0004879817 00000 n 
 0000004388 00000 n 
 0000004443 00000 n 
-0000545867 00000 n 
-0004879595 00000 n 
+0000545871 00000 n 
+0004879685 00000 n 
 0000004490 00000 n 
 0000004551 00000 n 
-0000545994 00000 n 
-0004879516 00000 n 
+0000545998 00000 n 
+0004879606 00000 n 
 0000004600 00000 n 
 0000004645 00000 n 
-0000548158 00000 n 
-0004879423 00000 n 
+0000548162 00000 n 
+0004879513 00000 n 
 0000004694 00000 n 
 0000004730 00000 n 
-0000551685 00000 n 
-0004879291 00000 n 
+0000551689 00000 n 
+0004879381 00000 n 
 0000004779 00000 n 
 0000004823 00000 n 
-0000554312 00000 n 
-0004879173 00000 n 
+0000554316 00000 n 
+0004879263 00000 n 
 0000004877 00000 n 
 0000004922 00000 n 
-0000557372 00000 n 
-0004879108 00000 n 
+0000557376 00000 n 
+0004879198 00000 n 
 0000004981 00000 n 
 0000005030 00000 n 
-0000557627 00000 n 
-0004878976 00000 n 
+0000557631 00000 n 
+0004879066 00000 n 
 0000005084 00000 n 
 0000005130 00000 n 
-0000560205 00000 n 
-0004878911 00000 n 
+0000560209 00000 n 
+0004879001 00000 n 
 0000005189 00000 n 
 0000005238 00000 n 
-0000560460 00000 n 
-0004878779 00000 n 
+0000560464 00000 n 
+0004878869 00000 n 
 0000005292 00000 n 
 0000005362 00000 n 
-0000563034 00000 n 
-0004878714 00000 n 
+0000563038 00000 n 
+0004878804 00000 n 
 0000005421 00000 n 
 0000005470 00000 n 
-0000569846 00000 n 
-0004878582 00000 n 
+0000569850 00000 n 
+0004878672 00000 n 
 0000005524 00000 n 
 0000005591 00000 n 
-0000569973 00000 n 
-0004878517 00000 n 
+0000569977 00000 n 
+0004878607 00000 n 
 0000005650 00000 n 
 0000005699 00000 n 
-0000570420 00000 n 
-0004878399 00000 n 
+0000570424 00000 n 
+0004878489 00000 n 
 0000005753 00000 n 
 0000005818 00000 n 
-0000575495 00000 n 
-0004878334 00000 n 
+0000575499 00000 n 
+0004878424 00000 n 
 0000005877 00000 n 
 0000005926 00000 n 
-0000578365 00000 n 
-0004878241 00000 n 
+0000578369 00000 n 
+0004878331 00000 n 
 0000005975 00000 n 
 0000006016 00000 n 
-0000581373 00000 n 
-0004878123 00000 n 
+0000581377 00000 n 
+0004878213 00000 n 
 0000006065 00000 n 
 0000006102 00000 n 
-0000584187 00000 n 
-0004878044 00000 n 
+0000584191 00000 n 
+0004878134 00000 n 
 0000006156 00000 n 
 0000006208 00000 n 
-0000584314 00000 n 
-0004877951 00000 n 
+0000584318 00000 n 
+0004878041 00000 n 
 0000006262 00000 n 
 0000006325 00000 n 
-0000584440 00000 n 
-0004877858 00000 n 
+0000584444 00000 n 
+0004877948 00000 n 
 0000006379 00000 n 
 0000006438 00000 n 
-0000584567 00000 n 
-0004877765 00000 n 
+0000584571 00000 n 
+0004877855 00000 n 
 0000006492 00000 n 
 0000006566 00000 n 
-0000586463 00000 n 
-0004877686 00000 n 
+0000586467 00000 n 
+0004877776 00000 n 
 0000006620 00000 n 
 0000006731 00000 n 
-0000589005 00000 n 
-0004877554 00000 n 
+0000589009 00000 n 
+0004877644 00000 n 
 0000006778 00000 n 
 0000006822 00000 n 
-0000598482 00000 n 
-0004877475 00000 n 
+0000598486 00000 n 
+0004877565 00000 n 
 0000006871 00000 n 
 0000006916 00000 n 
-0000609525 00000 n 
-0004877382 00000 n 
+0000609529 00000 n 
+0004877472 00000 n 
 0000006965 00000 n 
 0000007023 00000 n 
-0000617569 00000 n 
-0004877250 00000 n 
+0000617573 00000 n 
+0004877340 00000 n 
 0000007072 00000 n 
 0000007120 00000 n 
-0000617696 00000 n 
-0004877171 00000 n 
+0000617700 00000 n 
+0004877261 00000 n 
 0000007174 00000 n 
 0000007223 00000 n 
-0000625903 00000 n 
-0004877092 00000 n 
+0000625907 00000 n 
+0004877182 00000 n 
 0000007277 00000 n 
 0000007331 00000 n 
-0000635207 00000 n 
-0004876999 00000 n 
+0000635211 00000 n 
+0004877089 00000 n 
 0000007380 00000 n 
 0000007441 00000 n 
-0000643789 00000 n 
-0004876906 00000 n 
+0000643793 00000 n 
+0004876996 00000 n 
 0000007490 00000 n 
 0000007538 00000 n 
-0000646789 00000 n 
-0004876774 00000 n 
+0000646793 00000 n 
+0004876864 00000 n 
 0000007587 00000 n 
 0000007649 00000 n 
-0000646916 00000 n 
-0004876656 00000 n 
+0000646920 00000 n 
+0004876746 00000 n 
 0000007703 00000 n 
 0000007757 00000 n 
-0000647043 00000 n 
-0004876577 00000 n 
+0000647047 00000 n 
+0004876667 00000 n 
 0000007816 00000 n 
 0000007865 00000 n 
-0000647871 00000 n 
-0004876484 00000 n 
+0000647875 00000 n 
+0004876574 00000 n 
 0000007924 00000 n 
 0000007998 00000 n 
-0000650526 00000 n 
-0004876405 00000 n 
+0000650530 00000 n 
+0004876495 00000 n 
 0000008057 00000 n 
 0000008118 00000 n 
-0000656744 00000 n 
-0004876326 00000 n 
+0000656748 00000 n 
+0004876416 00000 n 
 0000008172 00000 n 
 0000008231 00000 n 
-0000661949 00000 n 
-0004876208 00000 n 
+0000661953 00000 n 
+0004876298 00000 n 
 0000008280 00000 n 
 0000008317 00000 n 
-0000662076 00000 n 
-0004876129 00000 n 
+0000662080 00000 n 
+0004876219 00000 n 
 0000008371 00000 n 
 0000008440 00000 n 
-0000662203 00000 n 
-0004876036 00000 n 
+0000662207 00000 n 
+0004876126 00000 n 
 0000008494 00000 n 
 0000008576 00000 n 
-0000664342 00000 n 
-0004875943 00000 n 
+0000664346 00000 n 
+0004876033 00000 n 
 0000008630 00000 n 
 0000008697 00000 n 
-0000667063 00000 n 
-0004875850 00000 n 
+0000667067 00000 n 
+0004875940 00000 n 
 0000008751 00000 n 
 0000008820 00000 n 
-0000667190 00000 n 
-0004875757 00000 n 
+0000667194 00000 n 
+0004875847 00000 n 
 0000008874 00000 n 
 0000008916 00000 n 
-0000667316 00000 n 
-0004875664 00000 n 
+0000667320 00000 n 
+0004875754 00000 n 
 0000008970 00000 n 
 0000009025 00000 n 
-0000669209 00000 n 
-0004875585 00000 n 
+0000669213 00000 n 
+0004875675 00000 n 
 0000009079 00000 n 
 0000009167 00000 n 
-0000671712 00000 n 
-0004875453 00000 n 
+0000671716 00000 n 
+0004875543 00000 n 
 0000009214 00000 n 
 0000009265 00000 n 
-0000671839 00000 n 
-0004875374 00000 n 
+0000671843 00000 n 
+0004875464 00000 n 
 0000009314 00000 n 
 0000009359 00000 n 
-0000674630 00000 n 
-0004875242 00000 n 
+0000674634 00000 n 
+0004875332 00000 n 
 0000009408 00000 n 
 0000009464 00000 n 
-0000677543 00000 n 
-0004875124 00000 n 
+0000677547 00000 n 
+0004875214 00000 n 
 0000009518 00000 n 
 0000009579 00000 n 
-0000683828 00000 n 
-0004875059 00000 n 
+0000683832 00000 n 
+0004875149 00000 n 
 0000009638 00000 n 
 0000009691 00000 n 
-0000688316 00000 n 
-0004874966 00000 n 
+0000688320 00000 n 
+0004875056 00000 n 
 0000009745 00000 n 
 0000009795 00000 n 
-0000691648 00000 n 
-0004874873 00000 n 
+0000691652 00000 n 
+0004874963 00000 n 
 0000009849 00000 n 
 0000009906 00000 n 
-0000694784 00000 n 
-0004874780 00000 n 
+0000694788 00000 n 
+0004874870 00000 n 
 0000009960 00000 n 
 0000010036 00000 n 
-0000694911 00000 n 
-0004874662 00000 n 
+0000694915 00000 n 
+0004874752 00000 n 
 0000010090 00000 n 
 0000010166 00000 n 
-0000695038 00000 n 
-0004874583 00000 n 
+0000695042 00000 n 
+0004874673 00000 n 
 0000010225 00000 n 
 0000010280 00000 n 
-0000697940 00000 n 
-0004874504 00000 n 
+0000697944 00000 n 
+0004874594 00000 n 
 0000010339 00000 n 
 0000010395 00000 n 
-0000698067 00000 n 
-0004874372 00000 n 
+0000698071 00000 n 
+0004874462 00000 n 
 0000010444 00000 n 
 0000010506 00000 n 
-0000701061 00000 n 
-0004874307 00000 n 
+0000701065 00000 n 
+0004874397 00000 n 
 0000010560 00000 n 
 0000010607 00000 n 
-0000708932 00000 n 
-0004874189 00000 n 
+0000708936 00000 n 
+0004874279 00000 n 
 0000010656 00000 n 
 0000010693 00000 n 
-0000709059 00000 n 
-0004874110 00000 n 
+0000709063 00000 n 
+0004874200 00000 n 
 0000010747 00000 n 
 0000010803 00000 n 
-0000711699 00000 n 
-0004874017 00000 n 
+0000711703 00000 n 
+0004874107 00000 n 
 0000010857 00000 n 
 0000010937 00000 n 
-0000711825 00000 n 
-0004873924 00000 n 
+0000711829 00000 n 
+0004874014 00000 n 
 0000010991 00000 n 
 0000011055 00000 n 
-0000712937 00000 n 
-0004873845 00000 n 
+0000712941 00000 n 
+0004873935 00000 n 
 0000011109 00000 n 
 0000011163 00000 n 
-0000714982 00000 n 
-0004873713 00000 n 
+0000714986 00000 n 
+0004873803 00000 n 
 0000011210 00000 n 
 0000011257 00000 n 
-0000715109 00000 n 
-0004873634 00000 n 
+0000715113 00000 n 
+0004873724 00000 n 
 0000011306 00000 n 
 0000011351 00000 n 
-0000717593 00000 n 
-0004873502 00000 n 
+0000717597 00000 n 
+0004873592 00000 n 
 0000011400 00000 n 
 0000011476 00000 n 
-0000721773 00000 n 
-0004873423 00000 n 
+0000721777 00000 n 
+0004873513 00000 n 
 0000011530 00000 n 
 0000011597 00000 n 
-0000727334 00000 n 
-0004873330 00000 n 
+0000727338 00000 n 
+0004873420 00000 n 
 0000011651 00000 n 
 0000011734 00000 n 
-0000730502 00000 n 
-0004873237 00000 n 
+0000730506 00000 n 
+0004873327 00000 n 
 0000011788 00000 n 
 0000011859 00000 n 
-0000730820 00000 n 
-0004873119 00000 n 
+0000730824 00000 n 
+0004873209 00000 n 
 0000011913 00000 n 
 0000011997 00000 n 
-0000733389 00000 n 
-0004873040 00000 n 
+0000733393 00000 n 
+0004873130 00000 n 
 0000012056 00000 n 
 0000012119 00000 n 
-0000733516 00000 n 
-0004872947 00000 n 
+0000733520 00000 n 
+0004873037 00000 n 
 0000012178 00000 n 
 0000012224 00000 n 
-0000733643 00000 n 
-0004872868 00000 n 
+0000733647 00000 n 
+0004872958 00000 n 
 0000012283 00000 n 
 0000012323 00000 n 
-0000736392 00000 n 
-0004872736 00000 n 
+0000736396 00000 n 
+0004872826 00000 n 
 0000012372 00000 n 
 0000012416 00000 n 
-0000736519 00000 n 
-0004872657 00000 n 
+0000736523 00000 n 
+0004872747 00000 n 
 0000012470 00000 n 
 0000012535 00000 n 
-0000745419 00000 n 
-0004872578 00000 n 
+0000745423 00000 n 
+0004872668 00000 n 
 0000012589 00000 n 
 0000012657 00000 n 
-0000749055 00000 n 
-0004872446 00000 n 
+0000749059 00000 n 
+0004872536 00000 n 
 0000012706 00000 n 
 0000012757 00000 n 
-0000749182 00000 n 
-0004872367 00000 n 
+0000749186 00000 n 
+0004872457 00000 n 
 0000012811 00000 n 
 0000012855 00000 n 
-0000753226 00000 n 
-0004872274 00000 n 
+0000753230 00000 n 
+0004872364 00000 n 
 0000012909 00000 n 
 0000012959 00000 n 
-0000760310 00000 n 
-0004872142 00000 n 
+0000760314 00000 n 
+0004872232 00000 n 
 0000013013 00000 n 
 0000013066 00000 n 
-0000762674 00000 n 
-0004872077 00000 n 
+0000762678 00000 n 
+0004872167 00000 n 
 0000013125 00000 n 
 0000013168 00000 n 
-0000762801 00000 n 
-0004871984 00000 n 
+0000762805 00000 n 
+0004872074 00000 n 
 0000013222 00000 n 
 0000013268 00000 n 
-0000765551 00000 n 
-0004871891 00000 n 
+0000765555 00000 n 
+0004871981 00000 n 
 0000013322 00000 n 
 0000013370 00000 n 
-0000765678 00000 n 
-0004871812 00000 n 
+0000765682 00000 n 
+0004871902 00000 n 
 0000013424 00000 n 
 0000013455 00000 n 
-0000765805 00000 n 
-0004871719 00000 n 
+0000765809 00000 n 
+0004871809 00000 n 
 0000013504 00000 n 
 0000013581 00000 n 
-0000768453 00000 n 
-0004871601 00000 n 
+0000768457 00000 n 
+0004871691 00000 n 
 0000013630 00000 n 
 0000013667 00000 n 
-0000768580 00000 n 
-0004871522 00000 n 
+0000768584 00000 n 
+0004871612 00000 n 
 0000013721 00000 n 
 0000013780 00000 n 
-0000768707 00000 n 
-0004871429 00000 n 
+0000768711 00000 n 
+0004871519 00000 n 
 0000013834 00000 n 
 0000013890 00000 n 
-0000770987 00000 n 
-0004871350 00000 n 
+0000770991 00000 n 
+0004871440 00000 n 
 0000013944 00000 n 
 0000014001 00000 n 
-0000773194 00000 n 
-0004871218 00000 n 
+0000773198 00000 n 
+0004871308 00000 n 
 0000014048 00000 n 
 0000014096 00000 n 
-0000773321 00000 n 
-0004871139 00000 n 
+0000773325 00000 n 
+0004871229 00000 n 
 0000014145 00000 n 
 0000014190 00000 n 
-0000776650 00000 n 
-0004871046 00000 n 
+0000776654 00000 n 
+0004871136 00000 n 
 0000014239 00000 n 
 0000014273 00000 n 
-0000776777 00000 n 
-0004870914 00000 n 
+0000776781 00000 n 
+0004871004 00000 n 
 0000014322 00000 n 
 0000014367 00000 n 
-0000776904 00000 n 
-0004870835 00000 n 
+0000776908 00000 n 
+0004870925 00000 n 
 0000014421 00000 n 
 0000014477 00000 n 
-0000781482 00000 n 
-0004870756 00000 n 
+0000781486 00000 n 
+0004870846 00000 n 
 0000014531 00000 n 
 0000014578 00000 n 
-0000790690 00000 n 
-0004870677 00000 n 
+0000790694 00000 n 
+0004870767 00000 n 
 0000014627 00000 n 
 0000014664 00000 n 
-0000792346 00000 n 
-0004870559 00000 n 
+0000792350 00000 n 
+0004870649 00000 n 
 0000014711 00000 n 
 0000014779 00000 n 
-0000792473 00000 n 
-0004870480 00000 n 
+0000792477 00000 n 
+0004870570 00000 n 
 0000014828 00000 n 
 0000014873 00000 n 
-0000792600 00000 n 
-0004870348 00000 n 
+0000792604 00000 n 
+0004870438 00000 n 
 0000014922 00000 n 
 0000014963 00000 n 
-0000795625 00000 n 
-0004870230 00000 n 
+0000795629 00000 n 
+0004870320 00000 n 
 0000015017 00000 n 
 0000015063 00000 n 
-0000795752 00000 n 
-0004870151 00000 n 
+0000795756 00000 n 
+0004870241 00000 n 
 0000015122 00000 n 
 0000015176 00000 n 
-0000845100 00000 n 
-0004870058 00000 n 
+0000845104 00000 n 
+0004870148 00000 n 
 0000015235 00000 n 
 0000015278 00000 n 
-0000894497 00000 n 
-0004869979 00000 n 
+0000894501 00000 n 
+0004870069 00000 n 
 0000015337 00000 n 
 0000015378 00000 n 
-0000930007 00000 n 
-0004869886 00000 n 
+0000930011 00000 n 
+0004869976 00000 n 
 0000015432 00000 n 
 0000015504 00000 n 
-0000956470 00000 n 
-0004869807 00000 n 
+0000956474 00000 n 
+0004869897 00000 n 
 0000015558 00000 n 
 0000015625 00000 n 
-0000983417 00000 n 
-0004869728 00000 n 
+0000983421 00000 n 
+0004869818 00000 n 
 0000015674 00000 n 
 0000015711 00000 n 
-0001156514 00000 n 
-0004869591 00000 n 
+0001156518 00000 n 
+0004869681 00000 n 
 0000015755 00000 n 
 0000015806 00000 n 
-0001157616 00000 n 
-0004869512 00000 n 
+0001157620 00000 n 
+0004869602 00000 n 
 0000015855 00000 n 
 0000015910 00000 n 
-0001159962 00000 n 
-0004869380 00000 n 
+0001159966 00000 n 
+0004869470 00000 n 
 0000015957 00000 n 
 0000016047 00000 n 
-0001160089 00000 n 
-0004869301 00000 n 
+0001160093 00000 n 
+0004869391 00000 n 
 0000016096 00000 n 
 0000016154 00000 n 
-0001160216 00000 n 
-0004869183 00000 n 
+0001160220 00000 n 
+0004869273 00000 n 
 0000016203 00000 n 
 0000016261 00000 n 
-0001163325 00000 n 
-0004869104 00000 n 
+0001163329 00000 n 
+0004869194 00000 n 
 0000016315 00000 n 
 0000016363 00000 n 
-0001165873 00000 n 
-0004869011 00000 n 
+0001165877 00000 n 
+0004869101 00000 n 
 0000016417 00000 n 
 0000016467 00000 n 
-0001169447 00000 n 
-0004868918 00000 n 
+0001169451 00000 n 
+0004869008 00000 n 
 0000016521 00000 n 
 0000016561 00000 n 
-0001169574 00000 n 
-0004868825 00000 n 
+0001169578 00000 n 
+0004868915 00000 n 
 0000016615 00000 n 
 0000016678 00000 n 
-0001169701 00000 n 
-0004868746 00000 n 
+0001169705 00000 n 
+0004868836 00000 n 
 0000016732 00000 n 
 0000016786 00000 n 
-0001171138 00000 n 
-0004868614 00000 n 
+0001171142 00000 n 
+0004868704 00000 n 
 0000016834 00000 n 
 0000016881 00000 n 
-0001173787 00000 n 
-0004868535 00000 n 
+0001173791 00000 n 
+0004868625 00000 n 
 0000016931 00000 n 
 0000016977 00000 n 
-0001176152 00000 n 
-0004868442 00000 n 
+0001176156 00000 n 
+0004868532 00000 n 
 0000017027 00000 n 
 0000017069 00000 n 
-0001178054 00000 n 
-0004868310 00000 n 
+0001178058 00000 n 
+0004868400 00000 n 
 0000017119 00000 n 
 0000017154 00000 n 
-0001180730 00000 n 
-0004868231 00000 n 
+0001180734 00000 n 
+0004868321 00000 n 
 0000017209 00000 n 
 0000017255 00000 n 
-0001186723 00000 n 
-0004868138 00000 n 
+0001186727 00000 n 
+0004868228 00000 n 
 0000017310 00000 n 
 0000017359 00000 n 
-0001189288 00000 n 
-0004868059 00000 n 
+0001189292 00000 n 
+0004868149 00000 n 
 0000017414 00000 n 
 0000017465 00000 n 
-0001193408 00000 n 
-0004867927 00000 n 
+0001193412 00000 n 
+0004868017 00000 n 
 0000017515 00000 n 
 0000017562 00000 n 
-0001199567 00000 n 
-0004867848 00000 n 
+0001199571 00000 n 
+0004867938 00000 n 
 0000017617 00000 n 
 0000017674 00000 n 
-0001204620 00000 n 
-0004867755 00000 n 
+0001204624 00000 n 
+0004867845 00000 n 
 0000017729 00000 n 
 0000017785 00000 n 
-0001208832 00000 n 
-0004867662 00000 n 
+0001208836 00000 n 
+0004867752 00000 n 
 0000017840 00000 n 
 0000017897 00000 n 
-0001211626 00000 n 
-0004867569 00000 n 
+0001211630 00000 n 
+0004867659 00000 n 
 0000017952 00000 n 
 0000018009 00000 n 
-0001214470 00000 n 
-0004867476 00000 n 
+0001214474 00000 n 
+0004867566 00000 n 
 0000018064 00000 n 
 0000018121 00000 n 
-0001214597 00000 n 
-0004867383 00000 n 
+0001214601 00000 n 
+0004867473 00000 n 
 0000018176 00000 n 
 0000018222 00000 n 
-0001218011 00000 n 
-0004867290 00000 n 
+0001218015 00000 n 
+0004867380 00000 n 
 0000018277 00000 n 
 0000018340 00000 n 
-0001221327 00000 n 
-0004867211 00000 n 
+0001221331 00000 n 
+0004867301 00000 n 
 0000018395 00000 n 
 0000018461 00000 n 
-0001221582 00000 n 
-0004867079 00000 n 
+0001221586 00000 n 
+0004867169 00000 n 
 0000018511 00000 n 
 0000018581 00000 n 
-0001225472 00000 n 
-0004867000 00000 n 
+0001225476 00000 n 
+0004867090 00000 n 
 0000018636 00000 n 
 0000018688 00000 n 
-0001231180 00000 n 
-0004866907 00000 n 
+0001231184 00000 n 
+0004866997 00000 n 
 0000018743 00000 n 
 0000018786 00000 n 
-0001231307 00000 n 
-0004866828 00000 n 
+0001231311 00000 n 
+0004866918 00000 n 
 0000018841 00000 n 
 0000018887 00000 n 
-0001233335 00000 n 
-0004866696 00000 n 
+0001233339 00000 n 
+0004866786 00000 n 
 0000018937 00000 n 
 0000018975 00000 n 
-0001233461 00000 n 
-0004866617 00000 n 
+0001233465 00000 n 
+0004866707 00000 n 
 0000019030 00000 n 
 0000019085 00000 n 
-0001236088 00000 n 
-0004866538 00000 n 
+0001236092 00000 n 
+0004866628 00000 n 
 0000019140 00000 n 
 0000019188 00000 n 
-0001239641 00000 n 
-0004866406 00000 n 
+0001239645 00000 n 
+0004866496 00000 n 
 0000019238 00000 n 
 0000019293 00000 n 
-0001242281 00000 n 
-0004866327 00000 n 
+0001242285 00000 n 
+0004866417 00000 n 
 0000019348 00000 n 
 0000019400 00000 n 
-0001244966 00000 n 
-0004866234 00000 n 
+0001244970 00000 n 
+0004866324 00000 n 
 0000019455 00000 n 
 0000019500 00000 n 
-0001247789 00000 n 
-0004866116 00000 n 
+0001247793 00000 n 
+0004866206 00000 n 
 0000019555 00000 n 
 0000019603 00000 n 
-0001247916 00000 n 
-0004866051 00000 n 
+0001247920 00000 n 
+0004866141 00000 n 
 0000019663 00000 n 
 0000019725 00000 n 
-0001270360 00000 n 
-0004865933 00000 n 
+0001270364 00000 n 
+0004866023 00000 n 
 0000019775 00000 n 
 0000019813 00000 n 
-0001270487 00000 n 
-0004865854 00000 n 
+0001270491 00000 n 
+0004865944 00000 n 
 0000019868 00000 n 
 0000019932 00000 n 
-0001273030 00000 n 
-0004865761 00000 n 
+0001273034 00000 n 
+0004865851 00000 n 
 0000019987 00000 n 
 0000020047 00000 n 
-0001273157 00000 n 
-0004865668 00000 n 
+0001273161 00000 n 
+0004865758 00000 n 
 0000020102 00000 n 
 0000020174 00000 n 
-0001273284 00000 n 
-0004865575 00000 n 
+0001273288 00000 n 
+0004865665 00000 n 
 0000020229 00000 n 
 0000020303 00000 n 
-0001278623 00000 n 
-0004865496 00000 n 
+0001278627 00000 n 
+0004865586 00000 n 
 0000020358 00000 n 
 0000020441 00000 n 
-0001281756 00000 n 
-0004865364 00000 n 
+0001281760 00000 n 
+0004865454 00000 n 
 0000020489 00000 n 
 0000020549 00000 n 
-0001284364 00000 n 
-0004865246 00000 n 
+0001284368 00000 n 
+0004865336 00000 n 
 0000020599 00000 n 
 0000020645 00000 n 
-0001284491 00000 n 
-0004865167 00000 n 
+0001284495 00000 n 
+0004865257 00000 n 
 0000020700 00000 n 
 0000020773 00000 n 
-0001286778 00000 n 
-0004865088 00000 n 
+0001286782 00000 n 
+0004865178 00000 n 
 0000020828 00000 n 
 0000020882 00000 n 
-0001289885 00000 n 
-0004864956 00000 n 
+0001289889 00000 n 
+0004865046 00000 n 
 0000020932 00000 n 
 0000020978 00000 n 
-0001290012 00000 n 
-0004864838 00000 n 
+0001290016 00000 n 
+0004864928 00000 n 
 0000021033 00000 n 
 0000021090 00000 n 
-0001308432 00000 n 
-0004864759 00000 n 
+0001308436 00000 n 
+0004864849 00000 n 
 0000021150 00000 n 
 0000021212 00000 n 
-0001308555 00000 n 
-0004864680 00000 n 
+0001308559 00000 n 
+0004864770 00000 n 
 0000021272 00000 n 
 0000021338 00000 n 
-0001311424 00000 n 
-0004864587 00000 n 
+0001311428 00000 n 
+0004864677 00000 n 
 0000021393 00000 n 
 0000021472 00000 n 
-0001311551 00000 n 
-0004864494 00000 n 
+0001311555 00000 n 
+0004864584 00000 n 
 0000021527 00000 n 
 0000021602 00000 n 
-0001315806 00000 n 
-0004864362 00000 n 
+0001315810 00000 n 
+0004864452 00000 n 
 0000021657 00000 n 
 0000021707 00000 n 
-0001318761 00000 n 
-0004864297 00000 n 
+0001318765 00000 n 
+0004864387 00000 n 
 0000021767 00000 n 
 0000021828 00000 n 
-0001321438 00000 n 
-0004864218 00000 n 
+0001321442 00000 n 
+0004864308 00000 n 
 0000021883 00000 n 
 0000021956 00000 n 
-0001324460 00000 n 
-0004864086 00000 n 
+0001324464 00000 n 
+0004864176 00000 n 
 0000022006 00000 n 
 0000022055 00000 n 
-0001324585 00000 n 
-0004864007 00000 n 
+0001324589 00000 n 
+0004864097 00000 n 
 0000022110 00000 n 
 0000022155 00000 n 
-0001328481 00000 n 
-0004863889 00000 n 
+0001328485 00000 n 
+0004863979 00000 n 
 0000022210 00000 n 
 0000022253 00000 n 
-0001331886 00000 n 
-0004863810 00000 n 
+0001331890 00000 n 
+0004863900 00000 n 
 0000022313 00000 n 
 0000022365 00000 n 
-0001351493 00000 n 
-0004863731 00000 n 
+0001351497 00000 n 
+0004863821 00000 n 
 0000022425 00000 n 
 0000022475 00000 n 
-0001351748 00000 n 
-0004863599 00000 n 
+0001351752 00000 n 
+0004863689 00000 n 
 0000022525 00000 n 
 0000022567 00000 n 
-0001354726 00000 n 
-0004863520 00000 n 
+0001354730 00000 n 
+0004863610 00000 n 
 0000022622 00000 n 
 0000022658 00000 n 
-0001354853 00000 n 
-0004863427 00000 n 
+0001354857 00000 n 
+0004863517 00000 n 
 0000022713 00000 n 
 0000022778 00000 n 
-0001357429 00000 n 
-0004863334 00000 n 
+0001357433 00000 n 
+0004863424 00000 n 
 0000022833 00000 n 
 0000022866 00000 n 
-0001357556 00000 n 
-0004863215 00000 n 
+0001357560 00000 n 
+0004863305 00000 n 
 0000022921 00000 n 
 0000022955 00000 n 
-0001364947 00000 n 
-0004863136 00000 n 
+0001364951 00000 n 
+0004863226 00000 n 
 0000023015 00000 n 
 0000023066 00000 n 
-0001365074 00000 n 
-0004863043 00000 n 
+0001365078 00000 n 
+0004863133 00000 n 
 0000023126 00000 n 
 0000023207 00000 n 
-0001367540 00000 n 
-0004862950 00000 n 
+0001367544 00000 n 
+0004863040 00000 n 
 0000023267 00000 n 
 0000023318 00000 n 
-0001370305 00000 n 
-0004862857 00000 n 
+0001370309 00000 n 
+0004862947 00000 n 
 0000023378 00000 n 
 0000023435 00000 n 
-0001373817 00000 n 
-0004862764 00000 n 
+0001373821 00000 n 
+0004862854 00000 n 
 0000023495 00000 n 
 0000023541 00000 n 
-0001377872 00000 n 
-0004862671 00000 n 
+0001377876 00000 n 
+0004862761 00000 n 
 0000023601 00000 n 
 0000023660 00000 n 
-0001377999 00000 n 
-0004862578 00000 n 
+0001378003 00000 n 
+0004862668 00000 n 
 0000023720 00000 n 
 0000023777 00000 n 
-0001388382 00000 n 
-0004862485 00000 n 
+0001388386 00000 n 
+0004862575 00000 n 
 0000023837 00000 n 
 0000023910 00000 n 
-0001390312 00000 n 
-0004862392 00000 n 
+0001390316 00000 n 
+0004862482 00000 n 
 0000023970 00000 n 
 0000024041 00000 n 
-0001392568 00000 n 
-0004862299 00000 n 
+0001392572 00000 n 
+0004862389 00000 n 
 0000024102 00000 n 
 0000024156 00000 n 
-0001392695 00000 n 
-0004862220 00000 n 
+0001392699 00000 n 
+0004862310 00000 n 
 0000024217 00000 n 
 0000024297 00000 n 
-0001394142 00000 n 
-0004862102 00000 n 
+0001394146 00000 n 
+0004862192 00000 n 
 0000024347 00000 n 
 0000024385 00000 n 
-0001394269 00000 n 
-0004862023 00000 n 
+0001394273 00000 n 
+0004862113 00000 n 
 0000024440 00000 n 
 0000024485 00000 n 
-0001394396 00000 n 
-0004861944 00000 n 
+0001394400 00000 n 
+0004862034 00000 n 
 0000024540 00000 n 
 0000024596 00000 n 
-0001402299 00000 n 
-0004861812 00000 n 
+0001402303 00000 n 
+0004861902 00000 n 
 0000024644 00000 n 
 0000024709 00000 n 
-0001410370 00000 n 
-0004861733 00000 n 
+0001410374 00000 n 
+0004861823 00000 n 
 0000024759 00000 n 
 0000024805 00000 n 
-0001424694 00000 n 
-0004861601 00000 n 
+0001424698 00000 n 
+0004861691 00000 n 
 0000024855 00000 n 
 0000024890 00000 n 
-0001427339 00000 n 
-0004861522 00000 n 
+0001427343 00000 n 
+0004861612 00000 n 
 0000024945 00000 n 
 0000025008 00000 n 
-0001430207 00000 n 
-0004861429 00000 n 
+0001430211 00000 n 
+0004861519 00000 n 
 0000025063 00000 n 
 0000025157 00000 n 
-0001435870 00000 n 
-0004861297 00000 n 
+0001435874 00000 n 
+0004861387 00000 n 
 0000025212 00000 n 
 0000025275 00000 n 
-0001436125 00000 n 
-0004861232 00000 n 
+0001436129 00000 n 
+0004861322 00000 n 
 0000025335 00000 n 
 0000025411 00000 n 
-0001438979 00000 n 
-0004861139 00000 n 
+0001438983 00000 n 
+0004861229 00000 n 
 0000025466 00000 n 
 0000025540 00000 n 
-0001441856 00000 n 
-0004861060 00000 n 
+0001441860 00000 n 
+0004861150 00000 n 
 0000025595 00000 n 
 0000025643 00000 n 
-0001444101 00000 n 
-0004860928 00000 n 
+0001444105 00000 n 
+0004861018 00000 n 
 0000025693 00000 n 
 0000025739 00000 n 
-0001444228 00000 n 
-0004860849 00000 n 
+0001444232 00000 n 
+0004860939 00000 n 
 0000025794 00000 n 
 0000025853 00000 n 
-0001447212 00000 n 
-0004860770 00000 n 
+0001447216 00000 n 
+0004860860 00000 n 
 0000025908 00000 n 
 0000025968 00000 n 
-0001449777 00000 n 
-0004860652 00000 n 
+0001449781 00000 n 
+0004860742 00000 n 
 0000026018 00000 n 
 0000026056 00000 n 
-0001449904 00000 n 
-0004860573 00000 n 
+0001449908 00000 n 
+0004860663 00000 n 
 0000026111 00000 n 
 0000026157 00000 n 
-0001450031 00000 n 
-0004860494 00000 n 
+0001450035 00000 n 
+0004860584 00000 n 
 0000026212 00000 n 
 0000026295 00000 n 
-0001454390 00000 n 
-0004860359 00000 n 
+0001454394 00000 n 
+0004860449 00000 n 
 0000026343 00000 n 
 0000026418 00000 n 
-0001457135 00000 n 
-0004860280 00000 n 
+0001457139 00000 n 
+0004860370 00000 n 
 0000026468 00000 n 
 0000026501 00000 n 
-0001457262 00000 n 
-0004860187 00000 n 
+0001457266 00000 n 
+0004860277 00000 n 
 0000026551 00000 n 
 0000026608 00000 n 
-0001460078 00000 n 
-0004860051 00000 n 
+0001460082 00000 n 
+0004860141 00000 n 
 0000026658 00000 n 
 0000026717 00000 n 
-0001460205 00000 n 
-0004859927 00000 n 
+0001460209 00000 n 
+0004860017 00000 n 
 0000026773 00000 n 
 0000026848 00000 n 
-0001462068 00000 n 
-0004859843 00000 n 
+0001462072 00000 n 
+0004859933 00000 n 
 0000026909 00000 n 
 0000026969 00000 n 
-0001465646 00000 n 
-0004859744 00000 n 
+0001465650 00000 n 
+0004859834 00000 n 
 0000027030 00000 n 
 0000027097 00000 n 
-0001469672 00000 n 
-0004859645 00000 n 
+0001469676 00000 n 
+0004859735 00000 n 
 0000027158 00000 n 
 0000027212 00000 n 
-0001469800 00000 n 
-0004859561 00000 n 
+0001469804 00000 n 
+0004859651 00000 n 
 0000027273 00000 n 
 0000027324 00000 n 
-0001472001 00000 n 
-0004859463 00000 n 
+0001472005 00000 n 
+0004859553 00000 n 
 0000027380 00000 n 
 0000027438 00000 n 
-0001477078 00000 n 
-0004859339 00000 n 
+0001477082 00000 n 
+0004859429 00000 n 
 0000027494 00000 n 
 0000027542 00000 n 
-0001479218 00000 n 
-0004859270 00000 n 
+0001479222 00000 n 
+0004859360 00000 n 
 0000027603 00000 n 
 0000027691 00000 n 
-0001483690 00000 n 
-0004859132 00000 n 
+0001483694 00000 n 
+0004859222 00000 n 
 0000027742 00000 n 
 0000027800 00000 n 
-0001485508 00000 n 
-0004859048 00000 n 
+0001485512 00000 n 
+0004859138 00000 n 
 0000027856 00000 n 
 0000027904 00000 n 
-0001485636 00000 n 
-0004858949 00000 n 
+0001485640 00000 n 
+0004859039 00000 n 
 0000027960 00000 n 
 0000028013 00000 n 
-0001487614 00000 n 
-0004858850 00000 n 
+0001487618 00000 n 
+0004858940 00000 n 
 0000028069 00000 n 
 0000028119 00000 n 
-0001487742 00000 n 
-0004858766 00000 n 
+0001487746 00000 n 
+0004858856 00000 n 
 0000028175 00000 n 
 0000028215 00000 n 
-0001490021 00000 n 
-0004858668 00000 n 
+0001490025 00000 n 
+0004858758 00000 n 
 0000028266 00000 n 
 0000028332 00000 n 
-0001494609 00000 n 
-0004858529 00000 n 
+0001494613 00000 n 
+0004858619 00000 n 
 0000028383 00000 n 
 0000028437 00000 n 
-0001496349 00000 n 
-0004858445 00000 n 
+0001496353 00000 n 
+0004858535 00000 n 
 0000028493 00000 n 
 0000028543 00000 n 
-0001500436 00000 n 
-0004858361 00000 n 
+0001500440 00000 n 
+0004858451 00000 n 
 0000028599 00000 n 
 0000028645 00000 n 
-0001505516 00000 n 
-0004858263 00000 n 
+0001505520 00000 n 
+0004858353 00000 n 
 0000028696 00000 n 
 0000028760 00000 n 
-0001507479 00000 n 
-0004858124 00000 n 
+0001507483 00000 n 
+0004858214 00000 n 
 0000028811 00000 n 
 0000028853 00000 n 
-0001509692 00000 n 
-0004858040 00000 n 
+0001509696 00000 n 
+0004858130 00000 n 
 0000028909 00000 n 
 0000028975 00000 n 
-0001512030 00000 n 
-0004857941 00000 n 
+0001512034 00000 n 
+0004858031 00000 n 
 0000029031 00000 n 
 0000029091 00000 n 
-0001512158 00000 n 
-0004857801 00000 n 
+0001512162 00000 n 
+0004857891 00000 n 
 0000029147 00000 n 
 0000029211 00000 n 
-0001514970 00000 n 
-0004857717 00000 n 
+0001514974 00000 n 
+0004857807 00000 n 
 0000029272 00000 n 
 0000029317 00000 n 
-0001520464 00000 n 
-0004857618 00000 n 
+0001520468 00000 n 
+0004857708 00000 n 
 0000029378 00000 n 
 0000029436 00000 n 
-0001524983 00000 n 
-0004857519 00000 n 
+0001524987 00000 n 
+0004857609 00000 n 
 0000029497 00000 n 
 0000029546 00000 n 
-0001525111 00000 n 
-0004857435 00000 n 
+0001525115 00000 n 
+0004857525 00000 n 
 0000029607 00000 n 
 0000029674 00000 n 
-0001525239 00000 n 
-0004857351 00000 n 
+0001525243 00000 n 
+0004857441 00000 n 
 0000029730 00000 n 
 0000029775 00000 n 
-0001531071 00000 n 
-0004857253 00000 n 
+0001531075 00000 n 
+0004857343 00000 n 
 0000029826 00000 n 
 0000029874 00000 n 
-0001531199 00000 n 
-0004857155 00000 n 
+0001531203 00000 n 
+0004857245 00000 n 
 0000029926 00000 n 
 0000029986 00000 n 
-0001531327 00000 n 
-0004857057 00000 n 
+0001531331 00000 n 
+0004857147 00000 n 
 0000030038 00000 n 
 0000030081 00000 n 
-0001533251 00000 n 
-0004856959 00000 n 
+0001533255 00000 n 
+0004857049 00000 n 
 0000030133 00000 n 
 0000030188 00000 n 
-0001533379 00000 n 
-0004856820 00000 n 
+0001533383 00000 n 
+0004856910 00000 n 
 0000030240 00000 n 
 0000030298 00000 n 
-0001535072 00000 n 
-0004856736 00000 n 
+0001535076 00000 n 
+0004856826 00000 n 
 0000030355 00000 n 
 0000030420 00000 n 
-0001535200 00000 n 
-0004856652 00000 n 
+0001535204 00000 n 
+0004856742 00000 n 
 0000030477 00000 n 
 0000030544 00000 n 
-0001535328 00000 n 
-0004856569 00000 n 
+0001535332 00000 n 
+0004856659 00000 n 
 0000030596 00000 n 
 0000030653 00000 n 
-0001538989 00000 n 
-0004856431 00000 n 
+0001538993 00000 n 
+0004856521 00000 n 
 0000030702 00000 n 
 0000030760 00000 n 
-0001541751 00000 n 
-0004856306 00000 n 
+0001541755 00000 n 
+0004856396 00000 n 
 0000030811 00000 n 
 0000030876 00000 n 
-0001541877 00000 n 
-0004856222 00000 n 
+0001541881 00000 n 
+0004856312 00000 n 
 0000030932 00000 n 
 0000030983 00000 n 
-0001542005 00000 n 
-0004856123 00000 n 
+0001542009 00000 n 
+0004856213 00000 n 
 0000031039 00000 n 
 0000031111 00000 n 
-0001552883 00000 n 
-0004856024 00000 n 
+0001552887 00000 n 
+0004856114 00000 n 
 0000031167 00000 n 
 0000031220 00000 n 
-0001553011 00000 n 
-0004855940 00000 n 
+0001553015 00000 n 
+0004856030 00000 n 
 0000031276 00000 n 
 0000031328 00000 n 
-0001556171 00000 n 
-0004855815 00000 n 
+0001556175 00000 n 
+0004855905 00000 n 
 0000031379 00000 n 
 0000031436 00000 n 
-0001556299 00000 n 
-0004855690 00000 n 
+0001556303 00000 n 
+0004855780 00000 n 
 0000031492 00000 n 
 0000031539 00000 n 
-0001556427 00000 n 
-0004855606 00000 n 
+0001556431 00000 n 
+0004855696 00000 n 
 0000031600 00000 n 
 0000031674 00000 n 
-0001561931 00000 n 
-0004855522 00000 n 
+0001561935 00000 n 
+0004855612 00000 n 
 0000031735 00000 n 
 0000031776 00000 n 
-0001565781 00000 n 
-0004855423 00000 n 
+0001565785 00000 n 
+0004855513 00000 n 
 0000031832 00000 n 
 0000031885 00000 n 
-0001573129 00000 n 
-0004855324 00000 n 
+0001573133 00000 n 
+0004855414 00000 n 
 0000031941 00000 n 
 0000032004 00000 n 
-0001586714 00000 n 
-0004855199 00000 n 
+0001586718 00000 n 
+0004855289 00000 n 
 0000032060 00000 n 
 0000032154 00000 n 
-0001590119 00000 n 
-0004855115 00000 n 
+0001590123 00000 n 
+0004855205 00000 n 
 0000032215 00000 n 
 0000032298 00000 n 
-0001590247 00000 n 
-0004855031 00000 n 
+0001590251 00000 n 
+0004855121 00000 n 
 0000032359 00000 n 
 0000032424 00000 n 
-0001592263 00000 n 
-0004854892 00000 n 
+0001592267 00000 n 
+0004854982 00000 n 
 0000032473 00000 n 
 0000032531 00000 n 
-0001595088 00000 n 
-0004854767 00000 n 
+0001595092 00000 n 
+0004854857 00000 n 
 0000032582 00000 n 
 0000032638 00000 n 
-0001598065 00000 n 
-0004854683 00000 n 
+0001598069 00000 n 
+0004854773 00000 n 
 0000032694 00000 n 
 0000032758 00000 n 
-0001602998 00000 n 
-0004854584 00000 n 
+0001603002 00000 n 
+0004854674 00000 n 
 0000032814 00000 n 
 0000032867 00000 n 
-0001604803 00000 n 
-0004854500 00000 n 
+0001604807 00000 n 
+0004854590 00000 n 
 0000032923 00000 n 
 0000033005 00000 n 
-0001607007 00000 n 
-0004854401 00000 n 
+0001607011 00000 n 
+0004854491 00000 n 
 0000033056 00000 n 
 0000033110 00000 n 
-0001608972 00000 n 
-0004854276 00000 n 
+0001608976 00000 n 
+0004854366 00000 n 
 0000033161 00000 n 
 0000033200 00000 n 
-0001609100 00000 n 
-0004854207 00000 n 
+0001609104 00000 n 
+0004854297 00000 n 
 0000033256 00000 n 
 0000033353 00000 n 
-0001613363 00000 n 
-0004854068 00000 n 
+0001613367 00000 n 
+0004854158 00000 n 
 0000033402 00000 n 
 0000033476 00000 n 
-0001615980 00000 n 
-0004853984 00000 n 
+0001615984 00000 n 
+0004854074 00000 n 
 0000033527 00000 n 
 0000033574 00000 n 
-0001618577 00000 n 
-0004853844 00000 n 
+0001618581 00000 n 
+0004853934 00000 n 
 0000033625 00000 n 
 0000033678 00000 n 
-0001618705 00000 n 
-0004853760 00000 n 
+0001618709 00000 n 
+0004853850 00000 n 
 0000033734 00000 n 
 0000033811 00000 n 
-0001623648 00000 n 
-0004853661 00000 n 
+0001623652 00000 n 
+0004853751 00000 n 
 0000033867 00000 n 
 0000033915 00000 n 
-0001626182 00000 n 
-0004853536 00000 n 
+0001626186 00000 n 
+0004853626 00000 n 
 0000033971 00000 n 
 0000034032 00000 n 
-0001638442 00000 n 
-0004853467 00000 n 
+0001638446 00000 n 
+0004853557 00000 n 
 0000034093 00000 n 
 0000034169 00000 n 
-0001643607 00000 n 
-0004853327 00000 n 
+0001643611 00000 n 
+0004853417 00000 n 
 0000034220 00000 n 
 0000034278 00000 n 
-0001643735 00000 n 
-0004853243 00000 n 
+0001643739 00000 n 
+0004853333 00000 n 
 0000034334 00000 n 
 0000034392 00000 n 
-0001643863 00000 n 
-0004853144 00000 n 
+0001643867 00000 n 
+0004853234 00000 n 
 0000034448 00000 n 
 0000034521 00000 n 
-0001643991 00000 n 
-0004853060 00000 n 
+0001643995 00000 n 
+0004853150 00000 n 
 0000034577 00000 n 
 0000034627 00000 n 
-0001646830 00000 n 
-0004852920 00000 n 
+0001646834 00000 n 
+0004853010 00000 n 
 0000034678 00000 n 
 0000034729 00000 n 
-0001652340 00000 n 
-0004852810 00000 n 
+0001652344 00000 n 
+0004852900 00000 n 
 0000034785 00000 n 
 0000034841 00000 n 
-0001652468 00000 n 
-0004852726 00000 n 
+0001652472 00000 n 
+0004852816 00000 n 
 0000034902 00000 n 
 0000034962 00000 n 
-0001652724 00000 n 
-0004852642 00000 n 
+0001652728 00000 n 
+0004852732 00000 n 
 0000035023 00000 n 
 0000035068 00000 n 
-0001658160 00000 n 
-0004852502 00000 n 
+0001658164 00000 n 
+0004852592 00000 n 
 0000035119 00000 n 
 0000035202 00000 n 
-0001658288 00000 n 
-0004852418 00000 n 
+0001658292 00000 n 
+0004852508 00000 n 
 0000035258 00000 n 
 0000035337 00000 n 
-0001658416 00000 n 
-0004852319 00000 n 
+0001658420 00000 n 
+0004852409 00000 n 
 0000035393 00000 n 
 0000035459 00000 n 
-0001661046 00000 n 
-0004852220 00000 n 
+0001661050 00000 n 
+0004852310 00000 n 
 0000035515 00000 n 
 0000035565 00000 n 
-0001661174 00000 n 
-0004852080 00000 n 
+0001661178 00000 n 
+0004852170 00000 n 
 0000035621 00000 n 
 0000035686 00000 n 
-0001664094 00000 n 
-0004851996 00000 n 
+0001664098 00000 n 
+0004852086 00000 n 
 0000035747 00000 n 
 0000035793 00000 n 
-0001664222 00000 n 
-0004851912 00000 n 
+0001664226 00000 n 
+0004852002 00000 n 
 0000035854 00000 n 
 0000035905 00000 n 
-0001667072 00000 n 
-0004851813 00000 n 
+0001667076 00000 n 
+0004851903 00000 n 
 0000035961 00000 n 
 0000036028 00000 n 
-0001670561 00000 n 
-0004851714 00000 n 
+0001670565 00000 n 
+0004851804 00000 n 
 0000036084 00000 n 
 0000036174 00000 n 
-0001675128 00000 n 
-0004851615 00000 n 
+0001675132 00000 n 
+0004851705 00000 n 
 0000036230 00000 n 
 0000036316 00000 n 
-0001675256 00000 n 
-0004851490 00000 n 
+0001675260 00000 n 
+0004851580 00000 n 
 0000036372 00000 n 
 0000036447 00000 n 
-0001677659 00000 n 
-0004851406 00000 n 
+0001677663 00000 n 
+0004851496 00000 n 
 0000036508 00000 n 
 0000036561 00000 n 
-0001679935 00000 n 
-0004851307 00000 n 
+0001679939 00000 n 
+0004851397 00000 n 
 0000036622 00000 n 
 0000036699 00000 n 
-0001682048 00000 n 
-0004851223 00000 n 
+0001682052 00000 n 
+0004851313 00000 n 
 0000036760 00000 n 
 0000036842 00000 n 
-0001682176 00000 n 
-0004851098 00000 n 
+0001682180 00000 n 
+0004851188 00000 n 
 0000036893 00000 n 
 0000036932 00000 n 
-0001682304 00000 n 
-0004851014 00000 n 
+0001682308 00000 n 
+0004851104 00000 n 
 0000036988 00000 n 
 0000037052 00000 n 
-0001686775 00000 n 
-0004850915 00000 n 
+0001686779 00000 n 
+0004851005 00000 n 
 0000037108 00000 n 
 0000037184 00000 n 
-0001686903 00000 n 
-0004850831 00000 n 
+0001686907 00000 n 
+0004850921 00000 n 
 0000037240 00000 n 
 0000037308 00000 n 
-0001694897 00000 n 
-0004850692 00000 n 
+0001694901 00000 n 
+0004850782 00000 n 
 0000037357 00000 n 
 0000037412 00000 n 
-0001695025 00000 n 
-0004850608 00000 n 
+0001695029 00000 n 
+0004850698 00000 n 
 0000037463 00000 n 
 0000037510 00000 n 
-0001697855 00000 n 
-0004850468 00000 n 
+0001697859 00000 n 
+0004850558 00000 n 
 0000037561 00000 n 
 0000037597 00000 n 
-0001700502 00000 n 
-0004850358 00000 n 
+0001700506 00000 n 
+0004850448 00000 n 
 0000037653 00000 n 
 0000037711 00000 n 
-0001707989 00000 n 
-0004850274 00000 n 
+0001707993 00000 n 
+0004850364 00000 n 
 0000037772 00000 n 
 0000037829 00000 n 
-0001708117 00000 n 
-0004850175 00000 n 
+0001708121 00000 n 
+0004850265 00000 n 
 0000037890 00000 n 
 0000037953 00000 n 
-0001708245 00000 n 
-0004850076 00000 n 
+0001708249 00000 n 
+0004850166 00000 n 
 0000038014 00000 n 
 0000038077 00000 n 
-0001710733 00000 n 
-0004849977 00000 n 
+0001710737 00000 n 
+0004850067 00000 n 
 0000038138 00000 n 
 0000038199 00000 n 
-0001710861 00000 n 
-0004849878 00000 n 
+0001710865 00000 n 
+0004849968 00000 n 
 0000038260 00000 n 
 0000038309 00000 n 
-0001710989 00000 n 
-0004849779 00000 n 
+0001710993 00000 n 
+0004849869 00000 n 
 0000038370 00000 n 
 0000038415 00000 n 
-0001713566 00000 n 
-0004849680 00000 n 
+0001713570 00000 n 
+0004849770 00000 n 
 0000038476 00000 n 
 0000038526 00000 n 
-0001713694 00000 n 
-0004849581 00000 n 
+0001713698 00000 n 
+0004849671 00000 n 
 0000038587 00000 n 
 0000038650 00000 n 
-0001713822 00000 n 
-0004849497 00000 n 
+0001713826 00000 n 
+0004849587 00000 n 
 0000038711 00000 n 
 0000038776 00000 n 
-0001716568 00000 n 
-0004849357 00000 n 
+0001716572 00000 n 
+0004849447 00000 n 
 0000038827 00000 n 
 0000038874 00000 n 
-0001719214 00000 n 
-0004849247 00000 n 
+0001719218 00000 n 
+0004849337 00000 n 
 0000038930 00000 n 
 0000038979 00000 n 
-0001719341 00000 n 
-0004849163 00000 n 
+0001719345 00000 n 
+0004849253 00000 n 
 0000039040 00000 n 
 0000039087 00000 n 
-0001722863 00000 n 
-0004849079 00000 n 
+0001722867 00000 n 
+0004849169 00000 n 
 0000039148 00000 n 
 0000039202 00000 n 
-0001727636 00000 n 
-0004848939 00000 n 
+0001727640 00000 n 
+0004849029 00000 n 
 0000039253 00000 n 
 0000039318 00000 n 
-0001733654 00000 n 
-0004848855 00000 n 
+0001733658 00000 n 
+0004848945 00000 n 
 0000039374 00000 n 
 0000039429 00000 n 
-0001735300 00000 n 
-0004848771 00000 n 
+0001735304 00000 n 
+0004848861 00000 n 
 0000039485 00000 n 
 0000039535 00000 n 
-0001737829 00000 n 
-0004848672 00000 n 
+0001737833 00000 n 
+0004848762 00000 n 
 0000039586 00000 n 
 0000039638 00000 n 
-0001737957 00000 n 
-0004848532 00000 n 
+0001737961 00000 n 
+0004848622 00000 n 
 0000039689 00000 n 
 0000039728 00000 n 
-0001740891 00000 n 
-0004848448 00000 n 
+0001740895 00000 n 
+0004848538 00000 n 
 0000039784 00000 n 
 0000039838 00000 n 
-0001741019 00000 n 
-0004848349 00000 n 
+0001741023 00000 n 
+0004848439 00000 n 
 0000039894 00000 n 
 0000039970 00000 n 
-0001741147 00000 n 
-0004848265 00000 n 
+0001741151 00000 n 
+0004848355 00000 n 
 0000040026 00000 n 
 0000040105 00000 n 
-0001743794 00000 n 
-0004848181 00000 n 
+0001743798 00000 n 
+0004848271 00000 n 
 0000040156 00000 n 
 0000040200 00000 n 
-0001746249 00000 n 
-0004848042 00000 n 
+0001746253 00000 n 
+0004848132 00000 n 
 0000040249 00000 n 
 0000040295 00000 n 
-0001746377 00000 n 
-0004847958 00000 n 
+0001746381 00000 n 
+0004848048 00000 n 
 0000040346 00000 n 
 0000040384 00000 n 
-0001746505 00000 n 
-0004847859 00000 n 
+0001746509 00000 n 
+0004847949 00000 n 
 0000040435 00000 n 
 0000040482 00000 n 
-0001749894 00000 n 
-0004847719 00000 n 
+0001749898 00000 n 
+0004847809 00000 n 
 0000040533 00000 n 
 0000040613 00000 n 
-0001750021 00000 n 
-0004847635 00000 n 
+0001750025 00000 n 
+0004847725 00000 n 
 0000040669 00000 n 
 0000040724 00000 n 
-0001753471 00000 n 
-0004847536 00000 n 
+0001753475 00000 n 
+0004847626 00000 n 
 0000040780 00000 n 
 0000040829 00000 n 
-0001753727 00000 n 
-0004847437 00000 n 
+0001753731 00000 n 
+0004847527 00000 n 
 0000040885 00000 n 
 0000040939 00000 n 
-0001756530 00000 n 
-0004847338 00000 n 
+0001756534 00000 n 
+0004847428 00000 n 
 0000040995 00000 n 
 0000041039 00000 n 
-0001756658 00000 n 
-0004847239 00000 n 
+0001756662 00000 n 
+0004847329 00000 n 
 0000041095 00000 n 
 0000041156 00000 n 
-0001759325 00000 n 
-0004847155 00000 n 
+0001759329 00000 n 
+0004847245 00000 n 
 0000041212 00000 n 
 0000041255 00000 n 
-0001762179 00000 n 
-0004847056 00000 n 
+0001762183 00000 n 
+0004847146 00000 n 
 0000041306 00000 n 
 0000041347 00000 n 
-0001762307 00000 n 
-0004846931 00000 n 
+0001762311 00000 n 
+0004847021 00000 n 
 0000041398 00000 n 
 0000041437 00000 n 
-0001762435 00000 n 
-0004846847 00000 n 
+0001762439 00000 n 
+0004846937 00000 n 
 0000041493 00000 n 
 0000041574 00000 n 
-0001762563 00000 n 
-0004846763 00000 n 
+0001762567 00000 n 
+0004846853 00000 n 
 0000041630 00000 n 
 0000041709 00000 n 
-0001767236 00000 n 
-0004846624 00000 n 
+0001767240 00000 n 
+0004846714 00000 n 
 0000041758 00000 n 
 0000041821 00000 n 
-0001769878 00000 n 
-0004846540 00000 n 
+0001769882 00000 n 
+0004846630 00000 n 
 0000041872 00000 n 
 0000041919 00000 n 
-0001770006 00000 n 
-0004846441 00000 n 
+0001770010 00000 n 
+0004846531 00000 n 
 0000041970 00000 n 
 0000042025 00000 n 
-0001772752 00000 n 
-0004846301 00000 n 
+0001772756 00000 n 
+0004846391 00000 n 
 0000042076 00000 n 
 0000042144 00000 n 
-0001772879 00000 n 
-0004846217 00000 n 
+0001772883 00000 n 
+0004846307 00000 n 
 0000042200 00000 n 
 0000042256 00000 n 
-0001780291 00000 n 
-0004846118 00000 n 
+0001780295 00000 n 
+0004846208 00000 n 
 0000042312 00000 n 
 0000042370 00000 n 
-0001780419 00000 n 
-0004846034 00000 n 
+0001780423 00000 n 
+0004846124 00000 n 
 0000042426 00000 n 
 0000042482 00000 n 
-0001782683 00000 n 
-0004845894 00000 n 
+0001782687 00000 n 
+0004845984 00000 n 
 0000042533 00000 n 
 0000042599 00000 n 
-0001785336 00000 n 
-0004845810 00000 n 
+0001785340 00000 n 
+0004845900 00000 n 
 0000042655 00000 n 
 0000042710 00000 n 
-0001787889 00000 n 
-0004845726 00000 n 
+0001787893 00000 n 
+0004845816 00000 n 
 0000042766 00000 n 
 0000042822 00000 n 
-0001790722 00000 n 
-0004845627 00000 n 
+0001790726 00000 n 
+0004845717 00000 n 
 0000042873 00000 n 
 0000042940 00000 n 
-0001790850 00000 n 
-0004845502 00000 n 
+0001790854 00000 n 
+0004845592 00000 n 
 0000042991 00000 n 
 0000043030 00000 n 
-0001790978 00000 n 
-0004845418 00000 n 
+0001790982 00000 n 
+0004845508 00000 n 
 0000043086 00000 n 
 0000043146 00000 n 
-0001793164 00000 n 
-0004845334 00000 n 
+0001793168 00000 n 
+0004845424 00000 n 
 0000043202 00000 n 
 0000043292 00000 n 
-0001797067 00000 n 
-0004845195 00000 n 
+0001797071 00000 n 
+0004845285 00000 n 
 0000043341 00000 n 
 0000043421 00000 n 
-0001797195 00000 n 
-0004845111 00000 n 
+0001797199 00000 n 
+0004845201 00000 n 
 0000043472 00000 n 
 0000043519 00000 n 
-0001800603 00000 n 
-0004844986 00000 n 
+0001800607 00000 n 
+0004845076 00000 n 
 0000043570 00000 n 
 0000043609 00000 n 
-0001803045 00000 n 
-0004844917 00000 n 
+0001803049 00000 n 
+0004845007 00000 n 
 0000043665 00000 n 
 0000043725 00000 n 
-0001805895 00000 n 
-0004844777 00000 n 
+0001805899 00000 n 
+0004844867 00000 n 
 0000043774 00000 n 
 0000043832 00000 n 
-0001806023 00000 n 
-0004844693 00000 n 
+0001806027 00000 n 
+0004844783 00000 n 
 0000043883 00000 n 
 0000043930 00000 n 
-0001808682 00000 n 
-0004844553 00000 n 
+0001808686 00000 n 
+0004844643 00000 n 
 0000043981 00000 n 
 0000044029 00000 n 
-0001811062 00000 n 
-0004844469 00000 n 
+0001811066 00000 n 
+0004844559 00000 n 
 0000044085 00000 n 
 0000044149 00000 n 
-0001811637 00000 n 
-0004844385 00000 n 
+0001811641 00000 n 
+0004844475 00000 n 
 0000044205 00000 n 
 0000044274 00000 n 
-0001815091 00000 n 
-0004844245 00000 n 
+0001815095 00000 n 
+0004844335 00000 n 
 0000044325 00000 n 
 0000044377 00000 n 
-0001818044 00000 n 
-0004844161 00000 n 
+0001818048 00000 n 
+0004844251 00000 n 
 0000044433 00000 n 
 0000044498 00000 n 
-0001819980 00000 n 
-0004844077 00000 n 
+0001819984 00000 n 
+0004844167 00000 n 
 0000044554 00000 n 
 0000044612 00000 n 
-0001827554 00000 n 
-0004843937 00000 n 
+0001827558 00000 n 
+0004844027 00000 n 
 0000044663 00000 n 
 0000044720 00000 n 
-0001827682 00000 n 
-0004843827 00000 n 
+0001827686 00000 n 
+0004843917 00000 n 
 0000044776 00000 n 
 0000044833 00000 n 
-0001833706 00000 n 
-0004843743 00000 n 
+0001833710 00000 n 
+0004843833 00000 n 
 0000044894 00000 n 
 0000044944 00000 n 
-0001840776 00000 n 
-0004843644 00000 n 
+0001840780 00000 n 
+0004843734 00000 n 
 0000045005 00000 n 
 0000045057 00000 n 
-0001846128 00000 n 
-0004843545 00000 n 
+0001846132 00000 n 
+0004843635 00000 n 
 0000045118 00000 n 
 0000045183 00000 n 
-0001848917 00000 n 
-0004843446 00000 n 
+0001848921 00000 n 
+0004843536 00000 n 
 0000045244 00000 n 
 0000045288 00000 n 
-0001852534 00000 n 
-0004843347 00000 n 
+0001852538 00000 n 
+0004843437 00000 n 
 0000045349 00000 n 
 0000045416 00000 n 
-0001852661 00000 n 
-0004843263 00000 n 
+0001852665 00000 n 
+0004843353 00000 n 
 0000045477 00000 n 
 0000045528 00000 n 
-0001859560 00000 n 
-0004843123 00000 n 
+0001859564 00000 n 
+0004843213 00000 n 
 0000045579 00000 n 
 0000045642 00000 n 
-0001865595 00000 n 
-0004843039 00000 n 
+0001865599 00000 n 
+0004843129 00000 n 
 0000045698 00000 n 
 0000045771 00000 n 
-0001865723 00000 n 
-0004842940 00000 n 
+0001865727 00000 n 
+0004843030 00000 n 
 0000045827 00000 n 
 0000045890 00000 n 
-0001868831 00000 n 
-0004842841 00000 n 
+0001868835 00000 n 
+0004842931 00000 n 
 0000045946 00000 n 
 0000046004 00000 n 
-0001868959 00000 n 
-0004842742 00000 n 
+0001868963 00000 n 
+0004842832 00000 n 
 0000046060 00000 n 
 0000046117 00000 n 
-0001878559 00000 n 
-0004842658 00000 n 
+0001878563 00000 n 
+0004842748 00000 n 
 0000046173 00000 n 
 0000046232 00000 n 
-0001881687 00000 n 
-0004842518 00000 n 
+0001881691 00000 n 
+0004842608 00000 n 
 0000046283 00000 n 
 0000046344 00000 n 
-0001881815 00000 n 
-0004842434 00000 n 
+0001881819 00000 n 
+0004842524 00000 n 
 0000046400 00000 n 
 0000046466 00000 n 
-0001884923 00000 n 
-0004842309 00000 n 
+0001884927 00000 n 
+0004842399 00000 n 
 0000046522 00000 n 
 0000046590 00000 n 
-0001888469 00000 n 
-0004842225 00000 n 
+0001888473 00000 n 
+0004842315 00000 n 
 0000046651 00000 n 
 0000046705 00000 n 
-0001892869 00000 n 
-0004842126 00000 n 
+0001892873 00000 n 
+0004842216 00000 n 
 0000046766 00000 n 
 0000046857 00000 n 
-0001895592 00000 n 
-0004842027 00000 n 
+0001895596 00000 n 
+0004842117 00000 n 
 0000046918 00000 n 
 0000046988 00000 n 
-0001897689 00000 n 
-0004841928 00000 n 
+0001897693 00000 n 
+0004842018 00000 n 
 0000047049 00000 n 
 0000047119 00000 n 
-0001901421 00000 n 
-0004841829 00000 n 
+0001901425 00000 n 
+0004841919 00000 n 
 0000047180 00000 n 
 0000047242 00000 n 
-0001903495 00000 n 
-0004841730 00000 n 
+0001903499 00000 n 
+0004841820 00000 n 
 0000047303 00000 n 
 0000047362 00000 n 
-0001906276 00000 n 
-0004841631 00000 n 
+0001906280 00000 n 
+0004841721 00000 n 
 0000047423 00000 n 
 0000047487 00000 n 
-0001908491 00000 n 
-0004841532 00000 n 
+0001908495 00000 n 
+0004841622 00000 n 
 0000047548 00000 n 
 0000047610 00000 n 
-0001910530 00000 n 
-0004841448 00000 n 
+0001910534 00000 n 
+0004841538 00000 n 
 0000047671 00000 n 
 0000047733 00000 n 
-0001913039 00000 n 
-0004841308 00000 n 
+0001913043 00000 n 
+0004841398 00000 n 
 0000047784 00000 n 
 0000047846 00000 n 
-0001913167 00000 n 
-0004841224 00000 n 
+0001913171 00000 n 
+0004841314 00000 n 
 0000047902 00000 n 
 0000047962 00000 n 
-0001916374 00000 n 
-0004841125 00000 n 
+0001916378 00000 n 
+0004841215 00000 n 
 0000048018 00000 n 
 0000048082 00000 n 
-0001922739 00000 n 
-0004841026 00000 n 
+0001922743 00000 n 
+0004841116 00000 n 
 0000048138 00000 n 
 0000048203 00000 n 
-0001925619 00000 n 
-0004840942 00000 n 
+0001925623 00000 n 
+0004841032 00000 n 
 0000048259 00000 n 
 0000048351 00000 n 
-0001928369 00000 n 
-0004840802 00000 n 
+0001928373 00000 n 
+0004840892 00000 n 
 0000048402 00000 n 
 0000048441 00000 n 
-0001928497 00000 n 
-0004840718 00000 n 
+0001928501 00000 n 
+0004840808 00000 n 
 0000048497 00000 n 
 0000048573 00000 n 
-0001935607 00000 n 
-0004840619 00000 n 
+0001935611 00000 n 
+0004840709 00000 n 
 0000048629 00000 n 
 0000048693 00000 n 
-0001938567 00000 n 
-0004840520 00000 n 
+0001938571 00000 n 
+0004840610 00000 n 
 0000048749 00000 n 
 0000048820 00000 n 
-0001943855 00000 n 
-0004840421 00000 n 
+0001943859 00000 n 
+0004840511 00000 n 
 0000048876 00000 n 
 0000048960 00000 n 
-0001946404 00000 n 
-0004840322 00000 n 
+0001946408 00000 n 
+0004840412 00000 n 
 0000049016 00000 n 
 0000049082 00000 n 
-0001950999 00000 n 
-0004840223 00000 n 
+0001951003 00000 n 
+0004840313 00000 n 
 0000049138 00000 n 
 0000049189 00000 n 
-0001954392 00000 n 
-0004840139 00000 n 
+0001954396 00000 n 
+0004840229 00000 n 
 0000049245 00000 n 
 0000049319 00000 n 
-0001954520 00000 n 
-0004839999 00000 n 
+0001954524 00000 n 
+0004840089 00000 n 
 0000049370 00000 n 
 0000049416 00000 n 
-0001954648 00000 n 
-0004839915 00000 n 
+0001954652 00000 n 
+0004840005 00000 n 
 0000049472 00000 n 
 0000049517 00000 n 
-0001957027 00000 n 
-0004839816 00000 n 
+0001957031 00000 n 
+0004839906 00000 n 
 0000049573 00000 n 
 0000049633 00000 n 
-0001957155 00000 n 
-0004839717 00000 n 
+0001957159 00000 n 
+0004839807 00000 n 
 0000049689 00000 n 
 0000049736 00000 n 
-0001957283 00000 n 
-0004839633 00000 n 
+0001957287 00000 n 
+0004839723 00000 n 
 0000049792 00000 n 
 0000049843 00000 n 
-0001960402 00000 n 
-0004839534 00000 n 
+0001960406 00000 n 
+0004839624 00000 n 
 0000049895 00000 n 
 0000049970 00000 n 
-0001965453 00000 n 
-0004839435 00000 n 
+0001965457 00000 n 
+0004839525 00000 n 
 0000050022 00000 n 
 0000050071 00000 n 
-0001968514 00000 n 
-0004839336 00000 n 
+0001968518 00000 n 
+0004839426 00000 n 
 0000050123 00000 n 
 0000050190 00000 n 
-0001971937 00000 n 
-0004839237 00000 n 
+0001971941 00000 n 
+0004839327 00000 n 
 0000050242 00000 n 
 0000050327 00000 n 
-0001972064 00000 n 
-0004839112 00000 n 
+0001972068 00000 n 
+0004839202 00000 n 
 0000050379 00000 n 
 0000050419 00000 n 
-0001972192 00000 n 
-0004839028 00000 n 
+0001972196 00000 n 
+0004839118 00000 n 
 0000050476 00000 n 
 0000050552 00000 n 
-0001972320 00000 n 
-0004838944 00000 n 
+0001972324 00000 n 
+0004839034 00000 n 
 0000050609 00000 n 
 0000050710 00000 n 
-0001976369 00000 n 
-0004838804 00000 n 
+0001976373 00000 n 
+0004838894 00000 n 
 0000050759 00000 n 
 0000050812 00000 n 
-0001976496 00000 n 
-0004838679 00000 n 
+0001976500 00000 n 
+0004838769 00000 n 
 0000050863 00000 n 
 0000050901 00000 n 
-0001976623 00000 n 
-0004838595 00000 n 
+0001976627 00000 n 
+0004838685 00000 n 
 0000050957 00000 n 
 0000051006 00000 n 
-0001976751 00000 n 
-0004838511 00000 n 
+0001976755 00000 n 
+0004838601 00000 n 
 0000051062 00000 n 
 0000051098 00000 n 
-0001980221 00000 n 
-0004838371 00000 n 
+0001980225 00000 n 
+0004838461 00000 n 
 0000051149 00000 n 
 0000051207 00000 n 
-0001980349 00000 n 
-0004838287 00000 n 
+0001980353 00000 n 
+0004838377 00000 n 
 0000051263 00000 n 
 0000051319 00000 n 
-0001983161 00000 n 
-0004838188 00000 n 
+0001983165 00000 n 
+0004838278 00000 n 
 0000051375 00000 n 
 0000051436 00000 n 
-0001987960 00000 n 
-0004838104 00000 n 
+0001987964 00000 n 
+0004838194 00000 n 
 0000051492 00000 n 
 0000051555 00000 n 
-0001993528 00000 n 
-0004837964 00000 n 
+0001993532 00000 n 
+0004838054 00000 n 
 0000051606 00000 n 
 0000051654 00000 n 
-0001996304 00000 n 
-0004837880 00000 n 
+0001996308 00000 n 
+0004837970 00000 n 
 0000051710 00000 n 
 0000051784 00000 n 
-0001996432 00000 n 
-0004837781 00000 n 
+0001996436 00000 n 
+0004837871 00000 n 
 0000051840 00000 n 
 0000051920 00000 n 
-0001999379 00000 n 
-0004837682 00000 n 
+0001999383 00000 n 
+0004837772 00000 n 
 0000051976 00000 n 
 0000052042 00000 n 
-0002001754 00000 n 
-0004837583 00000 n 
+0002001758 00000 n 
+0004837673 00000 n 
 0000052098 00000 n 
 0000052189 00000 n 
-0002004565 00000 n 
-0004837499 00000 n 
+0002004569 00000 n 
+0004837589 00000 n 
 0000052245 00000 n 
 0000052294 00000 n 
-0002007139 00000 n 
-0004837359 00000 n 
+0002007143 00000 n 
+0004837449 00000 n 
 0000052345 00000 n 
 0000052432 00000 n 
-0002007266 00000 n 
-0004837275 00000 n 
+0002007270 00000 n 
+0004837365 00000 n 
 0000052488 00000 n 
 0000052550 00000 n 
-0002010121 00000 n 
-0004837176 00000 n 
+0002010125 00000 n 
+0004837266 00000 n 
 0000052606 00000 n 
 0000052663 00000 n 
-0002010249 00000 n 
-0004837077 00000 n 
+0002010253 00000 n 
+0004837167 00000 n 
 0000052719 00000 n 
 0000052787 00000 n 
-0002036545 00000 n 
-0004836978 00000 n 
+0002036549 00000 n 
+0004837068 00000 n 
 0000052843 00000 n 
 0000052897 00000 n 
-0002069612 00000 n 
-0004836879 00000 n 
+0002069616 00000 n 
+0004836969 00000 n 
 0000052953 00000 n 
 0000053038 00000 n 
-0002072440 00000 n 
-0004836780 00000 n 
+0002072444 00000 n 
+0004836870 00000 n 
 0000053094 00000 n 
 0000053174 00000 n 
-0002074600 00000 n 
-0004836681 00000 n 
+0002074604 00000 n 
+0004836771 00000 n 
 0000053230 00000 n 
 0000053293 00000 n 
-0002077220 00000 n 
-0004836597 00000 n 
+0002077224 00000 n 
+0004836687 00000 n 
 0000053349 00000 n 
 0000053424 00000 n 
-0002080348 00000 n 
-0004836456 00000 n 
+0002080352 00000 n 
+0004836546 00000 n 
 0000053475 00000 n 
 0000053532 00000 n 
-0002083161 00000 n 
-0004836372 00000 n 
+0002083165 00000 n 
+0004836462 00000 n 
 0000053588 00000 n 
 0000053643 00000 n 
-0002085664 00000 n 
-0004836273 00000 n 
+0002085668 00000 n 
+0004836363 00000 n 
 0000053699 00000 n 
 0000053753 00000 n 
-0002087802 00000 n 
-0004836133 00000 n 
+0002087806 00000 n 
+0004836223 00000 n 
 0000053809 00000 n 
 0000053855 00000 n 
-0002087930 00000 n 
-0004836064 00000 n 
+0002087934 00000 n 
+0004836154 00000 n 
 0000053916 00000 n 
 0000053965 00000 n 
-0002090281 00000 n 
-0004835965 00000 n 
+0002090285 00000 n 
+0004836055 00000 n 
 0000054021 00000 n 
 0000054059 00000 n 
-0002090409 00000 n 
-0004835866 00000 n 
+0002090413 00000 n 
+0004835956 00000 n 
 0000054115 00000 n 
 0000054149 00000 n 
-0002143426 00000 n 
-0004835767 00000 n 
+0002143430 00000 n 
+0004835857 00000 n 
 0000054205 00000 n 
 0000054243 00000 n 
-0002211301 00000 n 
-0004835668 00000 n 
+0002211305 00000 n 
+0004835758 00000 n 
 0000054299 00000 n 
 0000054354 00000 n 
-0002211429 00000 n 
-0004835569 00000 n 
+0002211433 00000 n 
+0004835659 00000 n 
 0000054410 00000 n 
 0000054466 00000 n 
-0002258771 00000 n 
-0004835470 00000 n 
+0002258775 00000 n 
+0004835560 00000 n 
 0000054522 00000 n 
 0000054563 00000 n 
-0002296477 00000 n 
-0004835371 00000 n 
+0002296481 00000 n 
+0004835461 00000 n 
 0000054620 00000 n 
 0000054680 00000 n 
-0002299006 00000 n 
-0004835272 00000 n 
+0002299010 00000 n 
+0004835362 00000 n 
 0000054737 00000 n 
 0000054786 00000 n 
-0002299134 00000 n 
-0004835173 00000 n 
+0002299138 00000 n 
+0004835263 00000 n 
 0000054843 00000 n 
 0000054882 00000 n 
-0002301718 00000 n 
-0004835074 00000 n 
+0002301722 00000 n 
+0004835164 00000 n 
 0000054939 00000 n 
 0000054984 00000 n 
-0002301846 00000 n 
-0004834975 00000 n 
+0002301850 00000 n 
+0004835065 00000 n 
 0000055041 00000 n 
 0000055103 00000 n 
-0002306861 00000 n 
-0004834876 00000 n 
+0002306865 00000 n 
+0004834966 00000 n 
 0000055160 00000 n 
 0000055248 00000 n 
-0002306989 00000 n 
-0004834777 00000 n 
+0002306993 00000 n 
+0004834867 00000 n 
 0000055305 00000 n 
 0000055385 00000 n 
-0002364376 00000 n 
-0004834678 00000 n 
+0002364380 00000 n 
+0004834768 00000 n 
 0000055442 00000 n 
 0000055500 00000 n 
-0002370901 00000 n 
-0004834579 00000 n 
+0002370905 00000 n 
+0004834669 00000 n 
 0000055557 00000 n 
 0000055614 00000 n 
-0002374772 00000 n 
-0004834495 00000 n 
+0002374776 00000 n 
+0004834585 00000 n 
 0000055671 00000 n 
 0000055731 00000 n 
-0002378185 00000 n 
-0004834355 00000 n 
+0002378189 00000 n 
+0004834445 00000 n 
 0000055782 00000 n 
 0000055843 00000 n 
-0002378313 00000 n 
-0004834271 00000 n 
+0002378317 00000 n 
+0004834361 00000 n 
 0000055899 00000 n 
 0000055969 00000 n 
-0002378441 00000 n 
-0004834172 00000 n 
+0002378445 00000 n 
+0004834262 00000 n 
 0000056025 00000 n 
 0000056083 00000 n 
-0002438081 00000 n 
-0004834088 00000 n 
+0002438085 00000 n 
+0004834178 00000 n 
 0000056139 00000 n 
 0000056197 00000 n 
-0002441269 00000 n 
-0004833948 00000 n 
+0002441273 00000 n 
+0004834038 00000 n 
 0000056248 00000 n 
 0000056339 00000 n 
-0002441397 00000 n 
-0004833864 00000 n 
+0002441401 00000 n 
+0004833954 00000 n 
 0000056395 00000 n 
 0000056472 00000 n 
-0002474402 00000 n 
-0004833780 00000 n 
+0002474406 00000 n 
+0004833870 00000 n 
 0000056528 00000 n 
 0000056606 00000 n 
-0002477626 00000 n 
-0004833640 00000 n 
+0002477630 00000 n 
+0004833730 00000 n 
 0000056657 00000 n 
 0000056705 00000 n 
-0002477754 00000 n 
-0004833556 00000 n 
+0002477758 00000 n 
+0004833646 00000 n 
 0000056761 00000 n 
 0000056821 00000 n 
-0002480426 00000 n 
-0004833472 00000 n 
+0002480430 00000 n 
+0004833562 00000 n 
 0000056877 00000 n 
 0000056940 00000 n 
-0002480554 00000 n 
-0004833332 00000 n 
+0002480558 00000 n 
+0004833422 00000 n 
 0000056991 00000 n 
 0000057065 00000 n 
-0002480682 00000 n 
-0004833248 00000 n 
+0002480686 00000 n 
+0004833338 00000 n 
 0000057121 00000 n 
 0000057211 00000 n 
-0002483394 00000 n 
-0004833149 00000 n 
+0002483398 00000 n 
+0004833239 00000 n 
 0000057267 00000 n 
 0000057331 00000 n 
-0002483520 00000 n 
-0004833050 00000 n 
+0002483524 00000 n 
+0004833140 00000 n 
 0000057387 00000 n 
 0000057441 00000 n 
-0002483648 00000 n 
-0004832966 00000 n 
+0002483652 00000 n 
+0004833056 00000 n 
 0000057497 00000 n 
 0000057587 00000 n 
-0002486554 00000 n 
-0004832825 00000 n 
+0002486558 00000 n 
+0004832915 00000 n 
 0000057639 00000 n 
 0000057702 00000 n 
-0002486682 00000 n 
-0004832741 00000 n 
+0002486686 00000 n 
+0004832831 00000 n 
 0000057759 00000 n 
 0000057819 00000 n 
-0002490790 00000 n 
-0004832642 00000 n 
+0002490794 00000 n 
+0004832732 00000 n 
 0000057876 00000 n 
 0000057941 00000 n 
-0002492390 00000 n 
-0004832543 00000 n 
+0002492394 00000 n 
+0004832633 00000 n 
 0000057998 00000 n 
 0000058076 00000 n 
-0002495952 00000 n 
-0004832444 00000 n 
+0002495956 00000 n 
+0004832534 00000 n 
 0000058133 00000 n 
 0000058196 00000 n 
-0002498179 00000 n 
-0004832345 00000 n 
+0002498183 00000 n 
+0004832435 00000 n 
 0000058253 00000 n 
 0000058314 00000 n 
-0002498307 00000 n 
-0004832246 00000 n 
+0002498311 00000 n 
+0004832336 00000 n 
 0000058371 00000 n 
 0000058454 00000 n 
-0002501354 00000 n 
-0004832147 00000 n 
+0002501358 00000 n 
+0004832237 00000 n 
 0000058511 00000 n 
 0000058564 00000 n 
-0002508230 00000 n 
-0004832048 00000 n 
+0002508234 00000 n 
+0004832138 00000 n 
 0000058621 00000 n 
 0000058700 00000 n 
-0002510942 00000 n 
-0004831949 00000 n 
+0002510946 00000 n 
+0004832039 00000 n 
 0000058757 00000 n 
 0000058815 00000 n 
-0002511070 00000 n 
-0004831850 00000 n 
+0002511074 00000 n 
+0004831940 00000 n 
 0000058873 00000 n 
 0000058937 00000 n 
-0002514507 00000 n 
-0004831751 00000 n 
+0002514511 00000 n 
+0004831841 00000 n 
 0000058995 00000 n 
 0000059049 00000 n 
-0002517201 00000 n 
-0004831652 00000 n 
+0002517205 00000 n 
+0004831742 00000 n 
 0000059107 00000 n 
 0000059190 00000 n 
-0002519849 00000 n 
-0004831553 00000 n 
+0002519853 00000 n 
+0004831643 00000 n 
 0000059248 00000 n 
 0000059305 00000 n 
-0002577678 00000 n 
-0004831454 00000 n 
+0002577682 00000 n 
+0004831544 00000 n 
 0000059363 00000 n 
 0000059413 00000 n 
-0002580721 00000 n 
-0004831355 00000 n 
+0002580725 00000 n 
+0004831445 00000 n 
 0000059471 00000 n 
 0000059545 00000 n 
-0002580849 00000 n 
-0004831271 00000 n 
+0002580853 00000 n 
+0004831361 00000 n 
 0000059603 00000 n 
 0000059691 00000 n 
-0002583333 00000 n 
-0004831131 00000 n 
+0002583337 00000 n 
+0004831221 00000 n 
 0000059743 00000 n 
 0000059829 00000 n 
-0002586082 00000 n 
-0004831047 00000 n 
+0002586086 00000 n 
+0004831137 00000 n 
 0000059886 00000 n 
 0000059948 00000 n 
-0002588854 00000 n 
-0004830948 00000 n 
+0002588858 00000 n 
+0004831038 00000 n 
 0000060005 00000 n 
 0000060070 00000 n 
-0002588982 00000 n 
-0004830849 00000 n 
+0002588986 00000 n 
+0004830939 00000 n 
 0000060127 00000 n 
 0000060202 00000 n 
-0002590948 00000 n 
-0004830750 00000 n 
+0002590952 00000 n 
+0004830840 00000 n 
 0000060259 00000 n 
 0000060339 00000 n 
-0002593823 00000 n 
-0004830651 00000 n 
+0002593827 00000 n 
+0004830741 00000 n 
 0000060396 00000 n 
 0000060463 00000 n 
-0002608329 00000 n 
-0004830567 00000 n 
+0002608333 00000 n 
+0004830657 00000 n 
 0000060520 00000 n 
 0000060574 00000 n 
-0002611112 00000 n 
-0004830427 00000 n 
+0002611116 00000 n 
+0004830517 00000 n 
 0000060626 00000 n 
 0000060677 00000 n 
-0002611240 00000 n 
-0004830343 00000 n 
+0002611244 00000 n 
+0004830433 00000 n 
 0000060734 00000 n 
 0000060785 00000 n 
-0002611368 00000 n 
-0004830244 00000 n 
+0002611372 00000 n 
+0004830334 00000 n 
 0000060842 00000 n 
 0000060884 00000 n 
-0002613353 00000 n 
-0004830145 00000 n 
+0002613357 00000 n 
+0004830235 00000 n 
 0000060941 00000 n 
 0000060988 00000 n 
-0002613481 00000 n 
-0004830061 00000 n 
+0002613485 00000 n 
+0004830151 00000 n 
 0000061045 00000 n 
 0000061089 00000 n 
-0002615685 00000 n 
-0004829921 00000 n 
+0002615689 00000 n 
+0004830011 00000 n 
 0000061141 00000 n 
 0000061209 00000 n 
-0002619565 00000 n 
-0004829796 00000 n 
+0002619569 00000 n 
+0004829886 00000 n 
 0000061266 00000 n 
 0000061330 00000 n 
-0002623064 00000 n 
-0004829712 00000 n 
+0002623068 00000 n 
+0004829802 00000 n 
 0000061392 00000 n 
 0000061447 00000 n 
-0002623192 00000 n 
-0004829613 00000 n 
+0002623196 00000 n 
+0004829703 00000 n 
 0000061509 00000 n 
 0000061577 00000 n 
-0002623320 00000 n 
-0004829514 00000 n 
+0002623324 00000 n 
+0004829604 00000 n 
 0000061639 00000 n 
 0000061693 00000 n 
-0002627711 00000 n 
-0004829415 00000 n 
+0002627715 00000 n 
+0004829505 00000 n 
 0000061755 00000 n 
 0000061832 00000 n 
-0002633220 00000 n 
-0004829316 00000 n 
+0002633224 00000 n 
+0004829406 00000 n 
 0000061894 00000 n 
 0000061955 00000 n 
-0002636773 00000 n 
-0004829217 00000 n 
+0002636777 00000 n 
+0004829307 00000 n 
 0000062017 00000 n 
 0000062074 00000 n 
-0002640641 00000 n 
-0004829118 00000 n 
+0002640645 00000 n 
+0004829208 00000 n 
 0000062136 00000 n 
 0000062245 00000 n 
-0002640769 00000 n 
-0004829034 00000 n 
+0002640773 00000 n 
+0004829124 00000 n 
 0000062307 00000 n 
 0000062370 00000 n 
-0002644523 00000 n 
-0004828950 00000 n 
+0002644527 00000 n 
+0004829040 00000 n 
 0000062427 00000 n 
 0000062511 00000 n 
-0002655883 00000 n 
-0004828810 00000 n 
+0002655887 00000 n 
+0004828900 00000 n 
 0000062563 00000 n 
 0000062615 00000 n 
-0002658601 00000 n 
-0004828726 00000 n 
+0002658605 00000 n 
+0004828816 00000 n 
 0000062672 00000 n 
 0000062718 00000 n 
-0002658729 00000 n 
-0004828627 00000 n 
+0002658733 00000 n 
+0004828717 00000 n 
 0000062775 00000 n 
 0000062836 00000 n 
-0002661082 00000 n 
-0004828528 00000 n 
+0002661086 00000 n 
+0004828618 00000 n 
 0000062893 00000 n 
 0000062975 00000 n 
-0002661210 00000 n 
-0004828429 00000 n 
+0002661214 00000 n 
+0004828519 00000 n 
 0000063032 00000 n 
 0000063088 00000 n 
-0002663645 00000 n 
-0004828330 00000 n 
+0002663649 00000 n 
+0004828420 00000 n 
 0000063145 00000 n 
 0000063195 00000 n 
-0002666144 00000 n 
-0004828231 00000 n 
+0002666148 00000 n 
+0004828321 00000 n 
 0000063252 00000 n 
 0000063300 00000 n 
-0002666272 00000 n 
-0004828147 00000 n 
+0002666276 00000 n 
+0004828237 00000 n 
 0000063357 00000 n 
 0000063408 00000 n 
-0002666400 00000 n 
-0004828048 00000 n 
+0002666404 00000 n 
+0004828138 00000 n 
 0000063460 00000 n 
 0000063506 00000 n 
-0002671350 00000 n 
-0004827908 00000 n 
+0002671354 00000 n 
+0004827998 00000 n 
 0000063558 00000 n 
 0000063633 00000 n 
-0002671477 00000 n 
-0004827824 00000 n 
+0002671481 00000 n 
+0004827914 00000 n 
 0000063690 00000 n 
 0000063756 00000 n 
-0002673992 00000 n 
-0004827725 00000 n 
+0002673996 00000 n 
+0004827815 00000 n 
 0000063813 00000 n 
 0000063855 00000 n 
-0002674120 00000 n 
-0004827641 00000 n 
+0002674124 00000 n 
+0004827731 00000 n 
 0000063912 00000 n 
 0000063961 00000 n 
-0002676384 00000 n 
-0004827542 00000 n 
+0002676388 00000 n 
+0004827632 00000 n 
 0000064013 00000 n 
 0000064087 00000 n 
-0002687642 00000 n 
-0004827443 00000 n 
+0002687646 00000 n 
+0004827533 00000 n 
 0000064139 00000 n 
 0000064192 00000 n 
-0002687904 00000 n 
-0004827302 00000 n 
+0002687908 00000 n 
+0004827392 00000 n 
 0000064244 00000 n 
 0000064284 00000 n 
-0002688035 00000 n 
-0004827218 00000 n 
+0002688039 00000 n 
+0004827308 00000 n 
 0000064341 00000 n 
 0000064411 00000 n 
-0002690777 00000 n 
-0004827119 00000 n 
+0002690781 00000 n 
+0004827209 00000 n 
 0000064468 00000 n 
 0000064563 00000 n 
-0002690908 00000 n 
-0004827020 00000 n 
+0002690912 00000 n 
+0004827110 00000 n 
 0000064620 00000 n 
 0000064700 00000 n 
-0002691039 00000 n 
-0004826921 00000 n 
+0002691043 00000 n 
+0004827011 00000 n 
 0000064757 00000 n 
 0000064807 00000 n 
-0002691169 00000 n 
-0004826822 00000 n 
+0002691173 00000 n 
+0004826912 00000 n 
 0000064864 00000 n 
 0000064930 00000 n 
-0002694116 00000 n 
-0004826723 00000 n 
+0002694120 00000 n 
+0004826813 00000 n 
 0000064987 00000 n 
 0000065070 00000 n 
-0002694247 00000 n 
-0004826624 00000 n 
+0002694251 00000 n 
+0004826714 00000 n 
 0000065127 00000 n 
 0000065215 00000 n 
-0002694378 00000 n 
-0004826525 00000 n 
+0002694382 00000 n 
+0004826615 00000 n 
 0000065272 00000 n 
 0000065345 00000 n 
-0002696848 00000 n 
-0004826426 00000 n 
+0002696852 00000 n 
+0004826516 00000 n 
 0000065402 00000 n 
 0000065487 00000 n 
-0002696979 00000 n 
-0004826327 00000 n 
+0002696983 00000 n 
+0004826417 00000 n 
 0000065545 00000 n 
 0000065625 00000 n 
-0002697110 00000 n 
-0004826228 00000 n 
+0002697114 00000 n 
+0004826318 00000 n 
 0000065683 00000 n 
 0000065752 00000 n 
-0002697241 00000 n 
-0004826129 00000 n 
+0002697245 00000 n 
+0004826219 00000 n 
 0000065810 00000 n 
 0000065897 00000 n 
-0002697372 00000 n 
-0004826030 00000 n 
+0002697376 00000 n 
+0004826120 00000 n 
 0000065955 00000 n 
 0000066029 00000 n 
-0002699811 00000 n 
-0004825931 00000 n 
+0002699815 00000 n 
+0004826021 00000 n 
 0000066087 00000 n 
 0000066131 00000 n 
-0002699942 00000 n 
-0004825832 00000 n 
+0002699946 00000 n 
+0004825922 00000 n 
 0000066189 00000 n 
 0000066278 00000 n 
-0002704213 00000 n 
-0004825733 00000 n 
+0002704217 00000 n 
+0004825823 00000 n 
 0000066336 00000 n 
 0000066424 00000 n 
-0002704344 00000 n 
-0004825634 00000 n 
+0002704348 00000 n 
+0004825724 00000 n 
 0000066482 00000 n 
 0000066565 00000 n 
-0002707571 00000 n 
-0004825535 00000 n 
+0002707575 00000 n 
+0004825625 00000 n 
 0000066623 00000 n 
 0000066713 00000 n 
-0002707702 00000 n 
-0004825436 00000 n 
+0002707706 00000 n 
+0004825526 00000 n 
 0000066771 00000 n 
 0000066848 00000 n 
-0002707833 00000 n 
-0004825352 00000 n 
+0002707837 00000 n 
+0004825442 00000 n 
 0000066906 00000 n 
 0000066996 00000 n 
-0002707964 00000 n 
-0004825268 00000 n 
+0002707968 00000 n 
+0004825358 00000 n 
 0000067048 00000 n 
 0000067114 00000 n 
-0002834433 00000 n 
-0004825129 00000 n 
+0002834437 00000 n 
+0004825219 00000 n 
 0000067163 00000 n 
 0000067216 00000 n 
-0002834563 00000 n 
-0004825045 00000 n 
+0002834567 00000 n 
+0004825135 00000 n 
 0000067267 00000 n 
 0000067314 00000 n 
-0002834694 00000 n 
-0004824946 00000 n 
+0002834698 00000 n 
+0004825036 00000 n 
 0000067365 00000 n 
 0000067401 00000 n 
-0002839138 00000 n 
-0004824806 00000 n 
+0002839142 00000 n 
+0004824896 00000 n 
 0000067452 00000 n 
 0000067494 00000 n 
-0002839269 00000 n 
-0004824722 00000 n 
+0002839273 00000 n 
+0004824812 00000 n 
 0000067550 00000 n 
 0000067583 00000 n 
-0002841480 00000 n 
-0004824623 00000 n 
+0002841484 00000 n 
+0004824713 00000 n 
 0000067639 00000 n 
 0000067683 00000 n 
-0002846075 00000 n 
-0004824483 00000 n 
+0002846079 00000 n 
+0004824573 00000 n 
 0000067739 00000 n 
 0000067780 00000 n 
-0002846337 00000 n 
-0004824414 00000 n 
+0002846341 00000 n 
+0004824504 00000 n 
 0000067841 00000 n 
 0000067896 00000 n 
-0002849053 00000 n 
-0004824315 00000 n 
+0002849057 00000 n 
+0004824405 00000 n 
 0000067952 00000 n 
 0000067993 00000 n 
-0002849184 00000 n 
-0004824216 00000 n 
+0002849188 00000 n 
+0004824306 00000 n 
 0000068049 00000 n 
 0000068084 00000 n 
-0002854618 00000 n 
-0004824117 00000 n 
+0002854622 00000 n 
+0004824207 00000 n 
 0000068140 00000 n 
 0000068176 00000 n 
-0002854749 00000 n 
-0004823992 00000 n 
+0002854753 00000 n 
+0004824082 00000 n 
 0000068232 00000 n 
 0000068274 00000 n 
-0002859180 00000 n 
-0004823923 00000 n 
+0002859184 00000 n 
+0004824013 00000 n 
 0000068335 00000 n 
 0000068382 00000 n 
-0002871583 00000 n 
-0004823798 00000 n 
+0002871587 00000 n 
+0004823888 00000 n 
 0000068433 00000 n 
 0000068490 00000 n 
-0002871714 00000 n 
-0004823714 00000 n 
+0002871718 00000 n 
+0004823804 00000 n 
 0000068546 00000 n 
 0000068584 00000 n 
-0002871844 00000 n 
-0004823615 00000 n 
+0002871848 00000 n 
+0004823705 00000 n 
 0000068640 00000 n 
 0000068673 00000 n 
-0002873524 00000 n 
-0004823531 00000 n 
+0002873528 00000 n 
+0004823621 00000 n 
 0000068729 00000 n 
 0000068769 00000 n 
-0002878137 00000 n 
-0004823392 00000 n 
+0002878141 00000 n 
+0004823482 00000 n 
 0000068818 00000 n 
 0000068881 00000 n 
-0002878267 00000 n 
-0004823308 00000 n 
+0002878271 00000 n 
+0004823398 00000 n 
 0000068932 00000 n 
 0000068979 00000 n 
-0002890489 00000 n 
-0004823209 00000 n 
+0002890493 00000 n 
+0004823299 00000 n 
 0000069030 00000 n 
 0000069068 00000 n 
-0002890620 00000 n 
-0004823069 00000 n 
+0002890624 00000 n 
+0004823159 00000 n 
 0000069119 00000 n 
 0000069166 00000 n 
-0002893238 00000 n 
-0004822985 00000 n 
+0002893242 00000 n 
+0004823075 00000 n 
 0000069222 00000 n 
 0000069261 00000 n 
-0002893369 00000 n 
-0004822901 00000 n 
+0002893373 00000 n 
+0004822991 00000 n 
 0000069317 00000 n 
 0000069369 00000 n 
-0002895986 00000 n 
-0004822761 00000 n 
+0002895990 00000 n 
+0004822851 00000 n 
 0000069420 00000 n 
 0000069463 00000 n 
-0002896117 00000 n 
-0004822677 00000 n 
+0002896121 00000 n 
+0004822767 00000 n 
 0000069519 00000 n 
 0000069579 00000 n 
-0002898585 00000 n 
-0004822578 00000 n 
+0002898589 00000 n 
+0004822668 00000 n 
 0000069635 00000 n 
 0000069698 00000 n 
-0002898716 00000 n 
-0004822479 00000 n 
+0002898720 00000 n 
+0004822569 00000 n 
 0000069754 00000 n 
 0000069801 00000 n 
-0002901588 00000 n 
-0004822380 00000 n 
+0002901592 00000 n 
+0004822470 00000 n 
 0000069857 00000 n 
 0000069917 00000 n 
-0002904535 00000 n 
-0004822281 00000 n 
+0002904539 00000 n 
+0004822371 00000 n 
 0000069973 00000 n 
 0000070029 00000 n 
-0002904665 00000 n 
-0004822197 00000 n 
+0002904669 00000 n 
+0004822287 00000 n 
 0000070085 00000 n 
 0000070127 00000 n 
-0002907491 00000 n 
-0004822057 00000 n 
+0002907495 00000 n 
+0004822147 00000 n 
 0000070178 00000 n 
 0000070234 00000 n 
-0002907622 00000 n 
-0004821973 00000 n 
+0002907626 00000 n 
+0004822063 00000 n 
 0000070290 00000 n 
 0000070330 00000 n 
-0002907753 00000 n 
-0004821874 00000 n 
+0002907757 00000 n 
+0004821964 00000 n 
 0000070386 00000 n 
 0000070426 00000 n 
-0002910729 00000 n 
-0004821749 00000 n 
+0002910733 00000 n 
+0004821839 00000 n 
 0000070482 00000 n 
 0000070528 00000 n 
-0002910860 00000 n 
-0004821665 00000 n 
+0002910864 00000 n 
+0004821755 00000 n 
 0000070589 00000 n 
 0000070689 00000 n 
-0002916281 00000 n 
-0004821566 00000 n 
+0002916285 00000 n 
+0004821656 00000 n 
 0000070750 00000 n 
 0000070798 00000 n 
-0002920340 00000 n 
-0004821467 00000 n 
+0002920344 00000 n 
+0004821557 00000 n 
 0000070859 00000 n 
 0000070907 00000 n 
-0002921520 00000 n 
-0004821368 00000 n 
+0002921524 00000 n 
+0004821458 00000 n 
 0000070968 00000 n 
 0000071037 00000 n 
-0002923446 00000 n 
-0004821269 00000 n 
+0002923450 00000 n 
+0004821359 00000 n 
 0000071098 00000 n 
 0000071168 00000 n 
-0002927145 00000 n 
-0004821170 00000 n 
+0002927149 00000 n 
+0004821260 00000 n 
 0000071229 00000 n 
 0000071289 00000 n 
-0002933594 00000 n 
-0004821086 00000 n 
+0002933598 00000 n 
+0004821176 00000 n 
 0000071350 00000 n 
 0000071405 00000 n 
-0002940333 00000 n 
-0004820987 00000 n 
+0002940337 00000 n 
+0004821077 00000 n 
 0000071456 00000 n 
 0000071492 00000 n 
-0002942816 00000 n 
-0004820862 00000 n 
+0002942820 00000 n 
+0004820952 00000 n 
 0000071543 00000 n 
 0000071582 00000 n 
-0002942947 00000 n 
-0004820778 00000 n 
+0002942951 00000 n 
+0004820868 00000 n 
 0000071638 00000 n 
 0000071686 00000 n 
-0002943078 00000 n 
-0004820694 00000 n 
+0002943082 00000 n 
+0004820784 00000 n 
 0000071742 00000 n 
 0000071811 00000 n 
-0002946204 00000 n 
-0004820555 00000 n 
+0002946208 00000 n 
+0004820645 00000 n 
 0000071860 00000 n 
 0000071919 00000 n 
-0002946334 00000 n 
-0004820471 00000 n 
+0002946338 00000 n 
+0004820561 00000 n 
 0000071970 00000 n 
 0000072017 00000 n 
-0002946464 00000 n 
-0004820372 00000 n 
+0002946468 00000 n 
+0004820462 00000 n 
 0000072068 00000 n 
 0000072122 00000 n 
-0002949312 00000 n 
-0004820232 00000 n 
+0002949316 00000 n 
+0004820322 00000 n 
 0000072173 00000 n 
 0000072224 00000 n 
-0002949443 00000 n 
-0004820148 00000 n 
+0002949447 00000 n 
+0004820238 00000 n 
 0000072280 00000 n 
 0000072344 00000 n 
-0002955264 00000 n 
-0004820064 00000 n 
+0002955268 00000 n 
+0004820154 00000 n 
 0000072400 00000 n 
 0000072459 00000 n 
-0002958626 00000 n 
-0004819939 00000 n 
+0002958630 00000 n 
+0004820029 00000 n 
 0000072510 00000 n 
 0000072562 00000 n 
-0002962203 00000 n 
-0004819855 00000 n 
+0002962207 00000 n 
+0004819945 00000 n 
 0000072618 00000 n 
 0000072687 00000 n 
-0002964520 00000 n 
-0004819771 00000 n 
+0002964524 00000 n 
+0004819861 00000 n 
 0000072743 00000 n 
 0000072797 00000 n 
-0002968043 00000 n 
-0004819632 00000 n 
+0002968047 00000 n 
+0004819722 00000 n 
 0000072846 00000 n 
 0000072905 00000 n 
-0002968173 00000 n 
-0004819548 00000 n 
+0002968177 00000 n 
+0004819638 00000 n 
 0000072956 00000 n 
 0000073003 00000 n 
-0002971591 00000 n 
-0004819408 00000 n 
+0002971595 00000 n 
+0004819498 00000 n 
 0000073054 00000 n 
 0000073117 00000 n 
-0002974479 00000 n 
-0004819324 00000 n 
+0002974483 00000 n 
+0004819414 00000 n 
 0000073173 00000 n 
 0000073223 00000 n 
-0002974610 00000 n 
-0004819184 00000 n 
+0002974614 00000 n 
+0004819274 00000 n 
 0000073279 00000 n 
 0000073337 00000 n 
-0002977617 00000 n 
-0004819115 00000 n 
+0002977621 00000 n 
+0004819205 00000 n 
 0000073398 00000 n 
 0000073445 00000 n 
-0002977748 00000 n 
-0004818990 00000 n 
+0002977752 00000 n 
+0004819080 00000 n 
 0000073501 00000 n 
 0000073569 00000 n 
-0002980550 00000 n 
-0004818906 00000 n 
+0002980554 00000 n 
+0004818996 00000 n 
 0000073630 00000 n 
 0000073702 00000 n 
-0002983439 00000 n 
-0004818822 00000 n 
+0002983443 00000 n 
+0004818912 00000 n 
 0000073763 00000 n 
 0000073823 00000 n 
-0002986587 00000 n 
-0004818723 00000 n 
+0002986591 00000 n 
+0004818813 00000 n 
 0000073874 00000 n 
 0000073930 00000 n 
-0002989062 00000 n 
-0004818583 00000 n 
+0002989066 00000 n 
+0004818673 00000 n 
 0000073981 00000 n 
 0000074023 00000 n 
-0002989193 00000 n 
-0004818499 00000 n 
+0002989197 00000 n 
+0004818589 00000 n 
 0000074079 00000 n 
 0000074128 00000 n 
-0002991600 00000 n 
-0004818400 00000 n 
+0002991604 00000 n 
+0004818490 00000 n 
 0000074184 00000 n 
 0000074228 00000 n 
-0002991731 00000 n 
-0004818316 00000 n 
+0002991735 00000 n 
+0004818406 00000 n 
 0000074284 00000 n 
 0000074321 00000 n 
-0002991861 00000 n 
-0004818217 00000 n 
+0002991865 00000 n 
+0004818307 00000 n 
 0000074372 00000 n 
 0000074442 00000 n 
-0002994790 00000 n 
-0004818092 00000 n 
+0002994794 00000 n 
+0004818182 00000 n 
 0000074493 00000 n 
 0000074532 00000 n 
-0002994921 00000 n 
-0004818023 00000 n 
+0002994925 00000 n 
+0004818113 00000 n 
 0000074588 00000 n 
 0000074636 00000 n 
-0002996641 00000 n 
-0004817884 00000 n 
+0002996645 00000 n 
+0004817974 00000 n 
 0000074685 00000 n 
 0000074743 00000 n 
-0002996771 00000 n 
-0004817800 00000 n 
+0002996775 00000 n 
+0004817890 00000 n 
 0000074794 00000 n 
 0000074841 00000 n 
-0002996902 00000 n 
-0004817660 00000 n 
+0002996906 00000 n 
+0004817750 00000 n 
 0000074892 00000 n 
 0000074934 00000 n 
-0002999706 00000 n 
-0004817535 00000 n 
+0002999710 00000 n 
+0004817625 00000 n 
 0000074990 00000 n 
 0000075058 00000 n 
-0002999837 00000 n 
-0004817451 00000 n 
+0002999841 00000 n 
+0004817541 00000 n 
 0000075119 00000 n 
 0000075171 00000 n 
-0003002937 00000 n 
-0004817352 00000 n 
+0003002941 00000 n 
+0004817442 00000 n 
 0000075232 00000 n 
 0000075289 00000 n 
-0003003200 00000 n 
-0004817253 00000 n 
+0003003204 00000 n 
+0004817343 00000 n 
 0000075350 00000 n 
 0000075434 00000 n 
-0003005719 00000 n 
-0004817169 00000 n 
+0003005723 00000 n 
+0004817259 00000 n 
 0000075495 00000 n 
 0000075558 00000 n 
-0003008477 00000 n 
-0004817029 00000 n 
+0003008481 00000 n 
+0004817119 00000 n 
 0000075614 00000 n 
 0000075690 00000 n 
-0003008608 00000 n 
-0004816945 00000 n 
+0003008612 00000 n 
+0004817035 00000 n 
 0000075751 00000 n 
 0000075808 00000 n 
-0003017146 00000 n 
-0004816846 00000 n 
+0003017150 00000 n 
+0004816936 00000 n 
 0000075869 00000 n 
 0000075922 00000 n 
-0003017276 00000 n 
-0004816762 00000 n 
+0003017280 00000 n 
+0004816852 00000 n 
 0000075983 00000 n 
 0000076041 00000 n 
-0003025862 00000 n 
-0004816663 00000 n 
+0003025866 00000 n 
+0004816753 00000 n 
 0000076097 00000 n 
 0000076158 00000 n 
-0003025993 00000 n 
-0004816564 00000 n 
+0003025997 00000 n 
+0004816654 00000 n 
 0000076214 00000 n 
 0000076309 00000 n 
-0003026123 00000 n 
-0004816439 00000 n 
+0003026127 00000 n 
+0004816529 00000 n 
 0000076365 00000 n 
 0000076448 00000 n 
-0003029016 00000 n 
-0004816355 00000 n 
+0003029020 00000 n 
+0004816445 00000 n 
 0000076509 00000 n 
 0000076575 00000 n 
-0003029609 00000 n 
-0004816256 00000 n 
+0003029613 00000 n 
+0004816346 00000 n 
 0000076636 00000 n 
 0000076680 00000 n 
-0003032056 00000 n 
-0004816157 00000 n 
+0003032060 00000 n 
+0004816247 00000 n 
 0000076741 00000 n 
 0000076783 00000 n 
-0003032187 00000 n 
-0004816073 00000 n 
+0003032191 00000 n 
+0004816163 00000 n 
 0000076844 00000 n 
 0000076881 00000 n 
-0003032318 00000 n 
-0004815974 00000 n 
+0003032322 00000 n 
+0004816064 00000 n 
 0000076932 00000 n 
 0000076976 00000 n 
-0003035014 00000 n 
-0004815875 00000 n 
+0003035018 00000 n 
+0004815965 00000 n 
 0000077027 00000 n 
 0000077089 00000 n 
-0003037761 00000 n 
-0004815735 00000 n 
+0003037765 00000 n 
+0004815825 00000 n 
 0000077140 00000 n 
 0000077199 00000 n 
-0003037892 00000 n 
-0004815610 00000 n 
+0003037896 00000 n 
+0004815700 00000 n 
 0000077255 00000 n 
 0000077299 00000 n 
-0003038023 00000 n 
-0004815541 00000 n 
+0003038027 00000 n 
+0004815631 00000 n 
 0000077360 00000 n 
 0000077430 00000 n 
-0003040726 00000 n 
-0004815442 00000 n 
+0003040730 00000 n 
+0004815532 00000 n 
 0000077486 00000 n 
 0000077540 00000 n 
-0003048750 00000 n 
-0004815358 00000 n 
+0003048754 00000 n 
+0004815448 00000 n 
 0000077596 00000 n 
 0000077642 00000 n 
-0003056340 00000 n 
-0004815233 00000 n 
+0003056344 00000 n 
+0004815323 00000 n 
 0000077693 00000 n 
 0000077732 00000 n 
-0003056471 00000 n 
-0004815149 00000 n 
+0003056475 00000 n 
+0004815239 00000 n 
 0000077788 00000 n 
 0000077870 00000 n 
-0003056602 00000 n 
-0004815050 00000 n 
+0003056606 00000 n 
+0004815140 00000 n 
 0000077926 00000 n 
 0000077981 00000 n 
-0003061584 00000 n 
-0004814951 00000 n 
+0003061588 00000 n 
+0004815041 00000 n 
 0000078037 00000 n 
 0000078093 00000 n 
-0003064911 00000 n 
-0004814867 00000 n 
+0003064915 00000 n 
+0004814957 00000 n 
 0000078149 00000 n 
 0000078233 00000 n 
-0003067584 00000 n 
-0004814728 00000 n 
+0003067588 00000 n 
+0004814818 00000 n 
 0000078282 00000 n 
 0000078350 00000 n 
-0003067714 00000 n 
-0004814644 00000 n 
+0003067718 00000 n 
+0004814734 00000 n 
 0000078401 00000 n 
 0000078448 00000 n 
-0003073006 00000 n 
-0004814504 00000 n 
+0003073010 00000 n 
+0004814594 00000 n 
 0000078499 00000 n 
 0000078545 00000 n 
-0003073137 00000 n 
-0004814379 00000 n 
+0003073141 00000 n 
+0004814469 00000 n 
 0000078601 00000 n 
 0000078653 00000 n 
-0003075892 00000 n 
-0004814310 00000 n 
+0003075896 00000 n 
+0004814400 00000 n 
 0000078714 00000 n 
 0000078773 00000 n 
-0003088717 00000 n 
-0004814170 00000 n 
+0003088721 00000 n 
+0004814260 00000 n 
 0000078829 00000 n 
 0000078886 00000 n 
-0003090211 00000 n 
-0004814086 00000 n 
+0003090215 00000 n 
+0004814176 00000 n 
 0000078947 00000 n 
 0000079003 00000 n 
-0003090342 00000 n 
-0004814002 00000 n 
+0003090346 00000 n 
+0004814092 00000 n 
 0000079064 00000 n 
 0000079125 00000 n 
-0003094950 00000 n 
-0004813903 00000 n 
+0003094954 00000 n 
+0004813993 00000 n 
 0000079181 00000 n 
 0000079235 00000 n 
-0003097533 00000 n 
-0004813804 00000 n 
+0003097537 00000 n 
+0004813894 00000 n 
 0000079291 00000 n 
 0000079363 00000 n 
-0003100406 00000 n 
-0004813679 00000 n 
+0003100410 00000 n 
+0004813769 00000 n 
 0000079419 00000 n 
 0000079495 00000 n 
-0003100536 00000 n 
-0004813595 00000 n 
+0003100540 00000 n 
+0004813685 00000 n 
 0000079556 00000 n 
 0000079624 00000 n 
-0003103629 00000 n 
-0004813496 00000 n 
+0003103633 00000 n 
+0004813586 00000 n 
 0000079685 00000 n 
 0000079747 00000 n 
-0003105299 00000 n 
-0004813397 00000 n 
+0003105303 00000 n 
+0004813487 00000 n 
 0000079808 00000 n 
 0000079867 00000 n 
-0003105430 00000 n 
-0004813313 00000 n 
+0003105434 00000 n 
+0004813403 00000 n 
 0000079928 00000 n 
 0000080001 00000 n 
-0003107297 00000 n 
-0004813188 00000 n 
+0003107301 00000 n 
+0004813278 00000 n 
 0000080052 00000 n 
 0000080091 00000 n 
-0003107428 00000 n 
-0004813104 00000 n 
+0003107432 00000 n 
+0004813194 00000 n 
 0000080147 00000 n 
 0000080197 00000 n 
-0003109182 00000 n 
-0004813020 00000 n 
+0003109186 00000 n 
+0004813110 00000 n 
 0000080253 00000 n 
 0000080322 00000 n 
-0003112033 00000 n 
-0004812881 00000 n 
+0003112037 00000 n 
+0004812971 00000 n 
 0000080371 00000 n 
 0000080445 00000 n 
-0003112163 00000 n 
-0004812797 00000 n 
+0003112167 00000 n 
+0004812887 00000 n 
 0000080496 00000 n 
 0000080543 00000 n 
-0003114542 00000 n 
-0004812698 00000 n 
+0003114546 00000 n 
+0004812788 00000 n 
 0000080594 00000 n 
 0000080642 00000 n 
-0003114673 00000 n 
-0004812558 00000 n 
+0003114677 00000 n 
+0004812648 00000 n 
 0000080693 00000 n 
 0000080761 00000 n 
-0003117152 00000 n 
-0004812474 00000 n 
+0003117156 00000 n 
+0004812564 00000 n 
 0000080817 00000 n 
 0000080855 00000 n 
-0003119481 00000 n 
-0004812375 00000 n 
+0003119485 00000 n 
+0004812465 00000 n 
 0000080911 00000 n 
 0000080955 00000 n 
-0003119612 00000 n 
-0004812276 00000 n 
+0003119616 00000 n 
+0004812366 00000 n 
 0000081011 00000 n 
 0000081053 00000 n 
-0003121633 00000 n 
-0004812192 00000 n 
+0003121637 00000 n 
+0004812282 00000 n 
 0000081109 00000 n 
 0000081155 00000 n 
-0003125075 00000 n 
-0004812052 00000 n 
+0003125079 00000 n 
+0004812142 00000 n 
 0000081206 00000 n 
 0000081284 00000 n 
-0003130495 00000 n 
-0004811968 00000 n 
+0003130499 00000 n 
+0004812058 00000 n 
 0000081340 00000 n 
 0000081390 00000 n 
-0003130626 00000 n 
-0004811869 00000 n 
+0003130630 00000 n 
+0004811959 00000 n 
 0000081446 00000 n 
 0000081490 00000 n 
-0003134446 00000 n 
-0004811770 00000 n 
+0003134450 00000 n 
+0004811860 00000 n 
 0000081546 00000 n 
 0000081584 00000 n 
-0003134577 00000 n 
-0004811671 00000 n 
+0003134581 00000 n 
+0004811761 00000 n 
 0000081640 00000 n 
 0000081678 00000 n 
-0003137539 00000 n 
-0004811587 00000 n 
+0003137543 00000 n 
+0004811677 00000 n 
 0000081734 00000 n 
 0000081773 00000 n 
-0003138000 00000 n 
-0004811462 00000 n 
+0003138004 00000 n 
+0004811552 00000 n 
 0000081824 00000 n 
 0000081863 00000 n 
-0003140057 00000 n 
-0004811378 00000 n 
+0003140061 00000 n 
+0004811468 00000 n 
 0000081919 00000 n 
 0000081973 00000 n 
-0003140188 00000 n 
-0004811279 00000 n 
+0003140192 00000 n 
+0004811369 00000 n 
 0000082029 00000 n 
 0000082086 00000 n 
-0003140319 00000 n 
-0004811195 00000 n 
+0003140323 00000 n 
+0004811285 00000 n 
 0000082142 00000 n 
 0000082202 00000 n 
-0003144408 00000 n 
-0004811056 00000 n 
+0003144412 00000 n 
+0004811146 00000 n 
 0000082251 00000 n 
 0000082299 00000 n 
-0003144538 00000 n 
-0004810972 00000 n 
+0003144542 00000 n 
+0004811062 00000 n 
 0000082350 00000 n 
 0000082397 00000 n 
-0003144669 00000 n 
-0004810873 00000 n 
+0003144673 00000 n 
+0004810963 00000 n 
 0000082448 00000 n 
 0000082504 00000 n 
-0003147551 00000 n 
-0004810774 00000 n 
+0003147555 00000 n 
+0004810864 00000 n 
 0000082555 00000 n 
 0000082599 00000 n 
-0003150412 00000 n 
-0004810675 00000 n 
+0003150416 00000 n 
+0004810765 00000 n 
 0000082650 00000 n 
 0000082701 00000 n 
-0003150543 00000 n 
-0004810535 00000 n 
+0003150547 00000 n 
+0004810625 00000 n 
 0000082752 00000 n 
 0000082795 00000 n 
-0003153563 00000 n 
-0004810451 00000 n 
+0003153567 00000 n 
+0004810541 00000 n 
 0000082851 00000 n 
 0000082902 00000 n 
-0003162421 00000 n 
-0004810352 00000 n 
+0003162425 00000 n 
+0004810442 00000 n 
 0000082958 00000 n 
 0000083012 00000 n 
-0003165829 00000 n 
-0004810268 00000 n 
+0003165833 00000 n 
+0004810358 00000 n 
 0000083068 00000 n 
 0000083127 00000 n 
-0003168310 00000 n 
-0004810143 00000 n 
+0003168314 00000 n 
+0004810233 00000 n 
 0000083178 00000 n 
 0000083217 00000 n 
-0003168440 00000 n 
-0004810074 00000 n 
+0003168444 00000 n 
+0004810164 00000 n 
 0000083273 00000 n 
 0000083324 00000 n 
-0003170788 00000 n 
-0004809935 00000 n 
+0003170792 00000 n 
+0004810025 00000 n 
 0000083373 00000 n 
 0000083422 00000 n 
-0003170918 00000 n 
-0004809851 00000 n 
+0003170922 00000 n 
+0004809941 00000 n 
 0000083473 00000 n 
 0000083520 00000 n 
-0003171049 00000 n 
-0004809726 00000 n 
+0003171053 00000 n 
+0004809816 00000 n 
 0000083571 00000 n 
 0000083627 00000 n 
-0003174118 00000 n 
-0004809642 00000 n 
+0003174122 00000 n 
+0004809732 00000 n 
 0000083683 00000 n 
 0000083719 00000 n 
-0003174249 00000 n 
-0004809543 00000 n 
+0003174253 00000 n 
+0004809633 00000 n 
 0000083775 00000 n 
 0000083808 00000 n 
-0003176956 00000 n 
-0004809444 00000 n 
+0003176960 00000 n 
+0004809534 00000 n 
 0000083864 00000 n 
 0000083898 00000 n 
-0003177087 00000 n 
-0004809360 00000 n 
+0003177091 00000 n 
+0004809450 00000 n 
 0000083954 00000 n 
 0000084019 00000 n 
-0003179640 00000 n 
-0004809221 00000 n 
+0003179644 00000 n 
+0004809311 00000 n 
 0000084068 00000 n 
 0000084117 00000 n 
-0003179770 00000 n 
-0004809137 00000 n 
+0003179774 00000 n 
+0004809227 00000 n 
 0000084168 00000 n 
 0000084215 00000 n 
-0003181704 00000 n 
-0004809012 00000 n 
+0003181708 00000 n 
+0004809102 00000 n 
 0000084266 00000 n 
 0000084312 00000 n 
-0003181835 00000 n 
-0004808928 00000 n 
+0003181839 00000 n 
+0004809018 00000 n 
 0000084368 00000 n 
 0000084413 00000 n 
-0003181965 00000 n 
-0004808788 00000 n 
+0003181969 00000 n 
+0004808878 00000 n 
 0000084469 00000 n 
 0000084517 00000 n 
-0003184291 00000 n 
-0004808704 00000 n 
+0003184295 00000 n 
+0004808794 00000 n 
 0000084578 00000 n 
 0000084631 00000 n 
-0003184422 00000 n 
-0004808605 00000 n 
+0003184426 00000 n 
+0004808695 00000 n 
 0000084692 00000 n 
 0000084749 00000 n 
-0003186567 00000 n 
-0004808506 00000 n 
+0003186571 00000 n 
+0004808596 00000 n 
 0000084810 00000 n 
 0000084877 00000 n 
-0003186696 00000 n 
-0004808407 00000 n 
+0003186700 00000 n 
+0004808497 00000 n 
 0000084938 00000 n 
 0000085019 00000 n 
-0003189096 00000 n 
-0004808308 00000 n 
+0003189100 00000 n 
+0004808398 00000 n 
 0000085080 00000 n 
 0000085136 00000 n 
-0003189227 00000 n 
-0004808209 00000 n 
+0003189231 00000 n 
+0004808299 00000 n 
 0000085197 00000 n 
 0000085261 00000 n 
-0003189358 00000 n 
-0004808125 00000 n 
+0003189362 00000 n 
+0004808215 00000 n 
 0000085322 00000 n 
 0000085383 00000 n 
-0003192695 00000 n 
-0004808026 00000 n 
+0003192699 00000 n 
+0004808116 00000 n 
 0000085439 00000 n 
 0000085484 00000 n 
-0003192826 00000 n 
-0004807927 00000 n 
+0003192830 00000 n 
+0004808017 00000 n 
 0000085540 00000 n 
 0000085601 00000 n 
-0003194407 00000 n 
-0004807828 00000 n 
+0003194411 00000 n 
+0004807918 00000 n 
 0000085657 00000 n 
 0000085715 00000 n 
-0003194538 00000 n 
-0004807744 00000 n 
+0003194542 00000 n 
+0004807834 00000 n 
 0000085771 00000 n 
 0000085810 00000 n 
-0003197367 00000 n 
-0004807646 00000 n 
+0003197371 00000 n 
+0004807736 00000 n 
 0000085859 00000 n 
 0000085917 00000 n 
-0003202087 00000 n 
-0004807522 00000 n 
+0003202091 00000 n 
+0004807612 00000 n 
 0000085966 00000 n 
 0000086031 00000 n 
-0003205006 00000 n 
-0004807412 00000 n 
+0003205010 00000 n 
+0004807502 00000 n 
 0000086082 00000 n 
 0000086122 00000 n 
-0003205137 00000 n 
-0004807328 00000 n 
+0003205141 00000 n 
+0004807418 00000 n 
 0000086178 00000 n 
 0000086229 00000 n 
-0003208407 00000 n 
-0004807229 00000 n 
+0003208411 00000 n 
+0004807319 00000 n 
 0000086285 00000 n 
 0000086350 00000 n 
-0003219230 00000 n 
-0004807145 00000 n 
+0003219234 00000 n 
+0004807235 00000 n 
 0000086406 00000 n 
 0000086465 00000 n 
-0003230941 00000 n 
-0004807005 00000 n 
+0003230945 00000 n 
+0004807095 00000 n 
 0000086510 00000 n 
 0000086561 00000 n 
-0003233047 00000 n 
-0004806880 00000 n 
+0003233051 00000 n 
+0004806970 00000 n 
 0000086610 00000 n 
 0000086670 00000 n 
-0003233177 00000 n 
-0004806755 00000 n 
+0003233181 00000 n 
+0004806845 00000 n 
 0000086721 00000 n 
 0000086770 00000 n 
-0003235811 00000 n 
-0004806671 00000 n 
+0003235815 00000 n 
+0004806761 00000 n 
 0000086826 00000 n 
 0000086895 00000 n 
-0003235942 00000 n 
-0004806572 00000 n 
+0003235946 00000 n 
+0004806662 00000 n 
 0000086951 00000 n 
 0000087019 00000 n 
-0003236070 00000 n 
-0004806488 00000 n 
+0003236074 00000 n 
+0004806578 00000 n 
 0000087075 00000 n 
 0000087124 00000 n 
-0003236201 00000 n 
-0004806363 00000 n 
+0003236205 00000 n 
+0004806453 00000 n 
 0000087175 00000 n 
 0000087233 00000 n 
-0003236332 00000 n 
-0004806279 00000 n 
+0003236336 00000 n 
+0004806369 00000 n 
 0000087289 00000 n 
 0000087351 00000 n 
-0003236462 00000 n 
-0004806139 00000 n 
+0003236466 00000 n 
+0004806229 00000 n 
 0000087407 00000 n 
 0000087462 00000 n 
-0003241453 00000 n 
-0004806055 00000 n 
+0003241457 00000 n 
+0004806145 00000 n 
 0000087523 00000 n 
 0000087584 00000 n 
-0003241584 00000 n 
-0004805956 00000 n 
+0003241588 00000 n 
+0004806046 00000 n 
 0000087645 00000 n 
 0000087693 00000 n 
-0003242969 00000 n 
-0004805857 00000 n 
+0003242973 00000 n 
+0004805947 00000 n 
 0000087754 00000 n 
 0000087798 00000 n 
-0003248541 00000 n 
-0004805773 00000 n 
+0003248545 00000 n 
+0004805863 00000 n 
 0000087859 00000 n 
 0000087932 00000 n 
-0003251542 00000 n 
-0004805648 00000 n 
+0003251546 00000 n 
+0004805738 00000 n 
 0000087988 00000 n 
 0000088033 00000 n 
-0003251673 00000 n 
-0004805564 00000 n 
+0003251677 00000 n 
+0004805654 00000 n 
 0000088094 00000 n 
 0000088138 00000 n 
-0003251804 00000 n 
-0004805465 00000 n 
+0003251808 00000 n 
+0004805555 00000 n 
 0000088199 00000 n 
 0000088248 00000 n 
-0003255112 00000 n 
-0004805366 00000 n 
+0003255116 00000 n 
+0004805456 00000 n 
 0000088309 00000 n 
 0000088373 00000 n 
-0003257846 00000 n 
-0004805282 00000 n 
+0003257850 00000 n 
+0004805372 00000 n 
 0000088434 00000 n 
 0000088468 00000 n 
-0003265260 00000 n 
-0004805142 00000 n 
+0003265264 00000 n 
+0004805232 00000 n 
 0000088517 00000 n 
 0000088586 00000 n 
-0003265389 00000 n 
-0004805017 00000 n 
+0003265393 00000 n 
+0004805107 00000 n 
 0000088637 00000 n 
 0000088691 00000 n 
-0003265520 00000 n 
-0004804892 00000 n 
+0003265524 00000 n 
+0004804982 00000 n 
 0000088747 00000 n 
 0000088785 00000 n 
-0003270036 00000 n 
-0004804808 00000 n 
+0003270040 00000 n 
+0004804898 00000 n 
 0000088846 00000 n 
 0000088889 00000 n 
-0003272644 00000 n 
-0004804709 00000 n 
+0003272648 00000 n 
+0004804799 00000 n 
 0000088950 00000 n 
 0000089013 00000 n 
-0003272775 00000 n 
-0004804610 00000 n 
+0003272779 00000 n 
+0004804700 00000 n 
 0000089074 00000 n 
 0000089117 00000 n 
-0003275339 00000 n 
-0004804511 00000 n 
+0003275343 00000 n 
+0004804601 00000 n 
 0000089178 00000 n 
 0000089234 00000 n 
-0003275470 00000 n 
-0004804427 00000 n 
+0003275474 00000 n 
+0004804517 00000 n 
 0000089295 00000 n 
 0000089348 00000 n 
-0003275601 00000 n 
-0004804343 00000 n 
+0003275605 00000 n 
+0004804433 00000 n 
 0000089404 00000 n 
 0000089458 00000 n 
-0003278088 00000 n 
-0004804218 00000 n 
+0003278092 00000 n 
+0004804308 00000 n 
 0000089509 00000 n 
 0000089552 00000 n 
-0003280578 00000 n 
-0004804134 00000 n 
+0003280582 00000 n 
+0004804224 00000 n 
 0000089608 00000 n 
 0000089656 00000 n 
-0003280709 00000 n 
-0004804050 00000 n 
+0003280713 00000 n 
+0004804140 00000 n 
 0000089712 00000 n 
 0000089770 00000 n 
-0003288841 00000 n 
-0004803925 00000 n 
+0003288845 00000 n 
+0004804015 00000 n 
 0000089819 00000 n 
 0000089890 00000 n 
-0003288971 00000 n 
-0004803841 00000 n 
+0003288975 00000 n 
+0004803931 00000 n 
 0000089941 00000 n 
 0000089988 00000 n 
-0003291440 00000 n 
-0004803701 00000 n 
+0003291444 00000 n 
+0004803791 00000 n 
 0000090039 00000 n 
 0000090094 00000 n 
-0003291571 00000 n 
-0004803576 00000 n 
+0003291575 00000 n 
+0004803666 00000 n 
 0000090150 00000 n 
 0000090204 00000 n 
-0003293696 00000 n 
-0004803492 00000 n 
+0003293700 00000 n 
+0004803582 00000 n 
 0000090265 00000 n 
 0000090317 00000 n 
-0003293827 00000 n 
-0004803408 00000 n 
+0003293831 00000 n 
+0004803498 00000 n 
 0000090378 00000 n 
 0000090439 00000 n 
-0003297006 00000 n 
-0004803309 00000 n 
+0003297010 00000 n 
+0004803399 00000 n 
 0000090495 00000 n 
 0000090544 00000 n 
-0003301613 00000 n 
-0004803210 00000 n 
+0003301617 00000 n 
+0004803300 00000 n 
 0000090600 00000 n 
 0000090653 00000 n 
-0003302008 00000 n 
-0004803126 00000 n 
+0003302012 00000 n 
+0004803216 00000 n 
 0000090709 00000 n 
 0000090779 00000 n 
-0003304584 00000 n 
-0004803001 00000 n 
+0003304588 00000 n 
+0004803091 00000 n 
 0000090830 00000 n 
 0000090879 00000 n 
-0003304714 00000 n 
-0004802917 00000 n 
+0003304718 00000 n 
+0004803007 00000 n 
 0000090935 00000 n 
 0000090981 00000 n 
-0003307352 00000 n 
-0004802818 00000 n 
+0003307356 00000 n 
+0004802908 00000 n 
 0000091037 00000 n 
 0000091080 00000 n 
-0003309955 00000 n 
-0004802719 00000 n 
+0003309959 00000 n 
+0004802809 00000 n 
 0000091136 00000 n 
 0000091178 00000 n 
-0003310086 00000 n 
-0004802620 00000 n 
+0003310090 00000 n 
+0004802710 00000 n 
 0000091234 00000 n 
 0000091279 00000 n 
-0003310217 00000 n 
-0004802521 00000 n 
+0003310221 00000 n 
+0004802611 00000 n 
 0000091335 00000 n 
 0000091378 00000 n 
-0003312637 00000 n 
-0004802422 00000 n 
+0003312641 00000 n 
+0004802512 00000 n 
 0000091434 00000 n 
 0000091477 00000 n 
-0003312768 00000 n 
-0004802323 00000 n 
+0003312772 00000 n 
+0004802413 00000 n 
 0000091533 00000 n 
 0000091574 00000 n 
-0003312898 00000 n 
-0004802239 00000 n 
+0003312902 00000 n 
+0004802329 00000 n 
 0000091630 00000 n 
 0000091682 00000 n 
-0003314222 00000 n 
-0004802098 00000 n 
+0003314226 00000 n 
+0004802188 00000 n 
 0000091727 00000 n 
 0000091770 00000 n 
-0003316561 00000 n 
-0004801973 00000 n 
+0003316565 00000 n 
+0004802063 00000 n 
 0000091819 00000 n 
 0000091870 00000 n 
-0003316691 00000 n 
-0004801889 00000 n 
+0003316695 00000 n 
+0004801979 00000 n 
 0000091921 00000 n 
 0000091959 00000 n 
-0003316822 00000 n 
-0004801790 00000 n 
+0003316826 00000 n 
+0004801880 00000 n 
 0000092010 00000 n 
 0000092047 00000 n 
-0003320100 00000 n 
-0004801706 00000 n 
+0003320104 00000 n 
+0004801796 00000 n 
 0000092098 00000 n 
 0000092133 00000 n 
-0003344055 00000 n 
-0004801566 00000 n 
+0003344059 00000 n 
+0004801656 00000 n 
 0000092182 00000 n 
 0000092250 00000 n 
-0003344185 00000 n 
-0004801441 00000 n 
+0003344189 00000 n 
+0004801531 00000 n 
 0000092301 00000 n 
 0000092344 00000 n 
-0003344314 00000 n 
-0004801357 00000 n 
+0003344318 00000 n 
+0004801447 00000 n 
 0000092400 00000 n 
 0000092455 00000 n 
-0003347328 00000 n 
-0004801258 00000 n 
+0003347332 00000 n 
+0004801348 00000 n 
 0000092511 00000 n 
 0000092546 00000 n 
-0003347459 00000 n 
-0004801159 00000 n 
+0003347463 00000 n 
+0004801249 00000 n 
 0000092602 00000 n 
 0000092638 00000 n 
-0003347590 00000 n 
-0004801034 00000 n 
+0003347594 00000 n 
+0004801124 00000 n 
 0000092694 00000 n 
 0000092749 00000 n 
-0003368066 00000 n 
-0004800950 00000 n 
+0003368070 00000 n 
+0004801040 00000 n 
 0000092810 00000 n 
 0000092887 00000 n 
-0003411658 00000 n 
-0004800866 00000 n 
+0003411662 00000 n 
+0004800956 00000 n 
 0000092948 00000 n 
 0000093021 00000 n 
-0003411789 00000 n 
-0004800767 00000 n 
+0003411793 00000 n 
+0004800857 00000 n 
 0000093072 00000 n 
 0000093109 00000 n 
-0003411920 00000 n 
-0004800668 00000 n 
+0003411924 00000 n 
+0004800758 00000 n 
 0000093160 00000 n 
 0000093211 00000 n 
-0003416119 00000 n 
-0004800584 00000 n 
+0003416123 00000 n 
+0004800674 00000 n 
 0000093262 00000 n 
 0000093320 00000 n 
-0003419224 00000 n 
-0004800444 00000 n 
+0003419228 00000 n 
+0004800534 00000 n 
 0000093369 00000 n 
 0000093415 00000 n 
-0003419354 00000 n 
-0004800360 00000 n 
+0003419358 00000 n 
+0004800450 00000 n 
 0000093466 00000 n 
 0000093504 00000 n 
-0003419485 00000 n 
-0004800261 00000 n 
+0003419489 00000 n 
+0004800351 00000 n 
 0000093555 00000 n 
 0000093600 00000 n 
-0003422862 00000 n 
-0004800121 00000 n 
+0003422866 00000 n 
+0004800211 00000 n 
 0000093651 00000 n 
 0000093689 00000 n 
-0003426504 00000 n 
-0004800052 00000 n 
+0003426508 00000 n 
+0004800142 00000 n 
 0000093745 00000 n 
 0000093802 00000 n 
-0003427030 00000 n 
-0004799953 00000 n 
+0003427034 00000 n 
+0004800043 00000 n 
 0000093853 00000 n 
 0000093894 00000 n 
-0003429554 00000 n 
-0004799854 00000 n 
+0003429558 00000 n 
+0004799944 00000 n 
 0000093945 00000 n 
 0000094001 00000 n 
-0003431004 00000 n 
-0004799770 00000 n 
+0003431008 00000 n 
+0004799860 00000 n 
 0000094052 00000 n 
 0000094085 00000 n 
-0003433403 00000 n 
-0004799645 00000 n 
+0003433407 00000 n 
+0004799735 00000 n 
 0000094134 00000 n 
 0000094184 00000 n 
-0003433533 00000 n 
-0004799561 00000 n 
+0003433537 00000 n 
+0004799651 00000 n 
 0000094235 00000 n 
 0000094282 00000 n 
-0003433664 00000 n 
-0004799477 00000 n 
+0003433668 00000 n 
+0004799567 00000 n 
 0000094333 00000 n 
 0000094377 00000 n 
-0003439913 00000 n 
-0004799350 00000 n 
+0003439917 00000 n 
+0004799440 00000 n 
 0000094422 00000 n 
 0000094468 00000 n 
-0003442255 00000 n 
-0004799225 00000 n 
+0003442259 00000 n 
+0004799315 00000 n 
 0000094517 00000 n 
 0000094569 00000 n 
-0003442385 00000 n 
-0004799100 00000 n 
+0003442389 00000 n 
+0004799190 00000 n 
 0000094620 00000 n 
 0000094685 00000 n 
-0003442516 00000 n 
-0004799016 00000 n 
+0003442520 00000 n 
+0004799106 00000 n 
 0000094741 00000 n 
 0000094781 00000 n 
-0003442647 00000 n 
-0004798891 00000 n 
+0003442651 00000 n 
+0004798981 00000 n 
 0000094837 00000 n 
 0000094895 00000 n 
-0003445507 00000 n 
-0004798807 00000 n 
+0003445511 00000 n 
+0004798897 00000 n 
 0000094956 00000 n 
 0000095004 00000 n 
-0003445638 00000 n 
-0004798723 00000 n 
+0003445642 00000 n 
+0004798813 00000 n 
 0000095065 00000 n 
 0000095116 00000 n 
-0003448742 00000 n 
-0004798624 00000 n 
+0003448746 00000 n 
+0004798714 00000 n 
 0000095167 00000 n 
 0000095238 00000 n 
-0003448873 00000 n 
-0004798525 00000 n 
+0003448877 00000 n 
+0004798615 00000 n 
 0000095289 00000 n 
 0000095346 00000 n 
-0003450906 00000 n 
-0004798385 00000 n 
+0003450910 00000 n 
+0004798475 00000 n 
 0000095397 00000 n 
 0000095444 00000 n 
-0003454074 00000 n 
-0004798275 00000 n 
+0003454078 00000 n 
+0004798365 00000 n 
 0000095500 00000 n 
 0000095573 00000 n 
-0003454205 00000 n 
-0004798191 00000 n 
+0003454209 00000 n 
+0004798281 00000 n 
 0000095634 00000 n 
 0000095707 00000 n 
-0003454336 00000 n 
-0004798092 00000 n 
+0003454340 00000 n 
+0004798182 00000 n 
 0000095768 00000 n 
 0000095848 00000 n 
-0003456593 00000 n 
-0004798008 00000 n 
+0003456597 00000 n 
+0004798098 00000 n 
 0000095909 00000 n 
 0000095970 00000 n 
-0003456722 00000 n 
-0004797883 00000 n 
+0003456726 00000 n 
+0004797973 00000 n 
 0000096021 00000 n 
 0000096082 00000 n 
-0003456851 00000 n 
-0004797799 00000 n 
+0003456855 00000 n 
+0004797889 00000 n 
 0000096138 00000 n 
 0000096190 00000 n 
-0003460662 00000 n 
-0004797674 00000 n 
+0003460666 00000 n 
+0004797764 00000 n 
 0000096246 00000 n 
 0000096312 00000 n 
-0003462695 00000 n 
-0004797590 00000 n 
+0003462699 00000 n 
+0004797680 00000 n 
 0000096373 00000 n 
 0000096435 00000 n 
-0003464114 00000 n 
-0004797506 00000 n 
+0003464118 00000 n 
+0004797596 00000 n 
 0000096496 00000 n 
 0000096562 00000 n 
-0003466503 00000 n 
-0004797366 00000 n 
+0003466507 00000 n 
+0004797456 00000 n 
 0000096611 00000 n 
 0000096654 00000 n 
-0003466633 00000 n 
-0004797282 00000 n 
+0003466637 00000 n 
+0004797372 00000 n 
 0000096705 00000 n 
 0000096735 00000 n 
-0003469188 00000 n 
-0004797183 00000 n 
+0003469192 00000 n 
+0004797273 00000 n 
 0000096786 00000 n 
 0000096820 00000 n 
-0003469319 00000 n 
-0004797084 00000 n 
+0003469323 00000 n 
+0004797174 00000 n 
 0000096871 00000 n 
 0000096901 00000 n 
-0003472610 00000 n 
-0004796985 00000 n 
+0003472614 00000 n 
+0004797075 00000 n 
 0000096952 00000 n 
 0000096991 00000 n 
-0003472741 00000 n 
-0004796886 00000 n 
+0003472745 00000 n 
+0004796976 00000 n 
 0000097042 00000 n 
 0000097094 00000 n 
-0003475446 00000 n 
-0004796761 00000 n 
+0003475450 00000 n 
+0004796851 00000 n 
 0000097145 00000 n 
 0000097178 00000 n 
-0003475577 00000 n 
-0004796677 00000 n 
+0003475581 00000 n 
+0004796767 00000 n 
 0000097234 00000 n 
 0000097282 00000 n 
-0003475708 00000 n 
-0004796593 00000 n 
+0003475712 00000 n 
+0004796683 00000 n 
 0000097338 00000 n 
 0000097386 00000 n 
-0003479196 00000 n 
-0004796453 00000 n 
+0003479200 00000 n 
+0004796543 00000 n 
 0000097435 00000 n 
 0000097495 00000 n 
-0003479326 00000 n 
-0004796369 00000 n 
+0003479330 00000 n 
+0004796459 00000 n 
 0000097546 00000 n 
 0000097589 00000 n 
-0003482244 00000 n 
-0004796229 00000 n 
+0003482248 00000 n 
+0004796319 00000 n 
 0000097640 00000 n 
 0000097676 00000 n 
-0003482375 00000 n 
-0004796145 00000 n 
+0003482379 00000 n 
+0004796235 00000 n 
 0000097732 00000 n 
 0000097804 00000 n 
-0003482506 00000 n 
-0004796046 00000 n 
+0003482510 00000 n 
+0004796136 00000 n 
 0000097860 00000 n 
 0000097922 00000 n 
-0003485240 00000 n 
-0004795962 00000 n 
+0003485244 00000 n 
+0004796052 00000 n 
 0000097978 00000 n 
 0000098046 00000 n 
-0003485371 00000 n 
-0004795822 00000 n 
+0003485375 00000 n 
+0004795912 00000 n 
 0000098097 00000 n 
 0000098145 00000 n 
-0003485502 00000 n 
-0004795738 00000 n 
+0003485506 00000 n 
+0004795828 00000 n 
 0000098201 00000 n 
 0000098263 00000 n 
-0003488402 00000 n 
-0004795639 00000 n 
+0003488406 00000 n 
+0004795729 00000 n 
 0000098319 00000 n 
 0000098386 00000 n 
-0003488533 00000 n 
-0004795540 00000 n 
+0003488537 00000 n 
+0004795630 00000 n 
 0000098442 00000 n 
 0000098522 00000 n 
-0003488664 00000 n 
-0004795441 00000 n 
+0003488668 00000 n 
+0004795531 00000 n 
 0000098578 00000 n 
 0000098631 00000 n 
-0003491254 00000 n 
-0004795342 00000 n 
+0003491258 00000 n 
+0004795432 00000 n 
 0000098687 00000 n 
 0000098745 00000 n 
-0003491385 00000 n 
-0004795258 00000 n 
+0003491389 00000 n 
+0004795348 00000 n 
 0000098801 00000 n 
 0000098846 00000 n 
-0003491514 00000 n 
-0004795118 00000 n 
+0003491518 00000 n 
+0004795208 00000 n 
 0000098897 00000 n 
 0000098936 00000 n 
-0003494865 00000 n 
-0004795049 00000 n 
+0003494869 00000 n 
+0004795139 00000 n 
 0000098992 00000 n 
 0000099037 00000 n 
-0003494996 00000 n 
-0004794950 00000 n 
+0003495000 00000 n 
+0004795040 00000 n 
 0000099088 00000 n 
 0000099141 00000 n 
-0003497346 00000 n 
-0004794866 00000 n 
+0003497350 00000 n 
+0004794956 00000 n 
 0000099192 00000 n 
 0000099232 00000 n 
-0003499772 00000 n 
-0004794725 00000 n 
+0003499776 00000 n 
+0004794815 00000 n 
 0000099281 00000 n 
 0000099337 00000 n 
-0003499902 00000 n 
-0004794641 00000 n 
+0003499906 00000 n 
+0004794731 00000 n 
 0000099388 00000 n 
 0000099425 00000 n 
-0003500033 00000 n 
-0004794542 00000 n 
+0003500037 00000 n 
+0004794632 00000 n 
 0000099476 00000 n 
 0000099516 00000 n 
-0003502748 00000 n 
-0004794443 00000 n 
+0003502752 00000 n 
+0004794533 00000 n 
 0000099567 00000 n 
 0000099602 00000 n 
-0003505185 00000 n 
-0004794344 00000 n 
+0003505189 00000 n 
+0004794434 00000 n 
 0000099653 00000 n 
 0000099687 00000 n 
-0003505316 00000 n 
-0004794245 00000 n 
+0003505320 00000 n 
+0004794335 00000 n 
 0000099738 00000 n 
 0000099773 00000 n 
-0003505447 00000 n 
-0004794146 00000 n 
+0003505451 00000 n 
+0004794236 00000 n 
 0000099824 00000 n 
 0000099858 00000 n 
-0003505578 00000 n 
-0004794047 00000 n 
+0003505582 00000 n 
+0004794137 00000 n 
 0000099909 00000 n 
 0000099944 00000 n 
-0003508292 00000 n 
-0004793948 00000 n 
+0003508296 00000 n 
+0004794038 00000 n 
 0000099995 00000 n 
 0000100032 00000 n 
-0003508423 00000 n 
-0004793849 00000 n 
+0003508427 00000 n 
+0004793939 00000 n 
 0000100083 00000 n 
 0000100122 00000 n 
-0003508553 00000 n 
-0004793750 00000 n 
+0003508557 00000 n 
+0004793840 00000 n 
 0000100174 00000 n 
 0000100255 00000 n 
-0003511102 00000 n 
-0004793651 00000 n 
+0003511106 00000 n 
+0004793741 00000 n 
 0000100307 00000 n 
 0000100351 00000 n 
-0003511233 00000 n 
-0004793567 00000 n 
+0003511237 00000 n 
+0004793657 00000 n 
 0000100403 00000 n 
 0000100460 00000 n 
-0003513513 00000 n 
-0004793427 00000 n 
+0003513517 00000 n 
+0004793517 00000 n 
 0000100509 00000 n 
 0000100574 00000 n 
-0003513643 00000 n 
-0004793343 00000 n 
+0003513647 00000 n 
+0004793433 00000 n 
 0000100625 00000 n 
 0000100663 00000 n 
-0003517569 00000 n 
-0004793203 00000 n 
+0003517573 00000 n 
+0004793293 00000 n 
 0000100714 00000 n 
 0000100751 00000 n 
-0003517699 00000 n 
-0004793119 00000 n 
+0003517703 00000 n 
+0004793209 00000 n 
 0000100807 00000 n 
 0000100871 00000 n 
-0003521511 00000 n 
-0004793020 00000 n 
+0003521515 00000 n 
+0004793110 00000 n 
 0000100927 00000 n 
 0000100988 00000 n 
-0003524942 00000 n 
-0004792936 00000 n 
+0003524946 00000 n 
+0004793026 00000 n 
 0000101044 00000 n 
 0000101099 00000 n 
-0003526458 00000 n 
-0004792837 00000 n 
+0003526462 00000 n 
+0004792927 00000 n 
 0000101150 00000 n 
 0000101183 00000 n 
-0003529937 00000 n 
-0004792753 00000 n 
+0003529941 00000 n 
+0004792843 00000 n 
 0000101234 00000 n 
 0000101275 00000 n 
-0003532498 00000 n 
-0004792613 00000 n 
+0003532502 00000 n 
+0004792703 00000 n 
 0000101324 00000 n 
 0000101369 00000 n 
-0003535924 00000 n 
-0004792529 00000 n 
+0003535928 00000 n 
+0004792619 00000 n 
 0000101420 00000 n 
 0000101458 00000 n 
-0003538516 00000 n 
-0004792445 00000 n 
+0003538520 00000 n 
+0004792535 00000 n 
 0000101509 00000 n 
 0000101553 00000 n 
-0003540920 00000 n 
-0004792305 00000 n 
+0003540924 00000 n 
+0004792395 00000 n 
 0000101602 00000 n 
 0000101666 00000 n 
-0003541050 00000 n 
-0004792221 00000 n 
+0003541054 00000 n 
+0004792311 00000 n 
 0000101717 00000 n 
 0000101764 00000 n 
-0003544619 00000 n 
-0004792096 00000 n 
+0003544623 00000 n 
+0004792186 00000 n 
 0000101815 00000 n 
 0000101862 00000 n 
-0003546548 00000 n 
-0004792012 00000 n 
+0003546552 00000 n 
+0004792102 00000 n 
 0000101918 00000 n 
 0000101957 00000 n 
-0003551455 00000 n 
-0004791928 00000 n 
+0003551459 00000 n 
+0004792018 00000 n 
 0000102013 00000 n 
 0000102052 00000 n 
-0003554322 00000 n 
-0004791829 00000 n 
+0003554326 00000 n 
+0004791919 00000 n 
 0000102101 00000 n 
 0000102168 00000 n 
-0003592958 00000 n 
-0004791730 00000 n 
+0003592962 00000 n 
+0004791820 00000 n 
 0000102218 00000 n 
 0000102247 00000 n 
-0003597990 00000 n 
-0004791646 00000 n 
+0003597994 00000 n 
+0004791736 00000 n 
 0000102298 00000 n 
 0000102332 00000 n 
-0000102743 00000 n 
-0000102987 00000 n 
+0000102747 00000 n 
+0000102991 00000 n 
 0000102386 00000 n 
-0000102859 00000 n 
-0000102923 00000 n 
-0004762459 00000 n 
-0004763800 00000 n 
-0004766620 00000 n 
-0000105653 00000 n 
-0000105286 00000 n 
-0000103075 00000 n 
-0000105402 00000 n 
-0004765132 00000 n 
-0000105589 00000 n 
-0004763652 00000 n 
-0004762310 00000 n 
-0000106423 00000 n 
-0000106243 00000 n 
-0000105755 00000 n 
-0000106359 00000 n 
-0004764984 00000 n 
-0000107918 00000 n 
-0000108068 00000 n 
-0000108240 00000 n 
-0000108412 00000 n 
-0000108581 00000 n 
-0000108757 00000 n 
-0000108926 00000 n 
-0000109078 00000 n 
-0000109247 00000 n 
-0000109400 00000 n 
-0000109570 00000 n 
-0000109742 00000 n 
-0000109911 00000 n 
-0000110063 00000 n 
-0000110232 00000 n 
-0000110403 00000 n 
-0000110576 00000 n 
-0000110742 00000 n 
-0000110894 00000 n 
-0000111063 00000 n 
-0000111244 00000 n 
-0000111410 00000 n 
-0000111566 00000 n 
-0000113538 00000 n 
-0000111917 00000 n 
-0000107583 00000 n 
-0000106525 00000 n 
-0000111735 00000 n 
-0000111857 00000 n 
-0004765433 00000 n 
-0004763208 00000 n 
-0004766174 00000 n 
-0000418534 00000 n 
-0000452799 00000 n 
-0000545930 00000 n 
-0000589068 00000 n 
-0000671775 00000 n 
-0000715045 00000 n 
-0000113707 00000 n 
-0000113878 00000 n 
-0000114050 00000 n 
-0000114222 00000 n 
-0000114388 00000 n 
-0000114548 00000 n 
-0000114714 00000 n 
-0000114869 00000 n 
-0000115037 00000 n 
-0000115192 00000 n 
-0000115360 00000 n 
-0000115530 00000 n 
-0000115688 00000 n 
-0000115856 00000 n 
-0000116027 00000 n 
-0000116198 00000 n 
-0000116348 00000 n 
-0000116520 00000 n 
-0000116688 00000 n 
-0000116858 00000 n 
-0000117026 00000 n 
-0000117192 00000 n 
-0000117363 00000 n 
-0000117518 00000 n 
-0000117686 00000 n 
-0000119635 00000 n 
-0000117921 00000 n 
-0000113176 00000 n 
-0000112061 00000 n 
-0000117857 00000 n 
-0000773257 00000 n 
-0000792409 00000 n 
-0001160025 00000 n 
-0001171201 00000 n 
-0001281819 00000 n 
-0001402362 00000 n 
-0000119788 00000 n 
-0000119957 00000 n 
-0000120138 00000 n 
-0000120304 00000 n 
-0000120455 00000 n 
-0000120624 00000 n 
-0000120773 00000 n 
-0000120944 00000 n 
-0000121113 00000 n 
-0000121270 00000 n 
-0000121439 00000 n 
-0000121608 00000 n 
-0000121780 00000 n 
-0000121930 00000 n 
-0000122098 00000 n 
-0000122270 00000 n 
-0000122439 00000 n 
-0000122612 00000 n 
-0000122769 00000 n 
-0000122941 00000 n 
-0000123109 00000 n 
-0000123268 00000 n 
-0000123436 00000 n 
-0000123607 00000 n 
-0000123779 00000 n 
-0000123956 00000 n 
-0000126004 00000 n 
-0000124168 00000 n 
-0000119264 00000 n 
-0000118065 00000 n 
-0000124104 00000 n 
-0001454453 00000 n 
-0001539053 00000 n 
-0001592327 00000 n 
-0001613427 00000 n 
-0001694961 00000 n 
-0001746313 00000 n 
-0001767300 00000 n 
-0001797131 00000 n 
-0000126175 00000 n 
-0000126343 00000 n 
-0000126504 00000 n 
-0000126677 00000 n 
-0000126848 00000 n 
-0000127016 00000 n 
-0000127173 00000 n 
-0000127345 00000 n 
-0000127518 00000 n 
-0000127690 00000 n 
-0000127837 00000 n 
-0000128009 00000 n 
-0000128177 00000 n 
-0000128347 00000 n 
-0000128496 00000 n 
-0000128673 00000 n 
-0000128844 00000 n 
-0000129019 00000 n 
-0000129198 00000 n 
-0000129370 00000 n 
-0000129538 00000 n 
-0000131310 00000 n 
-0000129771 00000 n 
-0000125678 00000 n 
-0000124312 00000 n 
-0000129707 00000 n 
-0004766746 00000 n 
-0001805959 00000 n 
-0001976433 00000 n 
-0002834498 00000 n 
-0002878202 00000 n 
-0002946269 00000 n 
-0000131479 00000 n 
-0000131632 00000 n 
-0000131801 00000 n 
-0000131955 00000 n 
-0000132124 00000 n 
-0000132270 00000 n 
-0000132439 00000 n 
-0000132615 00000 n 
-0000132779 00000 n 
-0000132947 00000 n 
-0000133097 00000 n 
-0000133269 00000 n 
-0000133438 00000 n 
-0000133613 00000 n 
-0000133760 00000 n 
-0000133929 00000 n 
-0000134078 00000 n 
-0000134247 00000 n 
-0000134416 00000 n 
-0000134568 00000 n 
-0000134737 00000 n 
-0000134906 00000 n 
-0000135058 00000 n 
-0000135227 00000 n 
-0000135386 00000 n 
-0000137071 00000 n 
-0000135622 00000 n 
-0000130948 00000 n 
-0000129915 00000 n 
-0000135558 00000 n 
-0002968108 00000 n 
-0002996706 00000 n 
-0003067649 00000 n 
-0003112098 00000 n 
-0003144473 00000 n 
-0003170853 00000 n 
-0003179705 00000 n 
-0003197432 00000 n 
-0003202152 00000 n 
-0003233112 00000 n 
-0000137239 00000 n 
-0000137410 00000 n 
-0000137566 00000 n 
-0000137734 00000 n 
-0000137882 00000 n 
-0000138050 00000 n 
-0000138203 00000 n 
-0000138375 00000 n 
-0000138547 00000 n 
-0000138716 00000 n 
-0000138868 00000 n 
-0000139038 00000 n 
-0000139209 00000 n 
-0000139381 00000 n 
-0000139549 00000 n 
-0000139702 00000 n 
-0000139870 00000 n 
-0000140042 00000 n 
-0000140214 00000 n 
-0000140361 00000 n 
-0000140528 00000 n 
-0000140681 00000 n 
-0000140852 00000 n 
-0000141020 00000 n 
-0000141192 00000 n 
-0000141347 00000 n 
-0000142823 00000 n 
-0000141583 00000 n 
-0000136700 00000 n 
-0000135766 00000 n 
-0000141519 00000 n 
-0003265325 00000 n 
-0003288906 00000 n 
-0003316626 00000 n 
-0003344120 00000 n 
-0003419289 00000 n 
-0003433468 00000 n 
-0003442320 00000 n 
-0003466568 00000 n 
-0000142992 00000 n 
-0000143148 00000 n 
-0000143320 00000 n 
-0000143489 00000 n 
-0000143658 00000 n 
-0000143829 00000 n 
-0000143977 00000 n 
-0000144154 00000 n 
-0000144326 00000 n 
-0000144495 00000 n 
-0000144649 00000 n 
-0000144830 00000 n 
-0000144979 00000 n 
-0000145212 00000 n 
-0000142569 00000 n 
-0000141727 00000 n 
-0000145148 00000 n 
-0003479261 00000 n 
-0003499837 00000 n 
-0003513578 00000 n 
-0003540985 00000 n 
-0000145637 00000 n 
-0000145457 00000 n 
-0000145356 00000 n 
-0000145573 00000 n 
-0000147097 00000 n 
-0000147251 00000 n 
-0000147404 00000 n 
-0000147556 00000 n 
-0000147710 00000 n 
-0000147864 00000 n 
-0000148018 00000 n 
-0000148172 00000 n 
-0000148325 00000 n 
-0000148474 00000 n 
-0000148629 00000 n 
-0000148782 00000 n 
-0000148937 00000 n 
-0000149091 00000 n 
-0000149250 00000 n 
-0000149410 00000 n 
-0000149570 00000 n 
-0000149730 00000 n 
-0000149895 00000 n 
-0000150055 00000 n 
-0000150209 00000 n 
-0000150363 00000 n 
-0000150518 00000 n 
-0000150678 00000 n 
-0000152904 00000 n 
-0000150902 00000 n 
-0000146753 00000 n 
-0000145679 00000 n 
-0000150838 00000 n 
-0000153058 00000 n 
-0000153218 00000 n 
-0000153377 00000 n 
-0000153537 00000 n 
-0000153690 00000 n 
-0000153844 00000 n 
-0000153999 00000 n 
-0000154153 00000 n 
-0000154313 00000 n 
-0000154478 00000 n 
-0000154643 00000 n 
-0000154808 00000 n 
-0000154973 00000 n 
-0000155133 00000 n 
-0000155298 00000 n 
-0000155458 00000 n 
-0000155623 00000 n 
-0000155788 00000 n 
-0000155937 00000 n 
-0000156092 00000 n 
-0000156244 00000 n 
-0000156399 00000 n 
-0000156554 00000 n 
-0000156709 00000 n 
-0000156869 00000 n 
-0000157032 00000 n 
-0000157192 00000 n 
-0000157357 00000 n 
-0000157517 00000 n 
-0000157682 00000 n 
-0000157842 00000 n 
-0000158007 00000 n 
-0000158167 00000 n 
-0000158331 00000 n 
-0000160646 00000 n 
-0000158550 00000 n 
-0000152461 00000 n 
-0000151018 00000 n 
-0000158486 00000 n 
-0004766872 00000 n 
-0000160800 00000 n 
-0000160959 00000 n 
-0000161119 00000 n 
-0000161279 00000 n 
-0000161439 00000 n 
-0000161599 00000 n 
-0000161752 00000 n 
-0000161907 00000 n 
-0000162061 00000 n 
-0000162216 00000 n 
-0000162376 00000 n 
-0000162536 00000 n 
-0000162691 00000 n 
-0000162845 00000 n 
-0000163000 00000 n 
-0000163160 00000 n 
-0000163325 00000 n 
-0000163490 00000 n 
-0000163655 00000 n 
-0000163815 00000 n 
-0000163970 00000 n 
-0000164129 00000 n 
-0000164288 00000 n 
-0000164448 00000 n 
-0000164608 00000 n 
-0000164768 00000 n 
-0000164928 00000 n 
-0000165088 00000 n 
-0000165241 00000 n 
-0000165396 00000 n 
-0000165551 00000 n 
-0000165711 00000 n 
-0000165875 00000 n 
-0000168289 00000 n 
-0000166099 00000 n 
-0000160212 00000 n 
-0000158666 00000 n 
-0000166035 00000 n 
-0000168448 00000 n 
-0000168608 00000 n 
-0000168768 00000 n 
-0000168932 00000 n 
-0000169095 00000 n 
-0000169250 00000 n 
-0000169410 00000 n 
-0000169565 00000 n 
-0000169725 00000 n 
-0000169885 00000 n 
-0000170045 00000 n 
-0000170205 00000 n 
-0000170358 00000 n 
-0000170513 00000 n 
-0000170668 00000 n 
-0000170828 00000 n 
-0000170988 00000 n 
-0000171148 00000 n 
-0000171308 00000 n 
-0000171473 00000 n 
-0000171638 00000 n 
-0000171803 00000 n 
-0000171958 00000 n 
-0000172118 00000 n 
-0000172278 00000 n 
-0000172433 00000 n 
-0000172593 00000 n 
-0000172753 00000 n 
-0000172912 00000 n 
-0000173076 00000 n 
-0000173236 00000 n 
-0000173396 00000 n 
-0000173554 00000 n 
-0000173709 00000 n 
-0000173864 00000 n 
-0000176034 00000 n 
-0000174088 00000 n 
-0000167837 00000 n 
-0000166201 00000 n 
-0000174024 00000 n 
-0000176193 00000 n 
-0000176353 00000 n 
-0000176505 00000 n 
-0000176659 00000 n 
-0000176814 00000 n 
-0000176969 00000 n 
-0000177129 00000 n 
-0000177289 00000 n 
-0000177444 00000 n 
-0000177597 00000 n 
-0000177751 00000 n 
-0000177905 00000 n 
-0000178065 00000 n 
-0000178230 00000 n 
-0000178394 00000 n 
-0000178558 00000 n 
-0000178718 00000 n 
-0000178878 00000 n 
-0000179033 00000 n 
-0000179183 00000 n 
-0000179338 00000 n 
-0000179491 00000 n 
-0000179646 00000 n 
-0000179801 00000 n 
-0000179961 00000 n 
-0000180121 00000 n 
-0000180281 00000 n 
-0000180441 00000 n 
-0000180601 00000 n 
-0000180754 00000 n 
-0000180910 00000 n 
-0000183391 00000 n 
-0000181130 00000 n 
-0000175618 00000 n 
-0000174190 00000 n 
-0000181066 00000 n 
-0000183546 00000 n 
-0000183707 00000 n 
-0000183867 00000 n 
-0000184027 00000 n 
-0000184183 00000 n 
-0000184342 00000 n 
-0000184503 00000 n 
-0000184664 00000 n 
-0000184825 00000 n 
-0000184986 00000 n 
-0000185147 00000 n 
-0000185308 00000 n 
-0000185469 00000 n 
-0000185625 00000 n 
-0000185784 00000 n 
-0000185945 00000 n 
-0000186105 00000 n 
-0000186261 00000 n 
-0000186422 00000 n 
-0000186583 00000 n 
-0000186739 00000 n 
-0000186900 00000 n 
-0000187061 00000 n 
-0000187222 00000 n 
-0000187388 00000 n 
-0000187544 00000 n 
-0000187705 00000 n 
-0000187866 00000 n 
-0000188026 00000 n 
-0000188187 00000 n 
-0000188348 00000 n 
-0000188501 00000 n 
-0000188656 00000 n 
-0000188817 00000 n 
-0000188977 00000 n 
-0000189133 00000 n 
-0000189294 00000 n 
-0000191649 00000 n 
-0000189524 00000 n 
-0000182921 00000 n 
-0000181246 00000 n 
-0000189460 00000 n 
-0000191814 00000 n 
-0000191975 00000 n 
-0000192134 00000 n 
-0000192295 00000 n 
-0000192461 00000 n 
-0000192622 00000 n 
-0000192778 00000 n 
-0000192939 00000 n 
-0000193100 00000 n 
-0000193266 00000 n 
-0000193432 00000 n 
-0000193588 00000 n 
-0000193749 00000 n 
-0000193910 00000 n 
-0000194071 00000 n 
-0000194231 00000 n 
-0000194396 00000 n 
-0000194561 00000 n 
-0000194727 00000 n 
-0000194893 00000 n 
-0000195059 00000 n 
-0000195224 00000 n 
-0000195389 00000 n 
-0000195554 00000 n 
-0000195718 00000 n 
-0000195884 00000 n 
-0000196050 00000 n 
-0000196206 00000 n 
-0000196367 00000 n 
-0000196528 00000 n 
-0000196681 00000 n 
-0000196836 00000 n 
-0000196992 00000 n 
-0000199357 00000 n 
-0000197217 00000 n 
-0000191215 00000 n 
-0000189626 00000 n 
-0000197153 00000 n 
-0000199518 00000 n 
-0000199677 00000 n 
-0000199843 00000 n 
-0000200004 00000 n 
-0000200165 00000 n 
-0000200321 00000 n 
-0000200482 00000 n 
-0000200642 00000 n 
-0000200798 00000 n 
-0000200958 00000 n 
-0000201119 00000 n 
-0000201272 00000 n 
-0000201428 00000 n 
-0000201583 00000 n 
-0000201739 00000 n 
-0000201900 00000 n 
-0000202066 00000 n 
-0000202232 00000 n 
-0000202397 00000 n 
-0000202563 00000 n 
-0000202724 00000 n 
-0000202885 00000 n 
-0000203051 00000 n 
-0000203207 00000 n 
-0000203368 00000 n 
-0000203528 00000 n 
-0000203689 00000 n 
-0000203849 00000 n 
-0000204005 00000 n 
-0000204161 00000 n 
-0000204322 00000 n 
-0000204483 00000 n 
-0000204639 00000 n 
-0000204794 00000 n 
-0000207189 00000 n 
-0000205019 00000 n 
-0000198914 00000 n 
-0000197319 00000 n 
-0000204955 00000 n 
-0004766998 00000 n 
-0000207349 00000 n 
-0000207510 00000 n 
-0000207675 00000 n 
-0000207841 00000 n 
-0000208007 00000 n 
-0000208173 00000 n 
-0000208334 00000 n 
-0000208490 00000 n 
-0000208647 00000 n 
-0000208804 00000 n 
-0000208961 00000 n 
-0000209118 00000 n 
-0000209280 00000 n 
-0000209442 00000 n 
-0000209599 00000 n 
-0000209753 00000 n 
-0000209908 00000 n 
-0000210069 00000 n 
-0000210229 00000 n 
-0000210390 00000 n 
-0000210550 00000 n 
-0000210706 00000 n 
-0000210866 00000 n 
-0000211032 00000 n 
-0000211197 00000 n 
-0000211358 00000 n 
-0000211519 00000 n 
-0000211680 00000 n 
-0000211845 00000 n 
-0000212011 00000 n 
-0000212165 00000 n 
-0000212321 00000 n 
-0000212482 00000 n 
-0000212643 00000 n 
-0000215005 00000 n 
-0000212868 00000 n 
-0000206746 00000 n 
-0000205121 00000 n 
-0000212804 00000 n 
-0000215160 00000 n 
-0000215316 00000 n 
-0000215477 00000 n 
-0000215631 00000 n 
-0000215786 00000 n 
-0000215942 00000 n 
-0000216103 00000 n 
-0000216264 00000 n 
-0000216425 00000 n 
-0000216590 00000 n 
-0000216746 00000 n 
-0000216907 00000 n 
-0000217068 00000 n 
-0000217229 00000 n 
-0000217385 00000 n 
-0000217545 00000 n 
-0000217711 00000 n 
-0000217876 00000 n 
-0000218032 00000 n 
-0000218193 00000 n 
-0000218354 00000 n 
-0000218515 00000 n 
-0000218675 00000 n 
-0000218841 00000 n 
-0000219007 00000 n 
-0000219168 00000 n 
-0000219328 00000 n 
-0000219489 00000 n 
-0000219650 00000 n 
-0000219816 00000 n 
-0000219982 00000 n 
-0000222438 00000 n 
-0000220212 00000 n 
-0000214589 00000 n 
-0000212970 00000 n 
-0000220148 00000 n 
-0000222593 00000 n 
-0000222754 00000 n 
-0000222915 00000 n 
-0000223076 00000 n 
-0000223230 00000 n 
-0000223386 00000 n 
-0000223541 00000 n 
-0000223702 00000 n 
-0000223867 00000 n 
-0000224032 00000 n 
-0000224198 00000 n 
-0000224363 00000 n 
-0000224529 00000 n 
-0000224695 00000 n 
-0000224860 00000 n 
-0000225026 00000 n 
-0000225192 00000 n 
-0000225348 00000 n 
-0000225509 00000 n 
-0000225675 00000 n 
-0000225841 00000 n 
-0000225997 00000 n 
-0000226158 00000 n 
-0000226319 00000 n 
-0000226475 00000 n 
-0000226631 00000 n 
-0000226792 00000 n 
-0000226953 00000 n 
-0000227114 00000 n 
-0000227269 00000 n 
-0000227423 00000 n 
-0000227579 00000 n 
-0000227735 00000 n 
-0000227891 00000 n 
-0000228052 00000 n 
-0000228213 00000 n 
-0000228374 00000 n 
-0000230802 00000 n 
-0000228599 00000 n 
-0000221968 00000 n 
-0000220314 00000 n 
-0000228535 00000 n 
-0004765581 00000 n 
-0000230962 00000 n 
-0000231123 00000 n 
-0000231279 00000 n 
-0000231435 00000 n 
-0000231596 00000 n 
-0000231757 00000 n 
-0000231911 00000 n 
-0000232066 00000 n 
-0000232222 00000 n 
-0000232376 00000 n 
-0000232537 00000 n 
-0000232698 00000 n 
-0000232859 00000 n 
-0000233015 00000 n 
-0000233175 00000 n 
-0000233336 00000 n 
-0000233491 00000 n 
-0000233647 00000 n 
-0000233808 00000 n 
-0000233969 00000 n 
-0000234123 00000 n 
-0000234279 00000 n 
-0000234435 00000 n 
-0000234596 00000 n 
-0000234750 00000 n 
-0000234906 00000 n 
-0000235061 00000 n 
-0000235222 00000 n 
-0000235381 00000 n 
-0000235537 00000 n 
-0000235698 00000 n 
-0000235859 00000 n 
-0000236015 00000 n 
-0000236175 00000 n 
-0000238641 00000 n 
-0000236405 00000 n 
-0000230359 00000 n 
-0000228715 00000 n 
-0000236341 00000 n 
-0000238806 00000 n 
-0000238972 00000 n 
-0000239138 00000 n 
-0000239303 00000 n 
-0000239469 00000 n 
-0000239625 00000 n 
-0000239786 00000 n 
-0000239947 00000 n 
-0000240108 00000 n 
-0000240269 00000 n 
-0000240430 00000 n 
-0000240586 00000 n 
-0000240745 00000 n 
-0000240906 00000 n 
-0000241072 00000 n 
-0000241237 00000 n 
-0000241403 00000 n 
-0000241569 00000 n 
-0000241735 00000 n 
-0000241901 00000 n 
-0000242067 00000 n 
-0000242233 00000 n 
-0000242399 00000 n 
-0000242554 00000 n 
-0000242714 00000 n 
-0000242875 00000 n 
-0000243036 00000 n 
-0000243197 00000 n 
-0000243353 00000 n 
-0000243514 00000 n 
-0000243675 00000 n 
-0000243836 00000 n 
-0000243997 00000 n 
-0000244158 00000 n 
-0000244318 00000 n 
-0000244479 00000 n 
-0000247119 00000 n 
-0000244699 00000 n 
-0000238180 00000 n 
-0000236507 00000 n 
-0000244635 00000 n 
-0000247279 00000 n 
-0000247440 00000 n 
-0000247601 00000 n 
-0000247761 00000 n 
-0000247916 00000 n 
-0000248073 00000 n 
-0000248230 00000 n 
-0000248387 00000 n 
-0000248544 00000 n 
-0000248706 00000 n 
-0000248868 00000 n 
-0000249022 00000 n 
-0000249178 00000 n 
-0000249339 00000 n 
-0000249500 00000 n 
-0000249656 00000 n 
-0000249817 00000 n 
-0000249978 00000 n 
-0000250139 00000 n 
-0000250294 00000 n 
-0000250455 00000 n 
-0000250616 00000 n 
-0000250776 00000 n 
-0000250937 00000 n 
-0000251098 00000 n 
-0000251253 00000 n 
-0000251413 00000 n 
-0000251574 00000 n 
-0000251735 00000 n 
-0000251896 00000 n 
-0000252057 00000 n 
-0000252218 00000 n 
-0000252377 00000 n 
-0000252538 00000 n 
-0000252694 00000 n 
-0000255183 00000 n 
-0000252919 00000 n 
-0000246667 00000 n 
-0000244801 00000 n 
-0000252855 00000 n 
-0004767124 00000 n 
-0000255343 00000 n 
-0000255504 00000 n 
-0000255670 00000 n 
-0000255830 00000 n 
-0000255991 00000 n 
-0000256152 00000 n 
-0000256313 00000 n 
-0000256474 00000 n 
-0000256635 00000 n 
-0000256797 00000 n 
-0000256959 00000 n 
-0000257121 00000 n 
-0000257281 00000 n 
-0000257443 00000 n 
-0000257604 00000 n 
-0000257765 00000 n 
-0000257927 00000 n 
-0000258089 00000 n 
-0000258251 00000 n 
-0000258407 00000 n 
-0000258568 00000 n 
-0000258729 00000 n 
-0000258890 00000 n 
-0000259045 00000 n 
-0000259206 00000 n 
-0000259367 00000 n 
-0000259522 00000 n 
-0000259683 00000 n 
-0000259844 00000 n 
-0000260000 00000 n 
-0000260161 00000 n 
-0000260322 00000 n 
-0000260483 00000 n 
-0000260643 00000 n 
-0000260800 00000 n 
-0000263401 00000 n 
-0000261026 00000 n 
-0000254731 00000 n 
-0000253035 00000 n 
-0000260962 00000 n 
-0000263562 00000 n 
-0000263724 00000 n 
-0000263886 00000 n 
-0000264047 00000 n 
-0000264209 00000 n 
-0000264371 00000 n 
-0000264533 00000 n 
-0000264695 00000 n 
-0000264858 00000 n 
-0000265021 00000 n 
-0000265184 00000 n 
-0000265345 00000 n 
-0000265508 00000 n 
-0000265671 00000 n 
-0000265833 00000 n 
-0000265990 00000 n 
-0000266152 00000 n 
-0000266314 00000 n 
-0000266476 00000 n 
-0000266638 00000 n 
-0000266800 00000 n 
-0000266962 00000 n 
-0000267118 00000 n 
-0000267279 00000 n 
-0000267441 00000 n 
-0000267603 00000 n 
-0000267764 00000 n 
-0000267921 00000 n 
-0000268083 00000 n 
-0000268250 00000 n 
-0000268417 00000 n 
-0000268584 00000 n 
-0000268750 00000 n 
-0000268917 00000 n 
-0000269084 00000 n 
-0000269251 00000 n 
-0000271689 00000 n 
-0000269482 00000 n 
-0000262940 00000 n 
-0000261142 00000 n 
-0000269418 00000 n 
-0000271851 00000 n 
-0000272008 00000 n 
-0000272169 00000 n 
-0000272331 00000 n 
-0000272493 00000 n 
-0000272655 00000 n 
-0000272817 00000 n 
-0000272979 00000 n 
-0000273141 00000 n 
-0000273298 00000 n 
-0000273453 00000 n 
-0000273615 00000 n 
-0000273777 00000 n 
-0000273938 00000 n 
-0000274094 00000 n 
-0000274251 00000 n 
-0000274408 00000 n 
-0000274570 00000 n 
-0000274732 00000 n 
-0000274894 00000 n 
-0000275056 00000 n 
-0000275217 00000 n 
-0000275379 00000 n 
-0000275540 00000 n 
-0000275702 00000 n 
-0000275864 00000 n 
-0000276027 00000 n 
-0000276190 00000 n 
-0000276353 00000 n 
-0000276516 00000 n 
-0000276678 00000 n 
-0000279097 00000 n 
-0000276905 00000 n 
-0000271273 00000 n 
-0000269598 00000 n 
-0000276841 00000 n 
-0000279260 00000 n 
-0000279423 00000 n 
-0000279586 00000 n 
-0000279749 00000 n 
-0000279912 00000 n 
-0000280069 00000 n 
-0000280223 00000 n 
-0000280379 00000 n 
-0000280535 00000 n 
-0000280691 00000 n 
-0000280852 00000 n 
-0000281013 00000 n 
-0000281174 00000 n 
-0000281340 00000 n 
-0000281501 00000 n 
-0000281660 00000 n 
-0000281821 00000 n 
-0000281982 00000 n 
-0000282148 00000 n 
-0000282304 00000 n 
-0000282464 00000 n 
-0000282625 00000 n 
-0000282786 00000 n 
-0000282940 00000 n 
-0000283096 00000 n 
-0000283252 00000 n 
-0000283408 00000 n 
-0000283568 00000 n 
-0000283729 00000 n 
-0000283885 00000 n 
-0000284046 00000 n 
-0000284207 00000 n 
-0000284367 00000 n 
-0000286745 00000 n 
-0000284592 00000 n 
-0000278663 00000 n 
-0000277007 00000 n 
-0000284528 00000 n 
-0000286905 00000 n 
-0000287066 00000 n 
-0000287222 00000 n 
-0000287382 00000 n 
-0000287543 00000 n 
-0000287704 00000 n 
-0000287870 00000 n 
-0000288036 00000 n 
-0000288202 00000 n 
-0000288368 00000 n 
-0000288534 00000 n 
-0000288699 00000 n 
-0000288865 00000 n 
-0000289021 00000 n 
-0000289176 00000 n 
-0000289336 00000 n 
-0000289497 00000 n 
-0000289651 00000 n 
-0000289807 00000 n 
-0000289963 00000 n 
-0000290119 00000 n 
-0000290280 00000 n 
-0000290440 00000 n 
-0000290595 00000 n 
-0000290756 00000 n 
-0000290917 00000 n 
-0000291071 00000 n 
-0000291227 00000 n 
-0000291383 00000 n 
-0000291544 00000 n 
-0000291705 00000 n 
-0000291871 00000 n 
-0000292032 00000 n 
-0000292198 00000 n 
-0000292363 00000 n 
-0000292519 00000 n 
-0000294759 00000 n 
-0000292739 00000 n 
-0000286284 00000 n 
-0000284694 00000 n 
-0000292675 00000 n 
-0000294919 00000 n 
-0000295080 00000 n 
-0000295241 00000 n 
-0000295396 00000 n 
-0000295550 00000 n 
-0000295711 00000 n 
-0000295865 00000 n 
-0000296021 00000 n 
-0000296177 00000 n 
-0000296338 00000 n 
-0000296504 00000 n 
-0000296670 00000 n 
-0000296836 00000 n 
-0000297002 00000 n 
-0000297163 00000 n 
-0000297329 00000 n 
-0000297495 00000 n 
-0000297661 00000 n 
-0000297822 00000 n 
-0000297983 00000 n 
-0000298144 00000 n 
-0000298310 00000 n 
-0000298476 00000 n 
-0000298642 00000 n 
-0000298808 00000 n 
-0000298964 00000 n 
-0000299120 00000 n 
-0000299276 00000 n 
-0000299436 00000 n 
-0000299601 00000 n 
-0000299762 00000 n 
-0000299923 00000 n 
-0000300077 00000 n 
-0000300238 00000 n 
-0000300399 00000 n 
-0000302808 00000 n 
-0000300624 00000 n 
-0000294307 00000 n 
-0000292841 00000 n 
-0000300560 00000 n 
-0004767250 00000 n 
-0000302969 00000 n 
-0000303123 00000 n 
-0000303279 00000 n 
-0000303435 00000 n 
-0000303595 00000 n 
-0000303761 00000 n 
-0000303922 00000 n 
-0000304088 00000 n 
-0000304254 00000 n 
-0000304414 00000 n 
-0000304575 00000 n 
-0000304736 00000 n 
-0000304902 00000 n 
-0000305068 00000 n 
-0000305233 00000 n 
-0000305399 00000 n 
-0000305555 00000 n 
-0000305716 00000 n 
-0000305877 00000 n 
-0000306031 00000 n 
-0000306187 00000 n 
-0000306342 00000 n 
-0000306498 00000 n 
-0000306659 00000 n 
-0000306820 00000 n 
-0000306981 00000 n 
-0000307141 00000 n 
-0000307297 00000 n 
-0000307458 00000 n 
-0000307619 00000 n 
-0000307780 00000 n 
-0000307940 00000 n 
-0000308101 00000 n 
-0000308257 00000 n 
-0000308418 00000 n 
-0000310624 00000 n 
-0000308643 00000 n 
-0000302356 00000 n 
-0000300726 00000 n 
-0000308579 00000 n 
-0000310784 00000 n 
-0000310938 00000 n 
-0000311093 00000 n 
-0000311249 00000 n 
-0000311405 00000 n 
-0000311561 00000 n 
-0000311717 00000 n 
-0000311877 00000 n 
-0000312038 00000 n 
-0000312199 00000 n 
-0000312355 00000 n 
-0000312516 00000 n 
-0000312670 00000 n 
-0000312826 00000 n 
-0000312982 00000 n 
-0000313143 00000 n 
-0000313304 00000 n 
-0000313465 00000 n 
-0000313626 00000 n 
-0000313779 00000 n 
-0000313935 00000 n 
-0000314091 00000 n 
-0000314252 00000 n 
-0000314413 00000 n 
-0000314578 00000 n 
-0000314744 00000 n 
-0000314910 00000 n 
-0000315075 00000 n 
-0000315241 00000 n 
-0000315407 00000 n 
-0000315573 00000 n 
-0000315734 00000 n 
-0000315895 00000 n 
-0000316056 00000 n 
-0000318246 00000 n 
-0000316281 00000 n 
-0000310181 00000 n 
-0000308745 00000 n 
-0000316217 00000 n 
-0000318399 00000 n 
-0000318552 00000 n 
-0000318706 00000 n 
-0000318867 00000 n 
-0000319028 00000 n 
-0000319189 00000 n 
-0000319339 00000 n 
-0000319493 00000 n 
-0000319649 00000 n 
-0000319810 00000 n 
-0000319970 00000 n 
-0000320131 00000 n 
-0000320287 00000 n 
-0000320448 00000 n 
-0000320609 00000 n 
-0000320775 00000 n 
-0000320941 00000 n 
-0000321107 00000 n 
-0000321273 00000 n 
-0000321434 00000 n 
-0000321599 00000 n 
-0000321764 00000 n 
-0000321930 00000 n 
-0000322096 00000 n 
-0000322250 00000 n 
-0000322406 00000 n 
-0000322567 00000 n 
-0000322733 00000 n 
-0000322899 00000 n 
-0000323065 00000 n 
-0000323230 00000 n 
-0000323396 00000 n 
-0000323557 00000 n 
-0000325709 00000 n 
-0000323777 00000 n 
-0000317812 00000 n 
-0000316383 00000 n 
-0000323713 00000 n 
-0000325869 00000 n 
-0000326030 00000 n 
-0000326184 00000 n 
-0000326340 00000 n 
-0000326495 00000 n 
-0000326656 00000 n 
-0000326822 00000 n 
-0000326988 00000 n 
-0000327149 00000 n 
-0000327309 00000 n 
-0000327469 00000 n 
-0000327625 00000 n 
-0000327786 00000 n 
-0000327947 00000 n 
-0000328108 00000 n 
-0000328268 00000 n 
-0000328429 00000 n 
-0000328590 00000 n 
-0000328751 00000 n 
-0000328912 00000 n 
-0000329061 00000 n 
-0000329215 00000 n 
-0000329371 00000 n 
-0000329527 00000 n 
-0000329683 00000 n 
-0000329836 00000 n 
-0000329992 00000 n 
-0000330153 00000 n 
-0000330314 00000 n 
-0000330475 00000 n 
-0000330635 00000 n 
-0000332966 00000 n 
-0000330865 00000 n 
-0000325293 00000 n 
-0000323893 00000 n 
-0000330801 00000 n 
-0000333131 00000 n 
-0000333287 00000 n 
-0000333443 00000 n 
-0000333599 00000 n 
-0000333753 00000 n 
-0000333909 00000 n 
-0000334065 00000 n 
-0000334221 00000 n 
-0000334380 00000 n 
-0000334535 00000 n 
-0000334691 00000 n 
-0000334847 00000 n 
-0000335001 00000 n 
-0000335157 00000 n 
-0000335313 00000 n 
-0000335463 00000 n 
-0000335617 00000 n 
-0000335773 00000 n 
-0000335934 00000 n 
-0000336095 00000 n 
-0000336261 00000 n 
-0000336427 00000 n 
-0000336582 00000 n 
-0000336737 00000 n 
-0000336893 00000 n 
-0000337054 00000 n 
-0000337220 00000 n 
-0000337386 00000 n 
-0000337552 00000 n 
-0000337708 00000 n 
-0000337868 00000 n 
-0000338029 00000 n 
-0000338195 00000 n 
-0000340445 00000 n 
-0000338425 00000 n 
-0000332532 00000 n 
-0000330981 00000 n 
-0000338361 00000 n 
-0000340598 00000 n 
-0000340754 00000 n 
-0000340910 00000 n 
-0000341065 00000 n 
-0000341221 00000 n 
-0000341377 00000 n 
-0000341533 00000 n 
-0000341694 00000 n 
-0000341855 00000 n 
-0000342009 00000 n 
-0000342165 00000 n 
-0000342320 00000 n 
-0000342481 00000 n 
-0000342642 00000 n 
-0000342802 00000 n 
-0000342957 00000 n 
-0000343118 00000 n 
-0000343279 00000 n 
-0000343440 00000 n 
-0000343601 00000 n 
-0000343762 00000 n 
-0000343923 00000 n 
-0000344078 00000 n 
-0000344238 00000 n 
-0000344394 00000 n 
-0000344550 00000 n 
-0000344704 00000 n 
-0000344860 00000 n 
-0000345016 00000 n 
-0000345172 00000 n 
-0000345328 00000 n 
-0000345484 00000 n 
-0000345640 00000 n 
-0000345796 00000 n 
-0000345951 00000 n 
-0000346107 00000 n 
-0000347742 00000 n 
-0000346328 00000 n 
-0000339984 00000 n 
-0000338541 00000 n 
-0000346264 00000 n 
-0004767376 00000 n 
-0000347898 00000 n 
-0000348055 00000 n 
-0000348208 00000 n 
-0000348364 00000 n 
-0000348520 00000 n 
-0000348681 00000 n 
-0000348842 00000 n 
-0000349003 00000 n 
-0000349159 00000 n 
-0000349315 00000 n 
-0000349468 00000 n 
-0000349624 00000 n 
-0000349780 00000 n 
-0000349934 00000 n 
-0000350090 00000 n 
-0000350246 00000 n 
-0000350407 00000 n 
-0000350568 00000 n 
-0000350722 00000 n 
-0000350877 00000 n 
-0000351096 00000 n 
-0000347425 00000 n 
-0000346430 00000 n 
-0000351032 00000 n 
-0000351479 00000 n 
-0000351299 00000 n 
-0000351198 00000 n 
-0000351415 00000 n 
-0000352752 00000 n 
-0000352907 00000 n 
-0000353063 00000 n 
-0000353219 00000 n 
-0000353375 00000 n 
-0000353531 00000 n 
-0000353687 00000 n 
-0000353843 00000 n 
-0000353999 00000 n 
-0000354155 00000 n 
-0000354311 00000 n 
-0000354466 00000 n 
-0000354623 00000 n 
-0000354779 00000 n 
-0000354935 00000 n 
-0000355091 00000 n 
-0000355247 00000 n 
-0000355529 00000 n 
-0000352471 00000 n 
-0000351521 00000 n 
-0000355403 00000 n 
-0000422580 00000 n 
-0000431936 00000 n 
-0000462046 00000 n 
-0000468441 00000 n 
-0000473306 00000 n 
-0000483911 00000 n 
-0000495185 00000 n 
-0000499682 00000 n 
-0000512539 00000 n 
-0000527424 00000 n 
-0000534296 00000 n 
-0000539866 00000 n 
-0000638949 00000 n 
-0000647170 00000 n 
-0000687484 00000 n 
-0000691392 00000 n 
-0000704861 00000 n 
-0000356946 00000 n 
-0000357102 00000 n 
-0000357258 00000 n 
-0000357415 00000 n 
-0000357572 00000 n 
-0000357729 00000 n 
-0000357886 00000 n 
-0000358043 00000 n 
-0000358200 00000 n 
-0000358357 00000 n 
-0000358514 00000 n 
-0000358671 00000 n 
-0000358828 00000 n 
-0000358984 00000 n 
-0000359140 00000 n 
-0000359297 00000 n 
-0000359454 00000 n 
-0000359611 00000 n 
-0000361168 00000 n 
-0000359832 00000 n 
-0000356656 00000 n 
-0000355631 00000 n 
-0000359768 00000 n 
-0000780586 00000 n 
-0000787921 00000 n 
-0001199820 00000 n 
-0001203597 00000 n 
-0001204109 00000 n 
-0001208193 00000 n 
-0001208704 00000 n 
-0001315358 00000 n 
-0001383451 00000 n 
-0001444355 00000 n 
-0001446892 00000 n 
-0001447339 00000 n 
-0001479346 00000 n 
-0001482923 00000 n 
-0001556555 00000 n 
-0001562059 00000 n 
-0001569655 00000 n 
-0001577016 00000 n 
-0000361325 00000 n 
-0000361482 00000 n 
-0000361639 00000 n 
-0000361796 00000 n 
-0000361953 00000 n 
-0000362110 00000 n 
-0000362267 00000 n 
-0000362424 00000 n 
-0000362581 00000 n 
-0000362738 00000 n 
-0000362896 00000 n 
-0000363052 00000 n 
-0000363209 00000 n 
-0000364406 00000 n 
-0000363430 00000 n 
-0000360914 00000 n 
-0000359934 00000 n 
-0000363366 00000 n 
-0001586842 00000 n 
-0001635569 00000 n 
-0001726613 00000 n 
-0001727189 00000 n 
-0001800027 00000 n 
-0001815219 00000 n 
-0001831726 00000 n 
-0001872445 00000 n 
-0001987004 00000 n 
-0001991868 00000 n 
-0002490918 00000 n 
-0002837754 00000 n 
-0002838347 00000 n 
-0002868008 00000 n 
-0000364562 00000 n 
-0000364719 00000 n 
-0000364876 00000 n 
-0000365033 00000 n 
-0000365190 00000 n 
-0000365347 00000 n 
-0000365504 00000 n 
-0000366573 00000 n 
-0000365725 00000 n 
-0000364206 00000 n 
-0000363532 00000 n 
-0000365661 00000 n 
-0004767502 00000 n 
-0002920471 00000 n 
-0002965647 00000 n 
-0003161830 00000 n 
-0003212808 00000 n 
-0003218311 00000 n 
-0003222700 00000 n 
-0003227642 00000 n 
-0003229419 00000 n 
-0000366729 00000 n 
-0000366886 00000 n 
-0000367043 00000 n 
-0000367260 00000 n 
-0000366409 00000 n 
-0000365827 00000 n 
-0000367196 00000 n 
-0003319639 00000 n 
-0003328793 00000 n 
-0003332625 00000 n 
-0003495127 00000 n 
-0000367643 00000 n 
-0000367463 00000 n 
-0000367362 00000 n 
-0000367579 00000 n 
-0000369105 00000 n 
-0000369250 00000 n 
-0000369403 00000 n 
-0000369549 00000 n 
-0000369701 00000 n 
-0000369854 00000 n 
-0000370007 00000 n 
-0000370160 00000 n 
-0000370313 00000 n 
-0000370464 00000 n 
-0000370617 00000 n 
-0000370770 00000 n 
-0000370923 00000 n 
-0000371077 00000 n 
-0000371230 00000 n 
-0000371384 00000 n 
-0000371538 00000 n 
-0000371692 00000 n 
-0000371846 00000 n 
-0000371999 00000 n 
-0000372153 00000 n 
-0000372307 00000 n 
-0000372461 00000 n 
-0000372615 00000 n 
-0000372768 00000 n 
-0000372922 00000 n 
-0000373076 00000 n 
-0000373222 00000 n 
-0000375417 00000 n 
-0000373502 00000 n 
-0000368725 00000 n 
-0000367685 00000 n 
-0000373376 00000 n 
-0004517766 00000 n 
-0000598354 00000 n 
-0004517732 00000 n 
-0000824390 00000 n 
-0000844972 00000 n 
-0000863093 00000 n 
-0000894305 00000 n 
-0000916231 00000 n 
-0000929751 00000 n 
-0000944702 00000 n 
-0000956214 00000 n 
-0000970793 00000 n 
-0000983161 00000 n 
-0000993688 00000 n 
-0001008360 00000 n 
-0001008488 00000 n 
-0001047945 00000 n 
-0001048073 00000 n 
-0001091720 00000 n 
-0001091848 00000 n 
-0001125543 00000 n 
-0001125671 00000 n 
-0001142356 00000 n 
-0001142484 00000 n 
-0001155445 00000 n 
-0001155573 00000 n 
-0004517698 00000 n 
-0001259640 00000 n 
-0000375562 00000 n 
-0000375716 00000 n 
-0000375870 00000 n 
-0000376016 00000 n 
-0000376170 00000 n 
-0000376324 00000 n 
-0000376478 00000 n 
-0000376624 00000 n 
-0000376778 00000 n 
-0000376924 00000 n 
-0000377077 00000 n 
-0000377223 00000 n 
-0000377377 00000 n 
-0000377531 00000 n 
-0000377685 00000 n 
-0000377838 00000 n 
-0000377992 00000 n 
-0000378146 00000 n 
-0000378300 00000 n 
-0000378450 00000 n 
-0000378604 00000 n 
-0000378758 00000 n 
-0000378913 00000 n 
-0000379068 00000 n 
-0000379223 00000 n 
-0000379377 00000 n 
-0000379532 00000 n 
-0000379686 00000 n 
-0000379841 00000 n 
-0000379996 00000 n 
-0000380151 00000 n 
-0000381084 00000 n 
-0000380361 00000 n 
-0000375001 00000 n 
-0000373604 00000 n 
-0000380297 00000 n 
-0004517664 00000 n 
-0001298442 00000 n 
-0001306092 00000 n 
-0004517630 00000 n 
-0001410497 00000 n 
-0001422002 00000 n 
-0001422130 00000 n 
-0004517596 00000 n 
-0001635441 00000 n 
-0004517562 00000 n 
-0001780547 00000 n 
-0004517528 00000 n 
-0002033743 00000 n 
-0002069484 00000 n 
-0002069740 00000 n 
-0002143170 00000 n 
-0002143298 00000 n 
-0002179224 00000 n 
-0002211173 00000 n 
-0002258643 00000 n 
-0002291324 00000 n 
-0002359237 00000 n 
-0002364504 00000 n 
-0002370776 00000 n 
-0002437953 00000 n 
-0002438209 00000 n 
-0002474274 00000 n 
-0002577806 00000 n 
-0002687773 00000 n 
-0002715856 00000 n 
-0002832251 00000 n 
-0004517494 00000 n 
-0000381237 00000 n 
-0000381383 00000 n 
-0000381536 00000 n 
-0000381754 00000 n 
-0000380920 00000 n 
-0000380463 00000 n 
-0000381690 00000 n 
-0002887938 00000 n 
-0004517460 00000 n 
-0003367935 00000 n 
-0003408097 00000 n 
-0000383290 00000 n 
-0000383434 00000 n 
-0000383585 00000 n 
-0000383737 00000 n 
-0000383882 00000 n 
-0000384034 00000 n 
-0000384179 00000 n 
-0000384330 00000 n 
-0000384476 00000 n 
-0000384628 00000 n 
-0000384774 00000 n 
-0000384927 00000 n 
-0000385079 00000 n 
-0000385232 00000 n 
-0000385385 00000 n 
-0000385531 00000 n 
-0000385683 00000 n 
-0000385836 00000 n 
-0000385989 00000 n 
-0000386142 00000 n 
-0000386295 00000 n 
-0000386440 00000 n 
-0000386719 00000 n 
-0000382964 00000 n 
-0000381856 00000 n 
-0000386593 00000 n 
-0004767628 00000 n 
-0004517426 00000 n 
-0000428673 00000 n 
-0000450127 00000 n 
-0004517392 00000 n 
-0000677415 00000 n 
-0004517358 00000 n 
-0000739746 00000 n 
-0004517324 00000 n 
-0001169319 00000 n 
-0001263522 00000 n 
-0001267114 00000 n 
-0001267242 00000 n 
-0001270040 00000 n 
-0001334338 00000 n 
-0001346204 00000 n 
-0001398046 00000 n 
-0001400350 00000 n 
-0001400478 00000 n 
-0001441729 00000 n 
-0000388487 00000 n 
-0000388632 00000 n 
-0000388785 00000 n 
-0000388931 00000 n 
-0000389084 00000 n 
-0000389236 00000 n 
-0000389389 00000 n 
-0000389542 00000 n 
-0000389695 00000 n 
-0000389840 00000 n 
-0000389992 00000 n 
-0000390138 00000 n 
-0000390291 00000 n 
-0000390437 00000 n 
-0000390590 00000 n 
-0000390736 00000 n 
-0000390889 00000 n 
-0000391042 00000 n 
-0000391195 00000 n 
-0000391341 00000 n 
-0000391494 00000 n 
-0000391640 00000 n 
-0000391793 00000 n 
-0000391946 00000 n 
-0000392090 00000 n 
-0000392243 00000 n 
-0000393364 00000 n 
-0000392453 00000 n 
-0000388125 00000 n 
-0000386821 00000 n 
-0000392389 00000 n 
-0004517290 00000 n 
-0001597937 00000 n 
-0001626054 00000 n 
-0001646702 00000 n 
-0001649426 00000 n 
-0001691436 00000 n 
-0001693084 00000 n 
-0004517256 00000 n 
-0001855733 00000 n 
-0002310490 00000 n 
-0004517222 00000 n 
-0002846206 00000 n 
-0004517188 00000 n 
-0003046237 00000 n 
-0003046368 00000 n 
-0003054129 00000 n 
-0004517154 00000 n 
-0003103498 00000 n 
-0004517120 00000 n 
-0003125202 00000 n 
-0003125331 00000 n 
-0004517086 00000 n 
-0003168179 00000 n 
-0004517052 00000 n 
-0000393516 00000 n 
-0000393662 00000 n 
-0000393814 00000 n 
-0000393967 00000 n 
-0000394112 00000 n 
-0000394265 00000 n 
-0000394410 00000 n 
-0000394627 00000 n 
-0000393164 00000 n 
-0000392555 00000 n 
-0000394563 00000 n 
-0003254981 00000 n 
-0004517018 00000 n 
-0003280447 00000 n 
-0003283291 00000 n 
-0004516984 00000 n 
-0003426899 00000 n 
-0004516950 00000 n 
-0003438974 00000 n 
-0000397421 00000 n 
-0000397117 00000 n 
-0000394729 00000 n 
-0000397233 00000 n 
-0000397358 00000 n 
-0000399724 00000 n 
-0000399544 00000 n 
-0000397537 00000 n 
-0000399660 00000 n 
-0000401855 00000 n 
+0000102863 00000 n 
+0000102927 00000 n 
+0004762549 00000 n 
+0004763890 00000 n 
+0004766710 00000 n 
+0000105657 00000 n 
+0000105290 00000 n 
+0000103079 00000 n 
+0000105406 00000 n 
+0004765222 00000 n 
+0000105593 00000 n 
+0004763742 00000 n 
+0004762400 00000 n 
+0000106427 00000 n 
+0000106247 00000 n 
+0000105759 00000 n 
+0000106363 00000 n 
+0004765074 00000 n 
+0000107922 00000 n 
+0000108072 00000 n 
+0000108244 00000 n 
+0000108416 00000 n 
+0000108585 00000 n 
+0000108761 00000 n 
+0000108930 00000 n 
+0000109082 00000 n 
+0000109251 00000 n 
+0000109404 00000 n 
+0000109574 00000 n 
+0000109746 00000 n 
+0000109915 00000 n 
+0000110067 00000 n 
+0000110236 00000 n 
+0000110407 00000 n 
+0000110580 00000 n 
+0000110746 00000 n 
+0000110898 00000 n 
+0000111067 00000 n 
+0000111248 00000 n 
+0000111414 00000 n 
+0000111570 00000 n 
+0000113542 00000 n 
+0000111921 00000 n 
+0000107587 00000 n 
+0000106529 00000 n 
+0000111739 00000 n 
+0000111861 00000 n 
+0004765523 00000 n 
+0004763298 00000 n 
+0004766264 00000 n 
+0000418538 00000 n 
+0000452803 00000 n 
+0000545934 00000 n 
+0000589072 00000 n 
+0000671779 00000 n 
+0000715049 00000 n 
+0000113711 00000 n 
+0000113882 00000 n 
+0000114054 00000 n 
+0000114226 00000 n 
+0000114392 00000 n 
+0000114552 00000 n 
+0000114718 00000 n 
+0000114873 00000 n 
+0000115041 00000 n 
+0000115196 00000 n 
+0000115364 00000 n 
+0000115534 00000 n 
+0000115692 00000 n 
+0000115860 00000 n 
+0000116031 00000 n 
+0000116202 00000 n 
+0000116352 00000 n 
+0000116524 00000 n 
+0000116692 00000 n 
+0000116862 00000 n 
+0000117030 00000 n 
+0000117196 00000 n 
+0000117367 00000 n 
+0000117522 00000 n 
+0000117690 00000 n 
+0000119639 00000 n 
+0000117925 00000 n 
+0000113180 00000 n 
+0000112065 00000 n 
+0000117861 00000 n 
+0000773261 00000 n 
+0000792413 00000 n 
+0001160029 00000 n 
+0001171205 00000 n 
+0001281823 00000 n 
+0001402366 00000 n 
+0000119792 00000 n 
+0000119961 00000 n 
+0000120142 00000 n 
+0000120308 00000 n 
+0000120459 00000 n 
+0000120628 00000 n 
+0000120777 00000 n 
+0000120948 00000 n 
+0000121117 00000 n 
+0000121274 00000 n 
+0000121443 00000 n 
+0000121612 00000 n 
+0000121784 00000 n 
+0000121934 00000 n 
+0000122102 00000 n 
+0000122274 00000 n 
+0000122443 00000 n 
+0000122616 00000 n 
+0000122773 00000 n 
+0000122945 00000 n 
+0000123113 00000 n 
+0000123272 00000 n 
+0000123440 00000 n 
+0000123611 00000 n 
+0000123783 00000 n 
+0000123960 00000 n 
+0000126008 00000 n 
+0000124172 00000 n 
+0000119268 00000 n 
+0000118069 00000 n 
+0000124108 00000 n 
+0001454457 00000 n 
+0001539057 00000 n 
+0001592331 00000 n 
+0001613431 00000 n 
+0001694965 00000 n 
+0001746317 00000 n 
+0001767304 00000 n 
+0001797135 00000 n 
+0000126179 00000 n 
+0000126347 00000 n 
+0000126508 00000 n 
+0000126681 00000 n 
+0000126852 00000 n 
+0000127020 00000 n 
+0000127177 00000 n 
+0000127349 00000 n 
+0000127522 00000 n 
+0000127694 00000 n 
+0000127841 00000 n 
+0000128013 00000 n 
+0000128181 00000 n 
+0000128351 00000 n 
+0000128500 00000 n 
+0000128677 00000 n 
+0000128848 00000 n 
+0000129023 00000 n 
+0000129202 00000 n 
+0000129374 00000 n 
+0000129542 00000 n 
+0000131314 00000 n 
+0000129775 00000 n 
+0000125682 00000 n 
+0000124316 00000 n 
+0000129711 00000 n 
+0004766836 00000 n 
+0001805963 00000 n 
+0001976437 00000 n 
+0002834502 00000 n 
+0002878206 00000 n 
+0002946273 00000 n 
+0000131483 00000 n 
+0000131636 00000 n 
+0000131805 00000 n 
+0000131959 00000 n 
+0000132128 00000 n 
+0000132274 00000 n 
+0000132443 00000 n 
+0000132619 00000 n 
+0000132783 00000 n 
+0000132951 00000 n 
+0000133101 00000 n 
+0000133273 00000 n 
+0000133442 00000 n 
+0000133617 00000 n 
+0000133764 00000 n 
+0000133933 00000 n 
+0000134082 00000 n 
+0000134251 00000 n 
+0000134420 00000 n 
+0000134572 00000 n 
+0000134741 00000 n 
+0000134910 00000 n 
+0000135062 00000 n 
+0000135231 00000 n 
+0000135390 00000 n 
+0000137075 00000 n 
+0000135626 00000 n 
+0000130952 00000 n 
+0000129919 00000 n 
+0000135562 00000 n 
+0002968112 00000 n 
+0002996710 00000 n 
+0003067653 00000 n 
+0003112102 00000 n 
+0003144477 00000 n 
+0003170857 00000 n 
+0003179709 00000 n 
+0003197436 00000 n 
+0003202156 00000 n 
+0003233116 00000 n 
+0000137243 00000 n 
+0000137414 00000 n 
+0000137570 00000 n 
+0000137738 00000 n 
+0000137886 00000 n 
+0000138054 00000 n 
+0000138207 00000 n 
+0000138379 00000 n 
+0000138551 00000 n 
+0000138720 00000 n 
+0000138872 00000 n 
+0000139042 00000 n 
+0000139213 00000 n 
+0000139385 00000 n 
+0000139553 00000 n 
+0000139706 00000 n 
+0000139874 00000 n 
+0000140046 00000 n 
+0000140218 00000 n 
+0000140365 00000 n 
+0000140532 00000 n 
+0000140685 00000 n 
+0000140856 00000 n 
+0000141024 00000 n 
+0000141196 00000 n 
+0000141351 00000 n 
+0000142827 00000 n 
+0000141587 00000 n 
+0000136704 00000 n 
+0000135770 00000 n 
+0000141523 00000 n 
+0003265329 00000 n 
+0003288910 00000 n 
+0003316630 00000 n 
+0003344124 00000 n 
+0003419293 00000 n 
+0003433472 00000 n 
+0003442324 00000 n 
+0003466572 00000 n 
+0000142996 00000 n 
+0000143152 00000 n 
+0000143324 00000 n 
+0000143493 00000 n 
+0000143662 00000 n 
+0000143833 00000 n 
+0000143981 00000 n 
+0000144158 00000 n 
+0000144330 00000 n 
+0000144499 00000 n 
+0000144653 00000 n 
+0000144834 00000 n 
+0000144983 00000 n 
+0000145216 00000 n 
+0000142573 00000 n 
+0000141731 00000 n 
+0000145152 00000 n 
+0003479265 00000 n 
+0003499841 00000 n 
+0003513582 00000 n 
+0003540989 00000 n 
+0000145641 00000 n 
+0000145461 00000 n 
+0000145360 00000 n 
+0000145577 00000 n 
+0000147101 00000 n 
+0000147255 00000 n 
+0000147408 00000 n 
+0000147560 00000 n 
+0000147714 00000 n 
+0000147868 00000 n 
+0000148022 00000 n 
+0000148176 00000 n 
+0000148329 00000 n 
+0000148478 00000 n 
+0000148633 00000 n 
+0000148786 00000 n 
+0000148941 00000 n 
+0000149095 00000 n 
+0000149254 00000 n 
+0000149414 00000 n 
+0000149574 00000 n 
+0000149734 00000 n 
+0000149899 00000 n 
+0000150059 00000 n 
+0000150213 00000 n 
+0000150367 00000 n 
+0000150522 00000 n 
+0000150682 00000 n 
+0000152908 00000 n 
+0000150906 00000 n 
+0000146757 00000 n 
+0000145683 00000 n 
+0000150842 00000 n 
+0000153062 00000 n 
+0000153222 00000 n 
+0000153381 00000 n 
+0000153541 00000 n 
+0000153694 00000 n 
+0000153848 00000 n 
+0000154003 00000 n 
+0000154157 00000 n 
+0000154317 00000 n 
+0000154482 00000 n 
+0000154647 00000 n 
+0000154812 00000 n 
+0000154977 00000 n 
+0000155137 00000 n 
+0000155302 00000 n 
+0000155462 00000 n 
+0000155627 00000 n 
+0000155792 00000 n 
+0000155941 00000 n 
+0000156096 00000 n 
+0000156248 00000 n 
+0000156403 00000 n 
+0000156558 00000 n 
+0000156713 00000 n 
+0000156873 00000 n 
+0000157036 00000 n 
+0000157196 00000 n 
+0000157361 00000 n 
+0000157521 00000 n 
+0000157686 00000 n 
+0000157846 00000 n 
+0000158011 00000 n 
+0000158171 00000 n 
+0000158335 00000 n 
+0000160650 00000 n 
+0000158554 00000 n 
+0000152465 00000 n 
+0000151022 00000 n 
+0000158490 00000 n 
+0004766962 00000 n 
+0000160804 00000 n 
+0000160963 00000 n 
+0000161123 00000 n 
+0000161283 00000 n 
+0000161443 00000 n 
+0000161603 00000 n 
+0000161756 00000 n 
+0000161911 00000 n 
+0000162065 00000 n 
+0000162220 00000 n 
+0000162380 00000 n 
+0000162540 00000 n 
+0000162695 00000 n 
+0000162849 00000 n 
+0000163004 00000 n 
+0000163164 00000 n 
+0000163329 00000 n 
+0000163494 00000 n 
+0000163659 00000 n 
+0000163819 00000 n 
+0000163974 00000 n 
+0000164133 00000 n 
+0000164292 00000 n 
+0000164452 00000 n 
+0000164612 00000 n 
+0000164772 00000 n 
+0000164932 00000 n 
+0000165092 00000 n 
+0000165245 00000 n 
+0000165400 00000 n 
+0000165555 00000 n 
+0000165715 00000 n 
+0000165879 00000 n 
+0000168293 00000 n 
+0000166103 00000 n 
+0000160216 00000 n 
+0000158670 00000 n 
+0000166039 00000 n 
+0000168452 00000 n 
+0000168612 00000 n 
+0000168772 00000 n 
+0000168936 00000 n 
+0000169099 00000 n 
+0000169254 00000 n 
+0000169414 00000 n 
+0000169569 00000 n 
+0000169729 00000 n 
+0000169889 00000 n 
+0000170049 00000 n 
+0000170209 00000 n 
+0000170362 00000 n 
+0000170517 00000 n 
+0000170672 00000 n 
+0000170832 00000 n 
+0000170992 00000 n 
+0000171152 00000 n 
+0000171312 00000 n 
+0000171477 00000 n 
+0000171642 00000 n 
+0000171807 00000 n 
+0000171962 00000 n 
+0000172122 00000 n 
+0000172282 00000 n 
+0000172437 00000 n 
+0000172597 00000 n 
+0000172757 00000 n 
+0000172916 00000 n 
+0000173080 00000 n 
+0000173240 00000 n 
+0000173400 00000 n 
+0000173558 00000 n 
+0000173713 00000 n 
+0000173868 00000 n 
+0000176038 00000 n 
+0000174092 00000 n 
+0000167841 00000 n 
+0000166205 00000 n 
+0000174028 00000 n 
+0000176197 00000 n 
+0000176357 00000 n 
+0000176509 00000 n 
+0000176663 00000 n 
+0000176818 00000 n 
+0000176973 00000 n 
+0000177133 00000 n 
+0000177293 00000 n 
+0000177448 00000 n 
+0000177601 00000 n 
+0000177755 00000 n 
+0000177909 00000 n 
+0000178069 00000 n 
+0000178234 00000 n 
+0000178398 00000 n 
+0000178562 00000 n 
+0000178722 00000 n 
+0000178882 00000 n 
+0000179037 00000 n 
+0000179187 00000 n 
+0000179342 00000 n 
+0000179495 00000 n 
+0000179650 00000 n 
+0000179805 00000 n 
+0000179965 00000 n 
+0000180125 00000 n 
+0000180285 00000 n 
+0000180445 00000 n 
+0000180605 00000 n 
+0000180758 00000 n 
+0000180914 00000 n 
+0000183395 00000 n 
+0000181134 00000 n 
+0000175622 00000 n 
+0000174194 00000 n 
+0000181070 00000 n 
+0000183550 00000 n 
+0000183711 00000 n 
+0000183871 00000 n 
+0000184031 00000 n 
+0000184187 00000 n 
+0000184346 00000 n 
+0000184507 00000 n 
+0000184668 00000 n 
+0000184829 00000 n 
+0000184990 00000 n 
+0000185151 00000 n 
+0000185312 00000 n 
+0000185473 00000 n 
+0000185629 00000 n 
+0000185788 00000 n 
+0000185949 00000 n 
+0000186109 00000 n 
+0000186265 00000 n 
+0000186426 00000 n 
+0000186587 00000 n 
+0000186743 00000 n 
+0000186904 00000 n 
+0000187065 00000 n 
+0000187226 00000 n 
+0000187392 00000 n 
+0000187548 00000 n 
+0000187709 00000 n 
+0000187870 00000 n 
+0000188030 00000 n 
+0000188191 00000 n 
+0000188352 00000 n 
+0000188505 00000 n 
+0000188660 00000 n 
+0000188821 00000 n 
+0000188981 00000 n 
+0000189137 00000 n 
+0000189298 00000 n 
+0000191653 00000 n 
+0000189528 00000 n 
+0000182925 00000 n 
+0000181250 00000 n 
+0000189464 00000 n 
+0000191818 00000 n 
+0000191979 00000 n 
+0000192138 00000 n 
+0000192299 00000 n 
+0000192465 00000 n 
+0000192626 00000 n 
+0000192782 00000 n 
+0000192943 00000 n 
+0000193104 00000 n 
+0000193270 00000 n 
+0000193436 00000 n 
+0000193592 00000 n 
+0000193753 00000 n 
+0000193914 00000 n 
+0000194075 00000 n 
+0000194235 00000 n 
+0000194400 00000 n 
+0000194565 00000 n 
+0000194731 00000 n 
+0000194897 00000 n 
+0000195063 00000 n 
+0000195228 00000 n 
+0000195393 00000 n 
+0000195558 00000 n 
+0000195722 00000 n 
+0000195888 00000 n 
+0000196054 00000 n 
+0000196210 00000 n 
+0000196371 00000 n 
+0000196532 00000 n 
+0000196685 00000 n 
+0000196840 00000 n 
+0000196996 00000 n 
+0000199361 00000 n 
+0000197221 00000 n 
+0000191219 00000 n 
+0000189630 00000 n 
+0000197157 00000 n 
+0000199522 00000 n 
+0000199681 00000 n 
+0000199847 00000 n 
+0000200008 00000 n 
+0000200169 00000 n 
+0000200325 00000 n 
+0000200486 00000 n 
+0000200646 00000 n 
+0000200802 00000 n 
+0000200962 00000 n 
+0000201123 00000 n 
+0000201276 00000 n 
+0000201432 00000 n 
+0000201587 00000 n 
+0000201743 00000 n 
+0000201904 00000 n 
+0000202070 00000 n 
+0000202236 00000 n 
+0000202401 00000 n 
+0000202567 00000 n 
+0000202728 00000 n 
+0000202889 00000 n 
+0000203055 00000 n 
+0000203211 00000 n 
+0000203372 00000 n 
+0000203532 00000 n 
+0000203693 00000 n 
+0000203853 00000 n 
+0000204009 00000 n 
+0000204165 00000 n 
+0000204326 00000 n 
+0000204487 00000 n 
+0000204643 00000 n 
+0000204798 00000 n 
+0000207193 00000 n 
+0000205023 00000 n 
+0000198918 00000 n 
+0000197323 00000 n 
+0000204959 00000 n 
+0004767088 00000 n 
+0000207353 00000 n 
+0000207514 00000 n 
+0000207679 00000 n 
+0000207845 00000 n 
+0000208011 00000 n 
+0000208177 00000 n 
+0000208338 00000 n 
+0000208494 00000 n 
+0000208651 00000 n 
+0000208808 00000 n 
+0000208965 00000 n 
+0000209122 00000 n 
+0000209284 00000 n 
+0000209446 00000 n 
+0000209603 00000 n 
+0000209757 00000 n 
+0000209912 00000 n 
+0000210073 00000 n 
+0000210233 00000 n 
+0000210394 00000 n 
+0000210554 00000 n 
+0000210710 00000 n 
+0000210870 00000 n 
+0000211036 00000 n 
+0000211201 00000 n 
+0000211362 00000 n 
+0000211523 00000 n 
+0000211684 00000 n 
+0000211849 00000 n 
+0000212015 00000 n 
+0000212169 00000 n 
+0000212325 00000 n 
+0000212486 00000 n 
+0000212647 00000 n 
+0000215009 00000 n 
+0000212872 00000 n 
+0000206750 00000 n 
+0000205125 00000 n 
+0000212808 00000 n 
+0000215164 00000 n 
+0000215320 00000 n 
+0000215481 00000 n 
+0000215635 00000 n 
+0000215790 00000 n 
+0000215946 00000 n 
+0000216107 00000 n 
+0000216268 00000 n 
+0000216429 00000 n 
+0000216594 00000 n 
+0000216750 00000 n 
+0000216911 00000 n 
+0000217072 00000 n 
+0000217233 00000 n 
+0000217389 00000 n 
+0000217549 00000 n 
+0000217715 00000 n 
+0000217880 00000 n 
+0000218036 00000 n 
+0000218197 00000 n 
+0000218358 00000 n 
+0000218519 00000 n 
+0000218679 00000 n 
+0000218845 00000 n 
+0000219011 00000 n 
+0000219172 00000 n 
+0000219332 00000 n 
+0000219493 00000 n 
+0000219654 00000 n 
+0000219820 00000 n 
+0000219986 00000 n 
+0000222442 00000 n 
+0000220216 00000 n 
+0000214593 00000 n 
+0000212974 00000 n 
+0000220152 00000 n 
+0000222597 00000 n 
+0000222758 00000 n 
+0000222919 00000 n 
+0000223080 00000 n 
+0000223234 00000 n 
+0000223390 00000 n 
+0000223545 00000 n 
+0000223706 00000 n 
+0000223871 00000 n 
+0000224036 00000 n 
+0000224202 00000 n 
+0000224367 00000 n 
+0000224533 00000 n 
+0000224699 00000 n 
+0000224864 00000 n 
+0000225030 00000 n 
+0000225196 00000 n 
+0000225352 00000 n 
+0000225513 00000 n 
+0000225679 00000 n 
+0000225845 00000 n 
+0000226001 00000 n 
+0000226162 00000 n 
+0000226323 00000 n 
+0000226479 00000 n 
+0000226635 00000 n 
+0000226796 00000 n 
+0000226957 00000 n 
+0000227118 00000 n 
+0000227273 00000 n 
+0000227427 00000 n 
+0000227583 00000 n 
+0000227739 00000 n 
+0000227895 00000 n 
+0000228056 00000 n 
+0000228217 00000 n 
+0000228378 00000 n 
+0000230806 00000 n 
+0000228603 00000 n 
+0000221972 00000 n 
+0000220318 00000 n 
+0000228539 00000 n 
+0004765671 00000 n 
+0000230966 00000 n 
+0000231127 00000 n 
+0000231283 00000 n 
+0000231439 00000 n 
+0000231600 00000 n 
+0000231761 00000 n 
+0000231915 00000 n 
+0000232070 00000 n 
+0000232226 00000 n 
+0000232380 00000 n 
+0000232541 00000 n 
+0000232702 00000 n 
+0000232863 00000 n 
+0000233019 00000 n 
+0000233179 00000 n 
+0000233340 00000 n 
+0000233495 00000 n 
+0000233651 00000 n 
+0000233812 00000 n 
+0000233973 00000 n 
+0000234127 00000 n 
+0000234283 00000 n 
+0000234439 00000 n 
+0000234600 00000 n 
+0000234754 00000 n 
+0000234910 00000 n 
+0000235065 00000 n 
+0000235226 00000 n 
+0000235385 00000 n 
+0000235541 00000 n 
+0000235702 00000 n 
+0000235863 00000 n 
+0000236019 00000 n 
+0000236179 00000 n 
+0000238645 00000 n 
+0000236409 00000 n 
+0000230363 00000 n 
+0000228719 00000 n 
+0000236345 00000 n 
+0000238810 00000 n 
+0000238976 00000 n 
+0000239142 00000 n 
+0000239307 00000 n 
+0000239473 00000 n 
+0000239629 00000 n 
+0000239790 00000 n 
+0000239951 00000 n 
+0000240112 00000 n 
+0000240273 00000 n 
+0000240434 00000 n 
+0000240590 00000 n 
+0000240749 00000 n 
+0000240910 00000 n 
+0000241076 00000 n 
+0000241241 00000 n 
+0000241407 00000 n 
+0000241573 00000 n 
+0000241739 00000 n 
+0000241905 00000 n 
+0000242071 00000 n 
+0000242237 00000 n 
+0000242403 00000 n 
+0000242558 00000 n 
+0000242718 00000 n 
+0000242879 00000 n 
+0000243040 00000 n 
+0000243201 00000 n 
+0000243357 00000 n 
+0000243518 00000 n 
+0000243679 00000 n 
+0000243840 00000 n 
+0000244001 00000 n 
+0000244162 00000 n 
+0000244322 00000 n 
+0000244483 00000 n 
+0000247123 00000 n 
+0000244703 00000 n 
+0000238184 00000 n 
+0000236511 00000 n 
+0000244639 00000 n 
+0000247283 00000 n 
+0000247444 00000 n 
+0000247605 00000 n 
+0000247765 00000 n 
+0000247920 00000 n 
+0000248077 00000 n 
+0000248234 00000 n 
+0000248391 00000 n 
+0000248548 00000 n 
+0000248710 00000 n 
+0000248872 00000 n 
+0000249026 00000 n 
+0000249182 00000 n 
+0000249343 00000 n 
+0000249504 00000 n 
+0000249660 00000 n 
+0000249821 00000 n 
+0000249982 00000 n 
+0000250143 00000 n 
+0000250298 00000 n 
+0000250459 00000 n 
+0000250620 00000 n 
+0000250780 00000 n 
+0000250941 00000 n 
+0000251102 00000 n 
+0000251257 00000 n 
+0000251417 00000 n 
+0000251578 00000 n 
+0000251739 00000 n 
+0000251900 00000 n 
+0000252061 00000 n 
+0000252222 00000 n 
+0000252381 00000 n 
+0000252542 00000 n 
+0000252698 00000 n 
+0000255187 00000 n 
+0000252923 00000 n 
+0000246671 00000 n 
+0000244805 00000 n 
+0000252859 00000 n 
+0004767214 00000 n 
+0000255347 00000 n 
+0000255508 00000 n 
+0000255674 00000 n 
+0000255834 00000 n 
+0000255995 00000 n 
+0000256156 00000 n 
+0000256317 00000 n 
+0000256478 00000 n 
+0000256639 00000 n 
+0000256801 00000 n 
+0000256963 00000 n 
+0000257125 00000 n 
+0000257285 00000 n 
+0000257447 00000 n 
+0000257608 00000 n 
+0000257769 00000 n 
+0000257931 00000 n 
+0000258093 00000 n 
+0000258255 00000 n 
+0000258411 00000 n 
+0000258572 00000 n 
+0000258733 00000 n 
+0000258894 00000 n 
+0000259049 00000 n 
+0000259210 00000 n 
+0000259371 00000 n 
+0000259526 00000 n 
+0000259687 00000 n 
+0000259848 00000 n 
+0000260004 00000 n 
+0000260165 00000 n 
+0000260326 00000 n 
+0000260487 00000 n 
+0000260647 00000 n 
+0000260804 00000 n 
+0000263405 00000 n 
+0000261030 00000 n 
+0000254735 00000 n 
+0000253039 00000 n 
+0000260966 00000 n 
+0000263566 00000 n 
+0000263728 00000 n 
+0000263890 00000 n 
+0000264051 00000 n 
+0000264213 00000 n 
+0000264375 00000 n 
+0000264537 00000 n 
+0000264699 00000 n 
+0000264862 00000 n 
+0000265025 00000 n 
+0000265188 00000 n 
+0000265349 00000 n 
+0000265512 00000 n 
+0000265675 00000 n 
+0000265837 00000 n 
+0000265994 00000 n 
+0000266156 00000 n 
+0000266318 00000 n 
+0000266480 00000 n 
+0000266642 00000 n 
+0000266804 00000 n 
+0000266966 00000 n 
+0000267122 00000 n 
+0000267283 00000 n 
+0000267445 00000 n 
+0000267607 00000 n 
+0000267768 00000 n 
+0000267925 00000 n 
+0000268087 00000 n 
+0000268254 00000 n 
+0000268421 00000 n 
+0000268588 00000 n 
+0000268754 00000 n 
+0000268921 00000 n 
+0000269088 00000 n 
+0000269255 00000 n 
+0000271693 00000 n 
+0000269486 00000 n 
+0000262944 00000 n 
+0000261146 00000 n 
+0000269422 00000 n 
+0000271855 00000 n 
+0000272012 00000 n 
+0000272173 00000 n 
+0000272335 00000 n 
+0000272497 00000 n 
+0000272659 00000 n 
+0000272821 00000 n 
+0000272983 00000 n 
+0000273145 00000 n 
+0000273302 00000 n 
+0000273457 00000 n 
+0000273619 00000 n 
+0000273781 00000 n 
+0000273942 00000 n 
+0000274098 00000 n 
+0000274255 00000 n 
+0000274412 00000 n 
+0000274574 00000 n 
+0000274736 00000 n 
+0000274898 00000 n 
+0000275060 00000 n 
+0000275221 00000 n 
+0000275383 00000 n 
+0000275544 00000 n 
+0000275706 00000 n 
+0000275868 00000 n 
+0000276031 00000 n 
+0000276194 00000 n 
+0000276357 00000 n 
+0000276520 00000 n 
+0000276682 00000 n 
+0000279101 00000 n 
+0000276909 00000 n 
+0000271277 00000 n 
+0000269602 00000 n 
+0000276845 00000 n 
+0000279264 00000 n 
+0000279427 00000 n 
+0000279590 00000 n 
+0000279753 00000 n 
+0000279916 00000 n 
+0000280073 00000 n 
+0000280227 00000 n 
+0000280383 00000 n 
+0000280539 00000 n 
+0000280695 00000 n 
+0000280856 00000 n 
+0000281017 00000 n 
+0000281178 00000 n 
+0000281344 00000 n 
+0000281505 00000 n 
+0000281664 00000 n 
+0000281825 00000 n 
+0000281986 00000 n 
+0000282152 00000 n 
+0000282308 00000 n 
+0000282468 00000 n 
+0000282629 00000 n 
+0000282790 00000 n 
+0000282944 00000 n 
+0000283100 00000 n 
+0000283256 00000 n 
+0000283412 00000 n 
+0000283572 00000 n 
+0000283733 00000 n 
+0000283889 00000 n 
+0000284050 00000 n 
+0000284211 00000 n 
+0000284371 00000 n 
+0000286749 00000 n 
+0000284596 00000 n 
+0000278667 00000 n 
+0000277011 00000 n 
+0000284532 00000 n 
+0000286909 00000 n 
+0000287070 00000 n 
+0000287226 00000 n 
+0000287386 00000 n 
+0000287547 00000 n 
+0000287708 00000 n 
+0000287874 00000 n 
+0000288040 00000 n 
+0000288206 00000 n 
+0000288372 00000 n 
+0000288538 00000 n 
+0000288703 00000 n 
+0000288869 00000 n 
+0000289025 00000 n 
+0000289180 00000 n 
+0000289340 00000 n 
+0000289501 00000 n 
+0000289655 00000 n 
+0000289811 00000 n 
+0000289967 00000 n 
+0000290123 00000 n 
+0000290284 00000 n 
+0000290444 00000 n 
+0000290599 00000 n 
+0000290760 00000 n 
+0000290921 00000 n 
+0000291075 00000 n 
+0000291231 00000 n 
+0000291387 00000 n 
+0000291548 00000 n 
+0000291709 00000 n 
+0000291875 00000 n 
+0000292036 00000 n 
+0000292202 00000 n 
+0000292367 00000 n 
+0000292523 00000 n 
+0000294763 00000 n 
+0000292743 00000 n 
+0000286288 00000 n 
+0000284698 00000 n 
+0000292679 00000 n 
+0000294923 00000 n 
+0000295084 00000 n 
+0000295245 00000 n 
+0000295400 00000 n 
+0000295554 00000 n 
+0000295715 00000 n 
+0000295869 00000 n 
+0000296025 00000 n 
+0000296181 00000 n 
+0000296342 00000 n 
+0000296508 00000 n 
+0000296674 00000 n 
+0000296840 00000 n 
+0000297006 00000 n 
+0000297167 00000 n 
+0000297333 00000 n 
+0000297499 00000 n 
+0000297665 00000 n 
+0000297826 00000 n 
+0000297987 00000 n 
+0000298148 00000 n 
+0000298314 00000 n 
+0000298480 00000 n 
+0000298646 00000 n 
+0000298812 00000 n 
+0000298968 00000 n 
+0000299124 00000 n 
+0000299280 00000 n 
+0000299440 00000 n 
+0000299605 00000 n 
+0000299766 00000 n 
+0000299927 00000 n 
+0000300081 00000 n 
+0000300242 00000 n 
+0000300403 00000 n 
+0000302812 00000 n 
+0000300628 00000 n 
+0000294311 00000 n 
+0000292845 00000 n 
+0000300564 00000 n 
+0004767340 00000 n 
+0000302973 00000 n 
+0000303127 00000 n 
+0000303283 00000 n 
+0000303439 00000 n 
+0000303599 00000 n 
+0000303765 00000 n 
+0000303926 00000 n 
+0000304092 00000 n 
+0000304258 00000 n 
+0000304418 00000 n 
+0000304579 00000 n 
+0000304740 00000 n 
+0000304906 00000 n 
+0000305072 00000 n 
+0000305237 00000 n 
+0000305403 00000 n 
+0000305559 00000 n 
+0000305720 00000 n 
+0000305881 00000 n 
+0000306035 00000 n 
+0000306191 00000 n 
+0000306346 00000 n 
+0000306502 00000 n 
+0000306663 00000 n 
+0000306824 00000 n 
+0000306985 00000 n 
+0000307145 00000 n 
+0000307301 00000 n 
+0000307462 00000 n 
+0000307623 00000 n 
+0000307784 00000 n 
+0000307944 00000 n 
+0000308105 00000 n 
+0000308261 00000 n 
+0000308422 00000 n 
+0000310628 00000 n 
+0000308647 00000 n 
+0000302360 00000 n 
+0000300730 00000 n 
+0000308583 00000 n 
+0000310788 00000 n 
+0000310942 00000 n 
+0000311097 00000 n 
+0000311253 00000 n 
+0000311409 00000 n 
+0000311565 00000 n 
+0000311721 00000 n 
+0000311881 00000 n 
+0000312042 00000 n 
+0000312203 00000 n 
+0000312359 00000 n 
+0000312520 00000 n 
+0000312674 00000 n 
+0000312830 00000 n 
+0000312986 00000 n 
+0000313147 00000 n 
+0000313308 00000 n 
+0000313469 00000 n 
+0000313630 00000 n 
+0000313783 00000 n 
+0000313939 00000 n 
+0000314095 00000 n 
+0000314256 00000 n 
+0000314417 00000 n 
+0000314582 00000 n 
+0000314748 00000 n 
+0000314914 00000 n 
+0000315079 00000 n 
+0000315245 00000 n 
+0000315411 00000 n 
+0000315577 00000 n 
+0000315738 00000 n 
+0000315899 00000 n 
+0000316060 00000 n 
+0000318250 00000 n 
+0000316285 00000 n 
+0000310185 00000 n 
+0000308749 00000 n 
+0000316221 00000 n 
+0000318403 00000 n 
+0000318556 00000 n 
+0000318710 00000 n 
+0000318871 00000 n 
+0000319032 00000 n 
+0000319193 00000 n 
+0000319343 00000 n 
+0000319497 00000 n 
+0000319653 00000 n 
+0000319814 00000 n 
+0000319974 00000 n 
+0000320135 00000 n 
+0000320291 00000 n 
+0000320452 00000 n 
+0000320613 00000 n 
+0000320779 00000 n 
+0000320945 00000 n 
+0000321111 00000 n 
+0000321277 00000 n 
+0000321438 00000 n 
+0000321603 00000 n 
+0000321768 00000 n 
+0000321934 00000 n 
+0000322100 00000 n 
+0000322254 00000 n 
+0000322410 00000 n 
+0000322571 00000 n 
+0000322737 00000 n 
+0000322903 00000 n 
+0000323069 00000 n 
+0000323234 00000 n 
+0000323400 00000 n 
+0000323561 00000 n 
+0000325713 00000 n 
+0000323781 00000 n 
+0000317816 00000 n 
+0000316387 00000 n 
+0000323717 00000 n 
+0000325873 00000 n 
+0000326034 00000 n 
+0000326188 00000 n 
+0000326344 00000 n 
+0000326499 00000 n 
+0000326660 00000 n 
+0000326826 00000 n 
+0000326992 00000 n 
+0000327153 00000 n 
+0000327313 00000 n 
+0000327473 00000 n 
+0000327629 00000 n 
+0000327790 00000 n 
+0000327951 00000 n 
+0000328112 00000 n 
+0000328272 00000 n 
+0000328433 00000 n 
+0000328594 00000 n 
+0000328755 00000 n 
+0000328916 00000 n 
+0000329065 00000 n 
+0000329219 00000 n 
+0000329375 00000 n 
+0000329531 00000 n 
+0000329687 00000 n 
+0000329840 00000 n 
+0000329996 00000 n 
+0000330157 00000 n 
+0000330318 00000 n 
+0000330479 00000 n 
+0000330639 00000 n 
+0000332970 00000 n 
+0000330869 00000 n 
+0000325297 00000 n 
+0000323897 00000 n 
+0000330805 00000 n 
+0000333135 00000 n 
+0000333291 00000 n 
+0000333447 00000 n 
+0000333603 00000 n 
+0000333757 00000 n 
+0000333913 00000 n 
+0000334069 00000 n 
+0000334225 00000 n 
+0000334384 00000 n 
+0000334539 00000 n 
+0000334695 00000 n 
+0000334851 00000 n 
+0000335005 00000 n 
+0000335161 00000 n 
+0000335317 00000 n 
+0000335467 00000 n 
+0000335621 00000 n 
+0000335777 00000 n 
+0000335938 00000 n 
+0000336099 00000 n 
+0000336265 00000 n 
+0000336431 00000 n 
+0000336586 00000 n 
+0000336741 00000 n 
+0000336897 00000 n 
+0000337058 00000 n 
+0000337224 00000 n 
+0000337390 00000 n 
+0000337556 00000 n 
+0000337712 00000 n 
+0000337872 00000 n 
+0000338033 00000 n 
+0000338199 00000 n 
+0000340449 00000 n 
+0000338429 00000 n 
+0000332536 00000 n 
+0000330985 00000 n 
+0000338365 00000 n 
+0000340602 00000 n 
+0000340758 00000 n 
+0000340914 00000 n 
+0000341069 00000 n 
+0000341225 00000 n 
+0000341381 00000 n 
+0000341537 00000 n 
+0000341698 00000 n 
+0000341859 00000 n 
+0000342013 00000 n 
+0000342169 00000 n 
+0000342324 00000 n 
+0000342485 00000 n 
+0000342646 00000 n 
+0000342806 00000 n 
+0000342961 00000 n 
+0000343122 00000 n 
+0000343283 00000 n 
+0000343444 00000 n 
+0000343605 00000 n 
+0000343766 00000 n 
+0000343927 00000 n 
+0000344082 00000 n 
+0000344242 00000 n 
+0000344398 00000 n 
+0000344554 00000 n 
+0000344708 00000 n 
+0000344864 00000 n 
+0000345020 00000 n 
+0000345176 00000 n 
+0000345332 00000 n 
+0000345488 00000 n 
+0000345644 00000 n 
+0000345800 00000 n 
+0000345955 00000 n 
+0000346111 00000 n 
+0000347746 00000 n 
+0000346332 00000 n 
+0000339988 00000 n 
+0000338545 00000 n 
+0000346268 00000 n 
+0004767466 00000 n 
+0000347902 00000 n 
+0000348059 00000 n 
+0000348212 00000 n 
+0000348368 00000 n 
+0000348524 00000 n 
+0000348685 00000 n 
+0000348846 00000 n 
+0000349007 00000 n 
+0000349163 00000 n 
+0000349319 00000 n 
+0000349472 00000 n 
+0000349628 00000 n 
+0000349784 00000 n 
+0000349938 00000 n 
+0000350094 00000 n 
+0000350250 00000 n 
+0000350411 00000 n 
+0000350572 00000 n 
+0000350726 00000 n 
+0000350881 00000 n 
+0000351100 00000 n 
+0000347429 00000 n 
+0000346434 00000 n 
+0000351036 00000 n 
+0000351483 00000 n 
+0000351303 00000 n 
+0000351202 00000 n 
+0000351419 00000 n 
+0000352756 00000 n 
+0000352911 00000 n 
+0000353067 00000 n 
+0000353223 00000 n 
+0000353379 00000 n 
+0000353535 00000 n 
+0000353691 00000 n 
+0000353847 00000 n 
+0000354003 00000 n 
+0000354159 00000 n 
+0000354315 00000 n 
+0000354470 00000 n 
+0000354627 00000 n 
+0000354783 00000 n 
+0000354939 00000 n 
+0000355095 00000 n 
+0000355251 00000 n 
+0000355533 00000 n 
+0000352475 00000 n 
+0000351525 00000 n 
+0000355407 00000 n 
+0000422584 00000 n 
+0000431940 00000 n 
+0000462050 00000 n 
+0000468445 00000 n 
+0000473310 00000 n 
+0000483915 00000 n 
+0000495189 00000 n 
+0000499686 00000 n 
+0000512543 00000 n 
+0000527428 00000 n 
+0000534300 00000 n 
+0000539870 00000 n 
+0000638953 00000 n 
+0000647174 00000 n 
+0000687488 00000 n 
+0000691396 00000 n 
+0000704865 00000 n 
+0000356950 00000 n 
+0000357106 00000 n 
+0000357262 00000 n 
+0000357419 00000 n 
+0000357576 00000 n 
+0000357733 00000 n 
+0000357890 00000 n 
+0000358047 00000 n 
+0000358204 00000 n 
+0000358361 00000 n 
+0000358518 00000 n 
+0000358675 00000 n 
+0000358832 00000 n 
+0000358988 00000 n 
+0000359144 00000 n 
+0000359301 00000 n 
+0000359458 00000 n 
+0000359615 00000 n 
+0000361172 00000 n 
+0000359836 00000 n 
+0000356660 00000 n 
+0000355635 00000 n 
+0000359772 00000 n 
+0000780590 00000 n 
+0000787925 00000 n 
+0001199824 00000 n 
+0001203601 00000 n 
+0001204113 00000 n 
+0001208197 00000 n 
+0001208708 00000 n 
+0001315362 00000 n 
+0001383455 00000 n 
+0001444359 00000 n 
+0001446896 00000 n 
+0001447343 00000 n 
+0001479350 00000 n 
+0001482927 00000 n 
+0001556559 00000 n 
+0001562063 00000 n 
+0001569659 00000 n 
+0001577020 00000 n 
+0000361329 00000 n 
+0000361486 00000 n 
+0000361643 00000 n 
+0000361800 00000 n 
+0000361957 00000 n 
+0000362114 00000 n 
+0000362271 00000 n 
+0000362428 00000 n 
+0000362585 00000 n 
+0000362742 00000 n 
+0000362900 00000 n 
+0000363056 00000 n 
+0000363213 00000 n 
+0000364410 00000 n 
+0000363434 00000 n 
+0000360918 00000 n 
+0000359938 00000 n 
+0000363370 00000 n 
+0001586846 00000 n 
+0001635573 00000 n 
+0001726617 00000 n 
+0001727193 00000 n 
+0001800031 00000 n 
+0001815223 00000 n 
+0001831730 00000 n 
+0001872449 00000 n 
+0001987008 00000 n 
+0001991872 00000 n 
+0002490922 00000 n 
+0002837758 00000 n 
+0002838351 00000 n 
+0002868012 00000 n 
+0000364566 00000 n 
+0000364723 00000 n 
+0000364880 00000 n 
+0000365037 00000 n 
+0000365194 00000 n 
+0000365351 00000 n 
+0000365508 00000 n 
+0000366577 00000 n 
+0000365729 00000 n 
+0000364210 00000 n 
+0000363536 00000 n 
+0000365665 00000 n 
+0004767592 00000 n 
+0002920475 00000 n 
+0002965651 00000 n 
+0003161834 00000 n 
+0003212812 00000 n 
+0003218315 00000 n 
+0003222704 00000 n 
+0003227646 00000 n 
+0003229423 00000 n 
+0000366733 00000 n 
+0000366890 00000 n 
+0000367047 00000 n 
+0000367264 00000 n 
+0000366413 00000 n 
+0000365831 00000 n 
+0000367200 00000 n 
+0003319643 00000 n 
+0003328797 00000 n 
+0003332629 00000 n 
+0003495131 00000 n 
+0000367647 00000 n 
+0000367467 00000 n 
+0000367366 00000 n 
+0000367583 00000 n 
+0000369109 00000 n 
+0000369254 00000 n 
+0000369407 00000 n 
+0000369553 00000 n 
+0000369705 00000 n 
+0000369858 00000 n 
+0000370011 00000 n 
+0000370164 00000 n 
+0000370317 00000 n 
+0000370468 00000 n 
+0000370621 00000 n 
+0000370774 00000 n 
+0000370927 00000 n 
+0000371081 00000 n 
+0000371234 00000 n 
+0000371388 00000 n 
+0000371542 00000 n 
+0000371696 00000 n 
+0000371850 00000 n 
+0000372003 00000 n 
+0000372157 00000 n 
+0000372311 00000 n 
+0000372465 00000 n 
+0000372619 00000 n 
+0000372772 00000 n 
+0000372926 00000 n 
+0000373080 00000 n 
+0000373226 00000 n 
+0000375421 00000 n 
+0000373506 00000 n 
+0000368729 00000 n 
+0000367689 00000 n 
+0000373380 00000 n 
+0004517770 00000 n 
+0000598358 00000 n 
+0004517736 00000 n 
+0000824394 00000 n 
+0000844976 00000 n 
+0000863097 00000 n 
+0000894309 00000 n 
+0000916235 00000 n 
+0000929755 00000 n 
+0000944706 00000 n 
+0000956218 00000 n 
+0000970797 00000 n 
+0000983165 00000 n 
+0000993692 00000 n 
+0001008364 00000 n 
+0001008492 00000 n 
+0001047949 00000 n 
+0001048077 00000 n 
+0001091724 00000 n 
+0001091852 00000 n 
+0001125547 00000 n 
+0001125675 00000 n 
+0001142360 00000 n 
+0001142488 00000 n 
+0001155449 00000 n 
+0001155577 00000 n 
+0004517702 00000 n 
+0001259644 00000 n 
+0000375566 00000 n 
+0000375720 00000 n 
+0000375874 00000 n 
+0000376020 00000 n 
+0000376174 00000 n 
+0000376328 00000 n 
+0000376482 00000 n 
+0000376628 00000 n 
+0000376782 00000 n 
+0000376928 00000 n 
+0000377081 00000 n 
+0000377227 00000 n 
+0000377381 00000 n 
+0000377535 00000 n 
+0000377689 00000 n 
+0000377842 00000 n 
+0000377996 00000 n 
+0000378150 00000 n 
+0000378304 00000 n 
+0000378454 00000 n 
+0000378608 00000 n 
+0000378762 00000 n 
+0000378917 00000 n 
+0000379072 00000 n 
+0000379227 00000 n 
+0000379381 00000 n 
+0000379536 00000 n 
+0000379690 00000 n 
+0000379845 00000 n 
+0000380000 00000 n 
+0000380155 00000 n 
+0000381088 00000 n 
+0000380365 00000 n 
+0000375005 00000 n 
+0000373608 00000 n 
+0000380301 00000 n 
+0004517668 00000 n 
+0001298446 00000 n 
+0001306096 00000 n 
+0004517634 00000 n 
+0001410501 00000 n 
+0001422006 00000 n 
+0001422134 00000 n 
+0004517600 00000 n 
+0001635445 00000 n 
+0004517566 00000 n 
+0001780551 00000 n 
+0004517532 00000 n 
+0002033747 00000 n 
+0002069488 00000 n 
+0002069744 00000 n 
+0002143174 00000 n 
+0002143302 00000 n 
+0002179228 00000 n 
+0002211177 00000 n 
+0002258647 00000 n 
+0002291328 00000 n 
+0002359241 00000 n 
+0002364508 00000 n 
+0002370780 00000 n 
+0002437957 00000 n 
+0002438213 00000 n 
+0002474278 00000 n 
+0002577810 00000 n 
+0002687777 00000 n 
+0002715860 00000 n 
+0002832255 00000 n 
+0004517498 00000 n 
+0000381241 00000 n 
+0000381387 00000 n 
+0000381540 00000 n 
+0000381758 00000 n 
+0000380924 00000 n 
+0000380467 00000 n 
+0000381694 00000 n 
+0002887942 00000 n 
+0004517464 00000 n 
+0003367939 00000 n 
+0003408101 00000 n 
+0000383294 00000 n 
+0000383438 00000 n 
+0000383589 00000 n 
+0000383741 00000 n 
+0000383886 00000 n 
+0000384038 00000 n 
+0000384183 00000 n 
+0000384334 00000 n 
+0000384480 00000 n 
+0000384632 00000 n 
+0000384778 00000 n 
+0000384931 00000 n 
+0000385083 00000 n 
+0000385236 00000 n 
+0000385389 00000 n 
+0000385535 00000 n 
+0000385687 00000 n 
+0000385840 00000 n 
+0000385993 00000 n 
+0000386146 00000 n 
+0000386299 00000 n 
+0000386444 00000 n 
+0000386723 00000 n 
+0000382968 00000 n 
+0000381860 00000 n 
+0000386597 00000 n 
+0004767718 00000 n 
+0004517430 00000 n 
+0000428677 00000 n 
+0000450131 00000 n 
+0004517396 00000 n 
+0000677419 00000 n 
+0004517362 00000 n 
+0000739750 00000 n 
+0004517328 00000 n 
+0001169323 00000 n 
+0001263526 00000 n 
+0001267118 00000 n 
+0001267246 00000 n 
+0001270044 00000 n 
+0001334342 00000 n 
+0001346208 00000 n 
+0001398050 00000 n 
+0001400354 00000 n 
+0001400482 00000 n 
+0001441733 00000 n 
+0000388491 00000 n 
+0000388636 00000 n 
+0000388789 00000 n 
+0000388935 00000 n 
+0000389088 00000 n 
+0000389240 00000 n 
+0000389393 00000 n 
+0000389546 00000 n 
+0000389699 00000 n 
+0000389844 00000 n 
+0000389996 00000 n 
+0000390142 00000 n 
+0000390295 00000 n 
+0000390441 00000 n 
+0000390594 00000 n 
+0000390740 00000 n 
+0000390893 00000 n 
+0000391046 00000 n 
+0000391199 00000 n 
+0000391345 00000 n 
+0000391498 00000 n 
+0000391644 00000 n 
+0000391797 00000 n 
+0000391950 00000 n 
+0000392094 00000 n 
+0000392247 00000 n 
+0000393368 00000 n 
+0000392457 00000 n 
+0000388129 00000 n 
+0000386825 00000 n 
+0000392393 00000 n 
+0004517294 00000 n 
+0001597941 00000 n 
+0001626058 00000 n 
+0001646706 00000 n 
+0001649430 00000 n 
+0001691440 00000 n 
+0001693088 00000 n 
+0004517260 00000 n 
+0001855737 00000 n 
+0002310494 00000 n 
+0004517226 00000 n 
+0002846210 00000 n 
+0004517192 00000 n 
+0003046241 00000 n 
+0003046372 00000 n 
+0003054133 00000 n 
+0004517158 00000 n 
+0003103502 00000 n 
+0004517124 00000 n 
+0003125206 00000 n 
+0003125335 00000 n 
+0004517090 00000 n 
+0003168183 00000 n 
+0004517056 00000 n 
+0000393520 00000 n 
+0000393666 00000 n 
+0000393818 00000 n 
+0000393971 00000 n 
+0000394116 00000 n 
+0000394269 00000 n 
+0000394414 00000 n 
+0000394631 00000 n 
+0000393168 00000 n 
+0000392559 00000 n 
+0000394567 00000 n 
+0003254985 00000 n 
+0004517022 00000 n 
+0003280451 00000 n 
+0003283295 00000 n 
+0004516988 00000 n 
+0003426903 00000 n 
+0004516954 00000 n 
+0003438978 00000 n 
+0000397425 00000 n 
+0000397121 00000 n 
+0000394733 00000 n 
+0000397237 00000 n 
+0000397362 00000 n 
+0000399728 00000 n 
+0000399548 00000 n 
+0000397541 00000 n 
+0000399664 00000 n 
+0000401859 00000 n 
 0000005426 00000 f 
 0000005427 00000 f 
 0000000000 00000 f 
-0000402511 00000 n 
-0000401709 00000 n 
-0000399840 00000 n 
-0000402193 00000 n 
-0000402257 00000 n 
-0000402321 00000 n 
-0000402024 00000 n 
-0004764094 00000 n 
-0000402447 00000 n 
-0000403907 00000 n 
-0000403727 00000 n 
-0000402655 00000 n 
-0000403843 00000 n 
-0004767754 00000 n 
-0000406455 00000 n 
-0000406019 00000 n 
-0000404051 00000 n 
-0000406135 00000 n 
-0000406199 00000 n 
-0000406263 00000 n 
-0000406327 00000 n 
-0000406391 00000 n 
-0000409233 00000 n 
-0000408925 00000 n 
-0000406571 00000 n 
-0000409041 00000 n 
-0000409105 00000 n 
-0000409169 00000 n 
-0000411778 00000 n 
-0000412139 00000 n 
-0000411641 00000 n 
-0000409349 00000 n 
-0000411947 00000 n 
-0000412011 00000 n 
-0000412075 00000 n 
-0004763948 00000 n 
-0004763356 00000 n 
-0004766323 00000 n 
-0000414092 00000 n 
-0000413912 00000 n 
-0000412325 00000 n 
-0000414028 00000 n 
-0000414585 00000 n 
-0000414407 00000 n 
-0000414194 00000 n 
-0000414876 00000 n 
-0000414760 00000 n 
-0000414659 00000 n 
-0004767880 00000 n 
-0000415842 00000 n 
-0000415408 00000 n 
-0000414918 00000 n 
-0000415524 00000 n 
-0000415588 00000 n 
-0000415714 00000 n 
-0000415778 00000 n 
-0000416225 00000 n 
-0000416045 00000 n 
-0000415944 00000 n 
-0000416161 00000 n 
-0000418242 00000 n 
-0000417944 00000 n 
-0000418975 00000 n 
-0000417789 00000 n 
-0000416267 00000 n 
-0000418408 00000 n 
-0004764835 00000 n 
-0000418660 00000 n 
-0000418092 00000 n 
-0000418786 00000 n 
-0000418912 00000 n 
-0000422358 00000 n 
-0000423281 00000 n 
-0000422221 00000 n 
-0000419161 00000 n 
-0000422516 00000 n 
-0000422644 00000 n 
-0000422708 00000 n 
-0004766471 00000 n 
-0000422771 00000 n 
-0000422835 00000 n 
-0000422899 00000 n 
-0000422963 00000 n 
-0000423027 00000 n 
-0000423091 00000 n 
-0000423154 00000 n 
-0000423218 00000 n 
-0000425288 00000 n 
-0000425446 00000 n 
-0000425920 00000 n 
-0000425142 00000 n 
-0000423410 00000 n 
-0000425605 00000 n 
-0000425731 00000 n 
-0000425856 00000 n 
-0000428737 00000 n 
-0000450191 00000 n 
-0000428801 00000 n 
-0000428493 00000 n 
-0000426050 00000 n 
-0000428609 00000 n 
-0004768006 00000 n 
-0000431588 00000 n 
-0000432448 00000 n 
-0000431451 00000 n 
-0000428903 00000 n 
-0000431746 00000 n 
-0004763058 00000 n 
-0000431872 00000 n 
-0000432000 00000 n 
-0000432064 00000 n 
-0000432128 00000 n 
-0000432192 00000 n 
-0000432256 00000 n 
-0000432320 00000 n 
-0000432384 00000 n 
-0000434781 00000 n 
-0000435128 00000 n 
-0000434644 00000 n 
-0000432619 00000 n 
-0000434938 00000 n 
-0000435064 00000 n 
-0000437502 00000 n 
-0000437840 00000 n 
-0000438450 00000 n 
-0000437338 00000 n 
-0000435272 00000 n 
-0000438134 00000 n 
-0000438260 00000 n 
-0000437671 00000 n 
-0000437988 00000 n 
-0000438386 00000 n 
-0000440514 00000 n 
-0000440082 00000 n 
-0000438608 00000 n 
-0000440198 00000 n 
-0000440324 00000 n 
-0000440450 00000 n 
-0000442938 00000 n 
-0000443091 00000 n 
-0000443243 00000 n 
-0000443865 00000 n 
-0000442774 00000 n 
-0000440672 00000 n 
-0000443548 00000 n 
-0000443674 00000 n 
-0000443801 00000 n 
-0000443396 00000 n 
-0000446607 00000 n 
-0000445919 00000 n 
-0000443995 00000 n 
-0000446035 00000 n 
-0000446162 00000 n 
-0000446289 00000 n 
-0000446416 00000 n 
-0000446543 00000 n 
-0004768132 00000 n 
-0000447487 00000 n 
-0000447307 00000 n 
-0000446765 00000 n 
-0000447423 00000 n 
-0000450255 00000 n 
-0000449947 00000 n 
-0000447603 00000 n 
-0000450063 00000 n 
-0000452472 00000 n 
-0000452863 00000 n 
-0000452335 00000 n 
-0000450357 00000 n 
-0000452672 00000 n 
-0000455430 00000 n 
-0000455580 00000 n 
-0000455740 00000 n 
-0000455896 00000 n 
-0000456216 00000 n 
-0000456695 00000 n 
-0000455248 00000 n 
-0000453035 00000 n 
-0000456377 00000 n 
-0000456504 00000 n 
-0000456631 00000 n 
-0000456056 00000 n 
-0000459333 00000 n 
-0000776967 00000 n 
-0000781545 00000 n 
-0000459461 00000 n 
-0000458836 00000 n 
-0000456811 00000 n 
-0000458952 00000 n 
-0000459079 00000 n 
-0000459206 00000 n 
-0000459397 00000 n 
-0000461826 00000 n 
-0000463131 00000 n 
-0000461689 00000 n 
-0000459619 00000 n 
-0000461982 00000 n 
-0000462110 00000 n 
-0000462174 00000 n 
-0000462238 00000 n 
-0000462302 00000 n 
-0000462366 00000 n 
-0000462430 00000 n 
-0000462494 00000 n 
-0000462558 00000 n 
-0000462622 00000 n 
-0000462685 00000 n 
-0000462749 00000 n 
-0000462812 00000 n 
-0000462876 00000 n 
-0000462940 00000 n 
-0000463004 00000 n 
-0000463068 00000 n 
-0004768258 00000 n 
-0000464957 00000 n 
-0000465305 00000 n 
-0000464820 00000 n 
-0000463274 00000 n 
-0000465114 00000 n 
-0000465178 00000 n 
-0000465241 00000 n 
-0003456786 00000 n 
-0000468099 00000 n 
-0000469528 00000 n 
-0000467962 00000 n 
-0000465435 00000 n 
-0000468250 00000 n 
-0000468377 00000 n 
-0000468505 00000 n 
-0000468569 00000 n 
-0000468633 00000 n 
-0000468697 00000 n 
-0000468761 00000 n 
-0000468825 00000 n 
-0000468889 00000 n 
-0000468953 00000 n 
-0000469017 00000 n 
-0000469081 00000 n 
-0000469145 00000 n 
-0000469209 00000 n 
-0000469273 00000 n 
-0000469337 00000 n 
-0000469464 00000 n 
-0000473088 00000 n 
-0000474518 00000 n 
-0000472951 00000 n 
-0000469685 00000 n 
-0000473242 00000 n 
-0000473370 00000 n 
-0000473434 00000 n 
-0000473498 00000 n 
-0000473562 00000 n 
-0000473626 00000 n 
-0000473690 00000 n 
-0000473753 00000 n 
-0000473817 00000 n 
-0000473880 00000 n 
-0000473944 00000 n 
-0000474006 00000 n 
-0000474070 00000 n 
-0000474134 00000 n 
-0000474198 00000 n 
-0000474262 00000 n 
-0000474326 00000 n 
-0000474390 00000 n 
-0000474454 00000 n 
-0000476272 00000 n 
-0000479920 00000 n 
-0000477415 00000 n 
-0000476156 00000 n 
-0000474675 00000 n 
-0000477351 00000 n 
-0004762908 00000 n 
-0004764686 00000 n 
-0000476656 00000 n 
-0000476774 00000 n 
-0000476822 00000 n 
-0000477330 00000 n 
-0000480326 00000 n 
-0000479783 00000 n 
-0000477616 00000 n 
-0000480071 00000 n 
-0000480198 00000 n 
-0000480262 00000 n 
-0002001818 00000 n 
-0000483692 00000 n 
-0000486019 00000 n 
-0000483555 00000 n 
-0000480527 00000 n 
-0000483847 00000 n 
-0000483975 00000 n 
-0000484039 00000 n 
-0000484103 00000 n 
-0000484167 00000 n 
-0000484231 00000 n 
-0000484295 00000 n 
-0000484359 00000 n 
-0000484423 00000 n 
-0000484487 00000 n 
-0000484550 00000 n 
-0000484614 00000 n 
-0000484677 00000 n 
-0000484741 00000 n 
-0000484803 00000 n 
-0000484867 00000 n 
-0000484931 00000 n 
-0000484995 00000 n 
-0000485059 00000 n 
-0000485123 00000 n 
-0000485187 00000 n 
-0000485251 00000 n 
-0000485315 00000 n 
-0000485379 00000 n 
-0000485443 00000 n 
-0000485507 00000 n 
-0000485571 00000 n 
-0000485635 00000 n 
-0000485699 00000 n 
-0000485763 00000 n 
-0000485827 00000 n 
-0000485891 00000 n 
-0000485955 00000 n 
-0004768384 00000 n 
-0000487611 00000 n 
-0000487239 00000 n 
-0000486162 00000 n 
-0000487355 00000 n 
-0000487419 00000 n 
-0000487483 00000 n 
-0000487547 00000 n 
-0000489030 00000 n 
-0000488722 00000 n 
-0000487727 00000 n 
-0000488838 00000 n 
-0000488902 00000 n 
-0000488966 00000 n 
-0000491551 00000 n 
-0000491244 00000 n 
-0000489146 00000 n 
-0000491360 00000 n 
-0000491487 00000 n 
-0000494664 00000 n 
-0000494826 00000 n 
-0000496337 00000 n 
-0000494518 00000 n 
-0000491695 00000 n 
-0000494994 00000 n 
-0000495121 00000 n 
-0000495249 00000 n 
-0000495313 00000 n 
-0000495377 00000 n 
-0000495441 00000 n 
-0000495505 00000 n 
-0000495569 00000 n 
-0000495633 00000 n 
-0000495697 00000 n 
-0000495761 00000 n 
-0000495825 00000 n 
-0000495889 00000 n 
-0000495953 00000 n 
-0000496017 00000 n 
-0000496081 00000 n 
-0000496145 00000 n 
-0000496209 00000 n 
-0000496273 00000 n 
-0000499746 00000 n 
-0000501600 00000 n 
-0000499502 00000 n 
-0000496508 00000 n 
-0000499618 00000 n 
-0000499810 00000 n 
-0000499874 00000 n 
-0000499938 00000 n 
-0000500002 00000 n 
-0000500066 00000 n 
-0000500130 00000 n 
-0000500194 00000 n 
-0000500258 00000 n 
-0000500322 00000 n 
-0000500386 00000 n 
-0000500450 00000 n 
-0000500514 00000 n 
-0000500578 00000 n 
-0000500642 00000 n 
-0000500706 00000 n 
-0000500770 00000 n 
-0000500834 00000 n 
-0000500898 00000 n 
-0000500962 00000 n 
-0000501026 00000 n 
-0000501090 00000 n 
-0000501154 00000 n 
-0000501218 00000 n 
-0000501282 00000 n 
-0000501346 00000 n 
-0000501409 00000 n 
-0000501473 00000 n 
-0000501536 00000 n 
-0000503188 00000 n 
-0000502752 00000 n 
-0000501729 00000 n 
-0000502868 00000 n 
-0000502932 00000 n 
-0000502996 00000 n 
-0000503060 00000 n 
-0000503124 00000 n 
-0004768510 00000 n 
-0000505484 00000 n 
-0000505113 00000 n 
-0000503304 00000 n 
-0000505229 00000 n 
-0000505293 00000 n 
-0000505420 00000 n 
-0000507459 00000 n 
-0000507623 00000 n 
-0000508171 00000 n 
-0000507313 00000 n 
-0000505628 00000 n 
-0000507788 00000 n 
-0000507915 00000 n 
-0000507979 00000 n 
-0000508043 00000 n 
-0000508107 00000 n 
-0000512603 00000 n 
-0000527488 00000 n 
-0000514456 00000 n 
-0000512359 00000 n 
-0000508358 00000 n 
-0000512475 00000 n 
-0000512667 00000 n 
-0000512731 00000 n 
-0000512795 00000 n 
-0000512859 00000 n 
-0000512923 00000 n 
-0000512987 00000 n 
-0000513051 00000 n 
-0000513115 00000 n 
-0000513179 00000 n 
-0000513243 00000 n 
-0000513307 00000 n 
-0000513371 00000 n 
-0000513435 00000 n 
-0000513499 00000 n 
-0000513563 00000 n 
-0000513627 00000 n 
-0000513691 00000 n 
-0000513755 00000 n 
-0000513819 00000 n 
-0000513882 00000 n 
-0000513946 00000 n 
-0000514009 00000 n 
-0000514073 00000 n 
-0000514136 00000 n 
-0000514200 00000 n 
-0000514264 00000 n 
-0000514328 00000 n 
-0000514392 00000 n 
-0000516585 00000 n 
-0000517137 00000 n 
-0000516448 00000 n 
-0000514627 00000 n 
-0000516754 00000 n 
-0000516818 00000 n 
-0000516945 00000 n 
-0000517009 00000 n 
-0000517073 00000 n 
-0000518897 00000 n 
-0000518590 00000 n 
-0000517337 00000 n 
-0000518706 00000 n 
-0000518770 00000 n 
-0000518834 00000 n 
-0000520316 00000 n 
-0000519945 00000 n 
-0000519013 00000 n 
-0000520061 00000 n 
-0000520125 00000 n 
-0000520189 00000 n 
-0000520252 00000 n 
-0004768636 00000 n 
-0000522147 00000 n 
-0000522300 00000 n 
-0000522448 00000 n 
-0000522600 00000 n 
-0000523327 00000 n 
-0000521983 00000 n 
-0000520432 00000 n 
-0000522751 00000 n 
-0000522815 00000 n 
-0000522879 00000 n 
-0000522943 00000 n 
-0000523007 00000 n 
-0000523071 00000 n 
-0000523135 00000 n 
-0000523199 00000 n 
-0000523263 00000 n 
-0000534360 00000 n 
-0000539930 00000 n 
-0000529789 00000 n 
-0000527244 00000 n 
-0000523457 00000 n 
-0000527360 00000 n 
-0000527552 00000 n 
-0000527616 00000 n 
-0000527680 00000 n 
-0000527744 00000 n 
-0000527808 00000 n 
-0000527872 00000 n 
-0000527936 00000 n 
-0000528000 00000 n 
-0000528064 00000 n 
-0000528128 00000 n 
-0000528192 00000 n 
-0000528256 00000 n 
-0000528320 00000 n 
-0000528384 00000 n 
-0000528447 00000 n 
-0000528511 00000 n 
-0000528574 00000 n 
-0000528638 00000 n 
-0000528701 00000 n 
-0000528765 00000 n 
-0000528829 00000 n 
-0000528893 00000 n 
-0000528957 00000 n 
-0000529021 00000 n 
-0000529085 00000 n 
-0000529149 00000 n 
-0000529213 00000 n 
-0000529277 00000 n 
-0000529341 00000 n 
-0000529405 00000 n 
-0000529469 00000 n 
-0000529533 00000 n 
-0000529597 00000 n 
-0000529661 00000 n 
-0000529725 00000 n 
-0000536660 00000 n 
-0000534116 00000 n 
-0000529946 00000 n 
-0000534232 00000 n 
-0000534424 00000 n 
-0000534488 00000 n 
-0000534552 00000 n 
-0000534616 00000 n 
-0000534680 00000 n 
-0000534744 00000 n 
-0000534808 00000 n 
-0000534872 00000 n 
-0000534935 00000 n 
-0000534999 00000 n 
-0000535063 00000 n 
-0000535127 00000 n 
-0000535191 00000 n 
-0000535255 00000 n 
-0000535319 00000 n 
-0000535383 00000 n 
-0000535447 00000 n 
-0000535511 00000 n 
-0000535575 00000 n 
-0000535639 00000 n 
-0000535703 00000 n 
-0000535767 00000 n 
-0000535831 00000 n 
-0000535895 00000 n 
-0000535959 00000 n 
-0000536023 00000 n 
-0000536087 00000 n 
-0000536151 00000 n 
-0000536215 00000 n 
-0000536279 00000 n 
-0000536343 00000 n 
-0000536406 00000 n 
-0000536470 00000 n 
-0000536533 00000 n 
-0000536597 00000 n 
-0000541720 00000 n 
-0000539686 00000 n 
-0000536817 00000 n 
-0000539802 00000 n 
-0000539994 00000 n 
-0000540058 00000 n 
-0000540121 00000 n 
-0000540185 00000 n 
-0000540248 00000 n 
-0000540312 00000 n 
-0000540376 00000 n 
-0000540440 00000 n 
-0000540504 00000 n 
-0000540568 00000 n 
-0000540632 00000 n 
-0000540696 00000 n 
-0000540760 00000 n 
-0000540824 00000 n 
-0000540888 00000 n 
-0000540952 00000 n 
-0000541016 00000 n 
-0000541080 00000 n 
-0000541144 00000 n 
-0000541208 00000 n 
-0000541272 00000 n 
-0000541336 00000 n 
-0000541400 00000 n 
-0000541464 00000 n 
-0000541528 00000 n 
-0000541592 00000 n 
-0000541656 00000 n 
-0000542268 00000 n 
-0000542089 00000 n 
-0000541863 00000 n 
-0000542559 00000 n 
-0000542443 00000 n 
-0000542342 00000 n 
-0004768762 00000 n 
-0000543573 00000 n 
-0000543138 00000 n 
-0000542601 00000 n 
-0000543254 00000 n 
-0000543318 00000 n 
-0000543445 00000 n 
-0000543509 00000 n 
-0000543956 00000 n 
-0000543776 00000 n 
-0000543675 00000 n 
-0000543892 00000 n 
-0000546120 00000 n 
-0000545687 00000 n 
-0000543998 00000 n 
-0000545803 00000 n 
-0000546056 00000 n 
-0000548285 00000 n 
-0000547978 00000 n 
-0000546236 00000 n 
-0000548094 00000 n 
-0000548221 00000 n 
-0000551001 00000 n 
-0000551154 00000 n 
-0000551305 00000 n 
-0000551461 00000 n 
-0000551811 00000 n 
-0000550837 00000 n 
-0000548415 00000 n 
-0000551621 00000 n 
-0000551748 00000 n 
-0000554567 00000 n 
-0000554132 00000 n 
-0000551955 00000 n 
-0000554248 00000 n 
-0000554375 00000 n 
-0000554439 00000 n 
-0000554503 00000 n 
-0004768888 00000 n 
-0000557754 00000 n 
-0000557192 00000 n 
-0000554711 00000 n 
-0000557308 00000 n 
-0000557435 00000 n 
-0000557499 00000 n 
-0000557563 00000 n 
-0000557690 00000 n 
-0000560587 00000 n 
-0000560025 00000 n 
-0000557911 00000 n 
-0000560141 00000 n 
-0000560268 00000 n 
-0000560332 00000 n 
-0000560396 00000 n 
-0000560523 00000 n 
-0000563480 00000 n 
-0000562662 00000 n 
-0000560744 00000 n 
-0000562778 00000 n 
-0000562842 00000 n 
-0000562906 00000 n 
-0000562970 00000 n 
-0000563097 00000 n 
-0000563161 00000 n 
-0000563225 00000 n 
-0000563288 00000 n 
-0000563352 00000 n 
-0000563416 00000 n 
-0000565675 00000 n 
-0000565993 00000 n 
-0000566144 00000 n 
-0000566295 00000 n 
-0000566672 00000 n 
-0000565493 00000 n 
-0000563637 00000 n 
-0000566608 00000 n 
-0000565834 00000 n 
-0000566451 00000 n 
-0000569471 00000 n 
-0000569628 00000 n 
-0000570547 00000 n 
-0000569325 00000 n 
-0000566859 00000 n 
-0000569782 00000 n 
-0000569909 00000 n 
-0000570036 00000 n 
-0000570100 00000 n 
-0000570164 00000 n 
-0000570228 00000 n 
-0000570292 00000 n 
-0000570356 00000 n 
-0000570483 00000 n 
-0000749118 00000 n 
-0000572747 00000 n 
-0000572567 00000 n 
-0000570704 00000 n 
-0000572683 00000 n 
-0004769014 00000 n 
-0000575878 00000 n 
-0000575315 00000 n 
-0000572877 00000 n 
-0000575431 00000 n 
-0004765283 00000 n 
-0000575558 00000 n 
-0000575622 00000 n 
-0000575686 00000 n 
-0000575750 00000 n 
-0000575814 00000 n 
-0000578492 00000 n 
-0000578185 00000 n 
-0000576106 00000 n 
-0000578301 00000 n 
-0000578428 00000 n 
-0000581500 00000 n 
-0000581002 00000 n 
-0000578622 00000 n 
-0000581118 00000 n 
-0000581182 00000 n 
-0000581246 00000 n 
-0000581309 00000 n 
-0000581436 00000 n 
-0000583813 00000 n 
-0000583966 00000 n 
-0000584694 00000 n 
-0000583667 00000 n 
-0000581643 00000 n 
-0000584123 00000 n 
-0000584250 00000 n 
-0000584376 00000 n 
-0000584503 00000 n 
-0000584630 00000 n 
-0000586590 00000 n 
-0000586283 00000 n 
-0000584838 00000 n 
-0000586399 00000 n 
-0000586526 00000 n 
-0000587001 00000 n 
-0000586821 00000 n 
-0000586720 00000 n 
-0000586937 00000 n 
-0004769140 00000 n 
-0000588784 00000 n 
-0000590919 00000 n 
-0000589132 00000 n 
-0000588647 00000 n 
-0000587043 00000 n 
-0000588941 00000 n 
-0000598418 00000 n 
-0000598609 00000 n 
-0000590803 00000 n 
-0000589262 00000 n 
-0000598290 00000 n 
-0000598545 00000 n 
-0000594652 00000 n 
-0000594770 00000 n 
-0000594818 00000 n 
-0000595227 00000 n 
-0000595250 00000 n 
-0000595571 00000 n 
-0000598267 00000 n 
-0000601108 00000 n 
-0000600928 00000 n 
-0000598782 00000 n 
-0000601044 00000 n 
-0000603318 00000 n 
-0000603695 00000 n 
-0000603172 00000 n 
-0000601224 00000 n 
-0000603631 00000 n 
-0000603475 00000 n 
-0000608834 00000 n 
-0000606178 00000 n 
-0000605998 00000 n 
-0000603868 00000 n 
-0000606114 00000 n 
-0000609145 00000 n 
-0000609311 00000 n 
-0000609652 00000 n 
-0000608670 00000 n 
-0000606308 00000 n 
-0000609461 00000 n 
-0000608990 00000 n 
-0000609588 00000 n 
-0004769266 00000 n 
-0000717656 00000 n 
-0000612326 00000 n 
-0000612146 00000 n 
-0000609768 00000 n 
-0000612262 00000 n 
-0000615249 00000 n 
-0000615069 00000 n 
-0000612428 00000 n 
-0000615185 00000 n 
-0000617822 00000 n 
-0000617389 00000 n 
-0000615351 00000 n 
-0000617505 00000 n 
-0000617632 00000 n 
-0000617758 00000 n 
-0000620532 00000 n 
-0000620746 00000 n 
-0000620395 00000 n 
-0000617966 00000 n 
-0000620682 00000 n 
-0004764241 00000 n 
-0000623257 00000 n 
-0000623500 00000 n 
-0000623120 00000 n 
-0000620918 00000 n 
-0000623436 00000 n 
-0004765877 00000 n 
-0004765730 00000 n 
-0000628070 00000 n 
-0000626030 00000 n 
-0000625723 00000 n 
-0000623757 00000 n 
-0000625839 00000 n 
-0000625966 00000 n 
-0004769392 00000 n 
-0000628382 00000 n 
-0000628541 00000 n 
-0000628934 00000 n 
-0000627897 00000 n 
-0000626174 00000 n 
-0000628870 00000 n 
-0000628227 00000 n 
-0000628706 00000 n 
-0000631146 00000 n 
-0000631300 00000 n 
-0000634984 00000 n 
-0000631671 00000 n 
-0000630991 00000 n 
-0000629163 00000 n 
-0000631607 00000 n 
-0000631454 00000 n 
-0000634375 00000 n 
-0000634530 00000 n 
-0000634685 00000 n 
-0000635334 00000 n 
-0000634202 00000 n 
-0000631872 00000 n 
-0000635143 00000 n 
-0000635270 00000 n 
-0000634835 00000 n 
-0000639013 00000 n 
-0000640609 00000 n 
-0000638769 00000 n 
-0000635520 00000 n 
-0000638885 00000 n 
-0000639077 00000 n 
-0000639141 00000 n 
-0000639205 00000 n 
-0000639269 00000 n 
-0000639333 00000 n 
-0000639397 00000 n 
-0000639461 00000 n 
-0000639525 00000 n 
-0000639588 00000 n 
-0000639652 00000 n 
-0000639715 00000 n 
-0000639779 00000 n 
-0000639841 00000 n 
-0000639905 00000 n 
-0000639969 00000 n 
-0000640033 00000 n 
-0000640097 00000 n 
-0000640161 00000 n 
-0000640225 00000 n 
-0000640289 00000 n 
-0000640353 00000 n 
-0000640417 00000 n 
-0000640481 00000 n 
-0000640545 00000 n 
-0000643915 00000 n 
-0000643226 00000 n 
-0000640752 00000 n 
-0000643342 00000 n 
-0000643406 00000 n 
-0000643470 00000 n 
-0000643534 00000 n 
-0000643598 00000 n 
-0000643662 00000 n 
-0000643725 00000 n 
-0000643852 00000 n 
-0000647997 00000 n 
-0000646609 00000 n 
-0000644115 00000 n 
-0000646725 00000 n 
-0000646852 00000 n 
-0000646979 00000 n 
-0000647106 00000 n 
-0000647232 00000 n 
-0000647295 00000 n 
-0000647359 00000 n 
-0000647423 00000 n 
-0000647487 00000 n 
-0000647551 00000 n 
-0000647615 00000 n 
-0000647679 00000 n 
-0000647743 00000 n 
-0000647807 00000 n 
-0000647933 00000 n 
-0004769518 00000 n 
-0000650653 00000 n 
-0000650346 00000 n 
-0000648140 00000 n 
-0000650462 00000 n 
-0000650589 00000 n 
-0000653739 00000 n 
-0000653114 00000 n 
-0000650826 00000 n 
-0000653230 00000 n 
-0000653294 00000 n 
-0000653358 00000 n 
-0000653420 00000 n 
-0000653484 00000 n 
-0000653547 00000 n 
-0000653611 00000 n 
-0000653675 00000 n 
-0000656217 00000 n 
-0000656521 00000 n 
-0000659529 00000 n 
-0000656871 00000 n 
-0000656062 00000 n 
-0000653883 00000 n 
-0000656680 00000 n 
-0000656367 00000 n 
-0000656807 00000 n 
-0000659740 00000 n 
-0000659392 00000 n 
-0000657072 00000 n 
-0000659676 00000 n 
-0001199629 00000 n 
-0000662330 00000 n 
-0000661769 00000 n 
-0000659927 00000 n 
-0000661885 00000 n 
-0000662012 00000 n 
-0000662139 00000 n 
-0000662266 00000 n 
-0000664468 00000 n 
-0000664162 00000 n 
-0000662517 00000 n 
-0000664278 00000 n 
-0000664404 00000 n 
-0004769644 00000 n 
-0000667443 00000 n 
-0000666883 00000 n 
-0000664598 00000 n 
-0000666999 00000 n 
-0000667126 00000 n 
-0000667252 00000 n 
-0000667379 00000 n 
-0000669336 00000 n 
-0000669029 00000 n 
-0000667601 00000 n 
-0000669145 00000 n 
-0000669272 00000 n 
-0000671328 00000 n 
-0000671479 00000 n 
-0000671966 00000 n 
-0000671182 00000 n 
-0000669480 00000 n 
-0000671648 00000 n 
-0000671902 00000 n 
-0000674411 00000 n 
-0000674756 00000 n 
-0000674274 00000 n 
-0000672138 00000 n 
-0000674566 00000 n 
-0000674693 00000 n 
-0000677479 00000 n 
-0000677670 00000 n 
-0000677235 00000 n 
-0000674872 00000 n 
-0000677351 00000 n 
-0000677606 00000 n 
-0000680352 00000 n 
-0000680172 00000 n 
-0000677786 00000 n 
-0000680288 00000 n 
-0004769770 00000 n 
-0000683107 00000 n 
-0000683261 00000 n 
-0000683414 00000 n 
-0000683567 00000 n 
-0000683955 00000 n 
-0000682943 00000 n 
-0000680482 00000 n 
-0000683764 00000 n 
-0000683891 00000 n 
-0000687548 00000 n 
-0000688441 00000 n 
-0000687304 00000 n 
-0000684155 00000 n 
-0000687420 00000 n 
-0000687612 00000 n 
-0000687676 00000 n 
-0000687740 00000 n 
-0000687804 00000 n 
-0000687868 00000 n 
-0000687932 00000 n 
-0000687996 00000 n 
-0000688060 00000 n 
-0000688124 00000 n 
-0000688188 00000 n 
-0000688252 00000 n 
-0000688378 00000 n 
-0000691173 00000 n 
-0000691775 00000 n 
-0000691036 00000 n 
-0000688584 00000 n 
-0000691328 00000 n 
-0000691456 00000 n 
-0000691520 00000 n 
-0000691584 00000 n 
-0000691711 00000 n 
-0000694253 00000 n 
-0000694412 00000 n 
-0000694566 00000 n 
-0000697722 00000 n 
-0000695165 00000 n 
-0000694098 00000 n 
-0000691960 00000 n 
-0000694720 00000 n 
-0000694847 00000 n 
-0000694974 00000 n 
-0000695101 00000 n 
-0001178117 00000 n 
-0001189351 00000 n 
-0000698194 00000 n 
-0000697585 00000 n 
-0000695295 00000 n 
-0000697876 00000 n 
-0000698003 00000 n 
-0000698130 00000 n 
-0000700844 00000 n 
-0000704600 00000 n 
-0000701188 00000 n 
-0000700707 00000 n 
-0000698366 00000 n 
-0000700997 00000 n 
-0000701124 00000 n 
-0004769896 00000 n 
-0000704925 00000 n 
-0000705881 00000 n 
-0000704463 00000 n 
-0000701346 00000 n 
-0000704797 00000 n 
-0000704989 00000 n 
-0000705053 00000 n 
-0000705117 00000 n 
-0000705181 00000 n 
-0000705245 00000 n 
-0000705309 00000 n 
-0000705373 00000 n 
-0000705436 00000 n 
-0000705500 00000 n 
-0000705563 00000 n 
-0000705627 00000 n 
-0000705689 00000 n 
-0000705753 00000 n 
-0000705817 00000 n 
-0000708506 00000 n 
-0000708669 00000 n 
-0000709186 00000 n 
-0000708360 00000 n 
-0000706108 00000 n 
-0000708868 00000 n 
-0000708995 00000 n 
-0000709122 00000 n 
-0000711952 00000 n 
-0000711519 00000 n 
-0000709457 00000 n 
-0000711635 00000 n 
-0000711762 00000 n 
-0000711888 00000 n 
-0000713064 00000 n 
-0000712757 00000 n 
-0000712082 00000 n 
-0000712873 00000 n 
-0000713000 00000 n 
-0000715236 00000 n 
-0000714802 00000 n 
-0000713180 00000 n 
-0000714918 00000 n 
-0000715172 00000 n 
-0000717720 00000 n 
-0000717413 00000 n 
-0000715366 00000 n 
-0000717529 00000 n 
-0004770022 00000 n 
-0000719620 00000 n 
-0000719440 00000 n 
-0000717864 00000 n 
-0000719556 00000 n 
-0000721900 00000 n 
-0000721593 00000 n 
-0000719764 00000 n 
-0000721709 00000 n 
-0000721836 00000 n 
-0000726159 00000 n 
-0000723718 00000 n 
-0000723538 00000 n 
-0000722044 00000 n 
-0000723654 00000 n 
-0000726851 00000 n 
-0000727060 00000 n 
-0000727461 00000 n 
-0000726013 00000 n 
-0000723848 00000 n 
-0000727270 00000 n 
-0000727397 00000 n 
-0000726663 00000 n 
-0000726781 00000 n 
-0000726829 00000 n 
-0000730946 00000 n 
-0000729938 00000 n 
-0000727704 00000 n 
-0000730054 00000 n 
-0000730118 00000 n 
-0000730182 00000 n 
-0000730246 00000 n 
-0000730310 00000 n 
-0000730374 00000 n 
-0000730438 00000 n 
-0000730564 00000 n 
-0000730628 00000 n 
-0000730692 00000 n 
-0000730756 00000 n 
-0000730883 00000 n 
-0000733161 00000 n 
-0000733770 00000 n 
-0000733024 00000 n 
-0000731117 00000 n 
-0000733325 00000 n 
-0000733452 00000 n 
-0000733579 00000 n 
-0000733706 00000 n 
-0004770148 00000 n 
-0000736455 00000 n 
-0000736021 00000 n 
-0000736174 00000 n 
-0000736646 00000 n 
-0000735875 00000 n 
-0000733914 00000 n 
-0000736328 00000 n 
-0000736582 00000 n 
-0000739810 00000 n 
-0000740384 00000 n 
-0000739566 00000 n 
-0000736847 00000 n 
-0000739682 00000 n 
-0000739874 00000 n 
-0000739938 00000 n 
-0000740002 00000 n 
-0000740066 00000 n 
-0000740130 00000 n 
-0000740192 00000 n 
-0000740256 00000 n 
-0000740320 00000 n 
-0000742398 00000 n 
-0000742769 00000 n 
-0000742252 00000 n 
-0000740555 00000 n 
-0000742705 00000 n 
-0000742552 00000 n 
-0000745204 00000 n 
-0000745546 00000 n 
-0000745067 00000 n 
-0000742899 00000 n 
-0000745355 00000 n 
-0000745482 00000 n 
-0000748817 00000 n 
-0000748393 00000 n 
-0000749691 00000 n 
-0000748238 00000 n 
-0000745704 00000 n 
-0000748991 00000 n 
-0000748605 00000 n 
-0000749245 00000 n 
-0000749309 00000 n 
-0000749373 00000 n 
-0000749437 00000 n 
-0000749500 00000 n 
-0000749564 00000 n 
-0000749628 00000 n 
-0000752583 00000 n 
-0000755053 00000 n 
-0000753351 00000 n 
-0000752437 00000 n 
-0000750003 00000 n 
-0000753034 00000 n 
-0000753098 00000 n 
-0000753162 00000 n 
-0000753287 00000 n 
-0000752808 00000 n 
-0004770274 00000 n 
-0000755313 00000 n 
-0000754916 00000 n 
-0000753649 00000 n 
-0000755249 00000 n 
-0000759755 00000 n 
-0000759917 00000 n 
-0000760087 00000 n 
-0000757673 00000 n 
-0000757493 00000 n 
-0000755485 00000 n 
-0000757609 00000 n 
-0000760437 00000 n 
-0000759600 00000 n 
-0000757860 00000 n 
-0000760246 00000 n 
-0000760373 00000 n 
-0000765614 00000 n 
-0000762864 00000 n 
-0000762928 00000 n 
-0000762494 00000 n 
-0000760567 00000 n 
-0000762610 00000 n 
-0000762737 00000 n 
-0000766060 00000 n 
-0000765371 00000 n 
-0000763129 00000 n 
-0000765487 00000 n 
-0000765741 00000 n 
-0000765868 00000 n 
-0000765932 00000 n 
-0000765996 00000 n 
-0000768834 00000 n 
-0000768273 00000 n 
-0000766245 00000 n 
-0000768389 00000 n 
-0000768516 00000 n 
-0000768643 00000 n 
-0000768770 00000 n 
-0004770400 00000 n 
-0000771114 00000 n 
-0000770807 00000 n 
-0000768978 00000 n 
-0000770923 00000 n 
-0000771050 00000 n 
-0000771553 00000 n 
-0000771373 00000 n 
-0000771272 00000 n 
-0000771489 00000 n 
-0000773448 00000 n 
-0000773014 00000 n 
-0000771595 00000 n 
-0000773130 00000 n 
-0000773384 00000 n 
-0000775979 00000 n 
-0000776271 00000 n 
-0000776425 00000 n 
-0000780215 00000 n 
-0000777031 00000 n 
-0000775815 00000 n 
-0000773564 00000 n 
-0000776586 00000 n 
-0000776713 00000 n 
-0000776125 00000 n 
-0000776840 00000 n 
-0000780650 00000 n 
-0000780368 00000 n 
-0000781609 00000 n 
-0000780069 00000 n 
-0000777175 00000 n 
-0000780522 00000 n 
-0000780714 00000 n 
-0000780778 00000 n 
-0000780842 00000 n 
-0000780906 00000 n 
-0000780970 00000 n 
-0000781034 00000 n 
-0000781098 00000 n 
-0000781162 00000 n 
-0000781226 00000 n 
-0000781290 00000 n 
-0000781354 00000 n 
-0000781418 00000 n 
-0000783802 00000 n 
-0000784278 00000 n 
-0000783665 00000 n 
-0000781780 00000 n 
-0000783958 00000 n 
-0000784022 00000 n 
-0000784086 00000 n 
-0000784150 00000 n 
-0000784214 00000 n 
-0004770526 00000 n 
-0000787240 00000 n 
-0000787392 00000 n 
-0000787706 00000 n 
-0000790472 00000 n 
-0000789133 00000 n 
-0000787076 00000 n 
-0000784422 00000 n 
-0000787857 00000 n 
-0000787985 00000 n 
-0000788049 00000 n 
-0000788113 00000 n 
-0000788177 00000 n 
-0000788241 00000 n 
-0000788304 00000 n 
-0000788368 00000 n 
-0000788431 00000 n 
-0000788495 00000 n 
-0000788557 00000 n 
-0000788621 00000 n 
-0000788685 00000 n 
-0000788749 00000 n 
-0000788813 00000 n 
-0000788877 00000 n 
-0000788941 00000 n 
-0000789005 00000 n 
-0000789069 00000 n 
-0000787549 00000 n 
-0000790816 00000 n 
-0000790335 00000 n 
-0000789333 00000 n 
-0000790626 00000 n 
-0000790752 00000 n 
-0000792727 00000 n 
-0000792166 00000 n 
-0000790946 00000 n 
-0000792282 00000 n 
-0000792536 00000 n 
-0000792663 00000 n 
-0000795263 00000 n 
-0000797864 00000 n 
-0000795411 00000 n 
-0000826359 00000 n 
-0000823732 00000 n 
-0000823879 00000 n 
-0000796007 00000 n 
-0000795117 00000 n 
-0000792857 00000 n 
-0000795561 00000 n 
-0000795688 00000 n 
-0000795815 00000 n 
-0000795879 00000 n 
-0000795943 00000 n 
-0000824454 00000 n 
-0000845036 00000 n 
-0000824026 00000 n 
-0000847020 00000 n 
-0000824177 00000 n 
-0000865016 00000 n 
-0000844607 00000 n 
-0000896429 00000 n 
-0000824709 00000 n 
-0000797700 00000 n 
-0000796151 00000 n 
-0000824326 00000 n 
-0000824518 00000 n 
-0000824581 00000 n 
-0000824645 00000 n 
-0003551520 00000 n 
-0000863157 00000 n 
-0000894369 00000 n 
-0000844757 00000 n 
-0000918315 00000 n 
-0000845355 00000 n 
-0000826213 00000 n 
-0000824876 00000 n 
-0000844908 00000 n 
-0000845163 00000 n 
-0000845227 00000 n 
-0000845291 00000 n 
-0004770652 00000 n 
-0000916295 00000 n 
-0000929815 00000 n 
-0000862579 00000 n 
-0000932039 00000 n 
-0000862730 00000 n 
-0000862878 00000 n 
-0000946777 00000 n 
-0000893940 00000 n 
-0000958123 00000 n 
-0000863413 00000 n 
-0000846865 00000 n 
-0000845536 00000 n 
-0000863029 00000 n 
-0000863221 00000 n 
-0000863285 00000 n 
-0000863349 00000 n 
-0000944766 00000 n 
-0000956278 00000 n 
-0000894091 00000 n 
-0000972666 00000 n 
-0000894624 00000 n 
-0000864870 00000 n 
-0000863566 00000 n 
-0000894241 00000 n 
-0000894433 00000 n 
-0000894560 00000 n 
-0000970857 00000 n 
-0000983225 00000 n 
-0000915574 00000 n 
-0000984868 00000 n 
-0000915723 00000 n 
-0000915870 00000 n 
-0000916017 00000 n 
-0000994578 00000 n 
-0000916551 00000 n 
-0000896265 00000 n 
-0000894805 00000 n 
-0000916167 00000 n 
-0000916359 00000 n 
-0000916423 00000 n 
-0000916487 00000 n 
-0000993752 00000 n 
-0001008424 00000 n 
-0000929387 00000 n 
-0001001683 00000 n 
-0000929537 00000 n 
-0001009372 00000 n 
-0000930134 00000 n 
-0000918169 00000 n 
-0000916704 00000 n 
-0000929687 00000 n 
-0000929879 00000 n 
-0000929943 00000 n 
-0000930070 00000 n 
-0001008552 00000 n 
-0001048009 00000 n 
-0000944186 00000 n 
-0001016012 00000 n 
-0000944336 00000 n 
-0001048973 00000 n 
-0000944487 00000 n 
-0001078824 00000 n 
-0000955849 00000 n 
-0001092798 00000 n 
-0000945214 00000 n 
-0000931884 00000 n 
-0000930287 00000 n 
-0000944638 00000 n 
-0000944830 00000 n 
-0000944894 00000 n 
-0000944958 00000 n 
-0000945022 00000 n 
-0000945086 00000 n 
-0000945150 00000 n 
-0001048137 00000 n 
-0001091784 00000 n 
-0001091912 00000 n 
-0000956000 00000 n 
-0001105760 00000 n 
-0000956597 00000 n 
-0000946631 00000 n 
-0000945368 00000 n 
-0000956150 00000 n 
-0000956342 00000 n 
-0000956406 00000 n 
-0000956533 00000 n 
-0004770778 00000 n 
-0001125607 00000 n 
-0001125735 00000 n 
-0000970431 00000 n 
-0001126603 00000 n 
-0000970580 00000 n 
-0001135646 00000 n 
-0000971113 00000 n 
-0000957977 00000 n 
-0000956751 00000 n 
-0000970729 00000 n 
-0000970921 00000 n 
-0000970985 00000 n 
-0000971049 00000 n 
-0001142420 00000 n 
-0001142548 00000 n 
-0000982797 00000 n 
-0001143351 00000 n 
-0000982947 00000 n 
-0001149387 00000 n 
-0000983544 00000 n 
-0000972520 00000 n 
-0000971309 00000 n 
-0000983097 00000 n 
-0000983289 00000 n 
-0000983353 00000 n 
-0000983480 00000 n 
-0001155509 00000 n 
-0001155637 00000 n 
-0000993816 00000 n 
-0000984752 00000 n 
-0000983712 00000 n 
-0000993624 00000 n 
-0001008616 00000 n 
-0000994462 00000 n 
-0000993998 00000 n 
-0001008296 00000 n 
-0001048201 00000 n 
-0001009256 00000 n 
-0001008771 00000 n 
-0001047881 00000 n 
-0001091976 00000 n 
-0001048857 00000 n 
-0001048356 00000 n 
-0001091656 00000 n 
-0004770904 00000 n 
-0001125799 00000 n 
-0001092682 00000 n 
-0001092131 00000 n 
-0001125479 00000 n 
-0001142612 00000 n 
-0001126487 00000 n 
-0001125954 00000 n 
-0001142292 00000 n 
-0001155701 00000 n 
-0001143235 00000 n 
-0001142767 00000 n 
-0001155381 00000 n 
-0001156137 00000 n 
-0001155957 00000 n 
-0001155856 00000 n 
-0001156073 00000 n 
-0001156577 00000 n 
-0001156398 00000 n 
-0001156179 00000 n 
-0001156868 00000 n 
-0001156752 00000 n 
-0001156651 00000 n 
-0004771030 00000 n 
-0001157807 00000 n 
-0001157372 00000 n 
-0001156910 00000 n 
-0001157488 00000 n 
-0001157552 00000 n 
-0001157679 00000 n 
-0001157743 00000 n 
-0001158190 00000 n 
-0001158010 00000 n 
-0001157909 00000 n 
-0001158126 00000 n 
-0001159581 00000 n 
-0001159740 00000 n 
-0001163091 00000 n 
-0001160343 00000 n 
-0001159435 00000 n 
-0001158232 00000 n 
-0001159898 00000 n 
-0001160152 00000 n 
-0001160279 00000 n 
-0003236007 00000 n 
-0001163452 00000 n 
-0001162954 00000 n 
-0001160459 00000 n 
-0001163261 00000 n 
-0001163388 00000 n 
-0001166000 00000 n 
-0001165693 00000 n 
-0001163638 00000 n 
-0001165809 00000 n 
-0001165936 00000 n 
-0001168765 00000 n 
-0001169077 00000 n 
-0001169828 00000 n 
-0001168610 00000 n 
-0001166201 00000 n 
-0001169255 00000 n 
-0001169383 00000 n 
-0001168921 00000 n 
-0001169510 00000 n 
-0001169637 00000 n 
-0001169764 00000 n 
-0004771156 00000 n 
-0001171264 00000 n 
-0001170958 00000 n 
-0001170028 00000 n 
-0001171074 00000 n 
-0001173914 00000 n 
-0001173607 00000 n 
-0001171437 00000 n 
-0001173723 00000 n 
-0001173850 00000 n 
-0001176279 00000 n 
-0001175972 00000 n 
-0001174101 00000 n 
-0001176088 00000 n 
-0001176215 00000 n 
-0001178180 00000 n 
-0001177874 00000 n 
-0001176437 00000 n 
-0001177990 00000 n 
-0001180857 00000 n 
-0001180550 00000 n 
-0001178338 00000 n 
-0001180666 00000 n 
-0001180793 00000 n 
-0001183884 00000 n 
-0001183448 00000 n 
-0001181015 00000 n 
-0001183564 00000 n 
-0001183628 00000 n 
-0001183692 00000 n 
-0001183756 00000 n 
-0001183820 00000 n 
-0004771282 00000 n 
-0001186850 00000 n 
-0001186415 00000 n 
-0001184014 00000 n 
-0001186531 00000 n 
-0001186595 00000 n 
-0001186659 00000 n 
-0001186786 00000 n 
-0001189415 00000 n 
-0001189108 00000 n 
-0001187008 00000 n 
-0001189224 00000 n 
-0004762757 00000 n 
-0001191636 00000 n 
-0001191456 00000 n 
-0001189559 00000 n 
-0001191572 00000 n 
-0001193535 00000 n 
-0001193228 00000 n 
-0001191766 00000 n 
-0001193344 00000 n 
-0001193471 00000 n 
-0001196388 00000 n 
-0001196208 00000 n 
-0001193679 00000 n 
-0001196324 00000 n 
-0001199351 00000 n 
-0001203225 00000 n 
-0001200331 00000 n 
-0001199214 00000 n 
-0001196532 00000 n 
-0001199503 00000 n 
-0001199693 00000 n 
-0001199756 00000 n 
-0001199883 00000 n 
-0001199947 00000 n 
-0001200011 00000 n 
-0001200075 00000 n 
-0001200139 00000 n 
-0001200203 00000 n 
-0001200267 00000 n 
-0004771408 00000 n 
-0001203379 00000 n 
-0001207666 00000 n 
-0001204747 00000 n 
-0001203079 00000 n 
-0001200488 00000 n 
-0001203533 00000 n 
-0001203661 00000 n 
-0001203725 00000 n 
-0001203789 00000 n 
-0001203853 00000 n 
-0001203917 00000 n 
-0001203981 00000 n 
-0001204045 00000 n 
-0001204173 00000 n 
-0001204237 00000 n 
-0001204300 00000 n 
-0001204364 00000 n 
-0001204428 00000 n 
-0001204492 00000 n 
-0001204556 00000 n 
-0001204683 00000 n 
-0001207816 00000 n 
-0001207979 00000 n 
-0001208959 00000 n 
-0001207511 00000 n 
-0001204932 00000 n 
-0001208129 00000 n 
-0001208257 00000 n 
-0001208321 00000 n 
-0001208384 00000 n 
-0001208448 00000 n 
-0001208512 00000 n 
-0001208576 00000 n 
-0001208640 00000 n 
-0001208768 00000 n 
-0001208895 00000 n 
-0001211753 00000 n 
-0001211446 00000 n 
-0001209116 00000 n 
-0001211562 00000 n 
-0001211689 00000 n 
-0001214724 00000 n 
-0001214035 00000 n 
-0001211897 00000 n 
-0001214151 00000 n 
-0001214215 00000 n 
-0001214279 00000 n 
-0001214343 00000 n 
-0001214406 00000 n 
-0001214533 00000 n 
-0001214660 00000 n 
-0001218394 00000 n 
-0001217640 00000 n 
-0001214868 00000 n 
-0001217756 00000 n 
-0001217820 00000 n 
-0001217884 00000 n 
-0001217947 00000 n 
-0001218074 00000 n 
-0001218138 00000 n 
-0001218202 00000 n 
-0001218266 00000 n 
-0001218330 00000 n 
-0001221709 00000 n 
-0001221147 00000 n 
-0001218593 00000 n 
-0001221263 00000 n 
-0001221390 00000 n 
-0001221454 00000 n 
-0001221518 00000 n 
-0001221645 00000 n 
-0004771534 00000 n 
-0001224370 00000 n 
-0001225727 00000 n 
-0001224254 00000 n 
-0001221880 00000 n 
-0001225408 00000 n 
-0001225535 00000 n 
-0001225599 00000 n 
-0001225663 00000 n 
-0001224756 00000 n 
-0001224874 00000 n 
-0001224922 00000 n 
-0001225387 00000 n 
-0001229000 00000 n 
-0001228692 00000 n 
-0001225956 00000 n 
-0001228808 00000 n 
-0001228872 00000 n 
-0001228936 00000 n 
-0001231433 00000 n 
-0001231000 00000 n 
-0001229171 00000 n 
-0001231116 00000 n 
-0001231243 00000 n 
-0001231369 00000 n 
-0001233587 00000 n 
-0001233155 00000 n 
-0001231620 00000 n 
-0001233271 00000 n 
-0001233398 00000 n 
-0001233524 00000 n 
-0001236214 00000 n 
-0001235908 00000 n 
-0001233774 00000 n 
-0001236024 00000 n 
-0001236150 00000 n 
-0001239768 00000 n 
-0001239014 00000 n 
-0001236372 00000 n 
-0001239130 00000 n 
-0001239194 00000 n 
-0001239257 00000 n 
-0001239321 00000 n 
-0001239385 00000 n 
-0001239449 00000 n 
-0001239513 00000 n 
-0001239577 00000 n 
-0001239704 00000 n 
-0004771660 00000 n 
-0001242408 00000 n 
-0001242101 00000 n 
-0001239967 00000 n 
-0001242217 00000 n 
-0001242344 00000 n 
-0001245093 00000 n 
-0001244786 00000 n 
-0001242609 00000 n 
-0001244902 00000 n 
-0001245029 00000 n 
-0001248043 00000 n 
-0001247609 00000 n 
-0001245294 00000 n 
-0001247725 00000 n 
-0001247852 00000 n 
-0001247979 00000 n 
-0001259423 00000 n 
-0001250155 00000 n 
-0001259768 00000 n 
-0001250018 00000 n 
-0001248201 00000 n 
-0001259576 00000 n 
-0001259704 00000 n 
-0001256035 00000 n 
-0001256153 00000 n 
-0001256201 00000 n 
-0001256596 00000 n 
-0001256619 00000 n 
-0001256966 00000 n 
-0001259400 00000 n 
-0001263006 00000 n 
-0001263159 00000 n 
-0001263309 00000 n 
-0001263650 00000 n 
-0001262851 00000 n 
-0001259900 00000 n 
-0001263458 00000 n 
-0001263586 00000 n 
-0001267178 00000 n 
-0001266750 00000 n 
-0001266900 00000 n 
-0001267370 00000 n 
-0001266604 00000 n 
-0001263780 00000 n 
-0001267050 00000 n 
-0001267306 00000 n 
-0004771786 00000 n 
-0001270104 00000 n 
-0001270614 00000 n 
-0001269860 00000 n 
-0001267472 00000 n 
-0001269976 00000 n 
-0001270168 00000 n 
-0001270232 00000 n 
-0001270296 00000 n 
-0001270423 00000 n 
-0001270550 00000 n 
-0001273411 00000 n 
-0001272850 00000 n 
-0001270730 00000 n 
-0001272966 00000 n 
-0001273093 00000 n 
-0001273220 00000 n 
-0001273347 00000 n 
-0001275681 00000 n 
-0001275899 00000 n 
-0001275544 00000 n 
-0001273569 00000 n 
-0001275835 00000 n 
-0001278750 00000 n 
-0001278443 00000 n 
-0001276001 00000 n 
-0001278559 00000 n 
-0001278686 00000 n 
-0001279490 00000 n 
-0001279310 00000 n 
-0001278965 00000 n 
-0001279426 00000 n 
-0001279873 00000 n 
-0001279693 00000 n 
-0001279592 00000 n 
-0001279809 00000 n 
-0004771912 00000 n 
-0001281883 00000 n 
-0001281576 00000 n 
-0001279915 00000 n 
-0001281692 00000 n 
-0001284146 00000 n 
-0001284618 00000 n 
-0001284009 00000 n 
-0001282013 00000 n 
-0001284300 00000 n 
-0001284427 00000 n 
-0001284554 00000 n 
-0001289948 00000 n 
-0001286905 00000 n 
-0001286598 00000 n 
-0001284748 00000 n 
-0001286714 00000 n 
-0001286841 00000 n 
-0001291871 00000 n 
-0001289507 00000 n 
-0001289664 00000 n 
-0001299731 00000 n 
-0001290139 00000 n 
-0001289361 00000 n 
-0001287049 00000 n 
-0001289821 00000 n 
-0001290075 00000 n 
-0001298506 00000 n 
-0001306156 00000 n 
-0001298570 00000 n 
-0001291755 00000 n 
-0001290283 00000 n 
-0001298378 00000 n 
-0001293587 00000 n 
-0001293705 00000 n 
-0001293753 00000 n 
-0001294166 00000 n 
-0001294424 00000 n 
-0001294447 00000 n 
-0001294768 00000 n 
-0001295032 00000 n 
-0001297444 00000 n 
-0001298333 00000 n 
-0001298356 00000 n 
-0001306220 00000 n 
-0001299615 00000 n 
-0001298716 00000 n 
-0001306028 00000 n 
-0004772038 00000 n 
-0001301434 00000 n 
-0001301552 00000 n 
-0001301600 00000 n 
-0001301979 00000 n 
-0001302237 00000 n 
-0001302260 00000 n 
-0001302571 00000 n 
-0001302835 00000 n 
-0001305094 00000 n 
-0001305983 00000 n 
-0001306006 00000 n 
-0001308682 00000 n 
-0001308252 00000 n 
-0001306408 00000 n 
-0001308368 00000 n 
-0001308495 00000 n 
-0001308618 00000 n 
-0001311197 00000 n 
-0001314926 00000 n 
-0001311678 00000 n 
-0001311060 00000 n 
-0001308812 00000 n 
-0001311360 00000 n 
-0001311487 00000 n 
-0001311614 00000 n 
-0001315422 00000 n 
-0001315094 00000 n 
-0001315933 00000 n 
-0001314780 00000 n 
-0001311850 00000 n 
-0001315294 00000 n 
-0001315486 00000 n 
-0001315550 00000 n 
-0001315614 00000 n 
-0001315678 00000 n 
-0001315742 00000 n 
-0001315869 00000 n 
-0001318888 00000 n 
-0001318581 00000 n 
-0001316174 00000 n 
-0001318697 00000 n 
-0001318824 00000 n 
-0001321565 00000 n 
-0001321258 00000 n 
-0001319004 00000 n 
-0001321374 00000 n 
-0001321501 00000 n 
-0001324242 00000 n 
-0001324712 00000 n 
-0001324105 00000 n 
-0001321681 00000 n 
-0001324396 00000 n 
-0001324521 00000 n 
-0001324648 00000 n 
-0004772164 00000 n 
-0001326471 00000 n 
-0001326291 00000 n 
-0001324856 00000 n 
-0001326407 00000 n 
-0001329119 00000 n 
-0001328301 00000 n 
-0001326629 00000 n 
-0001328417 00000 n 
-0001328544 00000 n 
-0001328608 00000 n 
-0001328672 00000 n 
-0001328736 00000 n 
-0001328800 00000 n 
-0001328864 00000 n 
-0001328928 00000 n 
-0001328992 00000 n 
-0001329055 00000 n 
-0001331664 00000 n 
-0001332141 00000 n 
-0001331527 00000 n 
-0001329263 00000 n 
-0001331822 00000 n 
-0001331949 00000 n 
-0001332013 00000 n 
-0001332077 00000 n 
-0001334402 00000 n 
-0001334466 00000 n 
-0001334158 00000 n 
-0001332271 00000 n 
-0001334274 00000 n 
-0001336086 00000 n 
-0001335906 00000 n 
-0001334582 00000 n 
-0001336022 00000 n 
-0001337897 00000 n 
-0001338250 00000 n 
-0001337760 00000 n 
-0001336202 00000 n 
-0001338058 00000 n 
-0001338122 00000 n 
-0001338186 00000 n 
-0004772290 00000 n 
-0001344130 00000 n 
-0001340187 00000 n 
-0001339751 00000 n 
-0001338394 00000 n 
-0001339867 00000 n 
-0001339931 00000 n 
-0001339995 00000 n 
-0001340059 00000 n 
-0001340123 00000 n 
-0001341580 00000 n 
-0001341400 00000 n 
-0001340331 00000 n 
-0001341516 00000 n 
-0001343848 00000 n 
-0001344194 00000 n 
-0001343711 00000 n 
-0001341696 00000 n 
-0001344002 00000 n 
-0001344066 00000 n 
-0001346268 00000 n 
-0001346332 00000 n 
-0001346024 00000 n 
-0001344324 00000 n 
-0001346140 00000 n 
-0001347834 00000 n 
-0001347526 00000 n 
-0001346448 00000 n 
-0001347642 00000 n 
-0001347706 00000 n 
-0001347770 00000 n 
-0001349518 00000 n 
-0001348954 00000 n 
-0001347964 00000 n 
-0001349070 00000 n 
-0001349134 00000 n 
-0001349198 00000 n 
-0001349262 00000 n 
-0001349326 00000 n 
-0001349390 00000 n 
-0001349454 00000 n 
-0004772416 00000 n 
-0001351875 00000 n 
-0001351313 00000 n 
-0001349634 00000 n 
-0001351429 00000 n 
-0001351556 00000 n 
-0001351620 00000 n 
-0001351684 00000 n 
-0001351811 00000 n 
-0001354980 00000 n 
-0001354546 00000 n 
-0001352090 00000 n 
-0001354662 00000 n 
-0001354789 00000 n 
-0001354916 00000 n 
-0001357683 00000 n 
-0001357249 00000 n 
-0001355138 00000 n 
-0001357365 00000 n 
-0001357492 00000 n 
-0001357619 00000 n 
-0001360176 00000 n 
-0001360344 00000 n 
-0001360538 00000 n 
-0001360710 00000 n 
-0001360922 00000 n 
-0001361112 00000 n 
-0001361325 00000 n 
-0001361518 00000 n 
-0001361713 00000 n 
-0001361913 00000 n 
-0001362149 00000 n 
-0001359958 00000 n 
-0001357813 00000 n 
-0001362085 00000 n 
-0001364559 00000 n 
-0001364712 00000 n 
-0001365201 00000 n 
-0001364413 00000 n 
-0001362335 00000 n 
-0001364883 00000 n 
-0001365010 00000 n 
-0001365137 00000 n 
-0001367667 00000 n 
-0001367360 00000 n 
-0001365387 00000 n 
-0001367476 00000 n 
-0001367603 00000 n 
-0004772542 00000 n 
-0001369030 00000 n 
-0001368850 00000 n 
-0001367811 00000 n 
-0001368966 00000 n 
-0001370431 00000 n 
-0001370125 00000 n 
-0001369146 00000 n 
-0001370241 00000 n 
-0001370367 00000 n 
-0001371650 00000 n 
-0001371470 00000 n 
-0001370561 00000 n 
-0001371586 00000 n 
-0001374326 00000 n 
-0001373637 00000 n 
-0001371766 00000 n 
-0001373753 00000 n 
-0001373880 00000 n 
-0001373944 00000 n 
-0001374008 00000 n 
-0001374072 00000 n 
-0001374136 00000 n 
-0001374200 00000 n 
-0001374264 00000 n 
-0001377080 00000 n 
-0001378126 00000 n 
-0001376943 00000 n 
-0001374526 00000 n 
-0001377232 00000 n 
-0001377296 00000 n 
-0001377360 00000 n 
-0001377424 00000 n 
-0001377488 00000 n 
-0001377552 00000 n 
-0001377616 00000 n 
-0001377680 00000 n 
-0001377744 00000 n 
-0001377808 00000 n 
-0001377935 00000 n 
-0001378062 00000 n 
-0001383515 00000 n 
-0001383087 00000 n 
-0001385431 00000 n 
-0001382941 00000 n 
-0001378297 00000 n 
-0001383387 00000 n 
-0001383579 00000 n 
-0001383643 00000 n 
-0001383707 00000 n 
-0001383771 00000 n 
-0001383835 00000 n 
-0001383899 00000 n 
-0001383963 00000 n 
-0001384027 00000 n 
-0001384090 00000 n 
-0001384154 00000 n 
-0001384217 00000 n 
-0001384281 00000 n 
-0001384343 00000 n 
-0001384407 00000 n 
-0001384471 00000 n 
-0001384535 00000 n 
-0001384599 00000 n 
-0001384663 00000 n 
-0001384727 00000 n 
-0001384791 00000 n 
-0001384855 00000 n 
-0001384919 00000 n 
-0001384983 00000 n 
-0001385047 00000 n 
-0001385111 00000 n 
-0001385175 00000 n 
-0001385239 00000 n 
-0001385303 00000 n 
-0001385367 00000 n 
-0001383237 00000 n 
-0004772668 00000 n 
-0001387849 00000 n 
-0001388009 00000 n 
-0001388169 00000 n 
-0001388509 00000 n 
-0001387694 00000 n 
-0001385588 00000 n 
-0001388318 00000 n 
-0001388445 00000 n 
-0001398110 00000 n 
-0001400414 00000 n 
-0001390439 00000 n 
-0001390132 00000 n 
-0001388667 00000 n 
-0001390248 00000 n 
-0001390375 00000 n 
-0001392350 00000 n 
-0001392822 00000 n 
-0001392213 00000 n 
-0001390597 00000 n 
-0001392504 00000 n 
-0001392631 00000 n 
-0001392758 00000 n 
-0001400542 00000 n 
-0001393921 00000 n 
-0001394523 00000 n 
-0001393784 00000 n 
-0001392966 00000 n 
-0001394078 00000 n 
-0001394205 00000 n 
-0001394332 00000 n 
-0001394459 00000 n 
-0001398174 00000 n 
-0001397866 00000 n 
-0001394667 00000 n 
-0001397982 00000 n 
-0001400606 00000 n 
-0001400170 00000 n 
-0001398304 00000 n 
-0001400286 00000 n 
-0004772794 00000 n 
-0001402425 00000 n 
-0001402119 00000 n 
-0001400722 00000 n 
-0001402235 00000 n 
-0001404104 00000 n 
-0001412151 00000 n 
-0001409994 00000 n 
-0001410150 00000 n 
-0001421775 00000 n 
-0001418052 00000 n 
-0001410625 00000 n 
-0001403958 00000 n 
-0001402626 00000 n 
-0001410306 00000 n 
-0001410433 00000 n 
-0001410561 00000 n 
-0001405650 00000 n 
-0001405768 00000 n 
-0001405816 00000 n 
-0001406189 00000 n 
-0001406447 00000 n 
-0001406470 00000 n 
-0001406775 00000 n 
-0001407039 00000 n 
-0001409060 00000 n 
-0001409949 00000 n 
-0001409972 00000 n 
-0001422066 00000 n 
-0001422258 00000 n 
-0001412014 00000 n 
-0001410799 00000 n 
-0001421938 00000 n 
-0001422194 00000 n 
-0001413708 00000 n 
-0001413826 00000 n 
-0001413874 00000 n 
-0001414247 00000 n 
-0001414505 00000 n 
-0001414528 00000 n 
-0001414833 00000 n 
-0001415097 00000 n 
-0001417118 00000 n 
-0001418007 00000 n 
-0001418030 00000 n 
-0001418969 00000 n 
-0001419087 00000 n 
-0001419135 00000 n 
-0001419528 00000 n 
-0001419550 00000 n 
-0001419848 00000 n 
-0001421752 00000 n 
-0001424949 00000 n 
-0001424514 00000 n 
-0001422419 00000 n 
-0001424630 00000 n 
-0001424757 00000 n 
-0001424821 00000 n 
-0001424885 00000 n 
-0001427466 00000 n 
-0001427095 00000 n 
-0001425079 00000 n 
-0001427211 00000 n 
-0001427275 00000 n 
-0001427402 00000 n 
-0001430334 00000 n 
-0001430027 00000 n 
-0001427596 00000 n 
-0001430143 00000 n 
-0001430270 00000 n 
-0004772920 00000 n 
-0001433076 00000 n 
-0001432896 00000 n 
-0001430464 00000 n 
-0001433012 00000 n 
-0001435508 00000 n 
-0001436252 00000 n 
-0001435362 00000 n 
-0001433206 00000 n 
-0001435806 00000 n 
-0001435933 00000 n 
-0001435997 00000 n 
-0001436061 00000 n 
-0001435658 00000 n 
-0001436188 00000 n 
-0001438764 00000 n 
-0001439105 00000 n 
-0001438627 00000 n 
-0001436382 00000 n 
-0001438915 00000 n 
-0001439042 00000 n 
-0001441792 00000 n 
-0001441982 00000 n 
-0001441549 00000 n 
-0001439292 00000 n 
-0001441665 00000 n 
-0001441918 00000 n 
-0001443730 00000 n 
-0001443886 00000 n 
-0001446673 00000 n 
-0001444483 00000 n 
-0001443584 00000 n 
-0001442112 00000 n 
-0001444037 00000 n 
-0001444164 00000 n 
-0001444291 00000 n 
-0001444419 00000 n 
-0001446956 00000 n 
-0001447467 00000 n 
-0001446536 00000 n 
-0001444613 00000 n 
-0001446828 00000 n 
-0001447020 00000 n 
-0001447084 00000 n 
-0001447148 00000 n 
-0001447275 00000 n 
-0001447403 00000 n 
-0004773046 00000 n 
-0001450158 00000 n 
-0001449597 00000 n 
-0001447638 00000 n 
-0001449713 00000 n 
-0001449840 00000 n 
-0001449967 00000 n 
-0001450094 00000 n 
-0001452484 00000 n 
-0001451729 00000 n 
-0001450359 00000 n 
-0001451845 00000 n 
-0001451909 00000 n 
-0001451973 00000 n 
-0001452037 00000 n 
-0001452101 00000 n 
-0001452165 00000 n 
-0001452229 00000 n 
-0001452293 00000 n 
-0001452357 00000 n 
-0001452420 00000 n 
-0001454517 00000 n 
-0001454210 00000 n 
-0001452656 00000 n 
-0001454326 00000 n 
-0001457389 00000 n 
-0001456955 00000 n 
-0001454633 00000 n 
-0001457071 00000 n 
-0001457198 00000 n 
-0001457325 00000 n 
-0001460333 00000 n 
-0001459898 00000 n 
-0001457505 00000 n 
-0001460014 00000 n 
-0001460141 00000 n 
-0001460269 00000 n 
-0001462196 00000 n 
-0001461888 00000 n 
-0001460477 00000 n 
-0001462004 00000 n 
-0001462132 00000 n 
-0004773172 00000 n 
-0001463486 00000 n 
-0001463306 00000 n 
-0001462326 00000 n 
-0001463422 00000 n 
-0001465773 00000 n 
-0001465466 00000 n 
-0001463616 00000 n 
-0001465582 00000 n 
-0001465709 00000 n 
-0001467681 00000 n 
-0001467501 00000 n 
-0001465903 00000 n 
-0001467617 00000 n 
-0001469927 00000 n 
-0001469492 00000 n 
-0001467854 00000 n 
-0001469608 00000 n 
-0001469736 00000 n 
-0001469863 00000 n 
-0001471781 00000 n 
-0001472129 00000 n 
-0001471644 00000 n 
-0001470114 00000 n 
-0001471937 00000 n 
-0001472065 00000 n 
-0001473831 00000 n 
-0001473651 00000 n 
-0001472259 00000 n 
-0001473767 00000 n 
-0004773298 00000 n 
-0001474993 00000 n 
-0001474813 00000 n 
-0001473947 00000 n 
-0001474929 00000 n 
-0001477206 00000 n 
-0001476898 00000 n 
-0001475109 00000 n 
-0001477014 00000 n 
-0001477142 00000 n 
-0001478991 00000 n 
-0001479538 00000 n 
-0001478854 00000 n 
-0001477407 00000 n 
-0001479154 00000 n 
-0001479282 00000 n 
-0001479410 00000 n 
-0001479474 00000 n 
-0001482388 00000 n 
-0001482545 00000 n 
-0001483818 00000 n 
-0001482233 00000 n 
-0001479668 00000 n 
-0001482859 00000 n 
-0001482987 00000 n 
-0001483051 00000 n 
-0001483115 00000 n 
-0001483179 00000 n 
-0001483243 00000 n 
-0001483307 00000 n 
-0001483371 00000 n 
-0001483435 00000 n 
-0001483498 00000 n 
-0001483562 00000 n 
-0001483626 00000 n 
-0001482702 00000 n 
-0001483754 00000 n 
-0001485764 00000 n 
-0001485328 00000 n 
-0001483989 00000 n 
-0001485444 00000 n 
-0001485572 00000 n 
-0001485700 00000 n 
-0001487395 00000 n 
-0001487870 00000 n 
-0001487258 00000 n 
-0001485908 00000 n 
-0001487550 00000 n 
-0001487678 00000 n 
-0001487806 00000 n 
-0004773424 00000 n 
-0001489660 00000 n 
-0001490149 00000 n 
-0001489514 00000 n 
-0001488000 00000 n 
-0001489957 00000 n 
-0001490085 00000 n 
-0001489809 00000 n 
-0001491712 00000 n 
-0001491532 00000 n 
-0001490279 00000 n 
-0001491648 00000 n 
-0001493428 00000 n 
-0001493248 00000 n 
-0001491885 00000 n 
-0001493364 00000 n 
-0001494737 00000 n 
-0001494429 00000 n 
-0001493544 00000 n 
-0001494545 00000 n 
-0001494673 00000 n 
-0001496477 00000 n 
-0001496169 00000 n 
-0001494867 00000 n 
-0001496285 00000 n 
-0001496413 00000 n 
-0001498212 00000 n 
-0001498032 00000 n 
-0001496607 00000 n 
-0001498148 00000 n 
-0004773550 00000 n 
-0001500172 00000 n 
-0001500564 00000 n 
-0001500035 00000 n 
-0001498342 00000 n 
-0001500372 00000 n 
-0001500500 00000 n 
-0001502068 00000 n 
-0001501888 00000 n 
-0001500750 00000 n 
-0001502004 00000 n 
-0001503399 00000 n 
-0001503219 00000 n 
-0001502184 00000 n 
-0001503335 00000 n 
-0001505644 00000 n 
-0001505336 00000 n 
-0001503515 00000 n 
-0001505452 00000 n 
-0001505580 00000 n 
-0001507607 00000 n 
-0001507299 00000 n 
-0001505774 00000 n 
-0001507415 00000 n 
-0001507543 00000 n 
-0001509820 00000 n 
-0001509512 00000 n 
-0001507751 00000 n 
-0001509628 00000 n 
-0001509756 00000 n 
-0004773676 00000 n 
-0001511652 00000 n 
-0001512286 00000 n 
-0001511506 00000 n 
-0001509964 00000 n 
-0001511966 00000 n 
-0001512094 00000 n 
-0001511810 00000 n 
-0001512222 00000 n 
-0001515098 00000 n 
-0001514662 00000 n 
-0001512416 00000 n 
-0001514778 00000 n 
-0001514842 00000 n 
-0001514906 00000 n 
-0001515034 00000 n 
-0001517690 00000 n 
-0001517904 00000 n 
-0001517553 00000 n 
-0001515214 00000 n 
-0001517840 00000 n 
-0001520592 00000 n 
-0001520284 00000 n 
-0001518048 00000 n 
-0001520400 00000 n 
-0001520528 00000 n 
-0001522968 00000 n 
-0001522788 00000 n 
-0001520750 00000 n 
-0001522904 00000 n 
-0001525367 00000 n 
-0001524803 00000 n 
-0001523169 00000 n 
-0001524919 00000 n 
-0001525047 00000 n 
-0001525175 00000 n 
-0001525303 00000 n 
-0004773802 00000 n 
-0001528034 00000 n 
-0001527854 00000 n 
-0001525511 00000 n 
-0001527970 00000 n 
-0001529395 00000 n 
-0001529215 00000 n 
-0001528164 00000 n 
-0001529331 00000 n 
-0001531455 00000 n 
-0001530891 00000 n 
-0001529511 00000 n 
-0001531007 00000 n 
-0001531135 00000 n 
-0001531263 00000 n 
-0001531391 00000 n 
-0001533507 00000 n 
-0001533071 00000 n 
-0001531585 00000 n 
-0001533187 00000 n 
-0001533315 00000 n 
-0001533443 00000 n 
-0001535455 00000 n 
-0001534892 00000 n 
-0001533637 00000 n 
-0001535008 00000 n 
-0001535136 00000 n 
-0001535264 00000 n 
-0001535392 00000 n 
-0001536855 00000 n 
-0001536675 00000 n 
-0001535585 00000 n 
-0001536791 00000 n 
-0004773928 00000 n 
-0001539117 00000 n 
-0001538809 00000 n 
-0001536971 00000 n 
-0001538925 00000 n 
-0001541379 00000 n 
-0001542133 00000 n 
-0001541233 00000 n 
-0001539233 00000 n 
-0001541687 00000 n 
-0001541815 00000 n 
-0001541533 00000 n 
-0001541941 00000 n 
-0001542069 00000 n 
-0001544706 00000 n 
-0001544526 00000 n 
-0001542319 00000 n 
-0001544642 00000 n 
-0001547583 00000 n 
-0001547403 00000 n 
-0001544822 00000 n 
-0001547519 00000 n 
-0001550261 00000 n 
-0001550081 00000 n 
-0001547713 00000 n 
-0001550197 00000 n 
-0001553139 00000 n 
-0001552703 00000 n 
-0001550391 00000 n 
-0001552819 00000 n 
-0001552947 00000 n 
-0001553075 00000 n 
-0004774054 00000 n 
-0001555953 00000 n 
-0001557259 00000 n 
-0001555816 00000 n 
-0001553297 00000 n 
-0001556107 00000 n 
-0001556235 00000 n 
-0001556363 00000 n 
-0001556491 00000 n 
-0001556619 00000 n 
-0001556683 00000 n 
-0001556747 00000 n 
-0001556811 00000 n 
-0001556875 00000 n 
-0001556939 00000 n 
-0001557003 00000 n 
-0001557067 00000 n 
-0001557131 00000 n 
-0001557195 00000 n 
-0001561713 00000 n 
-0001558815 00000 n 
-0001558443 00000 n 
-0001557430 00000 n 
-0001558559 00000 n 
-0001558623 00000 n 
-0001558687 00000 n 
-0001558751 00000 n 
-0001563211 00000 n 
-0001561576 00000 n 
-0001558931 00000 n 
-0001561867 00000 n 
-0001561995 00000 n 
-0001562123 00000 n 
-0001562187 00000 n 
-0001562251 00000 n 
-0001562315 00000 n 
-0001562379 00000 n 
-0001562443 00000 n 
-0001562507 00000 n 
-0001562571 00000 n 
-0001562635 00000 n 
-0001562699 00000 n 
-0001562763 00000 n 
-0001562827 00000 n 
-0001562891 00000 n 
-0001562955 00000 n 
-0001563019 00000 n 
-0001563083 00000 n 
-0001563147 00000 n 
-0001569435 00000 n 
-0001565909 00000 n 
-0001565538 00000 n 
-0001563382 00000 n 
-0001565654 00000 n 
-0001565718 00000 n 
-0001565845 00000 n 
-0001570935 00000 n 
-0001569298 00000 n 
-0001566053 00000 n 
-0001569591 00000 n 
-0001569719 00000 n 
-0001569783 00000 n 
-0001569847 00000 n 
-0001569911 00000 n 
-0001569975 00000 n 
-0001570039 00000 n 
-0001570103 00000 n 
-0001570167 00000 n 
-0001570231 00000 n 
-0001570295 00000 n 
-0001570359 00000 n 
-0001570423 00000 n 
-0001570487 00000 n 
-0001570551 00000 n 
-0001570615 00000 n 
-0001570679 00000 n 
-0001570743 00000 n 
-0001570807 00000 n 
-0001570871 00000 n 
-0001573257 00000 n 
-0001572629 00000 n 
-0001571092 00000 n 
-0001572745 00000 n 
-0001572809 00000 n 
-0001572873 00000 n 
-0001572937 00000 n 
-0001573001 00000 n 
-0001573065 00000 n 
-0001573193 00000 n 
-0004774180 00000 n 
-0001576646 00000 n 
-0001576802 00000 n 
-0001578228 00000 n 
-0001576500 00000 n 
-0001573401 00000 n 
-0001576952 00000 n 
-0001577080 00000 n 
-0001577144 00000 n 
-0001577208 00000 n 
-0001577272 00000 n 
-0001577336 00000 n 
-0001577400 00000 n 
-0001577464 00000 n 
-0001577528 00000 n 
-0001577592 00000 n 
-0001577656 00000 n 
-0001577720 00000 n 
-0001577784 00000 n 
-0001577848 00000 n 
-0001577911 00000 n 
-0001577975 00000 n 
-0001578037 00000 n 
-0001578101 00000 n 
-0001578164 00000 n 
-0003422927 00000 n 
-0001579798 00000 n 
-0001579618 00000 n 
-0001578399 00000 n 
-0001579734 00000 n 
-0001581449 00000 n 
-0001582001 00000 n 
-0001581312 00000 n 
-0001579971 00000 n 
-0001581617 00000 n 
-0001581681 00000 n 
-0001581745 00000 n 
-0001581809 00000 n 
-0001581873 00000 n 
-0001581937 00000 n 
-0001583713 00000 n 
-0001583341 00000 n 
-0001582173 00000 n 
-0001583457 00000 n 
-0001583521 00000 n 
-0001583585 00000 n 
-0001583649 00000 n 
-0001586494 00000 n 
-0001587801 00000 n 
-0001586357 00000 n 
-0001583829 00000 n 
-0001586650 00000 n 
-0001586778 00000 n 
-0001586906 00000 n 
-0001586970 00000 n 
-0001587034 00000 n 
-0001587097 00000 n 
-0001587161 00000 n 
-0001587225 00000 n 
-0001587289 00000 n 
-0001587353 00000 n 
-0001587417 00000 n 
-0001587481 00000 n 
-0001587545 00000 n 
-0001587609 00000 n 
-0001587673 00000 n 
-0001587737 00000 n 
-0001589410 00000 n 
-0001589594 00000 n 
-0001590375 00000 n 
-0001589255 00000 n 
-0001587972 00000 n 
-0001590055 00000 n 
-0001590183 00000 n 
-0001590311 00000 n 
-0001589824 00000 n 
-0004774306 00000 n 
-0001592390 00000 n 
-0001592083 00000 n 
-0001590561 00000 n 
-0001592199 00000 n 
-0001594872 00000 n 
-0001595216 00000 n 
-0001594735 00000 n 
-0001592520 00000 n 
-0001595024 00000 n 
-0001595152 00000 n 
-0001598001 00000 n 
-0001598193 00000 n 
-0001597757 00000 n 
-0001595417 00000 n 
-0001597873 00000 n 
-0001598129 00000 n 
-0004763503 00000 n 
-0001600479 00000 n 
-0001600299 00000 n 
-0001598351 00000 n 
-0001600415 00000 n 
-0001603126 00000 n 
-0001602818 00000 n 
-0001600694 00000 n 
-0001602934 00000 n 
-0001603062 00000 n 
-0001604931 00000 n 
-0001604623 00000 n 
-0001603270 00000 n 
-0001604739 00000 n 
-0001604867 00000 n 
-0004774432 00000 n 
-0001606794 00000 n 
-0001607135 00000 n 
-0001606657 00000 n 
-0001605061 00000 n 
-0001606943 00000 n 
-0001607071 00000 n 
-0001609228 00000 n 
-0001608792 00000 n 
-0001607265 00000 n 
-0001608908 00000 n 
-0001609036 00000 n 
-0001609164 00000 n 
-0001610800 00000 n 
-0001611022 00000 n 
-0001610663 00000 n 
-0001609415 00000 n 
-0001610958 00000 n 
-0001611419 00000 n 
-0001611239 00000 n 
-0001611138 00000 n 
-0001611355 00000 n 
-0001613491 00000 n 
-0001613183 00000 n 
-0001611461 00000 n 
-0001613299 00000 n 
-0001616108 00000 n 
-0001615800 00000 n 
-0001613607 00000 n 
-0001615916 00000 n 
-0001616044 00000 n 
-0004774558 00000 n 
-0001618833 00000 n 
-0001618397 00000 n 
-0001616280 00000 n 
-0001618513 00000 n 
-0001618641 00000 n 
-0001618769 00000 n 
-0001620993 00000 n 
-0001620813 00000 n 
-0001618991 00000 n 
-0001620929 00000 n 
-0001623426 00000 n 
-0001623775 00000 n 
-0001623289 00000 n 
-0001621123 00000 n 
-0001623584 00000 n 
-0001623712 00000 n 
-0001626118 00000 n 
-0001625839 00000 n 
-0001628350 00000 n 
-0001635226 00000 n 
-0001626310 00000 n 
-0001625702 00000 n 
-0001623933 00000 n 
-0001625990 00000 n 
-0001626246 00000 n 
-0001635505 00000 n 
-0001635697 00000 n 
-0001628213 00000 n 
-0001626440 00000 n 
-0001635377 00000 n 
-0001635633 00000 n 
-0001629322 00000 n 
-0001629440 00000 n 
-0001629488 00000 n 
-0001629871 00000 n 
-0001630281 00000 n 
-0001630303 00000 n 
-0001630594 00000 n 
-0001630916 00000 n 
-0001632602 00000 n 
-0001635180 00000 n 
-0001635203 00000 n 
-0001638570 00000 n 
-0001638262 00000 n 
-0001635843 00000 n 
-0001638378 00000 n 
-0001638506 00000 n 
-0004774684 00000 n 
-0001640652 00000 n 
-0001640280 00000 n 
-0001638714 00000 n 
-0001640396 00000 n 
-0001640460 00000 n 
-0001640524 00000 n 
-0001640588 00000 n 
-0001643098 00000 n 
-0001643246 00000 n 
-0001643395 00000 n 
-0001644118 00000 n 
-0001642943 00000 n 
-0001640768 00000 n 
-0001643543 00000 n 
-0001643671 00000 n 
-0001643799 00000 n 
-0001643927 00000 n 
-0001644055 00000 n 
-0001646766 00000 n 
-0001649490 00000 n 
-0001691499 00000 n 
-0001646958 00000 n 
-0001646522 00000 n 
-0001644262 00000 n 
-0001646638 00000 n 
-0001646894 00000 n 
-0001649554 00000 n 
-0001649246 00000 n 
-0001647102 00000 n 
-0001649362 00000 n 
-0001652065 00000 n 
-0001652852 00000 n 
-0001651928 00000 n 
-0001649684 00000 n 
-0001652276 00000 n 
-0001652404 00000 n 
-0001652532 00000 n 
-0001652596 00000 n 
-0001652660 00000 n 
-0001652788 00000 n 
-0001655621 00000 n 
-0001655250 00000 n 
-0001653038 00000 n 
-0001655366 00000 n 
-0001655430 00000 n 
-0001655493 00000 n 
-0001655557 00000 n 
-0004774810 00000 n 
-0001658543 00000 n 
-0001657980 00000 n 
-0001655836 00000 n 
-0001658096 00000 n 
-0001658224 00000 n 
-0001658352 00000 n 
-0001658479 00000 n 
-0001661302 00000 n 
-0001660866 00000 n 
-0001658730 00000 n 
-0001660982 00000 n 
-0001661110 00000 n 
-0001661238 00000 n 
-0004762159 00000 n 
-0001664350 00000 n 
-0001663914 00000 n 
-0001661474 00000 n 
-0001664030 00000 n 
-0001664158 00000 n 
-0001664286 00000 n 
-0001667200 00000 n 
-0001666892 00000 n 
-0001664494 00000 n 
-0001667008 00000 n 
-0001667136 00000 n 
-0001668176 00000 n 
-0001667996 00000 n 
-0001667344 00000 n 
-0001668112 00000 n 
-0001670689 00000 n 
-0001670381 00000 n 
-0001668306 00000 n 
-0001670497 00000 n 
-0001670625 00000 n 
-0004774936 00000 n 
-0001672140 00000 n 
-0001671960 00000 n 
-0001670847 00000 n 
-0001672076 00000 n 
-0001675384 00000 n 
-0001674630 00000 n 
-0001672284 00000 n 
-0001674746 00000 n 
-0001674810 00000 n 
-0001674874 00000 n 
-0001674937 00000 n 
-0001675001 00000 n 
-0001675064 00000 n 
-0001675192 00000 n 
-0001675320 00000 n 
-0001677787 00000 n 
-0001677479 00000 n 
-0001675570 00000 n 
-0001677595 00000 n 
-0001677723 00000 n 
-0001679721 00000 n 
-0001680063 00000 n 
-0001679584 00000 n 
-0001677931 00000 n 
-0001679871 00000 n 
-0001679999 00000 n 
-0001693148 00000 n 
-0001682560 00000 n 
-0001681868 00000 n 
-0001680193 00000 n 
-0001681984 00000 n 
-0001682112 00000 n 
-0001682240 00000 n 
-0001682368 00000 n 
-0001682432 00000 n 
-0001682496 00000 n 
-0001684102 00000 n 
-0001683794 00000 n 
-0001682690 00000 n 
-0001683910 00000 n 
-0001683974 00000 n 
-0001684038 00000 n 
-0004775062 00000 n 
-0001687030 00000 n 
-0001686339 00000 n 
-0001684289 00000 n 
-0001686455 00000 n 
-0001686519 00000 n 
-0001686583 00000 n 
-0001686647 00000 n 
-0001686711 00000 n 
-0001686839 00000 n 
-0001686966 00000 n 
-0001688928 00000 n 
-0001688556 00000 n 
-0001687187 00000 n 
-0001688672 00000 n 
-0001688736 00000 n 
-0001688800 00000 n 
-0001688864 00000 n 
-0001691563 00000 n 
-0001691256 00000 n 
-0001689057 00000 n 
-0001691372 00000 n 
-0001693212 00000 n 
-0001692904 00000 n 
-0001691679 00000 n 
-0001693020 00000 n 
-0001695153 00000 n 
-0001694717 00000 n 
-0001693314 00000 n 
-0001694833 00000 n 
-0001695089 00000 n 
-0001697982 00000 n 
-0001697675 00000 n 
-0001695283 00000 n 
-0001697791 00000 n 
-0001697918 00000 n 
-0004775188 00000 n 
-0001700630 00000 n 
-0001700322 00000 n 
-0001698169 00000 n 
-0001700438 00000 n 
-0001700566 00000 n 
-0001703215 00000 n 
-0001703035 00000 n 
-0001700788 00000 n 
-0001703151 00000 n 
-0001705877 00000 n 
-0001705697 00000 n 
-0001703331 00000 n 
-0001705813 00000 n 
-0001708373 00000 n 
-0001707809 00000 n 
-0001705979 00000 n 
-0001707925 00000 n 
-0001708053 00000 n 
-0001708181 00000 n 
-0001708309 00000 n 
-0001711117 00000 n 
-0001710553 00000 n 
-0001708489 00000 n 
-0001710669 00000 n 
-0001710797 00000 n 
-0001710925 00000 n 
-0001711053 00000 n 
-0001713950 00000 n 
-0001713386 00000 n 
-0001711233 00000 n 
-0001713502 00000 n 
-0001713630 00000 n 
-0001713758 00000 n 
-0001713886 00000 n 
-0004775314 00000 n 
-0001716696 00000 n 
-0001716388 00000 n 
-0001714108 00000 n 
-0001716504 00000 n 
-0001716632 00000 n 
-0001719468 00000 n 
-0001719034 00000 n 
-0001716812 00000 n 
-0001719150 00000 n 
-0001719277 00000 n 
-0001719405 00000 n 
-0001726253 00000 n 
-0001723118 00000 n 
-0001722301 00000 n 
-0001719598 00000 n 
-0001722417 00000 n 
-0001722481 00000 n 
-0001722545 00000 n 
-0001722608 00000 n 
-0001722672 00000 n 
-0001722735 00000 n 
-0001722799 00000 n 
-0001722927 00000 n 
-0001722990 00000 n 
-0001723054 00000 n 
-0001726401 00000 n 
-0001727764 00000 n 
-0001726107 00000 n 
-0001723289 00000 n 
-0001726549 00000 n 
-0001726677 00000 n 
-0001726741 00000 n 
-0001726805 00000 n 
-0001726869 00000 n 
-0001726933 00000 n 
-0001726997 00000 n 
-0001727061 00000 n 
-0001727125 00000 n 
-0001727253 00000 n 
-0001727317 00000 n 
-0001727380 00000 n 
-0001727444 00000 n 
-0001727508 00000 n 
-0001727572 00000 n 
-0001727700 00000 n 
-0001730237 00000 n 
-0001730057 00000 n 
-0001727935 00000 n 
-0001730173 00000 n 
-0001731769 00000 n 
-0001731589 00000 n 
-0001730438 00000 n 
-0001731705 00000 n 
-0004775440 00000 n 
-0001733782 00000 n 
-0001733474 00000 n 
-0001731942 00000 n 
-0001733590 00000 n 
-0001733718 00000 n 
-0001735428 00000 n 
-0001735120 00000 n 
-0001733926 00000 n 
-0001735236 00000 n 
-0001735364 00000 n 
-0001740281 00000 n 
-0001738085 00000 n 
-0001737649 00000 n 
-0001735558 00000 n 
-0001737765 00000 n 
-0001737893 00000 n 
-0001738021 00000 n 
-0001740454 00000 n 
-0001740640 00000 n 
-0001742820 00000 n 
-0001742998 00000 n 
-0001741275 00000 n 
-0001740126 00000 n 
-0001738215 00000 n 
-0001740827 00000 n 
-0001740955 00000 n 
-0001741083 00000 n 
-0001741211 00000 n 
-0001743168 00000 n 
-0001743355 00000 n 
-0001743542 00000 n 
-0001743922 00000 n 
-0001742647 00000 n 
-0001741461 00000 n 
-0001743730 00000 n 
-0001743858 00000 n 
-0001744389 00000 n 
-0001744209 00000 n 
-0001744108 00000 n 
-0001744325 00000 n 
-0004775566 00000 n 
-0001746633 00000 n 
-0001746069 00000 n 
-0001744431 00000 n 
-0001746185 00000 n 
-0001746441 00000 n 
-0001746569 00000 n 
-0001749515 00000 n 
-0001750276 00000 n 
-0001749369 00000 n 
-0001746749 00000 n 
-0001749830 00000 n 
-0004764388 00000 n 
-0001749673 00000 n 
-0001749958 00000 n 
-0001750085 00000 n 
-0001750148 00000 n 
-0001750212 00000 n 
-0001754047 00000 n 
-0001753227 00000 n 
-0001750475 00000 n 
-0001753343 00000 n 
-0001753407 00000 n 
-0001753535 00000 n 
-0001753599 00000 n 
-0001753663 00000 n 
-0001753791 00000 n 
-0001753855 00000 n 
-0001753919 00000 n 
-0001753983 00000 n 
-0001756912 00000 n 
-0001756350 00000 n 
-0001754218 00000 n 
-0001756466 00000 n 
-0001756594 00000 n 
-0001756722 00000 n 
-0001756786 00000 n 
-0001756850 00000 n 
-0001761789 00000 n 
-0001759453 00000 n 
-0001759017 00000 n 
-0001757041 00000 n 
-0001759133 00000 n 
-0001759197 00000 n 
-0001759261 00000 n 
-0001759389 00000 n 
-0001761958 00000 n 
-0001762690 00000 n 
-0001761643 00000 n 
-0001759596 00000 n 
-0001762115 00000 n 
-0001762243 00000 n 
-0001762371 00000 n 
-0001762499 00000 n 
-0001762626 00000 n 
-0004775692 00000 n 
-0001764767 00000 n 
-0001764331 00000 n 
-0001762834 00000 n 
-0001764447 00000 n 
-0001764511 00000 n 
-0001764575 00000 n 
-0001764639 00000 n 
-0001764703 00000 n 
-0001765191 00000 n 
-0001765011 00000 n 
-0001764910 00000 n 
-0001765127 00000 n 
-0001767556 00000 n 
-0001767056 00000 n 
-0001765233 00000 n 
-0001767172 00000 n 
-0001767364 00000 n 
-0001767428 00000 n 
-0001767492 00000 n 
-0001770134 00000 n 
-0001769698 00000 n 
-0001767713 00000 n 
-0001769814 00000 n 
-0001769942 00000 n 
-0001770070 00000 n 
-0001773007 00000 n 
-0001772572 00000 n 
-0001770307 00000 n 
-0001772688 00000 n 
-0001772816 00000 n 
-0001772943 00000 n 
-0001774932 00000 n 
-0001780675 00000 n 
-0001774816 00000 n 
-0001773137 00000 n 
-0001780227 00000 n 
-0001780355 00000 n 
-0001780483 00000 n 
-0001780611 00000 n 
-0004775818 00000 n 
-0001777729 00000 n 
-0001777847 00000 n 
-0001777895 00000 n 
-0001778268 00000 n 
-0001778291 00000 n 
-0001778578 00000 n 
-0001780204 00000 n 
-0001782811 00000 n 
-0001782503 00000 n 
-0001780849 00000 n 
-0001782619 00000 n 
-0001782747 00000 n 
-0001785464 00000 n 
-0001785156 00000 n 
-0001782941 00000 n 
-0001785272 00000 n 
-0001785400 00000 n 
-0001788017 00000 n 
-0001787709 00000 n 
-0001785594 00000 n 
-0001787825 00000 n 
-0001787953 00000 n 
-0001790494 00000 n 
-0001791106 00000 n 
-0001790357 00000 n 
-0001788204 00000 n 
-0001790658 00000 n 
-0001790786 00000 n 
-0001790914 00000 n 
-0001791042 00000 n 
-0001793292 00000 n 
-0001792984 00000 n 
-0001791250 00000 n 
-0001793100 00000 n 
-0001793228 00000 n 
-0001794320 00000 n 
-0001794140 00000 n 
-0001793436 00000 n 
-0001794256 00000 n 
-0004775944 00000 n 
-0001796532 00000 n 
-0001796382 00000 n 
-0001797323 00000 n 
-0001796227 00000 n 
-0001794436 00000 n 
-0001797003 00000 n 
-0001797259 00000 n 
-0001796768 00000 n 
-0001800091 00000 n 
-0001800731 00000 n 
-0001799847 00000 n 
-0001797551 00000 n 
-0001799963 00000 n 
-0001800155 00000 n 
-0001800219 00000 n 
-0001800283 00000 n 
-0001800347 00000 n 
-0001800411 00000 n 
-0001800475 00000 n 
-0001800539 00000 n 
-0001800667 00000 n 
-0001803429 00000 n 
-0001802865 00000 n 
-0001800888 00000 n 
-0001802981 00000 n 
-0001803109 00000 n 
-0001803173 00000 n 
-0001803237 00000 n 
-0001803301 00000 n 
-0001803365 00000 n 
-0001803867 00000 n 
-0001803687 00000 n 
-0001803586 00000 n 
-0001803803 00000 n 
-0001808304 00000 n 
-0001806151 00000 n 
-0001805715 00000 n 
-0001803909 00000 n 
-0001805831 00000 n 
-0001806087 00000 n 
-0001808810 00000 n 
-0001808158 00000 n 
-0001806281 00000 n 
-0001808618 00000 n 
-0001808461 00000 n 
-0001808746 00000 n 
-0004776070 00000 n 
-0001811764 00000 n 
-0001810882 00000 n 
-0001809012 00000 n 
-0001810998 00000 n 
-0001811126 00000 n 
-0001811189 00000 n 
-0001811253 00000 n 
-0001811317 00000 n 
-0001811381 00000 n 
-0001811445 00000 n 
-0001811509 00000 n 
-0001811573 00000 n 
-0001811700 00000 n 
-0001814876 00000 n 
-0001815920 00000 n 
-0001814739 00000 n 
-0001811908 00000 n 
-0001815027 00000 n 
-0001815155 00000 n 
-0001815283 00000 n 
-0001815347 00000 n 
-0001815411 00000 n 
-0001815475 00000 n 
-0001815538 00000 n 
-0001815602 00000 n 
-0001815665 00000 n 
-0001815729 00000 n 
-0001815792 00000 n 
-0001815856 00000 n 
-0001817828 00000 n 
-0001818172 00000 n 
-0001817691 00000 n 
-0001816077 00000 n 
-0001817980 00000 n 
-0001818108 00000 n 
-0001820108 00000 n 
-0001819800 00000 n 
-0001818330 00000 n 
-0001819916 00000 n 
-0001820044 00000 n 
-0001822209 00000 n 
-0001822029 00000 n 
-0001820309 00000 n 
-0001822145 00000 n 
-0001823840 00000 n 
-0001823660 00000 n 
-0001822353 00000 n 
-0001823776 00000 n 
-0004776196 00000 n 
-0001826694 00000 n 
-0001826844 00000 n 
-0001826996 00000 n 
-0001827810 00000 n 
-0001826530 00000 n 
-0001823984 00000 n 
-0001827299 00000 n 
-0001827363 00000 n 
-0001827426 00000 n 
-0001827490 00000 n 
-0001827618 00000 n 
-0001827746 00000 n 
-0001827148 00000 n 
-0001831790 00000 n 
-0001833833 00000 n 
-0001831546 00000 n 
-0001827967 00000 n 
-0001831662 00000 n 
-0001831854 00000 n 
-0001831918 00000 n 
-0001831982 00000 n 
-0001832046 00000 n 
-0001832110 00000 n 
-0001832174 00000 n 
-0001832238 00000 n 
-0001832302 00000 n 
-0001832365 00000 n 
-0001832429 00000 n 
-0001832492 00000 n 
-0001832556 00000 n 
-0001832618 00000 n 
-0001832682 00000 n 
-0001832746 00000 n 
-0001832810 00000 n 
-0001832874 00000 n 
-0001832938 00000 n 
-0001833002 00000 n 
-0001833066 00000 n 
-0001833130 00000 n 
-0001833194 00000 n 
-0001833258 00000 n 
-0001833322 00000 n 
-0001833386 00000 n 
-0001833450 00000 n 
-0001833514 00000 n 
-0001833578 00000 n 
-0001833642 00000 n 
-0001833770 00000 n 
-0001836571 00000 n 
-0001837671 00000 n 
-0001836455 00000 n 
-0001833990 00000 n 
-0001837607 00000 n 
-0001836955 00000 n 
-0001837073 00000 n 
-0001837121 00000 n 
-0001837586 00000 n 
-0001840560 00000 n 
-0001840902 00000 n 
-0001840423 00000 n 
-0001837929 00000 n 
-0001840712 00000 n 
-0001840838 00000 n 
-0001859624 00000 n 
-0001843709 00000 n 
-0001843529 00000 n 
-0001841060 00000 n 
-0001843645 00000 n 
-0001846255 00000 n 
-0001845948 00000 n 
-0001843867 00000 n 
-0001846064 00000 n 
-0001846192 00000 n 
-0004776322 00000 n 
-0001848552 00000 n 
-0001848703 00000 n 
-0001849045 00000 n 
-0001848406 00000 n 
-0001846427 00000 n 
-0001848853 00000 n 
-0001848981 00000 n 
-0001852001 00000 n 
-0001852157 00000 n 
-0001852313 00000 n 
-0001852789 00000 n 
-0001851846 00000 n 
-0001849203 00000 n 
-0001852470 00000 n 
-0001852598 00000 n 
-0001852725 00000 n 
-0001855797 00000 n 
-0001855513 00000 n 
-0001855861 00000 n 
-0001855376 00000 n 
-0001852947 00000 n 
-0001855669 00000 n 
-0001859688 00000 n 
-0001859124 00000 n 
-0001856005 00000 n 
-0001859240 00000 n 
-0004764536 00000 n 
-0001859304 00000 n 
-0001859368 00000 n 
-0001859432 00000 n 
-0001859496 00000 n 
-0001862337 00000 n 
-0001862517 00000 n 
-0001862756 00000 n 
-0001862191 00000 n 
-0001859901 00000 n 
-0001862692 00000 n 
-0001865851 00000 n 
-0001865415 00000 n 
-0001862956 00000 n 
-0001865531 00000 n 
-0001865659 00000 n 
-0001865787 00000 n 
-0004776448 00000 n 
-0001868614 00000 n 
-0001869087 00000 n 
-0001868477 00000 n 
-0001866037 00000 n 
-0001868767 00000 n 
-0001868895 00000 n 
-0001869023 00000 n 
-0001872509 00000 n 
-0001873533 00000 n 
-0001872265 00000 n 
-0001869259 00000 n 
-0001872381 00000 n 
-0001872573 00000 n 
-0001872637 00000 n 
-0001872701 00000 n 
-0001872765 00000 n 
-0001872829 00000 n 
-0001872893 00000 n 
-0001872957 00000 n 
-0001873021 00000 n 
-0001873085 00000 n 
-0001873149 00000 n 
-0001873213 00000 n 
-0001873277 00000 n 
-0001873341 00000 n 
-0001873405 00000 n 
-0001873469 00000 n 
-0001876213 00000 n 
-0001876033 00000 n 
-0001873746 00000 n 
-0001876149 00000 n 
-0001878687 00000 n 
-0001878379 00000 n 
-0001876456 00000 n 
-0001878495 00000 n 
-0001878623 00000 n 
-0001881943 00000 n 
-0001881507 00000 n 
-0001878931 00000 n 
-0001881623 00000 n 
-0001881751 00000 n 
-0001881879 00000 n 
-0001884707 00000 n 
-0001885306 00000 n 
-0001884570 00000 n 
-0001882115 00000 n 
-0001884859 00000 n 
-0001884987 00000 n 
-0001885051 00000 n 
-0001885115 00000 n 
-0001885179 00000 n 
-0001885242 00000 n 
-0004776574 00000 n 
-0001888597 00000 n 
-0001888289 00000 n 
-0001885478 00000 n 
-0001888405 00000 n 
-0001888533 00000 n 
-0001890499 00000 n 
-0001890319 00000 n 
-0001888755 00000 n 
-0001890435 00000 n 
-0001892996 00000 n 
-0001892689 00000 n 
-0001890657 00000 n 
-0001892805 00000 n 
-0001892932 00000 n 
-0001895720 00000 n 
-0001895412 00000 n 
-0001893211 00000 n 
-0001895528 00000 n 
-0001895656 00000 n 
-0001897817 00000 n 
-0001897509 00000 n 
-0001895892 00000 n 
-0001897625 00000 n 
-0001897753 00000 n 
-0001899205 00000 n 
-0001899025 00000 n 
-0001897947 00000 n 
-0001899141 00000 n 
-0004776700 00000 n 
-0001901548 00000 n 
-0001901241 00000 n 
-0001899307 00000 n 
-0001901357 00000 n 
-0001901485 00000 n 
-0001903623 00000 n 
-0001903315 00000 n 
-0001901706 00000 n 
-0001903431 00000 n 
-0001903559 00000 n 
-0001906404 00000 n 
-0001906096 00000 n 
-0001903753 00000 n 
-0001906212 00000 n 
-0001906340 00000 n 
-0001908618 00000 n 
-0001908311 00000 n 
-0001906548 00000 n 
-0001908427 00000 n 
-0001908554 00000 n 
-0001910657 00000 n 
-0001910350 00000 n 
-0001908790 00000 n 
-0001910466 00000 n 
-0001910594 00000 n 
-0001913295 00000 n 
-0001912859 00000 n 
-0001910815 00000 n 
-0001912975 00000 n 
-0001913103 00000 n 
-0001913231 00000 n 
-0004776826 00000 n 
-0001916502 00000 n 
-0001915875 00000 n 
-0001913510 00000 n 
-0001915991 00000 n 
-0001916055 00000 n 
-0001916118 00000 n 
-0001916182 00000 n 
-0001916246 00000 n 
-0001916310 00000 n 
-0001916438 00000 n 
-0001919638 00000 n 
-0001919138 00000 n 
-0001916688 00000 n 
-0001919254 00000 n 
-0001919318 00000 n 
-0001919382 00000 n 
-0001919446 00000 n 
-0001919510 00000 n 
-0001919574 00000 n 
-0001922867 00000 n 
-0001922239 00000 n 
-0001919796 00000 n 
-0001922355 00000 n 
-0001922419 00000 n 
-0001922483 00000 n 
-0001922547 00000 n 
-0001922611 00000 n 
-0001922675 00000 n 
-0001922803 00000 n 
-0001925401 00000 n 
-0001925747 00000 n 
-0001925264 00000 n 
-0001923025 00000 n 
-0001925555 00000 n 
-0001925683 00000 n 
-0001928881 00000 n 
-0001928189 00000 n 
-0001925919 00000 n 
-0001928305 00000 n 
-0001928433 00000 n 
-0001928561 00000 n 
-0001928625 00000 n 
-0001928689 00000 n 
-0001928753 00000 n 
-0001928817 00000 n 
-0001934482 00000 n 
-0001932235 00000 n 
-0001931351 00000 n 
-0001929011 00000 n 
-0001931467 00000 n 
-0001931531 00000 n 
-0001931595 00000 n 
-0001931659 00000 n 
-0001931723 00000 n 
-0001931787 00000 n 
-0001931851 00000 n 
-0001931915 00000 n 
-0001931979 00000 n 
-0001932043 00000 n 
-0001932107 00000 n 
-0001932171 00000 n 
-0004776952 00000 n 
-0001935735 00000 n 
-0001934366 00000 n 
-0001932379 00000 n 
-0001935543 00000 n 
-0001935671 00000 n 
-0001934865 00000 n 
-0001934983 00000 n 
-0001935031 00000 n 
-0001935522 00000 n 
-0001936875 00000 n 
-0001936695 00000 n 
-0001935979 00000 n 
-0001936811 00000 n 
-0001938695 00000 n 
-0001938387 00000 n 
-0001936977 00000 n 
-0001938503 00000 n 
-0001938631 00000 n 
-0001941309 00000 n 
-0001941129 00000 n 
-0001938867 00000 n 
-0001941245 00000 n 
-0001943983 00000 n 
-0001943675 00000 n 
-0001941553 00000 n 
-0001943791 00000 n 
-0001943919 00000 n 
-0001946532 00000 n 
-0001946224 00000 n 
-0001944141 00000 n 
-0001946340 00000 n 
-0001946468 00000 n 
-0004777078 00000 n 
-0001947588 00000 n 
-0001947408 00000 n 
-0001946676 00000 n 
-0001947524 00000 n 
-0001948893 00000 n 
-0001948713 00000 n 
-0001947690 00000 n 
-0001948829 00000 n 
-0001953499 00000 n 
-0001953813 00000 n 
-0001951127 00000 n 
-0001950819 00000 n 
-0001949009 00000 n 
-0001950935 00000 n 
-0001951063 00000 n 
-0001953969 00000 n 
-0001954148 00000 n 
-0001954776 00000 n 
-0001953326 00000 n 
-0001951271 00000 n 
-0001954328 00000 n 
-0001954456 00000 n 
-0001953656 00000 n 
-0001954584 00000 n 
-0001954712 00000 n 
-0002580913 00000 n 
-0001957411 00000 n 
-0001956847 00000 n 
-0001954962 00000 n 
-0001956963 00000 n 
-0001957091 00000 n 
-0001957219 00000 n 
-0001957347 00000 n 
-0001959936 00000 n 
-0001960530 00000 n 
-0001959799 00000 n 
-0001957555 00000 n 
-0001960146 00000 n 
-0001960210 00000 n 
-0001960274 00000 n 
-0001960338 00000 n 
-0001960466 00000 n 
-0004777204 00000 n 
-0001962725 00000 n 
-0001962545 00000 n 
-0001960744 00000 n 
-0001962661 00000 n 
-0001965581 00000 n 
-0001965273 00000 n 
-0001962869 00000 n 
-0001965389 00000 n 
-0001965517 00000 n 
-0001971526 00000 n 
-0001971064 00000 n 
-0001968641 00000 n 
-0001968334 00000 n 
-0001965753 00000 n 
-0001968450 00000 n 
-0001968578 00000 n 
-0001971221 00000 n 
-0001971705 00000 n 
-0001972447 00000 n 
-0001970891 00000 n 
-0001968827 00000 n 
-0001971873 00000 n 
-0001972001 00000 n 
-0001971374 00000 n 
-0001972128 00000 n 
-0001972256 00000 n 
-0001972384 00000 n 
-0001973647 00000 n 
-0001973467 00000 n 
-0001972633 00000 n 
-0001973583 00000 n 
-0001974030 00000 n 
-0001973850 00000 n 
-0001973749 00000 n 
-0001973966 00000 n 
-0004777330 00000 n 
-0001976136 00000 n 
-0001975975 00000 n 
-0001979799 00000 n 
-0001976879 00000 n 
-0001975829 00000 n 
-0001974072 00000 n 
-0001976305 00000 n 
-0001976559 00000 n 
-0001976687 00000 n 
-0001976815 00000 n 
-0001979970 00000 n 
-0001980477 00000 n 
-0001979653 00000 n 
-0001977051 00000 n 
-0001980157 00000 n 
-0001980285 00000 n 
-0001980413 00000 n 
-0001982938 00000 n 
-0001983288 00000 n 
-0001982801 00000 n 
-0001980691 00000 n 
-0001983097 00000 n 
-0001983224 00000 n 
-0001987068 00000 n 
-0001986781 00000 n 
-0001988088 00000 n 
-0001986644 00000 n 
-0001983532 00000 n 
-0001986940 00000 n 
-0001987132 00000 n 
-0001987196 00000 n 
-0001987260 00000 n 
-0001987324 00000 n 
-0001987388 00000 n 
-0001987452 00000 n 
-0001987516 00000 n 
-0001987580 00000 n 
-0001987643 00000 n 
-0001987707 00000 n 
-0001987770 00000 n 
-0001987834 00000 n 
-0001987896 00000 n 
-0001988024 00000 n 
-0001991932 00000 n 
-0001993656 00000 n 
-0001991688 00000 n 
-0001988245 00000 n 
-0001991804 00000 n 
-0001991996 00000 n 
-0001992060 00000 n 
-0001992124 00000 n 
-0001992188 00000 n 
-0001992252 00000 n 
-0001992316 00000 n 
-0001992380 00000 n 
-0001992444 00000 n 
-0001992507 00000 n 
-0001992571 00000 n 
-0001992634 00000 n 
-0001992698 00000 n 
-0001992760 00000 n 
-0001992824 00000 n 
-0001992888 00000 n 
-0001992952 00000 n 
-0001993016 00000 n 
-0001993080 00000 n 
-0001993144 00000 n 
-0001993208 00000 n 
-0001993272 00000 n 
-0001993336 00000 n 
-0001993400 00000 n 
-0001993464 00000 n 
-0001993592 00000 n 
-0001996623 00000 n 
-0001996124 00000 n 
-0001993827 00000 n 
-0001996240 00000 n 
-0001996368 00000 n 
-0001996495 00000 n 
-0001996559 00000 n 
-0004777456 00000 n 
-0001999507 00000 n 
-0001998879 00000 n 
-0001996753 00000 n 
-0001998995 00000 n 
-0001999059 00000 n 
-0001999123 00000 n 
-0001999187 00000 n 
-0001999251 00000 n 
-0001999315 00000 n 
-0001999443 00000 n 
-0002001880 00000 n 
-0002001574 00000 n 
-0001999665 00000 n 
-0002001690 00000 n 
-0002004182 00000 n 
-0002004693 00000 n 
-0002004036 00000 n 
-0002002123 00000 n 
-0002004501 00000 n 
-0002004629 00000 n 
-0002004343 00000 n 
-0002007394 00000 n 
-0002006959 00000 n 
-0002004851 00000 n 
-0002007075 00000 n 
-0002007203 00000 n 
-0002007330 00000 n 
-0002009908 00000 n 
-0002012696 00000 n 
-0002010376 00000 n 
-0002009771 00000 n 
-0002007524 00000 n 
-0002010057 00000 n 
-0002010185 00000 n 
-0002010312 00000 n 
-0002033807 00000 n 
-0002033871 00000 n 
-0002012580 00000 n 
-0002010577 00000 n 
-0002033679 00000 n 
-0004777582 00000 n 
-0002033490 00000 n 
-0002036331 00000 n 
-0002037986 00000 n 
-0002069270 00000 n 
-0002036673 00000 n 
-0002036194 00000 n 
-0002034019 00000 n 
-0002036481 00000 n 
-0002036609 00000 n 
-0002069548 00000 n 
-0002053243 00000 n 
-0002069868 00000 n 
-0002037849 00000 n 
-0002036846 00000 n 
-0002069420 00000 n 
-0002069676 00000 n 
-0002069804 00000 n 
-0002053057 00000 n 
-0002069083 00000 n 
-0002072567 00000 n 
-0002072260 00000 n 
-0002070059 00000 n 
-0002072376 00000 n 
-0002072504 00000 n 
-0002076978 00000 n 
-0002074728 00000 n 
-0002074420 00000 n 
-0002072755 00000 n 
-0002074536 00000 n 
-0002074664 00000 n 
-0002077347 00000 n 
-0002076841 00000 n 
-0002074915 00000 n 
-0002077156 00000 n 
-0002077284 00000 n 
-0002080101 00000 n 
-0002082919 00000 n 
-0002080476 00000 n 
-0002079964 00000 n 
-0002077591 00000 n 
-0002080284 00000 n 
-0002080412 00000 n 
-0004777708 00000 n 
-0002083289 00000 n 
-0002082782 00000 n 
-0002080676 00000 n 
-0002083097 00000 n 
-0002083225 00000 n 
-0002085791 00000 n 
-0002085484 00000 n 
-0002083574 00000 n 
-0002085600 00000 n 
-0002085728 00000 n 
-0002088057 00000 n 
-0002087622 00000 n 
-0002085992 00000 n 
-0002087738 00000 n 
-0002087866 00000 n 
-0002087993 00000 n 
-0002090067 00000 n 
-0002092243 00000 n 
-0002142956 00000 n 
-0002090537 00000 n 
-0002089930 00000 n 
-0002088201 00000 n 
-0002090217 00000 n 
-0002090345 00000 n 
-0002090473 00000 n 
-0002143234 00000 n 
-0002114855 00000 n 
-0002178849 00000 n 
-0002143554 00000 n 
-0002092106 00000 n 
-0002090695 00000 n 
-0002143106 00000 n 
-0002143362 00000 n 
-0002143490 00000 n 
-0002114668 00000 n 
-0002142767 00000 n 
-0002145993 00000 n 
-0002179004 00000 n 
-0002181216 00000 n 
-0002210810 00000 n 
-0002179352 00000 n 
-0002145847 00000 n 
-0002143773 00000 n 
-0002179160 00000 n 
-0002179288 00000 n 
-0004777834 00000 n 
-0002178660 00000 n 
-0002211237 00000 n 
-0002213076 00000 n 
-0002210960 00000 n 
-0002260507 00000 n 
-0002211557 00000 n 
-0002181070 00000 n 
-0002179542 00000 n 
-0002211109 00000 n 
-0002211365 00000 n 
-0002211493 00000 n 
-0002210621 00000 n 
-0002258707 00000 n 
-0002291388 00000 n 
-0002258899 00000 n 
-0002212960 00000 n 
-0002211733 00000 n 
-0002258579 00000 n 
-0002258835 00000 n 
-0002258390 00000 n 
-0002291452 00000 n 
-0002260391 00000 n 
-0002259075 00000 n 
-0002291260 00000 n 
-0002291071 00000 n 
-0002294142 00000 n 
-0002293962 00000 n 
-0002291614 00000 n 
-0002294078 00000 n 
-0002296604 00000 n 
-0002296297 00000 n 
-0002294286 00000 n 
-0002296413 00000 n 
-0002296541 00000 n 
-0002299262 00000 n 
-0002298826 00000 n 
-0002296748 00000 n 
-0002298942 00000 n 
-0002299070 00000 n 
-0002299198 00000 n 
-0004777960 00000 n 
-0002301974 00000 n 
-0002301538 00000 n 
-0002299464 00000 n 
-0002301654 00000 n 
-0002301782 00000 n 
-0002301910 00000 n 
-0002304184 00000 n 
-0002304004 00000 n 
-0002302132 00000 n 
-0002304120 00000 n 
-0002306645 00000 n 
-0002307117 00000 n 
-0002306508 00000 n 
-0002304399 00000 n 
-0002306797 00000 n 
-0002306925 00000 n 
-0002307053 00000 n 
-0002310554 00000 n 
-0002310087 00000 n 
-0002312105 00000 n 
-0002310244 00000 n 
-0002310618 00000 n 
-0002309941 00000 n 
-0002307289 00000 n 
-0002310426 00000 n 
-0002359301 00000 n 
-0002359015 00000 n 
-0002359365 00000 n 
-0002311968 00000 n 
-0002310832 00000 n 
-0002359173 00000 n 
-0002358826 00000 n 
-0002364157 00000 n 
-0002361486 00000 n 
-0002364632 00000 n 
-0002361349 00000 n 
-0002359527 00000 n 
-0002364312 00000 n 
-0002364440 00000 n 
-0002364568 00000 n 
-0004778086 00000 n 
-0002362128 00000 n 
-0002362246 00000 n 
-0002362294 00000 n 
-0002362521 00000 n 
-0002362543 00000 n 
-0002362818 00000 n 
-0002364134 00000 n 
-0002370375 00000 n 
-0002367193 00000 n 
-0002370532 00000 n 
-0002373776 00000 n 
-0002371029 00000 n 
-0002367047 00000 n 
-0002364820 00000 n 
-0002370712 00000 n 
-0002370839 00000 n 
-0002370965 00000 n 
-0002368070 00000 n 
-0002368188 00000 n 
-0002368236 00000 n 
-0002368475 00000 n 
-0002368497 00000 n 
-0002368778 00000 n 
-0002370352 00000 n 
-0002373958 00000 n 
-0002374143 00000 n 
-0002374352 00000 n 
-0002374531 00000 n 
-0002377909 00000 n 
-0002374900 00000 n 
-0002373603 00000 n 
-0002371259 00000 n 
-0002374708 00000 n 
-0002374836 00000 n 
-0002377310 00000 n 
-0002377460 00000 n 
-0002377760 00000 n 
-0002379927 00000 n 
-0002437738 00000 n 
-0002378569 00000 n 
-0002377137 00000 n 
-0002375100 00000 n 
-0002378121 00000 n 
-0002378249 00000 n 
-0002378377 00000 n 
-0002377610 00000 n 
-0002378505 00000 n 
-0002438017 00000 n 
-0002438273 00000 n 
-0002407986 00000 n 
-0002438337 00000 n 
-0002379790 00000 n 
-0002378755 00000 n 
-0002437889 00000 n 
-0002438145 00000 n 
-0002407799 00000 n 
-0002437549 00000 n 
-0002441054 00000 n 
-0002443460 00000 n 
-0002441717 00000 n 
-0002440917 00000 n 
-0002438514 00000 n 
-0002441205 00000 n 
-0002441333 00000 n 
-0002441461 00000 n 
-0002441525 00000 n 
-0002441589 00000 n 
-0002441653 00000 n 
-0002474338 00000 n 
-0002474530 00000 n 
-0002443344 00000 n 
-0002441902 00000 n 
-0002474210 00000 n 
-0002474466 00000 n 
-0004778212 00000 n 
-0002474021 00000 n 
-0002477207 00000 n 
-0002477882 00000 n 
-0002477061 00000 n 
-0002474734 00000 n 
-0002477562 00000 n 
-0002477690 00000 n 
-0002477386 00000 n 
-0002477818 00000 n 
-0002480810 00000 n 
-0002480246 00000 n 
-0002478040 00000 n 
-0002480362 00000 n 
-0002480490 00000 n 
-0002480618 00000 n 
-0002480746 00000 n 
-0002483776 00000 n 
-0002483214 00000 n 
-0002480968 00000 n 
-0002483330 00000 n 
-0002483457 00000 n 
-0002483584 00000 n 
-0002483712 00000 n 
-0002486329 00000 n 
-0002486810 00000 n 
-0002486192 00000 n 
-0002483892 00000 n 
-0002486490 00000 n 
-0002486618 00000 n 
-0002486746 00000 n 
-0002490209 00000 n 
-0002490363 00000 n 
-0002492518 00000 n 
-0002490054 00000 n 
-0002486996 00000 n 
-0002490726 00000 n 
-0002490854 00000 n 
-0002490982 00000 n 
-0002491046 00000 n 
-0002491110 00000 n 
-0002491174 00000 n 
-0002491238 00000 n 
-0002491302 00000 n 
-0002491366 00000 n 
-0002491430 00000 n 
-0002491494 00000 n 
-0002491558 00000 n 
-0002491622 00000 n 
-0002491686 00000 n 
-0002491750 00000 n 
-0002491814 00000 n 
-0002491878 00000 n 
-0002491942 00000 n 
-0002492006 00000 n 
-0002492070 00000 n 
-0002492134 00000 n 
-0002492198 00000 n 
-0002492262 00000 n 
-0002492326 00000 n 
-0002492454 00000 n 
-0002490545 00000 n 
-0002493925 00000 n 
-0002493745 00000 n 
-0002492689 00000 n 
-0002493861 00000 n 
-0004778338 00000 n 
-0002496080 00000 n 
-0002495772 00000 n 
-0002494055 00000 n 
-0002495888 00000 n 
-0002496016 00000 n 
-0002501106 00000 n 
-0002498435 00000 n 
-0002497999 00000 n 
-0002496281 00000 n 
-0002498115 00000 n 
-0002498243 00000 n 
-0002498371 00000 n 
-0002501482 00000 n 
-0002500969 00000 n 
-0002498650 00000 n 
-0002501290 00000 n 
-0002501418 00000 n 
-0002502859 00000 n 
-0002502679 00000 n 
-0002501768 00000 n 
-0002502795 00000 n 
-0002505041 00000 n 
-0002505427 00000 n 
-0002504895 00000 n 
-0002503032 00000 n 
-0002505363 00000 n 
-0002505202 00000 n 
-0002508358 00000 n 
-0002508050 00000 n 
-0002505614 00000 n 
-0002508166 00000 n 
-0002508294 00000 n 
-0004778464 00000 n 
-0002511198 00000 n 
-0002510762 00000 n 
-0002508544 00000 n 
-0002510878 00000 n 
-0002511006 00000 n 
-0002511134 00000 n 
-0002512606 00000 n 
-0002512426 00000 n 
-0002511384 00000 n 
-0002512542 00000 n 
-0002514699 00000 n 
-0002514327 00000 n 
-0002512708 00000 n 
-0002514443 00000 n 
-0002514571 00000 n 
-0002514635 00000 n 
-0002517393 00000 n 
-0002516765 00000 n 
-0002514914 00000 n 
-0002516881 00000 n 
-0002516945 00000 n 
-0002517009 00000 n 
-0002517073 00000 n 
-0002517137 00000 n 
-0002517265 00000 n 
-0002517329 00000 n 
-0002519977 00000 n 
-0002519541 00000 n 
-0002517608 00000 n 
-0002519657 00000 n 
-0002519721 00000 n 
-0002519785 00000 n 
-0002519913 00000 n 
-0002577464 00000 n 
-0002521178 00000 n 
-0002577934 00000 n 
-0002521041 00000 n 
-0002520192 00000 n 
-0002577614 00000 n 
-0002577742 00000 n 
-0002577870 00000 n 
-0004778590 00000 n 
-0002577275 00000 n 
-0002580977 00000 n 
-0002580541 00000 n 
-0002578110 00000 n 
-0002580657 00000 n 
-0002580785 00000 n 
-0002583717 00000 n 
-0002583153 00000 n 
-0002581135 00000 n 
-0002583269 00000 n 
-0002583397 00000 n 
-0002583461 00000 n 
-0002583525 00000 n 
-0002583589 00000 n 
-0002583653 00000 n 
-0002586210 00000 n 
-0002585902 00000 n 
-0002583889 00000 n 
-0002586018 00000 n 
-0002586146 00000 n 
-0002589110 00000 n 
-0002588674 00000 n 
-0002586368 00000 n 
-0002588790 00000 n 
-0002588918 00000 n 
-0002589046 00000 n 
-0002591076 00000 n 
-0002590768 00000 n 
-0002589296 00000 n 
-0002590884 00000 n 
-0002591012 00000 n 
-0002594015 00000 n 
-0002593643 00000 n 
-0002591220 00000 n 
-0002593759 00000 n 
-0002593887 00000 n 
-0002593951 00000 n 
-0004778716 00000 n 
-0002596054 00000 n 
-0002595746 00000 n 
-0002594201 00000 n 
-0002595862 00000 n 
-0002595926 00000 n 
-0002595990 00000 n 
-0002598169 00000 n 
-0002597861 00000 n 
-0002596212 00000 n 
-0002597977 00000 n 
-0002598041 00000 n 
-0002598105 00000 n 
-0002600206 00000 n 
-0002599898 00000 n 
-0002598327 00000 n 
-0002600014 00000 n 
-0002600078 00000 n 
-0002600142 00000 n 
-0002602236 00000 n 
-0002601864 00000 n 
-0002600350 00000 n 
-0002601980 00000 n 
-0002602044 00000 n 
-0002602108 00000 n 
-0002602172 00000 n 
-0002603540 00000 n 
-0002603360 00000 n 
-0002602352 00000 n 
-0002603476 00000 n 
-0002606182 00000 n 
-0002605747 00000 n 
-0002603656 00000 n 
-0002605863 00000 n 
-0002605927 00000 n 
-0002605991 00000 n 
-0002606055 00000 n 
-0002606119 00000 n 
-0004778842 00000 n 
-0002608457 00000 n 
-0002608085 00000 n 
-0002606340 00000 n 
-0002608201 00000 n 
-0002608265 00000 n 
-0002608393 00000 n 
-0002611495 00000 n 
-0002610932 00000 n 
-0002608587 00000 n 
-0002611048 00000 n 
-0002611176 00000 n 
-0002611304 00000 n 
-0002611432 00000 n 
-0002613608 00000 n 
-0002613173 00000 n 
-0002611639 00000 n 
-0002613289 00000 n 
-0002613417 00000 n 
-0002613545 00000 n 
-0002615428 00000 n 
-0002618543 00000 n 
-0002615813 00000 n 
-0002615291 00000 n 
-0002613752 00000 n 
-0002615621 00000 n 
-0002615749 00000 n 
-0002618735 00000 n 
-0002618913 00000 n 
-0002619118 00000 n 
-0002619308 00000 n 
-0002619693 00000 n 
-0002618370 00000 n 
-0002615999 00000 n 
-0002619501 00000 n 
-0002619629 00000 n 
-0002622634 00000 n 
-0002622805 00000 n 
-0002623448 00000 n 
-0002622488 00000 n 
-0002619950 00000 n 
-0002623000 00000 n 
-0002623128 00000 n 
-0002623256 00000 n 
-0002623384 00000 n 
-0004778968 00000 n 
-0002626290 00000 n 
-0002626507 00000 n 
-0002626723 00000 n 
-0002626939 00000 n 
-0002627122 00000 n 
-0002627298 00000 n 
-0002627466 00000 n 
-0002630732 00000 n 
-0002630905 00000 n 
-0002631089 00000 n 
-0002631258 00000 n 
-0002627839 00000 n 
-0002626099 00000 n 
-0002623648 00000 n 
-0002627647 00000 n 
-0002627775 00000 n 
-0002631695 00000 n 
-0002632156 00000 n 
-0002632619 00000 n 
-0002633348 00000 n 
-0002630505 00000 n 
-0002628025 00000 n 
-0002633156 00000 n 
-0002633284 00000 n 
-0002631476 00000 n 
-0002631925 00000 n 
-0002632387 00000 n 
-0002632887 00000 n 
-0002636145 00000 n 
-0002636355 00000 n 
-0002636526 00000 n 
-0002639525 00000 n 
-0002639739 00000 n 
-0002639927 00000 n 
-0002640110 00000 n 
-0002636901 00000 n 
-0002635990 00000 n 
-0002633534 00000 n 
-0002636709 00000 n 
-0002636837 00000 n 
-0002643687 00000 n 
-0002643883 00000 n 
-0002640897 00000 n 
-0002639352 00000 n 
-0002637087 00000 n 
-0002640577 00000 n 
-0002640705 00000 n 
-0002640833 00000 n 
-0002640343 00000 n 
-0002644060 00000 n 
-0002644253 00000 n 
-0002647864 00000 n 
-0002644651 00000 n 
-0002643523 00000 n 
-0002641126 00000 n 
-0002644459 00000 n 
-0002644587 00000 n 
-0002648303 00000 n 
-0002648508 00000 n 
-0002648698 00000 n 
-0002648886 00000 n 
-0002649074 00000 n 
-0002649262 00000 n 
-0002647146 00000 n 
-0002649454 00000 n 
-0002649930 00000 n 
-0002650199 00000 n 
-0002646892 00000 n 
-0002644865 00000 n 
-0002650135 00000 n 
-0002647385 00000 n 
-0002647624 00000 n 
-0002648083 00000 n 
-0002649692 00000 n 
-0004779094 00000 n 
-0002652909 00000 n 
-0002653434 00000 n 
-0002652763 00000 n 
-0002650399 00000 n 
-0002653370 00000 n 
-0002653140 00000 n 
-0002656011 00000 n 
-0002655703 00000 n 
-0002653634 00000 n 
-0002655819 00000 n 
-0002655947 00000 n 
-0002658343 00000 n 
-0002658857 00000 n 
-0002658206 00000 n 
-0002656183 00000 n 
-0002658537 00000 n 
-0002658665 00000 n 
-0002658793 00000 n 
-0002661338 00000 n 
-0002660902 00000 n 
-0002659057 00000 n 
-0002661018 00000 n 
-0002661146 00000 n 
-0002661274 00000 n 
-0002663773 00000 n 
-0002663465 00000 n 
-0002661496 00000 n 
-0002663581 00000 n 
-0002663709 00000 n 
-0002666528 00000 n 
-0002665964 00000 n 
-0002663945 00000 n 
-0002666080 00000 n 
-0002666208 00000 n 
-0002666336 00000 n 
-0002666464 00000 n 
-0004779220 00000 n 
-0002668751 00000 n 
-0002668571 00000 n 
-0002666700 00000 n 
-0002668687 00000 n 
-0002671605 00000 n 
-0002671170 00000 n 
-0002668895 00000 n 
-0002671286 00000 n 
-0002671414 00000 n 
-0002671541 00000 n 
-0002674248 00000 n 
-0002673812 00000 n 
-0002671763 00000 n 
-0002673928 00000 n 
-0002674056 00000 n 
-0002674184 00000 n 
-0002676515 00000 n 
-0002676199 00000 n 
-0002674491 00000 n 
-0002676318 00000 n 
-0002676449 00000 n 
-0002687276 00000 n 
-0002687426 00000 n 
-0002680337 00000 n 
-0002679196 00000 n 
-0002679011 00000 n 
-0002676660 00000 n 
-0002679130 00000 n 
-0002708833 00000 n 
-0002688166 00000 n 
-0002680185 00000 n 
-0002679341 00000 n 
-0002687576 00000 n 
-0002687707 00000 n 
-0002687838 00000 n 
-0002687969 00000 n 
-0002688100 00000 n 
-0004779348 00000 n 
-0002682007 00000 n 
-0002682126 00000 n 
-0002682175 00000 n 
-0002682619 00000 n 
-0002682643 00000 n 
-0002683063 00000 n 
-0002683160 00000 n 
-0002687252 00000 n 
-0002715921 00000 n 
-0002690553 00000 n 
-0002691300 00000 n 
-0002690411 00000 n 
-0002688314 00000 n 
-0002690711 00000 n 
-0002690842 00000 n 
-0002690973 00000 n 
-0002691103 00000 n 
-0002691234 00000 n 
-0002694509 00000 n 
-0002693930 00000 n 
-0002691473 00000 n 
-0002694050 00000 n 
-0002694181 00000 n 
-0002694312 00000 n 
-0002694443 00000 n 
-0002697503 00000 n 
-0002696662 00000 n 
-0002694654 00000 n 
-0002696782 00000 n 
-0002696913 00000 n 
-0002697044 00000 n 
-0002697175 00000 n 
-0002697306 00000 n 
-0002697437 00000 n 
-0002700798 00000 n 
-0002699625 00000 n 
-0002697662 00000 n 
-0002699745 00000 n 
-0002699876 00000 n 
-0002700007 00000 n 
-0002700072 00000 n 
-0002700138 00000 n 
-0002700204 00000 n 
-0002700270 00000 n 
-0002700336 00000 n 
-0002700402 00000 n 
-0002700468 00000 n 
-0002700534 00000 n 
-0002700600 00000 n 
-0002700666 00000 n 
-0002700732 00000 n 
-0002704475 00000 n 
-0002703631 00000 n 
-0002700957 00000 n 
-0002703751 00000 n 
-0002703817 00000 n 
-0002703883 00000 n 
-0002703949 00000 n 
-0002704015 00000 n 
-0002704081 00000 n 
-0002704147 00000 n 
-0002704278 00000 n 
-0002704409 00000 n 
-0002707201 00000 n 
-0002716632 00000 n 
-0002708094 00000 n 
-0002707049 00000 n 
-0002704634 00000 n 
-0002707505 00000 n 
-0002707636 00000 n 
-0002707767 00000 n 
-0002707898 00000 n 
-0002708029 00000 n 
-0002707353 00000 n 
-0004779481 00000 n 
-0002832316 00000 n 
-0002715987 00000 n 
-0002708713 00000 n 
-0002708281 00000 n 
-0002715790 00000 n 
-0002710796 00000 n 
-0002710915 00000 n 
-0002710964 00000 n 
-0002711404 00000 n 
-0002711428 00000 n 
-0002711830 00000 n 
-0002711927 00000 n 
-0002715766 00000 n 
-0002832382 00000 n 
-0002716512 00000 n 
-0002716121 00000 n 
-0002832185 00000 n 
-0002831995 00000 n 
-0002834217 00000 n 
-0002834825 00000 n 
-0002834075 00000 n 
-0002832532 00000 n 
-0002834367 00000 n 
-0002834628 00000 n 
-0002834759 00000 n 
-0002837819 00000 n 
-0002837533 00000 n 
-0002839400 00000 n 
-0002837391 00000 n 
-0002834956 00000 n 
-0002837688 00000 n 
-0002837885 00000 n 
-0002837951 00000 n 
-0002838017 00000 n 
-0002838083 00000 n 
-0002838149 00000 n 
-0002838215 00000 n 
-0002838281 00000 n 
-0002838412 00000 n 
-0002838478 00000 n 
-0002838544 00000 n 
-0002838610 00000 n 
-0002838676 00000 n 
-0002838742 00000 n 
-0002838808 00000 n 
-0002838874 00000 n 
-0002838940 00000 n 
-0002839006 00000 n 
-0002839072 00000 n 
-0002839203 00000 n 
-0002839334 00000 n 
-0002841611 00000 n 
-0002841294 00000 n 
-0002839572 00000 n 
-0002841414 00000 n 
-0002841545 00000 n 
-0002843295 00000 n 
-0002843109 00000 n 
-0002841770 00000 n 
-0002843229 00000 n 
-0004779614 00000 n 
-0002845706 00000 n 
-0002846468 00000 n 
-0002845554 00000 n 
-0002843440 00000 n 
-0002846009 00000 n 
-0002846140 00000 n 
-0002845858 00000 n 
-0002846271 00000 n 
-0002846402 00000 n 
-0002849315 00000 n 
-0002848867 00000 n 
-0002846641 00000 n 
-0002848987 00000 n 
-0002849118 00000 n 
-0002849249 00000 n 
-0002851547 00000 n 
-0002851361 00000 n 
-0002849474 00000 n 
-0002851481 00000 n 
-0002853889 00000 n 
-0002854334 00000 n 
-0002854880 00000 n 
-0002853727 00000 n 
-0002851678 00000 n 
-0002854552 00000 n 
-0002854683 00000 n 
-0002854814 00000 n 
-0002854111 00000 n 
-0002857948 00000 n 
-0002858146 00000 n 
-0002858324 00000 n 
-0002858506 00000 n 
-0002858713 00000 n 
-0002858919 00000 n 
-0002857791 00000 n 
-0002859440 00000 n 
-0002857589 00000 n 
-0002855152 00000 n 
-0002859114 00000 n 
-0002859244 00000 n 
-0002859309 00000 n 
-0002859374 00000 n 
-0002862003 00000 n 
-0002861751 00000 n 
-0002859641 00000 n 
-0002861871 00000 n 
-0002861937 00000 n 
-0004779747 00000 n 
-0002864851 00000 n 
-0002864533 00000 n 
-0002862134 00000 n 
-0002864653 00000 n 
-0002864719 00000 n 
-0002864785 00000 n 
-0002867495 00000 n 
-0002868667 00000 n 
-0002867343 00000 n 
-0002864982 00000 n 
-0002867942 00000 n 
-0002868073 00000 n 
-0002868139 00000 n 
-0002868205 00000 n 
-0002868271 00000 n 
-0002868337 00000 n 
-0002868403 00000 n 
-0002868469 00000 n 
-0002868535 00000 n 
-0002868601 00000 n 
-0002867718 00000 n 
-0002870928 00000 n 
-0002871134 00000 n 
-0002871314 00000 n 
-0002871975 00000 n 
-0002870766 00000 n 
-0002868853 00000 n 
-0002871517 00000 n 
-0002871648 00000 n 
-0002871779 00000 n 
-0002871909 00000 n 
-0002873655 00000 n 
-0002873338 00000 n 
-0002872148 00000 n 
-0002873458 00000 n 
-0002873589 00000 n 
-0002875029 00000 n 
-0002874843 00000 n 
-0002873786 00000 n 
-0002874963 00000 n 
-0002876292 00000 n 
-0002876106 00000 n 
-0002875132 00000 n 
-0002876226 00000 n 
-0004779880 00000 n 
-0002878398 00000 n 
-0002877951 00000 n 
-0002876409 00000 n 
-0002878071 00000 n 
-0002878332 00000 n 
-0002880075 00000 n 
-0002888067 00000 n 
-0002879955 00000 n 
-0002878543 00000 n 
-0002887872 00000 n 
-0002888002 00000 n 
-0002886957 00000 n 
-0002890751 00000 n 
-0002890303 00000 n 
-0002888307 00000 n 
-0002890423 00000 n 
-0002890554 00000 n 
-0002890685 00000 n 
-0002893499 00000 n 
-0002893052 00000 n 
-0002890882 00000 n 
-0002893172 00000 n 
-0002893303 00000 n 
-0002893434 00000 n 
-0002896248 00000 n 
-0002895800 00000 n 
-0002893658 00000 n 
-0002895920 00000 n 
-0002896051 00000 n 
-0002896182 00000 n 
-0002898846 00000 n 
-0002898399 00000 n 
-0002896379 00000 n 
-0002898519 00000 n 
-0002898650 00000 n 
-0002898780 00000 n 
-0004780013 00000 n 
-0002904174 00000 n 
-0002901719 00000 n 
-0002901402 00000 n 
-0002898963 00000 n 
-0002901522 00000 n 
-0002901653 00000 n 
-0002904796 00000 n 
-0002904022 00000 n 
-0002901850 00000 n 
-0002904469 00000 n 
-0002904322 00000 n 
-0002904599 00000 n 
-0002904730 00000 n 
-0002907258 00000 n 
-0002910281 00000 n 
-0002907884 00000 n 
-0002907116 00000 n 
-0002904927 00000 n 
-0002907425 00000 n 
-0002907556 00000 n 
-0002907687 00000 n 
-0002907818 00000 n 
-0002910991 00000 n 
-0002910129 00000 n 
-0002908113 00000 n 
-0002910663 00000 n 
-0002910472 00000 n 
-0002910794 00000 n 
-0002910925 00000 n 
-0002913046 00000 n 
-0002912860 00000 n 
-0002911136 00000 n 
-0002912980 00000 n 
-0002915264 00000 n 
-0002915742 00000 n 
-0002920120 00000 n 
-0002916412 00000 n 
-0002915092 00000 n 
-0002913163 00000 n 
-0002916215 00000 n 
-0002916346 00000 n 
-0002915503 00000 n 
-0002915978 00000 n 
-0004780146 00000 n 
-0002921651 00000 n 
-0002919978 00000 n 
-0002916599 00000 n 
-0002920274 00000 n 
-0002920405 00000 n 
-0002920536 00000 n 
-0002920602 00000 n 
-0002920666 00000 n 
-0002920732 00000 n 
-0002920798 00000 n 
-0002920864 00000 n 
-0002920930 00000 n 
-0002920994 00000 n 
-0002921060 00000 n 
-0002921125 00000 n 
-0002921191 00000 n 
-0002921256 00000 n 
-0002921322 00000 n 
-0002921388 00000 n 
-0002921454 00000 n 
-0002921585 00000 n 
-0002923577 00000 n 
-0002923260 00000 n 
-0002921851 00000 n 
-0002923380 00000 n 
-0002923511 00000 n 
-0002925264 00000 n 
-0002925078 00000 n 
-0002923779 00000 n 
-0002925198 00000 n 
-0002927408 00000 n 
-0002926959 00000 n 
-0002925480 00000 n 
-0002927079 00000 n 
-0002927210 00000 n 
-0002927276 00000 n 
-0002927342 00000 n 
-0002928562 00000 n 
-0002928376 00000 n 
-0002927539 00000 n 
-0002928496 00000 n 
-0002929945 00000 n 
-0002930300 00000 n 
-0002929803 00000 n 
-0002928679 00000 n 
-0002930104 00000 n 
-0002930170 00000 n 
-0002930235 00000 n 
-0004780279 00000 n 
-0003475773 00000 n 
-0002931418 00000 n 
-0002931232 00000 n 
-0002930431 00000 n 
-0002931352 00000 n 
-0002933857 00000 n 
-0002933276 00000 n 
-0002931535 00000 n 
-0002933396 00000 n 
-0002933462 00000 n 
-0002933528 00000 n 
-0002933659 00000 n 
-0002933725 00000 n 
-0002933791 00000 n 
-0002935990 00000 n 
-0002935804 00000 n 
-0002933988 00000 n 
-0002935924 00000 n 
-0002937811 00000 n 
-0002937493 00000 n 
-0002936192 00000 n 
-0002937613 00000 n 
-0002937679 00000 n 
-0002937745 00000 n 
-0002938843 00000 n 
-0002938657 00000 n 
-0002937942 00000 n 
-0002938777 00000 n 
-0002940464 00000 n 
-0002940147 00000 n 
-0002938946 00000 n 
-0002940267 00000 n 
-0002940398 00000 n 
-0004780412 00000 n 
-0002943209 00000 n 
-0002942630 00000 n 
-0002940609 00000 n 
-0002942750 00000 n 
-0002942881 00000 n 
-0002943012 00000 n 
-0002943143 00000 n 
-0002944572 00000 n 
-0002944386 00000 n 
-0002943425 00000 n 
-0002944506 00000 n 
-0002946595 00000 n 
-0002946018 00000 n 
-0002944689 00000 n 
-0002946138 00000 n 
-0002946399 00000 n 
-0002946529 00000 n 
-0002948846 00000 n 
-0002949044 00000 n 
-0002952419 00000 n 
-0002949574 00000 n 
-0002948694 00000 n 
-0002946726 00000 n 
-0002949246 00000 n 
-0002949377 00000 n 
-0002949508 00000 n 
-0002952593 00000 n 
-0002952846 00000 n 
-0002952267 00000 n 
-0002949775 00000 n 
-0002952780 00000 n 
-0002955395 00000 n 
-0002955078 00000 n 
-0002953005 00000 n 
-0002955198 00000 n 
-0002955329 00000 n 
-0004780545 00000 n 
-0002957522 00000 n 
-0002957693 00000 n 
-0002957874 00000 n 
-0002958047 00000 n 
-0002958217 00000 n 
-0002958387 00000 n 
-0002958756 00000 n 
-0002957330 00000 n 
-0002955540 00000 n 
-0002958560 00000 n 
-0002958690 00000 n 
-0002960328 00000 n 
-0002960142 00000 n 
-0002958957 00000 n 
-0002960262 00000 n 
-0002961774 00000 n 
-0002961965 00000 n 
-0002962334 00000 n 
-0002961622 00000 n 
-0002960431 00000 n 
-0002962137 00000 n 
-0002962268 00000 n 
-0002964244 00000 n 
-0002964094 00000 n 
-0002964650 00000 n 
-0002963942 00000 n 
-0002962493 00000 n 
-0002964454 00000 n 
-0002964585 00000 n 
-0002965711 00000 n 
-0002965776 00000 n 
-0002965461 00000 n 
-0002964851 00000 n 
-0002965581 00000 n 
-0002966181 00000 n 
-0002965995 00000 n 
-0002965893 00000 n 
-0002966115 00000 n 
-0004780678 00000 n 
-0002968304 00000 n 
-0002967857 00000 n 
-0002966224 00000 n 
-0002967977 00000 n 
-0002968238 00000 n 
-0002971074 00000 n 
-0002971722 00000 n 
-0002970922 00000 n 
-0002968421 00000 n 
-0002971525 00000 n 
-0002971656 00000 n 
-0002971299 00000 n 
-0002974741 00000 n 
-0002974293 00000 n 
-0002971937 00000 n 
-0002974413 00000 n 
-0002974544 00000 n 
-0002974675 00000 n 
-0002977878 00000 n 
-0002977431 00000 n 
-0002974886 00000 n 
-0002977551 00000 n 
-0002977682 00000 n 
-0002977812 00000 n 
-0002980813 00000 n 
-0002980364 00000 n 
-0002978023 00000 n 
-0002980484 00000 n 
-0002980615 00000 n 
-0002980681 00000 n 
-0002980747 00000 n 
-0002983570 00000 n 
-0002983121 00000 n 
-0002980958 00000 n 
-0002983241 00000 n 
-0002983307 00000 n 
-0002983373 00000 n 
-0002983504 00000 n 
-0004780811 00000 n 
-0002986324 00000 n 
-0002986718 00000 n 
-0002986182 00000 n 
-0002983758 00000 n 
-0002986521 00000 n 
-0002986652 00000 n 
-0002989324 00000 n 
-0002988876 00000 n 
-0002986919 00000 n 
-0002988996 00000 n 
-0002989127 00000 n 
-0002989258 00000 n 
-0002992322 00000 n 
-0002991414 00000 n 
-0002989469 00000 n 
-0002991534 00000 n 
-0002991665 00000 n 
-0002991796 00000 n 
-0002991926 00000 n 
-0002991992 00000 n 
-0002992058 00000 n 
-0002992124 00000 n 
-0002992190 00000 n 
-0002992256 00000 n 
-0002995052 00000 n 
-0002994342 00000 n 
-0002992453 00000 n 
-0002994462 00000 n 
-0002994528 00000 n 
-0002994594 00000 n 
-0002994658 00000 n 
-0002994724 00000 n 
-0002994855 00000 n 
-0002994986 00000 n 
-0002997033 00000 n 
-0002996455 00000 n 
-0002995211 00000 n 
-0002996575 00000 n 
-0002996836 00000 n 
-0002996967 00000 n 
-0003000232 00000 n 
-0002999520 00000 n 
-0002997207 00000 n 
-0002999640 00000 n 
-0002999771 00000 n 
-0002999902 00000 n 
-0002999968 00000 n 
-0003000034 00000 n 
-0003000100 00000 n 
-0003000166 00000 n 
-0004780944 00000 n 
-0003003529 00000 n 
-0003002751 00000 n 
-0003000404 00000 n 
-0003002871 00000 n 
-0003003002 00000 n 
-0003003068 00000 n 
-0003003134 00000 n 
-0003003265 00000 n 
-0003003331 00000 n 
-0003003397 00000 n 
-0003003463 00000 n 
-0003005850 00000 n 
-0003005533 00000 n 
-0003003786 00000 n 
-0003005653 00000 n 
-0003005784 00000 n 
-0003008870 00000 n 
-0003008291 00000 n 
-0003005995 00000 n 
-0003008411 00000 n 
-0003008542 00000 n 
-0003008673 00000 n 
-0003008738 00000 n 
-0003008804 00000 n 
-0003011900 00000 n 
-0003011582 00000 n 
-0003009086 00000 n 
-0003011702 00000 n 
-0003011768 00000 n 
-0003011834 00000 n 
-0003014578 00000 n 
-0003014128 00000 n 
-0003012045 00000 n 
-0003014248 00000 n 
-0003014314 00000 n 
-0003014380 00000 n 
-0003014446 00000 n 
-0003014512 00000 n 
-0003017539 00000 n 
-0003016960 00000 n 
-0003014780 00000 n 
-0003017080 00000 n 
-0003017210 00000 n 
-0003017341 00000 n 
-0003017407 00000 n 
-0003017473 00000 n 
-0004781077 00000 n 
-0003020383 00000 n 
-0003019537 00000 n 
-0003017684 00000 n 
-0003019657 00000 n 
-0003019723 00000 n 
-0003019789 00000 n 
-0003019855 00000 n 
-0003019921 00000 n 
-0003019987 00000 n 
-0003020053 00000 n 
-0003020119 00000 n 
-0003020185 00000 n 
-0003020251 00000 n 
-0003020317 00000 n 
-0003023387 00000 n 
-0003022214 00000 n 
-0003020585 00000 n 
-0003022334 00000 n 
-0003022400 00000 n 
-0003022466 00000 n 
-0003022532 00000 n 
-0003022598 00000 n 
-0003022664 00000 n 
-0003022730 00000 n 
-0003022796 00000 n 
-0003022862 00000 n 
-0003022928 00000 n 
-0003022994 00000 n 
-0003023060 00000 n 
-0003023126 00000 n 
-0003023192 00000 n 
-0003023257 00000 n 
-0003023323 00000 n 
-0003026254 00000 n 
-0003025676 00000 n 
-0003023532 00000 n 
-0003025796 00000 n 
-0003025927 00000 n 
-0003026057 00000 n 
-0003026188 00000 n 
-0003028488 00000 n 
-0003028798 00000 n 
-0003029740 00000 n 
-0003028326 00000 n 
-0003026441 00000 n 
-0003028950 00000 n 
-0003029081 00000 n 
-0003029147 00000 n 
-0003029213 00000 n 
-0003029279 00000 n 
-0003029345 00000 n 
-0003029411 00000 n 
-0003029477 00000 n 
-0003029543 00000 n 
-0003029674 00000 n 
-0003028643 00000 n 
-0003031836 00000 n 
-0003034637 00000 n 
-0003032449 00000 n 
-0003031694 00000 n 
-0003029942 00000 n 
-0003031990 00000 n 
-0003032121 00000 n 
-0003032252 00000 n 
-0003032383 00000 n 
-0003034791 00000 n 
-0003035145 00000 n 
-0003034485 00000 n 
-0003032594 00000 n 
-0003034948 00000 n 
-0003035079 00000 n 
-0004781210 00000 n 
-0003038154 00000 n 
-0003037575 00000 n 
-0003035333 00000 n 
-0003037695 00000 n 
-0003037826 00000 n 
-0003037957 00000 n 
-0003038088 00000 n 
-0003040923 00000 n 
-0003040540 00000 n 
-0003038356 00000 n 
-0003040660 00000 n 
-0003040791 00000 n 
-0003040857 00000 n 
-0003043837 00000 n 
-0003043453 00000 n 
-0003041068 00000 n 
-0003043573 00000 n 
-0003043639 00000 n 
-0003043705 00000 n 
-0003043771 00000 n 
-0003045864 00000 n 
-0003046019 00000 n 
-0003046499 00000 n 
-0003045712 00000 n 
-0003043968 00000 n 
-0003046171 00000 n 
-0003046302 00000 n 
-0003046433 00000 n 
-0003048881 00000 n 
-0003048564 00000 n 
-0003046630 00000 n 
-0003048684 00000 n 
-0003048815 00000 n 
-0003051315 00000 n 
-0003051539 00000 n 
-0003051173 00000 n 
-0003049083 00000 n 
-0003051473 00000 n 
-0004781343 00000 n 
-0003054194 00000 n 
-0003054260 00000 n 
-0003053943 00000 n 
-0003051670 00000 n 
-0003054063 00000 n 
-0003056733 00000 n 
-0003056154 00000 n 
-0003054419 00000 n 
-0003056274 00000 n 
-0003056405 00000 n 
-0003056536 00000 n 
-0003056667 00000 n 
-0003059018 00000 n 
-0003058832 00000 n 
-0003056878 00000 n 
-0003058952 00000 n 
-0003061978 00000 n 
-0003061398 00000 n 
-0003059121 00000 n 
-0003061518 00000 n 
-0003061649 00000 n 
-0003061714 00000 n 
-0003061780 00000 n 
-0003061846 00000 n 
-0003061912 00000 n 
-0003064092 00000 n 
-0003064303 00000 n 
-0003065042 00000 n 
-0003063940 00000 n 
-0003062221 00000 n 
-0003064515 00000 n 
-0003064581 00000 n 
-0003064647 00000 n 
-0003064713 00000 n 
-0003064779 00000 n 
-0003064845 00000 n 
-0003064976 00000 n 
-0003065558 00000 n 
-0003065372 00000 n 
-0003065270 00000 n 
-0003065492 00000 n 
-0004781476 00000 n 
-0003067215 00000 n 
-0003067845 00000 n 
-0003067063 00000 n 
-0003065601 00000 n 
-0003067518 00000 n 
-0003067366 00000 n 
-0003067779 00000 n 
-0003070612 00000 n 
-0003070426 00000 n 
-0003068033 00000 n 
-0003070546 00000 n 
-0003073267 00000 n 
-0003072820 00000 n 
-0003070729 00000 n 
-0003072940 00000 n 
-0003073071 00000 n 
-0003073202 00000 n 
-0003075636 00000 n 
-0003076022 00000 n 
-0003075494 00000 n 
-0003073398 00000 n 
-0003075826 00000 n 
-0003075956 00000 n 
-0003078719 00000 n 
-0003078533 00000 n 
-0003076237 00000 n 
-0003078653 00000 n 
-0003081406 00000 n 
-0003081220 00000 n 
-0003078864 00000 n 
-0003081340 00000 n 
-0004781609 00000 n 
-0003083726 00000 n 
-0003083540 00000 n 
-0003081537 00000 n 
-0003083660 00000 n 
-0003086432 00000 n 
-0003086246 00000 n 
-0003083871 00000 n 
-0003086366 00000 n 
-0003088848 00000 n 
-0003088531 00000 n 
-0003086563 00000 n 
-0003088651 00000 n 
-0003088782 00000 n 
-0003090472 00000 n 
-0003090025 00000 n 
-0003088993 00000 n 
-0003090145 00000 n 
-0003090276 00000 n 
-0003090406 00000 n 
-0003092694 00000 n 
-0003092508 00000 n 
-0003090603 00000 n 
-0003092628 00000 n 
-0003095081 00000 n 
-0003094764 00000 n 
-0003092811 00000 n 
-0003094884 00000 n 
-0003095015 00000 n 
-0004781742 00000 n 
-0003097663 00000 n 
-0003097347 00000 n 
-0003095283 00000 n 
-0003097467 00000 n 
-0003097598 00000 n 
-0003100181 00000 n 
-0003100667 00000 n 
-0003100039 00000 n 
-0003097822 00000 n 
-0003100340 00000 n 
-0003100471 00000 n 
-0003100601 00000 n 
-0003103563 00000 n 
-0003103760 00000 n 
-0003103312 00000 n 
-0003100855 00000 n 
-0003103432 00000 n 
-0003103694 00000 n 
-0003105561 00000 n 
-0003105113 00000 n 
-0003103905 00000 n 
-0003105233 00000 n 
-0003105364 00000 n 
-0003105495 00000 n 
-0003107559 00000 n 
-0003107111 00000 n 
-0003105706 00000 n 
-0003107231 00000 n 
-0003107362 00000 n 
-0003107493 00000 n 
-0003109313 00000 n 
-0003108996 00000 n 
-0003107732 00000 n 
-0003109116 00000 n 
-0003109247 00000 n 
-0004781875 00000 n 
-0003110122 00000 n 
-0003109936 00000 n 
-0003109458 00000 n 
-0003110056 00000 n 
-0003110513 00000 n 
-0003110327 00000 n 
-0003110225 00000 n 
-0003110447 00000 n 
-0003112294 00000 n 
-0003111847 00000 n 
-0003110556 00000 n 
-0003111967 00000 n 
-0003112228 00000 n 
-0003114804 00000 n 
-0003114356 00000 n 
-0003112468 00000 n 
-0003114476 00000 n 
-0003114607 00000 n 
-0003114738 00000 n 
-0003117281 00000 n 
-0003116966 00000 n 
-0003115006 00000 n 
-0003117086 00000 n 
-0003117215 00000 n 
-0003119743 00000 n 
-0003119295 00000 n 
-0003117426 00000 n 
-0003119415 00000 n 
-0003119546 00000 n 
-0003119677 00000 n 
-0004782008 00000 n 
-0003121764 00000 n 
-0003121447 00000 n 
-0003119888 00000 n 
-0003121567 00000 n 
-0003121698 00000 n 
-0003124367 00000 n 
-0003124528 00000 n 
-0003124688 00000 n 
-0003124849 00000 n 
-0003125460 00000 n 
-0003124195 00000 n 
-0003121909 00000 n 
-0003125009 00000 n 
-0003125140 00000 n 
-0003125266 00000 n 
-0003125395 00000 n 
-0003128290 00000 n 
-0003128104 00000 n 
-0003125605 00000 n 
-0003128224 00000 n 
-0003130757 00000 n 
-0003130309 00000 n 
-0003128421 00000 n 
-0003130429 00000 n 
-0003130560 00000 n 
-0003130691 00000 n 
-0003132561 00000 n 
-0003132375 00000 n 
-0003130888 00000 n 
-0003132495 00000 n 
-0003134706 00000 n 
-0003134260 00000 n 
-0003132664 00000 n 
-0003134380 00000 n 
-0003134511 00000 n 
-0003134642 00000 n 
-0004782141 00000 n 
-0003137155 00000 n 
-0003138131 00000 n 
-0003137003 00000 n 
-0003134837 00000 n 
-0003137473 00000 n 
-0003137604 00000 n 
-0003137670 00000 n 
-0003137736 00000 n 
-0003137802 00000 n 
-0003137868 00000 n 
-0003137934 00000 n 
-0003137314 00000 n 
-0003138065 00000 n 
-0003140450 00000 n 
-0003139871 00000 n 
-0003138289 00000 n 
-0003139991 00000 n 
-0003140122 00000 n 
-0003140253 00000 n 
-0003140384 00000 n 
-0003141908 00000 n 
-0003141722 00000 n 
-0003140581 00000 n 
-0003141842 00000 n 
-0003142327 00000 n 
-0003142141 00000 n 
-0003142039 00000 n 
-0003142261 00000 n 
-0003144168 00000 n 
-0003144799 00000 n 
-0003144026 00000 n 
-0003142370 00000 n 
-0003144342 00000 n 
-0003144603 00000 n 
-0003144734 00000 n 
-0003147314 00000 n 
-0003147681 00000 n 
-0003147172 00000 n 
-0003144986 00000 n 
-0003147485 00000 n 
-0003147615 00000 n 
-0004782274 00000 n 
-0003150170 00000 n 
-0003150673 00000 n 
-0003150028 00000 n 
-0003147896 00000 n 
-0003150346 00000 n 
-0003150477 00000 n 
-0003150607 00000 n 
-0003153694 00000 n 
-0003153377 00000 n 
-0003150860 00000 n 
-0003153497 00000 n 
-0003153628 00000 n 
-0003156305 00000 n 
-0003156119 00000 n 
-0003153853 00000 n 
-0003156239 00000 n 
-0003158956 00000 n 
-0003158770 00000 n 
-0003156436 00000 n 
-0003158890 00000 n 
-0003161608 00000 n 
-0003165094 00000 n 
-0003162552 00000 n 
-0003161466 00000 n 
-0003159073 00000 n 
-0003161764 00000 n 
-0003161895 00000 n 
-0003161961 00000 n 
-0003162027 00000 n 
-0003162093 00000 n 
-0003162159 00000 n 
-0003162224 00000 n 
-0003162290 00000 n 
-0003162355 00000 n 
-0003162486 00000 n 
-0003165303 00000 n 
-0003164936 00000 n 
-0003165959 00000 n 
-0003164774 00000 n 
-0003162710 00000 n 
-0003165500 00000 n 
-0003165566 00000 n 
-0003165632 00000 n 
-0003165698 00000 n 
-0003165763 00000 n 
-0003165894 00000 n 
-0004782407 00000 n 
-0003168244 00000 n 
-0003168571 00000 n 
-0003167993 00000 n 
-0003166187 00000 n 
-0003168113 00000 n 
-0003168374 00000 n 
-0003168505 00000 n 
-0003169046 00000 n 
-0003168860 00000 n 
-0003168758 00000 n 
-0003168980 00000 n 
-0003173671 00000 n 
-0003171180 00000 n 
-0003170602 00000 n 
-0003169089 00000 n 
-0003170722 00000 n 
-0003170983 00000 n 
-0003171114 00000 n 
-0003173872 00000 n 
-0003174380 00000 n 
-0003173519 00000 n 
-0003171297 00000 n 
-0003174052 00000 n 
-0003174183 00000 n 
-0003174314 00000 n 
-0003176541 00000 n 
-0003176712 00000 n 
-0003177217 00000 n 
-0003176389 00000 n 
-0003174553 00000 n 
-0003176890 00000 n 
-0003177021 00000 n 
-0003177151 00000 n 
-0003177692 00000 n 
-0003177506 00000 n 
-0003177404 00000 n 
-0003177626 00000 n 
-0004782540 00000 n 
-0003179901 00000 n 
-0003179454 00000 n 
-0003177735 00000 n 
-0003179574 00000 n 
-0003179835 00000 n 
-0003182095 00000 n 
-0003181518 00000 n 
-0003180018 00000 n 
-0003181638 00000 n 
-0003181769 00000 n 
-0003181900 00000 n 
-0003182030 00000 n 
-0003184553 00000 n 
-0003184105 00000 n 
-0003182240 00000 n 
-0003184225 00000 n 
-0003184356 00000 n 
-0003184487 00000 n 
-0003186827 00000 n 
-0003186381 00000 n 
-0003184698 00000 n 
-0003186501 00000 n 
-0003186632 00000 n 
-0003186761 00000 n 
-0003189489 00000 n 
-0003188910 00000 n 
-0003186958 00000 n 
-0003189030 00000 n 
-0003189161 00000 n 
-0003189292 00000 n 
-0003189423 00000 n 
-0003191955 00000 n 
-0003192456 00000 n 
-0003192957 00000 n 
-0003191793 00000 n 
-0003189634 00000 n 
-0003192629 00000 n 
-0003192760 00000 n 
-0003192891 00000 n 
-0003192205 00000 n 
-0004782673 00000 n 
-0003194669 00000 n 
-0003194221 00000 n 
-0003193144 00000 n 
-0003194341 00000 n 
-0003194472 00000 n 
-0003194603 00000 n 
-0003195088 00000 n 
-0003194902 00000 n 
-0003194800 00000 n 
-0003195022 00000 n 
-0003198022 00000 n 
-0003197181 00000 n 
-0003195131 00000 n 
-0003197301 00000 n 
-0003197495 00000 n 
-0003197561 00000 n 
-0003197627 00000 n 
-0003197692 00000 n 
-0003197758 00000 n 
-0003197824 00000 n 
-0003197890 00000 n 
-0003197956 00000 n 
-0003200071 00000 n 
-0003199885 00000 n 
-0003198152 00000 n 
-0003200005 00000 n 
-0003202217 00000 n 
-0003201901 00000 n 
-0003200216 00000 n 
-0003202021 00000 n 
-0003205268 00000 n 
-0003204820 00000 n 
-0003202348 00000 n 
-0003204940 00000 n 
-0003205071 00000 n 
-0003205202 00000 n 
-0004782806 00000 n 
-0003212437 00000 n 
-0003208538 00000 n 
-0003208221 00000 n 
-0003205413 00000 n 
-0003208341 00000 n 
-0003208472 00000 n 
-0003212589 00000 n 
-0003214850 00000 n 
-0003212285 00000 n 
-0003208697 00000 n 
-0003212742 00000 n 
-0003212873 00000 n 
-0003212939 00000 n 
-0003213005 00000 n 
-0003213070 00000 n 
-0003213136 00000 n 
-0003213201 00000 n 
-0003213267 00000 n 
-0003213333 00000 n 
-0003213399 00000 n 
-0003213465 00000 n 
-0003213531 00000 n 
-0003213597 00000 n 
-0003213663 00000 n 
-0003213729 00000 n 
-0003213795 00000 n 
-0003213861 00000 n 
-0003213927 00000 n 
-0003213993 00000 n 
-0003214059 00000 n 
-0003214125 00000 n 
-0003214191 00000 n 
-0003214257 00000 n 
-0003214323 00000 n 
-0003214389 00000 n 
-0003214455 00000 n 
-0003214521 00000 n 
-0003214587 00000 n 
-0003214653 00000 n 
-0003214719 00000 n 
-0003214785 00000 n 
-0003218376 00000 n 
-0003217780 00000 n 
-0003217935 00000 n 
-0003218090 00000 n 
-0003219361 00000 n 
-0003217618 00000 n 
-0003215008 00000 n 
-0003218245 00000 n 
-0003218442 00000 n 
-0003218508 00000 n 
-0003218574 00000 n 
-0003218640 00000 n 
-0003218706 00000 n 
-0003218772 00000 n 
-0003218838 00000 n 
-0003218904 00000 n 
-0003218969 00000 n 
-0003219035 00000 n 
-0003219100 00000 n 
-0003219166 00000 n 
-0003219295 00000 n 
-0003222765 00000 n 
-0003227707 00000 n 
-0003229484 00000 n 
-0003224479 00000 n 
-0003222514 00000 n 
-0003219519 00000 n 
-0003222634 00000 n 
-0003222831 00000 n 
-0003222897 00000 n 
-0003222962 00000 n 
-0003223028 00000 n 
-0003223093 00000 n 
-0003223159 00000 n 
-0003223225 00000 n 
-0003223291 00000 n 
-0003223357 00000 n 
-0003223423 00000 n 
-0003223489 00000 n 
-0003223555 00000 n 
-0003223621 00000 n 
-0003223687 00000 n 
-0003223753 00000 n 
-0003223819 00000 n 
-0003223885 00000 n 
-0003223951 00000 n 
-0003224017 00000 n 
-0003224083 00000 n 
-0003224149 00000 n 
-0003224215 00000 n 
-0003224281 00000 n 
-0003224347 00000 n 
-0003224413 00000 n 
-0003230140 00000 n 
-0003227456 00000 n 
-0003224637 00000 n 
-0003227576 00000 n 
-0003227773 00000 n 
-0003227839 00000 n 
-0003227905 00000 n 
-0003227971 00000 n 
-0003228037 00000 n 
-0003228103 00000 n 
-0003228167 00000 n 
-0003228233 00000 n 
-0003228298 00000 n 
-0003228364 00000 n 
-0003228429 00000 n 
-0003228495 00000 n 
-0003228561 00000 n 
-0003228627 00000 n 
-0003228693 00000 n 
-0003228759 00000 n 
-0003228825 00000 n 
-0003228891 00000 n 
-0003228957 00000 n 
-0003229023 00000 n 
-0003229089 00000 n 
-0003229155 00000 n 
-0003229221 00000 n 
-0003229287 00000 n 
-0003229353 00000 n 
-0003229550 00000 n 
-0003229615 00000 n 
-0003229681 00000 n 
-0003229747 00000 n 
-0003229813 00000 n 
-0003229878 00000 n 
-0003229944 00000 n 
-0003230009 00000 n 
-0003230075 00000 n 
-0003230558 00000 n 
-0003230372 00000 n 
-0003230270 00000 n 
-0003230492 00000 n 
-0004782939 00000 n 
-0003231006 00000 n 
-0003230821 00000 n 
-0003230601 00000 n 
-0003231303 00000 n 
-0003231183 00000 n 
-0003231081 00000 n 
-0003233307 00000 n 
-0003232795 00000 n 
-0003231346 00000 n 
-0003232915 00000 n 
-0003232981 00000 n 
-0003233242 00000 n 
-0003235588 00000 n 
-0003236657 00000 n 
-0003235446 00000 n 
-0003233424 00000 n 
-0003235745 00000 n 
-0003235876 00000 n 
-0003236135 00000 n 
-0003236266 00000 n 
-0003236397 00000 n 
-0003236526 00000 n 
-0003236592 00000 n 
-0003239542 00000 n 
-0003238499 00000 n 
-0003236802 00000 n 
-0003238619 00000 n 
-0003238685 00000 n 
-0003238751 00000 n 
-0003238817 00000 n 
-0003238883 00000 n 
-0003238948 00000 n 
-0003239014 00000 n 
-0003239080 00000 n 
-0003239146 00000 n 
-0003239212 00000 n 
-0003239278 00000 n 
-0003239344 00000 n 
-0003239410 00000 n 
-0003239476 00000 n 
-0003241212 00000 n 
-0003241715 00000 n 
-0003241070 00000 n 
-0003239645 00000 n 
-0003241387 00000 n 
-0003241518 00000 n 
-0003241649 00000 n 
-0004783072 00000 n 
-0003243100 00000 n 
-0003242783 00000 n 
-0003241930 00000 n 
-0003242903 00000 n 
-0003243034 00000 n 
-0003244163 00000 n 
-0003243977 00000 n 
-0003243231 00000 n 
-0003244097 00000 n 
-0003245229 00000 n 
-0003245043 00000 n 
-0003244280 00000 n 
-0003245163 00000 n 
-0003246280 00000 n 
-0003246094 00000 n 
-0003245346 00000 n 
-0003246214 00000 n 
-0003247332 00000 n 
-0003247146 00000 n 
-0003246397 00000 n 
-0003247266 00000 n 
-0003248672 00000 n 
-0003248355 00000 n 
-0003247449 00000 n 
-0003248475 00000 n 
-0003248606 00000 n 
-0004783205 00000 n 
-0003251017 00000 n 
-0003251167 00000 n 
-0003251317 00000 n 
-0003252066 00000 n 
-0003250855 00000 n 
-0003248803 00000 n 
-0003251476 00000 n 
-0003251607 00000 n 
-0003251738 00000 n 
-0003251869 00000 n 
-0003251934 00000 n 
-0003252000 00000 n 
-0003255046 00000 n 
-0003255375 00000 n 
-0003254795 00000 n 
-0003252211 00000 n 
-0003254915 00000 n 
-0003255177 00000 n 
-0003255243 00000 n 
-0003255309 00000 n 
-0003257479 00000 n 
-0003258109 00000 n 
-0003257327 00000 n 
-0003255520 00000 n 
-0003257780 00000 n 
-0003257630 00000 n 
-0003257911 00000 n 
-0003257977 00000 n 
-0003258043 00000 n 
-0003260749 00000 n 
-0003260431 00000 n 
-0003258268 00000 n 
-0003260551 00000 n 
-0003260617 00000 n 
-0003260683 00000 n 
-0003263225 00000 n 
-0003262514 00000 n 
-0003260908 00000 n 
-0003262634 00000 n 
-0003262700 00000 n 
-0003262766 00000 n 
-0003262832 00000 n 
-0003262898 00000 n 
-0003262963 00000 n 
-0003263029 00000 n 
-0003263094 00000 n 
-0003263160 00000 n 
-0003263685 00000 n 
-0003263499 00000 n 
-0003263397 00000 n 
-0003263619 00000 n 
-0004783338 00000 n 
-0003265651 00000 n 
-0003265074 00000 n 
-0003263728 00000 n 
-0003265194 00000 n 
-0003265454 00000 n 
-0003265585 00000 n 
-0003267593 00000 n 
-0003267407 00000 n 
-0003265768 00000 n 
-0003267527 00000 n 
-0003270167 00000 n 
-0003269850 00000 n 
-0003267724 00000 n 
-0003269970 00000 n 
-0003270101 00000 n 
-0003272906 00000 n 
-0003272458 00000 n 
-0003270298 00000 n 
-0003272578 00000 n 
-0003272709 00000 n 
-0003272840 00000 n 
-0003275732 00000 n 
-0003275153 00000 n 
-0003273023 00000 n 
-0003275273 00000 n 
-0003275404 00000 n 
-0003275535 00000 n 
-0003275666 00000 n 
-0003277473 00000 n 
-0003278218 00000 n 
-0003277331 00000 n 
-0003275905 00000 n 
-0003277626 00000 n 
-0003277692 00000 n 
-0003277758 00000 n 
-0003277824 00000 n 
-0003277890 00000 n 
-0003277956 00000 n 
-0003278022 00000 n 
-0003278153 00000 n 
-0004783471 00000 n 
-0003280512 00000 n 
-0003280225 00000 n 
-0003280839 00000 n 
-0003280083 00000 n 
-0003278377 00000 n 
-0003280381 00000 n 
-0003280643 00000 n 
-0003280773 00000 n 
-0003283356 00000 n 
-0003283422 00000 n 
-0003283105 00000 n 
-0003280984 00000 n 
-0003283225 00000 n 
-0003285544 00000 n 
-0003285358 00000 n 
-0003283567 00000 n 
-0003285478 00000 n 
-0003286632 00000 n 
-0003286446 00000 n 
-0003285689 00000 n 
-0003286566 00000 n 
-0003288626 00000 n 
-0003289102 00000 n 
-0003288484 00000 n 
-0003286749 00000 n 
-0003288775 00000 n 
-0003289036 00000 n 
-0003297071 00000 n 
-0003291702 00000 n 
-0003291254 00000 n 
-0003289233 00000 n 
-0003291374 00000 n 
-0003291505 00000 n 
-0003291636 00000 n 
-0004783604 00000 n 
-0003293958 00000 n 
-0003293510 00000 n 
-0003291890 00000 n 
-0003293630 00000 n 
-0003293761 00000 n 
-0003293892 00000 n 
-0003295527 00000 n 
-0003295341 00000 n 
-0003294089 00000 n 
-0003295461 00000 n 
-0003297136 00000 n 
-0003296820 00000 n 
-0003295644 00000 n 
-0003296940 00000 n 
-0003299229 00000 n 
-0003299043 00000 n 
-0003297267 00000 n 
-0003299163 00000 n 
-0003301213 00000 n 
-0003302139 00000 n 
-0003301061 00000 n 
-0003299374 00000 n 
-0003301547 00000 n 
-0003301678 00000 n 
-0003301744 00000 n 
-0003301810 00000 n 
-0003301876 00000 n 
-0003301942 00000 n 
-0003301381 00000 n 
-0003302073 00000 n 
-0003307112 00000 n 
-0003304845 00000 n 
-0003304398 00000 n 
-0003302298 00000 n 
-0003304518 00000 n 
-0003304648 00000 n 
-0003304779 00000 n 
-0004783737 00000 n 
-0003307482 00000 n 
-0003306970 00000 n 
-0003305004 00000 n 
-0003307286 00000 n 
-0003307417 00000 n 
-0003310348 00000 n 
-0003309769 00000 n 
-0003307754 00000 n 
-0003309889 00000 n 
-0003310020 00000 n 
-0003310151 00000 n 
-0003310282 00000 n 
-0003313029 00000 n 
-0003312451 00000 n 
-0003310536 00000 n 
-0003312571 00000 n 
-0003312702 00000 n 
-0003312833 00000 n 
-0003312963 00000 n 
-0003313784 00000 n 
-0003313598 00000 n 
-0003313174 00000 n 
-0003313718 00000 n 
-0003314287 00000 n 
-0003314102 00000 n 
-0003313887 00000 n 
-0003314584 00000 n 
-0003314464 00000 n 
-0003314362 00000 n 
-0004783870 00000 n 
-0003316276 00000 n 
-0003316953 00000 n 
-0003316134 00000 n 
-0003314627 00000 n 
-0003316429 00000 n 
-0003316495 00000 n 
-0003316756 00000 n 
-0003316887 00000 n 
-0003319704 00000 n 
-0003320296 00000 n 
-0003319453 00000 n 
-0003317098 00000 n 
-0003319573 00000 n 
-0003319770 00000 n 
-0003319836 00000 n 
-0003319902 00000 n 
-0003319968 00000 n 
-0003320034 00000 n 
-0003320165 00000 n 
-0003320230 00000 n 
-0003323097 00000 n 
-0003322845 00000 n 
-0003320511 00000 n 
-0003322965 00000 n 
-0003323031 00000 n 
-0003325193 00000 n 
-0003324941 00000 n 
-0003323285 00000 n 
-0003325061 00000 n 
-0003325127 00000 n 
-0003328276 00000 n 
-0003328427 00000 n 
-0003328576 00000 n 
-0003329320 00000 n 
-0003328114 00000 n 
-0003325324 00000 n 
-0003328727 00000 n 
-0003328858 00000 n 
-0003328924 00000 n 
-0003328990 00000 n 
-0003329056 00000 n 
-0003329122 00000 n 
-0003329188 00000 n 
-0003329254 00000 n 
-0003332690 00000 n 
-0003333349 00000 n 
-0003332439 00000 n 
-0003329521 00000 n 
-0003332559 00000 n 
-0003332756 00000 n 
-0003332822 00000 n 
-0003332888 00000 n 
-0003332954 00000 n 
-0003333020 00000 n 
-0003333086 00000 n 
-0003333152 00000 n 
-0003333218 00000 n 
-0003333283 00000 n 
-0004784003 00000 n 
-0003336497 00000 n 
-0003335916 00000 n 
-0003333493 00000 n 
-0003336036 00000 n 
-0003336102 00000 n 
-0003336167 00000 n 
-0003336233 00000 n 
-0003336299 00000 n 
-0003336365 00000 n 
-0003336431 00000 n 
-0003339942 00000 n 
-0003339361 00000 n 
-0003336713 00000 n 
-0003339481 00000 n 
-0003339547 00000 n 
-0003339613 00000 n 
-0003339679 00000 n 
-0003339745 00000 n 
-0003339811 00000 n 
-0003339876 00000 n 
-0003341695 00000 n 
-0003341443 00000 n 
-0003340101 00000 n 
-0003341563 00000 n 
-0003341629 00000 n 
-0003342114 00000 n 
-0003341928 00000 n 
-0003341826 00000 n 
-0003342048 00000 n 
-0003344445 00000 n 
-0003343869 00000 n 
-0003342157 00000 n 
-0003343989 00000 n 
-0003344249 00000 n 
-0003344379 00000 n 
-0003346919 00000 n 
-0003347089 00000 n 
-0003349231 00000 n 
-0003346766 00000 n 
-0003369862 00000 n 
-0003347721 00000 n 
-0003346604 00000 n 
-0003344590 00000 n 
-0003347262 00000 n 
-0003347393 00000 n 
-0003347524 00000 n 
-0003347655 00000 n 
-0004784136 00000 n 
-0003368000 00000 n 
-0003368197 00000 n 
-0003349111 00000 n 
-0003347922 00000 n 
-0003367869 00000 n 
-0003368131 00000 n 
-0003408228 00000 n 
-0003369742 00000 n 
-0003368353 00000 n 
-0003408031 00000 n 
-0003408162 00000 n 
-0003411209 00000 n 
-0003411400 00000 n 
-0003410530 00000 n 
-0003410860 00000 n 
-0003412051 00000 n 
-0003410338 00000 n 
-0003408426 00000 n 
-0003411592 00000 n 
-0003411723 00000 n 
-0003411854 00000 n 
-0003411985 00000 n 
-0003410696 00000 n 
-0003411035 00000 n 
-0003415880 00000 n 
-0003414667 00000 n 
-0003414481 00000 n 
-0003412266 00000 n 
-0003414601 00000 n 
-0003416250 00000 n 
-0003415738 00000 n 
-0003414812 00000 n 
-0003416053 00000 n 
-0003416184 00000 n 
-0003416711 00000 n 
-0003416525 00000 n 
-0003416423 00000 n 
-0003416645 00000 n 
-0004784269 00000 n 
-0003418982 00000 n 
-0003418638 00000 n 
-0003419616 00000 n 
-0003418476 00000 n 
-0003416754 00000 n 
-0003419158 00000 n 
-0003419419 00000 n 
-0003418811 00000 n 
-0003419550 00000 n 
-0003422644 00000 n 
-0003423256 00000 n 
-0003422502 00000 n 
-0003419817 00000 n 
-0003422796 00000 n 
-0003422992 00000 n 
-0003423058 00000 n 
-0003423124 00000 n 
-0003423190 00000 n 
-0003426285 00000 n 
-0003427161 00000 n 
-0003426143 00000 n 
-0003423428 00000 n 
-0003426438 00000 n 
-0003426569 00000 n 
-0003426635 00000 n 
-0003426701 00000 n 
-0003426767 00000 n 
-0003426833 00000 n 
-0003426964 00000 n 
-0003427095 00000 n 
-0003429685 00000 n 
-0003429368 00000 n 
-0003427319 00000 n 
-0003429488 00000 n 
-0003429619 00000 n 
-0003431134 00000 n 
-0003430818 00000 n 
-0003429830 00000 n 
-0003430938 00000 n 
-0003431068 00000 n 
-0003431553 00000 n 
-0003431367 00000 n 
-0003431265 00000 n 
-0003431487 00000 n 
-0004784402 00000 n 
-0003433794 00000 n 
-0003433217 00000 n 
-0003431596 00000 n 
-0003433337 00000 n 
-0003433598 00000 n 
-0003433728 00000 n 
-0003434657 00000 n 
-0003434471 00000 n 
-0003433911 00000 n 
-0003434591 00000 n 
-0003439105 00000 n 
-0003438788 00000 n 
-0003434774 00000 n 
-0003438908 00000 n 
-0003439039 00000 n 
-0003439538 00000 n 
-0003439352 00000 n 
-0003439250 00000 n 
-0003439472 00000 n 
-0003439978 00000 n 
-0003439793 00000 n 
-0003439581 00000 n 
-0003440275 00000 n 
-0003440155 00000 n 
-0003440053 00000 n 
-0004784535 00000 n 
-0003441770 00000 n 
-0003441936 00000 n 
-0003442777 00000 n 
-0003441618 00000 n 
-0003440318 00000 n 
-0003442123 00000 n 
-0003442189 00000 n 
-0003442450 00000 n 
-0003442581 00000 n 
-0003442712 00000 n 
-0003445087 00000 n 
-0003445262 00000 n 
-0003445900 00000 n 
-0003444935 00000 n 
-0003442950 00000 n 
-0003445441 00000 n 
-0003445572 00000 n 
-0003445702 00000 n 
-0003445768 00000 n 
-0003445834 00000 n 
-0003448064 00000 n 
-0003448249 00000 n 
-0003448437 00000 n 
-0003449004 00000 n 
-0003447902 00000 n 
-0003446045 00000 n 
-0003448610 00000 n 
-0003448676 00000 n 
-0003448807 00000 n 
-0003448938 00000 n 
-0003451037 00000 n 
-0003450720 00000 n 
-0003449205 00000 n 
-0003450840 00000 n 
-0003450971 00000 n 
-0003452351 00000 n 
-0003452165 00000 n 
-0003451168 00000 n 
-0003452285 00000 n 
-0003454467 00000 n 
-0003453888 00000 n 
-0003452468 00000 n 
-0003454008 00000 n 
-0003454139 00000 n 
-0003454270 00000 n 
-0003454401 00000 n 
-0004784668 00000 n 
-0003456982 00000 n 
-0003456407 00000 n 
-0003454626 00000 n 
-0003456527 00000 n 
-0003456656 00000 n 
-0003456916 00000 n 
-0003458674 00000 n 
-0003458488 00000 n 
-0003457113 00000 n 
-0003458608 00000 n 
-0003460793 00000 n 
-0003460476 00000 n 
-0003458848 00000 n 
-0003460596 00000 n 
-0003460727 00000 n 
-0003462826 00000 n 
-0003462509 00000 n 
-0003461009 00000 n 
-0003462629 00000 n 
-0003462760 00000 n 
-0003464245 00000 n 
-0003463928 00000 n 
-0003463014 00000 n 
-0003464048 00000 n 
-0003464179 00000 n 
-0003464664 00000 n 
-0003464478 00000 n 
-0003464376 00000 n 
-0003464598 00000 n 
-0004784801 00000 n 
-0003466764 00000 n 
-0003466317 00000 n 
-0003464707 00000 n 
-0003466437 00000 n 
-0003466698 00000 n 
-0003468955 00000 n 
-0003469450 00000 n 
-0003468813 00000 n 
-0003466895 00000 n 
-0003469122 00000 n 
-0003469253 00000 n 
-0003469384 00000 n 
-0003470681 00000 n 
-0003470495 00000 n 
-0003469637 00000 n 
-0003470615 00000 n 
-0003472872 00000 n 
-0003472424 00000 n 
-0003470798 00000 n 
-0003472544 00000 n 
-0003472675 00000 n 
-0003472806 00000 n 
-0003474811 00000 n 
-0003475839 00000 n 
-0003474659 00000 n 
-0003473003 00000 n 
-0003475380 00000 n 
-0003475511 00000 n 
-0003475642 00000 n 
-0003475096 00000 n 
-0003476300 00000 n 
-0003476114 00000 n 
-0003476012 00000 n 
-0003476234 00000 n 
-0004784934 00000 n 
-0003478202 00000 n 
-0003478375 00000 n 
-0003478566 00000 n 
-0003478751 00000 n 
-0003478943 00000 n 
-0003479457 00000 n 
-0003478020 00000 n 
-0003476343 00000 n 
-0003479130 00000 n 
-0003479391 00000 n 
-0003481979 00000 n 
-0003482637 00000 n 
-0003481837 00000 n 
-0003479630 00000 n 
-0003482178 00000 n 
-0003482309 00000 n 
-0003482440 00000 n 
-0003482571 00000 n 
-0003484983 00000 n 
-0003485632 00000 n 
-0003484841 00000 n 
-0003482838 00000 n 
-0003485174 00000 n 
-0003485305 00000 n 
-0003485436 00000 n 
-0003485567 00000 n 
-0003488148 00000 n 
-0003488794 00000 n 
-0003488006 00000 n 
-0003485847 00000 n 
-0003488336 00000 n 
-0003488467 00000 n 
-0003488598 00000 n 
-0003488728 00000 n 
-0003491036 00000 n 
-0003491645 00000 n 
-0003490894 00000 n 
-0003488995 00000 n 
-0003491188 00000 n 
-0003491319 00000 n 
-0003491448 00000 n 
-0003491579 00000 n 
-0003494640 00000 n 
-0003495719 00000 n 
-0003494498 00000 n 
-0003491804 00000 n 
-0003494799 00000 n 
-0003494930 00000 n 
-0003495061 00000 n 
-0003495192 00000 n 
-0003495258 00000 n 
-0003495324 00000 n 
-0003495390 00000 n 
-0003495455 00000 n 
-0003495521 00000 n 
-0003495587 00000 n 
-0003495653 00000 n 
-0004785067 00000 n 
-0003497073 00000 n 
-0003497476 00000 n 
-0003496931 00000 n 
-0003495891 00000 n 
-0003497280 00000 n 
-0003497411 00000 n 
-0003498036 00000 n 
-0003497850 00000 n 
-0003497748 00000 n 
-0003497970 00000 n 
-0003500164 00000 n 
-0003499586 00000 n 
-0003498079 00000 n 
-0003499706 00000 n 
-0003499967 00000 n 
-0003500098 00000 n 
-0003502879 00000 n 
-0003502562 00000 n 
-0003500281 00000 n 
-0003502682 00000 n 
-0003502813 00000 n 
-0003505709 00000 n 
-0003504999 00000 n 
-0003503038 00000 n 
-0003505119 00000 n 
-0003505250 00000 n 
-0003505381 00000 n 
-0003505512 00000 n 
-0003505643 00000 n 
-0003507910 00000 n 
-0003508684 00000 n 
-0003507758 00000 n 
-0003505868 00000 n 
-0003508226 00000 n 
-0003508357 00000 n 
-0003508488 00000 n 
-0003508068 00000 n 
-0003508618 00000 n 
-0004785200 00000 n 
-0003511364 00000 n 
-0003510916 00000 n 
-0003508829 00000 n 
-0003511036 00000 n 
-0003511167 00000 n 
-0003511298 00000 n 
-0003511783 00000 n 
-0003511597 00000 n 
-0003511495 00000 n 
-0003511717 00000 n 
-0003513271 00000 n 
-0003516273 00000 n 
-0003513774 00000 n 
-0003513129 00000 n 
-0003511826 00000 n 
-0003513447 00000 n 
-0003513708 00000 n 
-0003516450 00000 n 
-0003516620 00000 n 
-0003516793 00000 n 
-0003516964 00000 n 
-0003517135 00000 n 
-0003517830 00000 n 
-0003516071 00000 n 
-0003513961 00000 n 
-0003517503 00000 n 
-0003517634 00000 n 
-0003517764 00000 n 
-0003517319 00000 n 
-0003519628 00000 n 
-0003519442 00000 n 
-0003518117 00000 n 
-0003519562 00000 n 
-0004762608 00000 n 
-0004766024 00000 n 
-0003521642 00000 n 
-0003521193 00000 n 
-0003519902 00000 n 
-0003521313 00000 n 
-0003521379 00000 n 
-0003521445 00000 n 
-0003521576 00000 n 
-0004785333 00000 n 
-0003523409 00000 n 
-0003523091 00000 n 
-0003521787 00000 n 
-0003523211 00000 n 
-0003523277 00000 n 
-0003523343 00000 n 
-0003525073 00000 n 
-0003524756 00000 n 
-0003523540 00000 n 
-0003524876 00000 n 
-0003525007 00000 n 
-0003526232 00000 n 
-0003526589 00000 n 
-0003526090 00000 n 
-0003525204 00000 n 
-0003526392 00000 n 
-0003526523 00000 n 
-0003527862 00000 n 
-0003527676 00000 n 
-0003526720 00000 n 
-0003527796 00000 n 
-0003529372 00000 n 
-0003529532 00000 n 
-0003529701 00000 n 
-0003530068 00000 n 
-0003529210 00000 n 
-0003528036 00000 n 
-0003529871 00000 n 
-0003530002 00000 n 
-0003530501 00000 n 
-0003530315 00000 n 
-0003530213 00000 n 
-0003530435 00000 n 
-0004785466 00000 n 
-0003532629 00000 n 
-0003532312 00000 n 
-0003530544 00000 n 
-0003532432 00000 n 
-0003532563 00000 n 
-0003535320 00000 n 
-0003535500 00000 n 
-0003535683 00000 n 
-0003536055 00000 n 
-0003535158 00000 n 
-0003532746 00000 n 
-0003535858 00000 n 
-0003535989 00000 n 
-0003538261 00000 n 
-0003538647 00000 n 
-0003538119 00000 n 
-0003536242 00000 n 
-0003538450 00000 n 
-0003538581 00000 n 
-0003539122 00000 n 
-0003538936 00000 n 
-0003538834 00000 n 
-0003539056 00000 n 
-0003543817 00000 n 
-0003543983 00000 n 
-0003544175 00000 n 
-0003541181 00000 n 
-0003540734 00000 n 
-0003539165 00000 n 
-0003540854 00000 n 
-0003541115 00000 n 
-0003544749 00000 n 
-0003543655 00000 n 
-0003541298 00000 n 
-0003544355 00000 n 
-0003544421 00000 n 
-0003544487 00000 n 
-0003544553 00000 n 
-0003544684 00000 n 
-0004785599 00000 n 
-0003546679 00000 n 
-0003546362 00000 n 
-0003544922 00000 n 
-0003546482 00000 n 
-0003546613 00000 n 
-0003547736 00000 n 
-0003547550 00000 n 
-0003546810 00000 n 
-0003547670 00000 n 
-0003548826 00000 n 
-0003548640 00000 n 
-0003547839 00000 n 
-0003548760 00000 n 
-0003549899 00000 n 
-0003549713 00000 n 
-0003548943 00000 n 
-0003549833 00000 n 
-0003551585 00000 n 
-0003551269 00000 n 
-0003550016 00000 n 
-0003551389 00000 n 
-0003552283 00000 n 
-0003552097 00000 n 
-0003551716 00000 n 
-0003552217 00000 n 
-0004785732 00000 n 
-0003554091 00000 n 
-0003554518 00000 n 
-0003553949 00000 n 
-0003552386 00000 n 
-0003554256 00000 n 
-0003554387 00000 n 
-0003554452 00000 n 
-0003557179 00000 n 
-0003556927 00000 n 
-0003554677 00000 n 
-0003557047 00000 n 
-0003557113 00000 n 
-0003559594 00000 n 
-0003559276 00000 n 
-0003557296 00000 n 
-0003559396 00000 n 
-0003559462 00000 n 
-0003559528 00000 n 
-0003562171 00000 n 
-0003561919 00000 n 
-0003559697 00000 n 
-0003562039 00000 n 
-0003562105 00000 n 
-0003564635 00000 n 
-0003564317 00000 n 
-0003562288 00000 n 
-0003564437 00000 n 
-0003564503 00000 n 
-0003564569 00000 n 
-0003567469 00000 n 
-0003566955 00000 n 
-0003564738 00000 n 
-0003567075 00000 n 
-0003567141 00000 n 
-0003567206 00000 n 
-0003567272 00000 n 
-0003567337 00000 n 
-0003567403 00000 n 
-0004785865 00000 n 
-0003570428 00000 n 
-0003569847 00000 n 
-0003567586 00000 n 
-0003569967 00000 n 
-0003570033 00000 n 
-0003570099 00000 n 
-0003570165 00000 n 
-0003570230 00000 n 
-0003570296 00000 n 
-0003570362 00000 n 
-0003573174 00000 n 
-0003572988 00000 n 
-0003570531 00000 n 
-0003573108 00000 n 
-0003575721 00000 n 
-0003575272 00000 n 
-0003573277 00000 n 
-0003575392 00000 n 
-0003575458 00000 n 
-0003575524 00000 n 
-0003575590 00000 n 
-0003575655 00000 n 
-0003578448 00000 n 
-0003577998 00000 n 
-0003575824 00000 n 
-0003578118 00000 n 
-0003578184 00000 n 
-0003578250 00000 n 
-0003578316 00000 n 
-0003578382 00000 n 
-0003580910 00000 n 
-0003580592 00000 n 
-0003578565 00000 n 
-0003580712 00000 n 
-0003580778 00000 n 
-0003580844 00000 n 
-0003583510 00000 n 
-0003583258 00000 n 
-0003581013 00000 n 
-0003583378 00000 n 
-0003583444 00000 n 
-0004785998 00000 n 
-0003586221 00000 n 
-0003585969 00000 n 
-0003583627 00000 n 
-0003586089 00000 n 
-0003586155 00000 n 
-0003588608 00000 n 
-0003588290 00000 n 
-0003586324 00000 n 
-0003588410 00000 n 
-0003588476 00000 n 
-0003588542 00000 n 
-0003590942 00000 n 
-0003590492 00000 n 
-0003588725 00000 n 
-0003590612 00000 n 
-0003590678 00000 n 
-0003590744 00000 n 
-0003590810 00000 n 
-0003590876 00000 n 
-0003593023 00000 n 
-0003592772 00000 n 
-0003591045 00000 n 
-0003592892 00000 n 
-0003594417 00000 n 
-0003594594 00000 n 
-0003595053 00000 n 
-0003594255 00000 n 
-0003593154 00000 n 
-0003594987 00000 n 
-0003594791 00000 n 
-0003595458 00000 n 
-0003595272 00000 n 
-0003595170 00000 n 
-0003595392 00000 n 
-0004786131 00000 n 
-0003597434 00000 n 
-0003597752 00000 n 
-0003600317 00000 n 
-0003598121 00000 n 
-0003597272 00000 n 
-0003595501 00000 n 
-0003597924 00000 n 
-0003598055 00000 n 
-0003597593 00000 n 
-0003600465 00000 n 
-0003600683 00000 n 
-0003600165 00000 n 
-0003598252 00000 n 
-0003600617 00000 n 
-0003602936 00000 n 
-0003603150 00000 n 
-0003602794 00000 n 
-0003600800 00000 n 
-0003603084 00000 n 
-0003605549 00000 n 
-0003605774 00000 n 
-0003605407 00000 n 
-0003603267 00000 n 
-0003605708 00000 n 
-0003606557 00000 n 
-0003606371 00000 n 
-0003605891 00000 n 
-0003606491 00000 n 
-0003606948 00000 n 
-0003606762 00000 n 
-0003606660 00000 n 
-0003606882 00000 n 
-0004786264 00000 n 
-0003609839 00000 n 
-0003609991 00000 n 
-0003610143 00000 n 
-0003610294 00000 n 
-0003610445 00000 n 
-0003610598 00000 n 
-0003610751 00000 n 
-0003610904 00000 n 
-0003611057 00000 n 
-0003611209 00000 n 
-0003611361 00000 n 
-0003611514 00000 n 
-0003611667 00000 n 
-0003611819 00000 n 
-0003611972 00000 n 
-0003612125 00000 n 
-0003612278 00000 n 
-0003612431 00000 n 
-0003612583 00000 n 
-0003612736 00000 n 
-0003612889 00000 n 
-0003613042 00000 n 
-0003613195 00000 n 
-0003613348 00000 n 
-0003613501 00000 n 
-0003613653 00000 n 
-0003613806 00000 n 
-0003613957 00000 n 
-0003614109 00000 n 
-0003614261 00000 n 
-0003614413 00000 n 
-0003614565 00000 n 
-0003614718 00000 n 
-0003614871 00000 n 
-0003615024 00000 n 
-0003615177 00000 n 
-0003615330 00000 n 
-0003615483 00000 n 
-0003615636 00000 n 
-0003615789 00000 n 
-0003615942 00000 n 
-0003616095 00000 n 
-0003616248 00000 n 
-0003616401 00000 n 
-0003616554 00000 n 
-0003616706 00000 n 
-0003616859 00000 n 
-0003617011 00000 n 
-0003617164 00000 n 
-0003617317 00000 n 
-0003617470 00000 n 
-0003617622 00000 n 
-0003617774 00000 n 
-0003617925 00000 n 
-0003618078 00000 n 
-0003618229 00000 n 
-0003618381 00000 n 
-0003618532 00000 n 
-0003618684 00000 n 
-0003618836 00000 n 
-0003618989 00000 n 
-0003619142 00000 n 
-0003619295 00000 n 
-0003619448 00000 n 
-0003619600 00000 n 
-0003619753 00000 n 
-0003619906 00000 n 
-0003620059 00000 n 
-0003620212 00000 n 
-0003620365 00000 n 
-0003620515 00000 n 
-0003620668 00000 n 
-0003620821 00000 n 
-0003620974 00000 n 
-0003621127 00000 n 
-0003621279 00000 n 
-0003621430 00000 n 
-0003621582 00000 n 
-0003621735 00000 n 
-0003621887 00000 n 
-0003622040 00000 n 
-0003622193 00000 n 
-0003622346 00000 n 
-0003622499 00000 n 
-0003622651 00000 n 
-0003622803 00000 n 
-0003622955 00000 n 
-0003623107 00000 n 
-0003623260 00000 n 
-0003623413 00000 n 
-0003623565 00000 n 
-0003623718 00000 n 
-0003623871 00000 n 
-0003624024 00000 n 
-0003624177 00000 n 
-0003624329 00000 n 
-0003624482 00000 n 
-0003624635 00000 n 
-0003624788 00000 n 
-0003624940 00000 n 
-0003625092 00000 n 
-0003625244 00000 n 
-0003625396 00000 n 
-0003625548 00000 n 
-0003625698 00000 n 
-0003625850 00000 n 
-0003626002 00000 n 
-0003626154 00000 n 
-0003626304 00000 n 
-0003626454 00000 n 
-0003626604 00000 n 
-0003626756 00000 n 
-0003626908 00000 n 
-0003627058 00000 n 
-0003627208 00000 n 
-0003627359 00000 n 
-0003627511 00000 n 
-0003627663 00000 n 
-0003627815 00000 n 
-0003627967 00000 n 
-0003628119 00000 n 
-0003628272 00000 n 
-0003628425 00000 n 
-0003628578 00000 n 
-0003628729 00000 n 
-0003628882 00000 n 
-0003629035 00000 n 
-0003629187 00000 n 
-0003629340 00000 n 
-0003629493 00000 n 
-0003632730 00000 n 
-0003629712 00000 n 
-0003608407 00000 n 
-0003606991 00000 n 
-0003629646 00000 n 
-0003632882 00000 n 
-0003633035 00000 n 
-0003633188 00000 n 
-0003633341 00000 n 
-0003633492 00000 n 
-0003633644 00000 n 
-0003633796 00000 n 
-0003633948 00000 n 
-0003634101 00000 n 
-0003634254 00000 n 
-0003634407 00000 n 
-0003634559 00000 n 
-0003634711 00000 n 
-0003634863 00000 n 
-0003635015 00000 n 
-0003635168 00000 n 
-0003635321 00000 n 
-0003635474 00000 n 
-0003635627 00000 n 
-0003635779 00000 n 
-0003635931 00000 n 
-0003636084 00000 n 
-0003636236 00000 n 
-0003636387 00000 n 
-0003636538 00000 n 
-0003636691 00000 n 
-0003636844 00000 n 
-0003636997 00000 n 
-0003637150 00000 n 
-0003637302 00000 n 
-0003637454 00000 n 
-0003637606 00000 n 
-0003637759 00000 n 
-0003637910 00000 n 
-0003638062 00000 n 
-0003638213 00000 n 
-0003638366 00000 n 
-0003638518 00000 n 
-0003638671 00000 n 
-0003638823 00000 n 
-0003638975 00000 n 
-0003639128 00000 n 
-0003639281 00000 n 
-0003639432 00000 n 
-0003639585 00000 n 
-0003639738 00000 n 
-0003639891 00000 n 
-0003640042 00000 n 
-0003640191 00000 n 
-0003640343 00000 n 
-0003640495 00000 n 
-0003640647 00000 n 
-0003640800 00000 n 
-0003640953 00000 n 
-0003641106 00000 n 
-0003641259 00000 n 
-0003641412 00000 n 
-0003641565 00000 n 
-0003641718 00000 n 
-0003641871 00000 n 
-0003642024 00000 n 
-0003642177 00000 n 
-0003642330 00000 n 
-0003642483 00000 n 
-0003642636 00000 n 
-0003642788 00000 n 
-0003642940 00000 n 
-0003643092 00000 n 
-0003643244 00000 n 
-0003643393 00000 n 
-0003643545 00000 n 
-0003643698 00000 n 
-0003643851 00000 n 
-0003644003 00000 n 
-0003644154 00000 n 
-0003644306 00000 n 
-0003644458 00000 n 
-0003644611 00000 n 
-0003644764 00000 n 
-0003644917 00000 n 
-0003645070 00000 n 
-0003645223 00000 n 
-0003645376 00000 n 
-0003645528 00000 n 
-0003645677 00000 n 
-0003645830 00000 n 
-0003645983 00000 n 
-0003646136 00000 n 
-0003646289 00000 n 
-0003646442 00000 n 
-0003646595 00000 n 
-0003646747 00000 n 
-0003646899 00000 n 
-0003647051 00000 n 
-0003647204 00000 n 
-0003647357 00000 n 
-0003651015 00000 n 
-0003647576 00000 n 
-0003631628 00000 n 
-0003629829 00000 n 
-0003647510 00000 n 
-0003651168 00000 n 
-0003651321 00000 n 
-0003651473 00000 n 
-0003651625 00000 n 
-0003651777 00000 n 
-0003651929 00000 n 
-0003652081 00000 n 
-0003652229 00000 n 
-0003652382 00000 n 
-0003652534 00000 n 
-0003652686 00000 n 
-0003652839 00000 n 
-0003652990 00000 n 
-0003653143 00000 n 
-0003653294 00000 n 
-0003653447 00000 n 
-0003653600 00000 n 
-0003653753 00000 n 
-0003653905 00000 n 
-0003654058 00000 n 
-0003654211 00000 n 
-0003654364 00000 n 
-0003654517 00000 n 
-0003654670 00000 n 
-0003654823 00000 n 
-0003654975 00000 n 
-0003655127 00000 n 
-0003655279 00000 n 
-0003655432 00000 n 
-0003655585 00000 n 
-0003655738 00000 n 
-0003655891 00000 n 
-0003656043 00000 n 
-0003656195 00000 n 
-0003656348 00000 n 
-0003656501 00000 n 
-0003656653 00000 n 
-0003656805 00000 n 
-0003656957 00000 n 
-0003657109 00000 n 
-0003657261 00000 n 
-0003657413 00000 n 
-0003657565 00000 n 
-0003657718 00000 n 
-0003657871 00000 n 
-0003658024 00000 n 
-0003658176 00000 n 
-0003658327 00000 n 
-0003658480 00000 n 
-0003658633 00000 n 
-0003658786 00000 n 
-0003658939 00000 n 
-0003659091 00000 n 
-0003659242 00000 n 
-0003659395 00000 n 
-0003659548 00000 n 
-0003659701 00000 n 
-0003659853 00000 n 
-0003660006 00000 n 
-0003660159 00000 n 
-0003660311 00000 n 
-0003660464 00000 n 
-0003660617 00000 n 
-0003660770 00000 n 
-0003660923 00000 n 
-0003661076 00000 n 
-0003661229 00000 n 
-0003661382 00000 n 
-0003661535 00000 n 
-0003661688 00000 n 
-0003661841 00000 n 
-0003661994 00000 n 
-0003662147 00000 n 
-0003662300 00000 n 
-0003662453 00000 n 
-0003662606 00000 n 
-0003662759 00000 n 
-0003662912 00000 n 
-0003663065 00000 n 
-0003663217 00000 n 
-0003663370 00000 n 
-0003663522 00000 n 
-0003663674 00000 n 
-0003663827 00000 n 
-0003663979 00000 n 
-0003664132 00000 n 
-0003664285 00000 n 
-0003664438 00000 n 
-0003664591 00000 n 
-0003664744 00000 n 
-0003664897 00000 n 
-0003665050 00000 n 
-0003665203 00000 n 
-0003665356 00000 n 
-0003665509 00000 n 
-0003665662 00000 n 
-0003665815 00000 n 
-0003665968 00000 n 
-0003666119 00000 n 
-0003666272 00000 n 
-0003666424 00000 n 
-0003666576 00000 n 
-0003666728 00000 n 
-0003666881 00000 n 
-0003667034 00000 n 
-0003667187 00000 n 
-0003667340 00000 n 
-0003667493 00000 n 
-0003667646 00000 n 
-0003667799 00000 n 
-0003667951 00000 n 
-0003668103 00000 n 
-0003668254 00000 n 
-0003668406 00000 n 
-0003668559 00000 n 
-0003668712 00000 n 
-0003668865 00000 n 
-0003669018 00000 n 
-0003669171 00000 n 
-0003669324 00000 n 
-0003669477 00000 n 
-0003669630 00000 n 
-0003669783 00000 n 
-0003669936 00000 n 
-0003670088 00000 n 
-0003670241 00000 n 
-0003670394 00000 n 
-0003670547 00000 n 
-0003670699 00000 n 
-0003670850 00000 n 
-0003671002 00000 n 
-0003671154 00000 n 
-0003671306 00000 n 
-0003671459 00000 n 
-0003671612 00000 n 
-0003671765 00000 n 
-0003671918 00000 n 
-0003672071 00000 n 
-0003672224 00000 n 
-0003672377 00000 n 
-0003672529 00000 n 
-0003672682 00000 n 
-0003672835 00000 n 
-0003675861 00000 n 
-0003676013 00000 n 
-0003676165 00000 n 
-0003676316 00000 n 
-0003676468 00000 n 
-0003676619 00000 n 
-0003676772 00000 n 
-0003676925 00000 n 
-0003677078 00000 n 
-0003673054 00000 n 
-0003649443 00000 n 
-0003647721 00000 n 
-0003672988 00000 n 
-0003677231 00000 n 
-0003677384 00000 n 
-0003677537 00000 n 
-0003677690 00000 n 
-0003677843 00000 n 
-0003677994 00000 n 
-0003678147 00000 n 
-0003678300 00000 n 
-0003678452 00000 n 
-0003678604 00000 n 
-0003678756 00000 n 
-0003678909 00000 n 
-0003679062 00000 n 
-0003679214 00000 n 
-0003679367 00000 n 
-0003679520 00000 n 
-0003679673 00000 n 
-0003679825 00000 n 
-0003679977 00000 n 
-0003680130 00000 n 
-0003680282 00000 n 
-0003680435 00000 n 
-0003680587 00000 n 
-0003680740 00000 n 
-0003680893 00000 n 
-0003681046 00000 n 
-0003681198 00000 n 
-0003681349 00000 n 
-0003681501 00000 n 
-0003681654 00000 n 
-0003681807 00000 n 
-0003681960 00000 n 
-0003682113 00000 n 
-0003682266 00000 n 
-0003682418 00000 n 
-0003682571 00000 n 
-0003682724 00000 n 
-0003682877 00000 n 
-0003683030 00000 n 
-0003683183 00000 n 
-0003683336 00000 n 
-0003683489 00000 n 
-0003683641 00000 n 
-0003683793 00000 n 
-0003683945 00000 n 
-0003684098 00000 n 
-0003684251 00000 n 
-0003684404 00000 n 
-0003684557 00000 n 
-0003684710 00000 n 
-0003684863 00000 n 
-0003685015 00000 n 
-0003685168 00000 n 
-0003685321 00000 n 
-0003685474 00000 n 
-0003685627 00000 n 
-0003685780 00000 n 
-0003685932 00000 n 
-0003686085 00000 n 
-0003686238 00000 n 
-0003686391 00000 n 
-0003686544 00000 n 
-0003686697 00000 n 
-0003686849 00000 n 
-0003687001 00000 n 
-0003687152 00000 n 
-0003687305 00000 n 
-0003687458 00000 n 
-0003687611 00000 n 
-0003687764 00000 n 
-0003687917 00000 n 
-0003688070 00000 n 
-0003688223 00000 n 
-0003688376 00000 n 
-0003688529 00000 n 
-0003688681 00000 n 
-0003688833 00000 n 
-0003688985 00000 n 
-0003689137 00000 n 
-0003689288 00000 n 
-0003689441 00000 n 
-0003689593 00000 n 
-0003689746 00000 n 
-0003689898 00000 n 
-0003690051 00000 n 
-0003690203 00000 n 
-0003690355 00000 n 
-0003690504 00000 n 
-0003690655 00000 n 
-0003690807 00000 n 
-0003690960 00000 n 
-0003691113 00000 n 
-0003691266 00000 n 
-0003691419 00000 n 
-0003691572 00000 n 
-0003691725 00000 n 
-0003694846 00000 n 
-0003691944 00000 n 
-0003674679 00000 n 
-0003673171 00000 n 
-0003691878 00000 n 
-0003694999 00000 n 
-0003695152 00000 n 
-0003695304 00000 n 
-0003695457 00000 n 
-0003695609 00000 n 
-0003695762 00000 n 
-0003695914 00000 n 
-0003696067 00000 n 
-0003696219 00000 n 
-0003696372 00000 n 
-0003696525 00000 n 
-0003696678 00000 n 
-0003696831 00000 n 
-0003696984 00000 n 
-0003697137 00000 n 
-0003697290 00000 n 
-0003697443 00000 n 
-0003697596 00000 n 
-0003697749 00000 n 
-0003697901 00000 n 
-0003698054 00000 n 
-0003698204 00000 n 
-0003698355 00000 n 
-0003698507 00000 n 
-0003698657 00000 n 
-0003698810 00000 n 
-0003698962 00000 n 
-0003699115 00000 n 
-0003699268 00000 n 
-0003699419 00000 n 
-0003699570 00000 n 
-0003699722 00000 n 
-0003699875 00000 n 
-0003700027 00000 n 
-0003700180 00000 n 
-0003700333 00000 n 
-0003700486 00000 n 
-0003700639 00000 n 
-0003700791 00000 n 
-0003700943 00000 n 
-0003701096 00000 n 
-0003701249 00000 n 
-0003701402 00000 n 
-0003701555 00000 n 
-0003701707 00000 n 
-0003701860 00000 n 
-0003702013 00000 n 
-0003702166 00000 n 
-0003702318 00000 n 
-0003702471 00000 n 
-0003702623 00000 n 
-0003702774 00000 n 
-0003702924 00000 n 
-0003703077 00000 n 
-0003703228 00000 n 
-0003703379 00000 n 
-0003703530 00000 n 
-0003703681 00000 n 
-0003703831 00000 n 
-0003703981 00000 n 
-0003704132 00000 n 
-0003704283 00000 n 
-0003704435 00000 n 
-0003704587 00000 n 
-0003704739 00000 n 
-0003704892 00000 n 
-0003705045 00000 n 
-0003705198 00000 n 
-0003705350 00000 n 
-0003705503 00000 n 
-0003705656 00000 n 
-0003705809 00000 n 
-0003705962 00000 n 
-0003706115 00000 n 
-0003706268 00000 n 
-0003706421 00000 n 
-0003706574 00000 n 
-0003706727 00000 n 
-0003706880 00000 n 
-0003707031 00000 n 
-0003707184 00000 n 
-0003707337 00000 n 
-0003707490 00000 n 
-0003707643 00000 n 
-0003707795 00000 n 
-0003707947 00000 n 
-0003708099 00000 n 
-0003708252 00000 n 
-0003708404 00000 n 
-0003708557 00000 n 
-0003708710 00000 n 
-0003708863 00000 n 
-0003709015 00000 n 
-0003709167 00000 n 
-0003709320 00000 n 
-0003709473 00000 n 
-0003709626 00000 n 
-0003709777 00000 n 
-0003709929 00000 n 
-0003710080 00000 n 
-0003710231 00000 n 
-0003710384 00000 n 
-0003710537 00000 n 
-0003710689 00000 n 
-0003710842 00000 n 
-0003710994 00000 n 
-0003711147 00000 n 
-0003711300 00000 n 
-0003714475 00000 n 
-0003714628 00000 n 
-0003711519 00000 n 
-0003693624 00000 n 
-0003692047 00000 n 
-0003711453 00000 n 
-0003714781 00000 n 
-0003714932 00000 n 
-0003715085 00000 n 
-0003715237 00000 n 
-0003715390 00000 n 
-0003715543 00000 n 
-0003715696 00000 n 
-0003715848 00000 n 
-0003716000 00000 n 
-0003716153 00000 n 
-0003716306 00000 n 
-0003716456 00000 n 
-0003716608 00000 n 
-0003716761 00000 n 
-0003716914 00000 n 
-0003717067 00000 n 
-0003717220 00000 n 
-0003717373 00000 n 
-0003717526 00000 n 
-0003717679 00000 n 
-0003717831 00000 n 
-0003717982 00000 n 
-0003718135 00000 n 
-0003718288 00000 n 
-0003718441 00000 n 
-0003718594 00000 n 
-0003718747 00000 n 
-0003718900 00000 n 
-0003719053 00000 n 
-0003719206 00000 n 
-0003719357 00000 n 
-0003719509 00000 n 
-0003719660 00000 n 
-0003719811 00000 n 
-0003719964 00000 n 
-0003720117 00000 n 
-0003720270 00000 n 
-0003720423 00000 n 
-0003720576 00000 n 
-0003720729 00000 n 
-0003720882 00000 n 
-0003721034 00000 n 
-0003721187 00000 n 
-0003721340 00000 n 
-0003721493 00000 n 
-0003721645 00000 n 
-0003721798 00000 n 
-0003721951 00000 n 
-0003722102 00000 n 
-0003722255 00000 n 
-0003722408 00000 n 
-0003722561 00000 n 
-0003722714 00000 n 
-0003722864 00000 n 
-0003723014 00000 n 
-0003723166 00000 n 
-0003723318 00000 n 
-0003723469 00000 n 
-0003723622 00000 n 
-0003723775 00000 n 
-0003723928 00000 n 
-0003724081 00000 n 
-0003724234 00000 n 
-0003724387 00000 n 
-0003724540 00000 n 
-0003724691 00000 n 
-0003724841 00000 n 
-0003724992 00000 n 
-0003725145 00000 n 
-0003725298 00000 n 
-0003725451 00000 n 
-0003725604 00000 n 
-0003725756 00000 n 
-0003725908 00000 n 
-0003726061 00000 n 
-0003726214 00000 n 
-0003726367 00000 n 
-0003726520 00000 n 
-0003726673 00000 n 
-0003726826 00000 n 
-0003726979 00000 n 
-0003727132 00000 n 
-0003727283 00000 n 
-0003727435 00000 n 
-0003727587 00000 n 
-0003727738 00000 n 
-0003727891 00000 n 
-0003728043 00000 n 
-0003728195 00000 n 
-0003728348 00000 n 
-0003728501 00000 n 
-0003728654 00000 n 
-0003728807 00000 n 
-0003728959 00000 n 
-0003729109 00000 n 
-0003729262 00000 n 
-0003729415 00000 n 
-0003729568 00000 n 
-0003729720 00000 n 
-0003729873 00000 n 
-0003730025 00000 n 
-0003730177 00000 n 
-0003730330 00000 n 
-0003730483 00000 n 
-0003733453 00000 n 
-0003730702 00000 n 
-0003713283 00000 n 
-0003711636 00000 n 
-0003730636 00000 n 
-0004786397 00000 n 
-0003733606 00000 n 
-0003733758 00000 n 
-0003733911 00000 n 
-0003734064 00000 n 
-0003734216 00000 n 
-0003734366 00000 n 
-0003734516 00000 n 
-0003734669 00000 n 
-0003734822 00000 n 
-0003734974 00000 n 
-0003735127 00000 n 
-0003735280 00000 n 
-0003735433 00000 n 
-0003735585 00000 n 
-0003735737 00000 n 
-0003735889 00000 n 
-0003736041 00000 n 
-0003736194 00000 n 
-0003736346 00000 n 
-0003736498 00000 n 
-0003736650 00000 n 
-0003736803 00000 n 
-0003736956 00000 n 
-0003737108 00000 n 
-0003737259 00000 n 
-0003737412 00000 n 
-0003737564 00000 n 
-0003737717 00000 n 
-0003737870 00000 n 
-0003738023 00000 n 
-0003738176 00000 n 
-0003738329 00000 n 
-0003738482 00000 n 
-0003738635 00000 n 
-0003738787 00000 n 
-0003738940 00000 n 
-0003739092 00000 n 
-0003739244 00000 n 
-0003739395 00000 n 
-0003739547 00000 n 
-0003739700 00000 n 
-0003739853 00000 n 
-0003740006 00000 n 
-0003740159 00000 n 
-0003740312 00000 n 
-0003740465 00000 n 
-0003740618 00000 n 
-0003740771 00000 n 
-0003740924 00000 n 
-0003741076 00000 n 
-0003741228 00000 n 
-0003741380 00000 n 
-0003741533 00000 n 
-0003741686 00000 n 
-0003741839 00000 n 
-0003741992 00000 n 
-0003742144 00000 n 
-0003742294 00000 n 
-0003742447 00000 n 
-0003742600 00000 n 
-0003742753 00000 n 
-0003742906 00000 n 
-0003743057 00000 n 
-0003743210 00000 n 
-0003743362 00000 n 
-0003743514 00000 n 
-0003743665 00000 n 
-0003743817 00000 n 
-0003743969 00000 n 
-0003744122 00000 n 
-0003744274 00000 n 
-0003744426 00000 n 
-0003744579 00000 n 
-0003744731 00000 n 
-0003744883 00000 n 
-0003745034 00000 n 
-0003745187 00000 n 
-0003745340 00000 n 
-0003745493 00000 n 
-0003745645 00000 n 
-0003745797 00000 n 
-0003745949 00000 n 
-0003746100 00000 n 
-0003746251 00000 n 
-0003746402 00000 n 
-0003746555 00000 n 
-0003746708 00000 n 
-0003746859 00000 n 
-0003747012 00000 n 
-0003747164 00000 n 
-0003747317 00000 n 
-0003747470 00000 n 
-0003750635 00000 n 
-0003747689 00000 n 
-0003732391 00000 n 
-0003730833 00000 n 
-0003747623 00000 n 
-0003750788 00000 n 
-0003750941 00000 n 
-0003751094 00000 n 
-0003751247 00000 n 
-0003751399 00000 n 
-0003751549 00000 n 
-0003751702 00000 n 
-0003751854 00000 n 
-0003752007 00000 n 
-0003752158 00000 n 
-0003752310 00000 n 
-0003752463 00000 n 
-0003752616 00000 n 
-0003752769 00000 n 
-0003752921 00000 n 
-0003753073 00000 n 
-0003753224 00000 n 
-0003753376 00000 n 
-0003753528 00000 n 
-0003753681 00000 n 
-0003753833 00000 n 
-0003753986 00000 n 
-0003754138 00000 n 
-0003754291 00000 n 
-0003754444 00000 n 
-0003754596 00000 n 
-0003754749 00000 n 
-0003754901 00000 n 
-0003755053 00000 n 
-0003755205 00000 n 
-0003755358 00000 n 
-0003755511 00000 n 
-0003755663 00000 n 
-0003755816 00000 n 
-0003755969 00000 n 
-0003756122 00000 n 
-0003756275 00000 n 
-0003756428 00000 n 
-0003756581 00000 n 
-0003756734 00000 n 
-0003756887 00000 n 
-0003757040 00000 n 
-0003757192 00000 n 
-0003757344 00000 n 
-0003757495 00000 n 
-0003757647 00000 n 
-0003757800 00000 n 
-0003757953 00000 n 
-0003758106 00000 n 
-0003758258 00000 n 
-0003758411 00000 n 
-0003758563 00000 n 
-0003758714 00000 n 
-0003758867 00000 n 
-0003759020 00000 n 
-0003759173 00000 n 
-0003759326 00000 n 
-0003759479 00000 n 
-0003759632 00000 n 
-0003759783 00000 n 
-0003759936 00000 n 
-0003760089 00000 n 
-0003760242 00000 n 
-0003760395 00000 n 
-0003760547 00000 n 
-0003760699 00000 n 
-0003760852 00000 n 
-0003761005 00000 n 
-0003761156 00000 n 
-0003761309 00000 n 
-0003761459 00000 n 
-0003761611 00000 n 
-0003761763 00000 n 
-0003761916 00000 n 
-0003762069 00000 n 
-0003762221 00000 n 
-0003762374 00000 n 
-0003762527 00000 n 
-0003762680 00000 n 
-0003762833 00000 n 
-0003762986 00000 n 
-0003763138 00000 n 
-0003763291 00000 n 
-0003763444 00000 n 
-0003763597 00000 n 
-0003763750 00000 n 
-0003763902 00000 n 
-0003764055 00000 n 
-0003764208 00000 n 
-0003764361 00000 n 
-0003764514 00000 n 
-0003764667 00000 n 
-0003764820 00000 n 
-0003764973 00000 n 
-0003765126 00000 n 
-0003765279 00000 n 
-0003765432 00000 n 
-0003765584 00000 n 
-0003765737 00000 n 
-0003765890 00000 n 
-0003766043 00000 n 
-0003766196 00000 n 
-0003766349 00000 n 
-0003766502 00000 n 
-0003766655 00000 n 
-0003766807 00000 n 
-0003766960 00000 n 
-0003769759 00000 n 
-0003769910 00000 n 
-0003770063 00000 n 
-0003770215 00000 n 
-0003767179 00000 n 
-0003749423 00000 n 
-0003747806 00000 n 
-0003767113 00000 n 
-0003770367 00000 n 
-0003770520 00000 n 
-0003770673 00000 n 
-0003770826 00000 n 
-0003770978 00000 n 
-0003771128 00000 n 
-0003771278 00000 n 
-0003771431 00000 n 
-0003771584 00000 n 
-0003771737 00000 n 
-0003771890 00000 n 
-0003772043 00000 n 
-0003772196 00000 n 
-0003772349 00000 n 
-0003772502 00000 n 
-0003772654 00000 n 
-0003772805 00000 n 
-0003772958 00000 n 
-0003773111 00000 n 
-0003773264 00000 n 
-0003773417 00000 n 
-0003773570 00000 n 
-0003773721 00000 n 
-0003773873 00000 n 
-0003774026 00000 n 
-0003774179 00000 n 
-0003774332 00000 n 
-0003774485 00000 n 
-0003774638 00000 n 
-0003774791 00000 n 
-0003774944 00000 n 
-0003775097 00000 n 
-0003775250 00000 n 
-0003775403 00000 n 
-0003775556 00000 n 
-0003775706 00000 n 
-0003775859 00000 n 
-0003776011 00000 n 
-0003776161 00000 n 
-0003776314 00000 n 
-0003776467 00000 n 
-0003776620 00000 n 
-0003776773 00000 n 
-0003776926 00000 n 
-0003777077 00000 n 
-0003777230 00000 n 
-0003777383 00000 n 
-0003777535 00000 n 
-0003777686 00000 n 
-0003777839 00000 n 
-0003777992 00000 n 
-0003778145 00000 n 
-0003778298 00000 n 
-0003778449 00000 n 
-0003778599 00000 n 
-0003778752 00000 n 
-0003778904 00000 n 
-0003779057 00000 n 
-0003779210 00000 n 
-0003779363 00000 n 
-0003779516 00000 n 
-0003779669 00000 n 
-0003779821 00000 n 
-0003779974 00000 n 
-0003780126 00000 n 
-0003780278 00000 n 
-0003780430 00000 n 
-0003780583 00000 n 
-0003780736 00000 n 
-0003780888 00000 n 
-0003781039 00000 n 
-0003781190 00000 n 
-0003781343 00000 n 
-0003781496 00000 n 
-0003781649 00000 n 
-0003781802 00000 n 
-0003781955 00000 n 
-0003782107 00000 n 
-0003782259 00000 n 
-0003782412 00000 n 
-0003782564 00000 n 
-0003782717 00000 n 
-0003782870 00000 n 
-0003783023 00000 n 
-0003783176 00000 n 
-0003783329 00000 n 
-0003783482 00000 n 
-0003783635 00000 n 
-0003786870 00000 n 
-0003783854 00000 n 
-0003768707 00000 n 
-0003767296 00000 n 
-0003783788 00000 n 
-0003787023 00000 n 
-0003787175 00000 n 
-0003787326 00000 n 
-0003787479 00000 n 
-0003787632 00000 n 
-0003787785 00000 n 
-0003787937 00000 n 
-0003788087 00000 n 
-0003788240 00000 n 
-0003788393 00000 n 
-0003788546 00000 n 
-0003788698 00000 n 
-0003788851 00000 n 
-0003789003 00000 n 
-0003789156 00000 n 
-0003789309 00000 n 
-0003789462 00000 n 
-0003789615 00000 n 
-0003789768 00000 n 
-0003789919 00000 n 
-0003790071 00000 n 
-0003790223 00000 n 
-0003790375 00000 n 
-0003790526 00000 n 
-0003790679 00000 n 
-0003790832 00000 n 
-0003790984 00000 n 
-0003791136 00000 n 
-0003791289 00000 n 
-0003791442 00000 n 
-0003791595 00000 n 
-0003791748 00000 n 
-0003791901 00000 n 
-0003792050 00000 n 
-0003792202 00000 n 
-0003792354 00000 n 
-0003792506 00000 n 
-0003792657 00000 n 
-0003792808 00000 n 
-0003792961 00000 n 
-0003793114 00000 n 
-0003793267 00000 n 
-0003793420 00000 n 
-0003793573 00000 n 
-0003793726 00000 n 
-0003793879 00000 n 
-0003794032 00000 n 
-0003794185 00000 n 
-0003794338 00000 n 
-0003794491 00000 n 
-0003794644 00000 n 
-0003794797 00000 n 
-0003794950 00000 n 
-0003795101 00000 n 
-0003795251 00000 n 
-0003795404 00000 n 
-0003795556 00000 n 
-0003795709 00000 n 
-0003795862 00000 n 
-0003796015 00000 n 
-0003796168 00000 n 
-0003796321 00000 n 
-0003796473 00000 n 
-0003796626 00000 n 
-0003796779 00000 n 
-0003796932 00000 n 
-0003797083 00000 n 
-0003797235 00000 n 
-0003797386 00000 n 
-0003797539 00000 n 
-0003797691 00000 n 
-0003797843 00000 n 
-0003797996 00000 n 
-0003798149 00000 n 
-0003798302 00000 n 
-0003798455 00000 n 
-0003798608 00000 n 
-0003798760 00000 n 
-0003798909 00000 n 
-0003799059 00000 n 
-0003799212 00000 n 
-0003799362 00000 n 
-0003799513 00000 n 
-0003799663 00000 n 
-0003799814 00000 n 
-0003799966 00000 n 
-0003800118 00000 n 
-0003800270 00000 n 
-0003800423 00000 n 
-0003800576 00000 n 
-0003800729 00000 n 
-0003800882 00000 n 
-0003801035 00000 n 
-0003801188 00000 n 
-0003801341 00000 n 
-0003801493 00000 n 
-0003801645 00000 n 
-0003801797 00000 n 
-0003801949 00000 n 
-0003802100 00000 n 
-0003802253 00000 n 
-0003802405 00000 n 
-0003802557 00000 n 
-0003802709 00000 n 
-0003802862 00000 n 
-0003803015 00000 n 
-0003803168 00000 n 
-0003803321 00000 n 
-0003803473 00000 n 
-0003803626 00000 n 
-0003803778 00000 n 
-0003807256 00000 n 
-0003807408 00000 n 
-0003807560 00000 n 
-0003807711 00000 n 
-0003807863 00000 n 
-0003808015 00000 n 
-0003808168 00000 n 
-0003808321 00000 n 
-0003808473 00000 n 
-0003808626 00000 n 
-0003808779 00000 n 
-0003808932 00000 n 
-0003803997 00000 n 
-0003785618 00000 n 
-0003783957 00000 n 
-0003803931 00000 n 
-0003809085 00000 n 
-0003809238 00000 n 
-0003809390 00000 n 
-0003809541 00000 n 
-0003809691 00000 n 
-0003809844 00000 n 
-0003809997 00000 n 
-0003810150 00000 n 
-0003810302 00000 n 
-0003810453 00000 n 
-0003810605 00000 n 
-0003810758 00000 n 
-0003810911 00000 n 
-0003811064 00000 n 
-0003811217 00000 n 
-0003811370 00000 n 
-0003811523 00000 n 
-0003811676 00000 n 
-0003811828 00000 n 
-0003811980 00000 n 
-0003812132 00000 n 
-0003812283 00000 n 
-0003812435 00000 n 
-0003812586 00000 n 
-0003812737 00000 n 
-0003812889 00000 n 
-0003813041 00000 n 
-0003813193 00000 n 
-0003813345 00000 n 
-0003813497 00000 n 
-0003813648 00000 n 
-0003813800 00000 n 
-0003813952 00000 n 
-0003814103 00000 n 
-0003814254 00000 n 
-0003814406 00000 n 
-0003814558 00000 n 
-0003814708 00000 n 
-0003814859 00000 n 
-0003815009 00000 n 
-0003815160 00000 n 
-0003815312 00000 n 
-0003815464 00000 n 
-0003815617 00000 n 
-0003815770 00000 n 
-0003815923 00000 n 
-0003816076 00000 n 
-0003816229 00000 n 
-0003816382 00000 n 
-0003816535 00000 n 
-0003816687 00000 n 
-0003816840 00000 n 
-0003816993 00000 n 
-0003817146 00000 n 
-0003817297 00000 n 
-0003817449 00000 n 
-0003817601 00000 n 
-0003817753 00000 n 
-0003817905 00000 n 
-0003818057 00000 n 
-0003818210 00000 n 
-0003818363 00000 n 
-0003818512 00000 n 
-0003818663 00000 n 
-0003818816 00000 n 
-0003818968 00000 n 
-0003819119 00000 n 
-0003819271 00000 n 
-0003819423 00000 n 
-0003819574 00000 n 
-0003819726 00000 n 
-0003819879 00000 n 
-0003820032 00000 n 
-0003820185 00000 n 
-0003820338 00000 n 
-0003820489 00000 n 
-0003820640 00000 n 
-0003820791 00000 n 
-0003820942 00000 n 
-0003821093 00000 n 
-0003821245 00000 n 
-0003821397 00000 n 
-0003821550 00000 n 
-0003821703 00000 n 
-0003821856 00000 n 
-0003822008 00000 n 
-0003822161 00000 n 
-0003822313 00000 n 
-0003822465 00000 n 
-0003822617 00000 n 
-0003822770 00000 n 
-0003822923 00000 n 
-0003823076 00000 n 
-0003823229 00000 n 
-0003823382 00000 n 
-0003823535 00000 n 
-0003823688 00000 n 
-0003823841 00000 n 
-0003823994 00000 n 
-0003824147 00000 n 
-0003824300 00000 n 
-0003824453 00000 n 
-0003824606 00000 n 
-0003824757 00000 n 
-0003824908 00000 n 
-0003825058 00000 n 
-0003825209 00000 n 
-0003825360 00000 n 
-0003825511 00000 n 
-0003825663 00000 n 
-0003825816 00000 n 
-0003825969 00000 n 
-0003826122 00000 n 
-0003826274 00000 n 
-0003826426 00000 n 
-0003826577 00000 n 
-0003826730 00000 n 
-0003826883 00000 n 
-0003827036 00000 n 
-0003827189 00000 n 
-0003827342 00000 n 
-0003827494 00000 n 
-0003827646 00000 n 
-0003827798 00000 n 
-0003827949 00000 n 
-0003828102 00000 n 
-0003828255 00000 n 
-0003828407 00000 n 
-0003828560 00000 n 
-0003828713 00000 n 
-0003828866 00000 n 
-0003829019 00000 n 
-0003829172 00000 n 
-0003829391 00000 n 
-0003805674 00000 n 
-0003804114 00000 n 
-0003829325 00000 n 
-0003832416 00000 n 
-0003832569 00000 n 
-0003832718 00000 n 
-0003832867 00000 n 
-0003833020 00000 n 
-0003833173 00000 n 
-0003833326 00000 n 
-0003833479 00000 n 
-0003833631 00000 n 
-0003833783 00000 n 
-0003833936 00000 n 
-0003834089 00000 n 
-0003834241 00000 n 
-0003834394 00000 n 
-0003834547 00000 n 
-0003834700 00000 n 
-0003834852 00000 n 
-0003835004 00000 n 
-0003835156 00000 n 
-0003835308 00000 n 
-0003835460 00000 n 
-0003835613 00000 n 
-0003835764 00000 n 
-0003835915 00000 n 
-0003836065 00000 n 
-0003836216 00000 n 
-0003836367 00000 n 
-0003836520 00000 n 
-0003836673 00000 n 
-0003836825 00000 n 
-0003836978 00000 n 
-0003837130 00000 n 
-0003837283 00000 n 
-0003837436 00000 n 
-0003837589 00000 n 
-0003837742 00000 n 
-0003837895 00000 n 
-0003838047 00000 n 
-0003838200 00000 n 
-0003838352 00000 n 
-0003838505 00000 n 
-0003838654 00000 n 
-0003838807 00000 n 
-0003838960 00000 n 
-0003839112 00000 n 
-0003839265 00000 n 
-0003839417 00000 n 
-0003839569 00000 n 
-0003839721 00000 n 
-0003839873 00000 n 
-0003840025 00000 n 
-0003840178 00000 n 
-0003840331 00000 n 
-0003840484 00000 n 
-0003840636 00000 n 
-0003840789 00000 n 
-0003840942 00000 n 
-0003841095 00000 n 
-0003841247 00000 n 
-0003841399 00000 n 
-0003841551 00000 n 
-0003841702 00000 n 
-0003841854 00000 n 
-0003842007 00000 n 
-0003842160 00000 n 
-0003842313 00000 n 
-0003842466 00000 n 
-0003842618 00000 n 
-0003842769 00000 n 
-0003842922 00000 n 
-0003843074 00000 n 
-0003843227 00000 n 
-0003843379 00000 n 
-0003843532 00000 n 
-0003843685 00000 n 
-0003843836 00000 n 
-0003843989 00000 n 
-0003844142 00000 n 
-0003844295 00000 n 
-0003844448 00000 n 
-0003844601 00000 n 
-0003844752 00000 n 
-0003844904 00000 n 
-0003845056 00000 n 
-0003845208 00000 n 
-0003845360 00000 n 
-0003845513 00000 n 
-0003845665 00000 n 
-0003845818 00000 n 
-0003845969 00000 n 
-0003846122 00000 n 
-0003846275 00000 n 
-0003846427 00000 n 
-0003846579 00000 n 
-0003846732 00000 n 
-0003846884 00000 n 
-0003847036 00000 n 
-0003847189 00000 n 
-0003847341 00000 n 
-0003847493 00000 n 
-0003847645 00000 n 
-0003847798 00000 n 
-0003847951 00000 n 
-0003848104 00000 n 
-0003851257 00000 n 
-0003848322 00000 n 
-0003831244 00000 n 
-0003829508 00000 n 
-0003848256 00000 n 
-0004786530 00000 n 
-0003851410 00000 n 
-0003851563 00000 n 
-0003851716 00000 n 
-0003851869 00000 n 
-0003852021 00000 n 
-0003852170 00000 n 
-0003852323 00000 n 
-0003852475 00000 n 
-0003852628 00000 n 
-0003852781 00000 n 
-0003852934 00000 n 
-0003853087 00000 n 
-0003853239 00000 n 
-0003853390 00000 n 
-0003853542 00000 n 
-0003853694 00000 n 
-0003853846 00000 n 
-0003853999 00000 n 
-0003854152 00000 n 
-0003854305 00000 n 
-0003854458 00000 n 
-0003854611 00000 n 
-0003854764 00000 n 
-0003854917 00000 n 
-0003855070 00000 n 
-0003855220 00000 n 
-0003855373 00000 n 
-0003855526 00000 n 
-0003855679 00000 n 
-0003855832 00000 n 
-0003855984 00000 n 
-0003856136 00000 n 
-0003856288 00000 n 
-0003856441 00000 n 
-0003856594 00000 n 
-0003856747 00000 n 
-0003856900 00000 n 
-0003857053 00000 n 
-0003857205 00000 n 
-0003857358 00000 n 
-0003857511 00000 n 
-0003857664 00000 n 
-0003857816 00000 n 
-0003857967 00000 n 
-0003858120 00000 n 
-0003858272 00000 n 
-0003858425 00000 n 
-0003858578 00000 n 
-0003858731 00000 n 
-0003858884 00000 n 
-0003859037 00000 n 
-0003859190 00000 n 
-0003859343 00000 n 
-0003859496 00000 n 
-0003859649 00000 n 
-0003859802 00000 n 
-0003859955 00000 n 
-0003860108 00000 n 
-0003860261 00000 n 
-0003860414 00000 n 
-0003860566 00000 n 
-0003860719 00000 n 
-0003860872 00000 n 
-0003861025 00000 n 
-0003861178 00000 n 
-0003861331 00000 n 
-0003861484 00000 n 
-0003861637 00000 n 
-0003861790 00000 n 
-0003861943 00000 n 
-0003862094 00000 n 
-0003862247 00000 n 
-0003862400 00000 n 
-0003862552 00000 n 
-0003862704 00000 n 
-0003862856 00000 n 
-0003863008 00000 n 
-0003863160 00000 n 
-0003863313 00000 n 
-0003863464 00000 n 
-0003863616 00000 n 
-0003863768 00000 n 
-0003863920 00000 n 
-0003864072 00000 n 
-0003864225 00000 n 
-0003864377 00000 n 
-0003864530 00000 n 
-0003864683 00000 n 
-0003864835 00000 n 
-0003864988 00000 n 
-0003865141 00000 n 
-0003865294 00000 n 
-0003865447 00000 n 
-0003865600 00000 n 
-0003865753 00000 n 
-0003865905 00000 n 
-0003866058 00000 n 
-0003866211 00000 n 
-0003869274 00000 n 
-0003866430 00000 n 
-0003850135 00000 n 
-0003848453 00000 n 
-0003866364 00000 n 
-0003869427 00000 n 
-0003869580 00000 n 
-0003869733 00000 n 
-0003869884 00000 n 
-0003870036 00000 n 
-0003870188 00000 n 
-0003870338 00000 n 
-0003870490 00000 n 
-0003870642 00000 n 
-0003870795 00000 n 
-0003870947 00000 n 
-0003871100 00000 n 
-0003871252 00000 n 
-0003871404 00000 n 
-0003871556 00000 n 
-0003871709 00000 n 
-0003871861 00000 n 
-0003872013 00000 n 
-0003872165 00000 n 
-0003872318 00000 n 
-0003872470 00000 n 
-0003872623 00000 n 
-0003872776 00000 n 
-0003872929 00000 n 
-0003873082 00000 n 
-0003873235 00000 n 
-0003873387 00000 n 
-0003873540 00000 n 
-0003873692 00000 n 
-0003873843 00000 n 
-0003873995 00000 n 
-0003874144 00000 n 
-0003874297 00000 n 
-0003874450 00000 n 
-0003874603 00000 n 
-0003874756 00000 n 
-0003874909 00000 n 
-0003875062 00000 n 
-0003875214 00000 n 
-0003875363 00000 n 
-0003875516 00000 n 
-0003875668 00000 n 
-0003875820 00000 n 
-0003875971 00000 n 
-0003876123 00000 n 
-0003876275 00000 n 
-0003876428 00000 n 
-0003876580 00000 n 
-0003876733 00000 n 
-0003876886 00000 n 
-0003877039 00000 n 
-0003877192 00000 n 
-0003877344 00000 n 
-0003877497 00000 n 
-0003877650 00000 n 
-0003877803 00000 n 
-0003877954 00000 n 
-0003878107 00000 n 
-0003878260 00000 n 
-0003878412 00000 n 
-0003878564 00000 n 
-0003878717 00000 n 
-0003878870 00000 n 
-0003879023 00000 n 
-0003879176 00000 n 
-0003879329 00000 n 
-0003879482 00000 n 
-0003879635 00000 n 
-0003879786 00000 n 
-0003879939 00000 n 
-0003880092 00000 n 
-0003880245 00000 n 
-0003880397 00000 n 
-0003880550 00000 n 
-0003880703 00000 n 
-0003880856 00000 n 
-0003881009 00000 n 
-0003881162 00000 n 
-0003881315 00000 n 
-0003881468 00000 n 
-0003881621 00000 n 
-0003881774 00000 n 
-0003881926 00000 n 
-0003882079 00000 n 
-0003882232 00000 n 
-0003882382 00000 n 
-0003882535 00000 n 
-0003882688 00000 n 
-0003882841 00000 n 
-0003882992 00000 n 
-0003883142 00000 n 
-0003883295 00000 n 
-0003883448 00000 n 
-0003883601 00000 n 
-0003883753 00000 n 
-0003883906 00000 n 
-0003884058 00000 n 
-0003884210 00000 n 
-0003884363 00000 n 
-0003884516 00000 n 
-0003887784 00000 n 
-0003887937 00000 n 
-0003884735 00000 n 
-0003868132 00000 n 
-0003866547 00000 n 
-0003884669 00000 n 
-0003888090 00000 n 
-0003888243 00000 n 
-0003888396 00000 n 
-0003888549 00000 n 
-0003888702 00000 n 
-0003888853 00000 n 
-0003889006 00000 n 
-0003889159 00000 n 
-0003889312 00000 n 
-0003889465 00000 n 
-0003889618 00000 n 
-0003889771 00000 n 
-0003889924 00000 n 
-0003890077 00000 n 
-0003890230 00000 n 
-0003890383 00000 n 
-0003890536 00000 n 
-0003890689 00000 n 
-0003890842 00000 n 
-0003890995 00000 n 
-0003891146 00000 n 
-0003891297 00000 n 
-0003891450 00000 n 
-0003891602 00000 n 
-0003891755 00000 n 
-0003891908 00000 n 
-0003892061 00000 n 
-0003892213 00000 n 
-0003892366 00000 n 
-0003892519 00000 n 
-0003892672 00000 n 
-0003892824 00000 n 
-0003892977 00000 n 
-0003893129 00000 n 
-0003893281 00000 n 
-0003893432 00000 n 
-0003893584 00000 n 
-0003893736 00000 n 
-0003893889 00000 n 
-0003894042 00000 n 
-0003894195 00000 n 
-0003894348 00000 n 
-0003894501 00000 n 
-0003894654 00000 n 
-0003894807 00000 n 
-0003894960 00000 n 
-0003895112 00000 n 
-0003895264 00000 n 
-0003895415 00000 n 
-0003895568 00000 n 
-0003895721 00000 n 
-0003895874 00000 n 
-0003896027 00000 n 
-0003896179 00000 n 
-0003896332 00000 n 
-0003896485 00000 n 
-0003896638 00000 n 
-0003896791 00000 n 
-0003896943 00000 n 
-0003897095 00000 n 
-0003897248 00000 n 
-0003897401 00000 n 
-0003897552 00000 n 
-0003897703 00000 n 
-0003897855 00000 n 
-0003898006 00000 n 
-0003898154 00000 n 
-0003898306 00000 n 
-0003898455 00000 n 
-0003898608 00000 n 
-0003898760 00000 n 
-0003898913 00000 n 
-0003899066 00000 n 
-0003899219 00000 n 
-0003899372 00000 n 
-0003899525 00000 n 
-0003899677 00000 n 
-0003899830 00000 n 
-0003899982 00000 n 
-0003900134 00000 n 
-0003900286 00000 n 
-0003900438 00000 n 
-0003900589 00000 n 
-0003900741 00000 n 
-0003900894 00000 n 
-0003901047 00000 n 
-0003901200 00000 n 
-0003901352 00000 n 
-0003901505 00000 n 
-0003901658 00000 n 
-0003901811 00000 n 
-0003901964 00000 n 
-0003902117 00000 n 
-0003902270 00000 n 
-0003902423 00000 n 
-0003902576 00000 n 
-0003902728 00000 n 
-0003902880 00000 n 
-0003903032 00000 n 
-0003903185 00000 n 
-0003903338 00000 n 
-0003903491 00000 n 
-0003903644 00000 n 
-0003903795 00000 n 
-0003903948 00000 n 
-0003904100 00000 n 
-0003904253 00000 n 
-0003904406 00000 n 
-0003904557 00000 n 
-0003907611 00000 n 
-0003904775 00000 n 
-0003886542 00000 n 
-0003884852 00000 n 
-0003904709 00000 n 
-0003907760 00000 n 
-0003907910 00000 n 
-0003908061 00000 n 
-0003908212 00000 n 
-0003908365 00000 n 
-0003908518 00000 n 
-0003908671 00000 n 
-0003908823 00000 n 
-0003908974 00000 n 
-0003909127 00000 n 
-0003909280 00000 n 
-0003909433 00000 n 
-0003909586 00000 n 
-0003909738 00000 n 
-0003909890 00000 n 
-0003910043 00000 n 
-0003910193 00000 n 
-0003910346 00000 n 
-0003910497 00000 n 
-0003910649 00000 n 
-0003910801 00000 n 
-0003910953 00000 n 
-0003911105 00000 n 
-0003911256 00000 n 
-0003911409 00000 n 
-0003911562 00000 n 
-0003911715 00000 n 
-0003911868 00000 n 
-0003912021 00000 n 
-0003912174 00000 n 
-0003912326 00000 n 
-0003912479 00000 n 
-0003912632 00000 n 
-0003912782 00000 n 
-0003912935 00000 n 
-0003913088 00000 n 
-0003913241 00000 n 
-0003913394 00000 n 
-0003913547 00000 n 
-0003913700 00000 n 
-0003913853 00000 n 
-0003914005 00000 n 
-0003914156 00000 n 
-0003914309 00000 n 
-0003914462 00000 n 
-0003914615 00000 n 
-0003914768 00000 n 
-0003914920 00000 n 
-0003915069 00000 n 
-0003915221 00000 n 
-0003915374 00000 n 
-0003915527 00000 n 
-0003915679 00000 n 
-0003915832 00000 n 
-0003915985 00000 n 
-0003916138 00000 n 
-0003916291 00000 n 
-0003916444 00000 n 
-0003916595 00000 n 
-0003916748 00000 n 
-0003916901 00000 n 
-0003917054 00000 n 
-0003917207 00000 n 
-0003917359 00000 n 
-0003917511 00000 n 
-0003917664 00000 n 
-0003917816 00000 n 
-0003917969 00000 n 
-0003918122 00000 n 
-0003918275 00000 n 
-0003918427 00000 n 
-0003918580 00000 n 
-0003918733 00000 n 
-0003918886 00000 n 
-0003919038 00000 n 
-0003919191 00000 n 
-0003919344 00000 n 
-0003919497 00000 n 
-0003919650 00000 n 
-0003919802 00000 n 
-0003919955 00000 n 
-0003920106 00000 n 
-0003920259 00000 n 
-0003920412 00000 n 
-0003920563 00000 n 
-0003920716 00000 n 
-0003920868 00000 n 
-0003921021 00000 n 
-0003921174 00000 n 
-0003921327 00000 n 
-0003921480 00000 n 
-0003921632 00000 n 
-0003921785 00000 n 
-0003921937 00000 n 
-0003922089 00000 n 
-0003922241 00000 n 
-0003922393 00000 n 
-0003922546 00000 n 
-0003922699 00000 n 
-0003922851 00000 n 
-0003923002 00000 n 
-0003926241 00000 n 
-0003923221 00000 n 
-0003906459 00000 n 
-0003904892 00000 n 
-0003923155 00000 n 
-0003926392 00000 n 
-0003926545 00000 n 
-0003926698 00000 n 
-0003926850 00000 n 
-0003927003 00000 n 
-0003927155 00000 n 
-0003927308 00000 n 
-0003927460 00000 n 
-0003927612 00000 n 
-0003927762 00000 n 
-0003927914 00000 n 
-0003928065 00000 n 
-0003928218 00000 n 
-0003928371 00000 n 
-0003928524 00000 n 
-0003928677 00000 n 
-0003928830 00000 n 
-0003928983 00000 n 
-0003929135 00000 n 
-0003929287 00000 n 
-0003929440 00000 n 
-0003929593 00000 n 
-0003929746 00000 n 
-0003929899 00000 n 
-0003930052 00000 n 
-0003930205 00000 n 
-0003930357 00000 n 
-0003930509 00000 n 
-0003930662 00000 n 
-0003930815 00000 n 
-0003930968 00000 n 
-0003931121 00000 n 
-0003931274 00000 n 
-0003931427 00000 n 
-0003931580 00000 n 
-0003931733 00000 n 
-0003931886 00000 n 
-0003932039 00000 n 
-0003932190 00000 n 
-0003932341 00000 n 
-0003932494 00000 n 
-0003932647 00000 n 
-0003932800 00000 n 
-0003932953 00000 n 
-0003933106 00000 n 
-0003933257 00000 n 
-0003933410 00000 n 
-0003933563 00000 n 
-0003933716 00000 n 
-0003933869 00000 n 
-0003934022 00000 n 
-0003934174 00000 n 
-0003934326 00000 n 
-0003934475 00000 n 
-0003934625 00000 n 
-0003934778 00000 n 
-0003934931 00000 n 
-0003935084 00000 n 
-0003935237 00000 n 
-0003935390 00000 n 
-0003935543 00000 n 
-0003935696 00000 n 
-0003935849 00000 n 
-0003936002 00000 n 
-0003936155 00000 n 
-0003936308 00000 n 
-0003936460 00000 n 
-0003936613 00000 n 
-0003936765 00000 n 
-0003936917 00000 n 
-0003937069 00000 n 
-0003937220 00000 n 
-0003937373 00000 n 
-0003937526 00000 n 
-0003937679 00000 n 
-0003937832 00000 n 
-0003937985 00000 n 
-0003938138 00000 n 
-0003938291 00000 n 
-0003938444 00000 n 
-0003938595 00000 n 
-0003938747 00000 n 
-0003938900 00000 n 
-0003939053 00000 n 
-0003939206 00000 n 
-0003939359 00000 n 
-0003939512 00000 n 
-0003939661 00000 n 
-0003939813 00000 n 
-0003939965 00000 n 
-0003940117 00000 n 
-0003940270 00000 n 
-0003940423 00000 n 
-0003940576 00000 n 
-0003940729 00000 n 
-0003940882 00000 n 
-0003941035 00000 n 
-0003941188 00000 n 
-0003941341 00000 n 
-0003941494 00000 n 
-0003941647 00000 n 
-0003941800 00000 n 
-0003941953 00000 n 
-0003942106 00000 n 
-0003942259 00000 n 
-0003942412 00000 n 
-0003942565 00000 n 
-0003942718 00000 n 
-0003942871 00000 n 
-0003943023 00000 n 
-0003946002 00000 n 
-0003946154 00000 n 
-0003946306 00000 n 
-0003946458 00000 n 
-0003946610 00000 n 
-0003946763 00000 n 
-0003946916 00000 n 
-0003943242 00000 n 
-0003924999 00000 n 
-0003923324 00000 n 
-0003943176 00000 n 
-0003947069 00000 n 
-0003947221 00000 n 
-0003947373 00000 n 
-0003947526 00000 n 
-0003947679 00000 n 
-0003947832 00000 n 
-0003947985 00000 n 
-0003948138 00000 n 
-0003948290 00000 n 
-0003948442 00000 n 
-0003948595 00000 n 
-0003948746 00000 n 
-0003948895 00000 n 
-0003949048 00000 n 
-0003949201 00000 n 
-0003949354 00000 n 
-0003949506 00000 n 
-0003949654 00000 n 
-0003949807 00000 n 
-0003949959 00000 n 
-0003950111 00000 n 
-0003950264 00000 n 
-0003950417 00000 n 
-0003950570 00000 n 
-0003950723 00000 n 
-0003950876 00000 n 
-0003951029 00000 n 
-0003951182 00000 n 
-0003951335 00000 n 
-0003951488 00000 n 
-0003951641 00000 n 
-0003951790 00000 n 
-0003951942 00000 n 
-0003952094 00000 n 
-0003952246 00000 n 
-0003952399 00000 n 
-0003952551 00000 n 
-0003952703 00000 n 
-0003952855 00000 n 
-0003953006 00000 n 
-0003953155 00000 n 
-0003953306 00000 n 
-0003953459 00000 n 
-0003953612 00000 n 
-0003953765 00000 n 
-0003953917 00000 n 
-0003954069 00000 n 
-0003954221 00000 n 
-0003954374 00000 n 
-0003954526 00000 n 
-0003954679 00000 n 
-0003954831 00000 n 
-0003954984 00000 n 
-0003955137 00000 n 
-0003955290 00000 n 
-0003955443 00000 n 
-0003955596 00000 n 
-0003955749 00000 n 
-0003955902 00000 n 
-0003956055 00000 n 
-0003956208 00000 n 
-0003956360 00000 n 
-0003956512 00000 n 
-0003956665 00000 n 
-0003956818 00000 n 
-0003956970 00000 n 
-0003957123 00000 n 
-0003957276 00000 n 
-0003957428 00000 n 
-0003957580 00000 n 
-0003957732 00000 n 
-0003957884 00000 n 
-0003958034 00000 n 
-0003958185 00000 n 
-0003958336 00000 n 
-0003958489 00000 n 
-0003958642 00000 n 
-0003958795 00000 n 
-0003958948 00000 n 
-0003959100 00000 n 
-0003959252 00000 n 
-0003959405 00000 n 
-0003959558 00000 n 
-0003959710 00000 n 
-0003959863 00000 n 
-0003960016 00000 n 
-0003960169 00000 n 
-0003960322 00000 n 
-0003960475 00000 n 
-0003960627 00000 n 
-0003960778 00000 n 
-0003960930 00000 n 
-0003961082 00000 n 
-0003961235 00000 n 
-0003961386 00000 n 
-0003961539 00000 n 
-0003961691 00000 n 
-0003961844 00000 n 
-0003961997 00000 n 
-0003962149 00000 n 
-0003962302 00000 n 
-0003962453 00000 n 
-0003962606 00000 n 
-0003962759 00000 n 
-0003962912 00000 n 
-0003963063 00000 n 
-0003966488 00000 n 
-0003963282 00000 n 
-0003944740 00000 n 
-0003943359 00000 n 
-0003963216 00000 n 
-0004786663 00000 n 
-0003966641 00000 n 
-0003966794 00000 n 
-0003966946 00000 n 
-0003967098 00000 n 
-0003967250 00000 n 
-0003967401 00000 n 
-0003967552 00000 n 
-0003967703 00000 n 
-0003967855 00000 n 
-0003968007 00000 n 
-0003968159 00000 n 
-0003968310 00000 n 
-0003968462 00000 n 
-0003968614 00000 n 
-0003968765 00000 n 
-0003968916 00000 n 
-0003969067 00000 n 
-0003969218 00000 n 
-0003969368 00000 n 
-0003969518 00000 n 
-0003969671 00000 n 
-0003969824 00000 n 
-0003969977 00000 n 
-0003970130 00000 n 
-0003970283 00000 n 
-0003970436 00000 n 
-0003970589 00000 n 
-0003970742 00000 n 
-0003970894 00000 n 
-0003971047 00000 n 
-0003971200 00000 n 
-0003971353 00000 n 
-0003971504 00000 n 
-0003971656 00000 n 
-0003971808 00000 n 
-0003971960 00000 n 
-0003972112 00000 n 
-0003972264 00000 n 
-0003972417 00000 n 
-0003972569 00000 n 
-0003972722 00000 n 
-0003972875 00000 n 
-0003973028 00000 n 
-0003973181 00000 n 
-0003973333 00000 n 
-0003973484 00000 n 
-0003973636 00000 n 
-0003973788 00000 n 
-0003973941 00000 n 
-0003974094 00000 n 
-0003974247 00000 n 
-0003974399 00000 n 
-0003974552 00000 n 
-0003974705 00000 n 
-0003974858 00000 n 
-0003975009 00000 n 
-0003975162 00000 n 
-0003975315 00000 n 
-0003975466 00000 n 
-0003975619 00000 n 
-0003975771 00000 n 
-0003975923 00000 n 
-0003976075 00000 n 
-0003976227 00000 n 
-0003976379 00000 n 
-0003976532 00000 n 
-0003976684 00000 n 
-0003976837 00000 n 
-0003976990 00000 n 
-0003977142 00000 n 
-0003977295 00000 n 
-0003977448 00000 n 
-0003977600 00000 n 
-0003977753 00000 n 
-0003977905 00000 n 
-0003978057 00000 n 
-0003978210 00000 n 
-0003978363 00000 n 
-0003978516 00000 n 
-0003978669 00000 n 
-0003978822 00000 n 
-0003978975 00000 n 
-0003979128 00000 n 
-0003979281 00000 n 
-0003979434 00000 n 
-0003979587 00000 n 
-0003979740 00000 n 
-0003979892 00000 n 
-0003980044 00000 n 
-0003980195 00000 n 
-0003980346 00000 n 
-0003980499 00000 n 
-0003980651 00000 n 
-0003980804 00000 n 
-0003980957 00000 n 
-0003981110 00000 n 
-0003981263 00000 n 
-0003981416 00000 n 
-0003981569 00000 n 
-0003981722 00000 n 
-0003981875 00000 n 
-0003982027 00000 n 
-0003982178 00000 n 
-0003982329 00000 n 
-0003982482 00000 n 
-0003982635 00000 n 
-0003982788 00000 n 
-0003982941 00000 n 
-0003983092 00000 n 
-0003983245 00000 n 
-0003983398 00000 n 
-0003983550 00000 n 
-0003983703 00000 n 
-0003983856 00000 n 
-0003984009 00000 n 
-0003984161 00000 n 
-0003984313 00000 n 
-0003984465 00000 n 
-0003984617 00000 n 
-0003984769 00000 n 
-0003984922 00000 n 
-0003985074 00000 n 
-0003985227 00000 n 
-0003985380 00000 n 
-0003985532 00000 n 
-0003985683 00000 n 
-0003985835 00000 n 
-0003985987 00000 n 
-0003986140 00000 n 
-0003986293 00000 n 
-0003989492 00000 n 
-0003986512 00000 n 
-0003965046 00000 n 
-0003963385 00000 n 
-0003986446 00000 n 
-0003989645 00000 n 
-0003989798 00000 n 
-0003989951 00000 n 
-0003990103 00000 n 
-0003990255 00000 n 
-0003990407 00000 n 
-0003990558 00000 n 
-0003990708 00000 n 
-0003990858 00000 n 
-0003991011 00000 n 
-0003991164 00000 n 
-0003991317 00000 n 
-0003991469 00000 n 
-0003991621 00000 n 
-0003991773 00000 n 
-0003991925 00000 n 
-0003992078 00000 n 
-0003992231 00000 n 
-0003992384 00000 n 
-0003992537 00000 n 
-0003992690 00000 n 
-0003992843 00000 n 
-0003992996 00000 n 
-0003993149 00000 n 
-0003993301 00000 n 
-0003993453 00000 n 
-0003993605 00000 n 
-0003993757 00000 n 
-0003993909 00000 n 
-0003994062 00000 n 
-0003994215 00000 n 
-0003994367 00000 n 
-0003994520 00000 n 
-0003994673 00000 n 
-0003994826 00000 n 
-0003994979 00000 n 
-0003995131 00000 n 
-0003995283 00000 n 
-0003995435 00000 n 
-0003995587 00000 n 
-0003995737 00000 n 
-0003995890 00000 n 
-0003996043 00000 n 
-0003996196 00000 n 
-0003996349 00000 n 
-0003996501 00000 n 
-0003996654 00000 n 
-0003996807 00000 n 
-0003996960 00000 n 
-0003997113 00000 n 
-0003997266 00000 n 
-0003997419 00000 n 
-0003997572 00000 n 
-0003997725 00000 n 
-0003997878 00000 n 
-0003998031 00000 n 
-0003998184 00000 n 
-0003998336 00000 n 
-0003998486 00000 n 
-0003998639 00000 n 
-0003998792 00000 n 
-0003998945 00000 n 
-0003999098 00000 n 
-0003999251 00000 n 
-0003999403 00000 n 
-0003999556 00000 n 
-0003999709 00000 n 
-0003999861 00000 n 
-0004000013 00000 n 
-0004000165 00000 n 
-0004000318 00000 n 
-0004000471 00000 n 
-0004000622 00000 n 
-0004000772 00000 n 
-0004000924 00000 n 
-0004001076 00000 n 
-0004001229 00000 n 
-0004001382 00000 n 
-0004001534 00000 n 
-0004001687 00000 n 
-0004001840 00000 n 
-0004001993 00000 n 
-0004002146 00000 n 
-0004002299 00000 n 
-0004002452 00000 n 
-0004002605 00000 n 
-0004002758 00000 n 
-0004002911 00000 n 
-0004003064 00000 n 
-0004003217 00000 n 
-0004003370 00000 n 
-0004003523 00000 n 
-0004003675 00000 n 
-0004003827 00000 n 
-0004003980 00000 n 
-0004004133 00000 n 
-0004004285 00000 n 
-0004004437 00000 n 
-0004004590 00000 n 
-0004004741 00000 n 
-0004004894 00000 n 
-0004008171 00000 n 
-0004005113 00000 n 
-0003988340 00000 n 
-0003986629 00000 n 
-0004005047 00000 n 
-0004008323 00000 n 
-0004008475 00000 n 
-0004008626 00000 n 
-0004008779 00000 n 
-0004008931 00000 n 
-0004009084 00000 n 
-0004009237 00000 n 
-0004009390 00000 n 
-0004009543 00000 n 
-0004009696 00000 n 
-0004009846 00000 n 
-0004009998 00000 n 
-0004010150 00000 n 
-0004010303 00000 n 
-0004010456 00000 n 
-0004010608 00000 n 
-0004010761 00000 n 
-0004010914 00000 n 
-0004011066 00000 n 
-0004011218 00000 n 
-0004011370 00000 n 
-0004011522 00000 n 
-0004011674 00000 n 
-0004011827 00000 n 
-0004011980 00000 n 
-0004012133 00000 n 
-0004012286 00000 n 
-0004012438 00000 n 
-0004012591 00000 n 
-0004012743 00000 n 
-0004012896 00000 n 
-0004013048 00000 n 
-0004013200 00000 n 
-0004013352 00000 n 
-0004013503 00000 n 
-0004013656 00000 n 
-0004013809 00000 n 
-0004013962 00000 n 
-0004014114 00000 n 
-0004014266 00000 n 
-0004014419 00000 n 
-0004014572 00000 n 
-0004014725 00000 n 
-0004014878 00000 n 
-0004015031 00000 n 
-0004015184 00000 n 
-0004015337 00000 n 
-0004015490 00000 n 
-0004015643 00000 n 
-0004015796 00000 n 
-0004015949 00000 n 
-0004016101 00000 n 
-0004016254 00000 n 
-0004016406 00000 n 
-0004016557 00000 n 
-0004016709 00000 n 
-0004016858 00000 n 
-0004017009 00000 n 
-0004017162 00000 n 
-0004017315 00000 n 
-0004017468 00000 n 
-0004017621 00000 n 
-0004017774 00000 n 
-0004017926 00000 n 
-0004018078 00000 n 
-0004018231 00000 n 
-0004018384 00000 n 
-0004018537 00000 n 
-0004018690 00000 n 
-0004018843 00000 n 
-0004018996 00000 n 
-0004019147 00000 n 
-0004019300 00000 n 
-0004019452 00000 n 
-0004019602 00000 n 
-0004019754 00000 n 
-0004019906 00000 n 
-0004020058 00000 n 
-0004020210 00000 n 
-0004020363 00000 n 
-0004020516 00000 n 
-0004020669 00000 n 
-0004020822 00000 n 
-0004020975 00000 n 
-0004021128 00000 n 
-0004021281 00000 n 
-0004021434 00000 n 
-0004021586 00000 n 
-0004021739 00000 n 
-0004021892 00000 n 
-0004022045 00000 n 
-0004022198 00000 n 
-0004022351 00000 n 
-0004022503 00000 n 
-0004022655 00000 n 
-0004022808 00000 n 
-0004022961 00000 n 
-0004023114 00000 n 
-0004023267 00000 n 
-0004023420 00000 n 
-0004023572 00000 n 
-0004023723 00000 n 
-0004023875 00000 n 
-0004024026 00000 n 
-0004024178 00000 n 
-0004024330 00000 n 
-0004024483 00000 n 
-0004024636 00000 n 
-0004024789 00000 n 
-0004024941 00000 n 
-0004025093 00000 n 
-0004025245 00000 n 
-0004025398 00000 n 
-0004025551 00000 n 
-0004025702 00000 n 
-0004025854 00000 n 
-0004026006 00000 n 
-0004026158 00000 n 
-0004026310 00000 n 
-0004026463 00000 n 
-0004026616 00000 n 
-0004026769 00000 n 
-0004026922 00000 n 
-0004027074 00000 n 
-0004027227 00000 n 
-0004027380 00000 n 
-0004027533 00000 n 
-0004030373 00000 n 
-0004030525 00000 n 
-0004027750 00000 n 
-0004006759 00000 n 
-0004005230 00000 n 
-0004027684 00000 n 
-0004030677 00000 n 
-0004030830 00000 n 
-0004030983 00000 n 
-0004031136 00000 n 
-0004031287 00000 n 
-0004031438 00000 n 
-0004031590 00000 n 
-0004031743 00000 n 
-0004031896 00000 n 
-0004032049 00000 n 
-0004032202 00000 n 
-0004032355 00000 n 
-0004032508 00000 n 
-0004032660 00000 n 
-0004032813 00000 n 
-0004032966 00000 n 
-0004033119 00000 n 
-0004033271 00000 n 
-0004033423 00000 n 
-0004033576 00000 n 
-0004033728 00000 n 
-0004033880 00000 n 
-0004034033 00000 n 
-0004034186 00000 n 
-0004034339 00000 n 
-0004034492 00000 n 
-0004034645 00000 n 
-0004034798 00000 n 
-0004034950 00000 n 
-0004035103 00000 n 
-0004035254 00000 n 
-0004035407 00000 n 
-0004035560 00000 n 
-0004035713 00000 n 
-0004035866 00000 n 
-0004036019 00000 n 
-0004036172 00000 n 
-0004036324 00000 n 
-0004036477 00000 n 
-0004036630 00000 n 
-0004036782 00000 n 
-0004036934 00000 n 
-0004037086 00000 n 
-0004037239 00000 n 
-0004037392 00000 n 
-0004037545 00000 n 
-0004037697 00000 n 
-0004037850 00000 n 
-0004038003 00000 n 
-0004038155 00000 n 
-0004038305 00000 n 
-0004038458 00000 n 
-0004038611 00000 n 
-0004038764 00000 n 
-0004038917 00000 n 
-0004039070 00000 n 
-0004039223 00000 n 
-0004039376 00000 n 
-0004039529 00000 n 
-0004039681 00000 n 
-0004039833 00000 n 
-0004039986 00000 n 
-0004040139 00000 n 
-0004040290 00000 n 
-0004040443 00000 n 
-0004040596 00000 n 
-0004040748 00000 n 
-0004040899 00000 n 
-0004041052 00000 n 
-0004041204 00000 n 
-0004041357 00000 n 
-0004041510 00000 n 
-0004041663 00000 n 
-0004041816 00000 n 
-0004041969 00000 n 
-0004042121 00000 n 
-0004042273 00000 n 
-0004042426 00000 n 
-0004042579 00000 n 
-0004042732 00000 n 
-0004045784 00000 n 
-0004042951 00000 n 
-0004029421 00000 n 
-0004027853 00000 n 
-0004042885 00000 n 
-0004045937 00000 n 
-0004046090 00000 n 
-0004046242 00000 n 
-0004046395 00000 n 
-0004046546 00000 n 
-0004046698 00000 n 
-0004046850 00000 n 
-0004046999 00000 n 
-0004047150 00000 n 
-0004047301 00000 n 
-0004047454 00000 n 
-0004047605 00000 n 
-0004047758 00000 n 
-0004047911 00000 n 
-0004048064 00000 n 
-0004048217 00000 n 
-0004048370 00000 n 
-0004048521 00000 n 
-0004048672 00000 n 
-0004048825 00000 n 
-0004048976 00000 n 
-0004049129 00000 n 
-0004049281 00000 n 
-0004049433 00000 n 
-0004049585 00000 n 
-0004049737 00000 n 
-0004049890 00000 n 
-0004050043 00000 n 
-0004050196 00000 n 
-0004050349 00000 n 
-0004050502 00000 n 
-0004050654 00000 n 
-0004050806 00000 n 
-0004050958 00000 n 
-0004051110 00000 n 
-0004051263 00000 n 
-0004051416 00000 n 
-0004051568 00000 n 
-0004051721 00000 n 
-0004051873 00000 n 
-0004052026 00000 n 
-0004052179 00000 n 
-0004052332 00000 n 
-0004052485 00000 n 
-0004052638 00000 n 
-0004052791 00000 n 
-0004052943 00000 n 
-0004053095 00000 n 
-0004053245 00000 n 
-0004053396 00000 n 
-0004053549 00000 n 
-0004053701 00000 n 
-0004053852 00000 n 
-0004054005 00000 n 
-0004054156 00000 n 
-0004054307 00000 n 
-0004054460 00000 n 
-0004054613 00000 n 
-0004054766 00000 n 
-0004054918 00000 n 
-0004055070 00000 n 
-0004055223 00000 n 
-0004055376 00000 n 
-0004055528 00000 n 
-0004055681 00000 n 
-0004055834 00000 n 
-0004055987 00000 n 
-0004056138 00000 n 
-0004056291 00000 n 
-0004056444 00000 n 
-0004056597 00000 n 
-0004056750 00000 n 
-0004056903 00000 n 
-0004057056 00000 n 
-0004057209 00000 n 
-0004057362 00000 n 
-0004057515 00000 n 
-0004057668 00000 n 
-0004057820 00000 n 
-0004057973 00000 n 
-0004058126 00000 n 
-0004058278 00000 n 
-0004058427 00000 n 
-0004058580 00000 n 
-0004058733 00000 n 
-0004058886 00000 n 
-0004059039 00000 n 
-0004059192 00000 n 
-0004059345 00000 n 
-0004059497 00000 n 
-0004059650 00000 n 
-0004059803 00000 n 
-0004059955 00000 n 
-0004060107 00000 n 
-0004060259 00000 n 
-0004060411 00000 n 
-0004060563 00000 n 
-0004060716 00000 n 
-0004060868 00000 n 
-0004061021 00000 n 
-0004061174 00000 n 
-0004064302 00000 n 
-0004061392 00000 n 
-0004044632 00000 n 
-0004043068 00000 n 
-0004061326 00000 n 
-0004064454 00000 n 
-0004064607 00000 n 
-0004064760 00000 n 
-0004064912 00000 n 
-0004065064 00000 n 
-0004065217 00000 n 
-0004065370 00000 n 
-0004065523 00000 n 
-0004065675 00000 n 
-0004065824 00000 n 
-0004065973 00000 n 
-0004066126 00000 n 
-0004066279 00000 n 
-0004066432 00000 n 
-0004066585 00000 n 
-0004066738 00000 n 
-0004066891 00000 n 
-0004067043 00000 n 
-0004067195 00000 n 
-0004067347 00000 n 
-0004067500 00000 n 
-0004067653 00000 n 
-0004067806 00000 n 
-0004067959 00000 n 
-0004068112 00000 n 
-0004068264 00000 n 
-0004068416 00000 n 
-0004068569 00000 n 
-0004068721 00000 n 
-0004068874 00000 n 
-0004069027 00000 n 
-0004069180 00000 n 
-0004069333 00000 n 
-0004069485 00000 n 
-0004069637 00000 n 
-0004069790 00000 n 
-0004069943 00000 n 
-0004070096 00000 n 
-0004070249 00000 n 
-0004070402 00000 n 
-0004070555 00000 n 
-0004070708 00000 n 
-0004070861 00000 n 
-0004071014 00000 n 
-0004071167 00000 n 
-0004071319 00000 n 
-0004071470 00000 n 
-0004071623 00000 n 
-0004071776 00000 n 
-0004071929 00000 n 
-0004072082 00000 n 
-0004072235 00000 n 
-0004072387 00000 n 
-0004072540 00000 n 
-0004072693 00000 n 
-0004072845 00000 n 
-0004072998 00000 n 
-0004073151 00000 n 
-0004073304 00000 n 
-0004073457 00000 n 
-0004073610 00000 n 
-0004073763 00000 n 
-0004073916 00000 n 
-0004074069 00000 n 
-0004074222 00000 n 
-0004074375 00000 n 
-0004074527 00000 n 
-0004074678 00000 n 
-0004074830 00000 n 
-0004074983 00000 n 
-0004075134 00000 n 
-0004075286 00000 n 
-0004075437 00000 n 
-0004075588 00000 n 
-0004075741 00000 n 
-0004075894 00000 n 
-0004076047 00000 n 
-0004076199 00000 n 
-0004076352 00000 n 
-0004076505 00000 n 
-0004076658 00000 n 
-0004076809 00000 n 
-0004076960 00000 n 
-0004077113 00000 n 
-0004077264 00000 n 
-0004077417 00000 n 
-0004077570 00000 n 
-0004077723 00000 n 
-0004077876 00000 n 
-0004078028 00000 n 
-0004078181 00000 n 
-0004078333 00000 n 
-0004078485 00000 n 
-0004078638 00000 n 
-0004078791 00000 n 
-0004078944 00000 n 
-0004079097 00000 n 
-0004079249 00000 n 
-0004079402 00000 n 
-0004079553 00000 n 
-0004079706 00000 n 
-0004079859 00000 n 
-0004080012 00000 n 
-0004080165 00000 n 
-0004080317 00000 n 
-0004080468 00000 n 
-0004080621 00000 n 
-0004080773 00000 n 
-0004080926 00000 n 
-0004081079 00000 n 
-0004081232 00000 n 
-0004081385 00000 n 
-0004081538 00000 n 
-0004081691 00000 n 
-0004081844 00000 n 
-0004081997 00000 n 
-0004084995 00000 n 
-0004085147 00000 n 
-0004082216 00000 n 
-0004063000 00000 n 
-0004061509 00000 n 
-0004082150 00000 n 
-0004786796 00000 n 
-0004085299 00000 n 
-0004085450 00000 n 
-0004085603 00000 n 
-0004085755 00000 n 
-0004085908 00000 n 
-0004086061 00000 n 
-0004086213 00000 n 
-0004086366 00000 n 
-0004086519 00000 n 
-0004086670 00000 n 
-0004086823 00000 n 
-0004086975 00000 n 
-0004087128 00000 n 
-0004087281 00000 n 
-0004087433 00000 n 
-0004087586 00000 n 
-0004087739 00000 n 
-0004087892 00000 n 
-0004088045 00000 n 
-0004088198 00000 n 
-0004088351 00000 n 
-0004088503 00000 n 
-0004088655 00000 n 
-0004088808 00000 n 
-0004088960 00000 n 
-0004089113 00000 n 
-0004089266 00000 n 
-0004089417 00000 n 
-0004089569 00000 n 
-0004089721 00000 n 
-0004089873 00000 n 
-0004090026 00000 n 
-0004090179 00000 n 
-0004090332 00000 n 
-0004090485 00000 n 
-0004090638 00000 n 
-0004090791 00000 n 
-0004090944 00000 n 
-0004091096 00000 n 
-0004091248 00000 n 
-0004091401 00000 n 
-0004091554 00000 n 
-0004091707 00000 n 
-0004091858 00000 n 
-0004092011 00000 n 
-0004092163 00000 n 
-0004092316 00000 n 
-0004092469 00000 n 
-0004092622 00000 n 
-0004092774 00000 n 
-0004092926 00000 n 
-0004093078 00000 n 
-0004093231 00000 n 
-0004093383 00000 n 
-0004093536 00000 n 
-0004093689 00000 n 
-0004093842 00000 n 
-0004093995 00000 n 
-0004094148 00000 n 
-0004094301 00000 n 
-0004094453 00000 n 
-0004094605 00000 n 
-0004094753 00000 n 
-0004094906 00000 n 
-0004095059 00000 n 
-0004095212 00000 n 
-0004095365 00000 n 
-0004095518 00000 n 
-0004095671 00000 n 
-0004095824 00000 n 
-0004095976 00000 n 
-0004096129 00000 n 
-0004096282 00000 n 
-0004096435 00000 n 
-0004096588 00000 n 
-0004096740 00000 n 
-0004096892 00000 n 
-0004097045 00000 n 
-0004097196 00000 n 
-0004097349 00000 n 
-0004097502 00000 n 
-0004097655 00000 n 
-0004097806 00000 n 
-0004097956 00000 n 
-0004098108 00000 n 
-0004098260 00000 n 
-0004098413 00000 n 
-0004098566 00000 n 
-0004098718 00000 n 
-0004098871 00000 n 
-0004099024 00000 n 
-0004099177 00000 n 
-0004099330 00000 n 
-0004099482 00000 n 
-0004099635 00000 n 
-0004099788 00000 n 
-0004099940 00000 n 
-0004100093 00000 n 
-0004100245 00000 n 
-0004100397 00000 n 
-0004100549 00000 n 
-0004100701 00000 n 
-0004100853 00000 n 
-0004101001 00000 n 
-0004101153 00000 n 
-0004104409 00000 n 
-0004101372 00000 n 
-0004083793 00000 n 
-0004082333 00000 n 
-0004101306 00000 n 
-0004104561 00000 n 
-0004104714 00000 n 
-0004104866 00000 n 
-0004105018 00000 n 
-0004105170 00000 n 
-0004105320 00000 n 
-0004105470 00000 n 
-0004105623 00000 n 
-0004105775 00000 n 
-0004105927 00000 n 
-0004106080 00000 n 
-0004106233 00000 n 
-0004106386 00000 n 
-0004106539 00000 n 
-0004106691 00000 n 
-0004106843 00000 n 
-0004106996 00000 n 
-0004107149 00000 n 
-0004107301 00000 n 
-0004107453 00000 n 
-0004107605 00000 n 
-0004107758 00000 n 
-0004107911 00000 n 
-0004108062 00000 n 
-0004108214 00000 n 
-0004108366 00000 n 
-0004108519 00000 n 
-0004108672 00000 n 
-0004108824 00000 n 
-0004108976 00000 n 
-0004109128 00000 n 
-0004109280 00000 n 
-0004109432 00000 n 
-0004109583 00000 n 
-0004109736 00000 n 
-0004109889 00000 n 
-0004110042 00000 n 
-0004110195 00000 n 
-0004110348 00000 n 
-0004110501 00000 n 
-0004110654 00000 n 
-0004110807 00000 n 
-0004110960 00000 n 
-0004111113 00000 n 
-0004111266 00000 n 
-0004111419 00000 n 
-0004111572 00000 n 
-0004111725 00000 n 
-0004111877 00000 n 
-0004112029 00000 n 
-0004112180 00000 n 
-0004112333 00000 n 
-0004112486 00000 n 
-0004112637 00000 n 
-0004112790 00000 n 
-0004112943 00000 n 
-0004113096 00000 n 
-0004113249 00000 n 
-0004113402 00000 n 
-0004113555 00000 n 
-0004113708 00000 n 
-0004113860 00000 n 
-0004114012 00000 n 
-0004114164 00000 n 
-0004114317 00000 n 
-0004114470 00000 n 
-0004114623 00000 n 
-0004114776 00000 n 
-0004114927 00000 n 
-0004115078 00000 n 
-0004115230 00000 n 
-0004115382 00000 n 
-0004115535 00000 n 
-0004115688 00000 n 
-0004115841 00000 n 
-0004115994 00000 n 
-0004116146 00000 n 
-0004116299 00000 n 
-0004116451 00000 n 
-0004116604 00000 n 
-0004116757 00000 n 
-0004116909 00000 n 
-0004117062 00000 n 
-0004117214 00000 n 
-0004117367 00000 n 
-0004117519 00000 n 
-0004117670 00000 n 
-0004117822 00000 n 
-0004117974 00000 n 
-0004118127 00000 n 
-0004118280 00000 n 
-0004118433 00000 n 
-0004118586 00000 n 
-0004118739 00000 n 
-0004118892 00000 n 
-0004119044 00000 n 
-0004119197 00000 n 
-0004119350 00000 n 
-0004119503 00000 n 
-0004119653 00000 n 
-0004119806 00000 n 
-0004119958 00000 n 
-0004120110 00000 n 
-0004120263 00000 n 
-0004120416 00000 n 
-0004120569 00000 n 
-0004120722 00000 n 
-0004120875 00000 n 
-0004121028 00000 n 
-0004121181 00000 n 
-0004124737 00000 n 
-0004121400 00000 n 
-0004103167 00000 n 
-0004101489 00000 n 
-0004121334 00000 n 
-0004124890 00000 n 
-0004125043 00000 n 
-0004125196 00000 n 
-0004125349 00000 n 
-0004125502 00000 n 
-0004125654 00000 n 
-0004125805 00000 n 
-0004125956 00000 n 
-0004126107 00000 n 
-0004126257 00000 n 
-0004126408 00000 n 
-0004126559 00000 n 
-0004126712 00000 n 
-0004126865 00000 n 
-0004127018 00000 n 
-0004127170 00000 n 
-0004127322 00000 n 
-0004127475 00000 n 
-0004127628 00000 n 
-0004127781 00000 n 
-0004127934 00000 n 
-0004128087 00000 n 
-0004128239 00000 n 
-0004128391 00000 n 
-0004128544 00000 n 
-0004128697 00000 n 
-0004128850 00000 n 
-0004129003 00000 n 
-0004129156 00000 n 
-0004129309 00000 n 
-0004129461 00000 n 
-0004129614 00000 n 
-0004129767 00000 n 
-0004129919 00000 n 
-0004130072 00000 n 
-0004130225 00000 n 
-0004130378 00000 n 
-0004130531 00000 n 
-0004130684 00000 n 
-0004130835 00000 n 
-0004130987 00000 n 
-0004131139 00000 n 
-0004131291 00000 n 
-0004131443 00000 n 
-0004131596 00000 n 
-0004131749 00000 n 
-0004131902 00000 n 
-0004132055 00000 n 
-0004132208 00000 n 
-0004132361 00000 n 
-0004132513 00000 n 
-0004132666 00000 n 
-0004132819 00000 n 
-0004132970 00000 n 
-0004133120 00000 n 
-0004133273 00000 n 
-0004133426 00000 n 
-0004133578 00000 n 
-0004133730 00000 n 
-0004133883 00000 n 
-0004134036 00000 n 
-0004134189 00000 n 
-0004134342 00000 n 
-0004134495 00000 n 
-0004134648 00000 n 
-0004134800 00000 n 
-0004134952 00000 n 
-0004135105 00000 n 
-0004135258 00000 n 
-0004135411 00000 n 
-0004135564 00000 n 
-0004135716 00000 n 
-0004135869 00000 n 
-0004136022 00000 n 
-0004136175 00000 n 
-0004136327 00000 n 
-0004136479 00000 n 
-0004136632 00000 n 
-0004136785 00000 n 
-0004136937 00000 n 
-0004137090 00000 n 
-0004137243 00000 n 
-0004137396 00000 n 
-0004137549 00000 n 
-0004137702 00000 n 
-0004137855 00000 n 
-0004138007 00000 n 
-0004138160 00000 n 
-0004138313 00000 n 
-0004138464 00000 n 
-0004138616 00000 n 
-0004138767 00000 n 
-0004138920 00000 n 
-0004139072 00000 n 
-0004139225 00000 n 
-0004139378 00000 n 
-0004139531 00000 n 
-0004139684 00000 n 
-0004139837 00000 n 
-0004139989 00000 n 
-0004140142 00000 n 
-0004140294 00000 n 
-0004140447 00000 n 
-0004140600 00000 n 
-0004140752 00000 n 
-0004140904 00000 n 
-0004141056 00000 n 
-0004141208 00000 n 
-0004141360 00000 n 
-0004141511 00000 n 
-0004141664 00000 n 
-0004141817 00000 n 
-0004141970 00000 n 
-0004142123 00000 n 
-0004142276 00000 n 
-0004142429 00000 n 
-0004142581 00000 n 
-0004142733 00000 n 
-0004142885 00000 n 
-0004143037 00000 n 
-0004146590 00000 n 
-0004143256 00000 n 
-0004123395 00000 n 
-0004121517 00000 n 
-0004143190 00000 n 
-0004146743 00000 n 
-0004146896 00000 n 
-0004147049 00000 n 
-0004147202 00000 n 
-0004147355 00000 n 
-0004147508 00000 n 
-0004147661 00000 n 
-0004147814 00000 n 
-0004147967 00000 n 
-0004148119 00000 n 
-0004148272 00000 n 
-0004148425 00000 n 
-0004148578 00000 n 
-0004148730 00000 n 
-0004148882 00000 n 
-0004149035 00000 n 
-0004149188 00000 n 
-0004149341 00000 n 
-0004149491 00000 n 
-0004149644 00000 n 
-0004149796 00000 n 
-0004149949 00000 n 
-0004150101 00000 n 
-0004150253 00000 n 
-0004150405 00000 n 
-0004150557 00000 n 
-0004150710 00000 n 
-0004150863 00000 n 
-0004151015 00000 n 
-0004151167 00000 n 
-0004151320 00000 n 
-0004151473 00000 n 
-0004151626 00000 n 
-0004151779 00000 n 
-0004151932 00000 n 
-0004152085 00000 n 
-0004152238 00000 n 
-0004152389 00000 n 
-0004152540 00000 n 
-0004152692 00000 n 
-0004152845 00000 n 
-0004152997 00000 n 
-0004153149 00000 n 
-0004153302 00000 n 
-0004153455 00000 n 
-0004153608 00000 n 
-0004153761 00000 n 
-0004153914 00000 n 
-0004154066 00000 n 
-0004154217 00000 n 
-0004154368 00000 n 
-0004154519 00000 n 
-0004154670 00000 n 
-0004154821 00000 n 
-0004154972 00000 n 
-0004155125 00000 n 
-0004155277 00000 n 
-0004155430 00000 n 
-0004155582 00000 n 
-0004155735 00000 n 
-0004155888 00000 n 
-0004156041 00000 n 
-0004156193 00000 n 
-0004156346 00000 n 
-0004156498 00000 n 
-0004156651 00000 n 
-0004156804 00000 n 
-0004156957 00000 n 
-0004157110 00000 n 
-0004157263 00000 n 
-0004157416 00000 n 
-0004157569 00000 n 
-0004157721 00000 n 
-0004157869 00000 n 
-0004158021 00000 n 
-0004158174 00000 n 
-0004158326 00000 n 
-0004158478 00000 n 
-0004158631 00000 n 
-0004158784 00000 n 
-0004158937 00000 n 
-0004159090 00000 n 
-0004159243 00000 n 
-0004159396 00000 n 
-0004159548 00000 n 
-0004159701 00000 n 
-0004159854 00000 n 
-0004160006 00000 n 
-0004160156 00000 n 
-0004160307 00000 n 
-0004160458 00000 n 
-0004160609 00000 n 
-0004160762 00000 n 
-0004160915 00000 n 
-0004161067 00000 n 
-0004161218 00000 n 
-0004161369 00000 n 
-0004161522 00000 n 
-0004161675 00000 n 
-0004161828 00000 n 
-0004161980 00000 n 
-0004162133 00000 n 
-0004162285 00000 n 
-0004162438 00000 n 
-0004162591 00000 n 
-0004162743 00000 n 
-0004162896 00000 n 
-0004163048 00000 n 
-0004163201 00000 n 
-0004163353 00000 n 
-0004163504 00000 n 
-0004163656 00000 n 
-0004163807 00000 n 
-0004163959 00000 n 
-0004164112 00000 n 
-0004164265 00000 n 
-0004164418 00000 n 
-0004164569 00000 n 
-0004168411 00000 n 
-0004164788 00000 n 
-0004145268 00000 n 
-0004143373 00000 n 
-0004164722 00000 n 
-0004168564 00000 n 
-0004168717 00000 n 
-0004168870 00000 n 
-0004169023 00000 n 
-0004169176 00000 n 
-0004169329 00000 n 
-0004169481 00000 n 
-0004169634 00000 n 
-0004169787 00000 n 
-0004169939 00000 n 
-0004170091 00000 n 
-0004170243 00000 n 
-0004170393 00000 n 
-0004170546 00000 n 
-0004170699 00000 n 
-0004170852 00000 n 
-0004171005 00000 n 
-0004171157 00000 n 
-0004171310 00000 n 
-0004171462 00000 n 
-0004171615 00000 n 
-0004171768 00000 n 
-0004171920 00000 n 
-0004172072 00000 n 
-0004172225 00000 n 
-0004172378 00000 n 
-0004172531 00000 n 
-0004172684 00000 n 
-0004172837 00000 n 
-0004172988 00000 n 
-0004173139 00000 n 
-0004173290 00000 n 
-0004173441 00000 n 
-0004173593 00000 n 
-0004173746 00000 n 
-0004173899 00000 n 
-0004174052 00000 n 
-0004174204 00000 n 
-0004174356 00000 n 
-0004174509 00000 n 
-0004174662 00000 n 
-0004174815 00000 n 
-0004174968 00000 n 
-0004175121 00000 n 
-0004175273 00000 n 
-0004175426 00000 n 
-0004175578 00000 n 
-0004175730 00000 n 
-0004175882 00000 n 
-0004176034 00000 n 
-0004176186 00000 n 
-0004176339 00000 n 
-0004176491 00000 n 
-0004176644 00000 n 
-0004176796 00000 n 
-0004176947 00000 n 
-0004177099 00000 n 
-0004177252 00000 n 
-0004177402 00000 n 
-0004177552 00000 n 
-0004177703 00000 n 
-0004177854 00000 n 
-0004178005 00000 n 
-0004178156 00000 n 
-0004178307 00000 n 
-0004178460 00000 n 
-0004178613 00000 n 
-0004178765 00000 n 
-0004178918 00000 n 
-0004179071 00000 n 
-0004179224 00000 n 
-0004179377 00000 n 
-0004179529 00000 n 
-0004179682 00000 n 
-0004179835 00000 n 
-0004179988 00000 n 
-0004180140 00000 n 
-0004180292 00000 n 
-0004180444 00000 n 
-0004180596 00000 n 
-0004180748 00000 n 
-0004180900 00000 n 
-0004181052 00000 n 
-0004181204 00000 n 
-0004181356 00000 n 
-0004181508 00000 n 
-0004181660 00000 n 
-0004181812 00000 n 
-0004181965 00000 n 
-0004182118 00000 n 
-0004182271 00000 n 
-0004182423 00000 n 
-0004182576 00000 n 
-0004182729 00000 n 
-0004182882 00000 n 
-0004183035 00000 n 
-0004183187 00000 n 
-0004183339 00000 n 
-0004183490 00000 n 
-0004183642 00000 n 
-0004183794 00000 n 
-0004183947 00000 n 
-0004184100 00000 n 
-0004184252 00000 n 
-0004184405 00000 n 
-0004184558 00000 n 
-0004184711 00000 n 
-0004184864 00000 n 
-0004185017 00000 n 
-0004185170 00000 n 
-0004185323 00000 n 
-0004185476 00000 n 
-0004185628 00000 n 
-0004185779 00000 n 
-0004185931 00000 n 
-0004186083 00000 n 
-0004186235 00000 n 
-0004186388 00000 n 
-0004186541 00000 n 
-0004186693 00000 n 
-0004186845 00000 n 
-0004186997 00000 n 
-0004187149 00000 n 
-0004187302 00000 n 
-0004187455 00000 n 
-0004187607 00000 n 
-0004187756 00000 n 
-0004187909 00000 n 
-0004188062 00000 n 
-0004188214 00000 n 
-0004188365 00000 n 
-0004188517 00000 n 
-0004188670 00000 n 
-0004188823 00000 n 
-0004188976 00000 n 
-0004189129 00000 n 
-0004189281 00000 n 
-0004189434 00000 n 
-0004189587 00000 n 
-0004189740 00000 n 
-0004189893 00000 n 
-0004190045 00000 n 
-0004190197 00000 n 
-0004190349 00000 n 
-0004190502 00000 n 
-0004190655 00000 n 
-0004190808 00000 n 
-0004190961 00000 n 
-0004191114 00000 n 
-0004191267 00000 n 
-0004191420 00000 n 
-0004191573 00000 n 
-0004191725 00000 n 
-0004191878 00000 n 
-0004192030 00000 n 
-0004192183 00000 n 
-0004192335 00000 n 
-0004192486 00000 n 
-0004192638 00000 n 
-0004192790 00000 n 
-0004192943 00000 n 
-0004193096 00000 n 
-0004193249 00000 n 
-0004193402 00000 n 
-0004193555 00000 n 
-0004193707 00000 n 
-0004193860 00000 n 
-0004197127 00000 n 
-0004197279 00000 n 
-0004197431 00000 n 
-0004194079 00000 n 
-0004166599 00000 n 
-0004164905 00000 n 
-0004194013 00000 n 
-0004197584 00000 n 
-0004197737 00000 n 
-0004197889 00000 n 
-0004198040 00000 n 
-0004198190 00000 n 
-0004198342 00000 n 
-0004198494 00000 n 
-0004198646 00000 n 
-0004198799 00000 n 
-0004198951 00000 n 
-0004199103 00000 n 
-0004199255 00000 n 
-0004199408 00000 n 
-0004199561 00000 n 
-0004199714 00000 n 
-0004199867 00000 n 
-0004200020 00000 n 
-0004200173 00000 n 
-0004200326 00000 n 
-0004200478 00000 n 
-0004200630 00000 n 
-0004200782 00000 n 
-0004200934 00000 n 
-0004201086 00000 n 
-0004201238 00000 n 
-0004201390 00000 n 
-0004201543 00000 n 
-0004201696 00000 n 
-0004201849 00000 n 
-0004202002 00000 n 
-0004202155 00000 n 
-0004202308 00000 n 
-0004202461 00000 n 
-0004202614 00000 n 
-0004202767 00000 n 
-0004202920 00000 n 
-0004203073 00000 n 
-0004203226 00000 n 
-0004203379 00000 n 
-0004203531 00000 n 
-0004203683 00000 n 
-0004203835 00000 n 
-0004203988 00000 n 
-0004204141 00000 n 
-0004204294 00000 n 
-0004204447 00000 n 
-0004204598 00000 n 
-0004204751 00000 n 
-0004204902 00000 n 
-0004205055 00000 n 
-0004205208 00000 n 
-0004205360 00000 n 
-0004205513 00000 n 
-0004205666 00000 n 
-0004205819 00000 n 
-0004205972 00000 n 
-0004206125 00000 n 
-0004206278 00000 n 
-0004206430 00000 n 
-0004206582 00000 n 
-0004206735 00000 n 
-0004206887 00000 n 
-0004207037 00000 n 
-0004207190 00000 n 
-0004207342 00000 n 
-0004207494 00000 n 
-0004207647 00000 n 
-0004207800 00000 n 
-0004207951 00000 n 
-0004208104 00000 n 
-0004208257 00000 n 
-0004208410 00000 n 
-0004208563 00000 n 
-0004208716 00000 n 
-0004208869 00000 n 
-0004209022 00000 n 
-0004209174 00000 n 
-0004209327 00000 n 
-0004209479 00000 n 
-0004209632 00000 n 
-0004209783 00000 n 
-0004209934 00000 n 
-0004210085 00000 n 
-0004210238 00000 n 
-0004210390 00000 n 
-0004210543 00000 n 
-0004210695 00000 n 
-0004210848 00000 n 
-0004211001 00000 n 
-0004211152 00000 n 
-0004211305 00000 n 
-0004211458 00000 n 
-0004211611 00000 n 
-0004211764 00000 n 
-0004211917 00000 n 
-0004212070 00000 n 
-0004212222 00000 n 
-0004212374 00000 n 
-0004212526 00000 n 
-0004212678 00000 n 
-0004212830 00000 n 
-0004212982 00000 n 
-0004213135 00000 n 
-0004213288 00000 n 
-0004213441 00000 n 
-0004213594 00000 n 
-0004213747 00000 n 
-0004213899 00000 n 
-0004214048 00000 n 
-0004214199 00000 n 
-0004214350 00000 n 
-0004214500 00000 n 
-0004214653 00000 n 
-0004214805 00000 n 
-0004214958 00000 n 
-0004215110 00000 n 
-0004215262 00000 n 
-0004215415 00000 n 
-0004215568 00000 n 
-0004215721 00000 n 
-0004219045 00000 n 
-0004215940 00000 n 
-0004195765 00000 n 
-0004194182 00000 n 
-0004215874 00000 n 
-0004786929 00000 n 
-0004219194 00000 n 
-0004219345 00000 n 
-0004219497 00000 n 
-0004219650 00000 n 
-0004219803 00000 n 
-0004219956 00000 n 
-0004220109 00000 n 
-0004220261 00000 n 
-0004220413 00000 n 
-0004220565 00000 n 
-0004220717 00000 n 
-0004220867 00000 n 
-0004221020 00000 n 
-0004221173 00000 n 
-0004221325 00000 n 
-0004221478 00000 n 
-0004221631 00000 n 
-0004221784 00000 n 
-0004221936 00000 n 
-0004222089 00000 n 
-0004222242 00000 n 
-0004222395 00000 n 
-0004222548 00000 n 
-0004222701 00000 n 
-0004222854 00000 n 
-0004223007 00000 n 
-0004223160 00000 n 
-0004223313 00000 n 
-0004223466 00000 n 
-0004223618 00000 n 
-0004223770 00000 n 
-0004223923 00000 n 
-0004224076 00000 n 
-0004224229 00000 n 
-0004224381 00000 n 
-0004224534 00000 n 
-0004224687 00000 n 
-0004224837 00000 n 
-0004224990 00000 n 
-0004225143 00000 n 
-0004225296 00000 n 
-0004225449 00000 n 
-0004225601 00000 n 
-0004225753 00000 n 
-0004225905 00000 n 
-0004226057 00000 n 
-0004226210 00000 n 
-0004226362 00000 n 
-0004226515 00000 n 
-0004226668 00000 n 
-0004226821 00000 n 
-0004226974 00000 n 
-0004227127 00000 n 
-0004227280 00000 n 
-0004227432 00000 n 
-0004227585 00000 n 
-0004227738 00000 n 
-0004227890 00000 n 
-0004228042 00000 n 
-0004228194 00000 n 
-0004228346 00000 n 
-0004228497 00000 n 
-0004228650 00000 n 
-0004228803 00000 n 
-0004228956 00000 n 
-0004229108 00000 n 
-0004229261 00000 n 
-0004229414 00000 n 
-0004229567 00000 n 
-0004229720 00000 n 
-0004229873 00000 n 
-0004230026 00000 n 
-0004230179 00000 n 
-0004230332 00000 n 
-0004230485 00000 n 
-0004230638 00000 n 
-0004230791 00000 n 
-0004230944 00000 n 
-0004231096 00000 n 
-0004231246 00000 n 
-0004231399 00000 n 
-0004231552 00000 n 
-0004231705 00000 n 
-0004231858 00000 n 
-0004232009 00000 n 
-0004232161 00000 n 
-0004232314 00000 n 
-0004232465 00000 n 
-0004232618 00000 n 
-0004232771 00000 n 
-0004232924 00000 n 
-0004233077 00000 n 
-0004233230 00000 n 
-0004233383 00000 n 
-0004233536 00000 n 
-0004233689 00000 n 
-0004233842 00000 n 
-0004233995 00000 n 
-0004234148 00000 n 
-0004234300 00000 n 
-0004234452 00000 n 
-0004234605 00000 n 
-0004234758 00000 n 
-0004234911 00000 n 
-0004235064 00000 n 
-0004235217 00000 n 
-0004235370 00000 n 
-0004235523 00000 n 
-0004235676 00000 n 
-0004235829 00000 n 
-0004235981 00000 n 
-0004236132 00000 n 
-0004236283 00000 n 
-0004236433 00000 n 
-0004236586 00000 n 
-0004236739 00000 n 
-0004236892 00000 n 
-0004237045 00000 n 
-0004237198 00000 n 
-0004237351 00000 n 
-0004237503 00000 n 
-0004237655 00000 n 
-0004237808 00000 n 
-0004237960 00000 n 
-0004238112 00000 n 
-0004238265 00000 n 
-0004238418 00000 n 
-0004238571 00000 n 
-0004238724 00000 n 
-0004241600 00000 n 
-0004238943 00000 n 
-0004217613 00000 n 
-0004216057 00000 n 
-0004238877 00000 n 
-0004241753 00000 n 
-0004241905 00000 n 
-0004242058 00000 n 
-0004242211 00000 n 
-0004242364 00000 n 
-0004242512 00000 n 
-0004242664 00000 n 
-0004242815 00000 n 
-0004242968 00000 n 
-0004243121 00000 n 
-0004243274 00000 n 
-0004243426 00000 n 
-0004243578 00000 n 
-0004243731 00000 n 
-0004243883 00000 n 
-0004244036 00000 n 
-0004244189 00000 n 
-0004244342 00000 n 
-0004244495 00000 n 
-0004244648 00000 n 
-0004244800 00000 n 
-0004244953 00000 n 
-0004245106 00000 n 
-0004245258 00000 n 
-0004245410 00000 n 
-0004245561 00000 n 
-0004245713 00000 n 
-0004245865 00000 n 
-0004246017 00000 n 
-0004246169 00000 n 
-0004246320 00000 n 
-0004246473 00000 n 
-0004246624 00000 n 
-0004246777 00000 n 
-0004246929 00000 n 
-0004247082 00000 n 
-0004247235 00000 n 
-0004247388 00000 n 
-0004247540 00000 n 
-0004247693 00000 n 
-0004247846 00000 n 
-0004247999 00000 n 
-0004248151 00000 n 
-0004248304 00000 n 
-0004248457 00000 n 
-0004248610 00000 n 
-0004248763 00000 n 
-0004248916 00000 n 
-0004249069 00000 n 
-0004249222 00000 n 
-0004249375 00000 n 
-0004249527 00000 n 
-0004249680 00000 n 
-0004249833 00000 n 
-0004249984 00000 n 
-0004250136 00000 n 
-0004250288 00000 n 
-0004250441 00000 n 
-0004250594 00000 n 
-0004250747 00000 n 
-0004250900 00000 n 
-0004251053 00000 n 
-0004251205 00000 n 
-0004251357 00000 n 
-0004251507 00000 n 
-0004251660 00000 n 
-0004251813 00000 n 
-0004251966 00000 n 
-0004252119 00000 n 
-0004252272 00000 n 
-0004252423 00000 n 
-0004252576 00000 n 
-0004252729 00000 n 
-0004252882 00000 n 
-0004253035 00000 n 
-0004253188 00000 n 
-0004253338 00000 n 
-0004253490 00000 n 
-0004253642 00000 n 
-0004253795 00000 n 
-0004253948 00000 n 
-0004254100 00000 n 
-0004254253 00000 n 
-0004254405 00000 n 
-0004254558 00000 n 
-0004254711 00000 n 
-0004254864 00000 n 
-0004255015 00000 n 
-0004255167 00000 n 
-0004255319 00000 n 
-0004255472 00000 n 
-0004255624 00000 n 
-0004255777 00000 n 
-0004255929 00000 n 
-0004256081 00000 n 
-0004256234 00000 n 
-0004256385 00000 n 
-0004256538 00000 n 
-0004256691 00000 n 
-0004259899 00000 n 
-0004256910 00000 n 
-0004240468 00000 n 
-0004239060 00000 n 
-0004256844 00000 n 
-0004260050 00000 n 
-0004260203 00000 n 
-0004260356 00000 n 
-0004260509 00000 n 
-0004260661 00000 n 
-0004260813 00000 n 
-0004260962 00000 n 
-0004261112 00000 n 
-0004261265 00000 n 
-0004261417 00000 n 
-0004261569 00000 n 
-0004261721 00000 n 
-0004261874 00000 n 
-0004262027 00000 n 
-0004262180 00000 n 
-0004262333 00000 n 
-0004262486 00000 n 
-0004262639 00000 n 
-0004262791 00000 n 
-0004262942 00000 n 
-0004263093 00000 n 
-0004263246 00000 n 
-0004263399 00000 n 
-0004263552 00000 n 
-0004263705 00000 n 
-0004263857 00000 n 
-0004264009 00000 n 
-0004264162 00000 n 
-0004264315 00000 n 
-0004264467 00000 n 
-0004264620 00000 n 
-0004264773 00000 n 
-0004264926 00000 n 
-0004265079 00000 n 
-0004265231 00000 n 
-0004265384 00000 n 
-0004265536 00000 n 
-0004265689 00000 n 
-0004265841 00000 n 
-0004265993 00000 n 
-0004266145 00000 n 
-0004266295 00000 n 
-0004266448 00000 n 
-0004266600 00000 n 
-0004266753 00000 n 
-0004266906 00000 n 
-0004267059 00000 n 
-0004267211 00000 n 
-0004267364 00000 n 
-0004267516 00000 n 
-0004267667 00000 n 
-0004267819 00000 n 
-0004267970 00000 n 
-0004268122 00000 n 
-0004268274 00000 n 
-0004268426 00000 n 
-0004268579 00000 n 
-0004268732 00000 n 
-0004268884 00000 n 
-0004269037 00000 n 
-0004269190 00000 n 
-0004269342 00000 n 
-0004269492 00000 n 
-0004269644 00000 n 
-0004269796 00000 n 
-0004269949 00000 n 
-0004270099 00000 n 
-0004270252 00000 n 
-0004270405 00000 n 
-0004270558 00000 n 
-0004270711 00000 n 
-0004270864 00000 n 
-0004271017 00000 n 
-0004271170 00000 n 
-0004271322 00000 n 
-0004271474 00000 n 
-0004271626 00000 n 
-0004271779 00000 n 
-0004271932 00000 n 
-0004272085 00000 n 
-0004272238 00000 n 
-0004272390 00000 n 
-0004272541 00000 n 
-0004272693 00000 n 
-0004272846 00000 n 
-0004272999 00000 n 
-0004273152 00000 n 
-0004273305 00000 n 
-0004273456 00000 n 
-0004273607 00000 n 
-0004273759 00000 n 
-0004273912 00000 n 
-0004274065 00000 n 
-0004274216 00000 n 
-0004274369 00000 n 
-0004274521 00000 n 
-0004274674 00000 n 
-0004274826 00000 n 
-0004274979 00000 n 
-0004275131 00000 n 
-0004275283 00000 n 
-0004275435 00000 n 
-0004275586 00000 n 
-0004275738 00000 n 
-0004279286 00000 n 
-0004279438 00000 n 
-0004275957 00000 n 
-0004258717 00000 n 
-0004257027 00000 n 
-0004275891 00000 n 
-0004279590 00000 n 
-0004279743 00000 n 
-0004279895 00000 n 
-0004280047 00000 n 
-0004280199 00000 n 
-0004280351 00000 n 
-0004280503 00000 n 
-0004280656 00000 n 
-0004280809 00000 n 
-0004280962 00000 n 
-0004281114 00000 n 
-0004281263 00000 n 
-0004281416 00000 n 
-0004281569 00000 n 
-0004281722 00000 n 
-0004281875 00000 n 
-0004282027 00000 n 
-0004282180 00000 n 
-0004282332 00000 n 
-0004282485 00000 n 
-0004282638 00000 n 
-0004282791 00000 n 
-0004282944 00000 n 
-0004283097 00000 n 
-0004283249 00000 n 
-0004283402 00000 n 
-0004283554 00000 n 
-0004283703 00000 n 
-0004283856 00000 n 
-0004284009 00000 n 
-0004284161 00000 n 
-0004284313 00000 n 
-0004284465 00000 n 
-0004284617 00000 n 
-0004284769 00000 n 
-0004284921 00000 n 
-0004285073 00000 n 
-0004285224 00000 n 
-0004285377 00000 n 
-0004285530 00000 n 
-0004285683 00000 n 
-0004285835 00000 n 
-0004285987 00000 n 
-0004286140 00000 n 
-0004286293 00000 n 
-0004286446 00000 n 
-0004286598 00000 n 
-0004286751 00000 n 
-0004286904 00000 n 
-0004287057 00000 n 
-0004287210 00000 n 
-0004287363 00000 n 
-0004287516 00000 n 
-0004287669 00000 n 
-0004287822 00000 n 
-0004287974 00000 n 
-0004288125 00000 n 
-0004288277 00000 n 
-0004288429 00000 n 
-0004288582 00000 n 
-0004288735 00000 n 
-0004288887 00000 n 
-0004289040 00000 n 
-0004289193 00000 n 
-0004289346 00000 n 
-0004289499 00000 n 
-0004289652 00000 n 
-0004289804 00000 n 
-0004289957 00000 n 
-0004290110 00000 n 
-0004290263 00000 n 
-0004290416 00000 n 
-0004290568 00000 n 
-0004290720 00000 n 
-0004290872 00000 n 
-0004291024 00000 n 
-0004291175 00000 n 
-0004291327 00000 n 
-0004291479 00000 n 
-0004291632 00000 n 
-0004291785 00000 n 
-0004291938 00000 n 
-0004292091 00000 n 
-0004292244 00000 n 
-0004292397 00000 n 
-0004292549 00000 n 
-0004292700 00000 n 
-0004292853 00000 n 
-0004293004 00000 n 
-0004293157 00000 n 
-0004293310 00000 n 
-0004293463 00000 n 
-0004293616 00000 n 
-0004293769 00000 n 
-0004293922 00000 n 
-0004294075 00000 n 
-0004294227 00000 n 
-0004294380 00000 n 
-0004294533 00000 n 
-0004294686 00000 n 
-0004294839 00000 n 
-0004294992 00000 n 
-0004295145 00000 n 
-0004295298 00000 n 
-0004295451 00000 n 
-0004295604 00000 n 
-0004295757 00000 n 
-0004295910 00000 n 
-0004296063 00000 n 
-0004296214 00000 n 
-0004296366 00000 n 
-0004296519 00000 n 
-0004296672 00000 n 
-0004296825 00000 n 
-0004296977 00000 n 
-0004297129 00000 n 
-0004297281 00000 n 
-0004297434 00000 n 
-0004297586 00000 n 
-0004297739 00000 n 
-0004297892 00000 n 
-0004298045 00000 n 
-0004298198 00000 n 
-0004298350 00000 n 
-0004298502 00000 n 
-0004298654 00000 n 
-0004298807 00000 n 
-0004298960 00000 n 
-0004299113 00000 n 
-0004299266 00000 n 
-0004299419 00000 n 
-0004299572 00000 n 
-0004299725 00000 n 
-0004299878 00000 n 
-0004300031 00000 n 
-0004300184 00000 n 
-0004300335 00000 n 
-0004300487 00000 n 
-0004300639 00000 n 
-0004300790 00000 n 
-0004300942 00000 n 
-0004301094 00000 n 
-0004301247 00000 n 
-0004301400 00000 n 
-0004301553 00000 n 
-0004301706 00000 n 
-0004301859 00000 n 
-0004302011 00000 n 
-0004302163 00000 n 
-0004302314 00000 n 
-0004302467 00000 n 
-0004305548 00000 n 
-0004302686 00000 n 
-0004277624 00000 n 
-0004276074 00000 n 
-0004302620 00000 n 
-0004305700 00000 n 
-0004305852 00000 n 
-0004306005 00000 n 
-0004306158 00000 n 
-0004306311 00000 n 
-0004306464 00000 n 
-0004306616 00000 n 
-0004306768 00000 n 
-0004306919 00000 n 
-0004307066 00000 n 
-0004307216 00000 n 
-0004307366 00000 n 
-0004307519 00000 n 
-0004307672 00000 n 
-0004307825 00000 n 
-0004307978 00000 n 
-0004308131 00000 n 
-0004308284 00000 n 
-0004308436 00000 n 
-0004308589 00000 n 
-0004308742 00000 n 
-0004308895 00000 n 
-0004309048 00000 n 
-0004309199 00000 n 
-0004309351 00000 n 
-0004309503 00000 n 
-0004309656 00000 n 
-0004309809 00000 n 
-0004309961 00000 n 
-0004310113 00000 n 
-0004310266 00000 n 
-0004310419 00000 n 
-0004310572 00000 n 
-0004310725 00000 n 
-0004310878 00000 n 
-0004311031 00000 n 
-0004311183 00000 n 
-0004311333 00000 n 
-0004311485 00000 n 
-0004311638 00000 n 
-0004311791 00000 n 
-0004311943 00000 n 
-0004312095 00000 n 
-0004312248 00000 n 
-0004312401 00000 n 
-0004312554 00000 n 
-0004312707 00000 n 
-0004312860 00000 n 
-0004313013 00000 n 
-0004313165 00000 n 
-0004313318 00000 n 
-0004313471 00000 n 
-0004313624 00000 n 
-0004313777 00000 n 
-0004313930 00000 n 
-0004314083 00000 n 
-0004314235 00000 n 
-0004314388 00000 n 
-0004314541 00000 n 
-0004314694 00000 n 
-0004314846 00000 n 
-0004314995 00000 n 
-0004315143 00000 n 
-0004315293 00000 n 
-0004315443 00000 n 
-0004315593 00000 n 
-0004315746 00000 n 
-0004315899 00000 n 
-0004316052 00000 n 
-0004316205 00000 n 
-0004316357 00000 n 
-0004316510 00000 n 
-0004316663 00000 n 
-0004316816 00000 n 
-0004316969 00000 n 
-0004317121 00000 n 
-0004317273 00000 n 
-0004317425 00000 n 
-0004317576 00000 n 
-0004317729 00000 n 
-0004317881 00000 n 
-0004318033 00000 n 
-0004318186 00000 n 
-0004318339 00000 n 
-0004318492 00000 n 
-0004318645 00000 n 
-0004318798 00000 n 
-0004318951 00000 n 
-0004319103 00000 n 
-0004319256 00000 n 
-0004319408 00000 n 
-0004319560 00000 n 
-0004319710 00000 n 
-0004319863 00000 n 
-0004320014 00000 n 
-0004320167 00000 n 
-0004320320 00000 n 
-0004320470 00000 n 
-0004320623 00000 n 
-0004320774 00000 n 
-0004320926 00000 n 
-0004321078 00000 n 
-0004324209 00000 n 
-0004324361 00000 n 
-0004324513 00000 n 
-0004324665 00000 n 
-0004324816 00000 n 
-0004324966 00000 n 
-0004325117 00000 n 
-0004325268 00000 n 
-0004325421 00000 n 
-0004325574 00000 n 
-0004325726 00000 n 
-0004325879 00000 n 
-0004326032 00000 n 
-0004326185 00000 n 
-0004326338 00000 n 
-0004326491 00000 n 
-0004326644 00000 n 
-0004321297 00000 n 
-0004304386 00000 n 
-0004302789 00000 n 
-0004321231 00000 n 
-0004326797 00000 n 
-0004326949 00000 n 
-0004327100 00000 n 
-0004327247 00000 n 
-0004327400 00000 n 
-0004327553 00000 n 
-0004327705 00000 n 
-0004327858 00000 n 
-0004328011 00000 n 
-0004328164 00000 n 
-0004328316 00000 n 
-0004328469 00000 n 
-0004328621 00000 n 
-0004328773 00000 n 
-0004328925 00000 n 
-0004329077 00000 n 
-0004329229 00000 n 
-0004329381 00000 n 
-0004329534 00000 n 
-0004329687 00000 n 
-0004329839 00000 n 
-0004329991 00000 n 
-0004330143 00000 n 
-0004330295 00000 n 
-0004330448 00000 n 
-0004330601 00000 n 
-0004330753 00000 n 
-0004330904 00000 n 
-0004331055 00000 n 
-0004331208 00000 n 
-0004331361 00000 n 
-0004331514 00000 n 
-0004331667 00000 n 
-0004331820 00000 n 
-0004331972 00000 n 
-0004332125 00000 n 
-0004332278 00000 n 
-0004332430 00000 n 
-0004332583 00000 n 
-0004332736 00000 n 
-0004332888 00000 n 
-0004333041 00000 n 
-0004333194 00000 n 
-0004333347 00000 n 
-0004333499 00000 n 
-0004333651 00000 n 
-0004333802 00000 n 
-0004333955 00000 n 
-0004334108 00000 n 
-0004334261 00000 n 
-0004334414 00000 n 
-0004334567 00000 n 
-0004334719 00000 n 
-0004334872 00000 n 
-0004335023 00000 n 
-0004335174 00000 n 
-0004335325 00000 n 
-0004335477 00000 n 
-0004335629 00000 n 
-0004335780 00000 n 
-0004335933 00000 n 
-0004336086 00000 n 
-0004336239 00000 n 
-0004336392 00000 n 
-0004336544 00000 n 
-0004336696 00000 n 
-0004336847 00000 n 
-0004336999 00000 n 
-0004337151 00000 n 
-0004337303 00000 n 
-0004337455 00000 n 
-0004337607 00000 n 
-0004337760 00000 n 
-0004337912 00000 n 
-0004338065 00000 n 
-0004338217 00000 n 
-0004338368 00000 n 
-0004338521 00000 n 
-0004338674 00000 n 
-0004338826 00000 n 
-0004338977 00000 n 
-0004339130 00000 n 
-0004339283 00000 n 
-0004339435 00000 n 
-0004339586 00000 n 
-0004339738 00000 n 
-0004339891 00000 n 
-0004340044 00000 n 
-0004340196 00000 n 
-0004343455 00000 n 
-0004340414 00000 n 
-0004323017 00000 n 
-0004321414 00000 n 
-0004340348 00000 n 
-0004787062 00000 n 
-0004343607 00000 n 
-0004343760 00000 n 
-0004343913 00000 n 
-0004344063 00000 n 
-0004344213 00000 n 
-0004344366 00000 n 
-0004344519 00000 n 
-0004344672 00000 n 
-0004344825 00000 n 
-0004344978 00000 n 
-0004345131 00000 n 
-0004345283 00000 n 
-0004345436 00000 n 
-0004345589 00000 n 
-0004345742 00000 n 
-0004345895 00000 n 
-0004346047 00000 n 
-0004346200 00000 n 
-0004346352 00000 n 
-0004346504 00000 n 
-0004346657 00000 n 
-0004346810 00000 n 
-0004346963 00000 n 
-0004347116 00000 n 
-0004347269 00000 n 
-0004347420 00000 n 
-0004347573 00000 n 
-0004347726 00000 n 
-0004347877 00000 n 
-0004348030 00000 n 
-0004348183 00000 n 
-0004348336 00000 n 
-0004348488 00000 n 
-0004348640 00000 n 
-0004348791 00000 n 
-0004348944 00000 n 
-0004349095 00000 n 
-0004349247 00000 n 
-0004349400 00000 n 
-0004349553 00000 n 
-0004349706 00000 n 
-0004349858 00000 n 
-0004350011 00000 n 
-0004350163 00000 n 
-0004350316 00000 n 
-0004350469 00000 n 
-0004350622 00000 n 
-0004350775 00000 n 
-0004350927 00000 n 
-0004351078 00000 n 
-0004351228 00000 n 
-0004351378 00000 n 
-0004351530 00000 n 
-0004351682 00000 n 
-0004351834 00000 n 
-0004351987 00000 n 
-0004352140 00000 n 
-0004352292 00000 n 
-0004352445 00000 n 
-0004352598 00000 n 
-0004352750 00000 n 
-0004352902 00000 n 
-0004353054 00000 n 
-0004353206 00000 n 
-0004353359 00000 n 
-0004353511 00000 n 
-0004353664 00000 n 
-0004353815 00000 n 
-0004353965 00000 n 
-0004354116 00000 n 
-0004354267 00000 n 
-0004354418 00000 n 
-0004354571 00000 n 
-0004354723 00000 n 
-0004354875 00000 n 
-0004355028 00000 n 
-0004355181 00000 n 
-0004355334 00000 n 
-0004355486 00000 n 
-0004355639 00000 n 
-0004355792 00000 n 
-0004355945 00000 n 
-0004356098 00000 n 
-0004356250 00000 n 
-0004356403 00000 n 
-0004356556 00000 n 
-0004356709 00000 n 
-0004356861 00000 n 
-0004357013 00000 n 
-0004357166 00000 n 
-0004357318 00000 n 
-0004357469 00000 n 
-0004357621 00000 n 
-0004357772 00000 n 
-0004357925 00000 n 
-0004358078 00000 n 
-0004358230 00000 n 
-0004358382 00000 n 
-0004358531 00000 n 
-0004358684 00000 n 
-0004358837 00000 n 
-0004358990 00000 n 
-0004359143 00000 n 
-0004359296 00000 n 
-0004359448 00000 n 
-0004359600 00000 n 
-0004363014 00000 n 
-0004359819 00000 n 
-0004342253 00000 n 
-0004340531 00000 n 
-0004359753 00000 n 
-0004363165 00000 n 
-0004363317 00000 n 
-0004363469 00000 n 
-0004363621 00000 n 
-0004363773 00000 n 
-0004363926 00000 n 
-0004364079 00000 n 
-0004364232 00000 n 
-0004364384 00000 n 
-0004364537 00000 n 
-0004364690 00000 n 
-0004364843 00000 n 
-0004364994 00000 n 
-0004365147 00000 n 
-0004365299 00000 n 
-0004365451 00000 n 
-0004365604 00000 n 
-0004365756 00000 n 
-0004365908 00000 n 
-0004366061 00000 n 
-0004366213 00000 n 
-0004366366 00000 n 
-0004366518 00000 n 
-0004366671 00000 n 
-0004366824 00000 n 
-0004366976 00000 n 
-0004367129 00000 n 
-0004367281 00000 n 
-0004367434 00000 n 
-0004367587 00000 n 
-0004367740 00000 n 
-0004367892 00000 n 
-0004368044 00000 n 
-0004368196 00000 n 
-0004368349 00000 n 
-0004368502 00000 n 
-0004368654 00000 n 
-0004368806 00000 n 
-0004368958 00000 n 
-0004369111 00000 n 
-0004369264 00000 n 
-0004369416 00000 n 
-0004369567 00000 n 
-0004369720 00000 n 
-0004369872 00000 n 
-0004370024 00000 n 
-0004370177 00000 n 
-0004370328 00000 n 
-0004370481 00000 n 
-0004370633 00000 n 
-0004370785 00000 n 
-0004370937 00000 n 
-0004371089 00000 n 
-0004371241 00000 n 
-0004371393 00000 n 
-0004371546 00000 n 
-0004371699 00000 n 
-0004371852 00000 n 
-0004372005 00000 n 
-0004372158 00000 n 
-0004372311 00000 n 
-0004372464 00000 n 
-0004372615 00000 n 
-0004372765 00000 n 
-0004372917 00000 n 
-0004373069 00000 n 
-0004373221 00000 n 
-0004373374 00000 n 
-0004373527 00000 n 
-0004373680 00000 n 
-0004373832 00000 n 
-0004373985 00000 n 
-0004374137 00000 n 
-0004374290 00000 n 
-0004374442 00000 n 
-0004374593 00000 n 
-0004374745 00000 n 
-0004374896 00000 n 
-0004375048 00000 n 
-0004375199 00000 n 
-0004375349 00000 n 
-0004375500 00000 n 
-0004375650 00000 n 
-0004375801 00000 n 
-0004375954 00000 n 
-0004376107 00000 n 
-0004376260 00000 n 
-0004376413 00000 n 
-0004376566 00000 n 
-0004376719 00000 n 
-0004376871 00000 n 
-0004377022 00000 n 
-0004377173 00000 n 
-0004377325 00000 n 
-0004377477 00000 n 
-0004377630 00000 n 
-0004377783 00000 n 
-0004377935 00000 n 
-0004378088 00000 n 
-0004378240 00000 n 
-0004378393 00000 n 
-0004378546 00000 n 
-0004378699 00000 n 
-0004378852 00000 n 
-0004379005 00000 n 
-0004379158 00000 n 
-0004379311 00000 n 
-0004379464 00000 n 
-0004379617 00000 n 
-0004379770 00000 n 
-0004379923 00000 n 
-0004380076 00000 n 
-0004380228 00000 n 
-0004380380 00000 n 
-0004380532 00000 n 
-0004380685 00000 n 
-0004380838 00000 n 
-0004380991 00000 n 
-0004381142 00000 n 
-0004381295 00000 n 
-0004381448 00000 n 
-0004381600 00000 n 
-0004381752 00000 n 
-0004381905 00000 n 
-0004382058 00000 n 
-0004382211 00000 n 
-0004382364 00000 n 
-0004382516 00000 n 
-0004382666 00000 n 
-0004382816 00000 n 
-0004382965 00000 n 
-0004383116 00000 n 
-0004383267 00000 n 
-0004383420 00000 n 
-0004383570 00000 n 
-0004383723 00000 n 
-0004383876 00000 n 
-0004384029 00000 n 
-0004384182 00000 n 
-0004384334 00000 n 
-0004384487 00000 n 
-0004384640 00000 n 
-0004387622 00000 n 
-0004384859 00000 n 
-0004361452 00000 n 
-0004359936 00000 n 
-0004384793 00000 n 
-0004387775 00000 n 
-0004387928 00000 n 
-0004388079 00000 n 
-0004388231 00000 n 
-0004388383 00000 n 
-0004388530 00000 n 
-0004388683 00000 n 
-0004388836 00000 n 
-0004388989 00000 n 
-0004389141 00000 n 
-0004389294 00000 n 
-0004389447 00000 n 
-0004389600 00000 n 
-0004389753 00000 n 
-0004389905 00000 n 
-0004390057 00000 n 
-0004390209 00000 n 
-0004390361 00000 n 
-0004390513 00000 n 
-0004390666 00000 n 
-0004390818 00000 n 
-0004390971 00000 n 
-0004391124 00000 n 
-0004391276 00000 n 
-0004391428 00000 n 
-0004391579 00000 n 
-0004391731 00000 n 
-0004391883 00000 n 
-0004392036 00000 n 
-0004392189 00000 n 
-0004392340 00000 n 
-0004392492 00000 n 
-0004392644 00000 n 
-0004392797 00000 n 
-0004392950 00000 n 
-0004393103 00000 n 
-0004393256 00000 n 
-0004393408 00000 n 
-0004393560 00000 n 
-0004393712 00000 n 
-0004393864 00000 n 
-0004394017 00000 n 
-0004394169 00000 n 
-0004394321 00000 n 
-0004394473 00000 n 
-0004394625 00000 n 
-0004394777 00000 n 
-0004394929 00000 n 
-0004395082 00000 n 
-0004395233 00000 n 
-0004395386 00000 n 
-0004395539 00000 n 
-0004395692 00000 n 
-0004395842 00000 n 
-0004395994 00000 n 
-0004396146 00000 n 
-0004396296 00000 n 
-0004396448 00000 n 
-0004396600 00000 n 
-0004396751 00000 n 
-0004396902 00000 n 
-0004397054 00000 n 
-0004397207 00000 n 
-0004397360 00000 n 
-0004397511 00000 n 
-0004397664 00000 n 
-0004397816 00000 n 
-0004397966 00000 n 
-0004398119 00000 n 
-0004398271 00000 n 
-0004398423 00000 n 
-0004398575 00000 n 
-0004398728 00000 n 
-0004398881 00000 n 
-0004399034 00000 n 
-0004399187 00000 n 
-0004399340 00000 n 
-0004399493 00000 n 
-0004399646 00000 n 
-0004399799 00000 n 
-0004399950 00000 n 
-0004400103 00000 n 
-0004400256 00000 n 
-0004400409 00000 n 
-0004400562 00000 n 
-0004400715 00000 n 
-0004400867 00000 n 
-0004401020 00000 n 
-0004401173 00000 n 
-0004401326 00000 n 
-0004401479 00000 n 
-0004401632 00000 n 
-0004401785 00000 n 
-0004401938 00000 n 
-0004402091 00000 n 
-0004402244 00000 n 
-0004402396 00000 n 
-0004402548 00000 n 
-0004402701 00000 n 
-0004402853 00000 n 
-0004403006 00000 n 
-0004403159 00000 n 
-0004403312 00000 n 
-0004403464 00000 n 
-0004403615 00000 n 
-0004403768 00000 n 
-0004403917 00000 n 
-0004404070 00000 n 
-0004404223 00000 n 
-0004407412 00000 n 
-0004404442 00000 n 
-0004386390 00000 n 
-0004384962 00000 n 
-0004404376 00000 n 
-0004407563 00000 n 
-0004407716 00000 n 
-0004407868 00000 n 
-0004408021 00000 n 
-0004408174 00000 n 
-0004408327 00000 n 
-0004408478 00000 n 
-0004408630 00000 n 
-0004408782 00000 n 
-0004408934 00000 n 
-0004409087 00000 n 
-0004409239 00000 n 
-0004409391 00000 n 
-0004409543 00000 n 
-0004409695 00000 n 
-0004409847 00000 n 
-0004409999 00000 n 
-0004410152 00000 n 
-0004410305 00000 n 
-0004410458 00000 n 
-0004410611 00000 n 
-0004410764 00000 n 
-0004410917 00000 n 
-0004411070 00000 n 
-0004411223 00000 n 
-0004411376 00000 n 
-0004411528 00000 n 
-0004411681 00000 n 
-0004411833 00000 n 
-0004411986 00000 n 
-0004412139 00000 n 
-0004412291 00000 n 
-0004412444 00000 n 
-0004412596 00000 n 
-0004412749 00000 n 
-0004412898 00000 n 
-0004413050 00000 n 
-0004413199 00000 n 
-0004413352 00000 n 
-0004413504 00000 n 
-0004413657 00000 n 
-0004413809 00000 n 
-0004413961 00000 n 
-0004414112 00000 n 
-0004414265 00000 n 
-0004414417 00000 n 
-0004414570 00000 n 
-0004414723 00000 n 
-0004414876 00000 n 
-0004415029 00000 n 
-0004415181 00000 n 
-0004415334 00000 n 
-0004415487 00000 n 
-0004415639 00000 n 
-0004415791 00000 n 
-0004415944 00000 n 
-0004416097 00000 n 
-0004416250 00000 n 
-0004416402 00000 n 
-0004416554 00000 n 
-0004416705 00000 n 
-0004416855 00000 n 
-0004417005 00000 n 
-0004417155 00000 n 
-0004417308 00000 n 
-0004417461 00000 n 
-0004417614 00000 n 
-0004417767 00000 n 
-0004417920 00000 n 
-0004418073 00000 n 
-0004418226 00000 n 
-0004418377 00000 n 
-0004418530 00000 n 
-0004418681 00000 n 
-0004418834 00000 n 
-0004418987 00000 n 
-0004419140 00000 n 
-0004419293 00000 n 
-0004419444 00000 n 
-0004419596 00000 n 
-0004419747 00000 n 
-0004419899 00000 n 
-0004420051 00000 n 
-0004420204 00000 n 
-0004420357 00000 n 
-0004420510 00000 n 
-0004420663 00000 n 
-0004420816 00000 n 
-0004420968 00000 n 
-0004421121 00000 n 
-0004421273 00000 n 
-0004421426 00000 n 
-0004421579 00000 n 
-0004421732 00000 n 
-0004421885 00000 n 
-0004422038 00000 n 
-0004422189 00000 n 
-0004422342 00000 n 
-0004422492 00000 n 
-0004422644 00000 n 
-0004422796 00000 n 
-0004422947 00000 n 
-0004423098 00000 n 
-0004423250 00000 n 
-0004423403 00000 n 
-0004423556 00000 n 
-0004423709 00000 n 
-0004423862 00000 n 
-0004424015 00000 n 
-0004424168 00000 n 
-0004424321 00000 n 
-0004424473 00000 n 
-0004424625 00000 n 
-0004424777 00000 n 
-0004428136 00000 n 
-0004424995 00000 n 
-0004406130 00000 n 
-0004404545 00000 n 
-0004424929 00000 n 
-0004428289 00000 n 
-0004428442 00000 n 
-0004428594 00000 n 
-0004428746 00000 n 
-0004428899 00000 n 
-0004429049 00000 n 
-0004429202 00000 n 
-0004429355 00000 n 
-0004429508 00000 n 
-0004429661 00000 n 
-0004429813 00000 n 
-0004429965 00000 n 
-0004430118 00000 n 
-0004430271 00000 n 
-0004430424 00000 n 
-0004430576 00000 n 
-0004430729 00000 n 
-0004430881 00000 n 
-0004431033 00000 n 
-0004431186 00000 n 
-0004431339 00000 n 
-0004431491 00000 n 
-0004431644 00000 n 
-0004431797 00000 n 
-0004431949 00000 n 
-0004432102 00000 n 
-0004432254 00000 n 
-0004432405 00000 n 
-0004432557 00000 n 
-0004432709 00000 n 
-0004432858 00000 n 
-0004433009 00000 n 
-0004433161 00000 n 
-0004433314 00000 n 
-0004433466 00000 n 
-0004433619 00000 n 
-0004433772 00000 n 
-0004433925 00000 n 
-0004434078 00000 n 
-0004434231 00000 n 
-0004434384 00000 n 
-0004434536 00000 n 
-0004434689 00000 n 
-0004434842 00000 n 
-0004434995 00000 n 
-0004435148 00000 n 
-0004435300 00000 n 
-0004435452 00000 n 
-0004435605 00000 n 
-0004435757 00000 n 
-0004435910 00000 n 
-0004436063 00000 n 
-0004436216 00000 n 
-0004436367 00000 n 
-0004436520 00000 n 
-0004436673 00000 n 
-0004436824 00000 n 
-0004436977 00000 n 
-0004437129 00000 n 
-0004437282 00000 n 
-0004437431 00000 n 
-0004437584 00000 n 
-0004437737 00000 n 
-0004437890 00000 n 
-0004438042 00000 n 
-0004438194 00000 n 
-0004438347 00000 n 
-0004438500 00000 n 
-0004438653 00000 n 
-0004438806 00000 n 
-0004438958 00000 n 
-0004439111 00000 n 
-0004439262 00000 n 
-0004439413 00000 n 
-0004439565 00000 n 
-0004439717 00000 n 
-0004439869 00000 n 
-0004440021 00000 n 
-0004440173 00000 n 
-0004440326 00000 n 
-0004440478 00000 n 
-0004440631 00000 n 
-0004440784 00000 n 
-0004440937 00000 n 
-0004441090 00000 n 
-0004441242 00000 n 
-0004441395 00000 n 
-0004441548 00000 n 
-0004441701 00000 n 
-0004441854 00000 n 
-0004442007 00000 n 
-0004442160 00000 n 
-0004442313 00000 n 
-0004442466 00000 n 
-0004442619 00000 n 
-0004442772 00000 n 
-0004442925 00000 n 
-0004443078 00000 n 
-0004443231 00000 n 
-0004443383 00000 n 
-0004443536 00000 n 
-0004443688 00000 n 
-0004443841 00000 n 
-0004443994 00000 n 
-0004444147 00000 n 
-0004444300 00000 n 
-0004444453 00000 n 
-0004444606 00000 n 
-0004444758 00000 n 
-0004444911 00000 n 
-0004445064 00000 n 
-0004445217 00000 n 
-0004445370 00000 n 
-0004445523 00000 n 
-0004445676 00000 n 
-0004445829 00000 n 
-0004445982 00000 n 
-0004449033 00000 n 
-0004446201 00000 n 
-0004426824 00000 n 
-0004425112 00000 n 
-0004446135 00000 n 
-0004449186 00000 n 
-0004449339 00000 n 
-0004449492 00000 n 
-0004449645 00000 n 
-0004449797 00000 n 
-0004449947 00000 n 
-0004450100 00000 n 
-0004450253 00000 n 
-0004450406 00000 n 
-0004450558 00000 n 
-0004450711 00000 n 
-0004450864 00000 n 
-0004451017 00000 n 
-0004451170 00000 n 
-0004451323 00000 n 
-0004451476 00000 n 
-0004451629 00000 n 
-0004451782 00000 n 
-0004451935 00000 n 
-0004452088 00000 n 
-0004452240 00000 n 
-0004452393 00000 n 
-0004452546 00000 n 
-0004452698 00000 n 
-0004452851 00000 n 
-0004453003 00000 n 
-0004453156 00000 n 
-0004453309 00000 n 
-0004453461 00000 n 
-0004453612 00000 n 
-0004453765 00000 n 
-0004453918 00000 n 
-0004454071 00000 n 
-0004454224 00000 n 
-0004454377 00000 n 
-0004454528 00000 n 
-0004454680 00000 n 
-0004454832 00000 n 
-0004454984 00000 n 
-0004455136 00000 n 
-0004455289 00000 n 
-0004455442 00000 n 
-0004455595 00000 n 
-0004455748 00000 n 
-0004455901 00000 n 
-0004456054 00000 n 
-0004456205 00000 n 
-0004456357 00000 n 
-0004456510 00000 n 
-0004456663 00000 n 
-0004456816 00000 n 
-0004456967 00000 n 
-0004457119 00000 n 
-0004457271 00000 n 
-0004457423 00000 n 
-0004457575 00000 n 
-0004457728 00000 n 
-0004457881 00000 n 
-0004458033 00000 n 
-0004458186 00000 n 
-0004458339 00000 n 
-0004458492 00000 n 
-0004458645 00000 n 
-0004458798 00000 n 
-0004458950 00000 n 
-0004459103 00000 n 
-0004459256 00000 n 
-0004459409 00000 n 
-0004459561 00000 n 
-0004459714 00000 n 
-0004459866 00000 n 
-0004460018 00000 n 
-0004460170 00000 n 
-0004460322 00000 n 
-0004460474 00000 n 
-0004460627 00000 n 
-0004460780 00000 n 
-0004460933 00000 n 
-0004461086 00000 n 
-0004461239 00000 n 
-0004461392 00000 n 
-0004461545 00000 n 
-0004461698 00000 n 
-0004461851 00000 n 
-0004462004 00000 n 
-0004462157 00000 n 
-0004462309 00000 n 
-0004462461 00000 n 
-0004462614 00000 n 
-0004462767 00000 n 
-0004462916 00000 n 
-0004463068 00000 n 
-0004463220 00000 n 
-0004463372 00000 n 
-0004463524 00000 n 
-0004463676 00000 n 
-0004463829 00000 n 
-0004463981 00000 n 
-0004464134 00000 n 
-0004464287 00000 n 
-0004464440 00000 n 
-0004464593 00000 n 
-0004464746 00000 n 
-0004464898 00000 n 
-0004465050 00000 n 
-0004465203 00000 n 
-0004468808 00000 n 
-0004465422 00000 n 
-0004447831 00000 n 
-0004446332 00000 n 
-0004465356 00000 n 
-0004787195 00000 n 
-0004468961 00000 n 
-0004469114 00000 n 
-0004469267 00000 n 
-0004469420 00000 n 
-0004469573 00000 n 
-0004469726 00000 n 
-0004469878 00000 n 
-0004470029 00000 n 
-0004470181 00000 n 
-0004470334 00000 n 
-0004470485 00000 n 
-0004470638 00000 n 
-0004470791 00000 n 
-0004470943 00000 n 
-0004471096 00000 n 
-0004471249 00000 n 
-0004471402 00000 n 
-0004471554 00000 n 
-0004471705 00000 n 
-0004471857 00000 n 
-0004472009 00000 n 
-0004472162 00000 n 
-0004472315 00000 n 
-0004472468 00000 n 
-0004472620 00000 n 
-0004472771 00000 n 
-0004472924 00000 n 
-0004473077 00000 n 
-0004473230 00000 n 
-0004473382 00000 n 
-0004473535 00000 n 
-0004473688 00000 n 
-0004473841 00000 n 
-0004473994 00000 n 
-0004474147 00000 n 
-0004474300 00000 n 
-0004474451 00000 n 
-0004474604 00000 n 
-0004474757 00000 n 
-0004474910 00000 n 
-0004475059 00000 n 
-0004475211 00000 n 
-0004475364 00000 n 
-0004475517 00000 n 
-0004475670 00000 n 
-0004475821 00000 n 
-0004475974 00000 n 
-0004476127 00000 n 
-0004476279 00000 n 
-0004476432 00000 n 
-0004476584 00000 n 
-0004476737 00000 n 
-0004476890 00000 n 
-0004477043 00000 n 
-0004477195 00000 n 
-0004477348 00000 n 
-0004477500 00000 n 
-0004477651 00000 n 
-0004477802 00000 n 
-0004477953 00000 n 
-0004478104 00000 n 
-0004478256 00000 n 
-0004478409 00000 n 
-0004478561 00000 n 
-0004478714 00000 n 
-0004478867 00000 n 
-0004479020 00000 n 
-0004479173 00000 n 
-0004479326 00000 n 
-0004479479 00000 n 
-0004479632 00000 n 
-0004479784 00000 n 
-0004479937 00000 n 
-0004480090 00000 n 
-0004480243 00000 n 
-0004480396 00000 n 
-0004480549 00000 n 
-0004480702 00000 n 
-0004480855 00000 n 
-0004481008 00000 n 
-0004481161 00000 n 
-0004481312 00000 n 
-0004481465 00000 n 
-0004481618 00000 n 
-0004481771 00000 n 
-0004481924 00000 n 
-0004482077 00000 n 
-0004482228 00000 n 
-0004482379 00000 n 
-0004482531 00000 n 
-0004482683 00000 n 
-0004482835 00000 n 
-0004482988 00000 n 
-0004483140 00000 n 
-0004483291 00000 n 
-0004483443 00000 n 
-0004483595 00000 n 
-0004483747 00000 n 
-0004483900 00000 n 
-0004484052 00000 n 
-0004484204 00000 n 
-0004484357 00000 n 
-0004484510 00000 n 
-0004484663 00000 n 
-0004484816 00000 n 
-0004484969 00000 n 
-0004485122 00000 n 
-0004485275 00000 n 
-0004485428 00000 n 
-0004485580 00000 n 
-0004485733 00000 n 
-0004485886 00000 n 
-0004486039 00000 n 
-0004486192 00000 n 
-0004486345 00000 n 
-0004486498 00000 n 
-0004486650 00000 n 
-0004486803 00000 n 
-0004486956 00000 n 
-0004487109 00000 n 
-0004487261 00000 n 
-0004487414 00000 n 
-0004487567 00000 n 
-0004487720 00000 n 
-0004487873 00000 n 
-0004488026 00000 n 
-0004488179 00000 n 
-0004488329 00000 n 
-0004488482 00000 n 
-0004488635 00000 n 
-0004488788 00000 n 
-0004488941 00000 n 
-0004489094 00000 n 
-0004489247 00000 n 
-0004489400 00000 n 
-0004489553 00000 n 
-0004489706 00000 n 
-0004489858 00000 n 
-0004493078 00000 n 
-0004490076 00000 n 
-0004467286 00000 n 
-0004465539 00000 n 
-0004490010 00000 n 
-0004493231 00000 n 
-0004493384 00000 n 
-0004493537 00000 n 
-0004493690 00000 n 
-0004493840 00000 n 
-0004493993 00000 n 
-0004494146 00000 n 
-0004494299 00000 n 
-0004494451 00000 n 
-0004494603 00000 n 
-0004494755 00000 n 
-0004494908 00000 n 
-0004495061 00000 n 
-0004495214 00000 n 
-0004495367 00000 n 
-0004495519 00000 n 
-0004495671 00000 n 
-0004495823 00000 n 
-0004495976 00000 n 
-0004496127 00000 n 
-0004496279 00000 n 
-0004496432 00000 n 
-0004496584 00000 n 
-0004496736 00000 n 
-0004496889 00000 n 
-0004497041 00000 n 
-0004497194 00000 n 
-0004497347 00000 n 
-0004497500 00000 n 
-0004497653 00000 n 
-0004497805 00000 n 
-0004497957 00000 n 
-0004498109 00000 n 
-0004498260 00000 n 
-0004498413 00000 n 
-0004498566 00000 n 
-0004498719 00000 n 
-0004498871 00000 n 
-0004499024 00000 n 
-0004499176 00000 n 
-0004499329 00000 n 
-0004499482 00000 n 
-0004499634 00000 n 
-0004499786 00000 n 
-0004499939 00000 n 
-0004500091 00000 n 
-0004500244 00000 n 
-0004500397 00000 n 
-0004500548 00000 n 
-0004500701 00000 n 
-0004500853 00000 n 
-0004501005 00000 n 
-0004501156 00000 n 
-0004501308 00000 n 
-0004501460 00000 n 
-0004501613 00000 n 
-0004501766 00000 n 
-0004501919 00000 n 
-0004502072 00000 n 
-0004502225 00000 n 
-0004502378 00000 n 
-0004502531 00000 n 
-0004502684 00000 n 
-0004502837 00000 n 
-0004502989 00000 n 
-0004503142 00000 n 
-0004503294 00000 n 
-0004503447 00000 n 
-0004503598 00000 n 
-0004503749 00000 n 
-0004503900 00000 n 
-0004504051 00000 n 
-0004504202 00000 n 
-0004504353 00000 n 
-0004504506 00000 n 
-0004504659 00000 n 
-0004504812 00000 n 
-0004504965 00000 n 
-0004505117 00000 n 
-0004505268 00000 n 
-0004505421 00000 n 
-0004505574 00000 n 
-0004505727 00000 n 
-0004505880 00000 n 
-0004506033 00000 n 
-0004506185 00000 n 
-0004506338 00000 n 
-0004506491 00000 n 
-0004506644 00000 n 
-0004506797 00000 n 
-0004506950 00000 n 
-0004507102 00000 n 
-0004507254 00000 n 
-0004507407 00000 n 
-0004507560 00000 n 
-0004507713 00000 n 
-0004507866 00000 n 
-0004508016 00000 n 
-0004508168 00000 n 
-0004508320 00000 n 
-0004508471 00000 n 
-0004508624 00000 n 
-0004508777 00000 n 
-0004508929 00000 n 
-0004509081 00000 n 
-0004509233 00000 n 
-0004509384 00000 n 
-0004509536 00000 n 
-0004509689 00000 n 
-0004509842 00000 n 
-0004509995 00000 n 
-0004510147 00000 n 
-0004510300 00000 n 
-0004510452 00000 n 
-0004510605 00000 n 
-0004510758 00000 n 
-0004510910 00000 n 
-0004511063 00000 n 
-0004512498 00000 n 
-0004512650 00000 n 
-0004511282 00000 n 
-0004491756 00000 n 
-0004490193 00000 n 
-0004511216 00000 n 
-0004512803 00000 n 
-0004512956 00000 n 
-0004513109 00000 n 
-0004513261 00000 n 
-0004513413 00000 n 
-0004513563 00000 n 
-0004513713 00000 n 
-0004513866 00000 n 
-0004514018 00000 n 
-0004514171 00000 n 
-0004514324 00000 n 
-0004514477 00000 n 
-0004514629 00000 n 
-0004514781 00000 n 
-0004514933 00000 n 
-0004515086 00000 n 
-0004515239 00000 n 
-0004515392 00000 n 
-0004515545 00000 n 
-0004515698 00000 n 
-0004515851 00000 n 
-0004516004 00000 n 
-0004516156 00000 n 
-0004516309 00000 n 
-0004516462 00000 n 
-0004516614 00000 n 
-0004516833 00000 n 
-0004512086 00000 n 
-0004511399 00000 n 
-0004516767 00000 n 
-0004517832 00000 n 
-0004517889 00000 n 
-0004518340 00000 n 
-0004518365 00000 n 
-0004518390 00000 n 
-0004518415 00000 n 
-0004518452 00000 n 
-0004518789 00000 n 
-0004518822 00000 n 
-0004518855 00000 n 
-0004519510 00000 n 
-0004520027 00000 n 
-0004520679 00000 n 
-0004521079 00000 n 
-0004521460 00000 n 
-0004521497 00000 n 
-0004521948 00000 n 
-0004522337 00000 n 
-0004522376 00000 n 
-0004522457 00000 n 
-0004522891 00000 n 
-0004523562 00000 n 
-0004523959 00000 n 
-0004524062 00000 n 
-0004524700 00000 n 
-0004525381 00000 n 
-0004526020 00000 n 
-0004526662 00000 n 
-0004527315 00000 n 
-0004527771 00000 n 
-0004528404 00000 n 
-0004530071 00000 n 
-0004530306 00000 n 
-0004547363 00000 n 
-0004547947 00000 n 
-0004557120 00000 n 
-0004557471 00000 n 
-0004561702 00000 n 
-0004561965 00000 n 
-0004569865 00000 n 
-0004570154 00000 n 
-0004578167 00000 n 
-0004578466 00000 n 
-0004592502 00000 n 
-0004592997 00000 n 
-0004594931 00000 n 
-0004595183 00000 n 
-0004597001 00000 n 
-0004597237 00000 n 
-0004599032 00000 n 
-0004599271 00000 n 
-0004618352 00000 n 
-0004618995 00000 n 
-0004625695 00000 n 
-0004626014 00000 n 
-0004629346 00000 n 
-0004629616 00000 n 
-0004633582 00000 n 
-0004633860 00000 n 
-0004646535 00000 n 
-0004647001 00000 n 
-0004648818 00000 n 
-0004649048 00000 n 
-0004650851 00000 n 
-0004651082 00000 n 
-0004661891 00000 n 
-0004662418 00000 n 
-0004666746 00000 n 
-0004667041 00000 n 
-0004676968 00000 n 
-0004677441 00000 n 
-0004691692 00000 n 
-0004692248 00000 n 
-0004699979 00000 n 
-0004700378 00000 n 
-0004702903 00000 n 
-0004703222 00000 n 
-0004722493 00000 n 
-0004723049 00000 n 
-0004724996 00000 n 
-0004725223 00000 n 
-0004727167 00000 n 
-0004727394 00000 n 
-0004729418 00000 n 
-0004729647 00000 n 
-0004746255 00000 n 
-0004746904 00000 n 
-0004759597 00000 n 
-0004760073 00000 n 
-0004761927 00000 n 
-0004787308 00000 n 
-0004787436 00000 n 
-0004787564 00000 n 
-0004787692 00000 n 
-0004787820 00000 n 
-0004787948 00000 n 
-0004788076 00000 n 
-0004788204 00000 n 
-0004788332 00000 n 
-0004788460 00000 n 
-0004788588 00000 n 
-0004788716 00000 n 
-0004788844 00000 n 
-0004788972 00000 n 
-0004789100 00000 n 
-0004789228 00000 n 
-0004789356 00000 n 
-0004789485 00000 n 
-0004789619 00000 n 
-0004789753 00000 n 
-0004789887 00000 n 
-0004790021 00000 n 
-0004790155 00000 n 
-0004790289 00000 n 
-0004790423 00000 n 
-0004790557 00000 n 
-0004790691 00000 n 
-0004790815 00000 n 
-0004790950 00000 n 
-0004791085 00000 n 
-0004791220 00000 n 
-0004791355 00000 n 
-0004791460 00000 n 
-0004791567 00000 n 
-0004883926 00000 n 
-0004884082 00000 n 
-0004884229 00000 n 
-0004884381 00000 n 
-0004884528 00000 n 
-0004884672 00000 n 
-0004884868 00000 n 
-0004885060 00000 n 
-0004885254 00000 n 
-0004885440 00000 n 
-0004885625 00000 n 
-0004885811 00000 n 
-0004885996 00000 n 
-0004886182 00000 n 
-0004886367 00000 n 
-0004886553 00000 n 
-0004886738 00000 n 
-0004886924 00000 n 
-0004887108 00000 n 
-0004887292 00000 n 
-0004887478 00000 n 
-0004887663 00000 n 
-0004887849 00000 n 
-0004888034 00000 n 
-0004888220 00000 n 
-0004888405 00000 n 
-0004888591 00000 n 
-0004888774 00000 n 
-0004888960 00000 n 
-0004889145 00000 n 
-0004889331 00000 n 
-0004889515 00000 n 
-0004889699 00000 n 
-0004889885 00000 n 
-0004890070 00000 n 
-0004890256 00000 n 
-0004890441 00000 n 
-0004890628 00000 n 
-0004890818 00000 n 
-0004891010 00000 n 
-0004891200 00000 n 
-0004891392 00000 n 
-0004891581 00000 n 
-0004891770 00000 n 
-0004891962 00000 n 
-0004892148 00000 n 
-0004892340 00000 n 
-0004892530 00000 n 
-0004892722 00000 n 
-0004892912 00000 n 
-0004893104 00000 n 
-0004893294 00000 n 
-0004893486 00000 n 
-0004893676 00000 n 
-0004893868 00000 n 
-0004894057 00000 n 
-0004894246 00000 n 
-0004894438 00000 n 
-0004894628 00000 n 
-0004894820 00000 n 
-0004895010 00000 n 
-0004895202 00000 n 
-0004895392 00000 n 
-0004895584 00000 n 
-0004895771 00000 n 
-0004895963 00000 n 
-0004896153 00000 n 
-0004896345 00000 n 
-0004896534 00000 n 
-0004896712 00000 n 
-0004896889 00000 n 
-0004897067 00000 n 
-0004897243 00000 n 
-0004897419 00000 n 
-0004897597 00000 n 
-0004897774 00000 n 
-0004897952 00000 n 
-0004898129 00000 n 
-0004898307 00000 n 
-0004898511 00000 n 
-0004898724 00000 n 
-0004898940 00000 n 
-0004899152 00000 n 
-0004899317 00000 n 
-0004899490 00000 n 
-0004899669 00000 n 
-0004899915 00000 n 
-0004900117 00000 n 
-0004900359 00000 n 
-0004900545 00000 n 
-0004900748 00000 n 
-0004900941 00000 n 
-0004901135 00000 n 
-0004901336 00000 n 
-0004901536 00000 n 
-0004901738 00000 n 
-0004901937 00000 n 
-0004902136 00000 n 
-0004902338 00000 n 
-0004902533 00000 n 
-0004902742 00000 n 
-0004902954 00000 n 
-0004903138 00000 n 
-0004903352 00000 n 
-0004903581 00000 n 
-0004903815 00000 n 
-0004904049 00000 n 
-0004904283 00000 n 
-0004904513 00000 n 
-0004904739 00000 n 
-0004904974 00000 n 
-0004905208 00000 n 
-0004905442 00000 n 
-0004905674 00000 n 
-0004905890 00000 n 
-0004906110 00000 n 
-0004906326 00000 n 
-0004906536 00000 n 
-0004906751 00000 n 
-0004906969 00000 n 
-0004907179 00000 n 
-0004907387 00000 n 
-0004907595 00000 n 
-0004907803 00000 n 
-0004908010 00000 n 
-0004908218 00000 n 
-0004908413 00000 n 
-0004908608 00000 n 
-0004908804 00000 n 
-0004908999 00000 n 
-0004909196 00000 n 
-0004909393 00000 n 
-0004909588 00000 n 
-0004909784 00000 n 
-0004909981 00000 n 
-0004910175 00000 n 
-0004910369 00000 n 
-0004910563 00000 n 
-0004910757 00000 n 
-0004910951 00000 n 
-0004911145 00000 n 
-0004911339 00000 n 
-0004911533 00000 n 
-0004911728 00000 n 
-0004911923 00000 n 
-0004912117 00000 n 
-0004912311 00000 n 
-0004912505 00000 n 
-0004912699 00000 n 
-0004912893 00000 n 
-0004913089 00000 n 
-0004913285 00000 n 
-0004913479 00000 n 
-0004913673 00000 n 
-0004913867 00000 n 
-0004914061 00000 n 
-0004914255 00000 n 
-0004914449 00000 n 
-0004914646 00000 n 
-0004914841 00000 n 
-0004915035 00000 n 
-0004915229 00000 n 
-0004915423 00000 n 
-0004915617 00000 n 
-0004915811 00000 n 
-0004916005 00000 n 
-0004916199 00000 n 
-0004916393 00000 n 
-0004916587 00000 n 
-0004916781 00000 n 
-0004916975 00000 n 
-0004917169 00000 n 
-0004917363 00000 n 
-0004917557 00000 n 
-0004917751 00000 n 
-0004917945 00000 n 
-0004918139 00000 n 
-0004918333 00000 n 
-0004918527 00000 n 
-0004918721 00000 n 
-0004918915 00000 n 
-0004919109 00000 n 
-0004919303 00000 n 
-0004919498 00000 n 
-0004919692 00000 n 
-0004919886 00000 n 
-0004920080 00000 n 
-0004920274 00000 n 
-0004920468 00000 n 
-0004920662 00000 n 
-0004920857 00000 n 
-0004921053 00000 n 
-0004921249 00000 n 
-0004921448 00000 n 
-0004921648 00000 n 
-0004921848 00000 n 
-0004922048 00000 n 
-0004922248 00000 n 
-0004922448 00000 n 
-0004922648 00000 n 
-0004922845 00000 n 
-0004923045 00000 n 
-0004923241 00000 n 
-0004923439 00000 n 
-0004923633 00000 n 
-0004923827 00000 n 
-0004924021 00000 n 
-0004924215 00000 n 
-0004924409 00000 n 
-0004924603 00000 n 
-0004924797 00000 n 
-0004924994 00000 n 
-0004925194 00000 n 
-0004925394 00000 n 
-0004925594 00000 n 
-0004925794 00000 n 
-0004925994 00000 n 
-0004926194 00000 n 
-0004926394 00000 n 
-0004926590 00000 n 
-0004926784 00000 n 
-0004926978 00000 n 
-0004927172 00000 n 
-0004927366 00000 n 
-0004927560 00000 n 
-0004927754 00000 n 
-0004927948 00000 n 
-0004928142 00000 n 
-0004928336 00000 n 
-0004928530 00000 n 
-0004928724 00000 n 
-0004928918 00000 n 
-0004929112 00000 n 
-0004929306 00000 n 
-0004929500 00000 n 
-0004929698 00000 n 
-0004929898 00000 n 
-0004930098 00000 n 
-0004930298 00000 n 
-0004930498 00000 n 
-0004930698 00000 n 
-0004930898 00000 n 
-0004931098 00000 n 
-0004931298 00000 n 
-0004931498 00000 n 
-0004931698 00000 n 
-0004931898 00000 n 
-0004932098 00000 n 
-0004932298 00000 n 
-0004932498 00000 n 
-0004932698 00000 n 
-0004932898 00000 n 
-0004933098 00000 n 
-0004933298 00000 n 
-0004933498 00000 n 
-0004933698 00000 n 
-0004933898 00000 n 
-0004934098 00000 n 
-0004934298 00000 n 
-0004934498 00000 n 
-0004934698 00000 n 
-0004934898 00000 n 
-0004935098 00000 n 
-0004935298 00000 n 
-0004935498 00000 n 
-0004935708 00000 n 
-0004935937 00000 n 
-0004936156 00000 n 
-0004936368 00000 n 
-0004936598 00000 n 
-0004936856 00000 n 
-0004937114 00000 n 
-0004937372 00000 n 
-0004937630 00000 n 
-0004937888 00000 n 
-0004938146 00000 n 
-0004938397 00000 n 
-0004938639 00000 n 
-0004938897 00000 n 
-0004939155 00000 n 
-0004939419 00000 n 
-0004939683 00000 n 
-0004939933 00000 n 
-0004940200 00000 n 
-0004940472 00000 n 
-0004940735 00000 n 
-0004940990 00000 n 
-0004941240 00000 n 
-0004941480 00000 n 
-0004941719 00000 n 
-0004941969 00000 n 
-0004942218 00000 n 
-0004942468 00000 n 
-0004942717 00000 n 
-0004942962 00000 n 
-0004943213 00000 n 
-0004943469 00000 n 
-0004943725 00000 n 
-0004943987 00000 n 
-0004944249 00000 n 
-0004944513 00000 n 
-0004944773 00000 n 
-0004945031 00000 n 
-0004945289 00000 n 
-0004945548 00000 n 
-0004945812 00000 n 
-0004946075 00000 n 
-0004946334 00000 n 
-0004946593 00000 n 
-0004946857 00000 n 
-0004947120 00000 n 
-0004947379 00000 n 
-0004947635 00000 n 
-0004947891 00000 n 
-0004948147 00000 n 
-0004948398 00000 n 
-0004948648 00000 n 
-0004948897 00000 n 
-0004949147 00000 n 
-0004949395 00000 n 
-0004949637 00000 n 
-0004949893 00000 n 
-0004950149 00000 n 
-0004950397 00000 n 
-0004950645 00000 n 
-0004950895 00000 n 
-0004951139 00000 n 
-0004951381 00000 n 
-0004951623 00000 n 
-0004951860 00000 n 
-0004952105 00000 n 
-0004952355 00000 n 
-0004952601 00000 n 
-0004952843 00000 n 
-0004953085 00000 n 
-0004953327 00000 n 
-0004953570 00000 n 
-0004953812 00000 n 
-0004954058 00000 n 
-0004954300 00000 n 
-0004954542 00000 n 
-0004954777 00000 n 
-0004955014 00000 n 
-0004955256 00000 n 
-0004955500 00000 n 
-0004955742 00000 n 
-0004955992 00000 n 
-0004956236 00000 n 
-0004956478 00000 n 
-0004956720 00000 n 
-0004956962 00000 n 
-0004957201 00000 n 
-0004957435 00000 n 
-0004957675 00000 n 
-0004957917 00000 n 
-0004958157 00000 n 
-0004958399 00000 n 
-0004958635 00000 n 
-0004958873 00000 n 
-0004959120 00000 n 
-0004959364 00000 n 
-0004959609 00000 n 
-0004959859 00000 n 
-0004960108 00000 n 
-0004960358 00000 n 
-0004960600 00000 n 
-0004960842 00000 n 
-0004961084 00000 n 
-0004961326 00000 n 
-0004961572 00000 n 
-0004961814 00000 n 
-0004962064 00000 n 
-0004962309 00000 n 
-0004962553 00000 n 
-0004962803 00000 n 
-0004963045 00000 n 
-0004963291 00000 n 
-0004963533 00000 n 
-0004963774 00000 n 
-0004964016 00000 n 
-0004964257 00000 n 
-0004964497 00000 n 
-0004964731 00000 n 
-0004964973 00000 n 
-0004965215 00000 n 
-0004965457 00000 n 
-0004965698 00000 n 
-0004965935 00000 n 
-0004966172 00000 n 
-0004966414 00000 n 
-0004966656 00000 n 
-0004966898 00000 n 
-0004967140 00000 n 
-0004967381 00000 n 
-0004967623 00000 n 
-0004967864 00000 n 
-0004968101 00000 n 
-0004968342 00000 n 
-0004968592 00000 n 
-0004968841 00000 n 
-0004969091 00000 n 
-0004969333 00000 n 
-0004969578 00000 n 
-0004969824 00000 n 
-0004970066 00000 n 
-0004970312 00000 n 
-0004970554 00000 n 
-0004970804 00000 n 
-0004971053 00000 n 
-0004971299 00000 n 
-0004971541 00000 n 
-0004971789 00000 n 
-0004972037 00000 n 
-0004972281 00000 n 
-0004972527 00000 n 
-0004972775 00000 n 
-0004973020 00000 n 
-0004973262 00000 n 
-0004973503 00000 n 
-0004973745 00000 n 
-0004973979 00000 n 
-0004974229 00000 n 
-0004974477 00000 n 
-0004974725 00000 n 
-0004974973 00000 n 
-0004975234 00000 n 
-0004975436 00000 n 
-0004975625 00000 n 
-0004975847 00000 n 
-0004976065 00000 n 
-0004976246 00000 n 
-0004976432 00000 n 
-0004976616 00000 n 
-0004976800 00000 n 
-0004976986 00000 n 
-0004977171 00000 n 
-0004977357 00000 n 
-0004977542 00000 n 
-0004977728 00000 n 
-0004977913 00000 n 
-0004978099 00000 n 
-0004978284 00000 n 
-0004978470 00000 n 
-0004978654 00000 n 
-0004978838 00000 n 
-0004979024 00000 n 
-0004979209 00000 n 
-0004979395 00000 n 
-0004979578 00000 n 
-0004979764 00000 n 
-0004979949 00000 n 
-0004980135 00000 n 
-0004980320 00000 n 
-0004980506 00000 n 
-0004980691 00000 n 
-0004980877 00000 n 
-0004981061 00000 n 
-0004981245 00000 n 
-0004981431 00000 n 
-0004981616 00000 n 
-0004981802 00000 n 
-0004981987 00000 n 
-0004982173 00000 n 
-0004982358 00000 n 
-0004982544 00000 n 
-0004982729 00000 n 
-0004982915 00000 n 
-0004983096 00000 n 
-0004983282 00000 n 
-0004983466 00000 n 
-0004983650 00000 n 
-0004983836 00000 n 
-0004984021 00000 n 
-0004984207 00000 n 
-0004984392 00000 n 
-0004984578 00000 n 
-0004984763 00000 n 
-0004984949 00000 n 
-0004985134 00000 n 
-0004985320 00000 n 
-0004985504 00000 n 
-0004985688 00000 n 
-0004985874 00000 n 
-0004986059 00000 n 
-0004986245 00000 n 
-0004986428 00000 n 
-0004986614 00000 n 
-0004986799 00000 n 
-0004986985 00000 n 
-0004987170 00000 n 
-0004987356 00000 n 
-0004987541 00000 n 
-0004987727 00000 n 
-0004987911 00000 n 
-0004988095 00000 n 
-0004988281 00000 n 
-0004988466 00000 n 
-0004988652 00000 n 
-0004988837 00000 n 
-0004989023 00000 n 
-0004989208 00000 n 
-0004989394 00000 n 
-0004989579 00000 n 
-0004989765 00000 n 
-0004989946 00000 n 
-0004990132 00000 n 
-0004990316 00000 n 
-0004990500 00000 n 
-0004990686 00000 n 
-0004990871 00000 n 
-0004991057 00000 n 
-0004991244 00000 n 
-0004991436 00000 n 
-0004991626 00000 n 
-0004991818 00000 n 
-0004992008 00000 n 
-0004992200 00000 n 
-0004992389 00000 n 
-0004992578 00000 n 
-0004992770 00000 n 
-0004992960 00000 n 
-0004993152 00000 n 
-0004993339 00000 n 
-0004993531 00000 n 
-0004993721 00000 n 
-0004993913 00000 n 
-0004994103 00000 n 
-0004994295 00000 n 
-0004994485 00000 n 
-0004994677 00000 n 
-0004994866 00000 n 
-0004995055 00000 n 
-0004995247 00000 n 
-0004995437 00000 n 
-0004995629 00000 n 
-0004995819 00000 n 
-0004996011 00000 n 
-0004996201 00000 n 
-0004996393 00000 n 
-0004996583 00000 n 
-0004996775 00000 n 
-0004996960 00000 n 
-0004997152 00000 n 
-0004997341 00000 n 
-0004997530 00000 n 
-0004997722 00000 n 
-0004997912 00000 n 
-0004998104 00000 n 
-0004998294 00000 n 
-0004998486 00000 n 
-0004998676 00000 n 
-0004998868 00000 n 
-0004999058 00000 n 
-0004999250 00000 n 
-0004999439 00000 n 
-0004999628 00000 n 
-0004999820 00000 n 
-0005000010 00000 n 
-0005000202 00000 n 
-0005000389 00000 n 
-0005000581 00000 n 
-0005000771 00000 n 
-0005000963 00000 n 
-0005001153 00000 n 
-0005001345 00000 n 
-0005001535 00000 n 
-0005001727 00000 n 
-0005001916 00000 n 
-0005002105 00000 n 
-0005002297 00000 n 
-0005002487 00000 n 
-0005002679 00000 n 
-0005002869 00000 n 
-0005003061 00000 n 
-0005003251 00000 n 
-0005003443 00000 n 
-0005003633 00000 n 
-0005003809 00000 n 
-0005003985 00000 n 
-0005004167 00000 n 
-0005004353 00000 n 
-0005004539 00000 n 
-0005004721 00000 n 
-0005004911 00000 n 
-0005005102 00000 n 
-0005005296 00000 n 
-0005005494 00000 n 
-0005005692 00000 n 
-0005005878 00000 n 
-0005006046 00000 n 
-0005006259 00000 n 
-0005006478 00000 n 
-0005006672 00000 n 
-0005006938 00000 n 
-0005007171 00000 n 
-0005007375 00000 n 
-0005007583 00000 n 
-0005007795 00000 n 
-0005008011 00000 n 
-0005008227 00000 n 
-0005008443 00000 n 
-0005008659 00000 n 
-0005008869 00000 n 
-0005009068 00000 n 
-0005009280 00000 n 
-0005009492 00000 n 
-0005009704 00000 n 
-0005009927 00000 n 
-0005010144 00000 n 
-0005010362 00000 n 
-0005010580 00000 n 
-0005010798 00000 n 
-0005011016 00000 n 
-0005011234 00000 n 
-0005011445 00000 n 
-0005011669 00000 n 
-0005011887 00000 n 
-0005012110 00000 n 
-0005012336 00000 n 
-0005012555 00000 n 
-0005012773 00000 n 
-0005012991 00000 n 
-0005013209 00000 n 
-0005013427 00000 n 
-0005013645 00000 n 
-0005013863 00000 n 
-0005014072 00000 n 
-0005014287 00000 n 
-0005014505 00000 n 
-0005014723 00000 n 
-0005014941 00000 n 
-0005015150 00000 n 
-0005015361 00000 n 
-0005015579 00000 n 
-0005015797 00000 n 
-0005016015 00000 n 
-0005016235 00000 n 
-0005016456 00000 n 
-0005016674 00000 n 
-0005016892 00000 n 
-0005017096 00000 n 
-0005017300 00000 n 
-0005017504 00000 n 
-0005017717 00000 n 
-0005017907 00000 n 
-0005018115 00000 n 
-0005018353 00000 n 
-0005018600 00000 n 
-0005018852 00000 n 
-0005019104 00000 n 
-0005019356 00000 n 
-0005019608 00000 n 
-0005019860 00000 n 
-0005020112 00000 n 
-0005020364 00000 n 
-0005020621 00000 n 
-0005020879 00000 n 
-0005021137 00000 n 
-0005021395 00000 n 
-0005021653 00000 n 
-0005021911 00000 n 
-0005022169 00000 n 
-0005022427 00000 n 
-0005022685 00000 n 
-0005022943 00000 n 
-0005023201 00000 n 
-0005023456 00000 n 
-0005023711 00000 n 
-0005023969 00000 n 
-0005024227 00000 n 
-0005024485 00000 n 
-0005024743 00000 n 
-0005025006 00000 n 
-0005025280 00000 n 
-0005025546 00000 n 
-0005025812 00000 n 
-0005026078 00000 n 
-0005026344 00000 n 
-0005026610 00000 n 
-0005026882 00000 n 
-0005027154 00000 n 
-0005027422 00000 n 
-0005027683 00000 n 
-0005027941 00000 n 
-0005028199 00000 n 
-0005028463 00000 n 
-0005028727 00000 n 
-0005028985 00000 n 
-0005029243 00000 n 
-0005029501 00000 n 
-0005029759 00000 n 
-0005030017 00000 n 
-0005030275 00000 n 
-0005030533 00000 n 
-0005030791 00000 n 
-0005031049 00000 n 
-0005031307 00000 n 
-0005031565 00000 n 
-0005031823 00000 n 
-0005032081 00000 n 
-0005032336 00000 n 
-0005032580 00000 n 
-0005032831 00000 n 
-0005033089 00000 n 
-0005033347 00000 n 
-0005033605 00000 n 
-0005033863 00000 n 
-0005034121 00000 n 
-0005034379 00000 n 
-0005034632 00000 n 
-0005034876 00000 n 
-0005035127 00000 n 
-0005035385 00000 n 
-0005035643 00000 n 
-0005035901 00000 n 
-0005036150 00000 n 
-0005036394 00000 n 
-0005036638 00000 n 
-0005036882 00000 n 
-0005037126 00000 n 
-0005037370 00000 n 
-0005037648 00000 n 
-0005037942 00000 n 
-0005038234 00000 n 
-0005038530 00000 n 
-0005038828 00000 n 
-0005039126 00000 n 
-0005039424 00000 n 
-0005039722 00000 n 
-0005040015 00000 n 
-0005040302 00000 n 
-0005040600 00000 n 
-0005040898 00000 n 
-0005041201 00000 n 
-0005041504 00000 n 
-0005041802 00000 n 
-0005042100 00000 n 
-0005042398 00000 n 
-0005042696 00000 n 
-0005042994 00000 n 
-0005043281 00000 n 
-0005043579 00000 n 
-0005043877 00000 n 
-0005044175 00000 n 
-0005044470 00000 n 
-0005044763 00000 n 
-0005045054 00000 n 
-0005045338 00000 n 
-0005045559 00000 n 
-0005045761 00000 n 
-0005045963 00000 n 
-0005046165 00000 n 
-0005046367 00000 n 
-0005046566 00000 n 
-0005046763 00000 n 
-0005046971 00000 n 
-0005047177 00000 n 
-0005047378 00000 n 
-0005047563 00000 n 
-0005047685 00000 n 
-0005047803 00000 n 
-0005047933 00000 n 
-0005048058 00000 n 
-0005048183 00000 n 
-0005048308 00000 n 
-0005048432 00000 n 
-0005048557 00000 n 
-0005048682 00000 n 
-0005048807 00000 n 
-0005048931 00000 n 
-0005049056 00000 n 
-0005049180 00000 n 
-0005049303 00000 n 
-0005049426 00000 n 
-0005049553 00000 n 
-0005049682 00000 n 
-0005049807 00000 n 
-0005049942 00000 n 
-0005050072 00000 n 
-0005050201 00000 n 
-0005050330 00000 n 
-0005050457 00000 n 
-0005050584 00000 n 
-0005050711 00000 n 
-0005050838 00000 n 
-0005050965 00000 n 
-0005051092 00000 n 
-0005051219 00000 n 
-0005051346 00000 n 
-0005051473 00000 n 
-0005051600 00000 n 
-0005051727 00000 n 
-0005051854 00000 n 
-0005051981 00000 n 
-0005052108 00000 n 
-0005052235 00000 n 
-0005052362 00000 n 
-0005052489 00000 n 
-0005052616 00000 n 
-0005052743 00000 n 
-0005052870 00000 n 
-0005052997 00000 n 
-0005053124 00000 n 
-0005053251 00000 n 
-0005053386 00000 n 
-0005053527 00000 n 
-0005053667 00000 n 
-0005053806 00000 n 
-0005053944 00000 n 
-0005054085 00000 n 
-0005054228 00000 n 
-0005054370 00000 n 
-0005054511 00000 n 
-0005054650 00000 n 
-0005054791 00000 n 
-0005054931 00000 n 
-0005055070 00000 n 
-0005055209 00000 n 
-0005055348 00000 n 
-0005055487 00000 n 
-0005055626 00000 n 
-0005055765 00000 n 
-0005055904 00000 n 
-0005056043 00000 n 
-0005056182 00000 n 
-0005056320 00000 n 
-0005056459 00000 n 
-0005056600 00000 n 
-0005056740 00000 n 
-0005056878 00000 n 
-0005057010 00000 n 
-0005057136 00000 n 
-0005057261 00000 n 
-0005057385 00000 n 
-0005057510 00000 n 
-0005057635 00000 n 
-0005057760 00000 n 
-0005057885 00000 n 
-0005058009 00000 n 
-0005058134 00000 n 
-0005058259 00000 n 
-0005058384 00000 n 
-0005058508 00000 n 
-0005058633 00000 n 
-0005058758 00000 n 
-0005058883 00000 n 
-0005059007 00000 n 
-0005059132 00000 n 
-0005059257 00000 n 
-0005059382 00000 n 
-0005059505 00000 n 
-0005059630 00000 n 
-0005059755 00000 n 
-0005059880 00000 n 
-0005060005 00000 n 
-0005060130 00000 n 
-0005060253 00000 n 
-0005060375 00000 n 
-0005060500 00000 n 
-0005060631 00000 n 
-0005060763 00000 n 
-0005060897 00000 n 
-0005061031 00000 n 
-0005061164 00000 n 
-0005061297 00000 n 
-0005061431 00000 n 
-0005061564 00000 n 
-0005061701 00000 n 
-0005061844 00000 n 
-0005061987 00000 n 
-0005062129 00000 n 
-0005062273 00000 n 
-0005062419 00000 n 
-0005062563 00000 n 
-0005062706 00000 n 
-0005062849 00000 n 
-0005062992 00000 n 
-0005063135 00000 n 
-0005063278 00000 n 
-0005063420 00000 n 
-0005063567 00000 n 
-0005063720 00000 n 
-0005063873 00000 n 
-0005064025 00000 n 
-0005064165 00000 n 
-0005064291 00000 n 
-0005064385 00000 n 
-0005064505 00000 n 
-0005064629 00000 n 
-0005064758 00000 n 
-0005064889 00000 n 
-0005065016 00000 n 
-0005065143 00000 n 
-0005065270 00000 n 
-0005065402 00000 n 
-0005065540 00000 n 
-0005065680 00000 n 
-0005065818 00000 n 
-0005065949 00000 n 
-0005066074 00000 n 
-0005066198 00000 n 
-0005066323 00000 n 
-0005066446 00000 n 
-0005066573 00000 n 
-0005066711 00000 n 
-0005066854 00000 n 
-0005066996 00000 n 
-0005067128 00000 n 
-0005067202 00000 n 
-0005067323 00000 n 
-0005067449 00000 n 
-0005067583 00000 n 
-0005067697 00000 n 
-0005067797 00000 n 
-0005067839 00000 n 
-0005068192 00000 n 
+0000402515 00000 n 
+0000401713 00000 n 
+0000399844 00000 n 
+0000402197 00000 n 
+0000402261 00000 n 
+0000402325 00000 n 
+0000402028 00000 n 
+0004764184 00000 n 
+0000402451 00000 n 
+0000403911 00000 n 
+0000403731 00000 n 
+0000402659 00000 n 
+0000403847 00000 n 
+0004767844 00000 n 
+0000406459 00000 n 
+0000406023 00000 n 
+0000404055 00000 n 
+0000406139 00000 n 
+0000406203 00000 n 
+0000406267 00000 n 
+0000406331 00000 n 
+0000406395 00000 n 
+0000409237 00000 n 
+0000408929 00000 n 
+0000406575 00000 n 
+0000409045 00000 n 
+0000409109 00000 n 
+0000409173 00000 n 
+0000411782 00000 n 
+0000412143 00000 n 
+0000411645 00000 n 
+0000409353 00000 n 
+0000411951 00000 n 
+0000412015 00000 n 
+0000412079 00000 n 
+0004764038 00000 n 
+0004763446 00000 n 
+0004766413 00000 n 
+0000414096 00000 n 
+0000413916 00000 n 
+0000412329 00000 n 
+0000414032 00000 n 
+0000414589 00000 n 
+0000414411 00000 n 
+0000414198 00000 n 
+0000414880 00000 n 
+0000414764 00000 n 
+0000414663 00000 n 
+0004767970 00000 n 
+0000415846 00000 n 
+0000415412 00000 n 
+0000414922 00000 n 
+0000415528 00000 n 
+0000415592 00000 n 
+0000415718 00000 n 
+0000415782 00000 n 
+0000416229 00000 n 
+0000416049 00000 n 
+0000415948 00000 n 
+0000416165 00000 n 
+0000418246 00000 n 
+0000417948 00000 n 
+0000418979 00000 n 
+0000417793 00000 n 
+0000416271 00000 n 
+0000418412 00000 n 
+0004764925 00000 n 
+0000418664 00000 n 
+0000418096 00000 n 
+0000418790 00000 n 
+0000418916 00000 n 
+0000422362 00000 n 
+0000423285 00000 n 
+0000422225 00000 n 
+0000419165 00000 n 
+0000422520 00000 n 
+0000422648 00000 n 
+0000422712 00000 n 
+0004766561 00000 n 
+0000422775 00000 n 
+0000422839 00000 n 
+0000422903 00000 n 
+0000422967 00000 n 
+0000423031 00000 n 
+0000423095 00000 n 
+0000423158 00000 n 
+0000423222 00000 n 
+0000425292 00000 n 
+0000425450 00000 n 
+0000425924 00000 n 
+0000425146 00000 n 
+0000423414 00000 n 
+0000425609 00000 n 
+0000425735 00000 n 
+0000425860 00000 n 
+0000428741 00000 n 
+0000450195 00000 n 
+0000428805 00000 n 
+0000428497 00000 n 
+0000426054 00000 n 
+0000428613 00000 n 
+0004768096 00000 n 
+0000431592 00000 n 
+0000432452 00000 n 
+0000431455 00000 n 
+0000428907 00000 n 
+0000431750 00000 n 
+0004763148 00000 n 
+0000431876 00000 n 
+0000432004 00000 n 
+0000432068 00000 n 
+0000432132 00000 n 
+0000432196 00000 n 
+0000432260 00000 n 
+0000432324 00000 n 
+0000432388 00000 n 
+0000434785 00000 n 
+0000435132 00000 n 
+0000434648 00000 n 
+0000432623 00000 n 
+0000434942 00000 n 
+0000435068 00000 n 
+0000437506 00000 n 
+0000437844 00000 n 
+0000438454 00000 n 
+0000437342 00000 n 
+0000435276 00000 n 
+0000438138 00000 n 
+0000438264 00000 n 
+0000437675 00000 n 
+0000437992 00000 n 
+0000438390 00000 n 
+0000440518 00000 n 
+0000440086 00000 n 
+0000438612 00000 n 
+0000440202 00000 n 
+0000440328 00000 n 
+0000440454 00000 n 
+0000442942 00000 n 
+0000443095 00000 n 
+0000443247 00000 n 
+0000443869 00000 n 
+0000442778 00000 n 
+0000440676 00000 n 
+0000443552 00000 n 
+0000443678 00000 n 
+0000443805 00000 n 
+0000443400 00000 n 
+0000446611 00000 n 
+0000445923 00000 n 
+0000443999 00000 n 
+0000446039 00000 n 
+0000446166 00000 n 
+0000446293 00000 n 
+0000446420 00000 n 
+0000446547 00000 n 
+0004768222 00000 n 
+0000447491 00000 n 
+0000447311 00000 n 
+0000446769 00000 n 
+0000447427 00000 n 
+0000450259 00000 n 
+0000449951 00000 n 
+0000447607 00000 n 
+0000450067 00000 n 
+0000452476 00000 n 
+0000452867 00000 n 
+0000452339 00000 n 
+0000450361 00000 n 
+0000452676 00000 n 
+0000455434 00000 n 
+0000455584 00000 n 
+0000455744 00000 n 
+0000455900 00000 n 
+0000456220 00000 n 
+0000456699 00000 n 
+0000455252 00000 n 
+0000453039 00000 n 
+0000456381 00000 n 
+0000456508 00000 n 
+0000456635 00000 n 
+0000456060 00000 n 
+0000459337 00000 n 
+0000776971 00000 n 
+0000781549 00000 n 
+0000459465 00000 n 
+0000458840 00000 n 
+0000456815 00000 n 
+0000458956 00000 n 
+0000459083 00000 n 
+0000459210 00000 n 
+0000459401 00000 n 
+0000461830 00000 n 
+0000463135 00000 n 
+0000461693 00000 n 
+0000459623 00000 n 
+0000461986 00000 n 
+0000462114 00000 n 
+0000462178 00000 n 
+0000462242 00000 n 
+0000462306 00000 n 
+0000462370 00000 n 
+0000462434 00000 n 
+0000462498 00000 n 
+0000462562 00000 n 
+0000462626 00000 n 
+0000462689 00000 n 
+0000462753 00000 n 
+0000462816 00000 n 
+0000462880 00000 n 
+0000462944 00000 n 
+0000463008 00000 n 
+0000463072 00000 n 
+0004768348 00000 n 
+0000464961 00000 n 
+0000465309 00000 n 
+0000464824 00000 n 
+0000463278 00000 n 
+0000465118 00000 n 
+0000465182 00000 n 
+0000465245 00000 n 
+0003456790 00000 n 
+0000468103 00000 n 
+0000469532 00000 n 
+0000467966 00000 n 
+0000465439 00000 n 
+0000468254 00000 n 
+0000468381 00000 n 
+0000468509 00000 n 
+0000468573 00000 n 
+0000468637 00000 n 
+0000468701 00000 n 
+0000468765 00000 n 
+0000468829 00000 n 
+0000468893 00000 n 
+0000468957 00000 n 
+0000469021 00000 n 
+0000469085 00000 n 
+0000469149 00000 n 
+0000469213 00000 n 
+0000469277 00000 n 
+0000469341 00000 n 
+0000469468 00000 n 
+0000473092 00000 n 
+0000474522 00000 n 
+0000472955 00000 n 
+0000469689 00000 n 
+0000473246 00000 n 
+0000473374 00000 n 
+0000473438 00000 n 
+0000473502 00000 n 
+0000473566 00000 n 
+0000473630 00000 n 
+0000473694 00000 n 
+0000473757 00000 n 
+0000473821 00000 n 
+0000473884 00000 n 
+0000473948 00000 n 
+0000474010 00000 n 
+0000474074 00000 n 
+0000474138 00000 n 
+0000474202 00000 n 
+0000474266 00000 n 
+0000474330 00000 n 
+0000474394 00000 n 
+0000474458 00000 n 
+0000476276 00000 n 
+0000479924 00000 n 
+0000477419 00000 n 
+0000476160 00000 n 
+0000474679 00000 n 
+0000477355 00000 n 
+0004762998 00000 n 
+0004764776 00000 n 
+0000476660 00000 n 
+0000476778 00000 n 
+0000476826 00000 n 
+0000477334 00000 n 
+0000480330 00000 n 
+0000479787 00000 n 
+0000477620 00000 n 
+0000480075 00000 n 
+0000480202 00000 n 
+0000480266 00000 n 
+0002001822 00000 n 
+0000483696 00000 n 
+0000486023 00000 n 
+0000483559 00000 n 
+0000480531 00000 n 
+0000483851 00000 n 
+0000483979 00000 n 
+0000484043 00000 n 
+0000484107 00000 n 
+0000484171 00000 n 
+0000484235 00000 n 
+0000484299 00000 n 
+0000484363 00000 n 
+0000484427 00000 n 
+0000484491 00000 n 
+0000484554 00000 n 
+0000484618 00000 n 
+0000484681 00000 n 
+0000484745 00000 n 
+0000484807 00000 n 
+0000484871 00000 n 
+0000484935 00000 n 
+0000484999 00000 n 
+0000485063 00000 n 
+0000485127 00000 n 
+0000485191 00000 n 
+0000485255 00000 n 
+0000485319 00000 n 
+0000485383 00000 n 
+0000485447 00000 n 
+0000485511 00000 n 
+0000485575 00000 n 
+0000485639 00000 n 
+0000485703 00000 n 
+0000485767 00000 n 
+0000485831 00000 n 
+0000485895 00000 n 
+0000485959 00000 n 
+0004768474 00000 n 
+0000487615 00000 n 
+0000487243 00000 n 
+0000486166 00000 n 
+0000487359 00000 n 
+0000487423 00000 n 
+0000487487 00000 n 
+0000487551 00000 n 
+0000489034 00000 n 
+0000488726 00000 n 
+0000487731 00000 n 
+0000488842 00000 n 
+0000488906 00000 n 
+0000488970 00000 n 
+0000491555 00000 n 
+0000491248 00000 n 
+0000489150 00000 n 
+0000491364 00000 n 
+0000491491 00000 n 
+0000494668 00000 n 
+0000494830 00000 n 
+0000496341 00000 n 
+0000494522 00000 n 
+0000491699 00000 n 
+0000494998 00000 n 
+0000495125 00000 n 
+0000495253 00000 n 
+0000495317 00000 n 
+0000495381 00000 n 
+0000495445 00000 n 
+0000495509 00000 n 
+0000495573 00000 n 
+0000495637 00000 n 
+0000495701 00000 n 
+0000495765 00000 n 
+0000495829 00000 n 
+0000495893 00000 n 
+0000495957 00000 n 
+0000496021 00000 n 
+0000496085 00000 n 
+0000496149 00000 n 
+0000496213 00000 n 
+0000496277 00000 n 
+0000499750 00000 n 
+0000501604 00000 n 
+0000499506 00000 n 
+0000496512 00000 n 
+0000499622 00000 n 
+0000499814 00000 n 
+0000499878 00000 n 
+0000499942 00000 n 
+0000500006 00000 n 
+0000500070 00000 n 
+0000500134 00000 n 
+0000500198 00000 n 
+0000500262 00000 n 
+0000500326 00000 n 
+0000500390 00000 n 
+0000500454 00000 n 
+0000500518 00000 n 
+0000500582 00000 n 
+0000500646 00000 n 
+0000500710 00000 n 
+0000500774 00000 n 
+0000500838 00000 n 
+0000500902 00000 n 
+0000500966 00000 n 
+0000501030 00000 n 
+0000501094 00000 n 
+0000501158 00000 n 
+0000501222 00000 n 
+0000501286 00000 n 
+0000501350 00000 n 
+0000501413 00000 n 
+0000501477 00000 n 
+0000501540 00000 n 
+0000503192 00000 n 
+0000502756 00000 n 
+0000501733 00000 n 
+0000502872 00000 n 
+0000502936 00000 n 
+0000503000 00000 n 
+0000503064 00000 n 
+0000503128 00000 n 
+0004768600 00000 n 
+0000505488 00000 n 
+0000505117 00000 n 
+0000503308 00000 n 
+0000505233 00000 n 
+0000505297 00000 n 
+0000505424 00000 n 
+0000507463 00000 n 
+0000507627 00000 n 
+0000508175 00000 n 
+0000507317 00000 n 
+0000505632 00000 n 
+0000507792 00000 n 
+0000507919 00000 n 
+0000507983 00000 n 
+0000508047 00000 n 
+0000508111 00000 n 
+0000512607 00000 n 
+0000527492 00000 n 
+0000514460 00000 n 
+0000512363 00000 n 
+0000508362 00000 n 
+0000512479 00000 n 
+0000512671 00000 n 
+0000512735 00000 n 
+0000512799 00000 n 
+0000512863 00000 n 
+0000512927 00000 n 
+0000512991 00000 n 
+0000513055 00000 n 
+0000513119 00000 n 
+0000513183 00000 n 
+0000513247 00000 n 
+0000513311 00000 n 
+0000513375 00000 n 
+0000513439 00000 n 
+0000513503 00000 n 
+0000513567 00000 n 
+0000513631 00000 n 
+0000513695 00000 n 
+0000513759 00000 n 
+0000513823 00000 n 
+0000513886 00000 n 
+0000513950 00000 n 
+0000514013 00000 n 
+0000514077 00000 n 
+0000514140 00000 n 
+0000514204 00000 n 
+0000514268 00000 n 
+0000514332 00000 n 
+0000514396 00000 n 
+0000516589 00000 n 
+0000517141 00000 n 
+0000516452 00000 n 
+0000514631 00000 n 
+0000516758 00000 n 
+0000516822 00000 n 
+0000516949 00000 n 
+0000517013 00000 n 
+0000517077 00000 n 
+0000518901 00000 n 
+0000518594 00000 n 
+0000517341 00000 n 
+0000518710 00000 n 
+0000518774 00000 n 
+0000518838 00000 n 
+0000520320 00000 n 
+0000519949 00000 n 
+0000519017 00000 n 
+0000520065 00000 n 
+0000520129 00000 n 
+0000520193 00000 n 
+0000520256 00000 n 
+0004768726 00000 n 
+0000522151 00000 n 
+0000522304 00000 n 
+0000522452 00000 n 
+0000522604 00000 n 
+0000523331 00000 n 
+0000521987 00000 n 
+0000520436 00000 n 
+0000522755 00000 n 
+0000522819 00000 n 
+0000522883 00000 n 
+0000522947 00000 n 
+0000523011 00000 n 
+0000523075 00000 n 
+0000523139 00000 n 
+0000523203 00000 n 
+0000523267 00000 n 
+0000534364 00000 n 
+0000539934 00000 n 
+0000529793 00000 n 
+0000527248 00000 n 
+0000523461 00000 n 
+0000527364 00000 n 
+0000527556 00000 n 
+0000527620 00000 n 
+0000527684 00000 n 
+0000527748 00000 n 
+0000527812 00000 n 
+0000527876 00000 n 
+0000527940 00000 n 
+0000528004 00000 n 
+0000528068 00000 n 
+0000528132 00000 n 
+0000528196 00000 n 
+0000528260 00000 n 
+0000528324 00000 n 
+0000528388 00000 n 
+0000528451 00000 n 
+0000528515 00000 n 
+0000528578 00000 n 
+0000528642 00000 n 
+0000528705 00000 n 
+0000528769 00000 n 
+0000528833 00000 n 
+0000528897 00000 n 
+0000528961 00000 n 
+0000529025 00000 n 
+0000529089 00000 n 
+0000529153 00000 n 
+0000529217 00000 n 
+0000529281 00000 n 
+0000529345 00000 n 
+0000529409 00000 n 
+0000529473 00000 n 
+0000529537 00000 n 
+0000529601 00000 n 
+0000529665 00000 n 
+0000529729 00000 n 
+0000536664 00000 n 
+0000534120 00000 n 
+0000529950 00000 n 
+0000534236 00000 n 
+0000534428 00000 n 
+0000534492 00000 n 
+0000534556 00000 n 
+0000534620 00000 n 
+0000534684 00000 n 
+0000534748 00000 n 
+0000534812 00000 n 
+0000534876 00000 n 
+0000534939 00000 n 
+0000535003 00000 n 
+0000535067 00000 n 
+0000535131 00000 n 
+0000535195 00000 n 
+0000535259 00000 n 
+0000535323 00000 n 
+0000535387 00000 n 
+0000535451 00000 n 
+0000535515 00000 n 
+0000535579 00000 n 
+0000535643 00000 n 
+0000535707 00000 n 
+0000535771 00000 n 
+0000535835 00000 n 
+0000535899 00000 n 
+0000535963 00000 n 
+0000536027 00000 n 
+0000536091 00000 n 
+0000536155 00000 n 
+0000536219 00000 n 
+0000536283 00000 n 
+0000536347 00000 n 
+0000536410 00000 n 
+0000536474 00000 n 
+0000536537 00000 n 
+0000536601 00000 n 
+0000541724 00000 n 
+0000539690 00000 n 
+0000536821 00000 n 
+0000539806 00000 n 
+0000539998 00000 n 
+0000540062 00000 n 
+0000540125 00000 n 
+0000540189 00000 n 
+0000540252 00000 n 
+0000540316 00000 n 
+0000540380 00000 n 
+0000540444 00000 n 
+0000540508 00000 n 
+0000540572 00000 n 
+0000540636 00000 n 
+0000540700 00000 n 
+0000540764 00000 n 
+0000540828 00000 n 
+0000540892 00000 n 
+0000540956 00000 n 
+0000541020 00000 n 
+0000541084 00000 n 
+0000541148 00000 n 
+0000541212 00000 n 
+0000541276 00000 n 
+0000541340 00000 n 
+0000541404 00000 n 
+0000541468 00000 n 
+0000541532 00000 n 
+0000541596 00000 n 
+0000541660 00000 n 
+0000542272 00000 n 
+0000542093 00000 n 
+0000541867 00000 n 
+0000542563 00000 n 
+0000542447 00000 n 
+0000542346 00000 n 
+0004768852 00000 n 
+0000543577 00000 n 
+0000543142 00000 n 
+0000542605 00000 n 
+0000543258 00000 n 
+0000543322 00000 n 
+0000543449 00000 n 
+0000543513 00000 n 
+0000543960 00000 n 
+0000543780 00000 n 
+0000543679 00000 n 
+0000543896 00000 n 
+0000546124 00000 n 
+0000545691 00000 n 
+0000544002 00000 n 
+0000545807 00000 n 
+0000546060 00000 n 
+0000548289 00000 n 
+0000547982 00000 n 
+0000546240 00000 n 
+0000548098 00000 n 
+0000548225 00000 n 
+0000551005 00000 n 
+0000551158 00000 n 
+0000551309 00000 n 
+0000551465 00000 n 
+0000551815 00000 n 
+0000550841 00000 n 
+0000548419 00000 n 
+0000551625 00000 n 
+0000551752 00000 n 
+0000554571 00000 n 
+0000554136 00000 n 
+0000551959 00000 n 
+0000554252 00000 n 
+0000554379 00000 n 
+0000554443 00000 n 
+0000554507 00000 n 
+0004768978 00000 n 
+0000557758 00000 n 
+0000557196 00000 n 
+0000554715 00000 n 
+0000557312 00000 n 
+0000557439 00000 n 
+0000557503 00000 n 
+0000557567 00000 n 
+0000557694 00000 n 
+0000560591 00000 n 
+0000560029 00000 n 
+0000557915 00000 n 
+0000560145 00000 n 
+0000560272 00000 n 
+0000560336 00000 n 
+0000560400 00000 n 
+0000560527 00000 n 
+0000563484 00000 n 
+0000562666 00000 n 
+0000560748 00000 n 
+0000562782 00000 n 
+0000562846 00000 n 
+0000562910 00000 n 
+0000562974 00000 n 
+0000563101 00000 n 
+0000563165 00000 n 
+0000563229 00000 n 
+0000563292 00000 n 
+0000563356 00000 n 
+0000563420 00000 n 
+0000565679 00000 n 
+0000565997 00000 n 
+0000566148 00000 n 
+0000566299 00000 n 
+0000566676 00000 n 
+0000565497 00000 n 
+0000563641 00000 n 
+0000566612 00000 n 
+0000565838 00000 n 
+0000566455 00000 n 
+0000569475 00000 n 
+0000569632 00000 n 
+0000570551 00000 n 
+0000569329 00000 n 
+0000566863 00000 n 
+0000569786 00000 n 
+0000569913 00000 n 
+0000570040 00000 n 
+0000570104 00000 n 
+0000570168 00000 n 
+0000570232 00000 n 
+0000570296 00000 n 
+0000570360 00000 n 
+0000570487 00000 n 
+0000749122 00000 n 
+0000572751 00000 n 
+0000572571 00000 n 
+0000570708 00000 n 
+0000572687 00000 n 
+0004769104 00000 n 
+0000575882 00000 n 
+0000575319 00000 n 
+0000572881 00000 n 
+0000575435 00000 n 
+0004765373 00000 n 
+0000575562 00000 n 
+0000575626 00000 n 
+0000575690 00000 n 
+0000575754 00000 n 
+0000575818 00000 n 
+0000578496 00000 n 
+0000578189 00000 n 
+0000576110 00000 n 
+0000578305 00000 n 
+0000578432 00000 n 
+0000581504 00000 n 
+0000581006 00000 n 
+0000578626 00000 n 
+0000581122 00000 n 
+0000581186 00000 n 
+0000581250 00000 n 
+0000581313 00000 n 
+0000581440 00000 n 
+0000583817 00000 n 
+0000583970 00000 n 
+0000584698 00000 n 
+0000583671 00000 n 
+0000581647 00000 n 
+0000584127 00000 n 
+0000584254 00000 n 
+0000584380 00000 n 
+0000584507 00000 n 
+0000584634 00000 n 
+0000586594 00000 n 
+0000586287 00000 n 
+0000584842 00000 n 
+0000586403 00000 n 
+0000586530 00000 n 
+0000587005 00000 n 
+0000586825 00000 n 
+0000586724 00000 n 
+0000586941 00000 n 
+0004769230 00000 n 
+0000588788 00000 n 
+0000590923 00000 n 
+0000589136 00000 n 
+0000588651 00000 n 
+0000587047 00000 n 
+0000588945 00000 n 
+0000598422 00000 n 
+0000598613 00000 n 
+0000590807 00000 n 
+0000589266 00000 n 
+0000598294 00000 n 
+0000598549 00000 n 
+0000594656 00000 n 
+0000594774 00000 n 
+0000594822 00000 n 
+0000595231 00000 n 
+0000595254 00000 n 
+0000595575 00000 n 
+0000598271 00000 n 
+0000601112 00000 n 
+0000600932 00000 n 
+0000598786 00000 n 
+0000601048 00000 n 
+0000603322 00000 n 
+0000603699 00000 n 
+0000603176 00000 n 
+0000601228 00000 n 
+0000603635 00000 n 
+0000603479 00000 n 
+0000608838 00000 n 
+0000606182 00000 n 
+0000606002 00000 n 
+0000603872 00000 n 
+0000606118 00000 n 
+0000609149 00000 n 
+0000609315 00000 n 
+0000609656 00000 n 
+0000608674 00000 n 
+0000606312 00000 n 
+0000609465 00000 n 
+0000608994 00000 n 
+0000609592 00000 n 
+0004769356 00000 n 
+0000717660 00000 n 
+0000612330 00000 n 
+0000612150 00000 n 
+0000609772 00000 n 
+0000612266 00000 n 
+0000615253 00000 n 
+0000615073 00000 n 
+0000612432 00000 n 
+0000615189 00000 n 
+0000617826 00000 n 
+0000617393 00000 n 
+0000615355 00000 n 
+0000617509 00000 n 
+0000617636 00000 n 
+0000617762 00000 n 
+0000620536 00000 n 
+0000620750 00000 n 
+0000620399 00000 n 
+0000617970 00000 n 
+0000620686 00000 n 
+0004764331 00000 n 
+0000623261 00000 n 
+0000623504 00000 n 
+0000623124 00000 n 
+0000620922 00000 n 
+0000623440 00000 n 
+0004765967 00000 n 
+0004765820 00000 n 
+0000628074 00000 n 
+0000626034 00000 n 
+0000625727 00000 n 
+0000623761 00000 n 
+0000625843 00000 n 
+0000625970 00000 n 
+0004769482 00000 n 
+0000628386 00000 n 
+0000628545 00000 n 
+0000628938 00000 n 
+0000627901 00000 n 
+0000626178 00000 n 
+0000628874 00000 n 
+0000628231 00000 n 
+0000628710 00000 n 
+0000631150 00000 n 
+0000631304 00000 n 
+0000634988 00000 n 
+0000631675 00000 n 
+0000630995 00000 n 
+0000629167 00000 n 
+0000631611 00000 n 
+0000631458 00000 n 
+0000634379 00000 n 
+0000634534 00000 n 
+0000634689 00000 n 
+0000635338 00000 n 
+0000634206 00000 n 
+0000631876 00000 n 
+0000635147 00000 n 
+0000635274 00000 n 
+0000634839 00000 n 
+0000639017 00000 n 
+0000640613 00000 n 
+0000638773 00000 n 
+0000635524 00000 n 
+0000638889 00000 n 
+0000639081 00000 n 
+0000639145 00000 n 
+0000639209 00000 n 
+0000639273 00000 n 
+0000639337 00000 n 
+0000639401 00000 n 
+0000639465 00000 n 
+0000639529 00000 n 
+0000639592 00000 n 
+0000639656 00000 n 
+0000639719 00000 n 
+0000639783 00000 n 
+0000639845 00000 n 
+0000639909 00000 n 
+0000639973 00000 n 
+0000640037 00000 n 
+0000640101 00000 n 
+0000640165 00000 n 
+0000640229 00000 n 
+0000640293 00000 n 
+0000640357 00000 n 
+0000640421 00000 n 
+0000640485 00000 n 
+0000640549 00000 n 
+0000643919 00000 n 
+0000643230 00000 n 
+0000640756 00000 n 
+0000643346 00000 n 
+0000643410 00000 n 
+0000643474 00000 n 
+0000643538 00000 n 
+0000643602 00000 n 
+0000643666 00000 n 
+0000643729 00000 n 
+0000643856 00000 n 
+0000648001 00000 n 
+0000646613 00000 n 
+0000644119 00000 n 
+0000646729 00000 n 
+0000646856 00000 n 
+0000646983 00000 n 
+0000647110 00000 n 
+0000647236 00000 n 
+0000647299 00000 n 
+0000647363 00000 n 
+0000647427 00000 n 
+0000647491 00000 n 
+0000647555 00000 n 
+0000647619 00000 n 
+0000647683 00000 n 
+0000647747 00000 n 
+0000647811 00000 n 
+0000647937 00000 n 
+0004769608 00000 n 
+0000650657 00000 n 
+0000650350 00000 n 
+0000648144 00000 n 
+0000650466 00000 n 
+0000650593 00000 n 
+0000653743 00000 n 
+0000653118 00000 n 
+0000650830 00000 n 
+0000653234 00000 n 
+0000653298 00000 n 
+0000653362 00000 n 
+0000653424 00000 n 
+0000653488 00000 n 
+0000653551 00000 n 
+0000653615 00000 n 
+0000653679 00000 n 
+0000656221 00000 n 
+0000656525 00000 n 
+0000659533 00000 n 
+0000656875 00000 n 
+0000656066 00000 n 
+0000653887 00000 n 
+0000656684 00000 n 
+0000656371 00000 n 
+0000656811 00000 n 
+0000659744 00000 n 
+0000659396 00000 n 
+0000657076 00000 n 
+0000659680 00000 n 
+0001199633 00000 n 
+0000662334 00000 n 
+0000661773 00000 n 
+0000659931 00000 n 
+0000661889 00000 n 
+0000662016 00000 n 
+0000662143 00000 n 
+0000662270 00000 n 
+0000664472 00000 n 
+0000664166 00000 n 
+0000662521 00000 n 
+0000664282 00000 n 
+0000664408 00000 n 
+0004769734 00000 n 
+0000667447 00000 n 
+0000666887 00000 n 
+0000664602 00000 n 
+0000667003 00000 n 
+0000667130 00000 n 
+0000667256 00000 n 
+0000667383 00000 n 
+0000669340 00000 n 
+0000669033 00000 n 
+0000667605 00000 n 
+0000669149 00000 n 
+0000669276 00000 n 
+0000671332 00000 n 
+0000671483 00000 n 
+0000671970 00000 n 
+0000671186 00000 n 
+0000669484 00000 n 
+0000671652 00000 n 
+0000671906 00000 n 
+0000674415 00000 n 
+0000674760 00000 n 
+0000674278 00000 n 
+0000672142 00000 n 
+0000674570 00000 n 
+0000674697 00000 n 
+0000677483 00000 n 
+0000677674 00000 n 
+0000677239 00000 n 
+0000674876 00000 n 
+0000677355 00000 n 
+0000677610 00000 n 
+0000680356 00000 n 
+0000680176 00000 n 
+0000677790 00000 n 
+0000680292 00000 n 
+0004769860 00000 n 
+0000683111 00000 n 
+0000683265 00000 n 
+0000683418 00000 n 
+0000683571 00000 n 
+0000683959 00000 n 
+0000682947 00000 n 
+0000680486 00000 n 
+0000683768 00000 n 
+0000683895 00000 n 
+0000687552 00000 n 
+0000688445 00000 n 
+0000687308 00000 n 
+0000684159 00000 n 
+0000687424 00000 n 
+0000687616 00000 n 
+0000687680 00000 n 
+0000687744 00000 n 
+0000687808 00000 n 
+0000687872 00000 n 
+0000687936 00000 n 
+0000688000 00000 n 
+0000688064 00000 n 
+0000688128 00000 n 
+0000688192 00000 n 
+0000688256 00000 n 
+0000688382 00000 n 
+0000691177 00000 n 
+0000691779 00000 n 
+0000691040 00000 n 
+0000688588 00000 n 
+0000691332 00000 n 
+0000691460 00000 n 
+0000691524 00000 n 
+0000691588 00000 n 
+0000691715 00000 n 
+0000694257 00000 n 
+0000694416 00000 n 
+0000694570 00000 n 
+0000697726 00000 n 
+0000695169 00000 n 
+0000694102 00000 n 
+0000691964 00000 n 
+0000694724 00000 n 
+0000694851 00000 n 
+0000694978 00000 n 
+0000695105 00000 n 
+0001178121 00000 n 
+0001189355 00000 n 
+0000698198 00000 n 
+0000697589 00000 n 
+0000695299 00000 n 
+0000697880 00000 n 
+0000698007 00000 n 
+0000698134 00000 n 
+0000700848 00000 n 
+0000704604 00000 n 
+0000701192 00000 n 
+0000700711 00000 n 
+0000698370 00000 n 
+0000701001 00000 n 
+0000701128 00000 n 
+0004769986 00000 n 
+0000704929 00000 n 
+0000705885 00000 n 
+0000704467 00000 n 
+0000701350 00000 n 
+0000704801 00000 n 
+0000704993 00000 n 
+0000705057 00000 n 
+0000705121 00000 n 
+0000705185 00000 n 
+0000705249 00000 n 
+0000705313 00000 n 
+0000705377 00000 n 
+0000705440 00000 n 
+0000705504 00000 n 
+0000705567 00000 n 
+0000705631 00000 n 
+0000705693 00000 n 
+0000705757 00000 n 
+0000705821 00000 n 
+0000708510 00000 n 
+0000708673 00000 n 
+0000709190 00000 n 
+0000708364 00000 n 
+0000706112 00000 n 
+0000708872 00000 n 
+0000708999 00000 n 
+0000709126 00000 n 
+0000711956 00000 n 
+0000711523 00000 n 
+0000709461 00000 n 
+0000711639 00000 n 
+0000711766 00000 n 
+0000711892 00000 n 
+0000713068 00000 n 
+0000712761 00000 n 
+0000712086 00000 n 
+0000712877 00000 n 
+0000713004 00000 n 
+0000715240 00000 n 
+0000714806 00000 n 
+0000713184 00000 n 
+0000714922 00000 n 
+0000715176 00000 n 
+0000717724 00000 n 
+0000717417 00000 n 
+0000715370 00000 n 
+0000717533 00000 n 
+0004770112 00000 n 
+0000719624 00000 n 
+0000719444 00000 n 
+0000717868 00000 n 
+0000719560 00000 n 
+0000721904 00000 n 
+0000721597 00000 n 
+0000719768 00000 n 
+0000721713 00000 n 
+0000721840 00000 n 
+0000726163 00000 n 
+0000723722 00000 n 
+0000723542 00000 n 
+0000722048 00000 n 
+0000723658 00000 n 
+0000726855 00000 n 
+0000727064 00000 n 
+0000727465 00000 n 
+0000726017 00000 n 
+0000723852 00000 n 
+0000727274 00000 n 
+0000727401 00000 n 
+0000726667 00000 n 
+0000726785 00000 n 
+0000726833 00000 n 
+0000730950 00000 n 
+0000729942 00000 n 
+0000727708 00000 n 
+0000730058 00000 n 
+0000730122 00000 n 
+0000730186 00000 n 
+0000730250 00000 n 
+0000730314 00000 n 
+0000730378 00000 n 
+0000730442 00000 n 
+0000730568 00000 n 
+0000730632 00000 n 
+0000730696 00000 n 
+0000730760 00000 n 
+0000730887 00000 n 
+0000733165 00000 n 
+0000733774 00000 n 
+0000733028 00000 n 
+0000731121 00000 n 
+0000733329 00000 n 
+0000733456 00000 n 
+0000733583 00000 n 
+0000733710 00000 n 
+0004770238 00000 n 
+0000736459 00000 n 
+0000736025 00000 n 
+0000736178 00000 n 
+0000736650 00000 n 
+0000735879 00000 n 
+0000733918 00000 n 
+0000736332 00000 n 
+0000736586 00000 n 
+0000739814 00000 n 
+0000740388 00000 n 
+0000739570 00000 n 
+0000736851 00000 n 
+0000739686 00000 n 
+0000739878 00000 n 
+0000739942 00000 n 
+0000740006 00000 n 
+0000740070 00000 n 
+0000740134 00000 n 
+0000740196 00000 n 
+0000740260 00000 n 
+0000740324 00000 n 
+0000742402 00000 n 
+0000742773 00000 n 
+0000742256 00000 n 
+0000740559 00000 n 
+0000742709 00000 n 
+0000742556 00000 n 
+0000745208 00000 n 
+0000745550 00000 n 
+0000745071 00000 n 
+0000742903 00000 n 
+0000745359 00000 n 
+0000745486 00000 n 
+0000748821 00000 n 
+0000748397 00000 n 
+0000749695 00000 n 
+0000748242 00000 n 
+0000745708 00000 n 
+0000748995 00000 n 
+0000748609 00000 n 
+0000749249 00000 n 
+0000749313 00000 n 
+0000749377 00000 n 
+0000749441 00000 n 
+0000749504 00000 n 
+0000749568 00000 n 
+0000749632 00000 n 
+0000752587 00000 n 
+0000755057 00000 n 
+0000753355 00000 n 
+0000752441 00000 n 
+0000750007 00000 n 
+0000753038 00000 n 
+0000753102 00000 n 
+0000753166 00000 n 
+0000753291 00000 n 
+0000752812 00000 n 
+0004770364 00000 n 
+0000755317 00000 n 
+0000754920 00000 n 
+0000753653 00000 n 
+0000755253 00000 n 
+0000759759 00000 n 
+0000759921 00000 n 
+0000760091 00000 n 
+0000757677 00000 n 
+0000757497 00000 n 
+0000755489 00000 n 
+0000757613 00000 n 
+0000760441 00000 n 
+0000759604 00000 n 
+0000757864 00000 n 
+0000760250 00000 n 
+0000760377 00000 n 
+0000765618 00000 n 
+0000762868 00000 n 
+0000762932 00000 n 
+0000762498 00000 n 
+0000760571 00000 n 
+0000762614 00000 n 
+0000762741 00000 n 
+0000766064 00000 n 
+0000765375 00000 n 
+0000763133 00000 n 
+0000765491 00000 n 
+0000765745 00000 n 
+0000765872 00000 n 
+0000765936 00000 n 
+0000766000 00000 n 
+0000768838 00000 n 
+0000768277 00000 n 
+0000766249 00000 n 
+0000768393 00000 n 
+0000768520 00000 n 
+0000768647 00000 n 
+0000768774 00000 n 
+0004770490 00000 n 
+0000771118 00000 n 
+0000770811 00000 n 
+0000768982 00000 n 
+0000770927 00000 n 
+0000771054 00000 n 
+0000771557 00000 n 
+0000771377 00000 n 
+0000771276 00000 n 
+0000771493 00000 n 
+0000773452 00000 n 
+0000773018 00000 n 
+0000771599 00000 n 
+0000773134 00000 n 
+0000773388 00000 n 
+0000775983 00000 n 
+0000776275 00000 n 
+0000776429 00000 n 
+0000780219 00000 n 
+0000777035 00000 n 
+0000775819 00000 n 
+0000773568 00000 n 
+0000776590 00000 n 
+0000776717 00000 n 
+0000776129 00000 n 
+0000776844 00000 n 
+0000780654 00000 n 
+0000780372 00000 n 
+0000781613 00000 n 
+0000780073 00000 n 
+0000777179 00000 n 
+0000780526 00000 n 
+0000780718 00000 n 
+0000780782 00000 n 
+0000780846 00000 n 
+0000780910 00000 n 
+0000780974 00000 n 
+0000781038 00000 n 
+0000781102 00000 n 
+0000781166 00000 n 
+0000781230 00000 n 
+0000781294 00000 n 
+0000781358 00000 n 
+0000781422 00000 n 
+0000783806 00000 n 
+0000784282 00000 n 
+0000783669 00000 n 
+0000781784 00000 n 
+0000783962 00000 n 
+0000784026 00000 n 
+0000784090 00000 n 
+0000784154 00000 n 
+0000784218 00000 n 
+0004770616 00000 n 
+0000787244 00000 n 
+0000787396 00000 n 
+0000787710 00000 n 
+0000790476 00000 n 
+0000789137 00000 n 
+0000787080 00000 n 
+0000784426 00000 n 
+0000787861 00000 n 
+0000787989 00000 n 
+0000788053 00000 n 
+0000788117 00000 n 
+0000788181 00000 n 
+0000788245 00000 n 
+0000788308 00000 n 
+0000788372 00000 n 
+0000788435 00000 n 
+0000788499 00000 n 
+0000788561 00000 n 
+0000788625 00000 n 
+0000788689 00000 n 
+0000788753 00000 n 
+0000788817 00000 n 
+0000788881 00000 n 
+0000788945 00000 n 
+0000789009 00000 n 
+0000789073 00000 n 
+0000787553 00000 n 
+0000790820 00000 n 
+0000790339 00000 n 
+0000789337 00000 n 
+0000790630 00000 n 
+0000790756 00000 n 
+0000792731 00000 n 
+0000792170 00000 n 
+0000790950 00000 n 
+0000792286 00000 n 
+0000792540 00000 n 
+0000792667 00000 n 
+0000795267 00000 n 
+0000797868 00000 n 
+0000795415 00000 n 
+0000826363 00000 n 
+0000823736 00000 n 
+0000823883 00000 n 
+0000796011 00000 n 
+0000795121 00000 n 
+0000792861 00000 n 
+0000795565 00000 n 
+0000795692 00000 n 
+0000795819 00000 n 
+0000795883 00000 n 
+0000795947 00000 n 
+0000824458 00000 n 
+0000845040 00000 n 
+0000824030 00000 n 
+0000847024 00000 n 
+0000824181 00000 n 
+0000865020 00000 n 
+0000844611 00000 n 
+0000896433 00000 n 
+0000824713 00000 n 
+0000797704 00000 n 
+0000796155 00000 n 
+0000824330 00000 n 
+0000824522 00000 n 
+0000824585 00000 n 
+0000824649 00000 n 
+0003551524 00000 n 
+0000863161 00000 n 
+0000894373 00000 n 
+0000844761 00000 n 
+0000918319 00000 n 
+0000845359 00000 n 
+0000826217 00000 n 
+0000824880 00000 n 
+0000844912 00000 n 
+0000845167 00000 n 
+0000845231 00000 n 
+0000845295 00000 n 
+0004770742 00000 n 
+0000916299 00000 n 
+0000929819 00000 n 
+0000862583 00000 n 
+0000932043 00000 n 
+0000862734 00000 n 
+0000862882 00000 n 
+0000946781 00000 n 
+0000893944 00000 n 
+0000958127 00000 n 
+0000863417 00000 n 
+0000846869 00000 n 
+0000845540 00000 n 
+0000863033 00000 n 
+0000863225 00000 n 
+0000863289 00000 n 
+0000863353 00000 n 
+0000944770 00000 n 
+0000956282 00000 n 
+0000894095 00000 n 
+0000972670 00000 n 
+0000894628 00000 n 
+0000864874 00000 n 
+0000863570 00000 n 
+0000894245 00000 n 
+0000894437 00000 n 
+0000894564 00000 n 
+0000970861 00000 n 
+0000983229 00000 n 
+0000915578 00000 n 
+0000984872 00000 n 
+0000915727 00000 n 
+0000915874 00000 n 
+0000916021 00000 n 
+0000994582 00000 n 
+0000916555 00000 n 
+0000896269 00000 n 
+0000894809 00000 n 
+0000916171 00000 n 
+0000916363 00000 n 
+0000916427 00000 n 
+0000916491 00000 n 
+0000993756 00000 n 
+0001008428 00000 n 
+0000929391 00000 n 
+0001001687 00000 n 
+0000929541 00000 n 
+0001009376 00000 n 
+0000930138 00000 n 
+0000918173 00000 n 
+0000916708 00000 n 
+0000929691 00000 n 
+0000929883 00000 n 
+0000929947 00000 n 
+0000930074 00000 n 
+0001008556 00000 n 
+0001048013 00000 n 
+0000944190 00000 n 
+0001016016 00000 n 
+0000944340 00000 n 
+0001048977 00000 n 
+0000944491 00000 n 
+0001078828 00000 n 
+0000955853 00000 n 
+0001092802 00000 n 
+0000945218 00000 n 
+0000931888 00000 n 
+0000930291 00000 n 
+0000944642 00000 n 
+0000944834 00000 n 
+0000944898 00000 n 
+0000944962 00000 n 
+0000945026 00000 n 
+0000945090 00000 n 
+0000945154 00000 n 
+0001048141 00000 n 
+0001091788 00000 n 
+0001091916 00000 n 
+0000956004 00000 n 
+0001105764 00000 n 
+0000956601 00000 n 
+0000946635 00000 n 
+0000945372 00000 n 
+0000956154 00000 n 
+0000956346 00000 n 
+0000956410 00000 n 
+0000956537 00000 n 
+0004770868 00000 n 
+0001125611 00000 n 
+0001125739 00000 n 
+0000970435 00000 n 
+0001126607 00000 n 
+0000970584 00000 n 
+0001135650 00000 n 
+0000971117 00000 n 
+0000957981 00000 n 
+0000956755 00000 n 
+0000970733 00000 n 
+0000970925 00000 n 
+0000970989 00000 n 
+0000971053 00000 n 
+0001142424 00000 n 
+0001142552 00000 n 
+0000982801 00000 n 
+0001143355 00000 n 
+0000982951 00000 n 
+0001149391 00000 n 
+0000983548 00000 n 
+0000972524 00000 n 
+0000971313 00000 n 
+0000983101 00000 n 
+0000983293 00000 n 
+0000983357 00000 n 
+0000983484 00000 n 
+0001155513 00000 n 
+0001155641 00000 n 
+0000993820 00000 n 
+0000984756 00000 n 
+0000983716 00000 n 
+0000993628 00000 n 
+0001008620 00000 n 
+0000994466 00000 n 
+0000994002 00000 n 
+0001008300 00000 n 
+0001048205 00000 n 
+0001009260 00000 n 
+0001008775 00000 n 
+0001047885 00000 n 
+0001091980 00000 n 
+0001048861 00000 n 
+0001048360 00000 n 
+0001091660 00000 n 
+0004770994 00000 n 
+0001125803 00000 n 
+0001092686 00000 n 
+0001092135 00000 n 
+0001125483 00000 n 
+0001142616 00000 n 
+0001126491 00000 n 
+0001125958 00000 n 
+0001142296 00000 n 
+0001155705 00000 n 
+0001143239 00000 n 
+0001142771 00000 n 
+0001155385 00000 n 
+0001156141 00000 n 
+0001155961 00000 n 
+0001155860 00000 n 
+0001156077 00000 n 
+0001156581 00000 n 
+0001156402 00000 n 
+0001156183 00000 n 
+0001156872 00000 n 
+0001156756 00000 n 
+0001156655 00000 n 
+0004771120 00000 n 
+0001157811 00000 n 
+0001157376 00000 n 
+0001156914 00000 n 
+0001157492 00000 n 
+0001157556 00000 n 
+0001157683 00000 n 
+0001157747 00000 n 
+0001158194 00000 n 
+0001158014 00000 n 
+0001157913 00000 n 
+0001158130 00000 n 
+0001159585 00000 n 
+0001159744 00000 n 
+0001163095 00000 n 
+0001160347 00000 n 
+0001159439 00000 n 
+0001158236 00000 n 
+0001159902 00000 n 
+0001160156 00000 n 
+0001160283 00000 n 
+0003236011 00000 n 
+0001163456 00000 n 
+0001162958 00000 n 
+0001160463 00000 n 
+0001163265 00000 n 
+0001163392 00000 n 
+0001166004 00000 n 
+0001165697 00000 n 
+0001163642 00000 n 
+0001165813 00000 n 
+0001165940 00000 n 
+0001168769 00000 n 
+0001169081 00000 n 
+0001169832 00000 n 
+0001168614 00000 n 
+0001166205 00000 n 
+0001169259 00000 n 
+0001169387 00000 n 
+0001168925 00000 n 
+0001169514 00000 n 
+0001169641 00000 n 
+0001169768 00000 n 
+0004771246 00000 n 
+0001171268 00000 n 
+0001170962 00000 n 
+0001170032 00000 n 
+0001171078 00000 n 
+0001173918 00000 n 
+0001173611 00000 n 
+0001171441 00000 n 
+0001173727 00000 n 
+0001173854 00000 n 
+0001176283 00000 n 
+0001175976 00000 n 
+0001174105 00000 n 
+0001176092 00000 n 
+0001176219 00000 n 
+0001178184 00000 n 
+0001177878 00000 n 
+0001176441 00000 n 
+0001177994 00000 n 
+0001180861 00000 n 
+0001180554 00000 n 
+0001178342 00000 n 
+0001180670 00000 n 
+0001180797 00000 n 
+0001183888 00000 n 
+0001183452 00000 n 
+0001181019 00000 n 
+0001183568 00000 n 
+0001183632 00000 n 
+0001183696 00000 n 
+0001183760 00000 n 
+0001183824 00000 n 
+0004771372 00000 n 
+0001186854 00000 n 
+0001186419 00000 n 
+0001184018 00000 n 
+0001186535 00000 n 
+0001186599 00000 n 
+0001186663 00000 n 
+0001186790 00000 n 
+0001189419 00000 n 
+0001189112 00000 n 
+0001187012 00000 n 
+0001189228 00000 n 
+0004762847 00000 n 
+0001191640 00000 n 
+0001191460 00000 n 
+0001189563 00000 n 
+0001191576 00000 n 
+0001193539 00000 n 
+0001193232 00000 n 
+0001191770 00000 n 
+0001193348 00000 n 
+0001193475 00000 n 
+0001196392 00000 n 
+0001196212 00000 n 
+0001193683 00000 n 
+0001196328 00000 n 
+0001199355 00000 n 
+0001203229 00000 n 
+0001200335 00000 n 
+0001199218 00000 n 
+0001196536 00000 n 
+0001199507 00000 n 
+0001199697 00000 n 
+0001199760 00000 n 
+0001199887 00000 n 
+0001199951 00000 n 
+0001200015 00000 n 
+0001200079 00000 n 
+0001200143 00000 n 
+0001200207 00000 n 
+0001200271 00000 n 
+0004771498 00000 n 
+0001203383 00000 n 
+0001207670 00000 n 
+0001204751 00000 n 
+0001203083 00000 n 
+0001200492 00000 n 
+0001203537 00000 n 
+0001203665 00000 n 
+0001203729 00000 n 
+0001203793 00000 n 
+0001203857 00000 n 
+0001203921 00000 n 
+0001203985 00000 n 
+0001204049 00000 n 
+0001204177 00000 n 
+0001204241 00000 n 
+0001204304 00000 n 
+0001204368 00000 n 
+0001204432 00000 n 
+0001204496 00000 n 
+0001204560 00000 n 
+0001204687 00000 n 
+0001207820 00000 n 
+0001207983 00000 n 
+0001208963 00000 n 
+0001207515 00000 n 
+0001204936 00000 n 
+0001208133 00000 n 
+0001208261 00000 n 
+0001208325 00000 n 
+0001208388 00000 n 
+0001208452 00000 n 
+0001208516 00000 n 
+0001208580 00000 n 
+0001208644 00000 n 
+0001208772 00000 n 
+0001208899 00000 n 
+0001211757 00000 n 
+0001211450 00000 n 
+0001209120 00000 n 
+0001211566 00000 n 
+0001211693 00000 n 
+0001214728 00000 n 
+0001214039 00000 n 
+0001211901 00000 n 
+0001214155 00000 n 
+0001214219 00000 n 
+0001214283 00000 n 
+0001214347 00000 n 
+0001214410 00000 n 
+0001214537 00000 n 
+0001214664 00000 n 
+0001218398 00000 n 
+0001217644 00000 n 
+0001214872 00000 n 
+0001217760 00000 n 
+0001217824 00000 n 
+0001217888 00000 n 
+0001217951 00000 n 
+0001218078 00000 n 
+0001218142 00000 n 
+0001218206 00000 n 
+0001218270 00000 n 
+0001218334 00000 n 
+0001221713 00000 n 
+0001221151 00000 n 
+0001218597 00000 n 
+0001221267 00000 n 
+0001221394 00000 n 
+0001221458 00000 n 
+0001221522 00000 n 
+0001221649 00000 n 
+0004771624 00000 n 
+0001224374 00000 n 
+0001225731 00000 n 
+0001224258 00000 n 
+0001221884 00000 n 
+0001225412 00000 n 
+0001225539 00000 n 
+0001225603 00000 n 
+0001225667 00000 n 
+0001224760 00000 n 
+0001224878 00000 n 
+0001224926 00000 n 
+0001225391 00000 n 
+0001229004 00000 n 
+0001228696 00000 n 
+0001225960 00000 n 
+0001228812 00000 n 
+0001228876 00000 n 
+0001228940 00000 n 
+0001231437 00000 n 
+0001231004 00000 n 
+0001229175 00000 n 
+0001231120 00000 n 
+0001231247 00000 n 
+0001231373 00000 n 
+0001233591 00000 n 
+0001233159 00000 n 
+0001231624 00000 n 
+0001233275 00000 n 
+0001233402 00000 n 
+0001233528 00000 n 
+0001236218 00000 n 
+0001235912 00000 n 
+0001233778 00000 n 
+0001236028 00000 n 
+0001236154 00000 n 
+0001239772 00000 n 
+0001239018 00000 n 
+0001236376 00000 n 
+0001239134 00000 n 
+0001239198 00000 n 
+0001239261 00000 n 
+0001239325 00000 n 
+0001239389 00000 n 
+0001239453 00000 n 
+0001239517 00000 n 
+0001239581 00000 n 
+0001239708 00000 n 
+0004771750 00000 n 
+0001242412 00000 n 
+0001242105 00000 n 
+0001239971 00000 n 
+0001242221 00000 n 
+0001242348 00000 n 
+0001245097 00000 n 
+0001244790 00000 n 
+0001242613 00000 n 
+0001244906 00000 n 
+0001245033 00000 n 
+0001248047 00000 n 
+0001247613 00000 n 
+0001245298 00000 n 
+0001247729 00000 n 
+0001247856 00000 n 
+0001247983 00000 n 
+0001259427 00000 n 
+0001250159 00000 n 
+0001259772 00000 n 
+0001250022 00000 n 
+0001248205 00000 n 
+0001259580 00000 n 
+0001259708 00000 n 
+0001256039 00000 n 
+0001256157 00000 n 
+0001256205 00000 n 
+0001256600 00000 n 
+0001256623 00000 n 
+0001256970 00000 n 
+0001259404 00000 n 
+0001263010 00000 n 
+0001263163 00000 n 
+0001263313 00000 n 
+0001263654 00000 n 
+0001262855 00000 n 
+0001259904 00000 n 
+0001263462 00000 n 
+0001263590 00000 n 
+0001267182 00000 n 
+0001266754 00000 n 
+0001266904 00000 n 
+0001267374 00000 n 
+0001266608 00000 n 
+0001263784 00000 n 
+0001267054 00000 n 
+0001267310 00000 n 
+0004771876 00000 n 
+0001270108 00000 n 
+0001270618 00000 n 
+0001269864 00000 n 
+0001267476 00000 n 
+0001269980 00000 n 
+0001270172 00000 n 
+0001270236 00000 n 
+0001270300 00000 n 
+0001270427 00000 n 
+0001270554 00000 n 
+0001273415 00000 n 
+0001272854 00000 n 
+0001270734 00000 n 
+0001272970 00000 n 
+0001273097 00000 n 
+0001273224 00000 n 
+0001273351 00000 n 
+0001275685 00000 n 
+0001275903 00000 n 
+0001275548 00000 n 
+0001273573 00000 n 
+0001275839 00000 n 
+0001278754 00000 n 
+0001278447 00000 n 
+0001276005 00000 n 
+0001278563 00000 n 
+0001278690 00000 n 
+0001279494 00000 n 
+0001279314 00000 n 
+0001278969 00000 n 
+0001279430 00000 n 
+0001279877 00000 n 
+0001279697 00000 n 
+0001279596 00000 n 
+0001279813 00000 n 
+0004772002 00000 n 
+0001281887 00000 n 
+0001281580 00000 n 
+0001279919 00000 n 
+0001281696 00000 n 
+0001284150 00000 n 
+0001284622 00000 n 
+0001284013 00000 n 
+0001282017 00000 n 
+0001284304 00000 n 
+0001284431 00000 n 
+0001284558 00000 n 
+0001289952 00000 n 
+0001286909 00000 n 
+0001286602 00000 n 
+0001284752 00000 n 
+0001286718 00000 n 
+0001286845 00000 n 
+0001291875 00000 n 
+0001289511 00000 n 
+0001289668 00000 n 
+0001299735 00000 n 
+0001290143 00000 n 
+0001289365 00000 n 
+0001287053 00000 n 
+0001289825 00000 n 
+0001290079 00000 n 
+0001298510 00000 n 
+0001306160 00000 n 
+0001298574 00000 n 
+0001291759 00000 n 
+0001290287 00000 n 
+0001298382 00000 n 
+0001293591 00000 n 
+0001293709 00000 n 
+0001293757 00000 n 
+0001294170 00000 n 
+0001294428 00000 n 
+0001294451 00000 n 
+0001294772 00000 n 
+0001295036 00000 n 
+0001297448 00000 n 
+0001298337 00000 n 
+0001298360 00000 n 
+0001306224 00000 n 
+0001299619 00000 n 
+0001298720 00000 n 
+0001306032 00000 n 
+0004772128 00000 n 
+0001301438 00000 n 
+0001301556 00000 n 
+0001301604 00000 n 
+0001301983 00000 n 
+0001302241 00000 n 
+0001302264 00000 n 
+0001302575 00000 n 
+0001302839 00000 n 
+0001305098 00000 n 
+0001305987 00000 n 
+0001306010 00000 n 
+0001308686 00000 n 
+0001308256 00000 n 
+0001306412 00000 n 
+0001308372 00000 n 
+0001308499 00000 n 
+0001308622 00000 n 
+0001311201 00000 n 
+0001314930 00000 n 
+0001311682 00000 n 
+0001311064 00000 n 
+0001308816 00000 n 
+0001311364 00000 n 
+0001311491 00000 n 
+0001311618 00000 n 
+0001315426 00000 n 
+0001315098 00000 n 
+0001315937 00000 n 
+0001314784 00000 n 
+0001311854 00000 n 
+0001315298 00000 n 
+0001315490 00000 n 
+0001315554 00000 n 
+0001315618 00000 n 
+0001315682 00000 n 
+0001315746 00000 n 
+0001315873 00000 n 
+0001318892 00000 n 
+0001318585 00000 n 
+0001316178 00000 n 
+0001318701 00000 n 
+0001318828 00000 n 
+0001321569 00000 n 
+0001321262 00000 n 
+0001319008 00000 n 
+0001321378 00000 n 
+0001321505 00000 n 
+0001324246 00000 n 
+0001324716 00000 n 
+0001324109 00000 n 
+0001321685 00000 n 
+0001324400 00000 n 
+0001324525 00000 n 
+0001324652 00000 n 
+0004772254 00000 n 
+0001326475 00000 n 
+0001326295 00000 n 
+0001324860 00000 n 
+0001326411 00000 n 
+0001329123 00000 n 
+0001328305 00000 n 
+0001326633 00000 n 
+0001328421 00000 n 
+0001328548 00000 n 
+0001328612 00000 n 
+0001328676 00000 n 
+0001328740 00000 n 
+0001328804 00000 n 
+0001328868 00000 n 
+0001328932 00000 n 
+0001328996 00000 n 
+0001329059 00000 n 
+0001331668 00000 n 
+0001332145 00000 n 
+0001331531 00000 n 
+0001329267 00000 n 
+0001331826 00000 n 
+0001331953 00000 n 
+0001332017 00000 n 
+0001332081 00000 n 
+0001334406 00000 n 
+0001334470 00000 n 
+0001334162 00000 n 
+0001332275 00000 n 
+0001334278 00000 n 
+0001336090 00000 n 
+0001335910 00000 n 
+0001334586 00000 n 
+0001336026 00000 n 
+0001337901 00000 n 
+0001338254 00000 n 
+0001337764 00000 n 
+0001336206 00000 n 
+0001338062 00000 n 
+0001338126 00000 n 
+0001338190 00000 n 
+0004772380 00000 n 
+0001344134 00000 n 
+0001340191 00000 n 
+0001339755 00000 n 
+0001338398 00000 n 
+0001339871 00000 n 
+0001339935 00000 n 
+0001339999 00000 n 
+0001340063 00000 n 
+0001340127 00000 n 
+0001341584 00000 n 
+0001341404 00000 n 
+0001340335 00000 n 
+0001341520 00000 n 
+0001343852 00000 n 
+0001344198 00000 n 
+0001343715 00000 n 
+0001341700 00000 n 
+0001344006 00000 n 
+0001344070 00000 n 
+0001346272 00000 n 
+0001346336 00000 n 
+0001346028 00000 n 
+0001344328 00000 n 
+0001346144 00000 n 
+0001347838 00000 n 
+0001347530 00000 n 
+0001346452 00000 n 
+0001347646 00000 n 
+0001347710 00000 n 
+0001347774 00000 n 
+0001349522 00000 n 
+0001348958 00000 n 
+0001347968 00000 n 
+0001349074 00000 n 
+0001349138 00000 n 
+0001349202 00000 n 
+0001349266 00000 n 
+0001349330 00000 n 
+0001349394 00000 n 
+0001349458 00000 n 
+0004772506 00000 n 
+0001351879 00000 n 
+0001351317 00000 n 
+0001349638 00000 n 
+0001351433 00000 n 
+0001351560 00000 n 
+0001351624 00000 n 
+0001351688 00000 n 
+0001351815 00000 n 
+0001354984 00000 n 
+0001354550 00000 n 
+0001352094 00000 n 
+0001354666 00000 n 
+0001354793 00000 n 
+0001354920 00000 n 
+0001357687 00000 n 
+0001357253 00000 n 
+0001355142 00000 n 
+0001357369 00000 n 
+0001357496 00000 n 
+0001357623 00000 n 
+0001360180 00000 n 
+0001360348 00000 n 
+0001360542 00000 n 
+0001360714 00000 n 
+0001360926 00000 n 
+0001361116 00000 n 
+0001361329 00000 n 
+0001361522 00000 n 
+0001361717 00000 n 
+0001361917 00000 n 
+0001362153 00000 n 
+0001359962 00000 n 
+0001357817 00000 n 
+0001362089 00000 n 
+0001364563 00000 n 
+0001364716 00000 n 
+0001365205 00000 n 
+0001364417 00000 n 
+0001362339 00000 n 
+0001364887 00000 n 
+0001365014 00000 n 
+0001365141 00000 n 
+0001367671 00000 n 
+0001367364 00000 n 
+0001365391 00000 n 
+0001367480 00000 n 
+0001367607 00000 n 
+0004772632 00000 n 
+0001369034 00000 n 
+0001368854 00000 n 
+0001367815 00000 n 
+0001368970 00000 n 
+0001370435 00000 n 
+0001370129 00000 n 
+0001369150 00000 n 
+0001370245 00000 n 
+0001370371 00000 n 
+0001371654 00000 n 
+0001371474 00000 n 
+0001370565 00000 n 
+0001371590 00000 n 
+0001374330 00000 n 
+0001373641 00000 n 
+0001371770 00000 n 
+0001373757 00000 n 
+0001373884 00000 n 
+0001373948 00000 n 
+0001374012 00000 n 
+0001374076 00000 n 
+0001374140 00000 n 
+0001374204 00000 n 
+0001374268 00000 n 
+0001377084 00000 n 
+0001378130 00000 n 
+0001376947 00000 n 
+0001374530 00000 n 
+0001377236 00000 n 
+0001377300 00000 n 
+0001377364 00000 n 
+0001377428 00000 n 
+0001377492 00000 n 
+0001377556 00000 n 
+0001377620 00000 n 
+0001377684 00000 n 
+0001377748 00000 n 
+0001377812 00000 n 
+0001377939 00000 n 
+0001378066 00000 n 
+0001383519 00000 n 
+0001383091 00000 n 
+0001385435 00000 n 
+0001382945 00000 n 
+0001378301 00000 n 
+0001383391 00000 n 
+0001383583 00000 n 
+0001383647 00000 n 
+0001383711 00000 n 
+0001383775 00000 n 
+0001383839 00000 n 
+0001383903 00000 n 
+0001383967 00000 n 
+0001384031 00000 n 
+0001384094 00000 n 
+0001384158 00000 n 
+0001384221 00000 n 
+0001384285 00000 n 
+0001384347 00000 n 
+0001384411 00000 n 
+0001384475 00000 n 
+0001384539 00000 n 
+0001384603 00000 n 
+0001384667 00000 n 
+0001384731 00000 n 
+0001384795 00000 n 
+0001384859 00000 n 
+0001384923 00000 n 
+0001384987 00000 n 
+0001385051 00000 n 
+0001385115 00000 n 
+0001385179 00000 n 
+0001385243 00000 n 
+0001385307 00000 n 
+0001385371 00000 n 
+0001383241 00000 n 
+0004772758 00000 n 
+0001387853 00000 n 
+0001388013 00000 n 
+0001388173 00000 n 
+0001388513 00000 n 
+0001387698 00000 n 
+0001385592 00000 n 
+0001388322 00000 n 
+0001388449 00000 n 
+0001398114 00000 n 
+0001400418 00000 n 
+0001390443 00000 n 
+0001390136 00000 n 
+0001388671 00000 n 
+0001390252 00000 n 
+0001390379 00000 n 
+0001392354 00000 n 
+0001392826 00000 n 
+0001392217 00000 n 
+0001390601 00000 n 
+0001392508 00000 n 
+0001392635 00000 n 
+0001392762 00000 n 
+0001400546 00000 n 
+0001393925 00000 n 
+0001394527 00000 n 
+0001393788 00000 n 
+0001392970 00000 n 
+0001394082 00000 n 
+0001394209 00000 n 
+0001394336 00000 n 
+0001394463 00000 n 
+0001398178 00000 n 
+0001397870 00000 n 
+0001394671 00000 n 
+0001397986 00000 n 
+0001400610 00000 n 
+0001400174 00000 n 
+0001398308 00000 n 
+0001400290 00000 n 
+0004772884 00000 n 
+0001402429 00000 n 
+0001402123 00000 n 
+0001400726 00000 n 
+0001402239 00000 n 
+0001404108 00000 n 
+0001412155 00000 n 
+0001409998 00000 n 
+0001410154 00000 n 
+0001421779 00000 n 
+0001418056 00000 n 
+0001410629 00000 n 
+0001403962 00000 n 
+0001402630 00000 n 
+0001410310 00000 n 
+0001410437 00000 n 
+0001410565 00000 n 
+0001405654 00000 n 
+0001405772 00000 n 
+0001405820 00000 n 
+0001406193 00000 n 
+0001406451 00000 n 
+0001406474 00000 n 
+0001406779 00000 n 
+0001407043 00000 n 
+0001409064 00000 n 
+0001409953 00000 n 
+0001409976 00000 n 
+0001422070 00000 n 
+0001422262 00000 n 
+0001412018 00000 n 
+0001410803 00000 n 
+0001421942 00000 n 
+0001422198 00000 n 
+0001413712 00000 n 
+0001413830 00000 n 
+0001413878 00000 n 
+0001414251 00000 n 
+0001414509 00000 n 
+0001414532 00000 n 
+0001414837 00000 n 
+0001415101 00000 n 
+0001417122 00000 n 
+0001418011 00000 n 
+0001418034 00000 n 
+0001418973 00000 n 
+0001419091 00000 n 
+0001419139 00000 n 
+0001419532 00000 n 
+0001419554 00000 n 
+0001419852 00000 n 
+0001421756 00000 n 
+0001424953 00000 n 
+0001424518 00000 n 
+0001422423 00000 n 
+0001424634 00000 n 
+0001424761 00000 n 
+0001424825 00000 n 
+0001424889 00000 n 
+0001427470 00000 n 
+0001427099 00000 n 
+0001425083 00000 n 
+0001427215 00000 n 
+0001427279 00000 n 
+0001427406 00000 n 
+0001430338 00000 n 
+0001430031 00000 n 
+0001427600 00000 n 
+0001430147 00000 n 
+0001430274 00000 n 
+0004773010 00000 n 
+0001433080 00000 n 
+0001432900 00000 n 
+0001430468 00000 n 
+0001433016 00000 n 
+0001435512 00000 n 
+0001436256 00000 n 
+0001435366 00000 n 
+0001433210 00000 n 
+0001435810 00000 n 
+0001435937 00000 n 
+0001436001 00000 n 
+0001436065 00000 n 
+0001435662 00000 n 
+0001436192 00000 n 
+0001438768 00000 n 
+0001439109 00000 n 
+0001438631 00000 n 
+0001436386 00000 n 
+0001438919 00000 n 
+0001439046 00000 n 
+0001441796 00000 n 
+0001441986 00000 n 
+0001441553 00000 n 
+0001439296 00000 n 
+0001441669 00000 n 
+0001441922 00000 n 
+0001443734 00000 n 
+0001443890 00000 n 
+0001446677 00000 n 
+0001444487 00000 n 
+0001443588 00000 n 
+0001442116 00000 n 
+0001444041 00000 n 
+0001444168 00000 n 
+0001444295 00000 n 
+0001444423 00000 n 
+0001446960 00000 n 
+0001447471 00000 n 
+0001446540 00000 n 
+0001444617 00000 n 
+0001446832 00000 n 
+0001447024 00000 n 
+0001447088 00000 n 
+0001447152 00000 n 
+0001447279 00000 n 
+0001447407 00000 n 
+0004773136 00000 n 
+0001450162 00000 n 
+0001449601 00000 n 
+0001447642 00000 n 
+0001449717 00000 n 
+0001449844 00000 n 
+0001449971 00000 n 
+0001450098 00000 n 
+0001452488 00000 n 
+0001451733 00000 n 
+0001450363 00000 n 
+0001451849 00000 n 
+0001451913 00000 n 
+0001451977 00000 n 
+0001452041 00000 n 
+0001452105 00000 n 
+0001452169 00000 n 
+0001452233 00000 n 
+0001452297 00000 n 
+0001452361 00000 n 
+0001452424 00000 n 
+0001454521 00000 n 
+0001454214 00000 n 
+0001452660 00000 n 
+0001454330 00000 n 
+0001457393 00000 n 
+0001456959 00000 n 
+0001454637 00000 n 
+0001457075 00000 n 
+0001457202 00000 n 
+0001457329 00000 n 
+0001460337 00000 n 
+0001459902 00000 n 
+0001457509 00000 n 
+0001460018 00000 n 
+0001460145 00000 n 
+0001460273 00000 n 
+0001462200 00000 n 
+0001461892 00000 n 
+0001460481 00000 n 
+0001462008 00000 n 
+0001462136 00000 n 
+0004773262 00000 n 
+0001463490 00000 n 
+0001463310 00000 n 
+0001462330 00000 n 
+0001463426 00000 n 
+0001465777 00000 n 
+0001465470 00000 n 
+0001463620 00000 n 
+0001465586 00000 n 
+0001465713 00000 n 
+0001467685 00000 n 
+0001467505 00000 n 
+0001465907 00000 n 
+0001467621 00000 n 
+0001469931 00000 n 
+0001469496 00000 n 
+0001467858 00000 n 
+0001469612 00000 n 
+0001469740 00000 n 
+0001469867 00000 n 
+0001471785 00000 n 
+0001472133 00000 n 
+0001471648 00000 n 
+0001470118 00000 n 
+0001471941 00000 n 
+0001472069 00000 n 
+0001473835 00000 n 
+0001473655 00000 n 
+0001472263 00000 n 
+0001473771 00000 n 
+0004773388 00000 n 
+0001474997 00000 n 
+0001474817 00000 n 
+0001473951 00000 n 
+0001474933 00000 n 
+0001477210 00000 n 
+0001476902 00000 n 
+0001475113 00000 n 
+0001477018 00000 n 
+0001477146 00000 n 
+0001478995 00000 n 
+0001479542 00000 n 
+0001478858 00000 n 
+0001477411 00000 n 
+0001479158 00000 n 
+0001479286 00000 n 
+0001479414 00000 n 
+0001479478 00000 n 
+0001482392 00000 n 
+0001482549 00000 n 
+0001483822 00000 n 
+0001482237 00000 n 
+0001479672 00000 n 
+0001482863 00000 n 
+0001482991 00000 n 
+0001483055 00000 n 
+0001483119 00000 n 
+0001483183 00000 n 
+0001483247 00000 n 
+0001483311 00000 n 
+0001483375 00000 n 
+0001483439 00000 n 
+0001483502 00000 n 
+0001483566 00000 n 
+0001483630 00000 n 
+0001482706 00000 n 
+0001483758 00000 n 
+0001485768 00000 n 
+0001485332 00000 n 
+0001483993 00000 n 
+0001485448 00000 n 
+0001485576 00000 n 
+0001485704 00000 n 
+0001487399 00000 n 
+0001487874 00000 n 
+0001487262 00000 n 
+0001485912 00000 n 
+0001487554 00000 n 
+0001487682 00000 n 
+0001487810 00000 n 
+0004773514 00000 n 
+0001489664 00000 n 
+0001490153 00000 n 
+0001489518 00000 n 
+0001488004 00000 n 
+0001489961 00000 n 
+0001490089 00000 n 
+0001489813 00000 n 
+0001491716 00000 n 
+0001491536 00000 n 
+0001490283 00000 n 
+0001491652 00000 n 
+0001493432 00000 n 
+0001493252 00000 n 
+0001491889 00000 n 
+0001493368 00000 n 
+0001494741 00000 n 
+0001494433 00000 n 
+0001493548 00000 n 
+0001494549 00000 n 
+0001494677 00000 n 
+0001496481 00000 n 
+0001496173 00000 n 
+0001494871 00000 n 
+0001496289 00000 n 
+0001496417 00000 n 
+0001498216 00000 n 
+0001498036 00000 n 
+0001496611 00000 n 
+0001498152 00000 n 
+0004773640 00000 n 
+0001500176 00000 n 
+0001500568 00000 n 
+0001500039 00000 n 
+0001498346 00000 n 
+0001500376 00000 n 
+0001500504 00000 n 
+0001502072 00000 n 
+0001501892 00000 n 
+0001500754 00000 n 
+0001502008 00000 n 
+0001503403 00000 n 
+0001503223 00000 n 
+0001502188 00000 n 
+0001503339 00000 n 
+0001505648 00000 n 
+0001505340 00000 n 
+0001503519 00000 n 
+0001505456 00000 n 
+0001505584 00000 n 
+0001507611 00000 n 
+0001507303 00000 n 
+0001505778 00000 n 
+0001507419 00000 n 
+0001507547 00000 n 
+0001509824 00000 n 
+0001509516 00000 n 
+0001507755 00000 n 
+0001509632 00000 n 
+0001509760 00000 n 
+0004773766 00000 n 
+0001511656 00000 n 
+0001512290 00000 n 
+0001511510 00000 n 
+0001509968 00000 n 
+0001511970 00000 n 
+0001512098 00000 n 
+0001511814 00000 n 
+0001512226 00000 n 
+0001515102 00000 n 
+0001514666 00000 n 
+0001512420 00000 n 
+0001514782 00000 n 
+0001514846 00000 n 
+0001514910 00000 n 
+0001515038 00000 n 
+0001517694 00000 n 
+0001517908 00000 n 
+0001517557 00000 n 
+0001515218 00000 n 
+0001517844 00000 n 
+0001520596 00000 n 
+0001520288 00000 n 
+0001518052 00000 n 
+0001520404 00000 n 
+0001520532 00000 n 
+0001522972 00000 n 
+0001522792 00000 n 
+0001520754 00000 n 
+0001522908 00000 n 
+0001525371 00000 n 
+0001524807 00000 n 
+0001523173 00000 n 
+0001524923 00000 n 
+0001525051 00000 n 
+0001525179 00000 n 
+0001525307 00000 n 
+0004773892 00000 n 
+0001528038 00000 n 
+0001527858 00000 n 
+0001525515 00000 n 
+0001527974 00000 n 
+0001529399 00000 n 
+0001529219 00000 n 
+0001528168 00000 n 
+0001529335 00000 n 
+0001531459 00000 n 
+0001530895 00000 n 
+0001529515 00000 n 
+0001531011 00000 n 
+0001531139 00000 n 
+0001531267 00000 n 
+0001531395 00000 n 
+0001533511 00000 n 
+0001533075 00000 n 
+0001531589 00000 n 
+0001533191 00000 n 
+0001533319 00000 n 
+0001533447 00000 n 
+0001535459 00000 n 
+0001534896 00000 n 
+0001533641 00000 n 
+0001535012 00000 n 
+0001535140 00000 n 
+0001535268 00000 n 
+0001535396 00000 n 
+0001536859 00000 n 
+0001536679 00000 n 
+0001535589 00000 n 
+0001536795 00000 n 
+0004774018 00000 n 
+0001539121 00000 n 
+0001538813 00000 n 
+0001536975 00000 n 
+0001538929 00000 n 
+0001541383 00000 n 
+0001542137 00000 n 
+0001541237 00000 n 
+0001539237 00000 n 
+0001541691 00000 n 
+0001541819 00000 n 
+0001541537 00000 n 
+0001541945 00000 n 
+0001542073 00000 n 
+0001544710 00000 n 
+0001544530 00000 n 
+0001542323 00000 n 
+0001544646 00000 n 
+0001547587 00000 n 
+0001547407 00000 n 
+0001544826 00000 n 
+0001547523 00000 n 
+0001550265 00000 n 
+0001550085 00000 n 
+0001547717 00000 n 
+0001550201 00000 n 
+0001553143 00000 n 
+0001552707 00000 n 
+0001550395 00000 n 
+0001552823 00000 n 
+0001552951 00000 n 
+0001553079 00000 n 
+0004774144 00000 n 
+0001555957 00000 n 
+0001557263 00000 n 
+0001555820 00000 n 
+0001553301 00000 n 
+0001556111 00000 n 
+0001556239 00000 n 
+0001556367 00000 n 
+0001556495 00000 n 
+0001556623 00000 n 
+0001556687 00000 n 
+0001556751 00000 n 
+0001556815 00000 n 
+0001556879 00000 n 
+0001556943 00000 n 
+0001557007 00000 n 
+0001557071 00000 n 
+0001557135 00000 n 
+0001557199 00000 n 
+0001561717 00000 n 
+0001558819 00000 n 
+0001558447 00000 n 
+0001557434 00000 n 
+0001558563 00000 n 
+0001558627 00000 n 
+0001558691 00000 n 
+0001558755 00000 n 
+0001563215 00000 n 
+0001561580 00000 n 
+0001558935 00000 n 
+0001561871 00000 n 
+0001561999 00000 n 
+0001562127 00000 n 
+0001562191 00000 n 
+0001562255 00000 n 
+0001562319 00000 n 
+0001562383 00000 n 
+0001562447 00000 n 
+0001562511 00000 n 
+0001562575 00000 n 
+0001562639 00000 n 
+0001562703 00000 n 
+0001562767 00000 n 
+0001562831 00000 n 
+0001562895 00000 n 
+0001562959 00000 n 
+0001563023 00000 n 
+0001563087 00000 n 
+0001563151 00000 n 
+0001569439 00000 n 
+0001565913 00000 n 
+0001565542 00000 n 
+0001563386 00000 n 
+0001565658 00000 n 
+0001565722 00000 n 
+0001565849 00000 n 
+0001570939 00000 n 
+0001569302 00000 n 
+0001566057 00000 n 
+0001569595 00000 n 
+0001569723 00000 n 
+0001569787 00000 n 
+0001569851 00000 n 
+0001569915 00000 n 
+0001569979 00000 n 
+0001570043 00000 n 
+0001570107 00000 n 
+0001570171 00000 n 
+0001570235 00000 n 
+0001570299 00000 n 
+0001570363 00000 n 
+0001570427 00000 n 
+0001570491 00000 n 
+0001570555 00000 n 
+0001570619 00000 n 
+0001570683 00000 n 
+0001570747 00000 n 
+0001570811 00000 n 
+0001570875 00000 n 
+0001573261 00000 n 
+0001572633 00000 n 
+0001571096 00000 n 
+0001572749 00000 n 
+0001572813 00000 n 
+0001572877 00000 n 
+0001572941 00000 n 
+0001573005 00000 n 
+0001573069 00000 n 
+0001573197 00000 n 
+0004774270 00000 n 
+0001576650 00000 n 
+0001576806 00000 n 
+0001578232 00000 n 
+0001576504 00000 n 
+0001573405 00000 n 
+0001576956 00000 n 
+0001577084 00000 n 
+0001577148 00000 n 
+0001577212 00000 n 
+0001577276 00000 n 
+0001577340 00000 n 
+0001577404 00000 n 
+0001577468 00000 n 
+0001577532 00000 n 
+0001577596 00000 n 
+0001577660 00000 n 
+0001577724 00000 n 
+0001577788 00000 n 
+0001577852 00000 n 
+0001577915 00000 n 
+0001577979 00000 n 
+0001578041 00000 n 
+0001578105 00000 n 
+0001578168 00000 n 
+0003422931 00000 n 
+0001579802 00000 n 
+0001579622 00000 n 
+0001578403 00000 n 
+0001579738 00000 n 
+0001581453 00000 n 
+0001582005 00000 n 
+0001581316 00000 n 
+0001579975 00000 n 
+0001581621 00000 n 
+0001581685 00000 n 
+0001581749 00000 n 
+0001581813 00000 n 
+0001581877 00000 n 
+0001581941 00000 n 
+0001583717 00000 n 
+0001583345 00000 n 
+0001582177 00000 n 
+0001583461 00000 n 
+0001583525 00000 n 
+0001583589 00000 n 
+0001583653 00000 n 
+0001586498 00000 n 
+0001587805 00000 n 
+0001586361 00000 n 
+0001583833 00000 n 
+0001586654 00000 n 
+0001586782 00000 n 
+0001586910 00000 n 
+0001586974 00000 n 
+0001587038 00000 n 
+0001587101 00000 n 
+0001587165 00000 n 
+0001587229 00000 n 
+0001587293 00000 n 
+0001587357 00000 n 
+0001587421 00000 n 
+0001587485 00000 n 
+0001587549 00000 n 
+0001587613 00000 n 
+0001587677 00000 n 
+0001587741 00000 n 
+0001589414 00000 n 
+0001589598 00000 n 
+0001590379 00000 n 
+0001589259 00000 n 
+0001587976 00000 n 
+0001590059 00000 n 
+0001590187 00000 n 
+0001590315 00000 n 
+0001589828 00000 n 
+0004774396 00000 n 
+0001592394 00000 n 
+0001592087 00000 n 
+0001590565 00000 n 
+0001592203 00000 n 
+0001594876 00000 n 
+0001595220 00000 n 
+0001594739 00000 n 
+0001592524 00000 n 
+0001595028 00000 n 
+0001595156 00000 n 
+0001598005 00000 n 
+0001598197 00000 n 
+0001597761 00000 n 
+0001595421 00000 n 
+0001597877 00000 n 
+0001598133 00000 n 
+0004763593 00000 n 
+0001600483 00000 n 
+0001600303 00000 n 
+0001598355 00000 n 
+0001600419 00000 n 
+0001603130 00000 n 
+0001602822 00000 n 
+0001600698 00000 n 
+0001602938 00000 n 
+0001603066 00000 n 
+0001604935 00000 n 
+0001604627 00000 n 
+0001603274 00000 n 
+0001604743 00000 n 
+0001604871 00000 n 
+0004774522 00000 n 
+0001606798 00000 n 
+0001607139 00000 n 
+0001606661 00000 n 
+0001605065 00000 n 
+0001606947 00000 n 
+0001607075 00000 n 
+0001609232 00000 n 
+0001608796 00000 n 
+0001607269 00000 n 
+0001608912 00000 n 
+0001609040 00000 n 
+0001609168 00000 n 
+0001610804 00000 n 
+0001611026 00000 n 
+0001610667 00000 n 
+0001609419 00000 n 
+0001610962 00000 n 
+0001611423 00000 n 
+0001611243 00000 n 
+0001611142 00000 n 
+0001611359 00000 n 
+0001613495 00000 n 
+0001613187 00000 n 
+0001611465 00000 n 
+0001613303 00000 n 
+0001616112 00000 n 
+0001615804 00000 n 
+0001613611 00000 n 
+0001615920 00000 n 
+0001616048 00000 n 
+0004774648 00000 n 
+0001618837 00000 n 
+0001618401 00000 n 
+0001616284 00000 n 
+0001618517 00000 n 
+0001618645 00000 n 
+0001618773 00000 n 
+0001620997 00000 n 
+0001620817 00000 n 
+0001618995 00000 n 
+0001620933 00000 n 
+0001623430 00000 n 
+0001623779 00000 n 
+0001623293 00000 n 
+0001621127 00000 n 
+0001623588 00000 n 
+0001623716 00000 n 
+0001626122 00000 n 
+0001625843 00000 n 
+0001628354 00000 n 
+0001635230 00000 n 
+0001626314 00000 n 
+0001625706 00000 n 
+0001623937 00000 n 
+0001625994 00000 n 
+0001626250 00000 n 
+0001635509 00000 n 
+0001635701 00000 n 
+0001628217 00000 n 
+0001626444 00000 n 
+0001635381 00000 n 
+0001635637 00000 n 
+0001629326 00000 n 
+0001629444 00000 n 
+0001629492 00000 n 
+0001629875 00000 n 
+0001630285 00000 n 
+0001630307 00000 n 
+0001630598 00000 n 
+0001630920 00000 n 
+0001632606 00000 n 
+0001635184 00000 n 
+0001635207 00000 n 
+0001638574 00000 n 
+0001638266 00000 n 
+0001635847 00000 n 
+0001638382 00000 n 
+0001638510 00000 n 
+0004774774 00000 n 
+0001640656 00000 n 
+0001640284 00000 n 
+0001638718 00000 n 
+0001640400 00000 n 
+0001640464 00000 n 
+0001640528 00000 n 
+0001640592 00000 n 
+0001643102 00000 n 
+0001643250 00000 n 
+0001643399 00000 n 
+0001644122 00000 n 
+0001642947 00000 n 
+0001640772 00000 n 
+0001643547 00000 n 
+0001643675 00000 n 
+0001643803 00000 n 
+0001643931 00000 n 
+0001644059 00000 n 
+0001646770 00000 n 
+0001649494 00000 n 
+0001691503 00000 n 
+0001646962 00000 n 
+0001646526 00000 n 
+0001644266 00000 n 
+0001646642 00000 n 
+0001646898 00000 n 
+0001649558 00000 n 
+0001649250 00000 n 
+0001647106 00000 n 
+0001649366 00000 n 
+0001652069 00000 n 
+0001652856 00000 n 
+0001651932 00000 n 
+0001649688 00000 n 
+0001652280 00000 n 
+0001652408 00000 n 
+0001652536 00000 n 
+0001652600 00000 n 
+0001652664 00000 n 
+0001652792 00000 n 
+0001655625 00000 n 
+0001655254 00000 n 
+0001653042 00000 n 
+0001655370 00000 n 
+0001655434 00000 n 
+0001655497 00000 n 
+0001655561 00000 n 
+0004774900 00000 n 
+0001658547 00000 n 
+0001657984 00000 n 
+0001655840 00000 n 
+0001658100 00000 n 
+0001658228 00000 n 
+0001658356 00000 n 
+0001658483 00000 n 
+0001661306 00000 n 
+0001660870 00000 n 
+0001658734 00000 n 
+0001660986 00000 n 
+0001661114 00000 n 
+0001661242 00000 n 
+0004762249 00000 n 
+0001664354 00000 n 
+0001663918 00000 n 
+0001661478 00000 n 
+0001664034 00000 n 
+0001664162 00000 n 
+0001664290 00000 n 
+0001667204 00000 n 
+0001666896 00000 n 
+0001664498 00000 n 
+0001667012 00000 n 
+0001667140 00000 n 
+0001668180 00000 n 
+0001668000 00000 n 
+0001667348 00000 n 
+0001668116 00000 n 
+0001670693 00000 n 
+0001670385 00000 n 
+0001668310 00000 n 
+0001670501 00000 n 
+0001670629 00000 n 
+0004775026 00000 n 
+0001672144 00000 n 
+0001671964 00000 n 
+0001670851 00000 n 
+0001672080 00000 n 
+0001675388 00000 n 
+0001674634 00000 n 
+0001672288 00000 n 
+0001674750 00000 n 
+0001674814 00000 n 
+0001674878 00000 n 
+0001674941 00000 n 
+0001675005 00000 n 
+0001675068 00000 n 
+0001675196 00000 n 
+0001675324 00000 n 
+0001677791 00000 n 
+0001677483 00000 n 
+0001675574 00000 n 
+0001677599 00000 n 
+0001677727 00000 n 
+0001679725 00000 n 
+0001680067 00000 n 
+0001679588 00000 n 
+0001677935 00000 n 
+0001679875 00000 n 
+0001680003 00000 n 
+0001693152 00000 n 
+0001682564 00000 n 
+0001681872 00000 n 
+0001680197 00000 n 
+0001681988 00000 n 
+0001682116 00000 n 
+0001682244 00000 n 
+0001682372 00000 n 
+0001682436 00000 n 
+0001682500 00000 n 
+0001684106 00000 n 
+0001683798 00000 n 
+0001682694 00000 n 
+0001683914 00000 n 
+0001683978 00000 n 
+0001684042 00000 n 
+0004775152 00000 n 
+0001687034 00000 n 
+0001686343 00000 n 
+0001684293 00000 n 
+0001686459 00000 n 
+0001686523 00000 n 
+0001686587 00000 n 
+0001686651 00000 n 
+0001686715 00000 n 
+0001686843 00000 n 
+0001686970 00000 n 
+0001688932 00000 n 
+0001688560 00000 n 
+0001687191 00000 n 
+0001688676 00000 n 
+0001688740 00000 n 
+0001688804 00000 n 
+0001688868 00000 n 
+0001691567 00000 n 
+0001691260 00000 n 
+0001689061 00000 n 
+0001691376 00000 n 
+0001693216 00000 n 
+0001692908 00000 n 
+0001691683 00000 n 
+0001693024 00000 n 
+0001695157 00000 n 
+0001694721 00000 n 
+0001693318 00000 n 
+0001694837 00000 n 
+0001695093 00000 n 
+0001697986 00000 n 
+0001697679 00000 n 
+0001695287 00000 n 
+0001697795 00000 n 
+0001697922 00000 n 
+0004775278 00000 n 
+0001700634 00000 n 
+0001700326 00000 n 
+0001698173 00000 n 
+0001700442 00000 n 
+0001700570 00000 n 
+0001703219 00000 n 
+0001703039 00000 n 
+0001700792 00000 n 
+0001703155 00000 n 
+0001705881 00000 n 
+0001705701 00000 n 
+0001703335 00000 n 
+0001705817 00000 n 
+0001708377 00000 n 
+0001707813 00000 n 
+0001705983 00000 n 
+0001707929 00000 n 
+0001708057 00000 n 
+0001708185 00000 n 
+0001708313 00000 n 
+0001711121 00000 n 
+0001710557 00000 n 
+0001708493 00000 n 
+0001710673 00000 n 
+0001710801 00000 n 
+0001710929 00000 n 
+0001711057 00000 n 
+0001713954 00000 n 
+0001713390 00000 n 
+0001711237 00000 n 
+0001713506 00000 n 
+0001713634 00000 n 
+0001713762 00000 n 
+0001713890 00000 n 
+0004775404 00000 n 
+0001716700 00000 n 
+0001716392 00000 n 
+0001714112 00000 n 
+0001716508 00000 n 
+0001716636 00000 n 
+0001719472 00000 n 
+0001719038 00000 n 
+0001716816 00000 n 
+0001719154 00000 n 
+0001719281 00000 n 
+0001719409 00000 n 
+0001726257 00000 n 
+0001723122 00000 n 
+0001722305 00000 n 
+0001719602 00000 n 
+0001722421 00000 n 
+0001722485 00000 n 
+0001722549 00000 n 
+0001722612 00000 n 
+0001722676 00000 n 
+0001722739 00000 n 
+0001722803 00000 n 
+0001722931 00000 n 
+0001722994 00000 n 
+0001723058 00000 n 
+0001726405 00000 n 
+0001727768 00000 n 
+0001726111 00000 n 
+0001723293 00000 n 
+0001726553 00000 n 
+0001726681 00000 n 
+0001726745 00000 n 
+0001726809 00000 n 
+0001726873 00000 n 
+0001726937 00000 n 
+0001727001 00000 n 
+0001727065 00000 n 
+0001727129 00000 n 
+0001727257 00000 n 
+0001727321 00000 n 
+0001727384 00000 n 
+0001727448 00000 n 
+0001727512 00000 n 
+0001727576 00000 n 
+0001727704 00000 n 
+0001730241 00000 n 
+0001730061 00000 n 
+0001727939 00000 n 
+0001730177 00000 n 
+0001731773 00000 n 
+0001731593 00000 n 
+0001730442 00000 n 
+0001731709 00000 n 
+0004775530 00000 n 
+0001733786 00000 n 
+0001733478 00000 n 
+0001731946 00000 n 
+0001733594 00000 n 
+0001733722 00000 n 
+0001735432 00000 n 
+0001735124 00000 n 
+0001733930 00000 n 
+0001735240 00000 n 
+0001735368 00000 n 
+0001740285 00000 n 
+0001738089 00000 n 
+0001737653 00000 n 
+0001735562 00000 n 
+0001737769 00000 n 
+0001737897 00000 n 
+0001738025 00000 n 
+0001740458 00000 n 
+0001740644 00000 n 
+0001742824 00000 n 
+0001743002 00000 n 
+0001741279 00000 n 
+0001740130 00000 n 
+0001738219 00000 n 
+0001740831 00000 n 
+0001740959 00000 n 
+0001741087 00000 n 
+0001741215 00000 n 
+0001743172 00000 n 
+0001743359 00000 n 
+0001743546 00000 n 
+0001743926 00000 n 
+0001742651 00000 n 
+0001741465 00000 n 
+0001743734 00000 n 
+0001743862 00000 n 
+0001744393 00000 n 
+0001744213 00000 n 
+0001744112 00000 n 
+0001744329 00000 n 
+0004775656 00000 n 
+0001746637 00000 n 
+0001746073 00000 n 
+0001744435 00000 n 
+0001746189 00000 n 
+0001746445 00000 n 
+0001746573 00000 n 
+0001749519 00000 n 
+0001750280 00000 n 
+0001749373 00000 n 
+0001746753 00000 n 
+0001749834 00000 n 
+0004764478 00000 n 
+0001749677 00000 n 
+0001749962 00000 n 
+0001750089 00000 n 
+0001750152 00000 n 
+0001750216 00000 n 
+0001754051 00000 n 
+0001753231 00000 n 
+0001750479 00000 n 
+0001753347 00000 n 
+0001753411 00000 n 
+0001753539 00000 n 
+0001753603 00000 n 
+0001753667 00000 n 
+0001753795 00000 n 
+0001753859 00000 n 
+0001753923 00000 n 
+0001753987 00000 n 
+0001756916 00000 n 
+0001756354 00000 n 
+0001754222 00000 n 
+0001756470 00000 n 
+0001756598 00000 n 
+0001756726 00000 n 
+0001756790 00000 n 
+0001756854 00000 n 
+0001761793 00000 n 
+0001759457 00000 n 
+0001759021 00000 n 
+0001757045 00000 n 
+0001759137 00000 n 
+0001759201 00000 n 
+0001759265 00000 n 
+0001759393 00000 n 
+0001761962 00000 n 
+0001762694 00000 n 
+0001761647 00000 n 
+0001759600 00000 n 
+0001762119 00000 n 
+0001762247 00000 n 
+0001762375 00000 n 
+0001762503 00000 n 
+0001762630 00000 n 
+0004775782 00000 n 
+0001764771 00000 n 
+0001764335 00000 n 
+0001762838 00000 n 
+0001764451 00000 n 
+0001764515 00000 n 
+0001764579 00000 n 
+0001764643 00000 n 
+0001764707 00000 n 
+0001765195 00000 n 
+0001765015 00000 n 
+0001764914 00000 n 
+0001765131 00000 n 
+0001767560 00000 n 
+0001767060 00000 n 
+0001765237 00000 n 
+0001767176 00000 n 
+0001767368 00000 n 
+0001767432 00000 n 
+0001767496 00000 n 
+0001770138 00000 n 
+0001769702 00000 n 
+0001767717 00000 n 
+0001769818 00000 n 
+0001769946 00000 n 
+0001770074 00000 n 
+0001773011 00000 n 
+0001772576 00000 n 
+0001770311 00000 n 
+0001772692 00000 n 
+0001772820 00000 n 
+0001772947 00000 n 
+0001774936 00000 n 
+0001780679 00000 n 
+0001774820 00000 n 
+0001773141 00000 n 
+0001780231 00000 n 
+0001780359 00000 n 
+0001780487 00000 n 
+0001780615 00000 n 
+0004775908 00000 n 
+0001777733 00000 n 
+0001777851 00000 n 
+0001777899 00000 n 
+0001778272 00000 n 
+0001778295 00000 n 
+0001778582 00000 n 
+0001780208 00000 n 
+0001782815 00000 n 
+0001782507 00000 n 
+0001780853 00000 n 
+0001782623 00000 n 
+0001782751 00000 n 
+0001785468 00000 n 
+0001785160 00000 n 
+0001782945 00000 n 
+0001785276 00000 n 
+0001785404 00000 n 
+0001788021 00000 n 
+0001787713 00000 n 
+0001785598 00000 n 
+0001787829 00000 n 
+0001787957 00000 n 
+0001790498 00000 n 
+0001791110 00000 n 
+0001790361 00000 n 
+0001788208 00000 n 
+0001790662 00000 n 
+0001790790 00000 n 
+0001790918 00000 n 
+0001791046 00000 n 
+0001793296 00000 n 
+0001792988 00000 n 
+0001791254 00000 n 
+0001793104 00000 n 
+0001793232 00000 n 
+0001794324 00000 n 
+0001794144 00000 n 
+0001793440 00000 n 
+0001794260 00000 n 
+0004776034 00000 n 
+0001796536 00000 n 
+0001796386 00000 n 
+0001797327 00000 n 
+0001796231 00000 n 
+0001794440 00000 n 
+0001797007 00000 n 
+0001797263 00000 n 
+0001796772 00000 n 
+0001800095 00000 n 
+0001800735 00000 n 
+0001799851 00000 n 
+0001797555 00000 n 
+0001799967 00000 n 
+0001800159 00000 n 
+0001800223 00000 n 
+0001800287 00000 n 
+0001800351 00000 n 
+0001800415 00000 n 
+0001800479 00000 n 
+0001800543 00000 n 
+0001800671 00000 n 
+0001803433 00000 n 
+0001802869 00000 n 
+0001800892 00000 n 
+0001802985 00000 n 
+0001803113 00000 n 
+0001803177 00000 n 
+0001803241 00000 n 
+0001803305 00000 n 
+0001803369 00000 n 
+0001803871 00000 n 
+0001803691 00000 n 
+0001803590 00000 n 
+0001803807 00000 n 
+0001808308 00000 n 
+0001806155 00000 n 
+0001805719 00000 n 
+0001803913 00000 n 
+0001805835 00000 n 
+0001806091 00000 n 
+0001808814 00000 n 
+0001808162 00000 n 
+0001806285 00000 n 
+0001808622 00000 n 
+0001808465 00000 n 
+0001808750 00000 n 
+0004776160 00000 n 
+0001811768 00000 n 
+0001810886 00000 n 
+0001809016 00000 n 
+0001811002 00000 n 
+0001811130 00000 n 
+0001811193 00000 n 
+0001811257 00000 n 
+0001811321 00000 n 
+0001811385 00000 n 
+0001811449 00000 n 
+0001811513 00000 n 
+0001811577 00000 n 
+0001811704 00000 n 
+0001814880 00000 n 
+0001815924 00000 n 
+0001814743 00000 n 
+0001811912 00000 n 
+0001815031 00000 n 
+0001815159 00000 n 
+0001815287 00000 n 
+0001815351 00000 n 
+0001815415 00000 n 
+0001815479 00000 n 
+0001815542 00000 n 
+0001815606 00000 n 
+0001815669 00000 n 
+0001815733 00000 n 
+0001815796 00000 n 
+0001815860 00000 n 
+0001817832 00000 n 
+0001818176 00000 n 
+0001817695 00000 n 
+0001816081 00000 n 
+0001817984 00000 n 
+0001818112 00000 n 
+0001820112 00000 n 
+0001819804 00000 n 
+0001818334 00000 n 
+0001819920 00000 n 
+0001820048 00000 n 
+0001822213 00000 n 
+0001822033 00000 n 
+0001820313 00000 n 
+0001822149 00000 n 
+0001823844 00000 n 
+0001823664 00000 n 
+0001822357 00000 n 
+0001823780 00000 n 
+0004776286 00000 n 
+0001826698 00000 n 
+0001826848 00000 n 
+0001827000 00000 n 
+0001827814 00000 n 
+0001826534 00000 n 
+0001823988 00000 n 
+0001827303 00000 n 
+0001827367 00000 n 
+0001827430 00000 n 
+0001827494 00000 n 
+0001827622 00000 n 
+0001827750 00000 n 
+0001827152 00000 n 
+0001831794 00000 n 
+0001833837 00000 n 
+0001831550 00000 n 
+0001827971 00000 n 
+0001831666 00000 n 
+0001831858 00000 n 
+0001831922 00000 n 
+0001831986 00000 n 
+0001832050 00000 n 
+0001832114 00000 n 
+0001832178 00000 n 
+0001832242 00000 n 
+0001832306 00000 n 
+0001832369 00000 n 
+0001832433 00000 n 
+0001832496 00000 n 
+0001832560 00000 n 
+0001832622 00000 n 
+0001832686 00000 n 
+0001832750 00000 n 
+0001832814 00000 n 
+0001832878 00000 n 
+0001832942 00000 n 
+0001833006 00000 n 
+0001833070 00000 n 
+0001833134 00000 n 
+0001833198 00000 n 
+0001833262 00000 n 
+0001833326 00000 n 
+0001833390 00000 n 
+0001833454 00000 n 
+0001833518 00000 n 
+0001833582 00000 n 
+0001833646 00000 n 
+0001833774 00000 n 
+0001836575 00000 n 
+0001837675 00000 n 
+0001836459 00000 n 
+0001833994 00000 n 
+0001837611 00000 n 
+0001836959 00000 n 
+0001837077 00000 n 
+0001837125 00000 n 
+0001837590 00000 n 
+0001840564 00000 n 
+0001840906 00000 n 
+0001840427 00000 n 
+0001837933 00000 n 
+0001840716 00000 n 
+0001840842 00000 n 
+0001859628 00000 n 
+0001843713 00000 n 
+0001843533 00000 n 
+0001841064 00000 n 
+0001843649 00000 n 
+0001846259 00000 n 
+0001845952 00000 n 
+0001843871 00000 n 
+0001846068 00000 n 
+0001846196 00000 n 
+0004776412 00000 n 
+0001848556 00000 n 
+0001848707 00000 n 
+0001849049 00000 n 
+0001848410 00000 n 
+0001846431 00000 n 
+0001848857 00000 n 
+0001848985 00000 n 
+0001852005 00000 n 
+0001852161 00000 n 
+0001852317 00000 n 
+0001852793 00000 n 
+0001851850 00000 n 
+0001849207 00000 n 
+0001852474 00000 n 
+0001852602 00000 n 
+0001852729 00000 n 
+0001855801 00000 n 
+0001855517 00000 n 
+0001855865 00000 n 
+0001855380 00000 n 
+0001852951 00000 n 
+0001855673 00000 n 
+0001859692 00000 n 
+0001859128 00000 n 
+0001856009 00000 n 
+0001859244 00000 n 
+0004764626 00000 n 
+0001859308 00000 n 
+0001859372 00000 n 
+0001859436 00000 n 
+0001859500 00000 n 
+0001862341 00000 n 
+0001862521 00000 n 
+0001862760 00000 n 
+0001862195 00000 n 
+0001859905 00000 n 
+0001862696 00000 n 
+0001865855 00000 n 
+0001865419 00000 n 
+0001862960 00000 n 
+0001865535 00000 n 
+0001865663 00000 n 
+0001865791 00000 n 
+0004776538 00000 n 
+0001868618 00000 n 
+0001869091 00000 n 
+0001868481 00000 n 
+0001866041 00000 n 
+0001868771 00000 n 
+0001868899 00000 n 
+0001869027 00000 n 
+0001872513 00000 n 
+0001873537 00000 n 
+0001872269 00000 n 
+0001869263 00000 n 
+0001872385 00000 n 
+0001872577 00000 n 
+0001872641 00000 n 
+0001872705 00000 n 
+0001872769 00000 n 
+0001872833 00000 n 
+0001872897 00000 n 
+0001872961 00000 n 
+0001873025 00000 n 
+0001873089 00000 n 
+0001873153 00000 n 
+0001873217 00000 n 
+0001873281 00000 n 
+0001873345 00000 n 
+0001873409 00000 n 
+0001873473 00000 n 
+0001876217 00000 n 
+0001876037 00000 n 
+0001873750 00000 n 
+0001876153 00000 n 
+0001878691 00000 n 
+0001878383 00000 n 
+0001876460 00000 n 
+0001878499 00000 n 
+0001878627 00000 n 
+0001881947 00000 n 
+0001881511 00000 n 
+0001878935 00000 n 
+0001881627 00000 n 
+0001881755 00000 n 
+0001881883 00000 n 
+0001884711 00000 n 
+0001885310 00000 n 
+0001884574 00000 n 
+0001882119 00000 n 
+0001884863 00000 n 
+0001884991 00000 n 
+0001885055 00000 n 
+0001885119 00000 n 
+0001885183 00000 n 
+0001885246 00000 n 
+0004776664 00000 n 
+0001888601 00000 n 
+0001888293 00000 n 
+0001885482 00000 n 
+0001888409 00000 n 
+0001888537 00000 n 
+0001890503 00000 n 
+0001890323 00000 n 
+0001888759 00000 n 
+0001890439 00000 n 
+0001893000 00000 n 
+0001892693 00000 n 
+0001890661 00000 n 
+0001892809 00000 n 
+0001892936 00000 n 
+0001895724 00000 n 
+0001895416 00000 n 
+0001893215 00000 n 
+0001895532 00000 n 
+0001895660 00000 n 
+0001897821 00000 n 
+0001897513 00000 n 
+0001895896 00000 n 
+0001897629 00000 n 
+0001897757 00000 n 
+0001899209 00000 n 
+0001899029 00000 n 
+0001897951 00000 n 
+0001899145 00000 n 
+0004776790 00000 n 
+0001901552 00000 n 
+0001901245 00000 n 
+0001899311 00000 n 
+0001901361 00000 n 
+0001901489 00000 n 
+0001903627 00000 n 
+0001903319 00000 n 
+0001901710 00000 n 
+0001903435 00000 n 
+0001903563 00000 n 
+0001906408 00000 n 
+0001906100 00000 n 
+0001903757 00000 n 
+0001906216 00000 n 
+0001906344 00000 n 
+0001908622 00000 n 
+0001908315 00000 n 
+0001906552 00000 n 
+0001908431 00000 n 
+0001908558 00000 n 
+0001910661 00000 n 
+0001910354 00000 n 
+0001908794 00000 n 
+0001910470 00000 n 
+0001910598 00000 n 
+0001913299 00000 n 
+0001912863 00000 n 
+0001910819 00000 n 
+0001912979 00000 n 
+0001913107 00000 n 
+0001913235 00000 n 
+0004776916 00000 n 
+0001916506 00000 n 
+0001915879 00000 n 
+0001913514 00000 n 
+0001915995 00000 n 
+0001916059 00000 n 
+0001916122 00000 n 
+0001916186 00000 n 
+0001916250 00000 n 
+0001916314 00000 n 
+0001916442 00000 n 
+0001919642 00000 n 
+0001919142 00000 n 
+0001916692 00000 n 
+0001919258 00000 n 
+0001919322 00000 n 
+0001919386 00000 n 
+0001919450 00000 n 
+0001919514 00000 n 
+0001919578 00000 n 
+0001922871 00000 n 
+0001922243 00000 n 
+0001919800 00000 n 
+0001922359 00000 n 
+0001922423 00000 n 
+0001922487 00000 n 
+0001922551 00000 n 
+0001922615 00000 n 
+0001922679 00000 n 
+0001922807 00000 n 
+0001925405 00000 n 
+0001925751 00000 n 
+0001925268 00000 n 
+0001923029 00000 n 
+0001925559 00000 n 
+0001925687 00000 n 
+0001928885 00000 n 
+0001928193 00000 n 
+0001925923 00000 n 
+0001928309 00000 n 
+0001928437 00000 n 
+0001928565 00000 n 
+0001928629 00000 n 
+0001928693 00000 n 
+0001928757 00000 n 
+0001928821 00000 n 
+0001934486 00000 n 
+0001932239 00000 n 
+0001931355 00000 n 
+0001929015 00000 n 
+0001931471 00000 n 
+0001931535 00000 n 
+0001931599 00000 n 
+0001931663 00000 n 
+0001931727 00000 n 
+0001931791 00000 n 
+0001931855 00000 n 
+0001931919 00000 n 
+0001931983 00000 n 
+0001932047 00000 n 
+0001932111 00000 n 
+0001932175 00000 n 
+0004777042 00000 n 
+0001935739 00000 n 
+0001934370 00000 n 
+0001932383 00000 n 
+0001935547 00000 n 
+0001935675 00000 n 
+0001934869 00000 n 
+0001934987 00000 n 
+0001935035 00000 n 
+0001935526 00000 n 
+0001936879 00000 n 
+0001936699 00000 n 
+0001935983 00000 n 
+0001936815 00000 n 
+0001938699 00000 n 
+0001938391 00000 n 
+0001936981 00000 n 
+0001938507 00000 n 
+0001938635 00000 n 
+0001941313 00000 n 
+0001941133 00000 n 
+0001938871 00000 n 
+0001941249 00000 n 
+0001943987 00000 n 
+0001943679 00000 n 
+0001941557 00000 n 
+0001943795 00000 n 
+0001943923 00000 n 
+0001946536 00000 n 
+0001946228 00000 n 
+0001944145 00000 n 
+0001946344 00000 n 
+0001946472 00000 n 
+0004777168 00000 n 
+0001947592 00000 n 
+0001947412 00000 n 
+0001946680 00000 n 
+0001947528 00000 n 
+0001948897 00000 n 
+0001948717 00000 n 
+0001947694 00000 n 
+0001948833 00000 n 
+0001953503 00000 n 
+0001953817 00000 n 
+0001951131 00000 n 
+0001950823 00000 n 
+0001949013 00000 n 
+0001950939 00000 n 
+0001951067 00000 n 
+0001953973 00000 n 
+0001954152 00000 n 
+0001954780 00000 n 
+0001953330 00000 n 
+0001951275 00000 n 
+0001954332 00000 n 
+0001954460 00000 n 
+0001953660 00000 n 
+0001954588 00000 n 
+0001954716 00000 n 
+0002580917 00000 n 
+0001957415 00000 n 
+0001956851 00000 n 
+0001954966 00000 n 
+0001956967 00000 n 
+0001957095 00000 n 
+0001957223 00000 n 
+0001957351 00000 n 
+0001959940 00000 n 
+0001960534 00000 n 
+0001959803 00000 n 
+0001957559 00000 n 
+0001960150 00000 n 
+0001960214 00000 n 
+0001960278 00000 n 
+0001960342 00000 n 
+0001960470 00000 n 
+0004777294 00000 n 
+0001962729 00000 n 
+0001962549 00000 n 
+0001960748 00000 n 
+0001962665 00000 n 
+0001965585 00000 n 
+0001965277 00000 n 
+0001962873 00000 n 
+0001965393 00000 n 
+0001965521 00000 n 
+0001971530 00000 n 
+0001971068 00000 n 
+0001968645 00000 n 
+0001968338 00000 n 
+0001965757 00000 n 
+0001968454 00000 n 
+0001968582 00000 n 
+0001971225 00000 n 
+0001971709 00000 n 
+0001972451 00000 n 
+0001970895 00000 n 
+0001968831 00000 n 
+0001971877 00000 n 
+0001972005 00000 n 
+0001971378 00000 n 
+0001972132 00000 n 
+0001972260 00000 n 
+0001972388 00000 n 
+0001973651 00000 n 
+0001973471 00000 n 
+0001972637 00000 n 
+0001973587 00000 n 
+0001974034 00000 n 
+0001973854 00000 n 
+0001973753 00000 n 
+0001973970 00000 n 
+0004777420 00000 n 
+0001976140 00000 n 
+0001975979 00000 n 
+0001979803 00000 n 
+0001976883 00000 n 
+0001975833 00000 n 
+0001974076 00000 n 
+0001976309 00000 n 
+0001976563 00000 n 
+0001976691 00000 n 
+0001976819 00000 n 
+0001979974 00000 n 
+0001980481 00000 n 
+0001979657 00000 n 
+0001977055 00000 n 
+0001980161 00000 n 
+0001980289 00000 n 
+0001980417 00000 n 
+0001982942 00000 n 
+0001983292 00000 n 
+0001982805 00000 n 
+0001980695 00000 n 
+0001983101 00000 n 
+0001983228 00000 n 
+0001987072 00000 n 
+0001986785 00000 n 
+0001988092 00000 n 
+0001986648 00000 n 
+0001983536 00000 n 
+0001986944 00000 n 
+0001987136 00000 n 
+0001987200 00000 n 
+0001987264 00000 n 
+0001987328 00000 n 
+0001987392 00000 n 
+0001987456 00000 n 
+0001987520 00000 n 
+0001987584 00000 n 
+0001987647 00000 n 
+0001987711 00000 n 
+0001987774 00000 n 
+0001987838 00000 n 
+0001987900 00000 n 
+0001988028 00000 n 
+0001991936 00000 n 
+0001993660 00000 n 
+0001991692 00000 n 
+0001988249 00000 n 
+0001991808 00000 n 
+0001992000 00000 n 
+0001992064 00000 n 
+0001992128 00000 n 
+0001992192 00000 n 
+0001992256 00000 n 
+0001992320 00000 n 
+0001992384 00000 n 
+0001992448 00000 n 
+0001992511 00000 n 
+0001992575 00000 n 
+0001992638 00000 n 
+0001992702 00000 n 
+0001992764 00000 n 
+0001992828 00000 n 
+0001992892 00000 n 
+0001992956 00000 n 
+0001993020 00000 n 
+0001993084 00000 n 
+0001993148 00000 n 
+0001993212 00000 n 
+0001993276 00000 n 
+0001993340 00000 n 
+0001993404 00000 n 
+0001993468 00000 n 
+0001993596 00000 n 
+0001996627 00000 n 
+0001996128 00000 n 
+0001993831 00000 n 
+0001996244 00000 n 
+0001996372 00000 n 
+0001996499 00000 n 
+0001996563 00000 n 
+0004777546 00000 n 
+0001999511 00000 n 
+0001998883 00000 n 
+0001996757 00000 n 
+0001998999 00000 n 
+0001999063 00000 n 
+0001999127 00000 n 
+0001999191 00000 n 
+0001999255 00000 n 
+0001999319 00000 n 
+0001999447 00000 n 
+0002001884 00000 n 
+0002001578 00000 n 
+0001999669 00000 n 
+0002001694 00000 n 
+0002004186 00000 n 
+0002004697 00000 n 
+0002004040 00000 n 
+0002002127 00000 n 
+0002004505 00000 n 
+0002004633 00000 n 
+0002004347 00000 n 
+0002007398 00000 n 
+0002006963 00000 n 
+0002004855 00000 n 
+0002007079 00000 n 
+0002007207 00000 n 
+0002007334 00000 n 
+0002009912 00000 n 
+0002012700 00000 n 
+0002010380 00000 n 
+0002009775 00000 n 
+0002007528 00000 n 
+0002010061 00000 n 
+0002010189 00000 n 
+0002010316 00000 n 
+0002033811 00000 n 
+0002033875 00000 n 
+0002012584 00000 n 
+0002010581 00000 n 
+0002033683 00000 n 
+0004777672 00000 n 
+0002033494 00000 n 
+0002036335 00000 n 
+0002037990 00000 n 
+0002069274 00000 n 
+0002036677 00000 n 
+0002036198 00000 n 
+0002034023 00000 n 
+0002036485 00000 n 
+0002036613 00000 n 
+0002069552 00000 n 
+0002053247 00000 n 
+0002069872 00000 n 
+0002037853 00000 n 
+0002036850 00000 n 
+0002069424 00000 n 
+0002069680 00000 n 
+0002069808 00000 n 
+0002053061 00000 n 
+0002069087 00000 n 
+0002072571 00000 n 
+0002072264 00000 n 
+0002070063 00000 n 
+0002072380 00000 n 
+0002072508 00000 n 
+0002076982 00000 n 
+0002074732 00000 n 
+0002074424 00000 n 
+0002072759 00000 n 
+0002074540 00000 n 
+0002074668 00000 n 
+0002077351 00000 n 
+0002076845 00000 n 
+0002074919 00000 n 
+0002077160 00000 n 
+0002077288 00000 n 
+0002080105 00000 n 
+0002082923 00000 n 
+0002080480 00000 n 
+0002079968 00000 n 
+0002077595 00000 n 
+0002080288 00000 n 
+0002080416 00000 n 
+0004777798 00000 n 
+0002083293 00000 n 
+0002082786 00000 n 
+0002080680 00000 n 
+0002083101 00000 n 
+0002083229 00000 n 
+0002085795 00000 n 
+0002085488 00000 n 
+0002083578 00000 n 
+0002085604 00000 n 
+0002085732 00000 n 
+0002088061 00000 n 
+0002087626 00000 n 
+0002085996 00000 n 
+0002087742 00000 n 
+0002087870 00000 n 
+0002087997 00000 n 
+0002090071 00000 n 
+0002092247 00000 n 
+0002142960 00000 n 
+0002090541 00000 n 
+0002089934 00000 n 
+0002088205 00000 n 
+0002090221 00000 n 
+0002090349 00000 n 
+0002090477 00000 n 
+0002143238 00000 n 
+0002114859 00000 n 
+0002178853 00000 n 
+0002143558 00000 n 
+0002092110 00000 n 
+0002090699 00000 n 
+0002143110 00000 n 
+0002143366 00000 n 
+0002143494 00000 n 
+0002114672 00000 n 
+0002142771 00000 n 
+0002145997 00000 n 
+0002179008 00000 n 
+0002181220 00000 n 
+0002210814 00000 n 
+0002179356 00000 n 
+0002145851 00000 n 
+0002143777 00000 n 
+0002179164 00000 n 
+0002179292 00000 n 
+0004777924 00000 n 
+0002178664 00000 n 
+0002211241 00000 n 
+0002213080 00000 n 
+0002210964 00000 n 
+0002260511 00000 n 
+0002211561 00000 n 
+0002181074 00000 n 
+0002179546 00000 n 
+0002211113 00000 n 
+0002211369 00000 n 
+0002211497 00000 n 
+0002210625 00000 n 
+0002258711 00000 n 
+0002291392 00000 n 
+0002258903 00000 n 
+0002212964 00000 n 
+0002211737 00000 n 
+0002258583 00000 n 
+0002258839 00000 n 
+0002258394 00000 n 
+0002291456 00000 n 
+0002260395 00000 n 
+0002259079 00000 n 
+0002291264 00000 n 
+0002291075 00000 n 
+0002294146 00000 n 
+0002293966 00000 n 
+0002291618 00000 n 
+0002294082 00000 n 
+0002296608 00000 n 
+0002296301 00000 n 
+0002294290 00000 n 
+0002296417 00000 n 
+0002296545 00000 n 
+0002299266 00000 n 
+0002298830 00000 n 
+0002296752 00000 n 
+0002298946 00000 n 
+0002299074 00000 n 
+0002299202 00000 n 
+0004778050 00000 n 
+0002301978 00000 n 
+0002301542 00000 n 
+0002299468 00000 n 
+0002301658 00000 n 
+0002301786 00000 n 
+0002301914 00000 n 
+0002304188 00000 n 
+0002304008 00000 n 
+0002302136 00000 n 
+0002304124 00000 n 
+0002306649 00000 n 
+0002307121 00000 n 
+0002306512 00000 n 
+0002304403 00000 n 
+0002306801 00000 n 
+0002306929 00000 n 
+0002307057 00000 n 
+0002310558 00000 n 
+0002310091 00000 n 
+0002312109 00000 n 
+0002310248 00000 n 
+0002310622 00000 n 
+0002309945 00000 n 
+0002307293 00000 n 
+0002310430 00000 n 
+0002359305 00000 n 
+0002359019 00000 n 
+0002359369 00000 n 
+0002311972 00000 n 
+0002310836 00000 n 
+0002359177 00000 n 
+0002358830 00000 n 
+0002364161 00000 n 
+0002361490 00000 n 
+0002364636 00000 n 
+0002361353 00000 n 
+0002359531 00000 n 
+0002364316 00000 n 
+0002364444 00000 n 
+0002364572 00000 n 
+0004778176 00000 n 
+0002362132 00000 n 
+0002362250 00000 n 
+0002362298 00000 n 
+0002362525 00000 n 
+0002362547 00000 n 
+0002362822 00000 n 
+0002364138 00000 n 
+0002370379 00000 n 
+0002367197 00000 n 
+0002370536 00000 n 
+0002373780 00000 n 
+0002371033 00000 n 
+0002367051 00000 n 
+0002364824 00000 n 
+0002370716 00000 n 
+0002370843 00000 n 
+0002370969 00000 n 
+0002368074 00000 n 
+0002368192 00000 n 
+0002368240 00000 n 
+0002368479 00000 n 
+0002368501 00000 n 
+0002368782 00000 n 
+0002370356 00000 n 
+0002373962 00000 n 
+0002374147 00000 n 
+0002374356 00000 n 
+0002374535 00000 n 
+0002377913 00000 n 
+0002374904 00000 n 
+0002373607 00000 n 
+0002371263 00000 n 
+0002374712 00000 n 
+0002374840 00000 n 
+0002377314 00000 n 
+0002377464 00000 n 
+0002377764 00000 n 
+0002379931 00000 n 
+0002437742 00000 n 
+0002378573 00000 n 
+0002377141 00000 n 
+0002375104 00000 n 
+0002378125 00000 n 
+0002378253 00000 n 
+0002378381 00000 n 
+0002377614 00000 n 
+0002378509 00000 n 
+0002438021 00000 n 
+0002438277 00000 n 
+0002407990 00000 n 
+0002438341 00000 n 
+0002379794 00000 n 
+0002378759 00000 n 
+0002437893 00000 n 
+0002438149 00000 n 
+0002407803 00000 n 
+0002437553 00000 n 
+0002441058 00000 n 
+0002443464 00000 n 
+0002441721 00000 n 
+0002440921 00000 n 
+0002438518 00000 n 
+0002441209 00000 n 
+0002441337 00000 n 
+0002441465 00000 n 
+0002441529 00000 n 
+0002441593 00000 n 
+0002441657 00000 n 
+0002474342 00000 n 
+0002474534 00000 n 
+0002443348 00000 n 
+0002441906 00000 n 
+0002474214 00000 n 
+0002474470 00000 n 
+0004778302 00000 n 
+0002474025 00000 n 
+0002477211 00000 n 
+0002477886 00000 n 
+0002477065 00000 n 
+0002474738 00000 n 
+0002477566 00000 n 
+0002477694 00000 n 
+0002477390 00000 n 
+0002477822 00000 n 
+0002480814 00000 n 
+0002480250 00000 n 
+0002478044 00000 n 
+0002480366 00000 n 
+0002480494 00000 n 
+0002480622 00000 n 
+0002480750 00000 n 
+0002483780 00000 n 
+0002483218 00000 n 
+0002480972 00000 n 
+0002483334 00000 n 
+0002483461 00000 n 
+0002483588 00000 n 
+0002483716 00000 n 
+0002486333 00000 n 
+0002486814 00000 n 
+0002486196 00000 n 
+0002483896 00000 n 
+0002486494 00000 n 
+0002486622 00000 n 
+0002486750 00000 n 
+0002490213 00000 n 
+0002490367 00000 n 
+0002492522 00000 n 
+0002490058 00000 n 
+0002487000 00000 n 
+0002490730 00000 n 
+0002490858 00000 n 
+0002490986 00000 n 
+0002491050 00000 n 
+0002491114 00000 n 
+0002491178 00000 n 
+0002491242 00000 n 
+0002491306 00000 n 
+0002491370 00000 n 
+0002491434 00000 n 
+0002491498 00000 n 
+0002491562 00000 n 
+0002491626 00000 n 
+0002491690 00000 n 
+0002491754 00000 n 
+0002491818 00000 n 
+0002491882 00000 n 
+0002491946 00000 n 
+0002492010 00000 n 
+0002492074 00000 n 
+0002492138 00000 n 
+0002492202 00000 n 
+0002492266 00000 n 
+0002492330 00000 n 
+0002492458 00000 n 
+0002490549 00000 n 
+0002493929 00000 n 
+0002493749 00000 n 
+0002492693 00000 n 
+0002493865 00000 n 
+0004778428 00000 n 
+0002496084 00000 n 
+0002495776 00000 n 
+0002494059 00000 n 
+0002495892 00000 n 
+0002496020 00000 n 
+0002501110 00000 n 
+0002498439 00000 n 
+0002498003 00000 n 
+0002496285 00000 n 
+0002498119 00000 n 
+0002498247 00000 n 
+0002498375 00000 n 
+0002501486 00000 n 
+0002500973 00000 n 
+0002498654 00000 n 
+0002501294 00000 n 
+0002501422 00000 n 
+0002502863 00000 n 
+0002502683 00000 n 
+0002501772 00000 n 
+0002502799 00000 n 
+0002505045 00000 n 
+0002505431 00000 n 
+0002504899 00000 n 
+0002503036 00000 n 
+0002505367 00000 n 
+0002505206 00000 n 
+0002508362 00000 n 
+0002508054 00000 n 
+0002505618 00000 n 
+0002508170 00000 n 
+0002508298 00000 n 
+0004778554 00000 n 
+0002511202 00000 n 
+0002510766 00000 n 
+0002508548 00000 n 
+0002510882 00000 n 
+0002511010 00000 n 
+0002511138 00000 n 
+0002512610 00000 n 
+0002512430 00000 n 
+0002511388 00000 n 
+0002512546 00000 n 
+0002514703 00000 n 
+0002514331 00000 n 
+0002512712 00000 n 
+0002514447 00000 n 
+0002514575 00000 n 
+0002514639 00000 n 
+0002517397 00000 n 
+0002516769 00000 n 
+0002514918 00000 n 
+0002516885 00000 n 
+0002516949 00000 n 
+0002517013 00000 n 
+0002517077 00000 n 
+0002517141 00000 n 
+0002517269 00000 n 
+0002517333 00000 n 
+0002519981 00000 n 
+0002519545 00000 n 
+0002517612 00000 n 
+0002519661 00000 n 
+0002519725 00000 n 
+0002519789 00000 n 
+0002519917 00000 n 
+0002577468 00000 n 
+0002521182 00000 n 
+0002577938 00000 n 
+0002521045 00000 n 
+0002520196 00000 n 
+0002577618 00000 n 
+0002577746 00000 n 
+0002577874 00000 n 
+0004778680 00000 n 
+0002577279 00000 n 
+0002580981 00000 n 
+0002580545 00000 n 
+0002578114 00000 n 
+0002580661 00000 n 
+0002580789 00000 n 
+0002583721 00000 n 
+0002583157 00000 n 
+0002581139 00000 n 
+0002583273 00000 n 
+0002583401 00000 n 
+0002583465 00000 n 
+0002583529 00000 n 
+0002583593 00000 n 
+0002583657 00000 n 
+0002586214 00000 n 
+0002585906 00000 n 
+0002583893 00000 n 
+0002586022 00000 n 
+0002586150 00000 n 
+0002589114 00000 n 
+0002588678 00000 n 
+0002586372 00000 n 
+0002588794 00000 n 
+0002588922 00000 n 
+0002589050 00000 n 
+0002591080 00000 n 
+0002590772 00000 n 
+0002589300 00000 n 
+0002590888 00000 n 
+0002591016 00000 n 
+0002594019 00000 n 
+0002593647 00000 n 
+0002591224 00000 n 
+0002593763 00000 n 
+0002593891 00000 n 
+0002593955 00000 n 
+0004778806 00000 n 
+0002596058 00000 n 
+0002595750 00000 n 
+0002594205 00000 n 
+0002595866 00000 n 
+0002595930 00000 n 
+0002595994 00000 n 
+0002598173 00000 n 
+0002597865 00000 n 
+0002596216 00000 n 
+0002597981 00000 n 
+0002598045 00000 n 
+0002598109 00000 n 
+0002600210 00000 n 
+0002599902 00000 n 
+0002598331 00000 n 
+0002600018 00000 n 
+0002600082 00000 n 
+0002600146 00000 n 
+0002602240 00000 n 
+0002601868 00000 n 
+0002600354 00000 n 
+0002601984 00000 n 
+0002602048 00000 n 
+0002602112 00000 n 
+0002602176 00000 n 
+0002603544 00000 n 
+0002603364 00000 n 
+0002602356 00000 n 
+0002603480 00000 n 
+0002606186 00000 n 
+0002605751 00000 n 
+0002603660 00000 n 
+0002605867 00000 n 
+0002605931 00000 n 
+0002605995 00000 n 
+0002606059 00000 n 
+0002606123 00000 n 
+0004778932 00000 n 
+0002608461 00000 n 
+0002608089 00000 n 
+0002606344 00000 n 
+0002608205 00000 n 
+0002608269 00000 n 
+0002608397 00000 n 
+0002611499 00000 n 
+0002610936 00000 n 
+0002608591 00000 n 
+0002611052 00000 n 
+0002611180 00000 n 
+0002611308 00000 n 
+0002611436 00000 n 
+0002613612 00000 n 
+0002613177 00000 n 
+0002611643 00000 n 
+0002613293 00000 n 
+0002613421 00000 n 
+0002613549 00000 n 
+0002615432 00000 n 
+0002618547 00000 n 
+0002615817 00000 n 
+0002615295 00000 n 
+0002613756 00000 n 
+0002615625 00000 n 
+0002615753 00000 n 
+0002618739 00000 n 
+0002618917 00000 n 
+0002619122 00000 n 
+0002619312 00000 n 
+0002619697 00000 n 
+0002618374 00000 n 
+0002616003 00000 n 
+0002619505 00000 n 
+0002619633 00000 n 
+0002622638 00000 n 
+0002622809 00000 n 
+0002623452 00000 n 
+0002622492 00000 n 
+0002619954 00000 n 
+0002623004 00000 n 
+0002623132 00000 n 
+0002623260 00000 n 
+0002623388 00000 n 
+0004779058 00000 n 
+0002626294 00000 n 
+0002626511 00000 n 
+0002626727 00000 n 
+0002626943 00000 n 
+0002627126 00000 n 
+0002627302 00000 n 
+0002627470 00000 n 
+0002630736 00000 n 
+0002630909 00000 n 
+0002631093 00000 n 
+0002631262 00000 n 
+0002627843 00000 n 
+0002626103 00000 n 
+0002623652 00000 n 
+0002627651 00000 n 
+0002627779 00000 n 
+0002631699 00000 n 
+0002632160 00000 n 
+0002632623 00000 n 
+0002633352 00000 n 
+0002630509 00000 n 
+0002628029 00000 n 
+0002633160 00000 n 
+0002633288 00000 n 
+0002631480 00000 n 
+0002631929 00000 n 
+0002632391 00000 n 
+0002632891 00000 n 
+0002636149 00000 n 
+0002636359 00000 n 
+0002636530 00000 n 
+0002639529 00000 n 
+0002639743 00000 n 
+0002639931 00000 n 
+0002640114 00000 n 
+0002636905 00000 n 
+0002635994 00000 n 
+0002633538 00000 n 
+0002636713 00000 n 
+0002636841 00000 n 
+0002643691 00000 n 
+0002643887 00000 n 
+0002640901 00000 n 
+0002639356 00000 n 
+0002637091 00000 n 
+0002640581 00000 n 
+0002640709 00000 n 
+0002640837 00000 n 
+0002640347 00000 n 
+0002644064 00000 n 
+0002644257 00000 n 
+0002647868 00000 n 
+0002644655 00000 n 
+0002643527 00000 n 
+0002641130 00000 n 
+0002644463 00000 n 
+0002644591 00000 n 
+0002648307 00000 n 
+0002648512 00000 n 
+0002648702 00000 n 
+0002648890 00000 n 
+0002649078 00000 n 
+0002649266 00000 n 
+0002647150 00000 n 
+0002649458 00000 n 
+0002649934 00000 n 
+0002650203 00000 n 
+0002646896 00000 n 
+0002644869 00000 n 
+0002650139 00000 n 
+0002647389 00000 n 
+0002647628 00000 n 
+0002648087 00000 n 
+0002649696 00000 n 
+0004779184 00000 n 
+0002652913 00000 n 
+0002653438 00000 n 
+0002652767 00000 n 
+0002650403 00000 n 
+0002653374 00000 n 
+0002653144 00000 n 
+0002656015 00000 n 
+0002655707 00000 n 
+0002653638 00000 n 
+0002655823 00000 n 
+0002655951 00000 n 
+0002658347 00000 n 
+0002658861 00000 n 
+0002658210 00000 n 
+0002656187 00000 n 
+0002658541 00000 n 
+0002658669 00000 n 
+0002658797 00000 n 
+0002661342 00000 n 
+0002660906 00000 n 
+0002659061 00000 n 
+0002661022 00000 n 
+0002661150 00000 n 
+0002661278 00000 n 
+0002663777 00000 n 
+0002663469 00000 n 
+0002661500 00000 n 
+0002663585 00000 n 
+0002663713 00000 n 
+0002666532 00000 n 
+0002665968 00000 n 
+0002663949 00000 n 
+0002666084 00000 n 
+0002666212 00000 n 
+0002666340 00000 n 
+0002666468 00000 n 
+0004779310 00000 n 
+0002668755 00000 n 
+0002668575 00000 n 
+0002666704 00000 n 
+0002668691 00000 n 
+0002671609 00000 n 
+0002671174 00000 n 
+0002668899 00000 n 
+0002671290 00000 n 
+0002671418 00000 n 
+0002671545 00000 n 
+0002674252 00000 n 
+0002673816 00000 n 
+0002671767 00000 n 
+0002673932 00000 n 
+0002674060 00000 n 
+0002674188 00000 n 
+0002676519 00000 n 
+0002676203 00000 n 
+0002674495 00000 n 
+0002676322 00000 n 
+0002676453 00000 n 
+0002687280 00000 n 
+0002687430 00000 n 
+0002680341 00000 n 
+0002679200 00000 n 
+0002679015 00000 n 
+0002676664 00000 n 
+0002679134 00000 n 
+0002708837 00000 n 
+0002688170 00000 n 
+0002680189 00000 n 
+0002679345 00000 n 
+0002687580 00000 n 
+0002687711 00000 n 
+0002687842 00000 n 
+0002687973 00000 n 
+0002688104 00000 n 
+0004779438 00000 n 
+0002682011 00000 n 
+0002682130 00000 n 
+0002682179 00000 n 
+0002682623 00000 n 
+0002682647 00000 n 
+0002683067 00000 n 
+0002683164 00000 n 
+0002687256 00000 n 
+0002715925 00000 n 
+0002690557 00000 n 
+0002691304 00000 n 
+0002690415 00000 n 
+0002688318 00000 n 
+0002690715 00000 n 
+0002690846 00000 n 
+0002690977 00000 n 
+0002691107 00000 n 
+0002691238 00000 n 
+0002694513 00000 n 
+0002693934 00000 n 
+0002691477 00000 n 
+0002694054 00000 n 
+0002694185 00000 n 
+0002694316 00000 n 
+0002694447 00000 n 
+0002697507 00000 n 
+0002696666 00000 n 
+0002694658 00000 n 
+0002696786 00000 n 
+0002696917 00000 n 
+0002697048 00000 n 
+0002697179 00000 n 
+0002697310 00000 n 
+0002697441 00000 n 
+0002700802 00000 n 
+0002699629 00000 n 
+0002697666 00000 n 
+0002699749 00000 n 
+0002699880 00000 n 
+0002700011 00000 n 
+0002700076 00000 n 
+0002700142 00000 n 
+0002700208 00000 n 
+0002700274 00000 n 
+0002700340 00000 n 
+0002700406 00000 n 
+0002700472 00000 n 
+0002700538 00000 n 
+0002700604 00000 n 
+0002700670 00000 n 
+0002700736 00000 n 
+0002704479 00000 n 
+0002703635 00000 n 
+0002700961 00000 n 
+0002703755 00000 n 
+0002703821 00000 n 
+0002703887 00000 n 
+0002703953 00000 n 
+0002704019 00000 n 
+0002704085 00000 n 
+0002704151 00000 n 
+0002704282 00000 n 
+0002704413 00000 n 
+0002707205 00000 n 
+0002716636 00000 n 
+0002708098 00000 n 
+0002707053 00000 n 
+0002704638 00000 n 
+0002707509 00000 n 
+0002707640 00000 n 
+0002707771 00000 n 
+0002707902 00000 n 
+0002708033 00000 n 
+0002707357 00000 n 
+0004779571 00000 n 
+0002832320 00000 n 
+0002715991 00000 n 
+0002708717 00000 n 
+0002708285 00000 n 
+0002715794 00000 n 
+0002710800 00000 n 
+0002710919 00000 n 
+0002710968 00000 n 
+0002711408 00000 n 
+0002711432 00000 n 
+0002711834 00000 n 
+0002711931 00000 n 
+0002715770 00000 n 
+0002832386 00000 n 
+0002716516 00000 n 
+0002716125 00000 n 
+0002832189 00000 n 
+0002831999 00000 n 
+0002834221 00000 n 
+0002834829 00000 n 
+0002834079 00000 n 
+0002832536 00000 n 
+0002834371 00000 n 
+0002834632 00000 n 
+0002834763 00000 n 
+0002837823 00000 n 
+0002837537 00000 n 
+0002839404 00000 n 
+0002837395 00000 n 
+0002834960 00000 n 
+0002837692 00000 n 
+0002837889 00000 n 
+0002837955 00000 n 
+0002838021 00000 n 
+0002838087 00000 n 
+0002838153 00000 n 
+0002838219 00000 n 
+0002838285 00000 n 
+0002838416 00000 n 
+0002838482 00000 n 
+0002838548 00000 n 
+0002838614 00000 n 
+0002838680 00000 n 
+0002838746 00000 n 
+0002838812 00000 n 
+0002838878 00000 n 
+0002838944 00000 n 
+0002839010 00000 n 
+0002839076 00000 n 
+0002839207 00000 n 
+0002839338 00000 n 
+0002841615 00000 n 
+0002841298 00000 n 
+0002839576 00000 n 
+0002841418 00000 n 
+0002841549 00000 n 
+0002843299 00000 n 
+0002843113 00000 n 
+0002841774 00000 n 
+0002843233 00000 n 
+0004779704 00000 n 
+0002845710 00000 n 
+0002846472 00000 n 
+0002845558 00000 n 
+0002843444 00000 n 
+0002846013 00000 n 
+0002846144 00000 n 
+0002845862 00000 n 
+0002846275 00000 n 
+0002846406 00000 n 
+0002849319 00000 n 
+0002848871 00000 n 
+0002846645 00000 n 
+0002848991 00000 n 
+0002849122 00000 n 
+0002849253 00000 n 
+0002851551 00000 n 
+0002851365 00000 n 
+0002849478 00000 n 
+0002851485 00000 n 
+0002853893 00000 n 
+0002854338 00000 n 
+0002854884 00000 n 
+0002853731 00000 n 
+0002851682 00000 n 
+0002854556 00000 n 
+0002854687 00000 n 
+0002854818 00000 n 
+0002854115 00000 n 
+0002857952 00000 n 
+0002858150 00000 n 
+0002858328 00000 n 
+0002858510 00000 n 
+0002858717 00000 n 
+0002858923 00000 n 
+0002857795 00000 n 
+0002859444 00000 n 
+0002857593 00000 n 
+0002855156 00000 n 
+0002859118 00000 n 
+0002859248 00000 n 
+0002859313 00000 n 
+0002859378 00000 n 
+0002862007 00000 n 
+0002861755 00000 n 
+0002859645 00000 n 
+0002861875 00000 n 
+0002861941 00000 n 
+0004779837 00000 n 
+0002864855 00000 n 
+0002864537 00000 n 
+0002862138 00000 n 
+0002864657 00000 n 
+0002864723 00000 n 
+0002864789 00000 n 
+0002867499 00000 n 
+0002868671 00000 n 
+0002867347 00000 n 
+0002864986 00000 n 
+0002867946 00000 n 
+0002868077 00000 n 
+0002868143 00000 n 
+0002868209 00000 n 
+0002868275 00000 n 
+0002868341 00000 n 
+0002868407 00000 n 
+0002868473 00000 n 
+0002868539 00000 n 
+0002868605 00000 n 
+0002867722 00000 n 
+0002870932 00000 n 
+0002871138 00000 n 
+0002871318 00000 n 
+0002871979 00000 n 
+0002870770 00000 n 
+0002868857 00000 n 
+0002871521 00000 n 
+0002871652 00000 n 
+0002871783 00000 n 
+0002871913 00000 n 
+0002873659 00000 n 
+0002873342 00000 n 
+0002872152 00000 n 
+0002873462 00000 n 
+0002873593 00000 n 
+0002875033 00000 n 
+0002874847 00000 n 
+0002873790 00000 n 
+0002874967 00000 n 
+0002876296 00000 n 
+0002876110 00000 n 
+0002875136 00000 n 
+0002876230 00000 n 
+0004779970 00000 n 
+0002878402 00000 n 
+0002877955 00000 n 
+0002876413 00000 n 
+0002878075 00000 n 
+0002878336 00000 n 
+0002880079 00000 n 
+0002888071 00000 n 
+0002879959 00000 n 
+0002878547 00000 n 
+0002887876 00000 n 
+0002888006 00000 n 
+0002886961 00000 n 
+0002890755 00000 n 
+0002890307 00000 n 
+0002888311 00000 n 
+0002890427 00000 n 
+0002890558 00000 n 
+0002890689 00000 n 
+0002893503 00000 n 
+0002893056 00000 n 
+0002890886 00000 n 
+0002893176 00000 n 
+0002893307 00000 n 
+0002893438 00000 n 
+0002896252 00000 n 
+0002895804 00000 n 
+0002893662 00000 n 
+0002895924 00000 n 
+0002896055 00000 n 
+0002896186 00000 n 
+0002898850 00000 n 
+0002898403 00000 n 
+0002896383 00000 n 
+0002898523 00000 n 
+0002898654 00000 n 
+0002898784 00000 n 
+0004780103 00000 n 
+0002904178 00000 n 
+0002901723 00000 n 
+0002901406 00000 n 
+0002898967 00000 n 
+0002901526 00000 n 
+0002901657 00000 n 
+0002904800 00000 n 
+0002904026 00000 n 
+0002901854 00000 n 
+0002904473 00000 n 
+0002904326 00000 n 
+0002904603 00000 n 
+0002904734 00000 n 
+0002907262 00000 n 
+0002910285 00000 n 
+0002907888 00000 n 
+0002907120 00000 n 
+0002904931 00000 n 
+0002907429 00000 n 
+0002907560 00000 n 
+0002907691 00000 n 
+0002907822 00000 n 
+0002910995 00000 n 
+0002910133 00000 n 
+0002908117 00000 n 
+0002910667 00000 n 
+0002910476 00000 n 
+0002910798 00000 n 
+0002910929 00000 n 
+0002913050 00000 n 
+0002912864 00000 n 
+0002911140 00000 n 
+0002912984 00000 n 
+0002915268 00000 n 
+0002915746 00000 n 
+0002920124 00000 n 
+0002916416 00000 n 
+0002915096 00000 n 
+0002913167 00000 n 
+0002916219 00000 n 
+0002916350 00000 n 
+0002915507 00000 n 
+0002915982 00000 n 
+0004780236 00000 n 
+0002921655 00000 n 
+0002919982 00000 n 
+0002916603 00000 n 
+0002920278 00000 n 
+0002920409 00000 n 
+0002920540 00000 n 
+0002920606 00000 n 
+0002920670 00000 n 
+0002920736 00000 n 
+0002920802 00000 n 
+0002920868 00000 n 
+0002920934 00000 n 
+0002920998 00000 n 
+0002921064 00000 n 
+0002921129 00000 n 
+0002921195 00000 n 
+0002921260 00000 n 
+0002921326 00000 n 
+0002921392 00000 n 
+0002921458 00000 n 
+0002921589 00000 n 
+0002923581 00000 n 
+0002923264 00000 n 
+0002921855 00000 n 
+0002923384 00000 n 
+0002923515 00000 n 
+0002925268 00000 n 
+0002925082 00000 n 
+0002923783 00000 n 
+0002925202 00000 n 
+0002927412 00000 n 
+0002926963 00000 n 
+0002925484 00000 n 
+0002927083 00000 n 
+0002927214 00000 n 
+0002927280 00000 n 
+0002927346 00000 n 
+0002928566 00000 n 
+0002928380 00000 n 
+0002927543 00000 n 
+0002928500 00000 n 
+0002929949 00000 n 
+0002930304 00000 n 
+0002929807 00000 n 
+0002928683 00000 n 
+0002930108 00000 n 
+0002930174 00000 n 
+0002930239 00000 n 
+0004780369 00000 n 
+0003475777 00000 n 
+0002931422 00000 n 
+0002931236 00000 n 
+0002930435 00000 n 
+0002931356 00000 n 
+0002933861 00000 n 
+0002933280 00000 n 
+0002931539 00000 n 
+0002933400 00000 n 
+0002933466 00000 n 
+0002933532 00000 n 
+0002933663 00000 n 
+0002933729 00000 n 
+0002933795 00000 n 
+0002935994 00000 n 
+0002935808 00000 n 
+0002933992 00000 n 
+0002935928 00000 n 
+0002937815 00000 n 
+0002937497 00000 n 
+0002936196 00000 n 
+0002937617 00000 n 
+0002937683 00000 n 
+0002937749 00000 n 
+0002938847 00000 n 
+0002938661 00000 n 
+0002937946 00000 n 
+0002938781 00000 n 
+0002940468 00000 n 
+0002940151 00000 n 
+0002938950 00000 n 
+0002940271 00000 n 
+0002940402 00000 n 
+0004780502 00000 n 
+0002943213 00000 n 
+0002942634 00000 n 
+0002940613 00000 n 
+0002942754 00000 n 
+0002942885 00000 n 
+0002943016 00000 n 
+0002943147 00000 n 
+0002944576 00000 n 
+0002944390 00000 n 
+0002943429 00000 n 
+0002944510 00000 n 
+0002946599 00000 n 
+0002946022 00000 n 
+0002944693 00000 n 
+0002946142 00000 n 
+0002946403 00000 n 
+0002946533 00000 n 
+0002948850 00000 n 
+0002949048 00000 n 
+0002952423 00000 n 
+0002949578 00000 n 
+0002948698 00000 n 
+0002946730 00000 n 
+0002949250 00000 n 
+0002949381 00000 n 
+0002949512 00000 n 
+0002952597 00000 n 
+0002952850 00000 n 
+0002952271 00000 n 
+0002949779 00000 n 
+0002952784 00000 n 
+0002955399 00000 n 
+0002955082 00000 n 
+0002953009 00000 n 
+0002955202 00000 n 
+0002955333 00000 n 
+0004780635 00000 n 
+0002957526 00000 n 
+0002957697 00000 n 
+0002957878 00000 n 
+0002958051 00000 n 
+0002958221 00000 n 
+0002958391 00000 n 
+0002958760 00000 n 
+0002957334 00000 n 
+0002955544 00000 n 
+0002958564 00000 n 
+0002958694 00000 n 
+0002960332 00000 n 
+0002960146 00000 n 
+0002958961 00000 n 
+0002960266 00000 n 
+0002961778 00000 n 
+0002961969 00000 n 
+0002962338 00000 n 
+0002961626 00000 n 
+0002960435 00000 n 
+0002962141 00000 n 
+0002962272 00000 n 
+0002964248 00000 n 
+0002964098 00000 n 
+0002964654 00000 n 
+0002963946 00000 n 
+0002962497 00000 n 
+0002964458 00000 n 
+0002964589 00000 n 
+0002965715 00000 n 
+0002965780 00000 n 
+0002965465 00000 n 
+0002964855 00000 n 
+0002965585 00000 n 
+0002966185 00000 n 
+0002965999 00000 n 
+0002965897 00000 n 
+0002966119 00000 n 
+0004780768 00000 n 
+0002968308 00000 n 
+0002967861 00000 n 
+0002966228 00000 n 
+0002967981 00000 n 
+0002968242 00000 n 
+0002971078 00000 n 
+0002971726 00000 n 
+0002970926 00000 n 
+0002968425 00000 n 
+0002971529 00000 n 
+0002971660 00000 n 
+0002971303 00000 n 
+0002974745 00000 n 
+0002974297 00000 n 
+0002971941 00000 n 
+0002974417 00000 n 
+0002974548 00000 n 
+0002974679 00000 n 
+0002977882 00000 n 
+0002977435 00000 n 
+0002974890 00000 n 
+0002977555 00000 n 
+0002977686 00000 n 
+0002977816 00000 n 
+0002980817 00000 n 
+0002980368 00000 n 
+0002978027 00000 n 
+0002980488 00000 n 
+0002980619 00000 n 
+0002980685 00000 n 
+0002980751 00000 n 
+0002983574 00000 n 
+0002983125 00000 n 
+0002980962 00000 n 
+0002983245 00000 n 
+0002983311 00000 n 
+0002983377 00000 n 
+0002983508 00000 n 
+0004780901 00000 n 
+0002986328 00000 n 
+0002986722 00000 n 
+0002986186 00000 n 
+0002983762 00000 n 
+0002986525 00000 n 
+0002986656 00000 n 
+0002989328 00000 n 
+0002988880 00000 n 
+0002986923 00000 n 
+0002989000 00000 n 
+0002989131 00000 n 
+0002989262 00000 n 
+0002992326 00000 n 
+0002991418 00000 n 
+0002989473 00000 n 
+0002991538 00000 n 
+0002991669 00000 n 
+0002991800 00000 n 
+0002991930 00000 n 
+0002991996 00000 n 
+0002992062 00000 n 
+0002992128 00000 n 
+0002992194 00000 n 
+0002992260 00000 n 
+0002995056 00000 n 
+0002994346 00000 n 
+0002992457 00000 n 
+0002994466 00000 n 
+0002994532 00000 n 
+0002994598 00000 n 
+0002994662 00000 n 
+0002994728 00000 n 
+0002994859 00000 n 
+0002994990 00000 n 
+0002997037 00000 n 
+0002996459 00000 n 
+0002995215 00000 n 
+0002996579 00000 n 
+0002996840 00000 n 
+0002996971 00000 n 
+0003000236 00000 n 
+0002999524 00000 n 
+0002997211 00000 n 
+0002999644 00000 n 
+0002999775 00000 n 
+0002999906 00000 n 
+0002999972 00000 n 
+0003000038 00000 n 
+0003000104 00000 n 
+0003000170 00000 n 
+0004781034 00000 n 
+0003003533 00000 n 
+0003002755 00000 n 
+0003000408 00000 n 
+0003002875 00000 n 
+0003003006 00000 n 
+0003003072 00000 n 
+0003003138 00000 n 
+0003003269 00000 n 
+0003003335 00000 n 
+0003003401 00000 n 
+0003003467 00000 n 
+0003005854 00000 n 
+0003005537 00000 n 
+0003003790 00000 n 
+0003005657 00000 n 
+0003005788 00000 n 
+0003008874 00000 n 
+0003008295 00000 n 
+0003005999 00000 n 
+0003008415 00000 n 
+0003008546 00000 n 
+0003008677 00000 n 
+0003008742 00000 n 
+0003008808 00000 n 
+0003011904 00000 n 
+0003011586 00000 n 
+0003009090 00000 n 
+0003011706 00000 n 
+0003011772 00000 n 
+0003011838 00000 n 
+0003014582 00000 n 
+0003014132 00000 n 
+0003012049 00000 n 
+0003014252 00000 n 
+0003014318 00000 n 
+0003014384 00000 n 
+0003014450 00000 n 
+0003014516 00000 n 
+0003017543 00000 n 
+0003016964 00000 n 
+0003014784 00000 n 
+0003017084 00000 n 
+0003017214 00000 n 
+0003017345 00000 n 
+0003017411 00000 n 
+0003017477 00000 n 
+0004781167 00000 n 
+0003020387 00000 n 
+0003019541 00000 n 
+0003017688 00000 n 
+0003019661 00000 n 
+0003019727 00000 n 
+0003019793 00000 n 
+0003019859 00000 n 
+0003019925 00000 n 
+0003019991 00000 n 
+0003020057 00000 n 
+0003020123 00000 n 
+0003020189 00000 n 
+0003020255 00000 n 
+0003020321 00000 n 
+0003023391 00000 n 
+0003022218 00000 n 
+0003020589 00000 n 
+0003022338 00000 n 
+0003022404 00000 n 
+0003022470 00000 n 
+0003022536 00000 n 
+0003022602 00000 n 
+0003022668 00000 n 
+0003022734 00000 n 
+0003022800 00000 n 
+0003022866 00000 n 
+0003022932 00000 n 
+0003022998 00000 n 
+0003023064 00000 n 
+0003023130 00000 n 
+0003023196 00000 n 
+0003023261 00000 n 
+0003023327 00000 n 
+0003026258 00000 n 
+0003025680 00000 n 
+0003023536 00000 n 
+0003025800 00000 n 
+0003025931 00000 n 
+0003026061 00000 n 
+0003026192 00000 n 
+0003028492 00000 n 
+0003028802 00000 n 
+0003029744 00000 n 
+0003028330 00000 n 
+0003026445 00000 n 
+0003028954 00000 n 
+0003029085 00000 n 
+0003029151 00000 n 
+0003029217 00000 n 
+0003029283 00000 n 
+0003029349 00000 n 
+0003029415 00000 n 
+0003029481 00000 n 
+0003029547 00000 n 
+0003029678 00000 n 
+0003028647 00000 n 
+0003031840 00000 n 
+0003034641 00000 n 
+0003032453 00000 n 
+0003031698 00000 n 
+0003029946 00000 n 
+0003031994 00000 n 
+0003032125 00000 n 
+0003032256 00000 n 
+0003032387 00000 n 
+0003034795 00000 n 
+0003035149 00000 n 
+0003034489 00000 n 
+0003032598 00000 n 
+0003034952 00000 n 
+0003035083 00000 n 
+0004781300 00000 n 
+0003038158 00000 n 
+0003037579 00000 n 
+0003035337 00000 n 
+0003037699 00000 n 
+0003037830 00000 n 
+0003037961 00000 n 
+0003038092 00000 n 
+0003040927 00000 n 
+0003040544 00000 n 
+0003038360 00000 n 
+0003040664 00000 n 
+0003040795 00000 n 
+0003040861 00000 n 
+0003043841 00000 n 
+0003043457 00000 n 
+0003041072 00000 n 
+0003043577 00000 n 
+0003043643 00000 n 
+0003043709 00000 n 
+0003043775 00000 n 
+0003045868 00000 n 
+0003046023 00000 n 
+0003046503 00000 n 
+0003045716 00000 n 
+0003043972 00000 n 
+0003046175 00000 n 
+0003046306 00000 n 
+0003046437 00000 n 
+0003048885 00000 n 
+0003048568 00000 n 
+0003046634 00000 n 
+0003048688 00000 n 
+0003048819 00000 n 
+0003051319 00000 n 
+0003051543 00000 n 
+0003051177 00000 n 
+0003049087 00000 n 
+0003051477 00000 n 
+0004781433 00000 n 
+0003054198 00000 n 
+0003054264 00000 n 
+0003053947 00000 n 
+0003051674 00000 n 
+0003054067 00000 n 
+0003056737 00000 n 
+0003056158 00000 n 
+0003054423 00000 n 
+0003056278 00000 n 
+0003056409 00000 n 
+0003056540 00000 n 
+0003056671 00000 n 
+0003059022 00000 n 
+0003058836 00000 n 
+0003056882 00000 n 
+0003058956 00000 n 
+0003061982 00000 n 
+0003061402 00000 n 
+0003059125 00000 n 
+0003061522 00000 n 
+0003061653 00000 n 
+0003061718 00000 n 
+0003061784 00000 n 
+0003061850 00000 n 
+0003061916 00000 n 
+0003064096 00000 n 
+0003064307 00000 n 
+0003065046 00000 n 
+0003063944 00000 n 
+0003062225 00000 n 
+0003064519 00000 n 
+0003064585 00000 n 
+0003064651 00000 n 
+0003064717 00000 n 
+0003064783 00000 n 
+0003064849 00000 n 
+0003064980 00000 n 
+0003065562 00000 n 
+0003065376 00000 n 
+0003065274 00000 n 
+0003065496 00000 n 
+0004781566 00000 n 
+0003067219 00000 n 
+0003067849 00000 n 
+0003067067 00000 n 
+0003065605 00000 n 
+0003067522 00000 n 
+0003067370 00000 n 
+0003067783 00000 n 
+0003070616 00000 n 
+0003070430 00000 n 
+0003068037 00000 n 
+0003070550 00000 n 
+0003073271 00000 n 
+0003072824 00000 n 
+0003070733 00000 n 
+0003072944 00000 n 
+0003073075 00000 n 
+0003073206 00000 n 
+0003075640 00000 n 
+0003076026 00000 n 
+0003075498 00000 n 
+0003073402 00000 n 
+0003075830 00000 n 
+0003075960 00000 n 
+0003078723 00000 n 
+0003078537 00000 n 
+0003076241 00000 n 
+0003078657 00000 n 
+0003081410 00000 n 
+0003081224 00000 n 
+0003078868 00000 n 
+0003081344 00000 n 
+0004781699 00000 n 
+0003083730 00000 n 
+0003083544 00000 n 
+0003081541 00000 n 
+0003083664 00000 n 
+0003086436 00000 n 
+0003086250 00000 n 
+0003083875 00000 n 
+0003086370 00000 n 
+0003088852 00000 n 
+0003088535 00000 n 
+0003086567 00000 n 
+0003088655 00000 n 
+0003088786 00000 n 
+0003090476 00000 n 
+0003090029 00000 n 
+0003088997 00000 n 
+0003090149 00000 n 
+0003090280 00000 n 
+0003090410 00000 n 
+0003092698 00000 n 
+0003092512 00000 n 
+0003090607 00000 n 
+0003092632 00000 n 
+0003095085 00000 n 
+0003094768 00000 n 
+0003092815 00000 n 
+0003094888 00000 n 
+0003095019 00000 n 
+0004781832 00000 n 
+0003097667 00000 n 
+0003097351 00000 n 
+0003095287 00000 n 
+0003097471 00000 n 
+0003097602 00000 n 
+0003100185 00000 n 
+0003100671 00000 n 
+0003100043 00000 n 
+0003097826 00000 n 
+0003100344 00000 n 
+0003100475 00000 n 
+0003100605 00000 n 
+0003103567 00000 n 
+0003103764 00000 n 
+0003103316 00000 n 
+0003100859 00000 n 
+0003103436 00000 n 
+0003103698 00000 n 
+0003105565 00000 n 
+0003105117 00000 n 
+0003103909 00000 n 
+0003105237 00000 n 
+0003105368 00000 n 
+0003105499 00000 n 
+0003107563 00000 n 
+0003107115 00000 n 
+0003105710 00000 n 
+0003107235 00000 n 
+0003107366 00000 n 
+0003107497 00000 n 
+0003109317 00000 n 
+0003109000 00000 n 
+0003107736 00000 n 
+0003109120 00000 n 
+0003109251 00000 n 
+0004781965 00000 n 
+0003110126 00000 n 
+0003109940 00000 n 
+0003109462 00000 n 
+0003110060 00000 n 
+0003110517 00000 n 
+0003110331 00000 n 
+0003110229 00000 n 
+0003110451 00000 n 
+0003112298 00000 n 
+0003111851 00000 n 
+0003110560 00000 n 
+0003111971 00000 n 
+0003112232 00000 n 
+0003114808 00000 n 
+0003114360 00000 n 
+0003112472 00000 n 
+0003114480 00000 n 
+0003114611 00000 n 
+0003114742 00000 n 
+0003117285 00000 n 
+0003116970 00000 n 
+0003115010 00000 n 
+0003117090 00000 n 
+0003117219 00000 n 
+0003119747 00000 n 
+0003119299 00000 n 
+0003117430 00000 n 
+0003119419 00000 n 
+0003119550 00000 n 
+0003119681 00000 n 
+0004782098 00000 n 
+0003121768 00000 n 
+0003121451 00000 n 
+0003119892 00000 n 
+0003121571 00000 n 
+0003121702 00000 n 
+0003124371 00000 n 
+0003124532 00000 n 
+0003124692 00000 n 
+0003124853 00000 n 
+0003125464 00000 n 
+0003124199 00000 n 
+0003121913 00000 n 
+0003125013 00000 n 
+0003125144 00000 n 
+0003125270 00000 n 
+0003125399 00000 n 
+0003128294 00000 n 
+0003128108 00000 n 
+0003125609 00000 n 
+0003128228 00000 n 
+0003130761 00000 n 
+0003130313 00000 n 
+0003128425 00000 n 
+0003130433 00000 n 
+0003130564 00000 n 
+0003130695 00000 n 
+0003132565 00000 n 
+0003132379 00000 n 
+0003130892 00000 n 
+0003132499 00000 n 
+0003134710 00000 n 
+0003134264 00000 n 
+0003132668 00000 n 
+0003134384 00000 n 
+0003134515 00000 n 
+0003134646 00000 n 
+0004782231 00000 n 
+0003137159 00000 n 
+0003138135 00000 n 
+0003137007 00000 n 
+0003134841 00000 n 
+0003137477 00000 n 
+0003137608 00000 n 
+0003137674 00000 n 
+0003137740 00000 n 
+0003137806 00000 n 
+0003137872 00000 n 
+0003137938 00000 n 
+0003137318 00000 n 
+0003138069 00000 n 
+0003140454 00000 n 
+0003139875 00000 n 
+0003138293 00000 n 
+0003139995 00000 n 
+0003140126 00000 n 
+0003140257 00000 n 
+0003140388 00000 n 
+0003141912 00000 n 
+0003141726 00000 n 
+0003140585 00000 n 
+0003141846 00000 n 
+0003142331 00000 n 
+0003142145 00000 n 
+0003142043 00000 n 
+0003142265 00000 n 
+0003144172 00000 n 
+0003144803 00000 n 
+0003144030 00000 n 
+0003142374 00000 n 
+0003144346 00000 n 
+0003144607 00000 n 
+0003144738 00000 n 
+0003147318 00000 n 
+0003147685 00000 n 
+0003147176 00000 n 
+0003144990 00000 n 
+0003147489 00000 n 
+0003147619 00000 n 
+0004782364 00000 n 
+0003150174 00000 n 
+0003150677 00000 n 
+0003150032 00000 n 
+0003147900 00000 n 
+0003150350 00000 n 
+0003150481 00000 n 
+0003150611 00000 n 
+0003153698 00000 n 
+0003153381 00000 n 
+0003150864 00000 n 
+0003153501 00000 n 
+0003153632 00000 n 
+0003156309 00000 n 
+0003156123 00000 n 
+0003153857 00000 n 
+0003156243 00000 n 
+0003158960 00000 n 
+0003158774 00000 n 
+0003156440 00000 n 
+0003158894 00000 n 
+0003161612 00000 n 
+0003165098 00000 n 
+0003162556 00000 n 
+0003161470 00000 n 
+0003159077 00000 n 
+0003161768 00000 n 
+0003161899 00000 n 
+0003161965 00000 n 
+0003162031 00000 n 
+0003162097 00000 n 
+0003162163 00000 n 
+0003162228 00000 n 
+0003162294 00000 n 
+0003162359 00000 n 
+0003162490 00000 n 
+0003165307 00000 n 
+0003164940 00000 n 
+0003165963 00000 n 
+0003164778 00000 n 
+0003162714 00000 n 
+0003165504 00000 n 
+0003165570 00000 n 
+0003165636 00000 n 
+0003165702 00000 n 
+0003165767 00000 n 
+0003165898 00000 n 
+0004782497 00000 n 
+0003168248 00000 n 
+0003168575 00000 n 
+0003167997 00000 n 
+0003166191 00000 n 
+0003168117 00000 n 
+0003168378 00000 n 
+0003168509 00000 n 
+0003169050 00000 n 
+0003168864 00000 n 
+0003168762 00000 n 
+0003168984 00000 n 
+0003173675 00000 n 
+0003171184 00000 n 
+0003170606 00000 n 
+0003169093 00000 n 
+0003170726 00000 n 
+0003170987 00000 n 
+0003171118 00000 n 
+0003173876 00000 n 
+0003174384 00000 n 
+0003173523 00000 n 
+0003171301 00000 n 
+0003174056 00000 n 
+0003174187 00000 n 
+0003174318 00000 n 
+0003176545 00000 n 
+0003176716 00000 n 
+0003177221 00000 n 
+0003176393 00000 n 
+0003174557 00000 n 
+0003176894 00000 n 
+0003177025 00000 n 
+0003177155 00000 n 
+0003177696 00000 n 
+0003177510 00000 n 
+0003177408 00000 n 
+0003177630 00000 n 
+0004782630 00000 n 
+0003179905 00000 n 
+0003179458 00000 n 
+0003177739 00000 n 
+0003179578 00000 n 
+0003179839 00000 n 
+0003182099 00000 n 
+0003181522 00000 n 
+0003180022 00000 n 
+0003181642 00000 n 
+0003181773 00000 n 
+0003181904 00000 n 
+0003182034 00000 n 
+0003184557 00000 n 
+0003184109 00000 n 
+0003182244 00000 n 
+0003184229 00000 n 
+0003184360 00000 n 
+0003184491 00000 n 
+0003186831 00000 n 
+0003186385 00000 n 
+0003184702 00000 n 
+0003186505 00000 n 
+0003186636 00000 n 
+0003186765 00000 n 
+0003189493 00000 n 
+0003188914 00000 n 
+0003186962 00000 n 
+0003189034 00000 n 
+0003189165 00000 n 
+0003189296 00000 n 
+0003189427 00000 n 
+0003191959 00000 n 
+0003192460 00000 n 
+0003192961 00000 n 
+0003191797 00000 n 
+0003189638 00000 n 
+0003192633 00000 n 
+0003192764 00000 n 
+0003192895 00000 n 
+0003192209 00000 n 
+0004782763 00000 n 
+0003194673 00000 n 
+0003194225 00000 n 
+0003193148 00000 n 
+0003194345 00000 n 
+0003194476 00000 n 
+0003194607 00000 n 
+0003195092 00000 n 
+0003194906 00000 n 
+0003194804 00000 n 
+0003195026 00000 n 
+0003198026 00000 n 
+0003197185 00000 n 
+0003195135 00000 n 
+0003197305 00000 n 
+0003197499 00000 n 
+0003197565 00000 n 
+0003197631 00000 n 
+0003197696 00000 n 
+0003197762 00000 n 
+0003197828 00000 n 
+0003197894 00000 n 
+0003197960 00000 n 
+0003200075 00000 n 
+0003199889 00000 n 
+0003198156 00000 n 
+0003200009 00000 n 
+0003202221 00000 n 
+0003201905 00000 n 
+0003200220 00000 n 
+0003202025 00000 n 
+0003205272 00000 n 
+0003204824 00000 n 
+0003202352 00000 n 
+0003204944 00000 n 
+0003205075 00000 n 
+0003205206 00000 n 
+0004782896 00000 n 
+0003212441 00000 n 
+0003208542 00000 n 
+0003208225 00000 n 
+0003205417 00000 n 
+0003208345 00000 n 
+0003208476 00000 n 
+0003212593 00000 n 
+0003214854 00000 n 
+0003212289 00000 n 
+0003208701 00000 n 
+0003212746 00000 n 
+0003212877 00000 n 
+0003212943 00000 n 
+0003213009 00000 n 
+0003213074 00000 n 
+0003213140 00000 n 
+0003213205 00000 n 
+0003213271 00000 n 
+0003213337 00000 n 
+0003213403 00000 n 
+0003213469 00000 n 
+0003213535 00000 n 
+0003213601 00000 n 
+0003213667 00000 n 
+0003213733 00000 n 
+0003213799 00000 n 
+0003213865 00000 n 
+0003213931 00000 n 
+0003213997 00000 n 
+0003214063 00000 n 
+0003214129 00000 n 
+0003214195 00000 n 
+0003214261 00000 n 
+0003214327 00000 n 
+0003214393 00000 n 
+0003214459 00000 n 
+0003214525 00000 n 
+0003214591 00000 n 
+0003214657 00000 n 
+0003214723 00000 n 
+0003214789 00000 n 
+0003218380 00000 n 
+0003217784 00000 n 
+0003217939 00000 n 
+0003218094 00000 n 
+0003219365 00000 n 
+0003217622 00000 n 
+0003215012 00000 n 
+0003218249 00000 n 
+0003218446 00000 n 
+0003218512 00000 n 
+0003218578 00000 n 
+0003218644 00000 n 
+0003218710 00000 n 
+0003218776 00000 n 
+0003218842 00000 n 
+0003218908 00000 n 
+0003218973 00000 n 
+0003219039 00000 n 
+0003219104 00000 n 
+0003219170 00000 n 
+0003219299 00000 n 
+0003222769 00000 n 
+0003227711 00000 n 
+0003229488 00000 n 
+0003224483 00000 n 
+0003222518 00000 n 
+0003219523 00000 n 
+0003222638 00000 n 
+0003222835 00000 n 
+0003222901 00000 n 
+0003222966 00000 n 
+0003223032 00000 n 
+0003223097 00000 n 
+0003223163 00000 n 
+0003223229 00000 n 
+0003223295 00000 n 
+0003223361 00000 n 
+0003223427 00000 n 
+0003223493 00000 n 
+0003223559 00000 n 
+0003223625 00000 n 
+0003223691 00000 n 
+0003223757 00000 n 
+0003223823 00000 n 
+0003223889 00000 n 
+0003223955 00000 n 
+0003224021 00000 n 
+0003224087 00000 n 
+0003224153 00000 n 
+0003224219 00000 n 
+0003224285 00000 n 
+0003224351 00000 n 
+0003224417 00000 n 
+0003230144 00000 n 
+0003227460 00000 n 
+0003224641 00000 n 
+0003227580 00000 n 
+0003227777 00000 n 
+0003227843 00000 n 
+0003227909 00000 n 
+0003227975 00000 n 
+0003228041 00000 n 
+0003228107 00000 n 
+0003228171 00000 n 
+0003228237 00000 n 
+0003228302 00000 n 
+0003228368 00000 n 
+0003228433 00000 n 
+0003228499 00000 n 
+0003228565 00000 n 
+0003228631 00000 n 
+0003228697 00000 n 
+0003228763 00000 n 
+0003228829 00000 n 
+0003228895 00000 n 
+0003228961 00000 n 
+0003229027 00000 n 
+0003229093 00000 n 
+0003229159 00000 n 
+0003229225 00000 n 
+0003229291 00000 n 
+0003229357 00000 n 
+0003229554 00000 n 
+0003229619 00000 n 
+0003229685 00000 n 
+0003229751 00000 n 
+0003229817 00000 n 
+0003229882 00000 n 
+0003229948 00000 n 
+0003230013 00000 n 
+0003230079 00000 n 
+0003230562 00000 n 
+0003230376 00000 n 
+0003230274 00000 n 
+0003230496 00000 n 
+0004783029 00000 n 
+0003231010 00000 n 
+0003230825 00000 n 
+0003230605 00000 n 
+0003231307 00000 n 
+0003231187 00000 n 
+0003231085 00000 n 
+0003233311 00000 n 
+0003232799 00000 n 
+0003231350 00000 n 
+0003232919 00000 n 
+0003232985 00000 n 
+0003233246 00000 n 
+0003235592 00000 n 
+0003236661 00000 n 
+0003235450 00000 n 
+0003233428 00000 n 
+0003235749 00000 n 
+0003235880 00000 n 
+0003236139 00000 n 
+0003236270 00000 n 
+0003236401 00000 n 
+0003236530 00000 n 
+0003236596 00000 n 
+0003239546 00000 n 
+0003238503 00000 n 
+0003236806 00000 n 
+0003238623 00000 n 
+0003238689 00000 n 
+0003238755 00000 n 
+0003238821 00000 n 
+0003238887 00000 n 
+0003238952 00000 n 
+0003239018 00000 n 
+0003239084 00000 n 
+0003239150 00000 n 
+0003239216 00000 n 
+0003239282 00000 n 
+0003239348 00000 n 
+0003239414 00000 n 
+0003239480 00000 n 
+0003241216 00000 n 
+0003241719 00000 n 
+0003241074 00000 n 
+0003239649 00000 n 
+0003241391 00000 n 
+0003241522 00000 n 
+0003241653 00000 n 
+0004783162 00000 n 
+0003243104 00000 n 
+0003242787 00000 n 
+0003241934 00000 n 
+0003242907 00000 n 
+0003243038 00000 n 
+0003244167 00000 n 
+0003243981 00000 n 
+0003243235 00000 n 
+0003244101 00000 n 
+0003245233 00000 n 
+0003245047 00000 n 
+0003244284 00000 n 
+0003245167 00000 n 
+0003246284 00000 n 
+0003246098 00000 n 
+0003245350 00000 n 
+0003246218 00000 n 
+0003247336 00000 n 
+0003247150 00000 n 
+0003246401 00000 n 
+0003247270 00000 n 
+0003248676 00000 n 
+0003248359 00000 n 
+0003247453 00000 n 
+0003248479 00000 n 
+0003248610 00000 n 
+0004783295 00000 n 
+0003251021 00000 n 
+0003251171 00000 n 
+0003251321 00000 n 
+0003252070 00000 n 
+0003250859 00000 n 
+0003248807 00000 n 
+0003251480 00000 n 
+0003251611 00000 n 
+0003251742 00000 n 
+0003251873 00000 n 
+0003251938 00000 n 
+0003252004 00000 n 
+0003255050 00000 n 
+0003255379 00000 n 
+0003254799 00000 n 
+0003252215 00000 n 
+0003254919 00000 n 
+0003255181 00000 n 
+0003255247 00000 n 
+0003255313 00000 n 
+0003257483 00000 n 
+0003258113 00000 n 
+0003257331 00000 n 
+0003255524 00000 n 
+0003257784 00000 n 
+0003257634 00000 n 
+0003257915 00000 n 
+0003257981 00000 n 
+0003258047 00000 n 
+0003260753 00000 n 
+0003260435 00000 n 
+0003258272 00000 n 
+0003260555 00000 n 
+0003260621 00000 n 
+0003260687 00000 n 
+0003263229 00000 n 
+0003262518 00000 n 
+0003260912 00000 n 
+0003262638 00000 n 
+0003262704 00000 n 
+0003262770 00000 n 
+0003262836 00000 n 
+0003262902 00000 n 
+0003262967 00000 n 
+0003263033 00000 n 
+0003263098 00000 n 
+0003263164 00000 n 
+0003263689 00000 n 
+0003263503 00000 n 
+0003263401 00000 n 
+0003263623 00000 n 
+0004783428 00000 n 
+0003265655 00000 n 
+0003265078 00000 n 
+0003263732 00000 n 
+0003265198 00000 n 
+0003265458 00000 n 
+0003265589 00000 n 
+0003267597 00000 n 
+0003267411 00000 n 
+0003265772 00000 n 
+0003267531 00000 n 
+0003270171 00000 n 
+0003269854 00000 n 
+0003267728 00000 n 
+0003269974 00000 n 
+0003270105 00000 n 
+0003272910 00000 n 
+0003272462 00000 n 
+0003270302 00000 n 
+0003272582 00000 n 
+0003272713 00000 n 
+0003272844 00000 n 
+0003275736 00000 n 
+0003275157 00000 n 
+0003273027 00000 n 
+0003275277 00000 n 
+0003275408 00000 n 
+0003275539 00000 n 
+0003275670 00000 n 
+0003277477 00000 n 
+0003278222 00000 n 
+0003277335 00000 n 
+0003275909 00000 n 
+0003277630 00000 n 
+0003277696 00000 n 
+0003277762 00000 n 
+0003277828 00000 n 
+0003277894 00000 n 
+0003277960 00000 n 
+0003278026 00000 n 
+0003278157 00000 n 
+0004783561 00000 n 
+0003280516 00000 n 
+0003280229 00000 n 
+0003280843 00000 n 
+0003280087 00000 n 
+0003278381 00000 n 
+0003280385 00000 n 
+0003280647 00000 n 
+0003280777 00000 n 
+0003283360 00000 n 
+0003283426 00000 n 
+0003283109 00000 n 
+0003280988 00000 n 
+0003283229 00000 n 
+0003285548 00000 n 
+0003285362 00000 n 
+0003283571 00000 n 
+0003285482 00000 n 
+0003286636 00000 n 
+0003286450 00000 n 
+0003285693 00000 n 
+0003286570 00000 n 
+0003288630 00000 n 
+0003289106 00000 n 
+0003288488 00000 n 
+0003286753 00000 n 
+0003288779 00000 n 
+0003289040 00000 n 
+0003297075 00000 n 
+0003291706 00000 n 
+0003291258 00000 n 
+0003289237 00000 n 
+0003291378 00000 n 
+0003291509 00000 n 
+0003291640 00000 n 
+0004783694 00000 n 
+0003293962 00000 n 
+0003293514 00000 n 
+0003291894 00000 n 
+0003293634 00000 n 
+0003293765 00000 n 
+0003293896 00000 n 
+0003295531 00000 n 
+0003295345 00000 n 
+0003294093 00000 n 
+0003295465 00000 n 
+0003297140 00000 n 
+0003296824 00000 n 
+0003295648 00000 n 
+0003296944 00000 n 
+0003299233 00000 n 
+0003299047 00000 n 
+0003297271 00000 n 
+0003299167 00000 n 
+0003301217 00000 n 
+0003302143 00000 n 
+0003301065 00000 n 
+0003299378 00000 n 
+0003301551 00000 n 
+0003301682 00000 n 
+0003301748 00000 n 
+0003301814 00000 n 
+0003301880 00000 n 
+0003301946 00000 n 
+0003301385 00000 n 
+0003302077 00000 n 
+0003307116 00000 n 
+0003304849 00000 n 
+0003304402 00000 n 
+0003302302 00000 n 
+0003304522 00000 n 
+0003304652 00000 n 
+0003304783 00000 n 
+0004783827 00000 n 
+0003307486 00000 n 
+0003306974 00000 n 
+0003305008 00000 n 
+0003307290 00000 n 
+0003307421 00000 n 
+0003310352 00000 n 
+0003309773 00000 n 
+0003307758 00000 n 
+0003309893 00000 n 
+0003310024 00000 n 
+0003310155 00000 n 
+0003310286 00000 n 
+0003313033 00000 n 
+0003312455 00000 n 
+0003310540 00000 n 
+0003312575 00000 n 
+0003312706 00000 n 
+0003312837 00000 n 
+0003312967 00000 n 
+0003313788 00000 n 
+0003313602 00000 n 
+0003313178 00000 n 
+0003313722 00000 n 
+0003314291 00000 n 
+0003314106 00000 n 
+0003313891 00000 n 
+0003314588 00000 n 
+0003314468 00000 n 
+0003314366 00000 n 
+0004783960 00000 n 
+0003316280 00000 n 
+0003316957 00000 n 
+0003316138 00000 n 
+0003314631 00000 n 
+0003316433 00000 n 
+0003316499 00000 n 
+0003316760 00000 n 
+0003316891 00000 n 
+0003319708 00000 n 
+0003320300 00000 n 
+0003319457 00000 n 
+0003317102 00000 n 
+0003319577 00000 n 
+0003319774 00000 n 
+0003319840 00000 n 
+0003319906 00000 n 
+0003319972 00000 n 
+0003320038 00000 n 
+0003320169 00000 n 
+0003320234 00000 n 
+0003323101 00000 n 
+0003322849 00000 n 
+0003320515 00000 n 
+0003322969 00000 n 
+0003323035 00000 n 
+0003325197 00000 n 
+0003324945 00000 n 
+0003323289 00000 n 
+0003325065 00000 n 
+0003325131 00000 n 
+0003328280 00000 n 
+0003328431 00000 n 
+0003328580 00000 n 
+0003329324 00000 n 
+0003328118 00000 n 
+0003325328 00000 n 
+0003328731 00000 n 
+0003328862 00000 n 
+0003328928 00000 n 
+0003328994 00000 n 
+0003329060 00000 n 
+0003329126 00000 n 
+0003329192 00000 n 
+0003329258 00000 n 
+0003332694 00000 n 
+0003333353 00000 n 
+0003332443 00000 n 
+0003329525 00000 n 
+0003332563 00000 n 
+0003332760 00000 n 
+0003332826 00000 n 
+0003332892 00000 n 
+0003332958 00000 n 
+0003333024 00000 n 
+0003333090 00000 n 
+0003333156 00000 n 
+0003333222 00000 n 
+0003333287 00000 n 
+0004784093 00000 n 
+0003336501 00000 n 
+0003335920 00000 n 
+0003333497 00000 n 
+0003336040 00000 n 
+0003336106 00000 n 
+0003336171 00000 n 
+0003336237 00000 n 
+0003336303 00000 n 
+0003336369 00000 n 
+0003336435 00000 n 
+0003339946 00000 n 
+0003339365 00000 n 
+0003336717 00000 n 
+0003339485 00000 n 
+0003339551 00000 n 
+0003339617 00000 n 
+0003339683 00000 n 
+0003339749 00000 n 
+0003339815 00000 n 
+0003339880 00000 n 
+0003341699 00000 n 
+0003341447 00000 n 
+0003340105 00000 n 
+0003341567 00000 n 
+0003341633 00000 n 
+0003342118 00000 n 
+0003341932 00000 n 
+0003341830 00000 n 
+0003342052 00000 n 
+0003344449 00000 n 
+0003343873 00000 n 
+0003342161 00000 n 
+0003343993 00000 n 
+0003344253 00000 n 
+0003344383 00000 n 
+0003346923 00000 n 
+0003347093 00000 n 
+0003349235 00000 n 
+0003346770 00000 n 
+0003369866 00000 n 
+0003347725 00000 n 
+0003346608 00000 n 
+0003344594 00000 n 
+0003347266 00000 n 
+0003347397 00000 n 
+0003347528 00000 n 
+0003347659 00000 n 
+0004784226 00000 n 
+0003368004 00000 n 
+0003368201 00000 n 
+0003349115 00000 n 
+0003347926 00000 n 
+0003367873 00000 n 
+0003368135 00000 n 
+0003408232 00000 n 
+0003369746 00000 n 
+0003368357 00000 n 
+0003408035 00000 n 
+0003408166 00000 n 
+0003411213 00000 n 
+0003411404 00000 n 
+0003410534 00000 n 
+0003410864 00000 n 
+0003412055 00000 n 
+0003410342 00000 n 
+0003408430 00000 n 
+0003411596 00000 n 
+0003411727 00000 n 
+0003411858 00000 n 
+0003411989 00000 n 
+0003410700 00000 n 
+0003411039 00000 n 
+0003415884 00000 n 
+0003414671 00000 n 
+0003414485 00000 n 
+0003412270 00000 n 
+0003414605 00000 n 
+0003416254 00000 n 
+0003415742 00000 n 
+0003414816 00000 n 
+0003416057 00000 n 
+0003416188 00000 n 
+0003416715 00000 n 
+0003416529 00000 n 
+0003416427 00000 n 
+0003416649 00000 n 
+0004784359 00000 n 
+0003418986 00000 n 
+0003418642 00000 n 
+0003419620 00000 n 
+0003418480 00000 n 
+0003416758 00000 n 
+0003419162 00000 n 
+0003419423 00000 n 
+0003418815 00000 n 
+0003419554 00000 n 
+0003422648 00000 n 
+0003423260 00000 n 
+0003422506 00000 n 
+0003419821 00000 n 
+0003422800 00000 n 
+0003422996 00000 n 
+0003423062 00000 n 
+0003423128 00000 n 
+0003423194 00000 n 
+0003426289 00000 n 
+0003427165 00000 n 
+0003426147 00000 n 
+0003423432 00000 n 
+0003426442 00000 n 
+0003426573 00000 n 
+0003426639 00000 n 
+0003426705 00000 n 
+0003426771 00000 n 
+0003426837 00000 n 
+0003426968 00000 n 
+0003427099 00000 n 
+0003429689 00000 n 
+0003429372 00000 n 
+0003427323 00000 n 
+0003429492 00000 n 
+0003429623 00000 n 
+0003431138 00000 n 
+0003430822 00000 n 
+0003429834 00000 n 
+0003430942 00000 n 
+0003431072 00000 n 
+0003431557 00000 n 
+0003431371 00000 n 
+0003431269 00000 n 
+0003431491 00000 n 
+0004784492 00000 n 
+0003433798 00000 n 
+0003433221 00000 n 
+0003431600 00000 n 
+0003433341 00000 n 
+0003433602 00000 n 
+0003433732 00000 n 
+0003434661 00000 n 
+0003434475 00000 n 
+0003433915 00000 n 
+0003434595 00000 n 
+0003439109 00000 n 
+0003438792 00000 n 
+0003434778 00000 n 
+0003438912 00000 n 
+0003439043 00000 n 
+0003439542 00000 n 
+0003439356 00000 n 
+0003439254 00000 n 
+0003439476 00000 n 
+0003439982 00000 n 
+0003439797 00000 n 
+0003439585 00000 n 
+0003440279 00000 n 
+0003440159 00000 n 
+0003440057 00000 n 
+0004784625 00000 n 
+0003441774 00000 n 
+0003441940 00000 n 
+0003442781 00000 n 
+0003441622 00000 n 
+0003440322 00000 n 
+0003442127 00000 n 
+0003442193 00000 n 
+0003442454 00000 n 
+0003442585 00000 n 
+0003442716 00000 n 
+0003445091 00000 n 
+0003445266 00000 n 
+0003445904 00000 n 
+0003444939 00000 n 
+0003442954 00000 n 
+0003445445 00000 n 
+0003445576 00000 n 
+0003445706 00000 n 
+0003445772 00000 n 
+0003445838 00000 n 
+0003448068 00000 n 
+0003448253 00000 n 
+0003448441 00000 n 
+0003449008 00000 n 
+0003447906 00000 n 
+0003446049 00000 n 
+0003448614 00000 n 
+0003448680 00000 n 
+0003448811 00000 n 
+0003448942 00000 n 
+0003451041 00000 n 
+0003450724 00000 n 
+0003449209 00000 n 
+0003450844 00000 n 
+0003450975 00000 n 
+0003452355 00000 n 
+0003452169 00000 n 
+0003451172 00000 n 
+0003452289 00000 n 
+0003454471 00000 n 
+0003453892 00000 n 
+0003452472 00000 n 
+0003454012 00000 n 
+0003454143 00000 n 
+0003454274 00000 n 
+0003454405 00000 n 
+0004784758 00000 n 
+0003456986 00000 n 
+0003456411 00000 n 
+0003454630 00000 n 
+0003456531 00000 n 
+0003456660 00000 n 
+0003456920 00000 n 
+0003458678 00000 n 
+0003458492 00000 n 
+0003457117 00000 n 
+0003458612 00000 n 
+0003460797 00000 n 
+0003460480 00000 n 
+0003458852 00000 n 
+0003460600 00000 n 
+0003460731 00000 n 
+0003462830 00000 n 
+0003462513 00000 n 
+0003461013 00000 n 
+0003462633 00000 n 
+0003462764 00000 n 
+0003464249 00000 n 
+0003463932 00000 n 
+0003463018 00000 n 
+0003464052 00000 n 
+0003464183 00000 n 
+0003464668 00000 n 
+0003464482 00000 n 
+0003464380 00000 n 
+0003464602 00000 n 
+0004784891 00000 n 
+0003466768 00000 n 
+0003466321 00000 n 
+0003464711 00000 n 
+0003466441 00000 n 
+0003466702 00000 n 
+0003468959 00000 n 
+0003469454 00000 n 
+0003468817 00000 n 
+0003466899 00000 n 
+0003469126 00000 n 
+0003469257 00000 n 
+0003469388 00000 n 
+0003470685 00000 n 
+0003470499 00000 n 
+0003469641 00000 n 
+0003470619 00000 n 
+0003472876 00000 n 
+0003472428 00000 n 
+0003470802 00000 n 
+0003472548 00000 n 
+0003472679 00000 n 
+0003472810 00000 n 
+0003474815 00000 n 
+0003475843 00000 n 
+0003474663 00000 n 
+0003473007 00000 n 
+0003475384 00000 n 
+0003475515 00000 n 
+0003475646 00000 n 
+0003475100 00000 n 
+0003476304 00000 n 
+0003476118 00000 n 
+0003476016 00000 n 
+0003476238 00000 n 
+0004785024 00000 n 
+0003478206 00000 n 
+0003478379 00000 n 
+0003478570 00000 n 
+0003478755 00000 n 
+0003478947 00000 n 
+0003479461 00000 n 
+0003478024 00000 n 
+0003476347 00000 n 
+0003479134 00000 n 
+0003479395 00000 n 
+0003481983 00000 n 
+0003482641 00000 n 
+0003481841 00000 n 
+0003479634 00000 n 
+0003482182 00000 n 
+0003482313 00000 n 
+0003482444 00000 n 
+0003482575 00000 n 
+0003484987 00000 n 
+0003485636 00000 n 
+0003484845 00000 n 
+0003482842 00000 n 
+0003485178 00000 n 
+0003485309 00000 n 
+0003485440 00000 n 
+0003485571 00000 n 
+0003488152 00000 n 
+0003488798 00000 n 
+0003488010 00000 n 
+0003485851 00000 n 
+0003488340 00000 n 
+0003488471 00000 n 
+0003488602 00000 n 
+0003488732 00000 n 
+0003491040 00000 n 
+0003491649 00000 n 
+0003490898 00000 n 
+0003488999 00000 n 
+0003491192 00000 n 
+0003491323 00000 n 
+0003491452 00000 n 
+0003491583 00000 n 
+0003494644 00000 n 
+0003495723 00000 n 
+0003494502 00000 n 
+0003491808 00000 n 
+0003494803 00000 n 
+0003494934 00000 n 
+0003495065 00000 n 
+0003495196 00000 n 
+0003495262 00000 n 
+0003495328 00000 n 
+0003495394 00000 n 
+0003495459 00000 n 
+0003495525 00000 n 
+0003495591 00000 n 
+0003495657 00000 n 
+0004785157 00000 n 
+0003497077 00000 n 
+0003497480 00000 n 
+0003496935 00000 n 
+0003495895 00000 n 
+0003497284 00000 n 
+0003497415 00000 n 
+0003498040 00000 n 
+0003497854 00000 n 
+0003497752 00000 n 
+0003497974 00000 n 
+0003500168 00000 n 
+0003499590 00000 n 
+0003498083 00000 n 
+0003499710 00000 n 
+0003499971 00000 n 
+0003500102 00000 n 
+0003502883 00000 n 
+0003502566 00000 n 
+0003500285 00000 n 
+0003502686 00000 n 
+0003502817 00000 n 
+0003505713 00000 n 
+0003505003 00000 n 
+0003503042 00000 n 
+0003505123 00000 n 
+0003505254 00000 n 
+0003505385 00000 n 
+0003505516 00000 n 
+0003505647 00000 n 
+0003507914 00000 n 
+0003508688 00000 n 
+0003507762 00000 n 
+0003505872 00000 n 
+0003508230 00000 n 
+0003508361 00000 n 
+0003508492 00000 n 
+0003508072 00000 n 
+0003508622 00000 n 
+0004785290 00000 n 
+0003511368 00000 n 
+0003510920 00000 n 
+0003508833 00000 n 
+0003511040 00000 n 
+0003511171 00000 n 
+0003511302 00000 n 
+0003511787 00000 n 
+0003511601 00000 n 
+0003511499 00000 n 
+0003511721 00000 n 
+0003513275 00000 n 
+0003516277 00000 n 
+0003513778 00000 n 
+0003513133 00000 n 
+0003511830 00000 n 
+0003513451 00000 n 
+0003513712 00000 n 
+0003516454 00000 n 
+0003516624 00000 n 
+0003516797 00000 n 
+0003516968 00000 n 
+0003517139 00000 n 
+0003517834 00000 n 
+0003516075 00000 n 
+0003513965 00000 n 
+0003517507 00000 n 
+0003517638 00000 n 
+0003517768 00000 n 
+0003517323 00000 n 
+0003519632 00000 n 
+0003519446 00000 n 
+0003518121 00000 n 
+0003519566 00000 n 
+0004762698 00000 n 
+0004766114 00000 n 
+0003521646 00000 n 
+0003521197 00000 n 
+0003519906 00000 n 
+0003521317 00000 n 
+0003521383 00000 n 
+0003521449 00000 n 
+0003521580 00000 n 
+0004785423 00000 n 
+0003523413 00000 n 
+0003523095 00000 n 
+0003521791 00000 n 
+0003523215 00000 n 
+0003523281 00000 n 
+0003523347 00000 n 
+0003525077 00000 n 
+0003524760 00000 n 
+0003523544 00000 n 
+0003524880 00000 n 
+0003525011 00000 n 
+0003526236 00000 n 
+0003526593 00000 n 
+0003526094 00000 n 
+0003525208 00000 n 
+0003526396 00000 n 
+0003526527 00000 n 
+0003527866 00000 n 
+0003527680 00000 n 
+0003526724 00000 n 
+0003527800 00000 n 
+0003529376 00000 n 
+0003529536 00000 n 
+0003529705 00000 n 
+0003530072 00000 n 
+0003529214 00000 n 
+0003528040 00000 n 
+0003529875 00000 n 
+0003530006 00000 n 
+0003530505 00000 n 
+0003530319 00000 n 
+0003530217 00000 n 
+0003530439 00000 n 
+0004785556 00000 n 
+0003532633 00000 n 
+0003532316 00000 n 
+0003530548 00000 n 
+0003532436 00000 n 
+0003532567 00000 n 
+0003535324 00000 n 
+0003535504 00000 n 
+0003535687 00000 n 
+0003536059 00000 n 
+0003535162 00000 n 
+0003532750 00000 n 
+0003535862 00000 n 
+0003535993 00000 n 
+0003538265 00000 n 
+0003538651 00000 n 
+0003538123 00000 n 
+0003536246 00000 n 
+0003538454 00000 n 
+0003538585 00000 n 
+0003539126 00000 n 
+0003538940 00000 n 
+0003538838 00000 n 
+0003539060 00000 n 
+0003543821 00000 n 
+0003543987 00000 n 
+0003544179 00000 n 
+0003541185 00000 n 
+0003540738 00000 n 
+0003539169 00000 n 
+0003540858 00000 n 
+0003541119 00000 n 
+0003544753 00000 n 
+0003543659 00000 n 
+0003541302 00000 n 
+0003544359 00000 n 
+0003544425 00000 n 
+0003544491 00000 n 
+0003544557 00000 n 
+0003544688 00000 n 
+0004785689 00000 n 
+0003546683 00000 n 
+0003546366 00000 n 
+0003544926 00000 n 
+0003546486 00000 n 
+0003546617 00000 n 
+0003547740 00000 n 
+0003547554 00000 n 
+0003546814 00000 n 
+0003547674 00000 n 
+0003548830 00000 n 
+0003548644 00000 n 
+0003547843 00000 n 
+0003548764 00000 n 
+0003549903 00000 n 
+0003549717 00000 n 
+0003548947 00000 n 
+0003549837 00000 n 
+0003551589 00000 n 
+0003551273 00000 n 
+0003550020 00000 n 
+0003551393 00000 n 
+0003552287 00000 n 
+0003552101 00000 n 
+0003551720 00000 n 
+0003552221 00000 n 
+0004785822 00000 n 
+0003554095 00000 n 
+0003554522 00000 n 
+0003553953 00000 n 
+0003552390 00000 n 
+0003554260 00000 n 
+0003554391 00000 n 
+0003554456 00000 n 
+0003557183 00000 n 
+0003556931 00000 n 
+0003554681 00000 n 
+0003557051 00000 n 
+0003557117 00000 n 
+0003559598 00000 n 
+0003559280 00000 n 
+0003557300 00000 n 
+0003559400 00000 n 
+0003559466 00000 n 
+0003559532 00000 n 
+0003562175 00000 n 
+0003561923 00000 n 
+0003559701 00000 n 
+0003562043 00000 n 
+0003562109 00000 n 
+0003564639 00000 n 
+0003564321 00000 n 
+0003562292 00000 n 
+0003564441 00000 n 
+0003564507 00000 n 
+0003564573 00000 n 
+0003567473 00000 n 
+0003566959 00000 n 
+0003564742 00000 n 
+0003567079 00000 n 
+0003567145 00000 n 
+0003567210 00000 n 
+0003567276 00000 n 
+0003567341 00000 n 
+0003567407 00000 n 
+0004785955 00000 n 
+0003570432 00000 n 
+0003569851 00000 n 
+0003567590 00000 n 
+0003569971 00000 n 
+0003570037 00000 n 
+0003570103 00000 n 
+0003570169 00000 n 
+0003570234 00000 n 
+0003570300 00000 n 
+0003570366 00000 n 
+0003573178 00000 n 
+0003572992 00000 n 
+0003570535 00000 n 
+0003573112 00000 n 
+0003575725 00000 n 
+0003575276 00000 n 
+0003573281 00000 n 
+0003575396 00000 n 
+0003575462 00000 n 
+0003575528 00000 n 
+0003575594 00000 n 
+0003575659 00000 n 
+0003578452 00000 n 
+0003578002 00000 n 
+0003575828 00000 n 
+0003578122 00000 n 
+0003578188 00000 n 
+0003578254 00000 n 
+0003578320 00000 n 
+0003578386 00000 n 
+0003580914 00000 n 
+0003580596 00000 n 
+0003578569 00000 n 
+0003580716 00000 n 
+0003580782 00000 n 
+0003580848 00000 n 
+0003583514 00000 n 
+0003583262 00000 n 
+0003581017 00000 n 
+0003583382 00000 n 
+0003583448 00000 n 
+0004786088 00000 n 
+0003586225 00000 n 
+0003585973 00000 n 
+0003583631 00000 n 
+0003586093 00000 n 
+0003586159 00000 n 
+0003588612 00000 n 
+0003588294 00000 n 
+0003586328 00000 n 
+0003588414 00000 n 
+0003588480 00000 n 
+0003588546 00000 n 
+0003590946 00000 n 
+0003590496 00000 n 
+0003588729 00000 n 
+0003590616 00000 n 
+0003590682 00000 n 
+0003590748 00000 n 
+0003590814 00000 n 
+0003590880 00000 n 
+0003593027 00000 n 
+0003592776 00000 n 
+0003591049 00000 n 
+0003592896 00000 n 
+0003594421 00000 n 
+0003594598 00000 n 
+0003595057 00000 n 
+0003594259 00000 n 
+0003593158 00000 n 
+0003594991 00000 n 
+0003594795 00000 n 
+0003595462 00000 n 
+0003595276 00000 n 
+0003595174 00000 n 
+0003595396 00000 n 
+0004786221 00000 n 
+0003597438 00000 n 
+0003597756 00000 n 
+0003600321 00000 n 
+0003598125 00000 n 
+0003597276 00000 n 
+0003595505 00000 n 
+0003597928 00000 n 
+0003598059 00000 n 
+0003597597 00000 n 
+0003600469 00000 n 
+0003600687 00000 n 
+0003600169 00000 n 
+0003598256 00000 n 
+0003600621 00000 n 
+0003602940 00000 n 
+0003603154 00000 n 
+0003602798 00000 n 
+0003600804 00000 n 
+0003603088 00000 n 
+0003605553 00000 n 
+0003605778 00000 n 
+0003605411 00000 n 
+0003603271 00000 n 
+0003605712 00000 n 
+0003606561 00000 n 
+0003606375 00000 n 
+0003605895 00000 n 
+0003606495 00000 n 
+0003606952 00000 n 
+0003606766 00000 n 
+0003606664 00000 n 
+0003606886 00000 n 
+0004786354 00000 n 
+0003609843 00000 n 
+0003609995 00000 n 
+0003610147 00000 n 
+0003610298 00000 n 
+0003610449 00000 n 
+0003610602 00000 n 
+0003610755 00000 n 
+0003610908 00000 n 
+0003611061 00000 n 
+0003611213 00000 n 
+0003611365 00000 n 
+0003611518 00000 n 
+0003611671 00000 n 
+0003611823 00000 n 
+0003611976 00000 n 
+0003612129 00000 n 
+0003612282 00000 n 
+0003612435 00000 n 
+0003612587 00000 n 
+0003612740 00000 n 
+0003612893 00000 n 
+0003613046 00000 n 
+0003613199 00000 n 
+0003613352 00000 n 
+0003613505 00000 n 
+0003613657 00000 n 
+0003613810 00000 n 
+0003613961 00000 n 
+0003614113 00000 n 
+0003614265 00000 n 
+0003614417 00000 n 
+0003614569 00000 n 
+0003614722 00000 n 
+0003614875 00000 n 
+0003615028 00000 n 
+0003615181 00000 n 
+0003615334 00000 n 
+0003615487 00000 n 
+0003615640 00000 n 
+0003615793 00000 n 
+0003615946 00000 n 
+0003616099 00000 n 
+0003616252 00000 n 
+0003616405 00000 n 
+0003616558 00000 n 
+0003616710 00000 n 
+0003616863 00000 n 
+0003617015 00000 n 
+0003617168 00000 n 
+0003617321 00000 n 
+0003617474 00000 n 
+0003617626 00000 n 
+0003617778 00000 n 
+0003617929 00000 n 
+0003618082 00000 n 
+0003618233 00000 n 
+0003618385 00000 n 
+0003618536 00000 n 
+0003618688 00000 n 
+0003618840 00000 n 
+0003618993 00000 n 
+0003619146 00000 n 
+0003619299 00000 n 
+0003619452 00000 n 
+0003619604 00000 n 
+0003619757 00000 n 
+0003619910 00000 n 
+0003620063 00000 n 
+0003620216 00000 n 
+0003620369 00000 n 
+0003620519 00000 n 
+0003620672 00000 n 
+0003620825 00000 n 
+0003620978 00000 n 
+0003621131 00000 n 
+0003621283 00000 n 
+0003621434 00000 n 
+0003621586 00000 n 
+0003621739 00000 n 
+0003621891 00000 n 
+0003622044 00000 n 
+0003622197 00000 n 
+0003622350 00000 n 
+0003622503 00000 n 
+0003622655 00000 n 
+0003622807 00000 n 
+0003622959 00000 n 
+0003623111 00000 n 
+0003623264 00000 n 
+0003623417 00000 n 
+0003623569 00000 n 
+0003623722 00000 n 
+0003623875 00000 n 
+0003624028 00000 n 
+0003624181 00000 n 
+0003624333 00000 n 
+0003624486 00000 n 
+0003624639 00000 n 
+0003624792 00000 n 
+0003624944 00000 n 
+0003625096 00000 n 
+0003625248 00000 n 
+0003625400 00000 n 
+0003625552 00000 n 
+0003625702 00000 n 
+0003625854 00000 n 
+0003626006 00000 n 
+0003626158 00000 n 
+0003626308 00000 n 
+0003626458 00000 n 
+0003626608 00000 n 
+0003626760 00000 n 
+0003626912 00000 n 
+0003627062 00000 n 
+0003627212 00000 n 
+0003627363 00000 n 
+0003627515 00000 n 
+0003627667 00000 n 
+0003627819 00000 n 
+0003627971 00000 n 
+0003628123 00000 n 
+0003628276 00000 n 
+0003628429 00000 n 
+0003628582 00000 n 
+0003628733 00000 n 
+0003628886 00000 n 
+0003629039 00000 n 
+0003629191 00000 n 
+0003629344 00000 n 
+0003629497 00000 n 
+0003632734 00000 n 
+0003629716 00000 n 
+0003608411 00000 n 
+0003606995 00000 n 
+0003629650 00000 n 
+0003632886 00000 n 
+0003633039 00000 n 
+0003633192 00000 n 
+0003633345 00000 n 
+0003633496 00000 n 
+0003633648 00000 n 
+0003633800 00000 n 
+0003633952 00000 n 
+0003634105 00000 n 
+0003634258 00000 n 
+0003634411 00000 n 
+0003634563 00000 n 
+0003634715 00000 n 
+0003634867 00000 n 
+0003635019 00000 n 
+0003635172 00000 n 
+0003635325 00000 n 
+0003635478 00000 n 
+0003635631 00000 n 
+0003635783 00000 n 
+0003635935 00000 n 
+0003636088 00000 n 
+0003636240 00000 n 
+0003636391 00000 n 
+0003636542 00000 n 
+0003636695 00000 n 
+0003636848 00000 n 
+0003637001 00000 n 
+0003637154 00000 n 
+0003637306 00000 n 
+0003637458 00000 n 
+0003637610 00000 n 
+0003637763 00000 n 
+0003637914 00000 n 
+0003638066 00000 n 
+0003638217 00000 n 
+0003638370 00000 n 
+0003638522 00000 n 
+0003638675 00000 n 
+0003638827 00000 n 
+0003638979 00000 n 
+0003639132 00000 n 
+0003639285 00000 n 
+0003639436 00000 n 
+0003639589 00000 n 
+0003639742 00000 n 
+0003639895 00000 n 
+0003640046 00000 n 
+0003640195 00000 n 
+0003640347 00000 n 
+0003640499 00000 n 
+0003640651 00000 n 
+0003640804 00000 n 
+0003640957 00000 n 
+0003641110 00000 n 
+0003641263 00000 n 
+0003641416 00000 n 
+0003641569 00000 n 
+0003641722 00000 n 
+0003641875 00000 n 
+0003642028 00000 n 
+0003642181 00000 n 
+0003642334 00000 n 
+0003642487 00000 n 
+0003642640 00000 n 
+0003642792 00000 n 
+0003642944 00000 n 
+0003643096 00000 n 
+0003643248 00000 n 
+0003643397 00000 n 
+0003643549 00000 n 
+0003643702 00000 n 
+0003643855 00000 n 
+0003644007 00000 n 
+0003644158 00000 n 
+0003644310 00000 n 
+0003644462 00000 n 
+0003644615 00000 n 
+0003644768 00000 n 
+0003644921 00000 n 
+0003645074 00000 n 
+0003645227 00000 n 
+0003645380 00000 n 
+0003645532 00000 n 
+0003645681 00000 n 
+0003645834 00000 n 
+0003645987 00000 n 
+0003646140 00000 n 
+0003646293 00000 n 
+0003646446 00000 n 
+0003646599 00000 n 
+0003646751 00000 n 
+0003646903 00000 n 
+0003647055 00000 n 
+0003647208 00000 n 
+0003647361 00000 n 
+0003651019 00000 n 
+0003647580 00000 n 
+0003631632 00000 n 
+0003629833 00000 n 
+0003647514 00000 n 
+0003651172 00000 n 
+0003651325 00000 n 
+0003651477 00000 n 
+0003651629 00000 n 
+0003651781 00000 n 
+0003651933 00000 n 
+0003652085 00000 n 
+0003652233 00000 n 
+0003652386 00000 n 
+0003652538 00000 n 
+0003652690 00000 n 
+0003652843 00000 n 
+0003652994 00000 n 
+0003653147 00000 n 
+0003653298 00000 n 
+0003653451 00000 n 
+0003653604 00000 n 
+0003653757 00000 n 
+0003653909 00000 n 
+0003654062 00000 n 
+0003654215 00000 n 
+0003654368 00000 n 
+0003654521 00000 n 
+0003654674 00000 n 
+0003654827 00000 n 
+0003654979 00000 n 
+0003655131 00000 n 
+0003655283 00000 n 
+0003655436 00000 n 
+0003655589 00000 n 
+0003655742 00000 n 
+0003655895 00000 n 
+0003656047 00000 n 
+0003656199 00000 n 
+0003656352 00000 n 
+0003656505 00000 n 
+0003656657 00000 n 
+0003656809 00000 n 
+0003656961 00000 n 
+0003657113 00000 n 
+0003657265 00000 n 
+0003657417 00000 n 
+0003657569 00000 n 
+0003657722 00000 n 
+0003657875 00000 n 
+0003658028 00000 n 
+0003658180 00000 n 
+0003658331 00000 n 
+0003658484 00000 n 
+0003658637 00000 n 
+0003658790 00000 n 
+0003658943 00000 n 
+0003659095 00000 n 
+0003659246 00000 n 
+0003659399 00000 n 
+0003659552 00000 n 
+0003659705 00000 n 
+0003659857 00000 n 
+0003660010 00000 n 
+0003660163 00000 n 
+0003660315 00000 n 
+0003660468 00000 n 
+0003660621 00000 n 
+0003660774 00000 n 
+0003660927 00000 n 
+0003661080 00000 n 
+0003661233 00000 n 
+0003661386 00000 n 
+0003661539 00000 n 
+0003661692 00000 n 
+0003661845 00000 n 
+0003661998 00000 n 
+0003662151 00000 n 
+0003662304 00000 n 
+0003662457 00000 n 
+0003662610 00000 n 
+0003662763 00000 n 
+0003662916 00000 n 
+0003663069 00000 n 
+0003663221 00000 n 
+0003663374 00000 n 
+0003663526 00000 n 
+0003663678 00000 n 
+0003663831 00000 n 
+0003663983 00000 n 
+0003664136 00000 n 
+0003664289 00000 n 
+0003664442 00000 n 
+0003664595 00000 n 
+0003664748 00000 n 
+0003664901 00000 n 
+0003665054 00000 n 
+0003665207 00000 n 
+0003665360 00000 n 
+0003665513 00000 n 
+0003665666 00000 n 
+0003665819 00000 n 
+0003665972 00000 n 
+0003666123 00000 n 
+0003666276 00000 n 
+0003666428 00000 n 
+0003666580 00000 n 
+0003666732 00000 n 
+0003666885 00000 n 
+0003667038 00000 n 
+0003667191 00000 n 
+0003667344 00000 n 
+0003667497 00000 n 
+0003667650 00000 n 
+0003667803 00000 n 
+0003667955 00000 n 
+0003668107 00000 n 
+0003668258 00000 n 
+0003668410 00000 n 
+0003668563 00000 n 
+0003668716 00000 n 
+0003668869 00000 n 
+0003669022 00000 n 
+0003669175 00000 n 
+0003669328 00000 n 
+0003669481 00000 n 
+0003669634 00000 n 
+0003669787 00000 n 
+0003669940 00000 n 
+0003670092 00000 n 
+0003670245 00000 n 
+0003670398 00000 n 
+0003670551 00000 n 
+0003670703 00000 n 
+0003670854 00000 n 
+0003671006 00000 n 
+0003671158 00000 n 
+0003671310 00000 n 
+0003671463 00000 n 
+0003671616 00000 n 
+0003671769 00000 n 
+0003671922 00000 n 
+0003672075 00000 n 
+0003672228 00000 n 
+0003672381 00000 n 
+0003672533 00000 n 
+0003672686 00000 n 
+0003672839 00000 n 
+0003675865 00000 n 
+0003676017 00000 n 
+0003676169 00000 n 
+0003676320 00000 n 
+0003676472 00000 n 
+0003676623 00000 n 
+0003676776 00000 n 
+0003676929 00000 n 
+0003677082 00000 n 
+0003673058 00000 n 
+0003649447 00000 n 
+0003647725 00000 n 
+0003672992 00000 n 
+0003677235 00000 n 
+0003677388 00000 n 
+0003677541 00000 n 
+0003677694 00000 n 
+0003677847 00000 n 
+0003677998 00000 n 
+0003678151 00000 n 
+0003678304 00000 n 
+0003678456 00000 n 
+0003678608 00000 n 
+0003678760 00000 n 
+0003678913 00000 n 
+0003679066 00000 n 
+0003679218 00000 n 
+0003679371 00000 n 
+0003679524 00000 n 
+0003679677 00000 n 
+0003679829 00000 n 
+0003679981 00000 n 
+0003680134 00000 n 
+0003680286 00000 n 
+0003680439 00000 n 
+0003680591 00000 n 
+0003680744 00000 n 
+0003680897 00000 n 
+0003681050 00000 n 
+0003681202 00000 n 
+0003681353 00000 n 
+0003681505 00000 n 
+0003681658 00000 n 
+0003681811 00000 n 
+0003681964 00000 n 
+0003682117 00000 n 
+0003682270 00000 n 
+0003682422 00000 n 
+0003682575 00000 n 
+0003682728 00000 n 
+0003682881 00000 n 
+0003683034 00000 n 
+0003683187 00000 n 
+0003683340 00000 n 
+0003683493 00000 n 
+0003683645 00000 n 
+0003683797 00000 n 
+0003683949 00000 n 
+0003684102 00000 n 
+0003684255 00000 n 
+0003684408 00000 n 
+0003684561 00000 n 
+0003684714 00000 n 
+0003684867 00000 n 
+0003685019 00000 n 
+0003685172 00000 n 
+0003685325 00000 n 
+0003685478 00000 n 
+0003685631 00000 n 
+0003685784 00000 n 
+0003685936 00000 n 
+0003686089 00000 n 
+0003686242 00000 n 
+0003686395 00000 n 
+0003686548 00000 n 
+0003686701 00000 n 
+0003686853 00000 n 
+0003687005 00000 n 
+0003687156 00000 n 
+0003687309 00000 n 
+0003687462 00000 n 
+0003687615 00000 n 
+0003687768 00000 n 
+0003687921 00000 n 
+0003688074 00000 n 
+0003688227 00000 n 
+0003688380 00000 n 
+0003688533 00000 n 
+0003688685 00000 n 
+0003688837 00000 n 
+0003688989 00000 n 
+0003689141 00000 n 
+0003689292 00000 n 
+0003689445 00000 n 
+0003689597 00000 n 
+0003689750 00000 n 
+0003689902 00000 n 
+0003690055 00000 n 
+0003690207 00000 n 
+0003690359 00000 n 
+0003690508 00000 n 
+0003690659 00000 n 
+0003690811 00000 n 
+0003690964 00000 n 
+0003691117 00000 n 
+0003691270 00000 n 
+0003691423 00000 n 
+0003691576 00000 n 
+0003691729 00000 n 
+0003694850 00000 n 
+0003691948 00000 n 
+0003674683 00000 n 
+0003673175 00000 n 
+0003691882 00000 n 
+0003695003 00000 n 
+0003695156 00000 n 
+0003695308 00000 n 
+0003695461 00000 n 
+0003695613 00000 n 
+0003695766 00000 n 
+0003695918 00000 n 
+0003696071 00000 n 
+0003696223 00000 n 
+0003696376 00000 n 
+0003696529 00000 n 
+0003696682 00000 n 
+0003696835 00000 n 
+0003696988 00000 n 
+0003697141 00000 n 
+0003697294 00000 n 
+0003697447 00000 n 
+0003697600 00000 n 
+0003697753 00000 n 
+0003697905 00000 n 
+0003698058 00000 n 
+0003698208 00000 n 
+0003698359 00000 n 
+0003698511 00000 n 
+0003698661 00000 n 
+0003698814 00000 n 
+0003698966 00000 n 
+0003699119 00000 n 
+0003699272 00000 n 
+0003699423 00000 n 
+0003699574 00000 n 
+0003699726 00000 n 
+0003699879 00000 n 
+0003700031 00000 n 
+0003700184 00000 n 
+0003700337 00000 n 
+0003700490 00000 n 
+0003700643 00000 n 
+0003700795 00000 n 
+0003700947 00000 n 
+0003701100 00000 n 
+0003701253 00000 n 
+0003701406 00000 n 
+0003701559 00000 n 
+0003701711 00000 n 
+0003701864 00000 n 
+0003702017 00000 n 
+0003702170 00000 n 
+0003702322 00000 n 
+0003702475 00000 n 
+0003702627 00000 n 
+0003702778 00000 n 
+0003702928 00000 n 
+0003703081 00000 n 
+0003703232 00000 n 
+0003703383 00000 n 
+0003703534 00000 n 
+0003703685 00000 n 
+0003703835 00000 n 
+0003703985 00000 n 
+0003704136 00000 n 
+0003704287 00000 n 
+0003704439 00000 n 
+0003704591 00000 n 
+0003704743 00000 n 
+0003704896 00000 n 
+0003705049 00000 n 
+0003705202 00000 n 
+0003705354 00000 n 
+0003705507 00000 n 
+0003705660 00000 n 
+0003705813 00000 n 
+0003705966 00000 n 
+0003706119 00000 n 
+0003706272 00000 n 
+0003706425 00000 n 
+0003706578 00000 n 
+0003706731 00000 n 
+0003706884 00000 n 
+0003707035 00000 n 
+0003707188 00000 n 
+0003707341 00000 n 
+0003707494 00000 n 
+0003707647 00000 n 
+0003707799 00000 n 
+0003707951 00000 n 
+0003708103 00000 n 
+0003708256 00000 n 
+0003708408 00000 n 
+0003708561 00000 n 
+0003708714 00000 n 
+0003708867 00000 n 
+0003709019 00000 n 
+0003709171 00000 n 
+0003709324 00000 n 
+0003709477 00000 n 
+0003709630 00000 n 
+0003709781 00000 n 
+0003709933 00000 n 
+0003710084 00000 n 
+0003710235 00000 n 
+0003710388 00000 n 
+0003710541 00000 n 
+0003710693 00000 n 
+0003710846 00000 n 
+0003710998 00000 n 
+0003711151 00000 n 
+0003711304 00000 n 
+0003714479 00000 n 
+0003714632 00000 n 
+0003711523 00000 n 
+0003693628 00000 n 
+0003692051 00000 n 
+0003711457 00000 n 
+0003714785 00000 n 
+0003714936 00000 n 
+0003715089 00000 n 
+0003715241 00000 n 
+0003715394 00000 n 
+0003715547 00000 n 
+0003715700 00000 n 
+0003715852 00000 n 
+0003716004 00000 n 
+0003716157 00000 n 
+0003716310 00000 n 
+0003716460 00000 n 
+0003716612 00000 n 
+0003716765 00000 n 
+0003716918 00000 n 
+0003717071 00000 n 
+0003717224 00000 n 
+0003717377 00000 n 
+0003717530 00000 n 
+0003717683 00000 n 
+0003717835 00000 n 
+0003717986 00000 n 
+0003718139 00000 n 
+0003718292 00000 n 
+0003718445 00000 n 
+0003718598 00000 n 
+0003718751 00000 n 
+0003718904 00000 n 
+0003719057 00000 n 
+0003719210 00000 n 
+0003719361 00000 n 
+0003719513 00000 n 
+0003719664 00000 n 
+0003719815 00000 n 
+0003719968 00000 n 
+0003720121 00000 n 
+0003720274 00000 n 
+0003720427 00000 n 
+0003720580 00000 n 
+0003720733 00000 n 
+0003720886 00000 n 
+0003721038 00000 n 
+0003721191 00000 n 
+0003721344 00000 n 
+0003721497 00000 n 
+0003721649 00000 n 
+0003721802 00000 n 
+0003721955 00000 n 
+0003722106 00000 n 
+0003722259 00000 n 
+0003722412 00000 n 
+0003722565 00000 n 
+0003722718 00000 n 
+0003722868 00000 n 
+0003723018 00000 n 
+0003723170 00000 n 
+0003723322 00000 n 
+0003723473 00000 n 
+0003723626 00000 n 
+0003723779 00000 n 
+0003723932 00000 n 
+0003724085 00000 n 
+0003724238 00000 n 
+0003724391 00000 n 
+0003724544 00000 n 
+0003724695 00000 n 
+0003724845 00000 n 
+0003724996 00000 n 
+0003725149 00000 n 
+0003725302 00000 n 
+0003725455 00000 n 
+0003725608 00000 n 
+0003725760 00000 n 
+0003725912 00000 n 
+0003726065 00000 n 
+0003726218 00000 n 
+0003726371 00000 n 
+0003726524 00000 n 
+0003726677 00000 n 
+0003726830 00000 n 
+0003726983 00000 n 
+0003727136 00000 n 
+0003727287 00000 n 
+0003727439 00000 n 
+0003727591 00000 n 
+0003727742 00000 n 
+0003727895 00000 n 
+0003728047 00000 n 
+0003728199 00000 n 
+0003728352 00000 n 
+0003728505 00000 n 
+0003728658 00000 n 
+0003728811 00000 n 
+0003728963 00000 n 
+0003729113 00000 n 
+0003729266 00000 n 
+0003729419 00000 n 
+0003729572 00000 n 
+0003729724 00000 n 
+0003729877 00000 n 
+0003730029 00000 n 
+0003730181 00000 n 
+0003730334 00000 n 
+0003730487 00000 n 
+0003733457 00000 n 
+0003730706 00000 n 
+0003713287 00000 n 
+0003711640 00000 n 
+0003730640 00000 n 
+0004786487 00000 n 
+0003733610 00000 n 
+0003733762 00000 n 
+0003733915 00000 n 
+0003734068 00000 n 
+0003734220 00000 n 
+0003734370 00000 n 
+0003734520 00000 n 
+0003734673 00000 n 
+0003734826 00000 n 
+0003734978 00000 n 
+0003735131 00000 n 
+0003735284 00000 n 
+0003735437 00000 n 
+0003735589 00000 n 
+0003735741 00000 n 
+0003735893 00000 n 
+0003736045 00000 n 
+0003736198 00000 n 
+0003736350 00000 n 
+0003736502 00000 n 
+0003736654 00000 n 
+0003736807 00000 n 
+0003736960 00000 n 
+0003737112 00000 n 
+0003737263 00000 n 
+0003737416 00000 n 
+0003737568 00000 n 
+0003737721 00000 n 
+0003737874 00000 n 
+0003738027 00000 n 
+0003738180 00000 n 
+0003738333 00000 n 
+0003738486 00000 n 
+0003738639 00000 n 
+0003738791 00000 n 
+0003738944 00000 n 
+0003739096 00000 n 
+0003739248 00000 n 
+0003739399 00000 n 
+0003739551 00000 n 
+0003739704 00000 n 
+0003739857 00000 n 
+0003740010 00000 n 
+0003740163 00000 n 
+0003740316 00000 n 
+0003740469 00000 n 
+0003740622 00000 n 
+0003740775 00000 n 
+0003740928 00000 n 
+0003741080 00000 n 
+0003741232 00000 n 
+0003741384 00000 n 
+0003741537 00000 n 
+0003741690 00000 n 
+0003741843 00000 n 
+0003741996 00000 n 
+0003742148 00000 n 
+0003742298 00000 n 
+0003742451 00000 n 
+0003742604 00000 n 
+0003742757 00000 n 
+0003742910 00000 n 
+0003743061 00000 n 
+0003743214 00000 n 
+0003743366 00000 n 
+0003743518 00000 n 
+0003743669 00000 n 
+0003743821 00000 n 
+0003743973 00000 n 
+0003744126 00000 n 
+0003744278 00000 n 
+0003744430 00000 n 
+0003744583 00000 n 
+0003744735 00000 n 
+0003744887 00000 n 
+0003745038 00000 n 
+0003745191 00000 n 
+0003745344 00000 n 
+0003745497 00000 n 
+0003745649 00000 n 
+0003745801 00000 n 
+0003745953 00000 n 
+0003746104 00000 n 
+0003746255 00000 n 
+0003746406 00000 n 
+0003746559 00000 n 
+0003746712 00000 n 
+0003746863 00000 n 
+0003747016 00000 n 
+0003747168 00000 n 
+0003747321 00000 n 
+0003747474 00000 n 
+0003750639 00000 n 
+0003747693 00000 n 
+0003732395 00000 n 
+0003730837 00000 n 
+0003747627 00000 n 
+0003750792 00000 n 
+0003750945 00000 n 
+0003751098 00000 n 
+0003751251 00000 n 
+0003751403 00000 n 
+0003751553 00000 n 
+0003751706 00000 n 
+0003751858 00000 n 
+0003752011 00000 n 
+0003752162 00000 n 
+0003752314 00000 n 
+0003752467 00000 n 
+0003752620 00000 n 
+0003752773 00000 n 
+0003752925 00000 n 
+0003753077 00000 n 
+0003753228 00000 n 
+0003753380 00000 n 
+0003753532 00000 n 
+0003753685 00000 n 
+0003753837 00000 n 
+0003753990 00000 n 
+0003754142 00000 n 
+0003754295 00000 n 
+0003754448 00000 n 
+0003754600 00000 n 
+0003754753 00000 n 
+0003754905 00000 n 
+0003755057 00000 n 
+0003755209 00000 n 
+0003755362 00000 n 
+0003755515 00000 n 
+0003755667 00000 n 
+0003755820 00000 n 
+0003755973 00000 n 
+0003756126 00000 n 
+0003756279 00000 n 
+0003756432 00000 n 
+0003756585 00000 n 
+0003756738 00000 n 
+0003756891 00000 n 
+0003757044 00000 n 
+0003757196 00000 n 
+0003757348 00000 n 
+0003757499 00000 n 
+0003757651 00000 n 
+0003757804 00000 n 
+0003757957 00000 n 
+0003758110 00000 n 
+0003758262 00000 n 
+0003758415 00000 n 
+0003758567 00000 n 
+0003758718 00000 n 
+0003758871 00000 n 
+0003759024 00000 n 
+0003759177 00000 n 
+0003759330 00000 n 
+0003759483 00000 n 
+0003759636 00000 n 
+0003759787 00000 n 
+0003759940 00000 n 
+0003760093 00000 n 
+0003760246 00000 n 
+0003760399 00000 n 
+0003760551 00000 n 
+0003760703 00000 n 
+0003760856 00000 n 
+0003761009 00000 n 
+0003761160 00000 n 
+0003761313 00000 n 
+0003761463 00000 n 
+0003761615 00000 n 
+0003761767 00000 n 
+0003761920 00000 n 
+0003762073 00000 n 
+0003762225 00000 n 
+0003762378 00000 n 
+0003762531 00000 n 
+0003762684 00000 n 
+0003762837 00000 n 
+0003762990 00000 n 
+0003763142 00000 n 
+0003763295 00000 n 
+0003763448 00000 n 
+0003763601 00000 n 
+0003763754 00000 n 
+0003763906 00000 n 
+0003764059 00000 n 
+0003764212 00000 n 
+0003764365 00000 n 
+0003764518 00000 n 
+0003764671 00000 n 
+0003764824 00000 n 
+0003764977 00000 n 
+0003765130 00000 n 
+0003765283 00000 n 
+0003765436 00000 n 
+0003765588 00000 n 
+0003765741 00000 n 
+0003765894 00000 n 
+0003766047 00000 n 
+0003766200 00000 n 
+0003766353 00000 n 
+0003766506 00000 n 
+0003766659 00000 n 
+0003766811 00000 n 
+0003766964 00000 n 
+0003769763 00000 n 
+0003769914 00000 n 
+0003770067 00000 n 
+0003770219 00000 n 
+0003767183 00000 n 
+0003749427 00000 n 
+0003747810 00000 n 
+0003767117 00000 n 
+0003770371 00000 n 
+0003770524 00000 n 
+0003770677 00000 n 
+0003770830 00000 n 
+0003770982 00000 n 
+0003771132 00000 n 
+0003771282 00000 n 
+0003771435 00000 n 
+0003771588 00000 n 
+0003771741 00000 n 
+0003771894 00000 n 
+0003772047 00000 n 
+0003772200 00000 n 
+0003772353 00000 n 
+0003772506 00000 n 
+0003772658 00000 n 
+0003772809 00000 n 
+0003772962 00000 n 
+0003773115 00000 n 
+0003773268 00000 n 
+0003773421 00000 n 
+0003773574 00000 n 
+0003773725 00000 n 
+0003773877 00000 n 
+0003774030 00000 n 
+0003774183 00000 n 
+0003774336 00000 n 
+0003774489 00000 n 
+0003774642 00000 n 
+0003774795 00000 n 
+0003774948 00000 n 
+0003775101 00000 n 
+0003775254 00000 n 
+0003775407 00000 n 
+0003775560 00000 n 
+0003775710 00000 n 
+0003775863 00000 n 
+0003776015 00000 n 
+0003776165 00000 n 
+0003776318 00000 n 
+0003776471 00000 n 
+0003776624 00000 n 
+0003776777 00000 n 
+0003776930 00000 n 
+0003777081 00000 n 
+0003777234 00000 n 
+0003777387 00000 n 
+0003777539 00000 n 
+0003777690 00000 n 
+0003777843 00000 n 
+0003777996 00000 n 
+0003778149 00000 n 
+0003778302 00000 n 
+0003778453 00000 n 
+0003778603 00000 n 
+0003778756 00000 n 
+0003778908 00000 n 
+0003779061 00000 n 
+0003779214 00000 n 
+0003779367 00000 n 
+0003779520 00000 n 
+0003779673 00000 n 
+0003779825 00000 n 
+0003779978 00000 n 
+0003780130 00000 n 
+0003780282 00000 n 
+0003780434 00000 n 
+0003780587 00000 n 
+0003780740 00000 n 
+0003780892 00000 n 
+0003781043 00000 n 
+0003781194 00000 n 
+0003781347 00000 n 
+0003781500 00000 n 
+0003781653 00000 n 
+0003781806 00000 n 
+0003781959 00000 n 
+0003782111 00000 n 
+0003782263 00000 n 
+0003782416 00000 n 
+0003782568 00000 n 
+0003782721 00000 n 
+0003782874 00000 n 
+0003783027 00000 n 
+0003783180 00000 n 
+0003783333 00000 n 
+0003783486 00000 n 
+0003783639 00000 n 
+0003786874 00000 n 
+0003783858 00000 n 
+0003768711 00000 n 
+0003767300 00000 n 
+0003783792 00000 n 
+0003787027 00000 n 
+0003787179 00000 n 
+0003787330 00000 n 
+0003787483 00000 n 
+0003787636 00000 n 
+0003787789 00000 n 
+0003787941 00000 n 
+0003788091 00000 n 
+0003788244 00000 n 
+0003788397 00000 n 
+0003788550 00000 n 
+0003788702 00000 n 
+0003788855 00000 n 
+0003789007 00000 n 
+0003789160 00000 n 
+0003789313 00000 n 
+0003789466 00000 n 
+0003789619 00000 n 
+0003789772 00000 n 
+0003789923 00000 n 
+0003790075 00000 n 
+0003790227 00000 n 
+0003790379 00000 n 
+0003790530 00000 n 
+0003790683 00000 n 
+0003790836 00000 n 
+0003790988 00000 n 
+0003791140 00000 n 
+0003791293 00000 n 
+0003791446 00000 n 
+0003791599 00000 n 
+0003791752 00000 n 
+0003791905 00000 n 
+0003792054 00000 n 
+0003792206 00000 n 
+0003792358 00000 n 
+0003792510 00000 n 
+0003792661 00000 n 
+0003792812 00000 n 
+0003792965 00000 n 
+0003793118 00000 n 
+0003793271 00000 n 
+0003793424 00000 n 
+0003793577 00000 n 
+0003793730 00000 n 
+0003793883 00000 n 
+0003794036 00000 n 
+0003794189 00000 n 
+0003794342 00000 n 
+0003794495 00000 n 
+0003794648 00000 n 
+0003794801 00000 n 
+0003794954 00000 n 
+0003795105 00000 n 
+0003795255 00000 n 
+0003795408 00000 n 
+0003795560 00000 n 
+0003795713 00000 n 
+0003795866 00000 n 
+0003796019 00000 n 
+0003796172 00000 n 
+0003796325 00000 n 
+0003796477 00000 n 
+0003796630 00000 n 
+0003796783 00000 n 
+0003796936 00000 n 
+0003797087 00000 n 
+0003797239 00000 n 
+0003797390 00000 n 
+0003797543 00000 n 
+0003797695 00000 n 
+0003797847 00000 n 
+0003798000 00000 n 
+0003798153 00000 n 
+0003798306 00000 n 
+0003798459 00000 n 
+0003798612 00000 n 
+0003798764 00000 n 
+0003798913 00000 n 
+0003799063 00000 n 
+0003799216 00000 n 
+0003799366 00000 n 
+0003799517 00000 n 
+0003799667 00000 n 
+0003799818 00000 n 
+0003799970 00000 n 
+0003800122 00000 n 
+0003800274 00000 n 
+0003800427 00000 n 
+0003800580 00000 n 
+0003800733 00000 n 
+0003800886 00000 n 
+0003801039 00000 n 
+0003801192 00000 n 
+0003801345 00000 n 
+0003801497 00000 n 
+0003801649 00000 n 
+0003801801 00000 n 
+0003801953 00000 n 
+0003802104 00000 n 
+0003802257 00000 n 
+0003802409 00000 n 
+0003802561 00000 n 
+0003802713 00000 n 
+0003802866 00000 n 
+0003803019 00000 n 
+0003803172 00000 n 
+0003803325 00000 n 
+0003803477 00000 n 
+0003803630 00000 n 
+0003803782 00000 n 
+0003807260 00000 n 
+0003807412 00000 n 
+0003807564 00000 n 
+0003807715 00000 n 
+0003807867 00000 n 
+0003808019 00000 n 
+0003808172 00000 n 
+0003808325 00000 n 
+0003808477 00000 n 
+0003808630 00000 n 
+0003808783 00000 n 
+0003808936 00000 n 
+0003804001 00000 n 
+0003785622 00000 n 
+0003783961 00000 n 
+0003803935 00000 n 
+0003809089 00000 n 
+0003809242 00000 n 
+0003809394 00000 n 
+0003809545 00000 n 
+0003809695 00000 n 
+0003809848 00000 n 
+0003810001 00000 n 
+0003810154 00000 n 
+0003810306 00000 n 
+0003810457 00000 n 
+0003810609 00000 n 
+0003810762 00000 n 
+0003810915 00000 n 
+0003811068 00000 n 
+0003811221 00000 n 
+0003811374 00000 n 
+0003811527 00000 n 
+0003811680 00000 n 
+0003811832 00000 n 
+0003811984 00000 n 
+0003812136 00000 n 
+0003812287 00000 n 
+0003812439 00000 n 
+0003812590 00000 n 
+0003812741 00000 n 
+0003812893 00000 n 
+0003813045 00000 n 
+0003813197 00000 n 
+0003813349 00000 n 
+0003813501 00000 n 
+0003813652 00000 n 
+0003813804 00000 n 
+0003813956 00000 n 
+0003814107 00000 n 
+0003814258 00000 n 
+0003814410 00000 n 
+0003814562 00000 n 
+0003814712 00000 n 
+0003814863 00000 n 
+0003815013 00000 n 
+0003815164 00000 n 
+0003815316 00000 n 
+0003815468 00000 n 
+0003815621 00000 n 
+0003815774 00000 n 
+0003815927 00000 n 
+0003816080 00000 n 
+0003816233 00000 n 
+0003816386 00000 n 
+0003816539 00000 n 
+0003816691 00000 n 
+0003816844 00000 n 
+0003816997 00000 n 
+0003817150 00000 n 
+0003817301 00000 n 
+0003817453 00000 n 
+0003817605 00000 n 
+0003817757 00000 n 
+0003817909 00000 n 
+0003818061 00000 n 
+0003818214 00000 n 
+0003818367 00000 n 
+0003818516 00000 n 
+0003818667 00000 n 
+0003818820 00000 n 
+0003818972 00000 n 
+0003819123 00000 n 
+0003819275 00000 n 
+0003819427 00000 n 
+0003819578 00000 n 
+0003819730 00000 n 
+0003819883 00000 n 
+0003820036 00000 n 
+0003820189 00000 n 
+0003820342 00000 n 
+0003820493 00000 n 
+0003820644 00000 n 
+0003820795 00000 n 
+0003820946 00000 n 
+0003821097 00000 n 
+0003821249 00000 n 
+0003821401 00000 n 
+0003821554 00000 n 
+0003821707 00000 n 
+0003821860 00000 n 
+0003822012 00000 n 
+0003822165 00000 n 
+0003822317 00000 n 
+0003822469 00000 n 
+0003822621 00000 n 
+0003822774 00000 n 
+0003822927 00000 n 
+0003823080 00000 n 
+0003823233 00000 n 
+0003823386 00000 n 
+0003823539 00000 n 
+0003823692 00000 n 
+0003823845 00000 n 
+0003823998 00000 n 
+0003824151 00000 n 
+0003824304 00000 n 
+0003824457 00000 n 
+0003824610 00000 n 
+0003824761 00000 n 
+0003824912 00000 n 
+0003825062 00000 n 
+0003825213 00000 n 
+0003825364 00000 n 
+0003825515 00000 n 
+0003825667 00000 n 
+0003825820 00000 n 
+0003825973 00000 n 
+0003826126 00000 n 
+0003826278 00000 n 
+0003826430 00000 n 
+0003826581 00000 n 
+0003826734 00000 n 
+0003826887 00000 n 
+0003827040 00000 n 
+0003827193 00000 n 
+0003827346 00000 n 
+0003827498 00000 n 
+0003827650 00000 n 
+0003827802 00000 n 
+0003827953 00000 n 
+0003828106 00000 n 
+0003828259 00000 n 
+0003828411 00000 n 
+0003828564 00000 n 
+0003828717 00000 n 
+0003828870 00000 n 
+0003829023 00000 n 
+0003829176 00000 n 
+0003829395 00000 n 
+0003805678 00000 n 
+0003804118 00000 n 
+0003829329 00000 n 
+0003832420 00000 n 
+0003832573 00000 n 
+0003832722 00000 n 
+0003832871 00000 n 
+0003833024 00000 n 
+0003833177 00000 n 
+0003833330 00000 n 
+0003833483 00000 n 
+0003833635 00000 n 
+0003833787 00000 n 
+0003833940 00000 n 
+0003834093 00000 n 
+0003834245 00000 n 
+0003834398 00000 n 
+0003834551 00000 n 
+0003834704 00000 n 
+0003834856 00000 n 
+0003835008 00000 n 
+0003835160 00000 n 
+0003835312 00000 n 
+0003835464 00000 n 
+0003835617 00000 n 
+0003835768 00000 n 
+0003835919 00000 n 
+0003836069 00000 n 
+0003836220 00000 n 
+0003836371 00000 n 
+0003836524 00000 n 
+0003836677 00000 n 
+0003836829 00000 n 
+0003836982 00000 n 
+0003837134 00000 n 
+0003837287 00000 n 
+0003837440 00000 n 
+0003837593 00000 n 
+0003837746 00000 n 
+0003837899 00000 n 
+0003838051 00000 n 
+0003838204 00000 n 
+0003838356 00000 n 
+0003838509 00000 n 
+0003838658 00000 n 
+0003838811 00000 n 
+0003838964 00000 n 
+0003839116 00000 n 
+0003839269 00000 n 
+0003839421 00000 n 
+0003839573 00000 n 
+0003839725 00000 n 
+0003839877 00000 n 
+0003840029 00000 n 
+0003840182 00000 n 
+0003840335 00000 n 
+0003840488 00000 n 
+0003840640 00000 n 
+0003840793 00000 n 
+0003840946 00000 n 
+0003841099 00000 n 
+0003841251 00000 n 
+0003841403 00000 n 
+0003841555 00000 n 
+0003841706 00000 n 
+0003841858 00000 n 
+0003842011 00000 n 
+0003842164 00000 n 
+0003842317 00000 n 
+0003842470 00000 n 
+0003842622 00000 n 
+0003842773 00000 n 
+0003842926 00000 n 
+0003843078 00000 n 
+0003843231 00000 n 
+0003843383 00000 n 
+0003843536 00000 n 
+0003843689 00000 n 
+0003843840 00000 n 
+0003843993 00000 n 
+0003844146 00000 n 
+0003844299 00000 n 
+0003844452 00000 n 
+0003844605 00000 n 
+0003844756 00000 n 
+0003844908 00000 n 
+0003845060 00000 n 
+0003845212 00000 n 
+0003845364 00000 n 
+0003845517 00000 n 
+0003845669 00000 n 
+0003845822 00000 n 
+0003845973 00000 n 
+0003846126 00000 n 
+0003846279 00000 n 
+0003846431 00000 n 
+0003846583 00000 n 
+0003846736 00000 n 
+0003846888 00000 n 
+0003847040 00000 n 
+0003847193 00000 n 
+0003847345 00000 n 
+0003847497 00000 n 
+0003847649 00000 n 
+0003847802 00000 n 
+0003847955 00000 n 
+0003848108 00000 n 
+0003851261 00000 n 
+0003848326 00000 n 
+0003831248 00000 n 
+0003829512 00000 n 
+0003848260 00000 n 
+0004786620 00000 n 
+0003851414 00000 n 
+0003851567 00000 n 
+0003851720 00000 n 
+0003851873 00000 n 
+0003852025 00000 n 
+0003852174 00000 n 
+0003852327 00000 n 
+0003852479 00000 n 
+0003852632 00000 n 
+0003852785 00000 n 
+0003852938 00000 n 
+0003853091 00000 n 
+0003853243 00000 n 
+0003853394 00000 n 
+0003853546 00000 n 
+0003853698 00000 n 
+0003853850 00000 n 
+0003854003 00000 n 
+0003854156 00000 n 
+0003854309 00000 n 
+0003854462 00000 n 
+0003854615 00000 n 
+0003854768 00000 n 
+0003854921 00000 n 
+0003855074 00000 n 
+0003855224 00000 n 
+0003855377 00000 n 
+0003855530 00000 n 
+0003855683 00000 n 
+0003855836 00000 n 
+0003855988 00000 n 
+0003856140 00000 n 
+0003856292 00000 n 
+0003856445 00000 n 
+0003856598 00000 n 
+0003856751 00000 n 
+0003856904 00000 n 
+0003857057 00000 n 
+0003857209 00000 n 
+0003857362 00000 n 
+0003857515 00000 n 
+0003857668 00000 n 
+0003857820 00000 n 
+0003857971 00000 n 
+0003858124 00000 n 
+0003858276 00000 n 
+0003858429 00000 n 
+0003858582 00000 n 
+0003858735 00000 n 
+0003858888 00000 n 
+0003859041 00000 n 
+0003859194 00000 n 
+0003859347 00000 n 
+0003859500 00000 n 
+0003859653 00000 n 
+0003859806 00000 n 
+0003859959 00000 n 
+0003860112 00000 n 
+0003860265 00000 n 
+0003860418 00000 n 
+0003860570 00000 n 
+0003860723 00000 n 
+0003860876 00000 n 
+0003861029 00000 n 
+0003861182 00000 n 
+0003861335 00000 n 
+0003861488 00000 n 
+0003861641 00000 n 
+0003861794 00000 n 
+0003861947 00000 n 
+0003862098 00000 n 
+0003862251 00000 n 
+0003862404 00000 n 
+0003862556 00000 n 
+0003862708 00000 n 
+0003862860 00000 n 
+0003863012 00000 n 
+0003863164 00000 n 
+0003863317 00000 n 
+0003863468 00000 n 
+0003863620 00000 n 
+0003863772 00000 n 
+0003863924 00000 n 
+0003864076 00000 n 
+0003864229 00000 n 
+0003864381 00000 n 
+0003864534 00000 n 
+0003864687 00000 n 
+0003864839 00000 n 
+0003864992 00000 n 
+0003865145 00000 n 
+0003865298 00000 n 
+0003865451 00000 n 
+0003865604 00000 n 
+0003865757 00000 n 
+0003865909 00000 n 
+0003866062 00000 n 
+0003866215 00000 n 
+0003869278 00000 n 
+0003866434 00000 n 
+0003850139 00000 n 
+0003848457 00000 n 
+0003866368 00000 n 
+0003869431 00000 n 
+0003869584 00000 n 
+0003869737 00000 n 
+0003869888 00000 n 
+0003870040 00000 n 
+0003870192 00000 n 
+0003870342 00000 n 
+0003870494 00000 n 
+0003870646 00000 n 
+0003870799 00000 n 
+0003870951 00000 n 
+0003871104 00000 n 
+0003871256 00000 n 
+0003871408 00000 n 
+0003871560 00000 n 
+0003871713 00000 n 
+0003871865 00000 n 
+0003872017 00000 n 
+0003872169 00000 n 
+0003872322 00000 n 
+0003872474 00000 n 
+0003872627 00000 n 
+0003872780 00000 n 
+0003872933 00000 n 
+0003873086 00000 n 
+0003873239 00000 n 
+0003873391 00000 n 
+0003873544 00000 n 
+0003873696 00000 n 
+0003873847 00000 n 
+0003873999 00000 n 
+0003874148 00000 n 
+0003874301 00000 n 
+0003874454 00000 n 
+0003874607 00000 n 
+0003874760 00000 n 
+0003874913 00000 n 
+0003875066 00000 n 
+0003875218 00000 n 
+0003875367 00000 n 
+0003875520 00000 n 
+0003875672 00000 n 
+0003875824 00000 n 
+0003875975 00000 n 
+0003876127 00000 n 
+0003876279 00000 n 
+0003876432 00000 n 
+0003876584 00000 n 
+0003876737 00000 n 
+0003876890 00000 n 
+0003877043 00000 n 
+0003877196 00000 n 
+0003877348 00000 n 
+0003877501 00000 n 
+0003877654 00000 n 
+0003877807 00000 n 
+0003877958 00000 n 
+0003878111 00000 n 
+0003878264 00000 n 
+0003878416 00000 n 
+0003878568 00000 n 
+0003878721 00000 n 
+0003878874 00000 n 
+0003879027 00000 n 
+0003879180 00000 n 
+0003879333 00000 n 
+0003879486 00000 n 
+0003879639 00000 n 
+0003879790 00000 n 
+0003879943 00000 n 
+0003880096 00000 n 
+0003880249 00000 n 
+0003880401 00000 n 
+0003880554 00000 n 
+0003880707 00000 n 
+0003880860 00000 n 
+0003881013 00000 n 
+0003881166 00000 n 
+0003881319 00000 n 
+0003881472 00000 n 
+0003881625 00000 n 
+0003881778 00000 n 
+0003881930 00000 n 
+0003882083 00000 n 
+0003882236 00000 n 
+0003882386 00000 n 
+0003882539 00000 n 
+0003882692 00000 n 
+0003882845 00000 n 
+0003882996 00000 n 
+0003883146 00000 n 
+0003883299 00000 n 
+0003883452 00000 n 
+0003883605 00000 n 
+0003883757 00000 n 
+0003883910 00000 n 
+0003884062 00000 n 
+0003884214 00000 n 
+0003884367 00000 n 
+0003884520 00000 n 
+0003887788 00000 n 
+0003887941 00000 n 
+0003884739 00000 n 
+0003868136 00000 n 
+0003866551 00000 n 
+0003884673 00000 n 
+0003888094 00000 n 
+0003888247 00000 n 
+0003888400 00000 n 
+0003888553 00000 n 
+0003888706 00000 n 
+0003888857 00000 n 
+0003889010 00000 n 
+0003889163 00000 n 
+0003889316 00000 n 
+0003889469 00000 n 
+0003889622 00000 n 
+0003889775 00000 n 
+0003889928 00000 n 
+0003890081 00000 n 
+0003890234 00000 n 
+0003890387 00000 n 
+0003890540 00000 n 
+0003890693 00000 n 
+0003890846 00000 n 
+0003890999 00000 n 
+0003891150 00000 n 
+0003891301 00000 n 
+0003891454 00000 n 
+0003891606 00000 n 
+0003891759 00000 n 
+0003891912 00000 n 
+0003892065 00000 n 
+0003892217 00000 n 
+0003892370 00000 n 
+0003892523 00000 n 
+0003892676 00000 n 
+0003892828 00000 n 
+0003892981 00000 n 
+0003893133 00000 n 
+0003893285 00000 n 
+0003893436 00000 n 
+0003893588 00000 n 
+0003893740 00000 n 
+0003893893 00000 n 
+0003894046 00000 n 
+0003894199 00000 n 
+0003894352 00000 n 
+0003894505 00000 n 
+0003894658 00000 n 
+0003894811 00000 n 
+0003894964 00000 n 
+0003895116 00000 n 
+0003895268 00000 n 
+0003895419 00000 n 
+0003895572 00000 n 
+0003895725 00000 n 
+0003895878 00000 n 
+0003896031 00000 n 
+0003896183 00000 n 
+0003896336 00000 n 
+0003896489 00000 n 
+0003896642 00000 n 
+0003896795 00000 n 
+0003896947 00000 n 
+0003897099 00000 n 
+0003897252 00000 n 
+0003897405 00000 n 
+0003897556 00000 n 
+0003897707 00000 n 
+0003897859 00000 n 
+0003898010 00000 n 
+0003898158 00000 n 
+0003898310 00000 n 
+0003898459 00000 n 
+0003898612 00000 n 
+0003898764 00000 n 
+0003898917 00000 n 
+0003899070 00000 n 
+0003899223 00000 n 
+0003899376 00000 n 
+0003899529 00000 n 
+0003899681 00000 n 
+0003899834 00000 n 
+0003899986 00000 n 
+0003900138 00000 n 
+0003900290 00000 n 
+0003900442 00000 n 
+0003900593 00000 n 
+0003900745 00000 n 
+0003900898 00000 n 
+0003901051 00000 n 
+0003901204 00000 n 
+0003901356 00000 n 
+0003901509 00000 n 
+0003901662 00000 n 
+0003901815 00000 n 
+0003901968 00000 n 
+0003902121 00000 n 
+0003902274 00000 n 
+0003902427 00000 n 
+0003902580 00000 n 
+0003902732 00000 n 
+0003902884 00000 n 
+0003903036 00000 n 
+0003903189 00000 n 
+0003903342 00000 n 
+0003903495 00000 n 
+0003903648 00000 n 
+0003903799 00000 n 
+0003903952 00000 n 
+0003904104 00000 n 
+0003904257 00000 n 
+0003904410 00000 n 
+0003904561 00000 n 
+0003907615 00000 n 
+0003904779 00000 n 
+0003886546 00000 n 
+0003884856 00000 n 
+0003904713 00000 n 
+0003907764 00000 n 
+0003907914 00000 n 
+0003908065 00000 n 
+0003908216 00000 n 
+0003908369 00000 n 
+0003908522 00000 n 
+0003908675 00000 n 
+0003908827 00000 n 
+0003908978 00000 n 
+0003909131 00000 n 
+0003909284 00000 n 
+0003909437 00000 n 
+0003909590 00000 n 
+0003909742 00000 n 
+0003909894 00000 n 
+0003910047 00000 n 
+0003910197 00000 n 
+0003910350 00000 n 
+0003910501 00000 n 
+0003910653 00000 n 
+0003910805 00000 n 
+0003910957 00000 n 
+0003911109 00000 n 
+0003911260 00000 n 
+0003911413 00000 n 
+0003911566 00000 n 
+0003911719 00000 n 
+0003911872 00000 n 
+0003912025 00000 n 
+0003912178 00000 n 
+0003912330 00000 n 
+0003912483 00000 n 
+0003912636 00000 n 
+0003912786 00000 n 
+0003912939 00000 n 
+0003913092 00000 n 
+0003913245 00000 n 
+0003913398 00000 n 
+0003913551 00000 n 
+0003913704 00000 n 
+0003913857 00000 n 
+0003914009 00000 n 
+0003914160 00000 n 
+0003914313 00000 n 
+0003914466 00000 n 
+0003914619 00000 n 
+0003914772 00000 n 
+0003914924 00000 n 
+0003915073 00000 n 
+0003915225 00000 n 
+0003915378 00000 n 
+0003915531 00000 n 
+0003915683 00000 n 
+0003915836 00000 n 
+0003915989 00000 n 
+0003916142 00000 n 
+0003916295 00000 n 
+0003916448 00000 n 
+0003916599 00000 n 
+0003916752 00000 n 
+0003916905 00000 n 
+0003917058 00000 n 
+0003917211 00000 n 
+0003917363 00000 n 
+0003917515 00000 n 
+0003917668 00000 n 
+0003917820 00000 n 
+0003917973 00000 n 
+0003918126 00000 n 
+0003918279 00000 n 
+0003918431 00000 n 
+0003918584 00000 n 
+0003918737 00000 n 
+0003918890 00000 n 
+0003919042 00000 n 
+0003919195 00000 n 
+0003919348 00000 n 
+0003919501 00000 n 
+0003919654 00000 n 
+0003919806 00000 n 
+0003919959 00000 n 
+0003920110 00000 n 
+0003920263 00000 n 
+0003920416 00000 n 
+0003920567 00000 n 
+0003920720 00000 n 
+0003920872 00000 n 
+0003921025 00000 n 
+0003921178 00000 n 
+0003921331 00000 n 
+0003921484 00000 n 
+0003921636 00000 n 
+0003921789 00000 n 
+0003921941 00000 n 
+0003922093 00000 n 
+0003922245 00000 n 
+0003922397 00000 n 
+0003922550 00000 n 
+0003922703 00000 n 
+0003922855 00000 n 
+0003923006 00000 n 
+0003926245 00000 n 
+0003923225 00000 n 
+0003906463 00000 n 
+0003904896 00000 n 
+0003923159 00000 n 
+0003926396 00000 n 
+0003926549 00000 n 
+0003926702 00000 n 
+0003926854 00000 n 
+0003927007 00000 n 
+0003927159 00000 n 
+0003927312 00000 n 
+0003927464 00000 n 
+0003927616 00000 n 
+0003927766 00000 n 
+0003927918 00000 n 
+0003928069 00000 n 
+0003928222 00000 n 
+0003928375 00000 n 
+0003928528 00000 n 
+0003928681 00000 n 
+0003928834 00000 n 
+0003928987 00000 n 
+0003929139 00000 n 
+0003929291 00000 n 
+0003929444 00000 n 
+0003929597 00000 n 
+0003929750 00000 n 
+0003929903 00000 n 
+0003930056 00000 n 
+0003930209 00000 n 
+0003930361 00000 n 
+0003930513 00000 n 
+0003930666 00000 n 
+0003930819 00000 n 
+0003930972 00000 n 
+0003931125 00000 n 
+0003931278 00000 n 
+0003931431 00000 n 
+0003931584 00000 n 
+0003931737 00000 n 
+0003931890 00000 n 
+0003932043 00000 n 
+0003932194 00000 n 
+0003932345 00000 n 
+0003932498 00000 n 
+0003932651 00000 n 
+0003932804 00000 n 
+0003932957 00000 n 
+0003933110 00000 n 
+0003933261 00000 n 
+0003933414 00000 n 
+0003933567 00000 n 
+0003933720 00000 n 
+0003933873 00000 n 
+0003934026 00000 n 
+0003934178 00000 n 
+0003934330 00000 n 
+0003934479 00000 n 
+0003934629 00000 n 
+0003934782 00000 n 
+0003934935 00000 n 
+0003935088 00000 n 
+0003935241 00000 n 
+0003935394 00000 n 
+0003935547 00000 n 
+0003935700 00000 n 
+0003935853 00000 n 
+0003936006 00000 n 
+0003936159 00000 n 
+0003936312 00000 n 
+0003936464 00000 n 
+0003936617 00000 n 
+0003936769 00000 n 
+0003936921 00000 n 
+0003937073 00000 n 
+0003937224 00000 n 
+0003937377 00000 n 
+0003937530 00000 n 
+0003937683 00000 n 
+0003937836 00000 n 
+0003937989 00000 n 
+0003938142 00000 n 
+0003938295 00000 n 
+0003938448 00000 n 
+0003938599 00000 n 
+0003938751 00000 n 
+0003938904 00000 n 
+0003939057 00000 n 
+0003939210 00000 n 
+0003939363 00000 n 
+0003939516 00000 n 
+0003939665 00000 n 
+0003939817 00000 n 
+0003939969 00000 n 
+0003940121 00000 n 
+0003940274 00000 n 
+0003940427 00000 n 
+0003940580 00000 n 
+0003940733 00000 n 
+0003940886 00000 n 
+0003941039 00000 n 
+0003941192 00000 n 
+0003941345 00000 n 
+0003941498 00000 n 
+0003941651 00000 n 
+0003941804 00000 n 
+0003941957 00000 n 
+0003942110 00000 n 
+0003942263 00000 n 
+0003942416 00000 n 
+0003942569 00000 n 
+0003942722 00000 n 
+0003942875 00000 n 
+0003943027 00000 n 
+0003946006 00000 n 
+0003946158 00000 n 
+0003946310 00000 n 
+0003946462 00000 n 
+0003946614 00000 n 
+0003946767 00000 n 
+0003946920 00000 n 
+0003943246 00000 n 
+0003925003 00000 n 
+0003923328 00000 n 
+0003943180 00000 n 
+0003947073 00000 n 
+0003947225 00000 n 
+0003947377 00000 n 
+0003947530 00000 n 
+0003947683 00000 n 
+0003947836 00000 n 
+0003947989 00000 n 
+0003948142 00000 n 
+0003948294 00000 n 
+0003948446 00000 n 
+0003948599 00000 n 
+0003948750 00000 n 
+0003948899 00000 n 
+0003949052 00000 n 
+0003949205 00000 n 
+0003949358 00000 n 
+0003949510 00000 n 
+0003949658 00000 n 
+0003949811 00000 n 
+0003949963 00000 n 
+0003950115 00000 n 
+0003950268 00000 n 
+0003950421 00000 n 
+0003950574 00000 n 
+0003950727 00000 n 
+0003950880 00000 n 
+0003951033 00000 n 
+0003951186 00000 n 
+0003951339 00000 n 
+0003951492 00000 n 
+0003951645 00000 n 
+0003951794 00000 n 
+0003951946 00000 n 
+0003952098 00000 n 
+0003952250 00000 n 
+0003952403 00000 n 
+0003952555 00000 n 
+0003952707 00000 n 
+0003952859 00000 n 
+0003953010 00000 n 
+0003953159 00000 n 
+0003953310 00000 n 
+0003953463 00000 n 
+0003953616 00000 n 
+0003953769 00000 n 
+0003953921 00000 n 
+0003954073 00000 n 
+0003954225 00000 n 
+0003954378 00000 n 
+0003954530 00000 n 
+0003954683 00000 n 
+0003954835 00000 n 
+0003954988 00000 n 
+0003955141 00000 n 
+0003955294 00000 n 
+0003955447 00000 n 
+0003955600 00000 n 
+0003955753 00000 n 
+0003955906 00000 n 
+0003956059 00000 n 
+0003956212 00000 n 
+0003956364 00000 n 
+0003956516 00000 n 
+0003956669 00000 n 
+0003956822 00000 n 
+0003956974 00000 n 
+0003957127 00000 n 
+0003957280 00000 n 
+0003957432 00000 n 
+0003957584 00000 n 
+0003957736 00000 n 
+0003957888 00000 n 
+0003958038 00000 n 
+0003958189 00000 n 
+0003958340 00000 n 
+0003958493 00000 n 
+0003958646 00000 n 
+0003958799 00000 n 
+0003958952 00000 n 
+0003959104 00000 n 
+0003959256 00000 n 
+0003959409 00000 n 
+0003959562 00000 n 
+0003959714 00000 n 
+0003959867 00000 n 
+0003960020 00000 n 
+0003960173 00000 n 
+0003960326 00000 n 
+0003960479 00000 n 
+0003960631 00000 n 
+0003960782 00000 n 
+0003960934 00000 n 
+0003961086 00000 n 
+0003961239 00000 n 
+0003961390 00000 n 
+0003961543 00000 n 
+0003961695 00000 n 
+0003961848 00000 n 
+0003962001 00000 n 
+0003962153 00000 n 
+0003962306 00000 n 
+0003962457 00000 n 
+0003962610 00000 n 
+0003962763 00000 n 
+0003962916 00000 n 
+0003963067 00000 n 
+0003966492 00000 n 
+0003963286 00000 n 
+0003944744 00000 n 
+0003943363 00000 n 
+0003963220 00000 n 
+0004786753 00000 n 
+0003966645 00000 n 
+0003966798 00000 n 
+0003966950 00000 n 
+0003967102 00000 n 
+0003967254 00000 n 
+0003967405 00000 n 
+0003967556 00000 n 
+0003967707 00000 n 
+0003967859 00000 n 
+0003968011 00000 n 
+0003968163 00000 n 
+0003968314 00000 n 
+0003968466 00000 n 
+0003968618 00000 n 
+0003968769 00000 n 
+0003968920 00000 n 
+0003969071 00000 n 
+0003969222 00000 n 
+0003969372 00000 n 
+0003969522 00000 n 
+0003969675 00000 n 
+0003969828 00000 n 
+0003969981 00000 n 
+0003970134 00000 n 
+0003970287 00000 n 
+0003970440 00000 n 
+0003970593 00000 n 
+0003970746 00000 n 
+0003970898 00000 n 
+0003971051 00000 n 
+0003971204 00000 n 
+0003971357 00000 n 
+0003971508 00000 n 
+0003971660 00000 n 
+0003971812 00000 n 
+0003971964 00000 n 
+0003972116 00000 n 
+0003972268 00000 n 
+0003972421 00000 n 
+0003972573 00000 n 
+0003972726 00000 n 
+0003972879 00000 n 
+0003973032 00000 n 
+0003973185 00000 n 
+0003973337 00000 n 
+0003973488 00000 n 
+0003973640 00000 n 
+0003973792 00000 n 
+0003973945 00000 n 
+0003974098 00000 n 
+0003974251 00000 n 
+0003974403 00000 n 
+0003974556 00000 n 
+0003974709 00000 n 
+0003974862 00000 n 
+0003975013 00000 n 
+0003975166 00000 n 
+0003975319 00000 n 
+0003975470 00000 n 
+0003975623 00000 n 
+0003975775 00000 n 
+0003975927 00000 n 
+0003976079 00000 n 
+0003976231 00000 n 
+0003976383 00000 n 
+0003976536 00000 n 
+0003976688 00000 n 
+0003976841 00000 n 
+0003976994 00000 n 
+0003977146 00000 n 
+0003977299 00000 n 
+0003977452 00000 n 
+0003977604 00000 n 
+0003977757 00000 n 
+0003977909 00000 n 
+0003978061 00000 n 
+0003978214 00000 n 
+0003978367 00000 n 
+0003978520 00000 n 
+0003978673 00000 n 
+0003978826 00000 n 
+0003978979 00000 n 
+0003979132 00000 n 
+0003979285 00000 n 
+0003979438 00000 n 
+0003979591 00000 n 
+0003979744 00000 n 
+0003979896 00000 n 
+0003980048 00000 n 
+0003980199 00000 n 
+0003980350 00000 n 
+0003980503 00000 n 
+0003980655 00000 n 
+0003980808 00000 n 
+0003980961 00000 n 
+0003981114 00000 n 
+0003981267 00000 n 
+0003981420 00000 n 
+0003981573 00000 n 
+0003981726 00000 n 
+0003981879 00000 n 
+0003982031 00000 n 
+0003982182 00000 n 
+0003982333 00000 n 
+0003982486 00000 n 
+0003982639 00000 n 
+0003982792 00000 n 
+0003982945 00000 n 
+0003983096 00000 n 
+0003983249 00000 n 
+0003983402 00000 n 
+0003983554 00000 n 
+0003983707 00000 n 
+0003983860 00000 n 
+0003984013 00000 n 
+0003984165 00000 n 
+0003984317 00000 n 
+0003984469 00000 n 
+0003984621 00000 n 
+0003984773 00000 n 
+0003984926 00000 n 
+0003985078 00000 n 
+0003985231 00000 n 
+0003985384 00000 n 
+0003985536 00000 n 
+0003985687 00000 n 
+0003985839 00000 n 
+0003985991 00000 n 
+0003986144 00000 n 
+0003986297 00000 n 
+0003989496 00000 n 
+0003986516 00000 n 
+0003965050 00000 n 
+0003963389 00000 n 
+0003986450 00000 n 
+0003989649 00000 n 
+0003989802 00000 n 
+0003989955 00000 n 
+0003990107 00000 n 
+0003990259 00000 n 
+0003990411 00000 n 
+0003990562 00000 n 
+0003990712 00000 n 
+0003990862 00000 n 
+0003991015 00000 n 
+0003991168 00000 n 
+0003991321 00000 n 
+0003991473 00000 n 
+0003991625 00000 n 
+0003991777 00000 n 
+0003991929 00000 n 
+0003992082 00000 n 
+0003992235 00000 n 
+0003992388 00000 n 
+0003992541 00000 n 
+0003992694 00000 n 
+0003992847 00000 n 
+0003993000 00000 n 
+0003993153 00000 n 
+0003993305 00000 n 
+0003993457 00000 n 
+0003993609 00000 n 
+0003993761 00000 n 
+0003993913 00000 n 
+0003994066 00000 n 
+0003994219 00000 n 
+0003994371 00000 n 
+0003994524 00000 n 
+0003994677 00000 n 
+0003994830 00000 n 
+0003994983 00000 n 
+0003995135 00000 n 
+0003995287 00000 n 
+0003995439 00000 n 
+0003995591 00000 n 
+0003995741 00000 n 
+0003995894 00000 n 
+0003996047 00000 n 
+0003996200 00000 n 
+0003996353 00000 n 
+0003996505 00000 n 
+0003996658 00000 n 
+0003996811 00000 n 
+0003996964 00000 n 
+0003997117 00000 n 
+0003997270 00000 n 
+0003997423 00000 n 
+0003997576 00000 n 
+0003997729 00000 n 
+0003997882 00000 n 
+0003998035 00000 n 
+0003998188 00000 n 
+0003998340 00000 n 
+0003998490 00000 n 
+0003998643 00000 n 
+0003998796 00000 n 
+0003998949 00000 n 
+0003999102 00000 n 
+0003999255 00000 n 
+0003999407 00000 n 
+0003999560 00000 n 
+0003999713 00000 n 
+0003999865 00000 n 
+0004000017 00000 n 
+0004000169 00000 n 
+0004000322 00000 n 
+0004000475 00000 n 
+0004000626 00000 n 
+0004000776 00000 n 
+0004000928 00000 n 
+0004001080 00000 n 
+0004001233 00000 n 
+0004001386 00000 n 
+0004001538 00000 n 
+0004001691 00000 n 
+0004001844 00000 n 
+0004001997 00000 n 
+0004002150 00000 n 
+0004002303 00000 n 
+0004002456 00000 n 
+0004002609 00000 n 
+0004002762 00000 n 
+0004002915 00000 n 
+0004003068 00000 n 
+0004003221 00000 n 
+0004003374 00000 n 
+0004003527 00000 n 
+0004003679 00000 n 
+0004003831 00000 n 
+0004003984 00000 n 
+0004004137 00000 n 
+0004004289 00000 n 
+0004004441 00000 n 
+0004004594 00000 n 
+0004004745 00000 n 
+0004004898 00000 n 
+0004008175 00000 n 
+0004005117 00000 n 
+0003988344 00000 n 
+0003986633 00000 n 
+0004005051 00000 n 
+0004008327 00000 n 
+0004008479 00000 n 
+0004008630 00000 n 
+0004008783 00000 n 
+0004008935 00000 n 
+0004009088 00000 n 
+0004009241 00000 n 
+0004009394 00000 n 
+0004009547 00000 n 
+0004009700 00000 n 
+0004009850 00000 n 
+0004010002 00000 n 
+0004010154 00000 n 
+0004010307 00000 n 
+0004010460 00000 n 
+0004010612 00000 n 
+0004010765 00000 n 
+0004010918 00000 n 
+0004011070 00000 n 
+0004011222 00000 n 
+0004011374 00000 n 
+0004011526 00000 n 
+0004011678 00000 n 
+0004011831 00000 n 
+0004011984 00000 n 
+0004012137 00000 n 
+0004012290 00000 n 
+0004012442 00000 n 
+0004012595 00000 n 
+0004012747 00000 n 
+0004012900 00000 n 
+0004013052 00000 n 
+0004013204 00000 n 
+0004013356 00000 n 
+0004013507 00000 n 
+0004013660 00000 n 
+0004013813 00000 n 
+0004013966 00000 n 
+0004014118 00000 n 
+0004014270 00000 n 
+0004014423 00000 n 
+0004014576 00000 n 
+0004014729 00000 n 
+0004014882 00000 n 
+0004015035 00000 n 
+0004015188 00000 n 
+0004015341 00000 n 
+0004015494 00000 n 
+0004015647 00000 n 
+0004015800 00000 n 
+0004015953 00000 n 
+0004016105 00000 n 
+0004016258 00000 n 
+0004016410 00000 n 
+0004016561 00000 n 
+0004016713 00000 n 
+0004016862 00000 n 
+0004017013 00000 n 
+0004017166 00000 n 
+0004017319 00000 n 
+0004017472 00000 n 
+0004017625 00000 n 
+0004017778 00000 n 
+0004017930 00000 n 
+0004018082 00000 n 
+0004018235 00000 n 
+0004018388 00000 n 
+0004018541 00000 n 
+0004018694 00000 n 
+0004018847 00000 n 
+0004019000 00000 n 
+0004019151 00000 n 
+0004019304 00000 n 
+0004019456 00000 n 
+0004019606 00000 n 
+0004019758 00000 n 
+0004019910 00000 n 
+0004020062 00000 n 
+0004020214 00000 n 
+0004020367 00000 n 
+0004020520 00000 n 
+0004020673 00000 n 
+0004020826 00000 n 
+0004020979 00000 n 
+0004021132 00000 n 
+0004021285 00000 n 
+0004021438 00000 n 
+0004021590 00000 n 
+0004021743 00000 n 
+0004021896 00000 n 
+0004022049 00000 n 
+0004022202 00000 n 
+0004022355 00000 n 
+0004022507 00000 n 
+0004022659 00000 n 
+0004022812 00000 n 
+0004022965 00000 n 
+0004023118 00000 n 
+0004023271 00000 n 
+0004023424 00000 n 
+0004023576 00000 n 
+0004023727 00000 n 
+0004023879 00000 n 
+0004024030 00000 n 
+0004024182 00000 n 
+0004024334 00000 n 
+0004024487 00000 n 
+0004024640 00000 n 
+0004024793 00000 n 
+0004024945 00000 n 
+0004025097 00000 n 
+0004025249 00000 n 
+0004025402 00000 n 
+0004025555 00000 n 
+0004025706 00000 n 
+0004025858 00000 n 
+0004026010 00000 n 
+0004026162 00000 n 
+0004026314 00000 n 
+0004026467 00000 n 
+0004026620 00000 n 
+0004026773 00000 n 
+0004026926 00000 n 
+0004027078 00000 n 
+0004027231 00000 n 
+0004027384 00000 n 
+0004027537 00000 n 
+0004030377 00000 n 
+0004030529 00000 n 
+0004027754 00000 n 
+0004006763 00000 n 
+0004005234 00000 n 
+0004027688 00000 n 
+0004030681 00000 n 
+0004030834 00000 n 
+0004030987 00000 n 
+0004031140 00000 n 
+0004031291 00000 n 
+0004031442 00000 n 
+0004031594 00000 n 
+0004031747 00000 n 
+0004031900 00000 n 
+0004032053 00000 n 
+0004032206 00000 n 
+0004032359 00000 n 
+0004032512 00000 n 
+0004032664 00000 n 
+0004032817 00000 n 
+0004032970 00000 n 
+0004033123 00000 n 
+0004033275 00000 n 
+0004033427 00000 n 
+0004033580 00000 n 
+0004033732 00000 n 
+0004033884 00000 n 
+0004034037 00000 n 
+0004034190 00000 n 
+0004034343 00000 n 
+0004034496 00000 n 
+0004034649 00000 n 
+0004034802 00000 n 
+0004034954 00000 n 
+0004035107 00000 n 
+0004035258 00000 n 
+0004035411 00000 n 
+0004035564 00000 n 
+0004035717 00000 n 
+0004035870 00000 n 
+0004036023 00000 n 
+0004036176 00000 n 
+0004036328 00000 n 
+0004036481 00000 n 
+0004036634 00000 n 
+0004036786 00000 n 
+0004036938 00000 n 
+0004037090 00000 n 
+0004037243 00000 n 
+0004037396 00000 n 
+0004037549 00000 n 
+0004037701 00000 n 
+0004037854 00000 n 
+0004038007 00000 n 
+0004038159 00000 n 
+0004038309 00000 n 
+0004038462 00000 n 
+0004038615 00000 n 
+0004038768 00000 n 
+0004038921 00000 n 
+0004039074 00000 n 
+0004039227 00000 n 
+0004039380 00000 n 
+0004039533 00000 n 
+0004039685 00000 n 
+0004039837 00000 n 
+0004039990 00000 n 
+0004040143 00000 n 
+0004040294 00000 n 
+0004040447 00000 n 
+0004040600 00000 n 
+0004040752 00000 n 
+0004040903 00000 n 
+0004041056 00000 n 
+0004041208 00000 n 
+0004041361 00000 n 
+0004041514 00000 n 
+0004041667 00000 n 
+0004041820 00000 n 
+0004041973 00000 n 
+0004042125 00000 n 
+0004042277 00000 n 
+0004042430 00000 n 
+0004042583 00000 n 
+0004042736 00000 n 
+0004045788 00000 n 
+0004042955 00000 n 
+0004029425 00000 n 
+0004027857 00000 n 
+0004042889 00000 n 
+0004045941 00000 n 
+0004046094 00000 n 
+0004046246 00000 n 
+0004046399 00000 n 
+0004046550 00000 n 
+0004046702 00000 n 
+0004046854 00000 n 
+0004047003 00000 n 
+0004047154 00000 n 
+0004047305 00000 n 
+0004047458 00000 n 
+0004047609 00000 n 
+0004047762 00000 n 
+0004047915 00000 n 
+0004048068 00000 n 
+0004048221 00000 n 
+0004048374 00000 n 
+0004048525 00000 n 
+0004048676 00000 n 
+0004048829 00000 n 
+0004048980 00000 n 
+0004049133 00000 n 
+0004049285 00000 n 
+0004049437 00000 n 
+0004049589 00000 n 
+0004049741 00000 n 
+0004049894 00000 n 
+0004050047 00000 n 
+0004050200 00000 n 
+0004050353 00000 n 
+0004050506 00000 n 
+0004050658 00000 n 
+0004050810 00000 n 
+0004050962 00000 n 
+0004051114 00000 n 
+0004051267 00000 n 
+0004051420 00000 n 
+0004051572 00000 n 
+0004051725 00000 n 
+0004051877 00000 n 
+0004052030 00000 n 
+0004052183 00000 n 
+0004052336 00000 n 
+0004052489 00000 n 
+0004052642 00000 n 
+0004052795 00000 n 
+0004052947 00000 n 
+0004053099 00000 n 
+0004053249 00000 n 
+0004053400 00000 n 
+0004053553 00000 n 
+0004053705 00000 n 
+0004053856 00000 n 
+0004054009 00000 n 
+0004054160 00000 n 
+0004054311 00000 n 
+0004054464 00000 n 
+0004054617 00000 n 
+0004054770 00000 n 
+0004054922 00000 n 
+0004055074 00000 n 
+0004055227 00000 n 
+0004055380 00000 n 
+0004055532 00000 n 
+0004055685 00000 n 
+0004055838 00000 n 
+0004055991 00000 n 
+0004056142 00000 n 
+0004056295 00000 n 
+0004056448 00000 n 
+0004056601 00000 n 
+0004056754 00000 n 
+0004056907 00000 n 
+0004057060 00000 n 
+0004057213 00000 n 
+0004057366 00000 n 
+0004057519 00000 n 
+0004057672 00000 n 
+0004057824 00000 n 
+0004057977 00000 n 
+0004058130 00000 n 
+0004058282 00000 n 
+0004058431 00000 n 
+0004058584 00000 n 
+0004058737 00000 n 
+0004058890 00000 n 
+0004059043 00000 n 
+0004059196 00000 n 
+0004059349 00000 n 
+0004059501 00000 n 
+0004059654 00000 n 
+0004059807 00000 n 
+0004059959 00000 n 
+0004060111 00000 n 
+0004060263 00000 n 
+0004060415 00000 n 
+0004060567 00000 n 
+0004060720 00000 n 
+0004060872 00000 n 
+0004061025 00000 n 
+0004061178 00000 n 
+0004064306 00000 n 
+0004061396 00000 n 
+0004044636 00000 n 
+0004043072 00000 n 
+0004061330 00000 n 
+0004064458 00000 n 
+0004064611 00000 n 
+0004064764 00000 n 
+0004064916 00000 n 
+0004065068 00000 n 
+0004065221 00000 n 
+0004065374 00000 n 
+0004065527 00000 n 
+0004065679 00000 n 
+0004065828 00000 n 
+0004065977 00000 n 
+0004066130 00000 n 
+0004066283 00000 n 
+0004066436 00000 n 
+0004066589 00000 n 
+0004066742 00000 n 
+0004066895 00000 n 
+0004067047 00000 n 
+0004067199 00000 n 
+0004067351 00000 n 
+0004067504 00000 n 
+0004067657 00000 n 
+0004067810 00000 n 
+0004067963 00000 n 
+0004068116 00000 n 
+0004068268 00000 n 
+0004068420 00000 n 
+0004068573 00000 n 
+0004068725 00000 n 
+0004068878 00000 n 
+0004069031 00000 n 
+0004069184 00000 n 
+0004069337 00000 n 
+0004069489 00000 n 
+0004069641 00000 n 
+0004069794 00000 n 
+0004069947 00000 n 
+0004070100 00000 n 
+0004070253 00000 n 
+0004070406 00000 n 
+0004070559 00000 n 
+0004070712 00000 n 
+0004070865 00000 n 
+0004071018 00000 n 
+0004071171 00000 n 
+0004071323 00000 n 
+0004071474 00000 n 
+0004071627 00000 n 
+0004071780 00000 n 
+0004071933 00000 n 
+0004072086 00000 n 
+0004072239 00000 n 
+0004072391 00000 n 
+0004072544 00000 n 
+0004072697 00000 n 
+0004072849 00000 n 
+0004073002 00000 n 
+0004073155 00000 n 
+0004073308 00000 n 
+0004073461 00000 n 
+0004073614 00000 n 
+0004073767 00000 n 
+0004073920 00000 n 
+0004074073 00000 n 
+0004074226 00000 n 
+0004074379 00000 n 
+0004074531 00000 n 
+0004074682 00000 n 
+0004074834 00000 n 
+0004074987 00000 n 
+0004075138 00000 n 
+0004075290 00000 n 
+0004075441 00000 n 
+0004075592 00000 n 
+0004075745 00000 n 
+0004075898 00000 n 
+0004076051 00000 n 
+0004076203 00000 n 
+0004076356 00000 n 
+0004076509 00000 n 
+0004076662 00000 n 
+0004076813 00000 n 
+0004076964 00000 n 
+0004077117 00000 n 
+0004077268 00000 n 
+0004077421 00000 n 
+0004077574 00000 n 
+0004077727 00000 n 
+0004077880 00000 n 
+0004078032 00000 n 
+0004078185 00000 n 
+0004078337 00000 n 
+0004078489 00000 n 
+0004078642 00000 n 
+0004078795 00000 n 
+0004078948 00000 n 
+0004079101 00000 n 
+0004079253 00000 n 
+0004079406 00000 n 
+0004079557 00000 n 
+0004079710 00000 n 
+0004079863 00000 n 
+0004080016 00000 n 
+0004080169 00000 n 
+0004080321 00000 n 
+0004080472 00000 n 
+0004080625 00000 n 
+0004080777 00000 n 
+0004080930 00000 n 
+0004081083 00000 n 
+0004081236 00000 n 
+0004081389 00000 n 
+0004081542 00000 n 
+0004081695 00000 n 
+0004081848 00000 n 
+0004082001 00000 n 
+0004084999 00000 n 
+0004085151 00000 n 
+0004082220 00000 n 
+0004063004 00000 n 
+0004061513 00000 n 
+0004082154 00000 n 
+0004786886 00000 n 
+0004085303 00000 n 
+0004085454 00000 n 
+0004085607 00000 n 
+0004085759 00000 n 
+0004085912 00000 n 
+0004086065 00000 n 
+0004086217 00000 n 
+0004086370 00000 n 
+0004086523 00000 n 
+0004086674 00000 n 
+0004086827 00000 n 
+0004086979 00000 n 
+0004087132 00000 n 
+0004087285 00000 n 
+0004087437 00000 n 
+0004087590 00000 n 
+0004087743 00000 n 
+0004087896 00000 n 
+0004088049 00000 n 
+0004088202 00000 n 
+0004088355 00000 n 
+0004088507 00000 n 
+0004088659 00000 n 
+0004088812 00000 n 
+0004088964 00000 n 
+0004089117 00000 n 
+0004089270 00000 n 
+0004089421 00000 n 
+0004089573 00000 n 
+0004089725 00000 n 
+0004089877 00000 n 
+0004090030 00000 n 
+0004090183 00000 n 
+0004090336 00000 n 
+0004090489 00000 n 
+0004090642 00000 n 
+0004090795 00000 n 
+0004090948 00000 n 
+0004091100 00000 n 
+0004091252 00000 n 
+0004091405 00000 n 
+0004091558 00000 n 
+0004091711 00000 n 
+0004091862 00000 n 
+0004092015 00000 n 
+0004092167 00000 n 
+0004092320 00000 n 
+0004092473 00000 n 
+0004092626 00000 n 
+0004092778 00000 n 
+0004092930 00000 n 
+0004093082 00000 n 
+0004093235 00000 n 
+0004093387 00000 n 
+0004093540 00000 n 
+0004093693 00000 n 
+0004093846 00000 n 
+0004093999 00000 n 
+0004094152 00000 n 
+0004094305 00000 n 
+0004094457 00000 n 
+0004094609 00000 n 
+0004094757 00000 n 
+0004094910 00000 n 
+0004095063 00000 n 
+0004095216 00000 n 
+0004095369 00000 n 
+0004095522 00000 n 
+0004095675 00000 n 
+0004095828 00000 n 
+0004095980 00000 n 
+0004096133 00000 n 
+0004096286 00000 n 
+0004096439 00000 n 
+0004096592 00000 n 
+0004096744 00000 n 
+0004096896 00000 n 
+0004097049 00000 n 
+0004097200 00000 n 
+0004097353 00000 n 
+0004097506 00000 n 
+0004097659 00000 n 
+0004097810 00000 n 
+0004097960 00000 n 
+0004098112 00000 n 
+0004098264 00000 n 
+0004098417 00000 n 
+0004098570 00000 n 
+0004098722 00000 n 
+0004098875 00000 n 
+0004099028 00000 n 
+0004099181 00000 n 
+0004099334 00000 n 
+0004099486 00000 n 
+0004099639 00000 n 
+0004099792 00000 n 
+0004099944 00000 n 
+0004100097 00000 n 
+0004100249 00000 n 
+0004100401 00000 n 
+0004100553 00000 n 
+0004100705 00000 n 
+0004100857 00000 n 
+0004101005 00000 n 
+0004101157 00000 n 
+0004104413 00000 n 
+0004101376 00000 n 
+0004083797 00000 n 
+0004082337 00000 n 
+0004101310 00000 n 
+0004104565 00000 n 
+0004104718 00000 n 
+0004104870 00000 n 
+0004105022 00000 n 
+0004105174 00000 n 
+0004105324 00000 n 
+0004105474 00000 n 
+0004105627 00000 n 
+0004105779 00000 n 
+0004105931 00000 n 
+0004106084 00000 n 
+0004106237 00000 n 
+0004106390 00000 n 
+0004106543 00000 n 
+0004106695 00000 n 
+0004106847 00000 n 
+0004107000 00000 n 
+0004107153 00000 n 
+0004107305 00000 n 
+0004107457 00000 n 
+0004107609 00000 n 
+0004107762 00000 n 
+0004107915 00000 n 
+0004108066 00000 n 
+0004108218 00000 n 
+0004108370 00000 n 
+0004108523 00000 n 
+0004108676 00000 n 
+0004108828 00000 n 
+0004108980 00000 n 
+0004109132 00000 n 
+0004109284 00000 n 
+0004109436 00000 n 
+0004109587 00000 n 
+0004109740 00000 n 
+0004109893 00000 n 
+0004110046 00000 n 
+0004110199 00000 n 
+0004110352 00000 n 
+0004110505 00000 n 
+0004110658 00000 n 
+0004110811 00000 n 
+0004110964 00000 n 
+0004111117 00000 n 
+0004111270 00000 n 
+0004111423 00000 n 
+0004111576 00000 n 
+0004111729 00000 n 
+0004111881 00000 n 
+0004112033 00000 n 
+0004112184 00000 n 
+0004112337 00000 n 
+0004112490 00000 n 
+0004112641 00000 n 
+0004112794 00000 n 
+0004112947 00000 n 
+0004113100 00000 n 
+0004113253 00000 n 
+0004113406 00000 n 
+0004113559 00000 n 
+0004113712 00000 n 
+0004113864 00000 n 
+0004114016 00000 n 
+0004114168 00000 n 
+0004114321 00000 n 
+0004114474 00000 n 
+0004114627 00000 n 
+0004114780 00000 n 
+0004114931 00000 n 
+0004115082 00000 n 
+0004115234 00000 n 
+0004115386 00000 n 
+0004115539 00000 n 
+0004115692 00000 n 
+0004115845 00000 n 
+0004115998 00000 n 
+0004116150 00000 n 
+0004116303 00000 n 
+0004116455 00000 n 
+0004116608 00000 n 
+0004116761 00000 n 
+0004116913 00000 n 
+0004117066 00000 n 
+0004117218 00000 n 
+0004117371 00000 n 
+0004117523 00000 n 
+0004117674 00000 n 
+0004117826 00000 n 
+0004117978 00000 n 
+0004118131 00000 n 
+0004118284 00000 n 
+0004118437 00000 n 
+0004118590 00000 n 
+0004118743 00000 n 
+0004118896 00000 n 
+0004119048 00000 n 
+0004119201 00000 n 
+0004119354 00000 n 
+0004119507 00000 n 
+0004119657 00000 n 
+0004119810 00000 n 
+0004119962 00000 n 
+0004120114 00000 n 
+0004120267 00000 n 
+0004120420 00000 n 
+0004120573 00000 n 
+0004120726 00000 n 
+0004120879 00000 n 
+0004121032 00000 n 
+0004121185 00000 n 
+0004124741 00000 n 
+0004121404 00000 n 
+0004103171 00000 n 
+0004101493 00000 n 
+0004121338 00000 n 
+0004124894 00000 n 
+0004125047 00000 n 
+0004125200 00000 n 
+0004125353 00000 n 
+0004125506 00000 n 
+0004125658 00000 n 
+0004125809 00000 n 
+0004125960 00000 n 
+0004126111 00000 n 
+0004126261 00000 n 
+0004126412 00000 n 
+0004126563 00000 n 
+0004126716 00000 n 
+0004126869 00000 n 
+0004127022 00000 n 
+0004127174 00000 n 
+0004127326 00000 n 
+0004127479 00000 n 
+0004127632 00000 n 
+0004127785 00000 n 
+0004127938 00000 n 
+0004128091 00000 n 
+0004128243 00000 n 
+0004128395 00000 n 
+0004128548 00000 n 
+0004128701 00000 n 
+0004128854 00000 n 
+0004129007 00000 n 
+0004129160 00000 n 
+0004129313 00000 n 
+0004129465 00000 n 
+0004129618 00000 n 
+0004129771 00000 n 
+0004129923 00000 n 
+0004130076 00000 n 
+0004130229 00000 n 
+0004130382 00000 n 
+0004130535 00000 n 
+0004130688 00000 n 
+0004130839 00000 n 
+0004130991 00000 n 
+0004131143 00000 n 
+0004131295 00000 n 
+0004131447 00000 n 
+0004131600 00000 n 
+0004131753 00000 n 
+0004131906 00000 n 
+0004132059 00000 n 
+0004132212 00000 n 
+0004132365 00000 n 
+0004132517 00000 n 
+0004132670 00000 n 
+0004132823 00000 n 
+0004132974 00000 n 
+0004133124 00000 n 
+0004133277 00000 n 
+0004133430 00000 n 
+0004133582 00000 n 
+0004133734 00000 n 
+0004133887 00000 n 
+0004134040 00000 n 
+0004134193 00000 n 
+0004134346 00000 n 
+0004134499 00000 n 
+0004134652 00000 n 
+0004134804 00000 n 
+0004134956 00000 n 
+0004135109 00000 n 
+0004135262 00000 n 
+0004135415 00000 n 
+0004135568 00000 n 
+0004135720 00000 n 
+0004135873 00000 n 
+0004136026 00000 n 
+0004136179 00000 n 
+0004136331 00000 n 
+0004136483 00000 n 
+0004136636 00000 n 
+0004136789 00000 n 
+0004136941 00000 n 
+0004137094 00000 n 
+0004137247 00000 n 
+0004137400 00000 n 
+0004137553 00000 n 
+0004137706 00000 n 
+0004137859 00000 n 
+0004138011 00000 n 
+0004138164 00000 n 
+0004138317 00000 n 
+0004138468 00000 n 
+0004138620 00000 n 
+0004138771 00000 n 
+0004138924 00000 n 
+0004139076 00000 n 
+0004139229 00000 n 
+0004139382 00000 n 
+0004139535 00000 n 
+0004139688 00000 n 
+0004139841 00000 n 
+0004139993 00000 n 
+0004140146 00000 n 
+0004140298 00000 n 
+0004140451 00000 n 
+0004140604 00000 n 
+0004140756 00000 n 
+0004140908 00000 n 
+0004141060 00000 n 
+0004141212 00000 n 
+0004141364 00000 n 
+0004141515 00000 n 
+0004141668 00000 n 
+0004141821 00000 n 
+0004141974 00000 n 
+0004142127 00000 n 
+0004142280 00000 n 
+0004142433 00000 n 
+0004142585 00000 n 
+0004142737 00000 n 
+0004142889 00000 n 
+0004143041 00000 n 
+0004146594 00000 n 
+0004143260 00000 n 
+0004123399 00000 n 
+0004121521 00000 n 
+0004143194 00000 n 
+0004146747 00000 n 
+0004146900 00000 n 
+0004147053 00000 n 
+0004147206 00000 n 
+0004147359 00000 n 
+0004147512 00000 n 
+0004147665 00000 n 
+0004147818 00000 n 
+0004147971 00000 n 
+0004148123 00000 n 
+0004148276 00000 n 
+0004148429 00000 n 
+0004148582 00000 n 
+0004148734 00000 n 
+0004148886 00000 n 
+0004149039 00000 n 
+0004149192 00000 n 
+0004149345 00000 n 
+0004149495 00000 n 
+0004149648 00000 n 
+0004149800 00000 n 
+0004149953 00000 n 
+0004150105 00000 n 
+0004150257 00000 n 
+0004150409 00000 n 
+0004150561 00000 n 
+0004150714 00000 n 
+0004150867 00000 n 
+0004151019 00000 n 
+0004151171 00000 n 
+0004151324 00000 n 
+0004151477 00000 n 
+0004151630 00000 n 
+0004151783 00000 n 
+0004151936 00000 n 
+0004152089 00000 n 
+0004152242 00000 n 
+0004152393 00000 n 
+0004152544 00000 n 
+0004152696 00000 n 
+0004152849 00000 n 
+0004153001 00000 n 
+0004153153 00000 n 
+0004153306 00000 n 
+0004153459 00000 n 
+0004153612 00000 n 
+0004153765 00000 n 
+0004153918 00000 n 
+0004154070 00000 n 
+0004154221 00000 n 
+0004154372 00000 n 
+0004154523 00000 n 
+0004154674 00000 n 
+0004154825 00000 n 
+0004154976 00000 n 
+0004155129 00000 n 
+0004155281 00000 n 
+0004155434 00000 n 
+0004155586 00000 n 
+0004155739 00000 n 
+0004155892 00000 n 
+0004156045 00000 n 
+0004156197 00000 n 
+0004156350 00000 n 
+0004156502 00000 n 
+0004156655 00000 n 
+0004156808 00000 n 
+0004156961 00000 n 
+0004157114 00000 n 
+0004157267 00000 n 
+0004157420 00000 n 
+0004157573 00000 n 
+0004157725 00000 n 
+0004157873 00000 n 
+0004158025 00000 n 
+0004158178 00000 n 
+0004158330 00000 n 
+0004158482 00000 n 
+0004158635 00000 n 
+0004158788 00000 n 
+0004158941 00000 n 
+0004159094 00000 n 
+0004159247 00000 n 
+0004159400 00000 n 
+0004159552 00000 n 
+0004159705 00000 n 
+0004159858 00000 n 
+0004160010 00000 n 
+0004160160 00000 n 
+0004160311 00000 n 
+0004160462 00000 n 
+0004160613 00000 n 
+0004160766 00000 n 
+0004160919 00000 n 
+0004161071 00000 n 
+0004161222 00000 n 
+0004161373 00000 n 
+0004161526 00000 n 
+0004161679 00000 n 
+0004161832 00000 n 
+0004161984 00000 n 
+0004162137 00000 n 
+0004162289 00000 n 
+0004162442 00000 n 
+0004162595 00000 n 
+0004162747 00000 n 
+0004162900 00000 n 
+0004163052 00000 n 
+0004163205 00000 n 
+0004163357 00000 n 
+0004163508 00000 n 
+0004163660 00000 n 
+0004163811 00000 n 
+0004163963 00000 n 
+0004164116 00000 n 
+0004164269 00000 n 
+0004164422 00000 n 
+0004164573 00000 n 
+0004168415 00000 n 
+0004164792 00000 n 
+0004145272 00000 n 
+0004143377 00000 n 
+0004164726 00000 n 
+0004168568 00000 n 
+0004168721 00000 n 
+0004168874 00000 n 
+0004169027 00000 n 
+0004169180 00000 n 
+0004169333 00000 n 
+0004169485 00000 n 
+0004169638 00000 n 
+0004169791 00000 n 
+0004169943 00000 n 
+0004170095 00000 n 
+0004170247 00000 n 
+0004170397 00000 n 
+0004170550 00000 n 
+0004170703 00000 n 
+0004170856 00000 n 
+0004171009 00000 n 
+0004171161 00000 n 
+0004171314 00000 n 
+0004171466 00000 n 
+0004171619 00000 n 
+0004171772 00000 n 
+0004171924 00000 n 
+0004172076 00000 n 
+0004172229 00000 n 
+0004172382 00000 n 
+0004172535 00000 n 
+0004172688 00000 n 
+0004172841 00000 n 
+0004172992 00000 n 
+0004173143 00000 n 
+0004173294 00000 n 
+0004173445 00000 n 
+0004173597 00000 n 
+0004173750 00000 n 
+0004173903 00000 n 
+0004174056 00000 n 
+0004174208 00000 n 
+0004174360 00000 n 
+0004174513 00000 n 
+0004174666 00000 n 
+0004174819 00000 n 
+0004174972 00000 n 
+0004175125 00000 n 
+0004175277 00000 n 
+0004175430 00000 n 
+0004175582 00000 n 
+0004175734 00000 n 
+0004175886 00000 n 
+0004176038 00000 n 
+0004176190 00000 n 
+0004176343 00000 n 
+0004176495 00000 n 
+0004176648 00000 n 
+0004176800 00000 n 
+0004176951 00000 n 
+0004177103 00000 n 
+0004177256 00000 n 
+0004177406 00000 n 
+0004177556 00000 n 
+0004177707 00000 n 
+0004177858 00000 n 
+0004178009 00000 n 
+0004178160 00000 n 
+0004178311 00000 n 
+0004178464 00000 n 
+0004178617 00000 n 
+0004178769 00000 n 
+0004178922 00000 n 
+0004179075 00000 n 
+0004179228 00000 n 
+0004179381 00000 n 
+0004179533 00000 n 
+0004179686 00000 n 
+0004179839 00000 n 
+0004179992 00000 n 
+0004180144 00000 n 
+0004180296 00000 n 
+0004180448 00000 n 
+0004180600 00000 n 
+0004180752 00000 n 
+0004180904 00000 n 
+0004181056 00000 n 
+0004181208 00000 n 
+0004181360 00000 n 
+0004181512 00000 n 
+0004181664 00000 n 
+0004181816 00000 n 
+0004181969 00000 n 
+0004182122 00000 n 
+0004182275 00000 n 
+0004182427 00000 n 
+0004182580 00000 n 
+0004182733 00000 n 
+0004182886 00000 n 
+0004183039 00000 n 
+0004183191 00000 n 
+0004183343 00000 n 
+0004183494 00000 n 
+0004183646 00000 n 
+0004183798 00000 n 
+0004183951 00000 n 
+0004184104 00000 n 
+0004184256 00000 n 
+0004184409 00000 n 
+0004184562 00000 n 
+0004184715 00000 n 
+0004184868 00000 n 
+0004185021 00000 n 
+0004185174 00000 n 
+0004185327 00000 n 
+0004185480 00000 n 
+0004185632 00000 n 
+0004185783 00000 n 
+0004185935 00000 n 
+0004186087 00000 n 
+0004186239 00000 n 
+0004186392 00000 n 
+0004186545 00000 n 
+0004186697 00000 n 
+0004186849 00000 n 
+0004187001 00000 n 
+0004187153 00000 n 
+0004187306 00000 n 
+0004187459 00000 n 
+0004187611 00000 n 
+0004187760 00000 n 
+0004187913 00000 n 
+0004188066 00000 n 
+0004188218 00000 n 
+0004188369 00000 n 
+0004188521 00000 n 
+0004188674 00000 n 
+0004188827 00000 n 
+0004188980 00000 n 
+0004189133 00000 n 
+0004189285 00000 n 
+0004189438 00000 n 
+0004189591 00000 n 
+0004189744 00000 n 
+0004189897 00000 n 
+0004190049 00000 n 
+0004190201 00000 n 
+0004190353 00000 n 
+0004190506 00000 n 
+0004190659 00000 n 
+0004190812 00000 n 
+0004190965 00000 n 
+0004191118 00000 n 
+0004191271 00000 n 
+0004191424 00000 n 
+0004191577 00000 n 
+0004191729 00000 n 
+0004191882 00000 n 
+0004192034 00000 n 
+0004192187 00000 n 
+0004192339 00000 n 
+0004192490 00000 n 
+0004192642 00000 n 
+0004192794 00000 n 
+0004192947 00000 n 
+0004193100 00000 n 
+0004193253 00000 n 
+0004193406 00000 n 
+0004193559 00000 n 
+0004193711 00000 n 
+0004193864 00000 n 
+0004197131 00000 n 
+0004197283 00000 n 
+0004197435 00000 n 
+0004194083 00000 n 
+0004166603 00000 n 
+0004164909 00000 n 
+0004194017 00000 n 
+0004197588 00000 n 
+0004197741 00000 n 
+0004197893 00000 n 
+0004198044 00000 n 
+0004198194 00000 n 
+0004198346 00000 n 
+0004198498 00000 n 
+0004198650 00000 n 
+0004198803 00000 n 
+0004198955 00000 n 
+0004199107 00000 n 
+0004199259 00000 n 
+0004199412 00000 n 
+0004199565 00000 n 
+0004199718 00000 n 
+0004199871 00000 n 
+0004200024 00000 n 
+0004200177 00000 n 
+0004200330 00000 n 
+0004200482 00000 n 
+0004200634 00000 n 
+0004200786 00000 n 
+0004200938 00000 n 
+0004201090 00000 n 
+0004201242 00000 n 
+0004201394 00000 n 
+0004201547 00000 n 
+0004201700 00000 n 
+0004201853 00000 n 
+0004202006 00000 n 
+0004202159 00000 n 
+0004202312 00000 n 
+0004202465 00000 n 
+0004202618 00000 n 
+0004202771 00000 n 
+0004202924 00000 n 
+0004203077 00000 n 
+0004203230 00000 n 
+0004203383 00000 n 
+0004203535 00000 n 
+0004203687 00000 n 
+0004203839 00000 n 
+0004203992 00000 n 
+0004204145 00000 n 
+0004204298 00000 n 
+0004204451 00000 n 
+0004204602 00000 n 
+0004204755 00000 n 
+0004204906 00000 n 
+0004205059 00000 n 
+0004205212 00000 n 
+0004205364 00000 n 
+0004205517 00000 n 
+0004205670 00000 n 
+0004205823 00000 n 
+0004205976 00000 n 
+0004206129 00000 n 
+0004206282 00000 n 
+0004206434 00000 n 
+0004206586 00000 n 
+0004206739 00000 n 
+0004206891 00000 n 
+0004207041 00000 n 
+0004207194 00000 n 
+0004207346 00000 n 
+0004207498 00000 n 
+0004207651 00000 n 
+0004207804 00000 n 
+0004207955 00000 n 
+0004208108 00000 n 
+0004208261 00000 n 
+0004208414 00000 n 
+0004208567 00000 n 
+0004208720 00000 n 
+0004208873 00000 n 
+0004209026 00000 n 
+0004209178 00000 n 
+0004209331 00000 n 
+0004209483 00000 n 
+0004209636 00000 n 
+0004209787 00000 n 
+0004209938 00000 n 
+0004210089 00000 n 
+0004210242 00000 n 
+0004210394 00000 n 
+0004210547 00000 n 
+0004210699 00000 n 
+0004210852 00000 n 
+0004211005 00000 n 
+0004211156 00000 n 
+0004211309 00000 n 
+0004211462 00000 n 
+0004211615 00000 n 
+0004211768 00000 n 
+0004211921 00000 n 
+0004212074 00000 n 
+0004212226 00000 n 
+0004212378 00000 n 
+0004212530 00000 n 
+0004212682 00000 n 
+0004212834 00000 n 
+0004212986 00000 n 
+0004213139 00000 n 
+0004213292 00000 n 
+0004213445 00000 n 
+0004213598 00000 n 
+0004213751 00000 n 
+0004213903 00000 n 
+0004214052 00000 n 
+0004214203 00000 n 
+0004214354 00000 n 
+0004214504 00000 n 
+0004214657 00000 n 
+0004214809 00000 n 
+0004214962 00000 n 
+0004215114 00000 n 
+0004215266 00000 n 
+0004215419 00000 n 
+0004215572 00000 n 
+0004215725 00000 n 
+0004219049 00000 n 
+0004215944 00000 n 
+0004195769 00000 n 
+0004194186 00000 n 
+0004215878 00000 n 
+0004787019 00000 n 
+0004219198 00000 n 
+0004219349 00000 n 
+0004219501 00000 n 
+0004219654 00000 n 
+0004219807 00000 n 
+0004219960 00000 n 
+0004220113 00000 n 
+0004220265 00000 n 
+0004220417 00000 n 
+0004220569 00000 n 
+0004220721 00000 n 
+0004220871 00000 n 
+0004221024 00000 n 
+0004221177 00000 n 
+0004221329 00000 n 
+0004221482 00000 n 
+0004221635 00000 n 
+0004221788 00000 n 
+0004221940 00000 n 
+0004222093 00000 n 
+0004222246 00000 n 
+0004222399 00000 n 
+0004222552 00000 n 
+0004222705 00000 n 
+0004222858 00000 n 
+0004223011 00000 n 
+0004223164 00000 n 
+0004223317 00000 n 
+0004223470 00000 n 
+0004223622 00000 n 
+0004223774 00000 n 
+0004223927 00000 n 
+0004224080 00000 n 
+0004224233 00000 n 
+0004224385 00000 n 
+0004224538 00000 n 
+0004224691 00000 n 
+0004224841 00000 n 
+0004224994 00000 n 
+0004225147 00000 n 
+0004225300 00000 n 
+0004225453 00000 n 
+0004225605 00000 n 
+0004225757 00000 n 
+0004225909 00000 n 
+0004226061 00000 n 
+0004226214 00000 n 
+0004226366 00000 n 
+0004226519 00000 n 
+0004226672 00000 n 
+0004226825 00000 n 
+0004226978 00000 n 
+0004227131 00000 n 
+0004227284 00000 n 
+0004227436 00000 n 
+0004227589 00000 n 
+0004227742 00000 n 
+0004227894 00000 n 
+0004228046 00000 n 
+0004228198 00000 n 
+0004228350 00000 n 
+0004228501 00000 n 
+0004228654 00000 n 
+0004228807 00000 n 
+0004228960 00000 n 
+0004229112 00000 n 
+0004229265 00000 n 
+0004229418 00000 n 
+0004229571 00000 n 
+0004229724 00000 n 
+0004229877 00000 n 
+0004230030 00000 n 
+0004230183 00000 n 
+0004230336 00000 n 
+0004230489 00000 n 
+0004230642 00000 n 
+0004230795 00000 n 
+0004230948 00000 n 
+0004231100 00000 n 
+0004231250 00000 n 
+0004231403 00000 n 
+0004231556 00000 n 
+0004231709 00000 n 
+0004231862 00000 n 
+0004232013 00000 n 
+0004232165 00000 n 
+0004232318 00000 n 
+0004232469 00000 n 
+0004232622 00000 n 
+0004232775 00000 n 
+0004232928 00000 n 
+0004233081 00000 n 
+0004233234 00000 n 
+0004233387 00000 n 
+0004233540 00000 n 
+0004233693 00000 n 
+0004233846 00000 n 
+0004233999 00000 n 
+0004234152 00000 n 
+0004234304 00000 n 
+0004234456 00000 n 
+0004234609 00000 n 
+0004234762 00000 n 
+0004234915 00000 n 
+0004235068 00000 n 
+0004235221 00000 n 
+0004235374 00000 n 
+0004235527 00000 n 
+0004235680 00000 n 
+0004235833 00000 n 
+0004235985 00000 n 
+0004236136 00000 n 
+0004236287 00000 n 
+0004236437 00000 n 
+0004236590 00000 n 
+0004236743 00000 n 
+0004236896 00000 n 
+0004237049 00000 n 
+0004237202 00000 n 
+0004237355 00000 n 
+0004237507 00000 n 
+0004237659 00000 n 
+0004237812 00000 n 
+0004237964 00000 n 
+0004238116 00000 n 
+0004238269 00000 n 
+0004238422 00000 n 
+0004238575 00000 n 
+0004238728 00000 n 
+0004241604 00000 n 
+0004238947 00000 n 
+0004217617 00000 n 
+0004216061 00000 n 
+0004238881 00000 n 
+0004241757 00000 n 
+0004241909 00000 n 
+0004242062 00000 n 
+0004242215 00000 n 
+0004242368 00000 n 
+0004242516 00000 n 
+0004242668 00000 n 
+0004242819 00000 n 
+0004242972 00000 n 
+0004243125 00000 n 
+0004243278 00000 n 
+0004243430 00000 n 
+0004243582 00000 n 
+0004243735 00000 n 
+0004243887 00000 n 
+0004244040 00000 n 
+0004244193 00000 n 
+0004244346 00000 n 
+0004244499 00000 n 
+0004244652 00000 n 
+0004244804 00000 n 
+0004244957 00000 n 
+0004245110 00000 n 
+0004245262 00000 n 
+0004245414 00000 n 
+0004245565 00000 n 
+0004245717 00000 n 
+0004245869 00000 n 
+0004246021 00000 n 
+0004246173 00000 n 
+0004246324 00000 n 
+0004246477 00000 n 
+0004246628 00000 n 
+0004246781 00000 n 
+0004246933 00000 n 
+0004247086 00000 n 
+0004247239 00000 n 
+0004247392 00000 n 
+0004247544 00000 n 
+0004247697 00000 n 
+0004247850 00000 n 
+0004248003 00000 n 
+0004248155 00000 n 
+0004248308 00000 n 
+0004248461 00000 n 
+0004248614 00000 n 
+0004248767 00000 n 
+0004248920 00000 n 
+0004249073 00000 n 
+0004249226 00000 n 
+0004249379 00000 n 
+0004249531 00000 n 
+0004249684 00000 n 
+0004249837 00000 n 
+0004249988 00000 n 
+0004250140 00000 n 
+0004250292 00000 n 
+0004250445 00000 n 
+0004250598 00000 n 
+0004250751 00000 n 
+0004250904 00000 n 
+0004251057 00000 n 
+0004251209 00000 n 
+0004251361 00000 n 
+0004251511 00000 n 
+0004251664 00000 n 
+0004251817 00000 n 
+0004251970 00000 n 
+0004252123 00000 n 
+0004252276 00000 n 
+0004252427 00000 n 
+0004252580 00000 n 
+0004252733 00000 n 
+0004252886 00000 n 
+0004253039 00000 n 
+0004253192 00000 n 
+0004253342 00000 n 
+0004253494 00000 n 
+0004253646 00000 n 
+0004253799 00000 n 
+0004253952 00000 n 
+0004254104 00000 n 
+0004254257 00000 n 
+0004254409 00000 n 
+0004254562 00000 n 
+0004254715 00000 n 
+0004254868 00000 n 
+0004255019 00000 n 
+0004255171 00000 n 
+0004255323 00000 n 
+0004255476 00000 n 
+0004255628 00000 n 
+0004255781 00000 n 
+0004255933 00000 n 
+0004256085 00000 n 
+0004256238 00000 n 
+0004256389 00000 n 
+0004256542 00000 n 
+0004256695 00000 n 
+0004259903 00000 n 
+0004256914 00000 n 
+0004240472 00000 n 
+0004239064 00000 n 
+0004256848 00000 n 
+0004260054 00000 n 
+0004260207 00000 n 
+0004260360 00000 n 
+0004260513 00000 n 
+0004260665 00000 n 
+0004260817 00000 n 
+0004260966 00000 n 
+0004261116 00000 n 
+0004261269 00000 n 
+0004261421 00000 n 
+0004261573 00000 n 
+0004261725 00000 n 
+0004261878 00000 n 
+0004262031 00000 n 
+0004262184 00000 n 
+0004262337 00000 n 
+0004262490 00000 n 
+0004262643 00000 n 
+0004262795 00000 n 
+0004262946 00000 n 
+0004263097 00000 n 
+0004263250 00000 n 
+0004263403 00000 n 
+0004263556 00000 n 
+0004263709 00000 n 
+0004263861 00000 n 
+0004264013 00000 n 
+0004264166 00000 n 
+0004264319 00000 n 
+0004264471 00000 n 
+0004264624 00000 n 
+0004264777 00000 n 
+0004264930 00000 n 
+0004265083 00000 n 
+0004265235 00000 n 
+0004265388 00000 n 
+0004265540 00000 n 
+0004265693 00000 n 
+0004265845 00000 n 
+0004265997 00000 n 
+0004266149 00000 n 
+0004266299 00000 n 
+0004266452 00000 n 
+0004266604 00000 n 
+0004266757 00000 n 
+0004266910 00000 n 
+0004267063 00000 n 
+0004267215 00000 n 
+0004267368 00000 n 
+0004267520 00000 n 
+0004267671 00000 n 
+0004267823 00000 n 
+0004267974 00000 n 
+0004268126 00000 n 
+0004268278 00000 n 
+0004268430 00000 n 
+0004268583 00000 n 
+0004268736 00000 n 
+0004268888 00000 n 
+0004269041 00000 n 
+0004269194 00000 n 
+0004269346 00000 n 
+0004269496 00000 n 
+0004269648 00000 n 
+0004269800 00000 n 
+0004269953 00000 n 
+0004270103 00000 n 
+0004270256 00000 n 
+0004270409 00000 n 
+0004270562 00000 n 
+0004270715 00000 n 
+0004270868 00000 n 
+0004271021 00000 n 
+0004271174 00000 n 
+0004271326 00000 n 
+0004271478 00000 n 
+0004271630 00000 n 
+0004271783 00000 n 
+0004271936 00000 n 
+0004272089 00000 n 
+0004272242 00000 n 
+0004272394 00000 n 
+0004272545 00000 n 
+0004272697 00000 n 
+0004272850 00000 n 
+0004273003 00000 n 
+0004273156 00000 n 
+0004273309 00000 n 
+0004273460 00000 n 
+0004273611 00000 n 
+0004273763 00000 n 
+0004273916 00000 n 
+0004274069 00000 n 
+0004274220 00000 n 
+0004274373 00000 n 
+0004274525 00000 n 
+0004274678 00000 n 
+0004274830 00000 n 
+0004274983 00000 n 
+0004275135 00000 n 
+0004275287 00000 n 
+0004275439 00000 n 
+0004275590 00000 n 
+0004275742 00000 n 
+0004279290 00000 n 
+0004279442 00000 n 
+0004275961 00000 n 
+0004258721 00000 n 
+0004257031 00000 n 
+0004275895 00000 n 
+0004279594 00000 n 
+0004279747 00000 n 
+0004279899 00000 n 
+0004280051 00000 n 
+0004280203 00000 n 
+0004280355 00000 n 
+0004280507 00000 n 
+0004280660 00000 n 
+0004280813 00000 n 
+0004280966 00000 n 
+0004281118 00000 n 
+0004281267 00000 n 
+0004281420 00000 n 
+0004281573 00000 n 
+0004281726 00000 n 
+0004281879 00000 n 
+0004282031 00000 n 
+0004282184 00000 n 
+0004282336 00000 n 
+0004282489 00000 n 
+0004282642 00000 n 
+0004282795 00000 n 
+0004282948 00000 n 
+0004283101 00000 n 
+0004283253 00000 n 
+0004283406 00000 n 
+0004283558 00000 n 
+0004283707 00000 n 
+0004283860 00000 n 
+0004284013 00000 n 
+0004284165 00000 n 
+0004284317 00000 n 
+0004284469 00000 n 
+0004284621 00000 n 
+0004284773 00000 n 
+0004284925 00000 n 
+0004285077 00000 n 
+0004285228 00000 n 
+0004285381 00000 n 
+0004285534 00000 n 
+0004285687 00000 n 
+0004285839 00000 n 
+0004285991 00000 n 
+0004286144 00000 n 
+0004286297 00000 n 
+0004286450 00000 n 
+0004286602 00000 n 
+0004286755 00000 n 
+0004286908 00000 n 
+0004287061 00000 n 
+0004287214 00000 n 
+0004287367 00000 n 
+0004287520 00000 n 
+0004287673 00000 n 
+0004287826 00000 n 
+0004287978 00000 n 
+0004288129 00000 n 
+0004288281 00000 n 
+0004288433 00000 n 
+0004288586 00000 n 
+0004288739 00000 n 
+0004288891 00000 n 
+0004289044 00000 n 
+0004289197 00000 n 
+0004289350 00000 n 
+0004289503 00000 n 
+0004289656 00000 n 
+0004289808 00000 n 
+0004289961 00000 n 
+0004290114 00000 n 
+0004290267 00000 n 
+0004290420 00000 n 
+0004290572 00000 n 
+0004290724 00000 n 
+0004290876 00000 n 
+0004291028 00000 n 
+0004291179 00000 n 
+0004291331 00000 n 
+0004291483 00000 n 
+0004291636 00000 n 
+0004291789 00000 n 
+0004291942 00000 n 
+0004292095 00000 n 
+0004292248 00000 n 
+0004292401 00000 n 
+0004292553 00000 n 
+0004292704 00000 n 
+0004292857 00000 n 
+0004293008 00000 n 
+0004293161 00000 n 
+0004293314 00000 n 
+0004293467 00000 n 
+0004293620 00000 n 
+0004293773 00000 n 
+0004293926 00000 n 
+0004294079 00000 n 
+0004294231 00000 n 
+0004294384 00000 n 
+0004294537 00000 n 
+0004294690 00000 n 
+0004294843 00000 n 
+0004294996 00000 n 
+0004295149 00000 n 
+0004295302 00000 n 
+0004295455 00000 n 
+0004295608 00000 n 
+0004295761 00000 n 
+0004295914 00000 n 
+0004296067 00000 n 
+0004296218 00000 n 
+0004296370 00000 n 
+0004296523 00000 n 
+0004296676 00000 n 
+0004296829 00000 n 
+0004296981 00000 n 
+0004297133 00000 n 
+0004297285 00000 n 
+0004297438 00000 n 
+0004297590 00000 n 
+0004297743 00000 n 
+0004297896 00000 n 
+0004298049 00000 n 
+0004298202 00000 n 
+0004298354 00000 n 
+0004298506 00000 n 
+0004298658 00000 n 
+0004298811 00000 n 
+0004298964 00000 n 
+0004299117 00000 n 
+0004299270 00000 n 
+0004299423 00000 n 
+0004299576 00000 n 
+0004299729 00000 n 
+0004299882 00000 n 
+0004300035 00000 n 
+0004300188 00000 n 
+0004300339 00000 n 
+0004300491 00000 n 
+0004300643 00000 n 
+0004300794 00000 n 
+0004300946 00000 n 
+0004301098 00000 n 
+0004301251 00000 n 
+0004301404 00000 n 
+0004301557 00000 n 
+0004301710 00000 n 
+0004301863 00000 n 
+0004302015 00000 n 
+0004302167 00000 n 
+0004302318 00000 n 
+0004302471 00000 n 
+0004305552 00000 n 
+0004302690 00000 n 
+0004277628 00000 n 
+0004276078 00000 n 
+0004302624 00000 n 
+0004305704 00000 n 
+0004305856 00000 n 
+0004306009 00000 n 
+0004306162 00000 n 
+0004306315 00000 n 
+0004306468 00000 n 
+0004306620 00000 n 
+0004306772 00000 n 
+0004306923 00000 n 
+0004307070 00000 n 
+0004307220 00000 n 
+0004307370 00000 n 
+0004307523 00000 n 
+0004307676 00000 n 
+0004307829 00000 n 
+0004307982 00000 n 
+0004308135 00000 n 
+0004308288 00000 n 
+0004308440 00000 n 
+0004308593 00000 n 
+0004308746 00000 n 
+0004308899 00000 n 
+0004309052 00000 n 
+0004309203 00000 n 
+0004309355 00000 n 
+0004309507 00000 n 
+0004309660 00000 n 
+0004309813 00000 n 
+0004309965 00000 n 
+0004310117 00000 n 
+0004310270 00000 n 
+0004310423 00000 n 
+0004310576 00000 n 
+0004310729 00000 n 
+0004310882 00000 n 
+0004311035 00000 n 
+0004311187 00000 n 
+0004311337 00000 n 
+0004311489 00000 n 
+0004311642 00000 n 
+0004311795 00000 n 
+0004311947 00000 n 
+0004312099 00000 n 
+0004312252 00000 n 
+0004312405 00000 n 
+0004312558 00000 n 
+0004312711 00000 n 
+0004312864 00000 n 
+0004313017 00000 n 
+0004313169 00000 n 
+0004313322 00000 n 
+0004313475 00000 n 
+0004313628 00000 n 
+0004313781 00000 n 
+0004313934 00000 n 
+0004314087 00000 n 
+0004314239 00000 n 
+0004314392 00000 n 
+0004314545 00000 n 
+0004314698 00000 n 
+0004314850 00000 n 
+0004314999 00000 n 
+0004315147 00000 n 
+0004315297 00000 n 
+0004315447 00000 n 
+0004315597 00000 n 
+0004315750 00000 n 
+0004315903 00000 n 
+0004316056 00000 n 
+0004316209 00000 n 
+0004316361 00000 n 
+0004316514 00000 n 
+0004316667 00000 n 
+0004316820 00000 n 
+0004316973 00000 n 
+0004317125 00000 n 
+0004317277 00000 n 
+0004317429 00000 n 
+0004317580 00000 n 
+0004317733 00000 n 
+0004317885 00000 n 
+0004318037 00000 n 
+0004318190 00000 n 
+0004318343 00000 n 
+0004318496 00000 n 
+0004318649 00000 n 
+0004318802 00000 n 
+0004318955 00000 n 
+0004319107 00000 n 
+0004319260 00000 n 
+0004319412 00000 n 
+0004319564 00000 n 
+0004319714 00000 n 
+0004319867 00000 n 
+0004320018 00000 n 
+0004320171 00000 n 
+0004320324 00000 n 
+0004320474 00000 n 
+0004320627 00000 n 
+0004320778 00000 n 
+0004320930 00000 n 
+0004321082 00000 n 
+0004324213 00000 n 
+0004324365 00000 n 
+0004324517 00000 n 
+0004324669 00000 n 
+0004324820 00000 n 
+0004324970 00000 n 
+0004325121 00000 n 
+0004325272 00000 n 
+0004325425 00000 n 
+0004325578 00000 n 
+0004325730 00000 n 
+0004325883 00000 n 
+0004326036 00000 n 
+0004326189 00000 n 
+0004326342 00000 n 
+0004326495 00000 n 
+0004326648 00000 n 
+0004321301 00000 n 
+0004304390 00000 n 
+0004302793 00000 n 
+0004321235 00000 n 
+0004326801 00000 n 
+0004326953 00000 n 
+0004327104 00000 n 
+0004327251 00000 n 
+0004327404 00000 n 
+0004327557 00000 n 
+0004327709 00000 n 
+0004327862 00000 n 
+0004328015 00000 n 
+0004328168 00000 n 
+0004328320 00000 n 
+0004328473 00000 n 
+0004328625 00000 n 
+0004328777 00000 n 
+0004328929 00000 n 
+0004329081 00000 n 
+0004329233 00000 n 
+0004329385 00000 n 
+0004329538 00000 n 
+0004329691 00000 n 
+0004329843 00000 n 
+0004329995 00000 n 
+0004330147 00000 n 
+0004330299 00000 n 
+0004330452 00000 n 
+0004330605 00000 n 
+0004330757 00000 n 
+0004330908 00000 n 
+0004331059 00000 n 
+0004331212 00000 n 
+0004331365 00000 n 
+0004331518 00000 n 
+0004331671 00000 n 
+0004331824 00000 n 
+0004331976 00000 n 
+0004332129 00000 n 
+0004332282 00000 n 
+0004332434 00000 n 
+0004332587 00000 n 
+0004332740 00000 n 
+0004332892 00000 n 
+0004333045 00000 n 
+0004333198 00000 n 
+0004333351 00000 n 
+0004333503 00000 n 
+0004333655 00000 n 
+0004333806 00000 n 
+0004333959 00000 n 
+0004334112 00000 n 
+0004334265 00000 n 
+0004334418 00000 n 
+0004334571 00000 n 
+0004334723 00000 n 
+0004334876 00000 n 
+0004335027 00000 n 
+0004335178 00000 n 
+0004335329 00000 n 
+0004335481 00000 n 
+0004335633 00000 n 
+0004335784 00000 n 
+0004335937 00000 n 
+0004336090 00000 n 
+0004336243 00000 n 
+0004336396 00000 n 
+0004336548 00000 n 
+0004336700 00000 n 
+0004336851 00000 n 
+0004337003 00000 n 
+0004337155 00000 n 
+0004337307 00000 n 
+0004337459 00000 n 
+0004337611 00000 n 
+0004337764 00000 n 
+0004337916 00000 n 
+0004338069 00000 n 
+0004338221 00000 n 
+0004338372 00000 n 
+0004338525 00000 n 
+0004338678 00000 n 
+0004338830 00000 n 
+0004338981 00000 n 
+0004339134 00000 n 
+0004339287 00000 n 
+0004339439 00000 n 
+0004339590 00000 n 
+0004339742 00000 n 
+0004339895 00000 n 
+0004340048 00000 n 
+0004340200 00000 n 
+0004343459 00000 n 
+0004340418 00000 n 
+0004323021 00000 n 
+0004321418 00000 n 
+0004340352 00000 n 
+0004787152 00000 n 
+0004343611 00000 n 
+0004343764 00000 n 
+0004343917 00000 n 
+0004344067 00000 n 
+0004344217 00000 n 
+0004344370 00000 n 
+0004344523 00000 n 
+0004344676 00000 n 
+0004344829 00000 n 
+0004344982 00000 n 
+0004345135 00000 n 
+0004345287 00000 n 
+0004345440 00000 n 
+0004345593 00000 n 
+0004345746 00000 n 
+0004345899 00000 n 
+0004346051 00000 n 
+0004346204 00000 n 
+0004346356 00000 n 
+0004346508 00000 n 
+0004346661 00000 n 
+0004346814 00000 n 
+0004346967 00000 n 
+0004347120 00000 n 
+0004347273 00000 n 
+0004347424 00000 n 
+0004347577 00000 n 
+0004347730 00000 n 
+0004347881 00000 n 
+0004348034 00000 n 
+0004348187 00000 n 
+0004348340 00000 n 
+0004348492 00000 n 
+0004348644 00000 n 
+0004348795 00000 n 
+0004348948 00000 n 
+0004349099 00000 n 
+0004349251 00000 n 
+0004349404 00000 n 
+0004349557 00000 n 
+0004349710 00000 n 
+0004349862 00000 n 
+0004350015 00000 n 
+0004350167 00000 n 
+0004350320 00000 n 
+0004350473 00000 n 
+0004350626 00000 n 
+0004350779 00000 n 
+0004350931 00000 n 
+0004351082 00000 n 
+0004351232 00000 n 
+0004351382 00000 n 
+0004351534 00000 n 
+0004351686 00000 n 
+0004351838 00000 n 
+0004351991 00000 n 
+0004352144 00000 n 
+0004352296 00000 n 
+0004352449 00000 n 
+0004352602 00000 n 
+0004352754 00000 n 
+0004352906 00000 n 
+0004353058 00000 n 
+0004353210 00000 n 
+0004353363 00000 n 
+0004353515 00000 n 
+0004353668 00000 n 
+0004353819 00000 n 
+0004353969 00000 n 
+0004354120 00000 n 
+0004354271 00000 n 
+0004354422 00000 n 
+0004354575 00000 n 
+0004354727 00000 n 
+0004354879 00000 n 
+0004355032 00000 n 
+0004355185 00000 n 
+0004355338 00000 n 
+0004355490 00000 n 
+0004355643 00000 n 
+0004355796 00000 n 
+0004355949 00000 n 
+0004356102 00000 n 
+0004356254 00000 n 
+0004356407 00000 n 
+0004356560 00000 n 
+0004356713 00000 n 
+0004356865 00000 n 
+0004357017 00000 n 
+0004357170 00000 n 
+0004357322 00000 n 
+0004357473 00000 n 
+0004357625 00000 n 
+0004357776 00000 n 
+0004357929 00000 n 
+0004358082 00000 n 
+0004358234 00000 n 
+0004358386 00000 n 
+0004358535 00000 n 
+0004358688 00000 n 
+0004358841 00000 n 
+0004358994 00000 n 
+0004359147 00000 n 
+0004359300 00000 n 
+0004359452 00000 n 
+0004359604 00000 n 
+0004363018 00000 n 
+0004359823 00000 n 
+0004342257 00000 n 
+0004340535 00000 n 
+0004359757 00000 n 
+0004363169 00000 n 
+0004363321 00000 n 
+0004363473 00000 n 
+0004363625 00000 n 
+0004363777 00000 n 
+0004363930 00000 n 
+0004364083 00000 n 
+0004364236 00000 n 
+0004364388 00000 n 
+0004364541 00000 n 
+0004364694 00000 n 
+0004364847 00000 n 
+0004364998 00000 n 
+0004365151 00000 n 
+0004365303 00000 n 
+0004365455 00000 n 
+0004365608 00000 n 
+0004365760 00000 n 
+0004365912 00000 n 
+0004366065 00000 n 
+0004366217 00000 n 
+0004366370 00000 n 
+0004366522 00000 n 
+0004366675 00000 n 
+0004366828 00000 n 
+0004366980 00000 n 
+0004367133 00000 n 
+0004367285 00000 n 
+0004367438 00000 n 
+0004367591 00000 n 
+0004367744 00000 n 
+0004367896 00000 n 
+0004368048 00000 n 
+0004368200 00000 n 
+0004368353 00000 n 
+0004368506 00000 n 
+0004368658 00000 n 
+0004368810 00000 n 
+0004368962 00000 n 
+0004369115 00000 n 
+0004369268 00000 n 
+0004369420 00000 n 
+0004369571 00000 n 
+0004369724 00000 n 
+0004369876 00000 n 
+0004370028 00000 n 
+0004370181 00000 n 
+0004370332 00000 n 
+0004370485 00000 n 
+0004370637 00000 n 
+0004370789 00000 n 
+0004370941 00000 n 
+0004371093 00000 n 
+0004371245 00000 n 
+0004371397 00000 n 
+0004371550 00000 n 
+0004371703 00000 n 
+0004371856 00000 n 
+0004372009 00000 n 
+0004372162 00000 n 
+0004372315 00000 n 
+0004372468 00000 n 
+0004372619 00000 n 
+0004372769 00000 n 
+0004372921 00000 n 
+0004373073 00000 n 
+0004373225 00000 n 
+0004373378 00000 n 
+0004373531 00000 n 
+0004373684 00000 n 
+0004373836 00000 n 
+0004373989 00000 n 
+0004374141 00000 n 
+0004374294 00000 n 
+0004374446 00000 n 
+0004374597 00000 n 
+0004374749 00000 n 
+0004374900 00000 n 
+0004375052 00000 n 
+0004375203 00000 n 
+0004375353 00000 n 
+0004375504 00000 n 
+0004375654 00000 n 
+0004375805 00000 n 
+0004375958 00000 n 
+0004376111 00000 n 
+0004376264 00000 n 
+0004376417 00000 n 
+0004376570 00000 n 
+0004376723 00000 n 
+0004376875 00000 n 
+0004377026 00000 n 
+0004377177 00000 n 
+0004377329 00000 n 
+0004377481 00000 n 
+0004377634 00000 n 
+0004377787 00000 n 
+0004377939 00000 n 
+0004378092 00000 n 
+0004378244 00000 n 
+0004378397 00000 n 
+0004378550 00000 n 
+0004378703 00000 n 
+0004378856 00000 n 
+0004379009 00000 n 
+0004379162 00000 n 
+0004379315 00000 n 
+0004379468 00000 n 
+0004379621 00000 n 
+0004379774 00000 n 
+0004379927 00000 n 
+0004380080 00000 n 
+0004380232 00000 n 
+0004380384 00000 n 
+0004380536 00000 n 
+0004380689 00000 n 
+0004380842 00000 n 
+0004380995 00000 n 
+0004381146 00000 n 
+0004381299 00000 n 
+0004381452 00000 n 
+0004381604 00000 n 
+0004381756 00000 n 
+0004381909 00000 n 
+0004382062 00000 n 
+0004382215 00000 n 
+0004382368 00000 n 
+0004382520 00000 n 
+0004382670 00000 n 
+0004382820 00000 n 
+0004382969 00000 n 
+0004383120 00000 n 
+0004383271 00000 n 
+0004383424 00000 n 
+0004383574 00000 n 
+0004383727 00000 n 
+0004383880 00000 n 
+0004384033 00000 n 
+0004384186 00000 n 
+0004384338 00000 n 
+0004384491 00000 n 
+0004384644 00000 n 
+0004387626 00000 n 
+0004384863 00000 n 
+0004361456 00000 n 
+0004359940 00000 n 
+0004384797 00000 n 
+0004387779 00000 n 
+0004387932 00000 n 
+0004388083 00000 n 
+0004388235 00000 n 
+0004388387 00000 n 
+0004388534 00000 n 
+0004388687 00000 n 
+0004388840 00000 n 
+0004388993 00000 n 
+0004389145 00000 n 
+0004389298 00000 n 
+0004389451 00000 n 
+0004389604 00000 n 
+0004389757 00000 n 
+0004389909 00000 n 
+0004390061 00000 n 
+0004390213 00000 n 
+0004390365 00000 n 
+0004390517 00000 n 
+0004390670 00000 n 
+0004390822 00000 n 
+0004390975 00000 n 
+0004391128 00000 n 
+0004391280 00000 n 
+0004391432 00000 n 
+0004391583 00000 n 
+0004391735 00000 n 
+0004391887 00000 n 
+0004392040 00000 n 
+0004392193 00000 n 
+0004392344 00000 n 
+0004392496 00000 n 
+0004392648 00000 n 
+0004392801 00000 n 
+0004392954 00000 n 
+0004393107 00000 n 
+0004393260 00000 n 
+0004393412 00000 n 
+0004393564 00000 n 
+0004393716 00000 n 
+0004393868 00000 n 
+0004394021 00000 n 
+0004394173 00000 n 
+0004394325 00000 n 
+0004394477 00000 n 
+0004394629 00000 n 
+0004394781 00000 n 
+0004394933 00000 n 
+0004395086 00000 n 
+0004395237 00000 n 
+0004395390 00000 n 
+0004395543 00000 n 
+0004395696 00000 n 
+0004395846 00000 n 
+0004395998 00000 n 
+0004396150 00000 n 
+0004396300 00000 n 
+0004396452 00000 n 
+0004396604 00000 n 
+0004396755 00000 n 
+0004396906 00000 n 
+0004397058 00000 n 
+0004397211 00000 n 
+0004397364 00000 n 
+0004397515 00000 n 
+0004397668 00000 n 
+0004397820 00000 n 
+0004397970 00000 n 
+0004398123 00000 n 
+0004398275 00000 n 
+0004398427 00000 n 
+0004398579 00000 n 
+0004398732 00000 n 
+0004398885 00000 n 
+0004399038 00000 n 
+0004399191 00000 n 
+0004399344 00000 n 
+0004399497 00000 n 
+0004399650 00000 n 
+0004399803 00000 n 
+0004399954 00000 n 
+0004400107 00000 n 
+0004400260 00000 n 
+0004400413 00000 n 
+0004400566 00000 n 
+0004400719 00000 n 
+0004400871 00000 n 
+0004401024 00000 n 
+0004401177 00000 n 
+0004401330 00000 n 
+0004401483 00000 n 
+0004401636 00000 n 
+0004401789 00000 n 
+0004401942 00000 n 
+0004402095 00000 n 
+0004402248 00000 n 
+0004402400 00000 n 
+0004402552 00000 n 
+0004402705 00000 n 
+0004402857 00000 n 
+0004403010 00000 n 
+0004403163 00000 n 
+0004403316 00000 n 
+0004403468 00000 n 
+0004403619 00000 n 
+0004403772 00000 n 
+0004403921 00000 n 
+0004404074 00000 n 
+0004404227 00000 n 
+0004407416 00000 n 
+0004404446 00000 n 
+0004386394 00000 n 
+0004384966 00000 n 
+0004404380 00000 n 
+0004407567 00000 n 
+0004407720 00000 n 
+0004407872 00000 n 
+0004408025 00000 n 
+0004408178 00000 n 
+0004408331 00000 n 
+0004408482 00000 n 
+0004408634 00000 n 
+0004408786 00000 n 
+0004408938 00000 n 
+0004409091 00000 n 
+0004409243 00000 n 
+0004409395 00000 n 
+0004409547 00000 n 
+0004409699 00000 n 
+0004409851 00000 n 
+0004410003 00000 n 
+0004410156 00000 n 
+0004410309 00000 n 
+0004410462 00000 n 
+0004410615 00000 n 
+0004410768 00000 n 
+0004410921 00000 n 
+0004411074 00000 n 
+0004411227 00000 n 
+0004411380 00000 n 
+0004411532 00000 n 
+0004411685 00000 n 
+0004411837 00000 n 
+0004411990 00000 n 
+0004412143 00000 n 
+0004412295 00000 n 
+0004412448 00000 n 
+0004412600 00000 n 
+0004412753 00000 n 
+0004412902 00000 n 
+0004413054 00000 n 
+0004413203 00000 n 
+0004413356 00000 n 
+0004413508 00000 n 
+0004413661 00000 n 
+0004413813 00000 n 
+0004413965 00000 n 
+0004414116 00000 n 
+0004414269 00000 n 
+0004414421 00000 n 
+0004414574 00000 n 
+0004414727 00000 n 
+0004414880 00000 n 
+0004415033 00000 n 
+0004415185 00000 n 
+0004415338 00000 n 
+0004415491 00000 n 
+0004415643 00000 n 
+0004415795 00000 n 
+0004415948 00000 n 
+0004416101 00000 n 
+0004416254 00000 n 
+0004416406 00000 n 
+0004416558 00000 n 
+0004416709 00000 n 
+0004416859 00000 n 
+0004417009 00000 n 
+0004417159 00000 n 
+0004417312 00000 n 
+0004417465 00000 n 
+0004417618 00000 n 
+0004417771 00000 n 
+0004417924 00000 n 
+0004418077 00000 n 
+0004418230 00000 n 
+0004418381 00000 n 
+0004418534 00000 n 
+0004418685 00000 n 
+0004418838 00000 n 
+0004418991 00000 n 
+0004419144 00000 n 
+0004419297 00000 n 
+0004419448 00000 n 
+0004419600 00000 n 
+0004419751 00000 n 
+0004419903 00000 n 
+0004420055 00000 n 
+0004420208 00000 n 
+0004420361 00000 n 
+0004420514 00000 n 
+0004420667 00000 n 
+0004420820 00000 n 
+0004420972 00000 n 
+0004421125 00000 n 
+0004421277 00000 n 
+0004421430 00000 n 
+0004421583 00000 n 
+0004421736 00000 n 
+0004421889 00000 n 
+0004422042 00000 n 
+0004422193 00000 n 
+0004422346 00000 n 
+0004422496 00000 n 
+0004422648 00000 n 
+0004422800 00000 n 
+0004422951 00000 n 
+0004423102 00000 n 
+0004423254 00000 n 
+0004423407 00000 n 
+0004423560 00000 n 
+0004423713 00000 n 
+0004423866 00000 n 
+0004424019 00000 n 
+0004424172 00000 n 
+0004424325 00000 n 
+0004424477 00000 n 
+0004424629 00000 n 
+0004424781 00000 n 
+0004428140 00000 n 
+0004424999 00000 n 
+0004406134 00000 n 
+0004404549 00000 n 
+0004424933 00000 n 
+0004428293 00000 n 
+0004428446 00000 n 
+0004428598 00000 n 
+0004428750 00000 n 
+0004428903 00000 n 
+0004429053 00000 n 
+0004429206 00000 n 
+0004429359 00000 n 
+0004429512 00000 n 
+0004429665 00000 n 
+0004429817 00000 n 
+0004429969 00000 n 
+0004430122 00000 n 
+0004430275 00000 n 
+0004430428 00000 n 
+0004430580 00000 n 
+0004430733 00000 n 
+0004430885 00000 n 
+0004431037 00000 n 
+0004431190 00000 n 
+0004431343 00000 n 
+0004431495 00000 n 
+0004431648 00000 n 
+0004431801 00000 n 
+0004431953 00000 n 
+0004432106 00000 n 
+0004432258 00000 n 
+0004432409 00000 n 
+0004432561 00000 n 
+0004432713 00000 n 
+0004432862 00000 n 
+0004433013 00000 n 
+0004433165 00000 n 
+0004433318 00000 n 
+0004433470 00000 n 
+0004433623 00000 n 
+0004433776 00000 n 
+0004433929 00000 n 
+0004434082 00000 n 
+0004434235 00000 n 
+0004434388 00000 n 
+0004434540 00000 n 
+0004434693 00000 n 
+0004434846 00000 n 
+0004434999 00000 n 
+0004435152 00000 n 
+0004435304 00000 n 
+0004435456 00000 n 
+0004435609 00000 n 
+0004435761 00000 n 
+0004435914 00000 n 
+0004436067 00000 n 
+0004436220 00000 n 
+0004436371 00000 n 
+0004436524 00000 n 
+0004436677 00000 n 
+0004436828 00000 n 
+0004436981 00000 n 
+0004437133 00000 n 
+0004437286 00000 n 
+0004437435 00000 n 
+0004437588 00000 n 
+0004437741 00000 n 
+0004437894 00000 n 
+0004438046 00000 n 
+0004438198 00000 n 
+0004438351 00000 n 
+0004438504 00000 n 
+0004438657 00000 n 
+0004438810 00000 n 
+0004438962 00000 n 
+0004439115 00000 n 
+0004439266 00000 n 
+0004439417 00000 n 
+0004439569 00000 n 
+0004439721 00000 n 
+0004439873 00000 n 
+0004440025 00000 n 
+0004440177 00000 n 
+0004440330 00000 n 
+0004440482 00000 n 
+0004440635 00000 n 
+0004440788 00000 n 
+0004440941 00000 n 
+0004441094 00000 n 
+0004441246 00000 n 
+0004441399 00000 n 
+0004441552 00000 n 
+0004441705 00000 n 
+0004441858 00000 n 
+0004442011 00000 n 
+0004442164 00000 n 
+0004442317 00000 n 
+0004442470 00000 n 
+0004442623 00000 n 
+0004442776 00000 n 
+0004442929 00000 n 
+0004443082 00000 n 
+0004443235 00000 n 
+0004443387 00000 n 
+0004443540 00000 n 
+0004443692 00000 n 
+0004443845 00000 n 
+0004443998 00000 n 
+0004444151 00000 n 
+0004444304 00000 n 
+0004444457 00000 n 
+0004444610 00000 n 
+0004444762 00000 n 
+0004444915 00000 n 
+0004445068 00000 n 
+0004445221 00000 n 
+0004445374 00000 n 
+0004445527 00000 n 
+0004445680 00000 n 
+0004445833 00000 n 
+0004445986 00000 n 
+0004449037 00000 n 
+0004446205 00000 n 
+0004426828 00000 n 
+0004425116 00000 n 
+0004446139 00000 n 
+0004449190 00000 n 
+0004449343 00000 n 
+0004449496 00000 n 
+0004449649 00000 n 
+0004449801 00000 n 
+0004449951 00000 n 
+0004450104 00000 n 
+0004450257 00000 n 
+0004450410 00000 n 
+0004450562 00000 n 
+0004450715 00000 n 
+0004450868 00000 n 
+0004451021 00000 n 
+0004451174 00000 n 
+0004451327 00000 n 
+0004451480 00000 n 
+0004451633 00000 n 
+0004451786 00000 n 
+0004451939 00000 n 
+0004452092 00000 n 
+0004452244 00000 n 
+0004452397 00000 n 
+0004452550 00000 n 
+0004452702 00000 n 
+0004452855 00000 n 
+0004453007 00000 n 
+0004453160 00000 n 
+0004453313 00000 n 
+0004453465 00000 n 
+0004453616 00000 n 
+0004453769 00000 n 
+0004453922 00000 n 
+0004454075 00000 n 
+0004454228 00000 n 
+0004454381 00000 n 
+0004454532 00000 n 
+0004454684 00000 n 
+0004454836 00000 n 
+0004454988 00000 n 
+0004455140 00000 n 
+0004455293 00000 n 
+0004455446 00000 n 
+0004455599 00000 n 
+0004455752 00000 n 
+0004455905 00000 n 
+0004456058 00000 n 
+0004456209 00000 n 
+0004456361 00000 n 
+0004456514 00000 n 
+0004456667 00000 n 
+0004456820 00000 n 
+0004456971 00000 n 
+0004457123 00000 n 
+0004457275 00000 n 
+0004457427 00000 n 
+0004457579 00000 n 
+0004457732 00000 n 
+0004457885 00000 n 
+0004458037 00000 n 
+0004458190 00000 n 
+0004458343 00000 n 
+0004458496 00000 n 
+0004458649 00000 n 
+0004458802 00000 n 
+0004458954 00000 n 
+0004459107 00000 n 
+0004459260 00000 n 
+0004459413 00000 n 
+0004459565 00000 n 
+0004459718 00000 n 
+0004459870 00000 n 
+0004460022 00000 n 
+0004460174 00000 n 
+0004460326 00000 n 
+0004460478 00000 n 
+0004460631 00000 n 
+0004460784 00000 n 
+0004460937 00000 n 
+0004461090 00000 n 
+0004461243 00000 n 
+0004461396 00000 n 
+0004461549 00000 n 
+0004461702 00000 n 
+0004461855 00000 n 
+0004462008 00000 n 
+0004462161 00000 n 
+0004462313 00000 n 
+0004462465 00000 n 
+0004462618 00000 n 
+0004462771 00000 n 
+0004462920 00000 n 
+0004463072 00000 n 
+0004463224 00000 n 
+0004463376 00000 n 
+0004463528 00000 n 
+0004463680 00000 n 
+0004463833 00000 n 
+0004463985 00000 n 
+0004464138 00000 n 
+0004464291 00000 n 
+0004464444 00000 n 
+0004464597 00000 n 
+0004464750 00000 n 
+0004464902 00000 n 
+0004465054 00000 n 
+0004465207 00000 n 
+0004468812 00000 n 
+0004465426 00000 n 
+0004447835 00000 n 
+0004446336 00000 n 
+0004465360 00000 n 
+0004787285 00000 n 
+0004468965 00000 n 
+0004469118 00000 n 
+0004469271 00000 n 
+0004469424 00000 n 
+0004469577 00000 n 
+0004469730 00000 n 
+0004469882 00000 n 
+0004470033 00000 n 
+0004470185 00000 n 
+0004470338 00000 n 
+0004470489 00000 n 
+0004470642 00000 n 
+0004470795 00000 n 
+0004470947 00000 n 
+0004471100 00000 n 
+0004471253 00000 n 
+0004471406 00000 n 
+0004471558 00000 n 
+0004471709 00000 n 
+0004471861 00000 n 
+0004472013 00000 n 
+0004472166 00000 n 
+0004472319 00000 n 
+0004472472 00000 n 
+0004472624 00000 n 
+0004472775 00000 n 
+0004472928 00000 n 
+0004473081 00000 n 
+0004473234 00000 n 
+0004473386 00000 n 
+0004473539 00000 n 
+0004473692 00000 n 
+0004473845 00000 n 
+0004473998 00000 n 
+0004474151 00000 n 
+0004474304 00000 n 
+0004474455 00000 n 
+0004474608 00000 n 
+0004474761 00000 n 
+0004474914 00000 n 
+0004475063 00000 n 
+0004475215 00000 n 
+0004475368 00000 n 
+0004475521 00000 n 
+0004475674 00000 n 
+0004475825 00000 n 
+0004475978 00000 n 
+0004476131 00000 n 
+0004476283 00000 n 
+0004476436 00000 n 
+0004476588 00000 n 
+0004476741 00000 n 
+0004476894 00000 n 
+0004477047 00000 n 
+0004477199 00000 n 
+0004477352 00000 n 
+0004477504 00000 n 
+0004477655 00000 n 
+0004477806 00000 n 
+0004477957 00000 n 
+0004478108 00000 n 
+0004478260 00000 n 
+0004478413 00000 n 
+0004478565 00000 n 
+0004478718 00000 n 
+0004478871 00000 n 
+0004479024 00000 n 
+0004479177 00000 n 
+0004479330 00000 n 
+0004479483 00000 n 
+0004479636 00000 n 
+0004479788 00000 n 
+0004479941 00000 n 
+0004480094 00000 n 
+0004480247 00000 n 
+0004480400 00000 n 
+0004480553 00000 n 
+0004480706 00000 n 
+0004480859 00000 n 
+0004481012 00000 n 
+0004481165 00000 n 
+0004481316 00000 n 
+0004481469 00000 n 
+0004481622 00000 n 
+0004481775 00000 n 
+0004481928 00000 n 
+0004482081 00000 n 
+0004482232 00000 n 
+0004482383 00000 n 
+0004482535 00000 n 
+0004482687 00000 n 
+0004482839 00000 n 
+0004482992 00000 n 
+0004483144 00000 n 
+0004483295 00000 n 
+0004483447 00000 n 
+0004483599 00000 n 
+0004483751 00000 n 
+0004483904 00000 n 
+0004484056 00000 n 
+0004484208 00000 n 
+0004484361 00000 n 
+0004484514 00000 n 
+0004484667 00000 n 
+0004484820 00000 n 
+0004484973 00000 n 
+0004485126 00000 n 
+0004485279 00000 n 
+0004485432 00000 n 
+0004485584 00000 n 
+0004485737 00000 n 
+0004485890 00000 n 
+0004486043 00000 n 
+0004486196 00000 n 
+0004486349 00000 n 
+0004486502 00000 n 
+0004486654 00000 n 
+0004486807 00000 n 
+0004486960 00000 n 
+0004487113 00000 n 
+0004487265 00000 n 
+0004487418 00000 n 
+0004487571 00000 n 
+0004487724 00000 n 
+0004487877 00000 n 
+0004488030 00000 n 
+0004488183 00000 n 
+0004488333 00000 n 
+0004488486 00000 n 
+0004488639 00000 n 
+0004488792 00000 n 
+0004488945 00000 n 
+0004489098 00000 n 
+0004489251 00000 n 
+0004489404 00000 n 
+0004489557 00000 n 
+0004489710 00000 n 
+0004489862 00000 n 
+0004493082 00000 n 
+0004490080 00000 n 
+0004467290 00000 n 
+0004465543 00000 n 
+0004490014 00000 n 
+0004493235 00000 n 
+0004493388 00000 n 
+0004493541 00000 n 
+0004493694 00000 n 
+0004493844 00000 n 
+0004493997 00000 n 
+0004494150 00000 n 
+0004494303 00000 n 
+0004494455 00000 n 
+0004494607 00000 n 
+0004494759 00000 n 
+0004494912 00000 n 
+0004495065 00000 n 
+0004495218 00000 n 
+0004495371 00000 n 
+0004495523 00000 n 
+0004495675 00000 n 
+0004495827 00000 n 
+0004495980 00000 n 
+0004496131 00000 n 
+0004496283 00000 n 
+0004496436 00000 n 
+0004496588 00000 n 
+0004496740 00000 n 
+0004496893 00000 n 
+0004497045 00000 n 
+0004497198 00000 n 
+0004497351 00000 n 
+0004497504 00000 n 
+0004497657 00000 n 
+0004497809 00000 n 
+0004497961 00000 n 
+0004498113 00000 n 
+0004498264 00000 n 
+0004498417 00000 n 
+0004498570 00000 n 
+0004498723 00000 n 
+0004498875 00000 n 
+0004499028 00000 n 
+0004499180 00000 n 
+0004499333 00000 n 
+0004499486 00000 n 
+0004499638 00000 n 
+0004499790 00000 n 
+0004499943 00000 n 
+0004500095 00000 n 
+0004500248 00000 n 
+0004500401 00000 n 
+0004500552 00000 n 
+0004500705 00000 n 
+0004500857 00000 n 
+0004501009 00000 n 
+0004501160 00000 n 
+0004501312 00000 n 
+0004501464 00000 n 
+0004501617 00000 n 
+0004501770 00000 n 
+0004501923 00000 n 
+0004502076 00000 n 
+0004502229 00000 n 
+0004502382 00000 n 
+0004502535 00000 n 
+0004502688 00000 n 
+0004502841 00000 n 
+0004502993 00000 n 
+0004503146 00000 n 
+0004503298 00000 n 
+0004503451 00000 n 
+0004503602 00000 n 
+0004503753 00000 n 
+0004503904 00000 n 
+0004504055 00000 n 
+0004504206 00000 n 
+0004504357 00000 n 
+0004504510 00000 n 
+0004504663 00000 n 
+0004504816 00000 n 
+0004504969 00000 n 
+0004505121 00000 n 
+0004505272 00000 n 
+0004505425 00000 n 
+0004505578 00000 n 
+0004505731 00000 n 
+0004505884 00000 n 
+0004506037 00000 n 
+0004506189 00000 n 
+0004506342 00000 n 
+0004506495 00000 n 
+0004506648 00000 n 
+0004506801 00000 n 
+0004506954 00000 n 
+0004507106 00000 n 
+0004507258 00000 n 
+0004507411 00000 n 
+0004507564 00000 n 
+0004507717 00000 n 
+0004507870 00000 n 
+0004508020 00000 n 
+0004508172 00000 n 
+0004508324 00000 n 
+0004508475 00000 n 
+0004508628 00000 n 
+0004508781 00000 n 
+0004508933 00000 n 
+0004509085 00000 n 
+0004509237 00000 n 
+0004509388 00000 n 
+0004509540 00000 n 
+0004509693 00000 n 
+0004509846 00000 n 
+0004509999 00000 n 
+0004510151 00000 n 
+0004510304 00000 n 
+0004510456 00000 n 
+0004510609 00000 n 
+0004510762 00000 n 
+0004510914 00000 n 
+0004511067 00000 n 
+0004512502 00000 n 
+0004512654 00000 n 
+0004511286 00000 n 
+0004491760 00000 n 
+0004490197 00000 n 
+0004511220 00000 n 
+0004512807 00000 n 
+0004512960 00000 n 
+0004513113 00000 n 
+0004513265 00000 n 
+0004513417 00000 n 
+0004513567 00000 n 
+0004513717 00000 n 
+0004513870 00000 n 
+0004514022 00000 n 
+0004514175 00000 n 
+0004514328 00000 n 
+0004514481 00000 n 
+0004514633 00000 n 
+0004514785 00000 n 
+0004514937 00000 n 
+0004515090 00000 n 
+0004515243 00000 n 
+0004515396 00000 n 
+0004515549 00000 n 
+0004515702 00000 n 
+0004515855 00000 n 
+0004516008 00000 n 
+0004516160 00000 n 
+0004516313 00000 n 
+0004516466 00000 n 
+0004516618 00000 n 
+0004516837 00000 n 
+0004512090 00000 n 
+0004511403 00000 n 
+0004516771 00000 n 
+0004517836 00000 n 
+0004517893 00000 n 
+0004518344 00000 n 
+0004518369 00000 n 
+0004518394 00000 n 
+0004518419 00000 n 
+0004518456 00000 n 
+0004518793 00000 n 
+0004518826 00000 n 
+0004518859 00000 n 
+0004519514 00000 n 
+0004520031 00000 n 
+0004520683 00000 n 
+0004521083 00000 n 
+0004521464 00000 n 
+0004521501 00000 n 
+0004521952 00000 n 
+0004522341 00000 n 
+0004522380 00000 n 
+0004522461 00000 n 
+0004522895 00000 n 
+0004523566 00000 n 
+0004523963 00000 n 
+0004524066 00000 n 
+0004524704 00000 n 
+0004525385 00000 n 
+0004526024 00000 n 
+0004526666 00000 n 
+0004527319 00000 n 
+0004527775 00000 n 
+0004528408 00000 n 
+0004530075 00000 n 
+0004530310 00000 n 
+0004547367 00000 n 
+0004547951 00000 n 
+0004557124 00000 n 
+0004557475 00000 n 
+0004561706 00000 n 
+0004561969 00000 n 
+0004569869 00000 n 
+0004570158 00000 n 
+0004578171 00000 n 
+0004578470 00000 n 
+0004592506 00000 n 
+0004593001 00000 n 
+0004594935 00000 n 
+0004595187 00000 n 
+0004597005 00000 n 
+0004597241 00000 n 
+0004599036 00000 n 
+0004599275 00000 n 
+0004618356 00000 n 
+0004618999 00000 n 
+0004625783 00000 n 
+0004626104 00000 n 
+0004629436 00000 n 
+0004629706 00000 n 
+0004633672 00000 n 
+0004633950 00000 n 
+0004646625 00000 n 
+0004647091 00000 n 
+0004648908 00000 n 
+0004649138 00000 n 
+0004650941 00000 n 
+0004651172 00000 n 
+0004661981 00000 n 
+0004662508 00000 n 
+0004666836 00000 n 
+0004667131 00000 n 
+0004677058 00000 n 
+0004677531 00000 n 
+0004691782 00000 n 
+0004692338 00000 n 
+0004700069 00000 n 
+0004700468 00000 n 
+0004702993 00000 n 
+0004703312 00000 n 
+0004722583 00000 n 
+0004723139 00000 n 
+0004725086 00000 n 
+0004725313 00000 n 
+0004727257 00000 n 
+0004727484 00000 n 
+0004729508 00000 n 
+0004729737 00000 n 
+0004746345 00000 n 
+0004746994 00000 n 
+0004759687 00000 n 
+0004760163 00000 n 
+0004762017 00000 n 
+0004787398 00000 n 
+0004787526 00000 n 
+0004787654 00000 n 
+0004787782 00000 n 
+0004787910 00000 n 
+0004788038 00000 n 
+0004788166 00000 n 
+0004788294 00000 n 
+0004788422 00000 n 
+0004788550 00000 n 
+0004788678 00000 n 
+0004788806 00000 n 
+0004788934 00000 n 
+0004789062 00000 n 
+0004789190 00000 n 
+0004789318 00000 n 
+0004789446 00000 n 
+0004789575 00000 n 
+0004789709 00000 n 
+0004789843 00000 n 
+0004789977 00000 n 
+0004790111 00000 n 
+0004790245 00000 n 
+0004790379 00000 n 
+0004790513 00000 n 
+0004790647 00000 n 
+0004790781 00000 n 
+0004790905 00000 n 
+0004791040 00000 n 
+0004791175 00000 n 
+0004791310 00000 n 
+0004791445 00000 n 
+0004791550 00000 n 
+0004791657 00000 n 
+0004884016 00000 n 
+0004884172 00000 n 
+0004884319 00000 n 
+0004884471 00000 n 
+0004884618 00000 n 
+0004884762 00000 n 
+0004884958 00000 n 
+0004885150 00000 n 
+0004885344 00000 n 
+0004885530 00000 n 
+0004885715 00000 n 
+0004885901 00000 n 
+0004886086 00000 n 
+0004886272 00000 n 
+0004886457 00000 n 
+0004886643 00000 n 
+0004886828 00000 n 
+0004887014 00000 n 
+0004887198 00000 n 
+0004887382 00000 n 
+0004887568 00000 n 
+0004887753 00000 n 
+0004887939 00000 n 
+0004888124 00000 n 
+0004888310 00000 n 
+0004888495 00000 n 
+0004888681 00000 n 
+0004888864 00000 n 
+0004889050 00000 n 
+0004889235 00000 n 
+0004889421 00000 n 
+0004889605 00000 n 
+0004889789 00000 n 
+0004889975 00000 n 
+0004890160 00000 n 
+0004890346 00000 n 
+0004890531 00000 n 
+0004890718 00000 n 
+0004890908 00000 n 
+0004891100 00000 n 
+0004891290 00000 n 
+0004891482 00000 n 
+0004891671 00000 n 
+0004891860 00000 n 
+0004892052 00000 n 
+0004892238 00000 n 
+0004892430 00000 n 
+0004892620 00000 n 
+0004892812 00000 n 
+0004893002 00000 n 
+0004893194 00000 n 
+0004893384 00000 n 
+0004893576 00000 n 
+0004893766 00000 n 
+0004893958 00000 n 
+0004894147 00000 n 
+0004894336 00000 n 
+0004894528 00000 n 
+0004894718 00000 n 
+0004894910 00000 n 
+0004895100 00000 n 
+0004895292 00000 n 
+0004895482 00000 n 
+0004895674 00000 n 
+0004895861 00000 n 
+0004896053 00000 n 
+0004896243 00000 n 
+0004896435 00000 n 
+0004896624 00000 n 
+0004896802 00000 n 
+0004896979 00000 n 
+0004897157 00000 n 
+0004897333 00000 n 
+0004897509 00000 n 
+0004897687 00000 n 
+0004897864 00000 n 
+0004898042 00000 n 
+0004898219 00000 n 
+0004898397 00000 n 
+0004898601 00000 n 
+0004898814 00000 n 
+0004899030 00000 n 
+0004899242 00000 n 
+0004899407 00000 n 
+0004899580 00000 n 
+0004899759 00000 n 
+0004900005 00000 n 
+0004900207 00000 n 
+0004900449 00000 n 
+0004900635 00000 n 
+0004900838 00000 n 
+0004901031 00000 n 
+0004901225 00000 n 
+0004901426 00000 n 
+0004901626 00000 n 
+0004901828 00000 n 
+0004902027 00000 n 
+0004902226 00000 n 
+0004902428 00000 n 
+0004902623 00000 n 
+0004902832 00000 n 
+0004903044 00000 n 
+0004903228 00000 n 
+0004903442 00000 n 
+0004903671 00000 n 
+0004903905 00000 n 
+0004904139 00000 n 
+0004904373 00000 n 
+0004904603 00000 n 
+0004904829 00000 n 
+0004905064 00000 n 
+0004905298 00000 n 
+0004905532 00000 n 
+0004905764 00000 n 
+0004905980 00000 n 
+0004906200 00000 n 
+0004906416 00000 n 
+0004906626 00000 n 
+0004906841 00000 n 
+0004907059 00000 n 
+0004907269 00000 n 
+0004907477 00000 n 
+0004907685 00000 n 
+0004907893 00000 n 
+0004908100 00000 n 
+0004908308 00000 n 
+0004908503 00000 n 
+0004908698 00000 n 
+0004908894 00000 n 
+0004909089 00000 n 
+0004909286 00000 n 
+0004909483 00000 n 
+0004909678 00000 n 
+0004909874 00000 n 
+0004910071 00000 n 
+0004910265 00000 n 
+0004910459 00000 n 
+0004910653 00000 n 
+0004910847 00000 n 
+0004911041 00000 n 
+0004911235 00000 n 
+0004911429 00000 n 
+0004911623 00000 n 
+0004911818 00000 n 
+0004912013 00000 n 
+0004912207 00000 n 
+0004912401 00000 n 
+0004912595 00000 n 
+0004912789 00000 n 
+0004912983 00000 n 
+0004913179 00000 n 
+0004913375 00000 n 
+0004913569 00000 n 
+0004913763 00000 n 
+0004913957 00000 n 
+0004914151 00000 n 
+0004914345 00000 n 
+0004914539 00000 n 
+0004914736 00000 n 
+0004914931 00000 n 
+0004915125 00000 n 
+0004915319 00000 n 
+0004915513 00000 n 
+0004915707 00000 n 
+0004915901 00000 n 
+0004916095 00000 n 
+0004916289 00000 n 
+0004916483 00000 n 
+0004916677 00000 n 
+0004916871 00000 n 
+0004917065 00000 n 
+0004917259 00000 n 
+0004917453 00000 n 
+0004917647 00000 n 
+0004917841 00000 n 
+0004918035 00000 n 
+0004918229 00000 n 
+0004918423 00000 n 
+0004918617 00000 n 
+0004918811 00000 n 
+0004919005 00000 n 
+0004919199 00000 n 
+0004919393 00000 n 
+0004919588 00000 n 
+0004919782 00000 n 
+0004919976 00000 n 
+0004920170 00000 n 
+0004920364 00000 n 
+0004920558 00000 n 
+0004920752 00000 n 
+0004920947 00000 n 
+0004921143 00000 n 
+0004921339 00000 n 
+0004921538 00000 n 
+0004921738 00000 n 
+0004921938 00000 n 
+0004922138 00000 n 
+0004922338 00000 n 
+0004922538 00000 n 
+0004922738 00000 n 
+0004922935 00000 n 
+0004923135 00000 n 
+0004923331 00000 n 
+0004923529 00000 n 
+0004923723 00000 n 
+0004923917 00000 n 
+0004924111 00000 n 
+0004924305 00000 n 
+0004924499 00000 n 
+0004924693 00000 n 
+0004924887 00000 n 
+0004925084 00000 n 
+0004925284 00000 n 
+0004925484 00000 n 
+0004925684 00000 n 
+0004925884 00000 n 
+0004926084 00000 n 
+0004926284 00000 n 
+0004926484 00000 n 
+0004926680 00000 n 
+0004926874 00000 n 
+0004927068 00000 n 
+0004927262 00000 n 
+0004927456 00000 n 
+0004927650 00000 n 
+0004927844 00000 n 
+0004928038 00000 n 
+0004928232 00000 n 
+0004928426 00000 n 
+0004928620 00000 n 
+0004928814 00000 n 
+0004929008 00000 n 
+0004929202 00000 n 
+0004929396 00000 n 
+0004929590 00000 n 
+0004929788 00000 n 
+0004929988 00000 n 
+0004930188 00000 n 
+0004930388 00000 n 
+0004930588 00000 n 
+0004930788 00000 n 
+0004930988 00000 n 
+0004931188 00000 n 
+0004931388 00000 n 
+0004931588 00000 n 
+0004931788 00000 n 
+0004931988 00000 n 
+0004932188 00000 n 
+0004932388 00000 n 
+0004932588 00000 n 
+0004932788 00000 n 
+0004932988 00000 n 
+0004933188 00000 n 
+0004933388 00000 n 
+0004933588 00000 n 
+0004933788 00000 n 
+0004933988 00000 n 
+0004934188 00000 n 
+0004934388 00000 n 
+0004934588 00000 n 
+0004934788 00000 n 
+0004934988 00000 n 
+0004935188 00000 n 
+0004935388 00000 n 
+0004935588 00000 n 
+0004935798 00000 n 
+0004936027 00000 n 
+0004936246 00000 n 
+0004936458 00000 n 
+0004936688 00000 n 
+0004936946 00000 n 
+0004937204 00000 n 
+0004937462 00000 n 
+0004937720 00000 n 
+0004937978 00000 n 
+0004938236 00000 n 
+0004938487 00000 n 
+0004938729 00000 n 
+0004938987 00000 n 
+0004939245 00000 n 
+0004939509 00000 n 
+0004939773 00000 n 
+0004940023 00000 n 
+0004940290 00000 n 
+0004940562 00000 n 
+0004940825 00000 n 
+0004941080 00000 n 
+0004941330 00000 n 
+0004941570 00000 n 
+0004941809 00000 n 
+0004942059 00000 n 
+0004942308 00000 n 
+0004942558 00000 n 
+0004942807 00000 n 
+0004943052 00000 n 
+0004943303 00000 n 
+0004943559 00000 n 
+0004943815 00000 n 
+0004944077 00000 n 
+0004944339 00000 n 
+0004944603 00000 n 
+0004944863 00000 n 
+0004945121 00000 n 
+0004945379 00000 n 
+0004945638 00000 n 
+0004945902 00000 n 
+0004946165 00000 n 
+0004946424 00000 n 
+0004946683 00000 n 
+0004946947 00000 n 
+0004947210 00000 n 
+0004947469 00000 n 
+0004947725 00000 n 
+0004947981 00000 n 
+0004948237 00000 n 
+0004948488 00000 n 
+0004948738 00000 n 
+0004948987 00000 n 
+0004949237 00000 n 
+0004949485 00000 n 
+0004949727 00000 n 
+0004949983 00000 n 
+0004950239 00000 n 
+0004950487 00000 n 
+0004950735 00000 n 
+0004950985 00000 n 
+0004951229 00000 n 
+0004951471 00000 n 
+0004951713 00000 n 
+0004951950 00000 n 
+0004952195 00000 n 
+0004952445 00000 n 
+0004952691 00000 n 
+0004952933 00000 n 
+0004953175 00000 n 
+0004953417 00000 n 
+0004953660 00000 n 
+0004953902 00000 n 
+0004954148 00000 n 
+0004954390 00000 n 
+0004954632 00000 n 
+0004954867 00000 n 
+0004955104 00000 n 
+0004955346 00000 n 
+0004955590 00000 n 
+0004955832 00000 n 
+0004956082 00000 n 
+0004956326 00000 n 
+0004956568 00000 n 
+0004956810 00000 n 
+0004957052 00000 n 
+0004957291 00000 n 
+0004957525 00000 n 
+0004957765 00000 n 
+0004958007 00000 n 
+0004958247 00000 n 
+0004958489 00000 n 
+0004958725 00000 n 
+0004958963 00000 n 
+0004959210 00000 n 
+0004959454 00000 n 
+0004959699 00000 n 
+0004959949 00000 n 
+0004960198 00000 n 
+0004960448 00000 n 
+0004960690 00000 n 
+0004960932 00000 n 
+0004961174 00000 n 
+0004961416 00000 n 
+0004961662 00000 n 
+0004961904 00000 n 
+0004962154 00000 n 
+0004962399 00000 n 
+0004962643 00000 n 
+0004962893 00000 n 
+0004963135 00000 n 
+0004963381 00000 n 
+0004963623 00000 n 
+0004963864 00000 n 
+0004964106 00000 n 
+0004964347 00000 n 
+0004964587 00000 n 
+0004964821 00000 n 
+0004965063 00000 n 
+0004965305 00000 n 
+0004965547 00000 n 
+0004965788 00000 n 
+0004966025 00000 n 
+0004966262 00000 n 
+0004966504 00000 n 
+0004966746 00000 n 
+0004966988 00000 n 
+0004967230 00000 n 
+0004967471 00000 n 
+0004967713 00000 n 
+0004967954 00000 n 
+0004968191 00000 n 
+0004968432 00000 n 
+0004968682 00000 n 
+0004968931 00000 n 
+0004969181 00000 n 
+0004969423 00000 n 
+0004969668 00000 n 
+0004969914 00000 n 
+0004970156 00000 n 
+0004970402 00000 n 
+0004970644 00000 n 
+0004970894 00000 n 
+0004971143 00000 n 
+0004971389 00000 n 
+0004971631 00000 n 
+0004971879 00000 n 
+0004972127 00000 n 
+0004972371 00000 n 
+0004972617 00000 n 
+0004972865 00000 n 
+0004973110 00000 n 
+0004973352 00000 n 
+0004973593 00000 n 
+0004973835 00000 n 
+0004974069 00000 n 
+0004974319 00000 n 
+0004974567 00000 n 
+0004974815 00000 n 
+0004975063 00000 n 
+0004975324 00000 n 
+0004975526 00000 n 
+0004975715 00000 n 
+0004975937 00000 n 
+0004976155 00000 n 
+0004976336 00000 n 
+0004976522 00000 n 
+0004976706 00000 n 
+0004976890 00000 n 
+0004977076 00000 n 
+0004977261 00000 n 
+0004977447 00000 n 
+0004977632 00000 n 
+0004977818 00000 n 
+0004978003 00000 n 
+0004978189 00000 n 
+0004978374 00000 n 
+0004978560 00000 n 
+0004978744 00000 n 
+0004978928 00000 n 
+0004979114 00000 n 
+0004979299 00000 n 
+0004979485 00000 n 
+0004979668 00000 n 
+0004979854 00000 n 
+0004980039 00000 n 
+0004980225 00000 n 
+0004980410 00000 n 
+0004980596 00000 n 
+0004980781 00000 n 
+0004980967 00000 n 
+0004981151 00000 n 
+0004981335 00000 n 
+0004981521 00000 n 
+0004981706 00000 n 
+0004981892 00000 n 
+0004982077 00000 n 
+0004982263 00000 n 
+0004982448 00000 n 
+0004982634 00000 n 
+0004982819 00000 n 
+0004983005 00000 n 
+0004983186 00000 n 
+0004983372 00000 n 
+0004983556 00000 n 
+0004983740 00000 n 
+0004983926 00000 n 
+0004984111 00000 n 
+0004984297 00000 n 
+0004984482 00000 n 
+0004984668 00000 n 
+0004984853 00000 n 
+0004985039 00000 n 
+0004985224 00000 n 
+0004985410 00000 n 
+0004985594 00000 n 
+0004985778 00000 n 
+0004985964 00000 n 
+0004986149 00000 n 
+0004986335 00000 n 
+0004986518 00000 n 
+0004986704 00000 n 
+0004986889 00000 n 
+0004987075 00000 n 
+0004987260 00000 n 
+0004987446 00000 n 
+0004987631 00000 n 
+0004987817 00000 n 
+0004988001 00000 n 
+0004988185 00000 n 
+0004988371 00000 n 
+0004988556 00000 n 
+0004988742 00000 n 
+0004988927 00000 n 
+0004989113 00000 n 
+0004989298 00000 n 
+0004989484 00000 n 
+0004989669 00000 n 
+0004989855 00000 n 
+0004990036 00000 n 
+0004990222 00000 n 
+0004990406 00000 n 
+0004990590 00000 n 
+0004990776 00000 n 
+0004990961 00000 n 
+0004991147 00000 n 
+0004991334 00000 n 
+0004991526 00000 n 
+0004991716 00000 n 
+0004991908 00000 n 
+0004992098 00000 n 
+0004992290 00000 n 
+0004992479 00000 n 
+0004992668 00000 n 
+0004992860 00000 n 
+0004993050 00000 n 
+0004993242 00000 n 
+0004993429 00000 n 
+0004993621 00000 n 
+0004993811 00000 n 
+0004994003 00000 n 
+0004994193 00000 n 
+0004994385 00000 n 
+0004994575 00000 n 
+0004994767 00000 n 
+0004994956 00000 n 
+0004995145 00000 n 
+0004995337 00000 n 
+0004995527 00000 n 
+0004995719 00000 n 
+0004995909 00000 n 
+0004996101 00000 n 
+0004996291 00000 n 
+0004996483 00000 n 
+0004996673 00000 n 
+0004996865 00000 n 
+0004997050 00000 n 
+0004997242 00000 n 
+0004997431 00000 n 
+0004997620 00000 n 
+0004997812 00000 n 
+0004998002 00000 n 
+0004998194 00000 n 
+0004998384 00000 n 
+0004998576 00000 n 
+0004998766 00000 n 
+0004998958 00000 n 
+0004999148 00000 n 
+0004999340 00000 n 
+0004999529 00000 n 
+0004999718 00000 n 
+0004999910 00000 n 
+0005000100 00000 n 
+0005000292 00000 n 
+0005000479 00000 n 
+0005000671 00000 n 
+0005000861 00000 n 
+0005001053 00000 n 
+0005001243 00000 n 
+0005001435 00000 n 
+0005001625 00000 n 
+0005001817 00000 n 
+0005002006 00000 n 
+0005002195 00000 n 
+0005002387 00000 n 
+0005002577 00000 n 
+0005002769 00000 n 
+0005002959 00000 n 
+0005003151 00000 n 
+0005003341 00000 n 
+0005003533 00000 n 
+0005003723 00000 n 
+0005003899 00000 n 
+0005004075 00000 n 
+0005004257 00000 n 
+0005004443 00000 n 
+0005004629 00000 n 
+0005004811 00000 n 
+0005005001 00000 n 
+0005005192 00000 n 
+0005005386 00000 n 
+0005005584 00000 n 
+0005005782 00000 n 
+0005005968 00000 n 
+0005006136 00000 n 
+0005006349 00000 n 
+0005006568 00000 n 
+0005006762 00000 n 
+0005007028 00000 n 
+0005007261 00000 n 
+0005007465 00000 n 
+0005007673 00000 n 
+0005007885 00000 n 
+0005008101 00000 n 
+0005008317 00000 n 
+0005008533 00000 n 
+0005008749 00000 n 
+0005008959 00000 n 
+0005009158 00000 n 
+0005009370 00000 n 
+0005009582 00000 n 
+0005009794 00000 n 
+0005010017 00000 n 
+0005010234 00000 n 
+0005010452 00000 n 
+0005010670 00000 n 
+0005010888 00000 n 
+0005011106 00000 n 
+0005011324 00000 n 
+0005011535 00000 n 
+0005011759 00000 n 
+0005011977 00000 n 
+0005012200 00000 n 
+0005012426 00000 n 
+0005012645 00000 n 
+0005012863 00000 n 
+0005013081 00000 n 
+0005013299 00000 n 
+0005013517 00000 n 
+0005013735 00000 n 
+0005013953 00000 n 
+0005014162 00000 n 
+0005014377 00000 n 
+0005014595 00000 n 
+0005014813 00000 n 
+0005015031 00000 n 
+0005015240 00000 n 
+0005015451 00000 n 
+0005015669 00000 n 
+0005015887 00000 n 
+0005016105 00000 n 
+0005016325 00000 n 
+0005016546 00000 n 
+0005016764 00000 n 
+0005016982 00000 n 
+0005017186 00000 n 
+0005017390 00000 n 
+0005017594 00000 n 
+0005017807 00000 n 
+0005017997 00000 n 
+0005018205 00000 n 
+0005018443 00000 n 
+0005018690 00000 n 
+0005018942 00000 n 
+0005019194 00000 n 
+0005019446 00000 n 
+0005019698 00000 n 
+0005019950 00000 n 
+0005020202 00000 n 
+0005020454 00000 n 
+0005020711 00000 n 
+0005020969 00000 n 
+0005021227 00000 n 
+0005021485 00000 n 
+0005021743 00000 n 
+0005022001 00000 n 
+0005022259 00000 n 
+0005022517 00000 n 
+0005022775 00000 n 
+0005023033 00000 n 
+0005023291 00000 n 
+0005023546 00000 n 
+0005023801 00000 n 
+0005024059 00000 n 
+0005024317 00000 n 
+0005024575 00000 n 
+0005024833 00000 n 
+0005025096 00000 n 
+0005025370 00000 n 
+0005025636 00000 n 
+0005025902 00000 n 
+0005026168 00000 n 
+0005026434 00000 n 
+0005026700 00000 n 
+0005026972 00000 n 
+0005027244 00000 n 
+0005027512 00000 n 
+0005027773 00000 n 
+0005028031 00000 n 
+0005028289 00000 n 
+0005028553 00000 n 
+0005028817 00000 n 
+0005029075 00000 n 
+0005029333 00000 n 
+0005029591 00000 n 
+0005029849 00000 n 
+0005030107 00000 n 
+0005030365 00000 n 
+0005030623 00000 n 
+0005030881 00000 n 
+0005031139 00000 n 
+0005031397 00000 n 
+0005031655 00000 n 
+0005031913 00000 n 
+0005032171 00000 n 
+0005032426 00000 n 
+0005032670 00000 n 
+0005032921 00000 n 
+0005033179 00000 n 
+0005033437 00000 n 
+0005033695 00000 n 
+0005033953 00000 n 
+0005034211 00000 n 
+0005034469 00000 n 
+0005034722 00000 n 
+0005034966 00000 n 
+0005035217 00000 n 
+0005035475 00000 n 
+0005035733 00000 n 
+0005035991 00000 n 
+0005036240 00000 n 
+0005036484 00000 n 
+0005036728 00000 n 
+0005036972 00000 n 
+0005037216 00000 n 
+0005037460 00000 n 
+0005037738 00000 n 
+0005038032 00000 n 
+0005038324 00000 n 
+0005038620 00000 n 
+0005038918 00000 n 
+0005039216 00000 n 
+0005039514 00000 n 
+0005039812 00000 n 
+0005040105 00000 n 
+0005040392 00000 n 
+0005040690 00000 n 
+0005040988 00000 n 
+0005041291 00000 n 
+0005041594 00000 n 
+0005041892 00000 n 
+0005042190 00000 n 
+0005042488 00000 n 
+0005042786 00000 n 
+0005043084 00000 n 
+0005043371 00000 n 
+0005043669 00000 n 
+0005043967 00000 n 
+0005044265 00000 n 
+0005044560 00000 n 
+0005044853 00000 n 
+0005045144 00000 n 
+0005045428 00000 n 
+0005045649 00000 n 
+0005045851 00000 n 
+0005046053 00000 n 
+0005046255 00000 n 
+0005046457 00000 n 
+0005046656 00000 n 
+0005046853 00000 n 
+0005047061 00000 n 
+0005047267 00000 n 
+0005047468 00000 n 
+0005047653 00000 n 
+0005047775 00000 n 
+0005047893 00000 n 
+0005048023 00000 n 
+0005048148 00000 n 
+0005048273 00000 n 
+0005048398 00000 n 
+0005048522 00000 n 
+0005048647 00000 n 
+0005048772 00000 n 
+0005048897 00000 n 
+0005049021 00000 n 
+0005049146 00000 n 
+0005049270 00000 n 
+0005049393 00000 n 
+0005049516 00000 n 
+0005049643 00000 n 
+0005049772 00000 n 
+0005049897 00000 n 
+0005050032 00000 n 
+0005050162 00000 n 
+0005050291 00000 n 
+0005050420 00000 n 
+0005050547 00000 n 
+0005050674 00000 n 
+0005050801 00000 n 
+0005050928 00000 n 
+0005051055 00000 n 
+0005051182 00000 n 
+0005051309 00000 n 
+0005051436 00000 n 
+0005051563 00000 n 
+0005051690 00000 n 
+0005051817 00000 n 
+0005051944 00000 n 
+0005052071 00000 n 
+0005052198 00000 n 
+0005052325 00000 n 
+0005052452 00000 n 
+0005052579 00000 n 
+0005052706 00000 n 
+0005052833 00000 n 
+0005052960 00000 n 
+0005053087 00000 n 
+0005053214 00000 n 
+0005053341 00000 n 
+0005053476 00000 n 
+0005053617 00000 n 
+0005053757 00000 n 
+0005053896 00000 n 
+0005054034 00000 n 
+0005054175 00000 n 
+0005054318 00000 n 
+0005054460 00000 n 
+0005054601 00000 n 
+0005054740 00000 n 
+0005054881 00000 n 
+0005055021 00000 n 
+0005055160 00000 n 
+0005055299 00000 n 
+0005055438 00000 n 
+0005055577 00000 n 
+0005055716 00000 n 
+0005055855 00000 n 
+0005055994 00000 n 
+0005056133 00000 n 
+0005056272 00000 n 
+0005056410 00000 n 
+0005056549 00000 n 
+0005056690 00000 n 
+0005056830 00000 n 
+0005056968 00000 n 
+0005057100 00000 n 
+0005057226 00000 n 
+0005057351 00000 n 
+0005057475 00000 n 
+0005057600 00000 n 
+0005057725 00000 n 
+0005057850 00000 n 
+0005057975 00000 n 
+0005058099 00000 n 
+0005058224 00000 n 
+0005058349 00000 n 
+0005058474 00000 n 
+0005058598 00000 n 
+0005058723 00000 n 
+0005058848 00000 n 
+0005058973 00000 n 
+0005059097 00000 n 
+0005059222 00000 n 
+0005059347 00000 n 
+0005059472 00000 n 
+0005059595 00000 n 
+0005059720 00000 n 
+0005059845 00000 n 
+0005059970 00000 n 
+0005060095 00000 n 
+0005060220 00000 n 
+0005060343 00000 n 
+0005060465 00000 n 
+0005060590 00000 n 
+0005060721 00000 n 
+0005060853 00000 n 
+0005060987 00000 n 
+0005061121 00000 n 
+0005061254 00000 n 
+0005061387 00000 n 
+0005061521 00000 n 
+0005061654 00000 n 
+0005061791 00000 n 
+0005061934 00000 n 
+0005062077 00000 n 
+0005062219 00000 n 
+0005062363 00000 n 
+0005062509 00000 n 
+0005062653 00000 n 
+0005062796 00000 n 
+0005062939 00000 n 
+0005063082 00000 n 
+0005063225 00000 n 
+0005063368 00000 n 
+0005063510 00000 n 
+0005063657 00000 n 
+0005063810 00000 n 
+0005063963 00000 n 
+0005064115 00000 n 
+0005064255 00000 n 
+0005064381 00000 n 
+0005064475 00000 n 
+0005064595 00000 n 
+0005064719 00000 n 
+0005064848 00000 n 
+0005064979 00000 n 
+0005065106 00000 n 
+0005065233 00000 n 
+0005065360 00000 n 
+0005065492 00000 n 
+0005065630 00000 n 
+0005065770 00000 n 
+0005065908 00000 n 
+0005066039 00000 n 
+0005066164 00000 n 
+0005066288 00000 n 
+0005066413 00000 n 
+0005066536 00000 n 
+0005066663 00000 n 
+0005066801 00000 n 
+0005066944 00000 n 
+0005067086 00000 n 
+0005067218 00000 n 
+0005067292 00000 n 
+0005067413 00000 n 
+0005067539 00000 n 
+0005067673 00000 n 
+0005067787 00000 n 
+0005067887 00000 n 
+0005067929 00000 n 
+0005068282 00000 n 
 trailer
 << /Size 18580
 /Root 18578 0 R
 /Info 18579 0 R
-/ID [<0AC194A4343E2335385D7248B13A4AD9> <0AC194A4343E2335385D7248B13A4AD9>] >>
+/ID [<4541D8992CBCFE9E60B58788B2874EB5> <4541D8992CBCFE9E60B58788B2874EB5>] >>
 startxref
-5068525
+5068615
 %%EOF

Modified: branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/Packaging.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/Packaging.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/Packaging.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,12 +1,10 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 16. Notes to packagers</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"><link rel="start" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt05.html" title="Part V. Appendices"><link rel="prev" href="pt05.html" title="Part V. Appendices"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Notes to packagers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt05.html">Prev</a> </td><th width="60%" align="center">Part V. Appendices</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="Packaging"></a>Chapter 16. Notes to packagers</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="Packaging.html#id2554577">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2554612">Modules</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2554577"></a>Versioning</h2></div></div></div><p>
-Please, please set the vendor version suffix and number in <code class="filename">source/VERSION</code> and call
-<code class="filename">source/script/mkvesion.sh</code> to include the versioning of your package. There is also
-the possibility to set a function to create the vendor version. This makes it easier to distinguish
-standard samba builds from custom-build samba builds (distributions often patch packages). For example,
-a good version would be:
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 16. Notes to packagers</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"><link rel="start" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt05.html" title="Part V. Appendices"><link rel="prev" href="pt05.html" title="Part V. Appendices"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Notes to packagers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt05.html">Prev</a> </td><th width="60%" align="center">Part V. Appendices</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="Packaging"></a>Chapter 16. Notes to packagers</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="Packaging.html#id2554577">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2554604">Modules</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2554577"></a>Versioning</h2></div></div></div><p>
+Please, please update the version number in <code class="filename">source/include/version.h</code> to include the
+versioning of your package. This makes it easier to distinguish standard samba builds from custom-build samba
+builds (distributions often patch packages). For example, a good version would be:
 </p><pre class="programlisting">
 Version 2.999+3.0.alpha21-5 for Debian
-</pre></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2554612"></a>Modules</h2></div></div></div><p>
+</pre></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2554604"></a>Modules</h2></div></div></div><p>
 Samba3 has support for building parts of samba as plugins. This makes it possible to, for example,
 put ldap or mysql support in a separate package, thus making it possible to have a normal samba package not
 depending on ldap or mysql. To build as much parts of samba as a plugin, run:

Modified: branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/index.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/index.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/index.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,4 +20,4 @@
 ChangeID and Client Caching of Printer Information
 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2554251">
 Windows NT/2K Printer Change Notify
-</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt05.html">V. Appendices</a></span></dt><dd><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2554577">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2554612">Modules</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Attribution</td></tr></table></div></body></html>
+</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt05.html">V. Appendices</a></span></dt><dd><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2554577">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2554604">Modules</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Attribution</td></tr></table></div></body></html>

Modified: branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/pt05.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/pt05.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/Samba3-Developers-Guide/pt05.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1 +1 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part V. Appendices</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"><link rel="start" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="devprinting.html" title="Chapter 15. Samba Printing Internals"><link rel="next" href="Packaging.html" title="Chapter 16. Notes to packagers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. Appendices</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2554551"></a>Part V. Appendices</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2554577">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2554612">Modules</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Samba Printing Internals </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Notes to packagers</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part V. Appendices</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"><link rel="start" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="devprinting.html" title="Chapter 15. Samba Printing Internals"><link rel="next" href="Packaging.html" title="Chapter 16. Notes to packagers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. Appendices</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2554551"></a>Part V. Appendices</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2554577">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2554604">Modules</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Samba Printing Internals </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Notes to packagers</td></tr></table></div></body></html>

Modified: branches/samba/upstream/docs/htmldocs/manpages/idmap_ad.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_ad.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_ad.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -26,13 +26,14 @@
 	id allocation that may be used in internal backends like BUILTIN.
 	</p><pre class="programlisting">
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	idmap domains = ALLDOMAINS
+	idmap config ALLDOMAINS:backend      = ad
+	idmap config ALLDOMAINS:default      = yes
+	idmap config ALLDOMAINS:range        = 10000 - 300000000
 
-	idmap config CORP : backend  = ad
-	idmap config CORP : range = 1000-999999
-	</pre></div><div class="refsect1" lang="en"><a name="id2479186"></a><h2>AUTHOR</h2><p>
+	idmap alloc backend = tdb
+	idmap alloc config:range        = 5000 - 9999
+	</pre></div><div class="refsect1" lang="en"><a name="id2479187"></a><h2>AUTHOR</h2><p>
 	The original Samba software and related utilities
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar

Deleted: branches/samba/upstream/docs/htmldocs/manpages/idmap_adex.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_adex.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_adex.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,44 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>idmap_adex</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="idmap_adex.8"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>idmap_adex &#8212; Samba's idmap_adex Backend for Winbind</p></div><div class="refsynopsisdiv"><h2>DESCRIPTION</h2><p>
-	  The idmap_adex plugin provides a way for Winbind to read
-	  id mappings from an AD server that uses RFC2307 schema
-	  extensions. This module implements both the idmap and nss_info
-	  APIs and supports domain trustes as well as two-way cross
-	  forest trusts.  It is a read-only plugin requiring that the
-	  administrator provide mappings in advance by adding the
-	  POSIX attribute information to the users and groups objects
-	  in AD.  The most common means of doing this is using "Identity
-	  Services for Unix" support on Windows 2003 R2 and later.
-	</p><p>
-	  Note that you must add the uidNumber, gidNumber, and uid
-	  attributes to the partial attribute set of the forest global
-	  catalog servers.  This can be done using the Active Directory Schema
-	  Management MMC plugin (schmmgmt.dll).
-	</p></div><div class="refsynopsisdiv"><h2>NSS_INFO</h2><p>
-	  The nss_info plugin supports reading the unixHomeDirectory,
-	  gidNumber, loginShell, and uidNumber attributes from the user
-	  object and the gidNumber attribute from the group object to
-	  fill in information required by the libc getpwnam() and
-	  getgrnam() family of functions.  Group membership is filled in
-	  according to the Windows group membership and not the
-	  msSFU30PosixMember attribute.
-	</p><p>
-	  Username aliases are implement by setting the uid attribute
-	  on the user object.  While group name aliases are implemented
-	  by reading the displayname attribute from the group object.
-	</p></div><div class="refsect1" lang="en"><a name="id2480124"></a><h2>EXAMPLES</h2><p>
-	  The following example shows how to retrieve idmappings and NSS data
-	  from our principal and trusted AD domains.
-	</p><pre class="programlisting">
-	[global]
-	idmap backend = adex
-	idmap uid = 1000-4000000000
-	idmap gid = 1000-4000000000
-
-	winbind nss info = adex
-	winbind normalize names = yes
-	</pre></div><div class="refsect1" lang="en"><a name="id2480144"></a><h2>AUTHOR</h2><p>
-	The original Samba software and related utilities
-	were created by Andrew Tridgell. Samba is now developed
-	by the Samba Team as an Open Source project similar
-	to the way the Linux kernel is developed.
-	</p></div></div></body></html>

Deleted: branches/samba/upstream/docs/htmldocs/manpages/idmap_hash.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_hash.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_hash.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,29 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>idmap_hash</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="idmap_hash.8"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>idmap_hash &#8212; Samba's idmap_hash Backend for Winbind</p></div><div class="refsynopsisdiv"><h2>DESCRIPTION</h2><p>The idmap_hash plugin implements a hashing algorithm used
-	  map SIDs for domain users and groups to a 31-bit uid and gid.
-	  This plugin also implements the nss_info API and can be used
-	  to support a local name mapping files if enabled via the
-	  "winbind normlaize names" and "winbind nss info"
-	  parameters in smb.conf.
-	</p></div><div class="refsect1" lang="en"><a name="id2518313"></a><h2>IDMAP OPTIONS</h2><div class="variablelist"><dl><dt><span class="term">name_map</span></dt><dd><p>
-		    Specifies the absolute path to the name mapping
-		    file used by the nss_info API.  Entries in the file
-		    are of the form "<em class="replaceable"><code>unix name</code></em>
-		    = <em class="replaceable"><code>qualified domain name</code></em>.
-		    Mapping of both user and group names is supported.
-		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2480121"></a><h2>EXAMPLES</h2><p>The following example utilizes the idmap_hash plugin for
-	  the idmap and nss_info information.
-	</p><pre class="programlisting">
-	[global]
-	idmap backend = hash
-	idmap uid = 1000-4000000000
-	idmap gid = 1000-4000000000
-
-	winbind nss info = hash
-	winbind normalize names = yes
-	idmap_hash:name_map = /etc/samba/name_map.cfg
-	</pre></div><div class="refsect1" lang="en"><a name="id2480142"></a><h2>AUTHOR</h2><p>
-	The original Samba software and related utilities
-	were created by Andrew Tridgell. Samba is now developed
-	by the Samba Team as an Open Source project similar
-	to the way the Linux kernel is developed.
-	</p></div></div></body></html>

Modified: branches/samba/upstream/docs/htmldocs/manpages/idmap_ldap.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_ldap.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_ldap.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -31,25 +31,37 @@
 			Specifies the LDAP server to which modify/add/delete requests should
 			be sent.  If not defined, idmap_ldap will assume that ldap://localhost/
 			should be used.
-		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2482448"></a><h2>EXAMPLES</h2><p>
-	The follow sets of a LDAP configuration which uses two LDAP
-	directories, one for storing the ID mappings and one for retrieving
-	new IDs.
+		</p></dd><dt><span class="term">range = low - high</span></dt><dd><p>
+			Defines the available matching uid and gid range from which
+			winbindd can allocate for users and groups.  If the parameter
+			is absent, Winbind fail over to use the "idmap uid"
+			and "idmap gid" options from smb.conf.
+                </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2482463"></a><h2>EXAMPLES</h2><p>
+	The follow sets of a LDAP configuration which uses a slave server
+	running on localhost for fast fetching SID/gid/uid mappings, it
+	implies correct configuration of referrals.
+	The idmap alloc backend is pointed directly to the master to skip
+	the referral (and consequent reconnection to the master) that the
+	slave would return as allocation requires writing on the master.
 	</p><pre class="programlisting">
 	[global]
-	idmap backend = ldap:ldap://localhost/
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	    idmap domains = ALLDOMAINS
+	    idmap config ALLDOMAINS:default      = yes
+	    idmap config ALLDOMAINS:backend      = ldap
+	    idmap config ALLDOMAINS:ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap config ALLDOMAINS:ldap_url     = ldap://localhost/
+	    idmap config ALLDOMAINS:range        = 10000 - 50000
 
-	idmap alloc backend = ldap
-	idmap alloc config : ldap_url	= ldap://id-master/
-	idmap alloc config : ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap alloc backend = ldap
+	    idmap alloc config:ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap alloc config:ldap_url     = ldap://master.example.com/
+	    idmap alloc config:range        = 10000 - 50000
 	</pre></div><div class="refsynopsisdiv"><h2>NOTE</h2><p>In order to use authentication against ldap servers you may
 	need to provide a DN and a password. To avoid exposing the password
 	in plain text in the configuration file we store it into a security
 	store. The "net idmap " command is used to store a secret
 	for the DN specified in a specific idmap domain.
-	</p></div><div class="refsect1" lang="en"><a name="id2482490"></a><h2>AUTHOR</h2><p>
+	</p></div><div class="refsect1" lang="en"><a name="id2482509"></a><h2>AUTHOR</h2><p>
 	The original Samba software and related utilities
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar

Modified: branches/samba/upstream/docs/htmldocs/manpages/idmap_nss.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_nss.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_nss.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -9,13 +9,18 @@
 	own domain while using allocation to create new mappings for trusted domains
 	</p><pre class="programlisting">
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	    idmap domains = SAMBA TRUSTEDDOMAINS
 
-	idmap config SAMBA : backend  = nss
-	idmap config SAMBA : range = 1000-999999
-	</pre></div><div class="refsect1" lang="en"><a name="id2516103"></a><h2>AUTHOR</h2><p>
+	    idmap config SAMBA:backend  = nss
+	    idmap config SAMBA:readonly = yes
+
+	    idmap config TRUSTEDDOMAINS:default = yes
+	    idmap config TRUSTEDDOMAINS:backend = tdb
+	    idmap config TRUSTEDDOMAINS:range   = 10000 - 50000
+
+	    idmap alloc backend      = tdb
+	    idmap alloc config:range = 10000 - 50000
+	</pre></div><div class="refsect1" lang="en"><a name="id2516107"></a><h2>AUTHOR</h2><p>
 	The original Samba software and related utilities
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar

Modified: branches/samba/upstream/docs/htmldocs/manpages/idmap_rid.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_rid.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_rid.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -13,17 +13,18 @@
 			by default start at 1000 (512 hexadecimal), this means a good value
 			for base_rid can be 1000 as the resulting ID is calculated this way:
 			ID = RID - BASE_RID + LOW RANGE ID.
-		</p><p>
-			Use of this parameter is deprecated.
-		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2479163"></a><h2>EXAMPLES</h2><p>This example shows how to configure a domain with idmap_rid</p><pre class="programlisting">
+		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2516123"></a><h2>EXAMPLES</h2><p>This example shows how to configure 2 domains with idmap_rid</p><pre class="programlisting">
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	    idmap domains = MAIN TRUSTED1
 
-	idmap config TRUSTED : backend  = rid
-	idmap config TRUSTED : range    = 50000 - 99999
-	</pre></div><div class="refsect1" lang="en"><a name="id2479181"></a><h2>AUTHOR</h2><p>
+	    idmap config MAIN:backend      = rid
+	    idmap config MAIN:base_rid     = 0
+	    idmap config MAIN:range        = 10000 - 49999
+
+	    idmap config TRUSTED1:backend  = rid
+	    idmap config TRUSTED1:base_rid = 1000
+	    idmap config TRUSTED1:range    = 50000 - 99999
+	</pre></div><div class="refsect1" lang="en"><a name="id2479180"></a><h2>AUTHOR</h2><p>
 	The original Samba software and related utilities
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar

Modified: branches/samba/upstream/docs/htmldocs/manpages/idmap_tdb.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/idmap_tdb.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/idmap_tdb.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -13,7 +13,19 @@
 			winbindd can allocate for users and groups.  If the parameter
 			is absent, Winbind fail over to use the "idmap uid"
 			and "idmap gid" options from smb.conf.
-                </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2479169"></a><h2>AUTHOR</h2><p>
+                </p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2479169"></a><h2>EXAMPLES</h2><p>
+	The following example is equivalent to the pre-3.0.25 default idmap
+	configuration using the "idmap backend = tdb" setting.
+	</p><pre class="programlisting">
+	[global]
+	    idmap domains = ALLDOMAINS
+	    idmap config ALLDOMAINS:default = yes
+	    idmap config ALLDOMAINS:backend = tdb
+	    idmap config ALLDOMAINS:range   = 10000 - 50000
+
+	    idmap alloc backend = tdb
+	    idmap alloc config:range = 10000 - 50000
+	</pre></div><div class="refsect1" lang="en"><a name="id2479191"></a><h2>AUTHOR</h2><p>
 	The original Samba software and related utilities
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar

Modified: branches/samba/upstream/docs/htmldocs/manpages/index.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/index.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/index.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3,8 +3,6 @@
 </p></dd><dt><span class="term"><a class="ulink" href="findsmb.1.html" target="_top">findsmb(1)</a></span></dt><dd><p>list info about machines that respond to SMB 
 	name queries on a subnet
 </p></dd><dt><span class="term"><a class="ulink" href="idmap_ad.8.html" target="_top">idmap_ad(8)</a></span></dt><dd><p>Samba's idmap_ad Backend for Winbind
-</p></dd><dt><span class="term"><a class="ulink" href="idmap_adex.8.html" target="_top">idmap_adex(8)</a></span></dt><dd><p>Samba's idmap_adex Backend for Winbind
-</p></dd><dt><span class="term"><a class="ulink" href="idmap_hash.8.html" target="_top">idmap_hash(8)</a></span></dt><dd><p>Samba's idmap_hash Backend for Winbind
 </p></dd><dt><span class="term"><a class="ulink" href="idmap_ldap.8.html" target="_top">idmap_ldap(8)</a></span></dt><dd><p>Samba's idmap_ldap Backend for Winbind
 </p></dd><dt><span class="term"><a class="ulink" href="idmap_nss.8.html" target="_top">idmap_nss(8)</a></span></dt><dd><p>Samba's idmap_nss Backend for Winbind
 </p></dd><dt><span class="term"><a class="ulink" href="idmap_rid.8.html" target="_top">idmap_rid(8)</a></span></dt><dd><p>Samba's idmap_rid Backend for Winbind
@@ -75,8 +73,6 @@
 </p></dd><dt><span class="term"><a class="ulink" href="vfs_readonly.8.html" target="_top">vfs_readonly(8)</a></span></dt><dd><p>make a Samba share read only for a specified time period
 </p></dd><dt><span class="term"><a class="ulink" href="vfs_recycle.8.html" target="_top">vfs_recycle(8)</a></span></dt><dd><p>Samba VFS recycle bin
 </p></dd><dt><span class="term"><a class="ulink" href="vfs_shadow_copy.8.html" target="_top">vfs_shadow_copy(8)</a></span></dt><dd><p>Make a Samba share read only for a specified time period
-</p></dd><dt><span class="term"><a class="ulink" href="smb_traffic_analyzer.8.html" target="_top">smb_traffic_analyzer(8)</a></span></dt><dd><p>log Samba VFS read and write operations through a socket
-	to a helper application
 </p></dd><dt><span class="term"><a class="ulink" href="vfs_streams_depot.8.html" target="_top">vfs_streams_depot(8)</a></span></dt><dd><p>EXPERIMENTAL module to store alternate data streams in a
 	central directory.
 	

Modified: branches/samba/upstream/docs/htmldocs/manpages/net.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/net.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/net.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -167,20 +167,18 @@
 announce the shutdown.</p></dd></dl></div></div><div class="refsect2" lang="en"><a name="id2526318"></a><h3>RPC SAMDUMP</h3><p>Print out sam database of remote server. You need
 to run this against the PDC, from a Samba machine joined as a BDC. </p></div><div class="refsect2" lang="en"><a name="id2526330"></a><h3>RPC VAMPIRE</h3><p>Export users, aliases and groups from remote server to 
 local server.  You need to run this against the PDC, from a Samba machine joined as a BDC. 
-</p></div><div class="refsect2" lang="en"><a name="id2526342"></a><h3>RPC VAMPIRE KEYTAB</h3><p>Dump remote SAM database to local Kerberos keytab file.
-</p></div><div class="refsect2" lang="en"><a name="id2526353"></a><h3>RPC VAMPIRE LDIF</h3><p>Dump remote SAM database to local LDIF file or standard output.
-</p></div><div class="refsect2" lang="en"><a name="id2526364"></a><h3>RPC GETSID</h3><p>Fetch domain SID and store it in the local <code class="filename">secrets.tdb</code>. </p></div><div class="refsect2" lang="en"><a name="id2526381"></a><h3>ADS LEAVE</h3><p>Make the remote host leave the domain it is part of. </p></div><div class="refsect2" lang="en"><a name="id2526392"></a><h3>ADS STATUS</h3><p>Print out status of machine account of the local machine in ADS.
+</p></div><div class="refsect2" lang="en"><a name="id2526342"></a><h3>RPC GETSID</h3><p>Fetch domain SID and store it in the local <code class="filename">secrets.tdb</code>. </p></div><div class="refsect2" lang="en"><a name="id2526359"></a><h3>ADS LEAVE</h3><p>Make the remote host leave the domain it is part of. </p></div><div class="refsect2" lang="en"><a name="id2526370"></a><h3>ADS STATUS</h3><p>Print out status of machine account of the local machine in ADS.
 Prints out quite some debug info. Aimed at developers, regular 
-users should use <code class="literal">NET ADS TESTJOIN</code>.</p></div><div class="refsect2" lang="en"><a name="id2526410"></a><h3>ADS PRINTER</h3><div class="refsect3" lang="en"><a name="id2526416"></a><h4>ADS PRINTER INFO [<em class="replaceable"><code>PRINTER</code></em>] [<em class="replaceable"><code>SERVER</code></em>]</h4><p>
+users should use <code class="literal">NET ADS TESTJOIN</code>.</p></div><div class="refsect2" lang="en"><a name="id2526388"></a><h3>ADS PRINTER</h3><div class="refsect3" lang="en"><a name="id2526393"></a><h4>ADS PRINTER INFO [<em class="replaceable"><code>PRINTER</code></em>] [<em class="replaceable"><code>SERVER</code></em>]</h4><p>
 Lookup info for <em class="replaceable"><code>PRINTER</code></em> on <em class="replaceable"><code>SERVER</code></em>. The printer name defaults to "*", the 
-server name defaults to the local host.</p></div><div class="refsect3" lang="en"><a name="id2526442"></a><h4>ADS PRINTER PUBLISH <em class="replaceable"><code>PRINTER</code></em></h4><p>Publish specified printer using ADS.</p></div><div class="refsect3" lang="en"><a name="id2526455"></a><h4>ADS PRINTER REMOVE <em class="replaceable"><code>PRINTER</code></em></h4><p>Remove specified printer from ADS directory.</p></div></div><div class="refsect2" lang="en"><a name="id2526469"></a><h3>ADS SEARCH <em class="replaceable"><code>EXPRESSION</code></em> <em class="replaceable"><code>ATTRIBUTES...</code></em></h3><p>Perform a raw LDAP search on a ADS server and dump the results. The 
+server name defaults to the local host.</p></div><div class="refsect3" lang="en"><a name="id2526419"></a><h4>ADS PRINTER PUBLISH <em class="replaceable"><code>PRINTER</code></em></h4><p>Publish specified printer using ADS.</p></div><div class="refsect3" lang="en"><a name="id2526433"></a><h4>ADS PRINTER REMOVE <em class="replaceable"><code>PRINTER</code></em></h4><p>Remove specified printer from ADS directory.</p></div></div><div class="refsect2" lang="en"><a name="id2526447"></a><h3>ADS SEARCH <em class="replaceable"><code>EXPRESSION</code></em> <em class="replaceable"><code>ATTRIBUTES...</code></em></h3><p>Perform a raw LDAP search on a ADS server and dump the results. The 
 expression is a standard LDAP search expression, and the 
 attributes are a list of LDAP fields to show in the results.</p><p>Example: <strong class="userinput"><code>net ads search '(objectCategory=group)' sAMAccountName</code></strong>
-</p></div><div class="refsect2" lang="en"><a name="id2526498"></a><h3>ADS DN <em class="replaceable"><code>DN</code></em> <em class="replaceable"><code>(attributes)</code></em></h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526476"></a><h3>ADS DN <em class="replaceable"><code>DN</code></em> <em class="replaceable"><code>(attributes)</code></em></h3><p>
 Perform a raw LDAP search on a ADS server and dump the results. The 
 DN standard LDAP DN, and the attributes are a list of LDAP fields 
 to show in the result. 
-</p><p>Example: <strong class="userinput"><code>net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' SAMAccountName</code></strong></p></div><div class="refsect2" lang="en"><a name="id2526526"></a><h3>ADS WORKGROUP</h3><p>Print out workgroup name for specified kerberos realm.</p></div><div class="refsect2" lang="en"><a name="id2526537"></a><h3>SAM CREATEBUILTINGROUP &lt;NAME&gt;</h3><p>
+</p><p>Example: <strong class="userinput"><code>net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' SAMAccountName</code></strong></p></div><div class="refsect2" lang="en"><a name="id2526504"></a><h3>ADS WORKGROUP</h3><p>Print out workgroup name for specified kerberos realm.</p></div><div class="refsect2" lang="en"><a name="id2526515"></a><h3>SAM CREATEBUILTINGROUP &lt;NAME&gt;</h3><p>
 (Re)Create a BUILTIN group.
 Only a wellknown set of BUILTIN groups can be created with this command.
 This is the list of currently recognized group names: Administrators,
@@ -190,78 +188,78 @@
 
 This command requires a running Winbindd with idmap allocation properly
 configured. The group gid will be allocated out of the winbindd range.
-</p></div><div class="refsect2" lang="en"><a name="id2526556"></a><h3>SAM CREATELOCALGROUP &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526534"></a><h3>SAM CREATELOCALGROUP &lt;NAME&gt;</h3><p>
 Create a LOCAL group (also known as Alias).
 
 This command requires a running Winbindd with idmap allocation properly
 configured. The group gid will be allocated out of the winbindd range.
-</p></div><div class="refsect2" lang="en"><a name="id2526570"></a><h3>SAM DELETELOCALGROUP &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526547"></a><h3>SAM DELETELOCALGROUP &lt;NAME&gt;</h3><p>
 Delete an existing LOCAL group (also known as Alias).
 
-</p></div><div class="refsect2" lang="en"><a name="id2526581"></a><h3>SAM MAPUNIXGROUP &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526559"></a><h3>SAM MAPUNIXGROUP &lt;NAME&gt;</h3><p>
 Map an existing Unix group and make it a Domain Group, the domain group
 will have the same name.
-</p></div><div class="refsect2" lang="en"><a name="id2526593"></a><h3>SAM UNMAPUNIXGROUP &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526571"></a><h3>SAM UNMAPUNIXGROUP &lt;NAME&gt;</h3><p>
 Remove an existing group mapping entry.
-</p></div><div class="refsect2" lang="en"><a name="id2526605"></a><h3>SAM ADDMEM &lt;GROUP&gt; &lt;MEMBER&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526582"></a><h3>SAM ADDMEM &lt;GROUP&gt; &lt;MEMBER&gt;</h3><p>
 Add a member to a Local group. The group can be specified only by name,
 the member can be specified by name or SID.
-</p></div><div class="refsect2" lang="en"><a name="id2526618"></a><h3>SAM DELMEM  &lt;GROUP&gt; &lt;MEMBER&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526595"></a><h3>SAM DELMEM  &lt;GROUP&gt; &lt;MEMBER&gt;</h3><p>
 Remove a member from a Local group. The group and the member must be
 specified by name.
-</p></div><div class="refsect2" lang="en"><a name="id2526630"></a><h3>SAM LISTMEM &lt;GROUP&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526608"></a><h3>SAM LISTMEM &lt;GROUP&gt;</h3><p>
 List Local group members. The group must be specified by name.
-</p></div><div class="refsect2" lang="en"><a name="id2526641"></a><h3>SAM LIST &lt;users|groups|localgroups|builtin|workstations&gt; [verbose]</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526619"></a><h3>SAM LIST &lt;users|groups|localgroups|builtin|workstations&gt; [verbose]</h3><p>
 List the specified set of accounts by name. If verbose is specified,
 the rid and description is also provided for each account.
-</p></div><div class="refsect2" lang="en"><a name="id2526655"></a><h3>SAM SHOW &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526633"></a><h3>SAM SHOW &lt;NAME&gt;</h3><p>
 Show the full DOMAIN\\NAME the SID and the type for the corresponding
 account.
-</p></div><div class="refsect2" lang="en"><a name="id2526667"></a><h3>SAM SET HOMEDIR &lt;NAME&gt; &lt;DIRECTORY&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526645"></a><h3>SAM SET HOMEDIR &lt;NAME&gt; &lt;DIRECTORY&gt;</h3><p>
 Set the home directory for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526678"></a><h3>SAM SET PROFILEPATH &lt;NAME&gt; &lt;PATH&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526656"></a><h3>SAM SET PROFILEPATH &lt;NAME&gt; &lt;PATH&gt;</h3><p>
 Set the profile path for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526689"></a><h3>SAM SET COMMENT &lt;NAME&gt; &lt;COMMENT&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526667"></a><h3>SAM SET COMMENT &lt;NAME&gt; &lt;COMMENT&gt;</h3><p>
 Set the comment for a user or group account.
-</p></div><div class="refsect2" lang="en"><a name="id2526701"></a><h3>SAM SET FULLNAME &lt;NAME&gt; &lt;FULL NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526678"></a><h3>SAM SET FULLNAME &lt;NAME&gt; &lt;FULL NAME&gt;</h3><p>
 Set the full name for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526712"></a><h3>SAM SET LOGONSCRIPT &lt;NAME&gt; &lt;SCRIPT&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526690"></a><h3>SAM SET LOGONSCRIPT &lt;NAME&gt; &lt;SCRIPT&gt;</h3><p>
 Set the logon script for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526723"></a><h3>SAM SET HOMEDRIVE &lt;NAME&gt; &lt;DRIVE&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526701"></a><h3>SAM SET HOMEDRIVE &lt;NAME&gt; &lt;DRIVE&gt;</h3><p>
 Set the home drive for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526734"></a><h3>SAM SET WORKSTATIONS &lt;NAME&gt; &lt;WORKSTATIONS&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526712"></a><h3>SAM SET WORKSTATIONS &lt;NAME&gt; &lt;WORKSTATIONS&gt;</h3><p>
 Set the workstations a user account is allowed to log in from.
-</p></div><div class="refsect2" lang="en"><a name="id2526746"></a><h3>SAM SET DISABLE &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526724"></a><h3>SAM SET DISABLE &lt;NAME&gt;</h3><p>
 Set the "disabled" flag for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526757"></a><h3>SAM SET PWNOTREQ &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526735"></a><h3>SAM SET PWNOTREQ &lt;NAME&gt;</h3><p>
 Set the "password not required" flag for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526769"></a><h3>SAM SET AUTOLOCK &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526746"></a><h3>SAM SET AUTOLOCK &lt;NAME&gt;</h3><p>
 Set the "autolock" flag for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526780"></a><h3>SAM SET PWNOEXP &lt;NAME&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526758"></a><h3>SAM SET PWNOEXP &lt;NAME&gt;</h3><p>
 Set the "password do not expire" flag for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526791"></a><h3>SAM SET PWDMUSTCHANGENOW &lt;NAME&gt; [yes|no]</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526769"></a><h3>SAM SET PWDMUSTCHANGENOW &lt;NAME&gt; [yes|no]</h3><p>
 Set or unset the "password must change" flag for a user account.
-</p></div><div class="refsect2" lang="en"><a name="id2526803"></a><h3>SAM POLICY LIST</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526781"></a><h3>SAM POLICY LIST</h3><p>
 List the available account policies.
-</p></div><div class="refsect2" lang="en"><a name="id2526814"></a><h3>SAM POLICY SHOW &lt;account policy&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526792"></a><h3>SAM POLICY SHOW &lt;account policy&gt;</h3><p>
 Show the account policy value.
-</p></div><div class="refsect2" lang="en"><a name="id2526825"></a><h3>SAM POLICY SET &lt;account policy&gt; &lt;value&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526803"></a><h3>SAM POLICY SET &lt;account policy&gt; &lt;value&gt;</h3><p>
 Set a value for the account policy.
 Valid values can be: "forever", "never", "off", or a number.
-</p></div><div class="refsect2" lang="en"><a name="id2526838"></a><h3>SAM PROVISION</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526815"></a><h3>SAM PROVISION</h3><p>
 Only available if ldapsam:editposix is set and winbindd is running.
 Properly populates the ldap tree with the basic accounts (Administrator)
 and groups (Domain Users, Domain Admins, Domain Guests) on the ldap tree.
-</p></div><div class="refsect2" lang="en"><a name="id2526851"></a><h3>IDMAP DUMP &lt;local tdb file name&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526829"></a><h3>IDMAP DUMP &lt;local tdb file name&gt;</h3><p>
 Dumps the mappings contained in the local tdb file specified.
 This command is useful to dump only the mappings produced by the idmap_tdb backend.
-</p></div><div class="refsect2" lang="en"><a name="id2526865"></a><h3>IDMAP RESTORE [input file]</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526843"></a><h3>IDMAP RESTORE [input file]</h3><p>
 Restore the mappings from the specified file or stdin.
-</p></div><div class="refsect2" lang="en"><a name="id2526876"></a><h3>IDMAP SECRET &lt;DOMAIN&gt;|ALLOC &lt;secret&gt;</h3><p>
+</p></div><div class="refsect2" lang="en"><a name="id2526854"></a><h3>IDMAP SECRET &lt;DOMAIN&gt;|ALLOC &lt;secret&gt;</h3><p>
 Store a secret for the specified domain, used primarily for domains
 that use idmap_ldap as a backend. In this case the secret is used
 as the password for the user DN used to bind to the ldap server.
-</p></div><div class="refsect2" lang="en"><a name="id2526891"></a><h3>USERSHARE</h3><p>Starting with version 3.0.23, a Samba server now supports the ability for
+</p></div><div class="refsect2" lang="en"><a name="id2526868"></a><h3>USERSHARE</h3><p>Starting with version 3.0.23, a Samba server now supports the ability for
 non-root users to add user defined shares to be exported using the "net usershare"
 commands.
 </p><p>
@@ -290,7 +288,7 @@
 
 </p><table class="simplelist" border="0" summary="Simple list"><tr><td>net usershare add sharename path [comment] [acl] [guest_ok=[y|n]] - to add or change a user defined share.</td></tr><tr><td>net usershare delete sharename - to delete a user defined share.</td></tr><tr><td>net usershare info [-l|--long] [wildcard sharename] - to print info about a user defined share.</td></tr><tr><td>net usershare list [-l|--long] [wildcard sharename] - to list user defined shares.</td></tr></table><p>
 
-</p><div class="refsect3" lang="en"><a name="id2478130"></a><h4>USERSHARE ADD <em class="replaceable"><code>sharename</code></em> <em class="replaceable"><code>path</code></em> <em class="replaceable"><code>[comment]</code></em> <em class="replaceable"><code>[acl]</code></em> <em class="replaceable"><code>[guest_ok=[y|n]]</code></em></h4><p>
+</p><div class="refsect3" lang="en"><a name="id2526927"></a><h4>USERSHARE ADD <em class="replaceable"><code>sharename</code></em> <em class="replaceable"><code>path</code></em> <em class="replaceable"><code>[comment]</code></em> <em class="replaceable"><code>[acl]</code></em> <em class="replaceable"><code>[guest_ok=[y|n]]</code></em></h4><p>
 Add or replace a new user defined share, with name "sharename".
 </p><p>
 "path" specifies the absolute pathname on the system to be exported.
@@ -327,11 +325,11 @@
 you wish. The Samba smbd daemon notices user defined share modifications
 at connect time so will see the change immediately, there is no need
 to restart smbd on adding, deleting or changing a user defined share.
-</div><div class="refsect3" lang="en"><a name="id2478204"></a><h4>USERSHARE DELETE <em class="replaceable"><code>sharename</code></em></h4><p>
+</div><div class="refsect3" lang="en"><a name="id2527001"></a><h4>USERSHARE DELETE <em class="replaceable"><code>sharename</code></em></h4><p>
 Deletes the user defined share by name. The Samba smbd daemon
 immediately notices this change, although it will not disconnect
 any users currently connected to the deleted share.
-</p></div><div class="refsect3" lang="en"><a name="id2478220"></a><h4>USERSHARE INFO <em class="replaceable"><code>[-l|--long]</code></em> <em class="replaceable"><code>[wildcard sharename]</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527016"></a><h4>USERSHARE INFO <em class="replaceable"><code>[-l|--long]</code></em> <em class="replaceable"><code>[wildcard sharename]</code></em></h4><p>
 Get info on user defined shares owned by the current user matching the given pattern, or all users.
 </p><p>
 net usershare info on its own dumps out info on the user defined shares that were
@@ -350,7 +348,7 @@
 
 And is a list of the current settings of the user defined share that can be
 modified by the "net usershare add" command.
-</p></div><div class="refsect3" lang="en"><a name="id2527211"></a><h4>USERSHARE LIST <em class="replaceable"><code>[-l|--long]</code></em> <em class="replaceable"><code>wildcard sharename</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527051"></a><h4>USERSHARE LIST <em class="replaceable"><code>[-l|--long]</code></em> <em class="replaceable"><code>wildcard sharename</code></em></h4><p>
 List all the user defined shares owned by the current user matching the given pattern, or all users.
 </p><p>
 net usershare list on its own list out the names of the user defined shares that were
@@ -358,7 +356,7 @@
 wildcard pattern ('*' matches one or more characters, '?' matches only one character).
 If the '-l' or '--long' option is also given, it includes the names of user defined
 shares created by other users.
-</p></div></div><div class="refsect2" lang="en"><a name="id2527239"></a><h3>CONF</h3><p>Starting with version 3.2.0, a Samba server can be configured by data
+</p></div></div><div class="refsect2" lang="en"><a name="id2527086"></a><h3>CONF</h3><p>Starting with version 3.2.0, a Samba server can be configured by data
 stored in registry. This configuration data can be edited with the new "net
 conf" commands.
 </p><p>
@@ -376,10 +374,10 @@
 format.</td></tr><tr><td>net conf import - Import configuration from file in smb.conf
 format.</td></tr><tr><td>net conf listshares - List the registry shares.</td></tr><tr><td>net conf drop - Delete the complete configuration from
 registry.</td></tr><tr><td>net conf showshare - Show the definition of a registry share.</td></tr><tr><td>net conf addshare - Create a new registry share.</td></tr><tr><td>net conf delshare - Delete a registry share.</td></tr><tr><td>net conf setparm - Store a parameter.</td></tr><tr><td>net conf getparm - Retrieve the value of a parameter.</td></tr><tr><td>net conf delparm - Delete a parameter.</td></tr><tr><td>net conf getincludes - Show the includes of a share definition.</td></tr><tr><td>net conf setincludes - Set includes for a share.</td></tr><tr><td>net conf delincludes - Delete includes from a share definition.</td></tr></table><p>
-</p><div class="refsect3" lang="en"><a name="id2527370"></a><h4>CONF LIST</h4><p>
+</p><div class="refsect3" lang="en"><a name="id2527217"></a><h4>CONF LIST</h4><p>
 Print the configuration data stored in the registry in a smb.conf-like format to
 standard output.
-</p></div><div class="refsect3" lang="en"><a name="id2527382"></a><h4>CONF IMPORT <em class="replaceable"><code>[--test|-T]</code></em> <em class="replaceable"><code>filename</code></em> <em class="replaceable"><code>[section]</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527229"></a><h4>CONF IMPORT <em class="replaceable"><code>[--test|-T]</code></em> <em class="replaceable"><code>filename</code></em> <em class="replaceable"><code>[section]</code></em></h4><p>
 This command imports configuration from a file in smb.conf format.
 If a section encountered in the input file is present in registry,
 its contents is replaced. Sections of registry configuration that have
@@ -389,30 +387,30 @@
 import command to that specific section. A test mode is enabled by specifying
 the parameter "-T" on the commandline. In test mode, no changes are made to the
 registry, and the resulting configuration is printed to standard output instead.
-</p></div><div class="refsect3" lang="en"><a name="id2527412"></a><h4>CONF LISTSHARES</h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527259"></a><h4>CONF LISTSHARES</h4><p>
 List the names of the shares defined in registry.
-</p></div><div class="refsect3" lang="en"><a name="id2527423"></a><h4>CONF DROP</h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527270"></a><h4>CONF DROP</h4><p>
 Delete the complete configuration data from registry.
-</p></div><div class="refsect3" lang="en"><a name="id2527434"></a><h4>CONF SHOWSHARE <em class="replaceable"><code>sharename</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527281"></a><h4>CONF SHOWSHARE <em class="replaceable"><code>sharename</code></em></h4><p>
 Show the definition of the share or section specified. It is valid to specify
 "global" as sharename to retrieve the global configuration options from
 registry.
-</p></div><div class="refsect3" lang="en"><a name="id2527449"></a><h4>CONF ADDSHARE <em class="replaceable"><code>sharename</code></em> <em class="replaceable"><code>path</code></em> [<em class="replaceable"><code>writeable={y|N}</code></em> [<em class="replaceable"><code>guest_ok={y|N}</code></em> [<em class="replaceable"><code>comment</code></em>]]] </h4><p>Create a new share definition in registry.
+</p></div><div class="refsect3" lang="en"><a name="id2527296"></a><h4>CONF ADDSHARE <em class="replaceable"><code>sharename</code></em> <em class="replaceable"><code>path</code></em> [<em class="replaceable"><code>writeable={y|N}</code></em> [<em class="replaceable"><code>guest_ok={y|N}</code></em> [<em class="replaceable"><code>comment</code></em>]]] </h4><p>Create a new share definition in registry.
 The sharename and path have to be given. The share name may
 <span class="emphasis"><em>not</em></span> be "global". Optionally, values for the very
 common options "writeable", "guest ok" and a "comment" may be specified.
 The same result may be obtained by a sequence of "net conf setparm"
 commands.
-</p></div><div class="refsect3" lang="en"><a name="id2527485"></a><h4>CONF DELSHARE <em class="replaceable"><code>sharename</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527333"></a><h4>CONF DELSHARE <em class="replaceable"><code>sharename</code></em></h4><p>
 Delete a share definition from registry.
-</p></div><div class="refsect3" lang="en"><a name="id2527498"></a><h4>CONF SETPARM <em class="replaceable"><code>section</code></em> <em class="replaceable"><code>parameter</code></em> <em class="replaceable"><code>value</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527346"></a><h4>CONF SETPARM <em class="replaceable"><code>section</code></em> <em class="replaceable"><code>parameter</code></em> <em class="replaceable"><code>value</code></em></h4><p>
 Store a parameter in registry. The section may be global or a sharename.
 The section is created if it does not exist yet.
-</p></div><div class="refsect3" lang="en"><a name="id2527520"></a><h4>CONF GETPARM <em class="replaceable"><code>section</code></em> <em class="replaceable"><code>parameter</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527367"></a><h4>CONF GETPARM <em class="replaceable"><code>section</code></em> <em class="replaceable"><code>parameter</code></em></h4><p>
 Show a parameter stored in registry.
-</p></div><div class="refsect3" lang="en"><a name="id2527537"></a><h4>CONF DELPARM <em class="replaceable"><code>section</code></em> <em class="replaceable"><code>parameter</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527384"></a><h4>CONF DELPARM <em class="replaceable"><code>section</code></em> <em class="replaceable"><code>parameter</code></em></h4><p>
 Delete a parameter stored in registry.
-</p></div><div class="refsect3" lang="en"><a name="id2527553"></a><h4>CONF GETINCLUDES <em class="replaceable"><code>section</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527401"></a><h4>CONF GETINCLUDES <em class="replaceable"><code>section</code></em></h4><p>
 Get the list of includes for the provided section (global or share).
 </p><p>
 Note that due to the nature of the registry database and the nature of include directives,
@@ -428,14 +426,14 @@
 Further note that currently, only files can be included from registry
 configuration. In the future, there will be the ability to include configuration
 data from other registry keys.
-</p></div><div class="refsect3" lang="en"><a name="id2527589"></a><h4>CONF SETINCLUDES <em class="replaceable"><code>section</code></em> [<em class="replaceable"><code>filename</code></em>]+</h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527436"></a><h4>CONF SETINCLUDES <em class="replaceable"><code>section</code></em> [<em class="replaceable"><code>filename</code></em>]+</h4><p>
 Set the list of includes for the provided section (global or share) to the given
 list of one or more filenames. The filenames may contain the usual smb.conf
 macros like %I.
-</p></div><div class="refsect3" lang="en"><a name="id2527609"></a><h4>CONF DELINCLUDES <em class="replaceable"><code>section</code></em></h4><p>
+</p></div><div class="refsect3" lang="en"><a name="id2527456"></a><h4>CONF DELINCLUDES <em class="replaceable"><code>section</code></em></h4><p>
 Delete the list of includes from the provided section (global or share).
-</p></div></div><div class="refsect2" lang="en"><a name="id2527624"></a><h3>HELP [COMMAND]</h3><p>Gives usage information for the specified command.</p></div></div><div class="refsect1" lang="en"><a name="id2527636"></a><h2>VERSION</h2><p>This man page is complete for version 3 of the Samba 
-	suite.</p></div><div class="refsect1" lang="en"><a name="id2527647"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities 
+</p></div></div><div class="refsect2" lang="en"><a name="id2527471"></a><h3>HELP [COMMAND]</h3><p>Gives usage information for the specified command.</p></div></div><div class="refsect1" lang="en"><a name="id2527483"></a><h2>VERSION</h2><p>This man page is complete for version 3 of the Samba 
+	suite.</p></div><div class="refsect1" lang="en"><a name="id2527494"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities 
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar 
 	to the way the Linux kernel is developed.</p><p>The net manpage was written by Jelmer Vernooij.</p></div></div></body></html>

Modified: branches/samba/upstream/docs/htmldocs/manpages/smb.conf.5.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/smb.conf.5.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/smb.conf.5.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -2314,138 +2314,140 @@
 idmap alloc backend (G)
 </h3></div></div></div><a class="indexterm" name="id2537648"></a><a name="IDMAPALLOCBACKEND"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The idmap alloc backend provides a plugin interface for Winbind to use
-	when allocating Unix uids/gids for Windows SIDs. This option refers
-	to the name of the idmap module which will provide the id allocation
-	functionality. Please refer to the man page for each idmap plugin to
-	determine whether or not the module implements the allocation feature.
-	The most common plugins are the tdb (<a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a>)
-	and ldap (<a class="citerefentry" href="idmap_ldap.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ldap</span>(8)</span></a>) libraries.
-	</p><p>
-	This parameter defaults to the value <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap  backend</a> was set to, so by default winbind will allocate Unix IDs
-	from the default backend. You will only need to set this parameter
-	explicitly if you have an external source for Unix IDs, like a central
-	database service somewhere in your company.
-	</p><p>
-	Also refer to the <a class="link" href="smb.conf.5.html#IDMAPALLOCCONFIG">idmap alloc config</a> option.
+	when allocating Unix uids/gids for Windows SIDs.  This option is
+	to be used in conjunction with the <a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a> 
+	parameter and refers to the name of the idmap module which will provide
+	the id allocation functionality.  Please refer to the man page 
+	for each idmap plugin to determine whether or not the module implements
+	the allocation feature.  The most common plugins are the tdb (<a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a>)
+        and ldap (<a class="citerefentry" href="idmap_ldap.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ldap</span>(8)</span></a>) libraries.
+	</p><p>Also refer to the <a class="link" href="smb.conf.5.html#IDMAPALLOCCONFIG">idmap alloc config</a> option.
 	</p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>idmap alloc backend</code></em> = <code class="literal">tdb</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537752"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537745"></a>
 
 idmap alloc config (G)
-</h3></div></div></div><a class="indexterm" name="id2537753"></a><a name="IDMAPALLOCCONFIG"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2537746"></a><a name="IDMAPALLOCCONFIG"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The idmap alloc config prefix provides a means of managing settings
 	for the backend defined by the <a class="link" href="smb.conf.5.html#IDMAPALLOCBACKEND">idmap alloc backend</a> 
 	parameter.  Refer to the man page for each idmap plugin regarding
 	specific configuration details.
-	</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537796"></a>
+	</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537789"></a>
 
 idmap backend (G)
-</h3></div></div></div><a class="indexterm" name="id2537797"></a><a name="IDMAPBACKEND"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2537790"></a><a name="IDMAPBACKEND"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The idmap backend provides a plugin interface for Winbind to use
-	varying backends to store SID/uid/gid mapping tables.
-	</p><p>
-	This option specifies the default backend that is used when no special
-	configuration set by <a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> matches the
-	specific request.
-	</p><p>
-	This default backend also specifies the place where winbind-generated
-	idmap entries will be stored. So it is highly recommended that you
-	specify a writable backend like <a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a> or <a class="citerefentry" href="idmap_ldap.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ldap</span>(8)</span></a> as the idmap backend. The <a class="citerefentry" href="idmap_rid.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_rid</span>(8)</span></a> and <a class="citerefentry" href="idmap_ad.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ad</span>(8)</span></a> backends are not writable and thus will generate
-	unexpected results if set as idmap backend.
-	</p><p>
-	To use the rid and ad backends, please specify them via the
-	<a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> parameter, possibly also for the
-	domain your machine is member of, specified by <a class="link" href="smb.conf.5.html#WORKGROUP">workgroup</a>.
+	varying backends to store SID/uid/gid mapping tables.  This
+	option is mutually exclusive with the newer and more flexible
+	<a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a> parameter. The main difference
+	between the "idmap backend" and the "idmap domains"
+	is that the former only allows one backend for all domains while the
+	latter supports configuring backends on a per domain basis.
 	</p><p>Examples of SID/uid/gid backends include tdb (<a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a>),
 	ldap (<a class="citerefentry" href="idmap_ldap.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ldap</span>(8)</span></a>), rid (<a class="citerefentry" href="idmap_rid.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_rid</span>(8)</span></a>),
-	and ad (<a class="citerefentry" href="idmap_ad.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ad</span>(8)</span></a>).
+	and ad (<a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a>).
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>idmap backend</code></em> = <code class="literal">tdb</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537968"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537884"></a>
 
 idmap cache time (G)
-</h3></div></div></div><a class="indexterm" name="id2537969"></a><a name="IDMAPCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of seconds that Winbind's
+</h3></div></div></div><a class="indexterm" name="id2537885"></a><a name="IDMAPCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of seconds that Winbind's
 	idmap interface will cache positive SID/uid/gid query results.
-	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>idmap cache time</code></em> = <code class="literal">604800 (one week)</code>
+	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>idmap cache time</code></em> = <code class="literal">900</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538011"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2537927"></a>
 
 idmap config (G)
-</h3></div></div></div><a class="indexterm" name="id2538012"></a><a name="IDMAPCONFIG"></a><div class="variablelist"><dl><dt></dt><dd><p>
-	The idmap config prefix provides a means of managing each trusted
-        domain separately. The idmap config prefix should be followed by the
-        name of the domain, a colon, and a setting specific to the chosen
-        backend. There are three options available for all domains:
+</h3></div></div></div><a class="indexterm" name="id2537928"></a><a name="IDMAPCONFIG"></a><div class="variablelist"><dl><dt></dt><dd><p>
+	The idmap config prefix provides a means of managing each domain 
+	defined by the <a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a> option using Samba's
+	parametric option support. The idmap config prefix should be
+	followed by the name of the domain, a colon, and a setting specific to 
+	the chosen backend. There are three options available for all domains:
 	</p><div class="variablelist"><dl><dt><span class="term">backend = backend_name</span></dt><dd><p>
 			Specifies the name of the idmap plugin to use as the 
 			SID/uid/gid backend for this domain.
-		</p></dd><dt><span class="term">range = low - high</span></dt><dd><p>
-		Defines the available matching uid and gid range for which the
-		backend is authoritative.  Note that the range commonly
-		matches the allocation range due to the fact that the same
-		backend will store and retrieve SID/uid/gid mapping entries.
-                </p><p>
-		winbind uses this parameter to find the backend that is
-                authoritative for a unix ID to SID mapping, so it must be set
-                for each individually configured domain, and it must be
-                disjoint from the ranges set via <a class="link" href="smb.conf.5.html#IDMAPUID">idmap                 uid</a> and <a class="link" href="smb.conf.5.html#IDMAPGID">idmap gid</a>.
+		</p></dd><dt><span class="term">default = [yes|no]</span></dt><dd><p>
+			The default domain/backend will be used for searching for 
+			users and groups not belonging to one of the explicitly
+			listed domains (matched by comparing the account SID and the 
+			domain SID).
+		</p></dd><dt><span class="term">readonly = [yes|no]</span></dt><dd><p>
+			Mark the domain as readonly which means that no attempts to
+			allocate a uid or gid (by the <a class="link" href="smb.conf.5.html#IDMAPALLOCBACKEND">idmap alloc     backend</a>) for any user or group in that domain
+			will be attempted.
 		</p></dd></dl></div><p>
-	The following example illustrates how to configure the <a class="citerefentry" href="idmap_ad.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ad</span>(8)</span></a> for the CORP domain and the
-	<a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a> backend for all other
-	domains. This configuration assumes that the admin of CORP assigns
-	unix ids below 1000000 via the SFU extensions, and winbind is supposed
-	to use the next million entries for its own mappings from trusted
-	domains and for local groups for example.
+	The following example illustrates how to configure the <a class="citerefentry" href="idmap_ad.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_ad</span>(8)</span></a> 
+	for the CORP domain and the <a class="citerefentry" href="idmap_tdb.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_tdb</span>(8)</span></a> backend for all other domains. The
+	TRUSTEDDOMAINS string is simply an arbitrary key used to reference the "idmap
+	config" settings and does not represent the actual name of a domain.
+	It is a catchall domain backend for any domain not explicitly listed.
 	</p><pre class="programlisting">
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	idmap domains = CORP TRUSTEDDOMAINS
 
-	idmap config CORP : backend  = ad
-	idmap config CORP : range = 1000-999999
-	</pre><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538143"></a>
+	idmap config CORP:backend  = ad
+	idmap config CORP:readonly = yes
 
+	idmap config TRUSTEDDOMAINS:backend = tdb
+	idmap config TRUSTEDDOMAINS:default = yes
+	idmap config TRUSTEDDOMAINS:range   = 1000 - 9999
+	</pre><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538063"></a>
+
+idmap domains (G)
+</h3></div></div></div><a class="indexterm" name="id2538064"></a><a name="IDMAPDOMAINS"></a><div class="variablelist"><dl><dt></dt><dd><p>
+	The idmap domains option defines a list of Windows domains which will each
+	have a separately configured backend for managing Winbind's SID/uid/gid
+	tables.  This parameter is mutually exclusive with the older <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a> option.
+	</p><p>
+	Values consist of the short domain name for Winbind's primary or collection
+	of trusted domains.  You may also use an arbitrary string to represent a catchall
+	domain backend for any domain not explicitly listed.
+	</p><p>
+	Refer to the <a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> for details about
+	managing the SID/uid/gid backend for each domain.
+	</p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>idmap domains</code></em> = <code class="literal">default AD CORP</code>
+</em></span>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538148"></a>
+
 <a name="WINBINDGID"></a>winbind gid
-</h3></div></div></div><a class="indexterm" name="id2538144"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#IDMAPGID">idmap gid</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538174"></a>
+</h3></div></div></div><a class="indexterm" name="id2538149"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#IDMAPGID">idmap gid</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538179"></a>
 
 idmap gid (G)
-</h3></div></div></div><a class="indexterm" name="id2538175"></a><a name="IDMAPGID"></a><div class="variablelist"><dl><dt></dt><dd><p>The idmap gid parameter specifies the range of group ids 
+</h3></div></div></div><a class="indexterm" name="id2538180"></a><a name="IDMAPGID"></a><div class="variablelist"><dl><dt></dt><dd><p>The idmap gid parameter specifies the range of group ids 
 	that are allocated for the purpose of mapping UNX groups to NT group 
 	SIDs. This range of group ids should have no 
 	existing local or NIS groups within it as strange conflicts can 
-	occur otherwise.</p><p>See also the <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a>, and
-	<a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> options.
+	occur otherwise.</p><p>See also the <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a>, <a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a>, and <a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> options.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>idmap gid</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>idmap gid</code></em> = <code class="literal">10000-20000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538261"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538278"></a>
 
 idmap negative cache time (G)
-</h3></div></div></div><a class="indexterm" name="id2538262"></a><a name="IDMAPNEGATIVECACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of seconds that Winbind's
+</h3></div></div></div><a class="indexterm" name="id2538279"></a><a name="IDMAPNEGATIVECACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of seconds that Winbind's
 	idmap interface will cache negative SID/uid/gid query results.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>idmap negative cache time</code></em> = <code class="literal">120</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538304"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538321"></a>
 
 <a name="WINBINDUID"></a>winbind uid
-</h3></div></div></div><a class="indexterm" name="id2538306"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#IDMAPUID">idmap uid</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538335"></a>
+</h3></div></div></div><a class="indexterm" name="id2538322"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#IDMAPUID">idmap uid</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538353"></a>
 
 idmap uid (G)
-</h3></div></div></div><a class="indexterm" name="id2538336"></a><a name="IDMAPUID"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2538354"></a><a name="IDMAPUID"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The idmap uid parameter specifies the range of user ids that are 
 	allocated for use in mapping UNIX users to NT user SIDs. This 
 	range of ids should have no existing local
-	or NIS users within it as strange conflicts can occur otherwise.</p><p>See also the <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a> and
-	<a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> options.
+	or NIS users within it as strange conflicts can occur otherwise.</p><p>See also the <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a>, <a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a>, and <a class="link" href="smb.conf.5.html#IDMAPCONFIG">idmap config</a> options.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>idmap uid</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>idmap uid</code></em> = <code class="literal">10000-20000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538421"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538450"></a>
 
 include (G)
-</h3></div></div></div><a class="indexterm" name="id2538422"></a><a name="INCLUDE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2538451"></a><a name="INCLUDE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This allows you to include one config file inside another.  The file is included literally, as though typed 
 	in place.
 	</p><p>
@@ -2463,10 +2465,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>include</code></em> = <code class="literal">/usr/local/samba/lib/admin_smb.conf</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538522"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538551"></a>
 
 inherit acls (S)
-</h3></div></div></div><a class="indexterm" name="id2538523"></a><a name="INHERITACLS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter can be used to ensure that if default acls
+</h3></div></div></div><a class="indexterm" name="id2538552"></a><a name="INHERITACLS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter can be used to ensure that if default acls
     exist on parent directories, they are always honored when creating a
     new file or subdirectory in these parent directories. The default 
     behavior is to use the unix mode specified when creating the directory. 
@@ -2474,10 +2476,10 @@
     default directory acls are propagated.
 </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>inherit acls</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538569"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538598"></a>
 
 inherit owner (S)
-</h3></div></div></div><a class="indexterm" name="id2538570"></a><a name="INHERITOWNER"></a><div class="variablelist"><dl><dt></dt><dd><p>The ownership of new files and directories 
+</h3></div></div></div><a class="indexterm" name="id2538599"></a><a name="INHERITOWNER"></a><div class="variablelist"><dl><dt></dt><dd><p>The ownership of new files and directories 
 	is normally governed by effective uid of the connected user.
 	This option allows the Samba administrator to specify that
 	the ownership for new files and directories should be controlled
@@ -2486,10 +2488,10 @@
 	delete them and to ensure that newly create files in a user's
 	roaming profile directory are actually owner by the user.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>inherit owner</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538622"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538651"></a>
 
 inherit permissions (S)
-</h3></div></div></div><a class="indexterm" name="id2538623"></a><a name="INHERITPERMISSIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2538652"></a><a name="INHERITPERMISSIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The permissions on new files and directories are normally governed by <a class="link" href="smb.conf.5.html#CREATEMASK">create mask</a>,
 	<a class="link" href="smb.conf.5.html#DIRECTORYMASK">directory mask</a>, <a class="link" href="smb.conf.5.html#FORCECREATEMODE">force create mode</a> and <a class="link" href="smb.conf.5.html#FORCEDIRECTORYMODE">force directory mode</a> but the boolean inherit permissions parameter overrides this.
 	</p><p>New directories inherit the mode of the parent directory,
@@ -2501,33 +2503,10 @@
     many users, perhaps several thousand, to allow a single [homes] 
     share to be used flexibly by each user.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>inherit permissions</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538770"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538799"></a>
 
-init logon delayed hosts (G)
-</h3></div></div></div><a class="indexterm" name="id2538771"></a><a name="INITLOGONDELAYEDHOSTS"></a><div class="variablelist"><dl><dt></dt><dd><p>
-	This parameter takes a list of host names, addresses or networks for
-	which the initial samlogon reply should be delayed (so other DCs get
-	preferred by XP workstations if there are any).
-	</p><p>
-	The length of the delay can be specified with the
-	<a class="link" href="smb.conf.5.html#INITLOGONDELAY">init logon delay</a> parameter.
-	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>init logon delayed hosts</code></em> = <code class="literal"></code>
-</em></span>
-</p><p>Example: <span class="emphasis"><em><em class="parameter"><code>init logon delayed hosts</code></em> = <code class="literal">150.203.5. myhost.mynet.de</code>
-</em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538847"></a>
-
-init logon delay (G)
-</h3></div></div></div><a class="indexterm" name="id2538848"></a><a name="INITLOGONDELAY"></a><div class="variablelist"><dl><dt></dt><dd><p>
-	This parameter specifies a delay in milliseconds for the hosts configured
-	for delayed initial samlogon with
-	<a class="link" href="smb.conf.5.html#INITLOGONDELAYEDHOSTS">init logon delayed hosts</a>.
-	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>init logon delay</code></em> = <code class="literal">100</code>
-</em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538901"></a>
-
 interfaces (G)
-</h3></div></div></div><a class="indexterm" name="id2538902"></a><a name="INTERFACES"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to override the default 
+</h3></div></div></div><a class="indexterm" name="id2538800"></a><a name="INTERFACES"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to override the default 
 	network interfaces list that Samba will use for browsing, name 
 	registration and other NetBIOS over TCP/IP (NBT) traffic. By default Samba will query
 	the kernel for the list of all active interfaces and use any 
@@ -2551,10 +2530,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>interfaces</code></em> = <code class="literal">eth0 192.168.2.10/24 192.168.3.10/255.255.255.0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539018"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2538915"></a>
 
 invalid users (S)
-</h3></div></div></div><a class="indexterm" name="id2539019"></a><a name="INVALIDUSERS"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of users that should not be allowed 
+</h3></div></div></div><a class="indexterm" name="id2538916"></a><a name="INVALIDUSERS"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of users that should not be allowed 
     to login to this service. This is really a <span class="emphasis"><em>paranoid</em></span> 
     check to absolutely ensure an improper setting does not breach 
     your security.</p><p>A name starting with a '@' is interpreted as an NIS 
@@ -2574,10 +2553,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>invalid users</code></em> = <code class="literal">root fred admin @wheel</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539132"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539029"></a>
 
 iprint server (G)
-</h3></div></div></div><a class="indexterm" name="id2539133"></a><a name="IPRINTSERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2539030"></a><a name="IPRINTSERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This parameter is only applicable if <a class="link" href="smb.conf.5.html#PRINTING">printing</a> is set to <code class="constant">iprint</code>.
     </p><p>
    If set, this option overrides the ServerName option in the CUPS <code class="filename">client.conf</code>. This is 
@@ -2586,10 +2565,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>iprint server</code></em> = <code class="literal">MYCUPSSERVER</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539218"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539115"></a>
 
 keepalive (G)
-</h3></div></div></div><a class="indexterm" name="id2539220"></a><a name="KEEPALIVE"></a><div class="variablelist"><dl><dt></dt><dd><p>The value of the parameter (an integer) represents 
+</h3></div></div></div><a class="indexterm" name="id2539116"></a><a name="KEEPALIVE"></a><div class="variablelist"><dl><dt></dt><dd><p>The value of the parameter (an integer) represents 
     the number of seconds between <em class="parameter"><code>keepalive</code></em> 
     packets. If this parameter is zero, no keepalive packets will be 
     sent. Keepalive packets, if sent, allow the server to tell whether 
@@ -2599,20 +2578,20 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>keepalive</code></em> = <code class="literal">600</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539306"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539202"></a>
 
 kernel change notify (S)
-</h3></div></div></div><a class="indexterm" name="id2539307"></a><a name="KERNELCHANGENOTIFY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies whether Samba should ask the 
+</h3></div></div></div><a class="indexterm" name="id2539203"></a><a name="KERNELCHANGENOTIFY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies whether Samba should ask the 
 	kernel for change notifications in directories so that
 	SMB clients can refresh whenever the data on the server changes.
 	</p><p>This parameter is only used when your kernel supports 
 	change notification to user programs using the inotify interface.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>kernel change notify</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539355"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539252"></a>
 
 kernel oplocks (G)
-</h3></div></div></div><a class="indexterm" name="id2539356"></a><a name="KERNELOPLOCKS"></a><div class="variablelist"><dl><dt></dt><dd><p>For UNIXes that support kernel based <a class="link" href="smb.conf.5.html#OPLOCKS">oplocks</a>
+</h3></div></div></div><a class="indexterm" name="id2539253"></a><a name="KERNELOPLOCKS"></a><div class="variablelist"><dl><dt></dt><dd><p>For UNIXes that support kernel based <a class="link" href="smb.conf.5.html#OPLOCKS">oplocks</a>
 	(currently only IRIX and the Linux 2.4 kernel), this parameter 
 	allows the use of them to be turned on or off.</p><p>Kernel oplocks support allows Samba <em class="parameter"><code>oplocks
 	</code></em> to be broken whenever a local UNIX process or NFS operation 
@@ -2622,10 +2601,10 @@
 	to a no-op on systems that no not have the necessary kernel support.
 	You should never need to touch this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>kernel oplocks</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539443"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539339"></a>
 
 lanman auth (G)
-</h3></div></div></div><a class="indexterm" name="id2539444"></a><a name="LANMANAUTH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines whether or not <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to
+</h3></div></div></div><a class="indexterm" name="id2539340"></a><a name="LANMANAUTH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines whether or not <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to
     authenticate users or permit password changes
     using the LANMAN password hash. If disabled, only clients which support NT 
     password hashes (e.g. Windows NT/2000 clients, smbclient, but not 
@@ -2642,10 +2621,10 @@
     permited.  Not all clients support NTLMv2, and most will require
     special configuration to use it.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>lanman auth</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539535"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539432"></a>
 
 large readwrite (G)
-</h3></div></div></div><a class="indexterm" name="id2539536"></a><a name="LARGEREADWRITE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines whether or not
+</h3></div></div></div><a class="indexterm" name="id2539433"></a><a name="LARGEREADWRITE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines whether or not
     <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> supports the new 64k
     streaming read and write varient SMB requests introduced with
     Windows 2000. Note that due to Windows 2000 client redirector bugs
@@ -2654,10 +2633,10 @@
     performance by 10% with Windows 2000 clients. Defaults to on. Not as
 	tested as some other Samba code paths.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>large readwrite</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539598"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539488"></a>
 
 ldap admin dn (G)
-</h3></div></div></div><a class="indexterm" name="id2539599"></a><a name="LDAPADMINDN"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2539489"></a><a name="LDAPADMINDN"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The <a class="link" href="smb.conf.5.html#LDAPADMINDN">ldap admin dn</a> defines the Distinguished  Name (DN) name used by Samba to contact
 	the ldap server when retreiving  user account information. The <a class="link" href="smb.conf.5.html#LDAPADMINDN">ldap admin dn</a> is used
 	in conjunction with the admin dn password stored in the <code class="filename">private/secrets.tdb</code>
@@ -2665,10 +2644,10 @@
 	man page for more information on how  to accomplish this.
 	</p><p>
 	The <a class="link" href="smb.conf.5.html#LDAPADMINDN">ldap admin dn</a> requires a fully specified DN. The <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap  suffix</a> is not appended to the <a class="link" href="smb.conf.5.html#LDAPADMINDN">ldap admin dn</a>.
-	</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539707"></a>
+	</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539597"></a>
 
 ldap connection timeout (G)
-</h3></div></div></div><a class="indexterm" name="id2539708"></a><a name="LDAPCONNECTIONTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2539598"></a><a name="LDAPCONNECTIONTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter tells the LDAP library calls which timeout in seconds
 	they should honor during initial connection establishments to LDAP servers.
 	It is very useful in failover scenarios in particular. If one or more LDAP
@@ -2680,10 +2659,10 @@
 	and not establishing an initial connection.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap connection timeout</code></em> = <code class="literal">2</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539772"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539662"></a>
 
 ldap debug level (G)
-</h3></div></div></div><a class="indexterm" name="id2539773"></a><a name="LDAPDEBUGLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2539663"></a><a name="LDAPDEBUGLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
 		This parameter controls the debug level of the LDAP library
 		calls. In the case of OpenLDAP, it is the same
 		bit-field as understood by the server and documented in the
@@ -2700,10 +2679,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap debug level</code></em> = <code class="literal">1</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539860"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539750"></a>
 
 ldap debug threshold (G)
-</h3></div></div></div><a class="indexterm" name="id2539861"></a><a name="LDAPDEBUGTHRESHOLD"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2539751"></a><a name="LDAPDEBUGTHRESHOLD"></a><div class="variablelist"><dl><dt></dt><dd><p>
 		This parameter controls the Samba debug level at which
 		the ldap library debug output is
 		printed in the Samba logs. See the description of
@@ -2712,28 +2691,28 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap debug threshold</code></em> = <code class="literal">5</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539927"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539817"></a>
 
 ldap delete dn (G)
-</h3></div></div></div><a class="indexterm" name="id2539928"></a><a name="LDAPDELETEDN"></a><div class="variablelist"><dl><dt></dt><dd><p> This parameter specifies whether a delete
+</h3></div></div></div><a class="indexterm" name="id2539818"></a><a name="LDAPDELETEDN"></a><div class="variablelist"><dl><dt></dt><dd><p> This parameter specifies whether a delete
 	operation in the ldapsam deletes the complete entry or only the attributes
 	specific to Samba.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap delete dn</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539971"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539860"></a>
 
 ldap group suffix (G)
-</h3></div></div></div><a class="indexterm" name="id2539972"></a><a name="LDAPGROUPSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the suffix that is 
+</h3></div></div></div><a class="indexterm" name="id2539861"></a><a name="LDAPGROUPSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the suffix that is 
 	used for groups when these are added to the LDAP directory.
 	If this parameter is unset, the value of <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> will be used instead.  The suffix string is pre-pended to the
         <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> string so use a partial DN.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap group suffix</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap group suffix</code></em> = <code class="literal">ou=Groups</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540054"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2539944"></a>
 
 ldap idmap suffix (G)
-</h3></div></div></div><a class="indexterm" name="id2540055"></a><a name="LDAPIDMAPSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2539945"></a><a name="LDAPIDMAPSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameters specifies the suffix that is used when storing idmap mappings. If this parameter 
 	is unset, the value of <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> will be used instead.  The suffix 
 	string is pre-pended to the <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> string so use a partial DN.
@@ -2741,10 +2720,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap idmap suffix</code></em> = <code class="literal">ou=Idmap</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540136"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540026"></a>
 
 ldap machine suffix (G)
-</h3></div></div></div><a class="indexterm" name="id2540138"></a><a name="LDAPMACHINESUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540027"></a><a name="LDAPMACHINESUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	It specifies where machines should be added to the ldap tree.  If this parameter is unset, the value of
 	<a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> will be used instead.  The suffix string is pre-pended to the
 	<a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> string so use a partial DN.
@@ -2752,10 +2731,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap machine suffix</code></em> = <code class="literal">ou=Computers</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540218"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540108"></a>
 
 ldap passwd sync (G)
-</h3></div></div></div><a class="indexterm" name="id2540219"></a><a name="LDAPPASSWDSYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540109"></a><a name="LDAPPASSWDSYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This option is used to define whether or not Samba should sync the LDAP password with the NT
 	and LM hashes for normal accounts (NOT for workstation, server or domain trusts) on a password
 	change via SAMBA.  
@@ -2766,10 +2745,10 @@
 			LM passwords and update the pwdLastSet time.</p></li><li><p><em class="parameter"><code>Only</code></em> = Only update 
 			the LDAP password and let the LDAP server do the rest.</p></li></ul></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap passwd sync</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540319"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540208"></a>
 
 ldap replication sleep (G)
-</h3></div></div></div><a class="indexterm" name="id2540320"></a><a name="LDAPREPLICATIONSLEEP"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540210"></a><a name="LDAPREPLICATIONSLEEP"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	When Samba is asked to write to a read-only LDAP replica, we are redirected to talk to the read-write master server.
 	This server then replicates our changes back to the 'local' server, however the replication might take some seconds, 
 	especially over slow links.  Certain client activities, particularly domain joins, can become confused by the 'success' 
@@ -2782,10 +2761,10 @@
 	The value is specified in milliseconds, the maximum value is 5000 (5 seconds).
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap replication sleep</code></em> = <code class="literal">1000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540382"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540272"></a>
 
 ldapsam:editposix (G)
-</h3></div></div></div><a class="indexterm" name="id2540383"></a><a name="LDAPSAM:EDITPOSIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540273"></a><a name="LDAPSAM:EDITPOSIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	Editposix is an option that leverages ldapsam:trusted to make it simpler to manage a domain controller
 	eliminating the need to set up custom scripts to add and manage the posix users and groups. This option
 	will instead directly manipulate the ldap tree to create, remove and modify user and group entries.
@@ -2863,10 +2842,10 @@
 	</pre><p>
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldapsam:editposix</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540508"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540409"></a>
 
 ldapsam:trusted (G)
-</h3></div></div></div><a class="indexterm" name="id2540509"></a><a name="LDAPSAM:TRUSTED"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540410"></a><a name="LDAPSAM:TRUSTED"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	By default, Samba as a Domain Controller with an LDAP backend needs to use the Unix-style NSS subsystem to
 	access user and group information. Due to the way Unix stores user information in /etc/passwd and /etc/group
 	this inevitably leads to inefficiencies. One important question a user needs to know is the list of groups he
@@ -2884,10 +2863,10 @@
 	is easily achieved.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldapsam:trusted</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540597"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540498"></a>
 
 ldap ssl (G)
-</h3></div></div></div><a class="indexterm" name="id2540598"></a><a name="LDAPSSL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option is used to define whether or not Samba should
+</h3></div></div></div><a class="indexterm" name="id2540499"></a><a name="LDAPSSL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option is used to define whether or not Samba should
 	use SSL when connecting to the ldap server
 	This is <span class="emphasis"><em>NOT</em></span> related to
 	Samba's previous SSL support which was enabled by specifying the 
@@ -2901,10 +2880,10 @@
 		to configure. See <a class="link" href="smb.conf.5.html#PASSDBBACKEND">passdb backend</a></p>.
 		</li></ul></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap ssl</code></em> = <code class="literal">start_tls</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540736"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540637"></a>
 
 ldap suffix (G)
-</h3></div></div></div><a class="indexterm" name="id2540738"></a><a name="LDAPSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies the base for all ldap suffixes and for storing the sambaDomain object.</p><p>
+</h3></div></div></div><a class="indexterm" name="id2540638"></a><a name="LDAPSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies the base for all ldap suffixes and for storing the sambaDomain object.</p><p>
 	The ldap suffix will be appended to the values specified for the <a class="link" href="smb.conf.5.html#LDAPUSERSUFFIX">ldap user suffix</a>,
 	 <a class="link" href="smb.conf.5.html#LDAPGROUPSUFFIX">ldap group suffix</a>, <a class="link" href="smb.conf.5.html#LDAPMACHINESUFFIX">ldap machine suffix</a>, and the
 	 <a class="link" href="smb.conf.5.html#LDAPIDMAPSUFFIX">ldap idmap suffix</a>. Each of these should be given only a DN relative to the
@@ -2913,19 +2892,19 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap suffix</code></em> = <code class="literal">dc=samba,dc=org</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540859"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540760"></a>
 
 ldap timeout (G)
-</h3></div></div></div><a class="indexterm" name="id2540860"></a><a name="LDAPTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540761"></a><a name="LDAPTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	When Samba connects to an ldap server that server may be down or unreachable. To prevent Samba from hanging whilst
 	waiting for the connection this parameter specifies in seconds how long Samba should wait before failing the 
 	connect. The default is to only wait fifteen seconds for the ldap server to respond to the connect request.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ldap timeout</code></em> = <code class="literal">15</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540905"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540806"></a>
 
 ldap user suffix (G)
-</h3></div></div></div><a class="indexterm" name="id2540906"></a><a name="LDAPUSERSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2540807"></a><a name="LDAPUSERSUFFIX"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies where users are added to the tree. If this parameter is unset, 
 	the value of <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> will be used instead.  The suffix 
 	string is pre-pended to the  <a class="link" href="smb.conf.5.html#LDAPSUFFIX">ldap suffix</a> string so use a partial DN.
@@ -2933,10 +2912,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>ldap user suffix</code></em> = <code class="literal">ou=people</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540987"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540888"></a>
 
 level2 oplocks (S)
-</h3></div></div></div><a class="indexterm" name="id2540988"></a><a name="LEVEL2OPLOCKS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether Samba supports
+</h3></div></div></div><a class="indexterm" name="id2540889"></a><a name="LEVEL2OPLOCKS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether Samba supports
 	level2 (read-only) oplocks on a share.</p><p>Level2, or read-only oplocks allow Windows NT clients 
 	that have an oplock on a file to downgrade from a read-write oplock 
 	to a read-only oplock once a second client opens the file (instead 
@@ -2956,10 +2935,10 @@
 	parameter must be set to <code class="constant">yes</code> on this share in order for 
 	this parameter to have any effect.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>level2 oplocks</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541094"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2540995"></a>
 
 lm announce (G)
-</h3></div></div></div><a class="indexterm" name="id2541095"></a><a name="LMANNOUNCE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> will produce Lanman announce 
+</h3></div></div></div><a class="indexterm" name="id2540996"></a><a name="LMANNOUNCE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> will produce Lanman announce 
 	broadcasts that are needed by OS/2 clients in order for them to see 
 	the Samba server in their browse list. This parameter can have three 
 	values, <code class="constant">yes</code>, <code class="constant">no</code>, or
@@ -2975,10 +2954,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lm announce</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541216"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541117"></a>
 
 lm interval (G)
-</h3></div></div></div><a class="indexterm" name="id2541217"></a><a name="LMINTERVAL"></a><div class="variablelist"><dl><dt></dt><dd><p>If Samba is set to produce Lanman announce 
+</h3></div></div></div><a class="indexterm" name="id2541118"></a><a name="LMINTERVAL"></a><div class="variablelist"><dl><dt></dt><dd><p>If Samba is set to produce Lanman announce 
 	broadcasts needed by OS/2 clients (see the 
 		<a class="link" href="smb.conf.5.html#LMANNOUNCE">lm announce</a> parameter) then this 
 	parameter defines the frequency in seconds with which they will be 
@@ -2988,18 +2967,18 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lm interval</code></em> = <code class="literal">120</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541301"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541201"></a>
 
 load printers (G)
-</h3></div></div></div><a class="indexterm" name="id2541302"></a><a name="LOADPRINTERS"></a><div class="variablelist"><dl><dt></dt><dd><p>A boolean variable that controls whether all 
+</h3></div></div></div><a class="indexterm" name="id2541202"></a><a name="LOADPRINTERS"></a><div class="variablelist"><dl><dt></dt><dd><p>A boolean variable that controls whether all 
     printers in the printcap will be loaded for browsing by default. 
     See the <a class="link" href="smb.conf.5.html#PRINTERS">printers</a> section for 
     more details.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>load printers</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541357"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541258"></a>
 
 local master (G)
-</h3></div></div></div><a class="indexterm" name="id2541358"></a><a name="LOCALMASTER"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> to try and become a local master browser 
+</h3></div></div></div><a class="indexterm" name="id2541259"></a><a name="LOCALMASTER"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> to try and become a local master browser 
 	on a subnet. If set to <code class="constant">no</code> then <code class="literal">
 	nmbd</code> will not attempt to become a local master browser 
 	on a subnet and will also lose in all browsing elections. By
@@ -3009,13 +2988,13 @@
 	will <span class="emphasis"><em>participate</em></span> in elections for local master browser.</p><p>Setting this value to <code class="constant">no</code> will cause <code class="literal">nmbd</code> <span class="emphasis"><em>never</em></span> to become a local 
 master browser.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>local master</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541458"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541358"></a>
 
 <a name="LOCKDIR"></a>lock dir
-</h3></div></div></div><a class="indexterm" name="id2541459"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#LOCKDIRECTORY">lock directory</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541490"></a>
+</h3></div></div></div><a class="indexterm" name="id2541359"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#LOCKDIRECTORY">lock directory</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541390"></a>
 
 lock directory (G)
-</h3></div></div></div><a class="indexterm" name="id2541491"></a><a name="LOCKDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies the directory where lock 
+</h3></div></div></div><a class="indexterm" name="id2541391"></a><a name="LOCKDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies the directory where lock 
 	files will be placed.  The lock files are used to implement the 
 	<a class="link" href="smb.conf.5.html#MAXCONNECTIONS">max connections</a> option.
 	</p><p>
@@ -3025,10 +3004,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lock directory</code></em> = <code class="literal">/var/run/samba/locks</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541568"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541468"></a>
 
 locking (S)
-</h3></div></div></div><a class="indexterm" name="id2541569"></a><a name="LOCKING"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls whether or not locking will be 
+</h3></div></div></div><a class="indexterm" name="id2541470"></a><a name="LOCKING"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls whether or not locking will be 
 	performed by the server in response to lock requests from the 
 	client.</p><p>If <code class="literal">locking = no</code>, all lock and unlock 
 	requests will appear to succeed and all lock queries will report 
@@ -3038,18 +3017,18 @@
 	CDROM drives), although setting this parameter of <code class="constant">no</code> 
 	is not really recommended even in this case.</p><p>Be careful about disabling locking either globally or in a 
 	specific service, as lack of locking may result in data corruption. 
-	You should never need to set this parameter.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541644"></a>
+	You should never need to set this parameter.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541544"></a>
 
 lock spin count (G)
-</h3></div></div></div><a class="indexterm" name="id2541645"></a><a name="LOCKSPINCOUNT"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter has been made inoperative in Samba 3.0.24.
+</h3></div></div></div><a class="indexterm" name="id2541545"></a><a name="LOCKSPINCOUNT"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter has been made inoperative in Samba 3.0.24.
 	The functionality it contolled is now controlled by the parameter
 	<a class="link" href="smb.conf.5.html#LOCKSPINTIME">lock spin time</a>.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>lock spin count</code></em> = <code class="literal">0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541700"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541600"></a>
 
 lock spin time (G)
-</h3></div></div></div><a class="indexterm" name="id2541701"></a><a name="LOCKSPINTIME"></a><div class="variablelist"><dl><dt></dt><dd><p>The time in microseconds that smbd should 
+</h3></div></div></div><a class="indexterm" name="id2541601"></a><a name="LOCKSPINTIME"></a><div class="variablelist"><dl><dt></dt><dd><p>The time in microseconds that smbd should 
 	keep waiting to see if a failed lock request can
 	be granted. This parameter has changed in default
 	value from Samba 3.0.23 from 10 to 200. The associated
@@ -3057,22 +3036,22 @@
 	no longer used in Samba 3.0.24. You should not need
 	to change the value of this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>lock spin time</code></em> = <code class="literal">200</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541759"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541659"></a>
 
 log file (G)
-</h3></div></div></div><a class="indexterm" name="id2541760"></a><a name="LOGFILE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2541660"></a><a name="LOGFILE"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This option allows you to override the name of the Samba log file (also known as the debug file).
     </p><p>
     This option takes the standard substitutions, allowing you to have separate log files for each user or machine.
     </p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>log file</code></em> = <code class="literal">/usr/local/samba/var/log.%m</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541811"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541711"></a>
 
 <a name="DEBUGLEVEL"></a>debuglevel
-</h3></div></div></div><a class="indexterm" name="id2541812"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#LOGLEVEL">log level</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541842"></a>
+</h3></div></div></div><a class="indexterm" name="id2541712"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#LOGLEVEL">log level</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541742"></a>
 
 log level (G)
-</h3></div></div></div><a class="indexterm" name="id2541843"></a><a name="LOGLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2541743"></a><a name="LOGLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
     The value of the parameter (a astring) allows the debug level (logging level) to be specified in the 
     <code class="filename">smb.conf</code> file. 
     </p><p>This parameter has been extended since the 2.2.x 
@@ -3083,10 +3062,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>log level</code></em> = <code class="literal">3 passdb:5 auth:10 winbind:2</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542074"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2541975"></a>
 
 logon drive (G)
-</h3></div></div></div><a class="indexterm" name="id2542076"></a><a name="LOGONDRIVE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2541976"></a><a name="LOGONDRIVE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies the local path to which the home directory will be
 	connected (see <a class="link" href="smb.conf.5.html#LOGONHOME">logon home</a>) and is only used by NT
 	Workstations.
@@ -3096,10 +3075,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>logon drive</code></em> = <code class="literal">h:</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542149"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542049"></a>
 
 logon home (G)
-</h3></div></div></div><a class="indexterm" name="id2542150"></a><a name="LOGONHOME"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2542050"></a><a name="LOGONHOME"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies the home directory location when a Win95/98 or NT Workstation logs into a Samba PDC.  
 	It allows you to do
 	</p><p>
@@ -3130,10 +3109,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>logon home</code></em> = <code class="literal">\\remote_smb_server\%U</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542314"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542214"></a>
 
 logon path (G)
-</h3></div></div></div><a class="indexterm" name="id2542315"></a><a name="LOGONPATH"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2542215"></a><a name="LOGONPATH"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies the directory where roaming profiles (Desktop, NTuser.dat, etc) are 
 	stored.  Contrary to previous versions of these manual pages, it has nothing to do with Win 9X roaming
 	profiles.  To find out how to handle roaming profiles for Win 9X system, see the
@@ -3177,10 +3156,10 @@
 </pre><p>
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>logon path</code></em> = <code class="literal">\\%N\%U\profile</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542482"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542382"></a>
 
 logon script (G)
-</h3></div></div></div><a class="indexterm" name="id2542484"></a><a name="LOGONSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2542383"></a><a name="LOGONSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies the batch file (<code class="filename">.bat</code>) or NT command file
 	(<code class="filename">.cmd</code>) to be downloaded and run on a machine when a user successfully logs in.  The file
 	must contain the DOS style CR/LF line endings. Using a DOS-style editor to create the file is recommended.
@@ -3211,10 +3190,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>logon script</code></em> = <code class="literal">scripts\%U.bat</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542652"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542552"></a>
 
 lppause command (S)
-</h3></div></div></div><a class="indexterm" name="id2542653"></a><a name="LPPAUSECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
+</h3></div></div></div><a class="indexterm" name="id2542553"></a><a name="LPPAUSECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
     executed on the server host in order to stop printing or spooling 
     a specific print job.</p><p>This command should be a program or script which takes 
     a printer name and job number to pause the print job. One way 
@@ -3238,10 +3217,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lppause command</code></em> = <code class="literal">/usr/bin/lpalt %p-%j -p0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542800"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542699"></a>
 
 lpq cache time (G)
-</h3></div></div></div><a class="indexterm" name="id2542801"></a><a name="LPQCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls how long lpq info will be cached 
+</h3></div></div></div><a class="indexterm" name="id2542700"></a><a name="LPQCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls how long lpq info will be cached 
 	for to prevent the <code class="literal">lpq</code> command being called too 
 	often. A separate cache is kept for each variation of the <code class="literal">
 	lpq</code> command used by the system, so if you use different 
@@ -3254,10 +3233,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lpq cache time</code></em> = <code class="literal">10</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542919"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542819"></a>
 
 lpq command (S)
-</h3></div></div></div><a class="indexterm" name="id2542920"></a><a name="LPQCOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
+</h3></div></div></div><a class="indexterm" name="id2542820"></a><a name="LPQCOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
     executed on the server host in order to obtain <code class="literal">lpq
     </code>-style printer status information.</p><p>This command should be a program or script which 
     takes a printer name as its only parameter and outputs printer 
@@ -3279,10 +3258,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lpq command</code></em> = <code class="literal">/usr/bin/lpq -P%p</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543045"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2542945"></a>
 
 lpresume command (S)
-</h3></div></div></div><a class="indexterm" name="id2543046"></a><a name="LPRESUMECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
+</h3></div></div></div><a class="indexterm" name="id2542946"></a><a name="LPRESUMECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
     executed on the server host in order to restart or continue 
     printing or spooling a specific print job.</p><p>This command should be a program or script which takes 
     a printer name and job number to resume the print job. See 
@@ -3295,10 +3274,10 @@
     parameter is <code class="constant">SYSV</code>, in which case the default is:</p><p><code class="literal">lp -i %p-%j -H resume</code></p><p>or if the value of the <em class="parameter"><code>printing</code></em> parameter 
     is <code class="constant">SOFTQ</code>, then the default is:</p><p><code class="literal">qstat -s -j%j -r</code></p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>lpresume command</code></em> = <code class="literal">/usr/bin/lpalt %p-%j -p2</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543198"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543098"></a>
 
 lprm command (S)
-</h3></div></div></div><a class="indexterm" name="id2543199"></a><a name="LPRMCOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
+</h3></div></div></div><a class="indexterm" name="id2543099"></a><a name="LPRMCOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
     executed on the server host in order to delete a print job.</p><p>This command should be a program or script which takes 
     a printer name and job number, and deletes the print job.</p><p>If a <em class="parameter"><code>%p</code></em> is given then the printer name 
     is put in its place. A <em class="parameter"><code>%j</code></em> is replaced with 
@@ -3315,10 +3294,10 @@
 </pre><p>
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>lprm command</code></em> = <code class="literal"> determined by printing parameter</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543285"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543185"></a>
 
 machine password timeout (G)
-</h3></div></div></div><a class="indexterm" name="id2543286"></a><a name="MACHINEPASSWORDTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2543186"></a><a name="MACHINEPASSWORDTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	If a Samba server is a member of a Windows NT Domain (see the <a class="link" href="smb.conf.5.html#SECURITY">security = domain</a> parameter) then periodically a running smbd process will try and change
 	the MACHINE ACCOUNT PASSWORD stored in the TDB called <code class="filename">private/secrets.tdb
 	</code>.  This parameter specifies how often this password will be changed, in seconds. The default is one
@@ -3328,10 +3307,10 @@
 	and the <a class="link" href="smb.conf.5.html#SECURITY">security = domain</a> parameter.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>machine password timeout</code></em> = <code class="literal">604800</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543372"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543272"></a>
 
 magic output (S)
-</h3></div></div></div><a class="indexterm" name="id2543374"></a><a name="MAGICOUTPUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2543273"></a><a name="MAGICOUTPUT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies the name of a file which will contain output created by a magic script (see the 
 	<a class="link" href="smb.conf.5.html#MAGICSCRIPT">magic script</a> parameter below).
 	</p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>If two clients use the same <em class="parameter"><code>magic script
@@ -3340,10 +3319,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>magic output</code></em> = <code class="literal">myfile.txt</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543456"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543356"></a>
 
 magic script (S)
-</h3></div></div></div><a class="indexterm" name="id2543458"></a><a name="MAGICSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the name of a file which, 
+</h3></div></div></div><a class="indexterm" name="id2543357"></a><a name="MAGICSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the name of a file which, 
 	if opened, will be executed by the server when the file is closed. 
 	This allows a UNIX script to be sent to the Samba host and 
 	executed on behalf of the connected user.</p><p>Scripts executed in this way will be deleted upon 
@@ -3359,10 +3338,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>magic script</code></em> = <code class="literal">user.csh</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543562"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543462"></a>
 
 mangled names (S)
-</h3></div></div></div><a class="indexterm" name="id2543563"></a><a name="MANGLEDNAMES"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls whether non-DOS names under UNIX 
+</h3></div></div></div><a class="indexterm" name="id2543463"></a><a name="MANGLEDNAMES"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls whether non-DOS names under UNIX 
 	should be mapped to DOS-compatible names ("mangled") and made visible, 
 	or whether non-DOS names should simply be ignored.</p><p>See the section on <a class="link" href="smb.conf.5.html#NAMEMANGLING">name mangling</a> for 
 	details on how to control the mangling process.</p><p>If mangling is used then the mangling algorithm is as follows:</p><div class="itemizedlist"><ul type="disc"><li><p>The first (up to) five alphanumeric characters 
@@ -3387,10 +3366,10 @@
 	from Windows/DOS and will retain the same basename. Mangled names 
 	do not change between sessions.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>mangled names</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543699"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543598"></a>
 
 mangle prefix (G)
-</h3></div></div></div><a class="indexterm" name="id2543700"></a><a name="MANGLEPREFIX"></a><div class="variablelist"><dl><dt></dt><dd><p> controls the number of prefix
+</h3></div></div></div><a class="indexterm" name="id2543599"></a><a name="MANGLEPREFIX"></a><div class="variablelist"><dl><dt></dt><dd><p> controls the number of prefix
 	characters from the original name used when generating
 	the mangled names. A larger value will give a weaker
 	hash and therefore more name collisions. The minimum
@@ -3400,20 +3379,20 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>mangle prefix</code></em> = <code class="literal">4</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543765"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543665"></a>
 
 mangling char (S)
-</h3></div></div></div><a class="indexterm" name="id2543766"></a><a name="MANGLINGCHAR"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls what character is used as 
+</h3></div></div></div><a class="indexterm" name="id2543666"></a><a name="MANGLINGCHAR"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls what character is used as 
 	the <span class="emphasis"><em>magic</em></span> character in <a class="link" href="smb.conf.5.html#NAMEMANGLING">name mangling</a>. The 
 	default is a '~' but this may interfere with some software. Use this option to set 
 	it to whatever you prefer. This is effective only when mangling method is hash.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>mangling char</code></em> = <code class="literal">~</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>mangling char</code></em> = <code class="literal">^</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543843"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543742"></a>
 
 mangling method (G)
-</h3></div></div></div><a class="indexterm" name="id2543844"></a><a name="MANGLINGMETHOD"></a><div class="variablelist"><dl><dt></dt><dd><p> controls the algorithm used for the generating
+</h3></div></div></div><a class="indexterm" name="id2543743"></a><a name="MANGLINGMETHOD"></a><div class="variablelist"><dl><dt></dt><dd><p> controls the algorithm used for the generating
 	the mangled names. Can take two different values, "hash" and
 	"hash2". "hash" is the algorithm that was used
 	used in Samba for many years and was the default in Samba 2.2.x "hash2" is
@@ -3424,10 +3403,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>mangling method</code></em> = <code class="literal">hash</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543910"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543809"></a>
 
 map acl inherit (S)
-</h3></div></div></div><a class="indexterm" name="id2543911"></a><a name="MAPACLINHERIT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to map the 'inherit' and 'protected'
+</h3></div></div></div><a class="indexterm" name="id2543810"></a><a name="MAPACLINHERIT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to map the 'inherit' and 'protected'
     access control entry flags stored in Windows ACLs into an extended attribute
     called user.SAMBA_PAI. This parameter only takes effect if Samba is being run
     on a platform that supports extended attributes (Linux and IRIX so far) and
@@ -3435,10 +3414,10 @@
     POSIX ACL mapping code.
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>map acl inherit</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543967"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543866"></a>
 
 map archive (S)
-</h3></div></div></div><a class="indexterm" name="id2543968"></a><a name="MAPARCHIVE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2543867"></a><a name="MAPARCHIVE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This controls whether the DOS archive attribute 
 	should be mapped to the UNIX owner execute bit.  The DOS archive bit 
 	is set when a file has been modified since its last backup.  One 
@@ -3451,19 +3430,19 @@
 	<a class="link" href="smb.conf.5.html#CREATEMASK">create mask</a> for details.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>map archive</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544042"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543941"></a>
 
 map hidden (S)
-</h3></div></div></div><a class="indexterm" name="id2544043"></a><a name="MAPHIDDEN"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2543942"></a><a name="MAPHIDDEN"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This controls whether DOS style hidden files should be mapped to the UNIX world execute bit.
 	</p><p>
 	Note that this requires the <a class="link" href="smb.conf.5.html#CREATEMASK">create mask</a> to be set such that the world execute 
 	bit is not masked out (i.e. it must include 001). See the parameter <a class="link" href="smb.conf.5.html#CREATEMASK">create mask</a> 
 	for details.
-	</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544100"></a>
+	</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2543999"></a>
 
 map read only (S)
-</h3></div></div></div><a class="indexterm" name="id2544101"></a><a name="MAPREADONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2544000"></a><a name="MAPREADONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This controls how the DOS read only attribute should be mapped from a UNIX filesystem.
 	</p><p>
 	This parameter can take three different values, which tell <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> how to display the read only attribute on files, where either
@@ -3488,10 +3467,10 @@
 		the <a class="link" href="smb.conf.5.html#STOREDOSATTRIBUTES">store dos attributes</a> method. This may be useful for exporting mounted CDs.
 		</p></li></ul></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>map read only</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544257"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544164"></a>
 
 map system (S)
-</h3></div></div></div><a class="indexterm" name="id2544258"></a><a name="MAPSYSTEM"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2544165"></a><a name="MAPSYSTEM"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This controls whether DOS style system files should be mapped to the UNIX group execute bit.
 	</p><p>
 	Note that this requires the <a class="link" href="smb.conf.5.html#CREATEMASK">create mask</a>	to be set such that the group 
@@ -3499,10 +3478,10 @@
 	<a class="link" href="smb.conf.5.html#CREATEMASK">create mask</a> for details.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>map system</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544326"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544233"></a>
 
 map to guest (G)
-</h3></div></div></div><a class="indexterm" name="id2544327"></a><a name="MAPTOGUEST"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is only useful in <a class="link" href="smb.conf.5.html#SECURITY">SECURITY = 
+</h3></div></div></div><a class="indexterm" name="id2544234"></a><a name="MAPTOGUEST"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is only useful in <a class="link" href="smb.conf.5.html#SECURITY">SECURITY = 
     security</a> modes other than <em class="parameter"><code>security = share</code></em> 
     and <em class="parameter"><code>security = server</code></em>
     - i.e. <code class="constant">user</code>, and <code class="constant">domain</code>.</p><p>This parameter can take four different values, which tell
@@ -3544,10 +3523,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>map to guest</code></em> = <code class="literal">Bad User</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544565"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544473"></a>
 
 max connections (S)
-</h3></div></div></div><a class="indexterm" name="id2544566"></a><a name="MAXCONNECTIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows the number of simultaneous connections to a service to be limited.
+</h3></div></div></div><a class="indexterm" name="id2544474"></a><a name="MAXCONNECTIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows the number of simultaneous connections to a service to be limited.
     If <em class="parameter"><code>max connections</code></em> is greater than 0 then connections
     will be refused if this number of connections to the service are already open. A value 
     of zero mean an unlimited number of connections may be made.</p><p>Record lock files are used to implement this feature. The lock files will be stored in 
@@ -3555,10 +3534,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max connections</code></em> = <code class="literal">10</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544651"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544559"></a>
 
 max disk size (G)
-</h3></div></div></div><a class="indexterm" name="id2544652"></a><a name="MAXDISKSIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to put an upper limit 
+</h3></div></div></div><a class="indexterm" name="id2544560"></a><a name="MAXDISKSIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to put an upper limit 
     on the apparent size of disks. If you set this option to 100 
     then all shares will appear to be not larger than 100 MB in 
     size.</p><p>Note that this option does not limit the amount of 
@@ -3572,10 +3551,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max disk size</code></em> = <code class="literal">1000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544743"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544650"></a>
 
 max log size (G)
-</h3></div></div></div><a class="indexterm" name="id2544744"></a><a name="MAXLOGSIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2544651"></a><a name="MAXLOGSIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This option (an integer in kilobytes) specifies the max size the log file should grow to. 
     Samba periodically checks the size and if it is exceeded it will rename the file, adding 
 	a <code class="filename">.old</code> extension.
@@ -3584,17 +3563,17 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max log size</code></em> = <code class="literal">1000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544814"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544722"></a>
 
 max mux (G)
-</h3></div></div></div><a class="indexterm" name="id2544816"></a><a name="MAXMUX"></a><div class="variablelist"><dl><dt></dt><dd><p>This option controls the maximum number of 
+</h3></div></div></div><a class="indexterm" name="id2544723"></a><a name="MAXMUX"></a><div class="variablelist"><dl><dt></dt><dd><p>This option controls the maximum number of 
     outstanding simultaneous SMB operations that Samba tells the client 
 	it will allow. You should never need to set this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>max mux</code></em> = <code class="literal">50</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544858"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544765"></a>
 
 max open files (G)
-</h3></div></div></div><a class="indexterm" name="id2544859"></a><a name="MAXOPENFILES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the maximum number of 
+</h3></div></div></div><a class="indexterm" name="id2544766"></a><a name="MAXOPENFILES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the maximum number of 
     open files that one <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> file 
     serving process may have open for a client at any one time. The 
     default for this parameter is set very high (10,000) as Samba uses 
@@ -3602,23 +3581,23 @@
     by the UNIX per-process file descriptor limit rather than 
     this parameter so you should never need to touch this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>max open files</code></em> = <code class="literal">10000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544918"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544825"></a>
 
 max print jobs (S)
-</h3></div></div></div><a class="indexterm" name="id2544919"></a><a name="MAXPRINTJOBS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the maximum number of 
+</h3></div></div></div><a class="indexterm" name="id2544826"></a><a name="MAXPRINTJOBS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the maximum number of 
     jobs allowable in a Samba printer queue at any given moment.
     If this number is exceeded, <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will remote "Out of Space" to the client.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>max print jobs</code></em> = <code class="literal">1000</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max print jobs</code></em> = <code class="literal">5000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544987"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544895"></a>
 
 <a name="PROTOCOL"></a>protocol
-</h3></div></div></div><a class="indexterm" name="id2544988"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#MAXPROTOCOL">max protocol</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545020"></a>
+</h3></div></div></div><a class="indexterm" name="id2544896"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#MAXPROTOCOL">max protocol</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2544927"></a>
 
 max protocol (G)
-</h3></div></div></div><a class="indexterm" name="id2545021"></a><a name="MAXPROTOCOL"></a><div class="variablelist"><dl><dt></dt><dd><p>The value of the parameter (a string) is the highest 
+</h3></div></div></div><a class="indexterm" name="id2544928"></a><a name="MAXPROTOCOL"></a><div class="variablelist"><dl><dt></dt><dd><p>The value of the parameter (a string) is the highest 
     protocol level that will be supported by the server.</p><p>Possible values are :</p><div class="itemizedlist"><ul type="disc"><li><p><code class="constant">CORE</code>: Earliest version. No 
 	    concept of user names.</p></li><li><p><code class="constant">COREPLUS</code>: Slight improvements on 
 	    CORE for efficiency.</p></li><li><p><code class="constant">LANMAN1</code>: First <span class="emphasis"><em>
@@ -3630,10 +3609,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max protocol</code></em> = <code class="literal">LANMAN1</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545144"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545052"></a>
 
 max reported print jobs (S)
-</h3></div></div></div><a class="indexterm" name="id2545146"></a><a name="MAXREPORTEDPRINTJOBS"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2545053"></a><a name="MAXREPORTEDPRINTJOBS"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This parameter limits the maximum number of jobs displayed in a port monitor for 
     Samba printer queue at any given moment. If this number is exceeded, the excess 
     jobs will not be shown. A value of zero means there is no limit on the number of 
@@ -3642,10 +3621,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max reported print jobs</code></em> = <code class="literal">1000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545208"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545116"></a>
 
 max smbd processes (G)
-</h3></div></div></div><a class="indexterm" name="id2545210"></a><a name="MAXSMBDPROCESSES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the maximum number of <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> processes concurrently running on a system and is intended
+</h3></div></div></div><a class="indexterm" name="id2545117"></a><a name="MAXSMBDPROCESSES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the maximum number of <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> processes concurrently running on a system and is intended
     as a stopgap to prevent degrading service to clients in the event that the server has insufficient
     resources to handle more than this number of connections.  Remember that under normal operating
     conditions, each user will have an <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> associated with him or her to handle connections to all
@@ -3653,10 +3632,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max smbd processes</code></em> = <code class="literal">1000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545290"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545197"></a>
 
 max stat cache size (G)
-</h3></div></div></div><a class="indexterm" name="id2545291"></a><a name="MAXSTATCACHESIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the size in memory of any 
+</h3></div></div></div><a class="indexterm" name="id2545198"></a><a name="MAXSTATCACHESIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter limits the size in memory of any 
 	  <em class="parameter"><code>stat cache</code></em> being used
 	  to speed up case insensitive name mappings. It represents
 	  the number of kilobyte (1024) units the stat cache can use.
@@ -3667,27 +3646,27 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max stat cache size</code></em> = <code class="literal">100</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545359"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545267"></a>
 
 max ttl (G)
-</h3></div></div></div><a class="indexterm" name="id2545360"></a><a name="MAXTTL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option tells <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> what the default 'time to live' 
+</h3></div></div></div><a class="indexterm" name="id2545268"></a><a name="MAXTTL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option tells <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> what the default 'time to live' 
     of NetBIOS names should be (in seconds) when <code class="literal">nmbd</code> is 
     requesting a name using either a broadcast packet or from a WINS server. You should 
 	never need to change this parameter. The default is 3 days.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>max ttl</code></em> = <code class="literal">259200</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545418"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545326"></a>
 
 max wins ttl (G)
-</h3></div></div></div><a class="indexterm" name="id2545419"></a><a name="MAXWINSTTL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option tells <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> when acting as a WINS server
+</h3></div></div></div><a class="indexterm" name="id2545327"></a><a name="MAXWINSTTL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option tells <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> when acting as a WINS server
 	(<a class="link" href="smb.conf.5.html#WINSSUPPORT">wins support = yes</a>) what the maximum
     'time to live' of NetBIOS names that <code class="literal">nmbd</code> 
     will grant will be (in seconds). You should never need to change this
 	parameter.  The default is 6 days (518400 seconds).</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>max wins ttl</code></em> = <code class="literal">518400</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545489"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545397"></a>
 
 max xmit (G)
-</h3></div></div></div><a class="indexterm" name="id2545490"></a><a name="MAXXMIT"></a><div class="variablelist"><dl><dt></dt><dd><p>This option controls the maximum packet size 
+</h3></div></div></div><a class="indexterm" name="id2545398"></a><a name="MAXXMIT"></a><div class="variablelist"><dl><dt></dt><dd><p>This option controls the maximum packet size 
     that will be negotiated by Samba. The default is 16644, which 
     matches the behavior of Windows 2000.  A value below 2048 is likely to cause problems.
     You should never need to change this parameter from its default value.
@@ -3695,10 +3674,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>max xmit</code></em> = <code class="literal">8192</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545552"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545460"></a>
 
 message command (G)
-</h3></div></div></div><a class="indexterm" name="id2545553"></a><a name="MESSAGECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This specifies what command to run when the 
+</h3></div></div></div><a class="indexterm" name="id2545461"></a><a name="MESSAGECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This specifies what command to run when the 
 	server receives a WinPopup style message.</p><p>This would normally be a command that would 
 	deliver the message somehow. How this is to be done is 
 	up to your imagination.</p><p>An example is:
@@ -3737,20 +3716,20 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>message command</code></em> = <code class="literal">csh -c 'xedit %s; rm %s' &amp;</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545762"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545670"></a>
 
 min print space (S)
-</h3></div></div></div><a class="indexterm" name="id2545763"></a><a name="MINPRINTSPACE"></a><div class="variablelist"><dl><dt></dt><dd><p>This sets the minimum amount of free disk 
+</h3></div></div></div><a class="indexterm" name="id2545671"></a><a name="MINPRINTSPACE"></a><div class="variablelist"><dl><dt></dt><dd><p>This sets the minimum amount of free disk 
     space that must be available before a user will be able to spool 
     a print job. It is specified in kilobytes. The default is 0, which 
     means a user can always spool a print job.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>min print space</code></em> = <code class="literal">0</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>min print space</code></em> = <code class="literal">2000</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545825"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545732"></a>
 
 min protocol (G)
-</h3></div></div></div><a class="indexterm" name="id2545826"></a><a name="MINPROTOCOL"></a><div class="variablelist"><dl><dt></dt><dd><p>The value of the parameter (a string) is the 
+</h3></div></div></div><a class="indexterm" name="id2545733"></a><a name="MINPROTOCOL"></a><div class="variablelist"><dl><dt></dt><dd><p>The value of the parameter (a string) is the 
     lowest SMB protocol dialect than Samba will support.  Please refer
     to the <a class="link" href="smb.conf.5.html#MAXPROTOCOL">max protocol</a>
     parameter for a list of valid protocol names and a brief description
@@ -3762,10 +3741,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>min protocol</code></em> = <code class="literal">NT1</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545923"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545830"></a>
 
 min receivefile size (G)
-</h3></div></div></div><a class="indexterm" name="id2545924"></a><a name="MINRECEIVEFILESIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>This option changes the behavior of <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> when processing SMBwriteX calls. Any incoming
+</h3></div></div></div><a class="indexterm" name="id2545831"></a><a name="MINRECEIVEFILESIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>This option changes the behavior of <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> when processing SMBwriteX calls. Any incoming
 SMBwriteX call on a non-signed SMB/CIFS connection greater than this value will not be processed in the normal way but will
 be passed to any underlying kernel recvfile or splice system call (if there is no such
 call Samba will emulate in user space). This allows zero-copy writes directly from network
@@ -3774,19 +3753,19 @@
 normal way. To enable POSIX large write support (SMB/CIFS writes up to 16Mb) this option must be
 nonzero. The maximum value is 128k. Values greater than 128k will be silently set to 128k.</p><p>Note this option will have NO EFFECT if set on a SMB signed connection.</p><p>The default is zero, which diables this option.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>min receivefile size</code></em> = <code class="literal">0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545992"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545900"></a>
 
 min wins ttl (G)
-</h3></div></div></div><a class="indexterm" name="id2545993"></a><a name="MINWINSTTL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option tells <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a>
+</h3></div></div></div><a class="indexterm" name="id2545901"></a><a name="MINWINSTTL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option tells <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a>
     when acting as a WINS server (<a class="link" href="smb.conf.5.html#WINSSUPPORT">wins support = yes</a>) what the minimum 'time to live' 
     of NetBIOS names that <code class="literal">nmbd</code> will grant will be (in 
     seconds). You should never need to change this parameter.  The default 
     is 6 hours (21600 seconds).</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>min wins ttl</code></em> = <code class="literal">21600</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546062"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2545970"></a>
 
 msdfs proxy (S)
-</h3></div></div></div><a class="indexterm" name="id2546063"></a><a name="MSDFSPROXY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter indicates that the share is a
+</h3></div></div></div><a class="indexterm" name="id2545971"></a><a name="MSDFSPROXY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter indicates that the share is a
 	stand-in for another CIFS share whose location is specified by
 	the value of the parameter. When clients attempt to connect to
 	this share, they are redirected to the proxied share using
@@ -3794,10 +3773,10 @@
 	<a class="link" href="smb.conf.5.html#MSDFSROOT">msdfs root</a> and <a class="link" href="smb.conf.5.html#HOSTMSDFS">host msdfs</a>
 	options to find out how to set up a Dfs root share.</p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>msdfs proxy</code></em> = <code class="literal">\otherserver\someshare</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546140"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546048"></a>
 
 msdfs root (S)
-</h3></div></div></div><a class="indexterm" name="id2546142"></a><a name="MSDFSROOT"></a><div class="variablelist"><dl><dt></dt><dd><p>If set to <code class="constant">yes</code>, Samba treats the
+</h3></div></div></div><a class="indexterm" name="id2546049"></a><a name="MSDFSROOT"></a><div class="variablelist"><dl><dt></dt><dd><p>If set to <code class="constant">yes</code>, Samba treats the
 	share as a Dfs root and allows clients to browse the
 	distributed file system tree rooted at the share directory.
 	Dfs links are specified in the share directory by symbolic
@@ -3805,20 +3784,20 @@
 	and so on.  For more information on setting up a Dfs tree on
 	Samba, refer to the MSDFS chapter in the Samba3-HOWTO book.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>msdfs root</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546196"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546103"></a>
 
 name cache timeout (G)
-</h3></div></div></div><a class="indexterm" name="id2546197"></a><a name="NAMECACHETIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies the number of seconds it takes before 
+</h3></div></div></div><a class="indexterm" name="id2546104"></a><a name="NAMECACHETIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies the number of seconds it takes before 
     entries in samba's hostname resolve cache time out. If 
     the timeout is set to 0. the caching is disabled.
 </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>name cache timeout</code></em> = <code class="literal">660</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>name cache timeout</code></em> = <code class="literal">0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546257"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546164"></a>
 
 name resolve order (G)
-</h3></div></div></div><a class="indexterm" name="id2546258"></a><a name="NAMERESOLVEORDER"></a><div class="variablelist"><dl><dt></dt><dd><p>This option is used by the programs in the Samba 
+</h3></div></div></div><a class="indexterm" name="id2546166"></a><a name="NAMERESOLVEORDER"></a><div class="variablelist"><dl><dt></dt><dd><p>This option is used by the programs in the Samba 
     suite to determine what naming services to use and in what order 
     to resolve host names to IP addresses. Its main purpose to is to
     control how netbios name resolution is performed.  The option takes a space 
@@ -3849,10 +3828,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>name resolve order</code></em> = <code class="literal">lmhosts bcast host</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546458"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546366"></a>
 
 netbios aliases (G)
-</h3></div></div></div><a class="indexterm" name="id2546459"></a><a name="NETBIOSALIASES"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of NetBIOS names that nmbd will 
+</h3></div></div></div><a class="indexterm" name="id2546367"></a><a name="NETBIOSALIASES"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of NetBIOS names that nmbd will 
         advertise as additional names by which the Samba server is known. This allows one machine 
 	to appear in browse lists under multiple names. If a machine is acting as a browse server 
         or logon server none of these names will be advertised as either browse server or logon 
@@ -3862,10 +3841,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>netbios aliases</code></em> = <code class="literal">TEST TEST1 TEST2</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546524"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546431"></a>
 
 netbios name (G)
-</h3></div></div></div><a class="indexterm" name="id2546525"></a><a name="NETBIOSNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2546432"></a><a name="NETBIOSNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>
 		This sets the NetBIOS name by which a Samba server is known. By default it is the same as the first component
 		of the host's DNS name. If a machine is a browse server or logon server this name (or the first component of
 		the hosts DNS name) will be the name that these services are advertised under.
@@ -3878,17 +3857,17 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>netbios name</code></em> = <code class="literal">MYNAME</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546605"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546513"></a>
 
 netbios scope (G)
-</h3></div></div></div><a class="indexterm" name="id2546606"></a><a name="NETBIOSSCOPE"></a><div class="variablelist"><dl><dt></dt><dd><p>This sets the NetBIOS scope that Samba will 
+</h3></div></div></div><a class="indexterm" name="id2546514"></a><a name="NETBIOSSCOPE"></a><div class="variablelist"><dl><dt></dt><dd><p>This sets the NetBIOS scope that Samba will 
 	operate under. This should not be set unless every machine 
 	on your LAN also sets this value.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>netbios scope</code></em> = <code class="literal"></code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546648"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546556"></a>
 
 nis homedir (G)
-</h3></div></div></div><a class="indexterm" name="id2546649"></a><a name="NISHOMEDIR"></a><div class="variablelist"><dl><dt></dt><dd><p>Get the home share server from a NIS map. For 
+</h3></div></div></div><a class="indexterm" name="id2546557"></a><a name="NISHOMEDIR"></a><div class="variablelist"><dl><dt></dt><dd><p>Get the home share server from a NIS map. For 
 	UNIX systems that use an automounter, the user's home directory 
 	will often be mounted on a workstation on demand from a remote 
 	server. </p><p>When the Samba logon server is not the actual home directory 
@@ -3907,20 +3886,20 @@
 	NIS system and the Samba server with this option must also 
 	be a logon server.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>nis homedir</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546728"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546636"></a>
 
 nt acl support (S)
-</h3></div></div></div><a class="indexterm" name="id2546729"></a><a name="NTACLSUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to map 
+</h3></div></div></div><a class="indexterm" name="id2546637"></a><a name="NTACLSUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to map 
     UNIX permissions into Windows NT access control lists.  The UNIX
     permissions considered are the the traditional UNIX owner and
     group permissions, as well as POSIX ACLs set on any files or
     directories.  This parameter was formally a global parameter in
     releases prior to 2.2.2.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>nt acl support</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546783"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546691"></a>
 
 ntlm auth (G)
-</h3></div></div></div><a class="indexterm" name="id2546784"></a><a name="NTLMAUTH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines whether or not <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to
+</h3></div></div></div><a class="indexterm" name="id2546692"></a><a name="NTLMAUTH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines whether or not <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will attempt to
     authenticate users using the NTLM encrypted password response.
     If disabled, either the lanman password hash or an NTLMv2 response
     will need to be sent by the client.</p><p>If this option, and <code class="literal">lanman
@@ -3928,33 +3907,33 @@
     permited.  Not all clients support NTLMv2, and most will require
 	special configuration to use it.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>ntlm auth</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546847"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546755"></a>
 
 nt pipe support (G)
-</h3></div></div></div><a class="indexterm" name="id2546848"></a><a name="NTPIPESUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether 
+</h3></div></div></div><a class="indexterm" name="id2546756"></a><a name="NTPIPESUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether 
     <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will allow Windows NT 
     clients to connect to the NT SMB specific <code class="constant">IPC$</code> 
     pipes. This is a developer debugging option and can be left
 	alone.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>nt pipe support</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546904"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546811"></a>
 
 nt status support (G)
-</h3></div></div></div><a class="indexterm" name="id2546905"></a><a name="NTSTATUSSUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will negotiate NT specific status
+</h3></div></div></div><a class="indexterm" name="id2546812"></a><a name="NTSTATUSSUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will negotiate NT specific status
     support with Windows NT/2k/XP clients. This is a developer debugging option and should be left alone.
     If this option is set to <code class="constant">no</code> then Samba offers
     exactly the same DOS error codes that versions prior to Samba 2.2.3
     reported.</p><p>You should not need to ever disable this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>nt status support</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546965"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546872"></a>
 
 null passwords (G)
-</h3></div></div></div><a class="indexterm" name="id2546966"></a><a name="NULLPASSWORDS"></a><div class="variablelist"><dl><dt></dt><dd><p>Allow or disallow client access to accounts that have null passwords. </p><p>See also <a class="citerefentry" href="smbpasswd.5.html"><span class="citerefentry"><span class="refentrytitle">smbpasswd</span>(5)</span></a>.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>null passwords</code></em> = <code class="literal">no</code>
+</h3></div></div></div><a class="indexterm" name="id2546873"></a><a name="NULLPASSWORDS"></a><div class="variablelist"><dl><dt></dt><dd><p>Allow or disallow client access to accounts that have null passwords. </p><p>See also <a class="citerefentry" href="smbpasswd.5.html"><span class="citerefentry"><span class="refentrytitle">smbpasswd</span>(5)</span></a>.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>null passwords</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547018"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546925"></a>
 
 obey pam restrictions (G)
-</h3></div></div></div><a class="indexterm" name="id2547019"></a><a name="OBEYPAMRESTRICTIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>When Samba 3.0 is configured to enable PAM support
+</h3></div></div></div><a class="indexterm" name="id2546926"></a><a name="OBEYPAMRESTRICTIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>When Samba 3.0 is configured to enable PAM support
     (i.e. --with-pam), this parameter will control whether or not Samba
     should obey PAM's account and session management directives.  The 
     default behavior is to use PAM for clear text authentication only
@@ -3964,10 +3943,10 @@
     authentication mechanism needed in the presence of SMB password encryption.
 </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>obey pam restrictions</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547082"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2546989"></a>
 
 only user (S)
-</h3></div></div></div><a class="indexterm" name="id2547083"></a><a name="ONLYUSER"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean option that controls whether 
+</h3></div></div></div><a class="indexterm" name="id2546990"></a><a name="ONLYUSER"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean option that controls whether 
     connections with usernames not in the <em class="parameter"><code>user</code></em> 
     list will be allowed. By default this option is disabled so that a 
     client can supply a username to be used by the server.  Enabling
@@ -3980,10 +3959,10 @@
     will be just the service name, which for home directories is the 
     name of the user.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>only user</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547171"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547078"></a>
 
 oplock break wait time (G)
-</h3></div></div></div><a class="indexterm" name="id2547172"></a><a name="OPLOCKBREAKWAITTIME"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2547079"></a><a name="OPLOCKBREAKWAITTIME"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is a tuning parameter added due to bugs in both Windows 9x and WinNT. If Samba responds to a client too 
 	quickly when that client issues an SMB that can cause an oplock break request, then the network client can 
 	fail and not respond to the break request. This tuning parameter (which is set in milliseconds) is the amount 
@@ -3992,10 +3971,10 @@
 	DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ AND UNDERSTOOD THE SAMBA OPLOCK CODE.
 	</p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>oplock break wait time</code></em> = <code class="literal">0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547232"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547133"></a>
 
 oplock contention limit (S)
-</h3></div></div></div><a class="indexterm" name="id2547233"></a><a name="OPLOCKCONTENTIONLIMIT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2547134"></a><a name="OPLOCKCONTENTIONLIMIT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is a <span class="emphasis"><em>very</em></span> advanced <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> tuning option to improve the efficiency of the 
 	granting of oplocks under multiple client contention for the same file.
 	</p><p>
@@ -4007,10 +3986,10 @@
 	DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ AND UNDERSTOOD THE SAMBA OPLOCK CODE.
 	</p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>oplock contention limit</code></em> = <code class="literal">2</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547314"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547215"></a>
 
 oplocks (S)
-</h3></div></div></div><a class="indexterm" name="id2547315"></a><a name="OPLOCKS"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2547216"></a><a name="OPLOCKS"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean option tells <code class="literal">smbd</code> whether to 
 	issue oplocks (opportunistic locks) to file open requests on this 
 	share. The oplock code can dramatically (approx. 30% or more) improve 
@@ -4029,10 +4008,10 @@
 	<a class="link" href="smb.conf.5.html#KERNELOPLOCKS">kernel oplocks</a> parameter for details.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>oplocks</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547414"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547315"></a>
 
 os2 driver map (G)
-</h3></div></div></div><a class="indexterm" name="id2547415"></a><a name="OS2DRIVERMAP"></a><div class="variablelist"><dl><dt></dt><dd><p>The parameter is used to define the absolute
+</h3></div></div></div><a class="indexterm" name="id2547316"></a><a name="OS2DRIVERMAP"></a><div class="variablelist"><dl><dt></dt><dd><p>The parameter is used to define the absolute
     path to a file containing a mapping of Windows NT printer driver
     names to OS/2 printer driver names.  The format is:</p><p>&lt;nt driver name&gt; = &lt;os2 driver name&gt;.&lt;device name&gt;</p><p>For example, a valid entry using the HP LaserJet 5
     printer driver would appear as <code class="literal">HP LaserJet 5L = LASERJET.HP 
@@ -4042,10 +4021,10 @@
     details on OS/2 clients, please refer to chapter on other clients in the Samba3-HOWTO book.
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>os2 driver map</code></em> = <code class="literal"></code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547481"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547381"></a>
 
 os level (G)
-</h3></div></div></div><a class="indexterm" name="id2547482"></a><a name="OSLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2547382"></a><a name="OSLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This integer value controls what level Samba advertises itself as for browse elections. The value of this
 	parameter determines whether <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> has a chance of becoming a local master browser for the <a class="link" href="smb.conf.5.html#WORKGROUP">workgroup</a> in the local broadcast area.
 </p><p><span class="emphasis"><em>
@@ -4061,10 +4040,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>os level</code></em> = <code class="literal">65</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547580"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547490"></a>
 
 pam password change (G)
-</h3></div></div></div><a class="indexterm" name="id2547581"></a><a name="PAMPASSWORDCHANGE"></a><div class="variablelist"><dl><dt></dt><dd><p>With the addition of better PAM support in Samba 2.2, 
+</h3></div></div></div><a class="indexterm" name="id2547491"></a><a name="PAMPASSWORDCHANGE"></a><div class="variablelist"><dl><dt></dt><dd><p>With the addition of better PAM support in Samba 2.2, 
     this parameter, it is possible to use PAM's password change control 
     flag for Samba.  If enabled, then PAM will be used for password
     changes when requested by an SMB client instead of the program listed in 
@@ -4072,20 +4051,20 @@
     It should be possible to enable this without changing your 
     <a class="link" href="smb.conf.5.html#PASSWDCHAT">passwd chat</a> parameter for most setups.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>pam password change</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547652"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547561"></a>
 
 panic action (G)
-</h3></div></div></div><a class="indexterm" name="id2547653"></a><a name="PANICACTION"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a Samba developer option that allows a 
+</h3></div></div></div><a class="indexterm" name="id2547562"></a><a name="PANICACTION"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a Samba developer option that allows a 
 	system command to be called when either <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> or <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a>	crashes. This is usually used to 
 	draw attention to the fact that a problem occurred.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>panic action</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>panic action</code></em> = <code class="literal">"/bin/sleep 90000"</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547728"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547637"></a>
 
 paranoid server security (G)
-</h3></div></div></div><a class="indexterm" name="id2547729"></a><a name="PARANOIDSERVERSECURITY"></a><div class="variablelist"><dl><dt></dt><dd><p>Some version of NT 4.x allow non-guest 
+</h3></div></div></div><a class="indexterm" name="id2547638"></a><a name="PARANOIDSERVERSECURITY"></a><div class="variablelist"><dl><dt></dt><dd><p>Some version of NT 4.x allow non-guest 
     users with a bad passowrd. When this option is enabled, samba will not 
     use a broken NT 4.x server as password server, but instead complain
     to the logs and exit.  
@@ -4093,10 +4072,10 @@
     this check, which involves deliberatly attempting a
     bad logon to the remote server.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>paranoid server security</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547779"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547688"></a>
 
 passdb backend (G)
-</h3></div></div></div><a class="indexterm" name="id2547780"></a><a name="PASSDBBACKEND"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows the administrator to chose which backend
+</h3></div></div></div><a class="indexterm" name="id2547689"></a><a name="PASSDBBACKEND"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows the administrator to chose which backend
     will be used for storing user and possibly group information.  This allows 
     you to swap between different storage mechanisms without recompile. </p><p>The parameter value is divided into two parts, the backend's name, and a 'location'
     string that has meaning only to that particular backed.  These are separated
@@ -4129,19 +4108,19 @@
 passdb backend = ldapsam:"ldap://ldap-1.example.com ldap-2.example.com"
 </pre><p>Default: <span class="emphasis"><em><em class="parameter"><code>passdb backend</code></em> = <code class="literal">smbpasswd</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547935"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547844"></a>
 
 passdb expand explicit (G)
-</h3></div></div></div><a class="indexterm" name="id2547936"></a><a name="PASSDBEXPANDEXPLICIT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2547845"></a><a name="PASSDBEXPANDEXPLICIT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter controls whether Samba substitutes %-macros in the passdb fields if they are explicitly set. We
 	used to expand macros here, but this turned out to be a bug because the Windows client can expand a variable
 	%G_osver% in which %G would have been substituted by the user's primary group.
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>passdb expand explicit</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547982"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547891"></a>
 
 passwd chat debug (G)
-</h3></div></div></div><a class="indexterm" name="id2547983"></a><a name="PASSWDCHATDEBUG"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean specifies if the passwd chat script 
+</h3></div></div></div><a class="indexterm" name="id2547892"></a><a name="PASSWDCHATDEBUG"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean specifies if the passwd chat script 
     parameter is run in <span class="emphasis"><em>debug</em></span> mode. In this mode the 
     strings passed to and received from the passwd chat are printed 
     in the <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> log with a 
@@ -4154,18 +4133,18 @@
     <a class="link" href="smb.conf.5.html#PAMPASSWORDCHANGE">pam password change</a>
 	parameter is set. This parameter is off by default.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>passwd chat debug</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548085"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2547994"></a>
 
 passwd chat timeout (G)
-</h3></div></div></div><a class="indexterm" name="id2548086"></a><a name="PASSWDCHATTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>This integer specifies the number of seconds smbd will wait for an initial
+</h3></div></div></div><a class="indexterm" name="id2547995"></a><a name="PASSWDCHATTIMEOUT"></a><div class="variablelist"><dl><dt></dt><dd><p>This integer specifies the number of seconds smbd will wait for an initial
     answer from a passwd chat script being run. Once the initial answer is received
     the subsequent answers must be received in one tenth of this time. The default it
     two seconds.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>passwd chat timeout</code></em> = <code class="literal">2</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548130"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548039"></a>
 
 passwd chat (G)
-</h3></div></div></div><a class="indexterm" name="id2548131"></a><a name="PASSWDCHAT"></a><div class="variablelist"><dl><dt></dt><dd><p>This string controls the <span class="emphasis"><em>"chat"</em></span> 
+</h3></div></div></div><a class="indexterm" name="id2548040"></a><a name="PASSWDCHAT"></a><div class="variablelist"><dl><dt></dt><dd><p>This string controls the <span class="emphasis"><em>"chat"</em></span> 
     conversation that takes places between <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> and the local password changing
     program to change the user's password. The string describes a 
     sequence of response-receive pairs that <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> uses to determine what to send to the 
@@ -4196,10 +4175,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>passwd chat</code></em> = <code class="literal">"*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password changed*"</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548334"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548243"></a>
 
 passwd program (G)
-</h3></div></div></div><a class="indexterm" name="id2548335"></a><a name="PASSWDPROGRAM"></a><div class="variablelist"><dl><dt></dt><dd><p>The name of a program that can be used to set 
+</h3></div></div></div><a class="indexterm" name="id2548244"></a><a name="PASSWDPROGRAM"></a><div class="variablelist"><dl><dt></dt><dd><p>The name of a program that can be used to set 
     UNIX user passwords.  Any occurrences of <em class="parameter"><code>%u</code></em> 
     will be replaced with the user name. The user name is checked for 
     existence before calling the password changing program.</p><p>Also note that many passwd programs insist in <span class="emphasis"><em>reasonable
@@ -4220,10 +4199,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>passwd program</code></em> = <code class="literal">/bin/passwd %u</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548469"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548378"></a>
 
 password level (G)
-</h3></div></div></div><a class="indexterm" name="id2548470"></a><a name="PASSWORDLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>Some client/server combinations have difficulty 
+</h3></div></div></div><a class="indexterm" name="id2548379"></a><a name="PASSWORDLEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>Some client/server combinations have difficulty 
     with mixed-case passwords.  One offending client is Windows for 
     Workgroups, which for some reason forces passwords to upper 
     case when using the LANMAN1 protocol, but leaves them alone when 
@@ -4245,10 +4224,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>password level</code></em> = <code class="literal">4</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548614"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548515"></a>
 
 password server (G)
-</h3></div></div></div><a class="indexterm" name="id2548615"></a><a name="PASSWORDSERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>By specifying the name of another SMB server 
+</h3></div></div></div><a class="indexterm" name="id2548516"></a><a name="PASSWORDSERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>By specifying the name of another SMB server 
     or Active Directory domain controller with this option, 
     and using <code class="literal">security = [ads|domain|server]</code> 
     it is possible to get Samba to 
@@ -4308,13 +4287,13 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>password server</code></em> = <code class="literal">windc.mydomain.com:389 192.168.1.101 *</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548913"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548814"></a>
 
 <a name="DIRECTORY"></a>directory
-</h3></div></div></div><a class="indexterm" name="id2548914"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PATH">path</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548944"></a>
+</h3></div></div></div><a class="indexterm" name="id2548815"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PATH">path</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548845"></a>
 
 path (S)
-</h3></div></div></div><a class="indexterm" name="id2548945"></a><a name="PATH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies a directory to which 
+</h3></div></div></div><a class="indexterm" name="id2548846"></a><a name="PATH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies a directory to which 
 	the user of the service is to be given access. In the case of 
 	printable services, this is where print data will spool prior to 
 	being submitted to the host for printing.</p><p>For a printable service offering guest access, the service 
@@ -4331,19 +4310,19 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>path</code></em> = <code class="literal">/home/fred</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549048"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2548949"></a>
 
 pid directory (G)
-</h3></div></div></div><a class="indexterm" name="id2549049"></a><a name="PIDDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2548950"></a><a name="PIDDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This option specifies the directory where pid files will be placed.  
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>pid directory</code></em> = <code class="literal">${prefix}/var/locks</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>pid directory</code></em> = <code class="literal">pid directory = /var/run/</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549108"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549009"></a>
 
 posix locking (S)
-</h3></div></div></div><a class="indexterm" name="id2549109"></a><a name="POSIXLOCKING"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2549010"></a><a name="POSIXLOCKING"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	The <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a>
 	daemon maintains an database of file locks obtained by SMB clients. The default behavior is 
 	to map this internal database to POSIX locks. This means that file locks obtained by SMB clients are 
@@ -4351,10 +4330,10 @@
 	method (e.g. NFS or local file access). You should never need to disable this parameter.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>posix locking</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549163"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549064"></a>
 
 postexec (S)
-</h3></div></div></div><a class="indexterm" name="id2549164"></a><a name="POSTEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies a command to be run 
+</h3></div></div></div><a class="indexterm" name="id2549065"></a><a name="POSTEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies a command to be run 
 	whenever the service is disconnected. It takes the usual 
 	substitutions. The command may be run as the root on some 
 	systems.</p><p>An interesting example may be to unmount server 
@@ -4362,21 +4341,21 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>postexec</code></em> = <code class="literal">echo \"%u disconnected from %S from %m (%I)\" &gt;&gt; /tmp/log</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549236"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549137"></a>
 
 preexec close (S)
-</h3></div></div></div><a class="indexterm" name="id2549237"></a><a name="PREEXECCLOSE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2549138"></a><a name="PREEXECCLOSE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean option controls whether a non-zero return code from <a class="link" href="smb.conf.5.html#PREEXEC">preexec</a> 
 	should close the service being connected to.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>preexec close</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549290"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549191"></a>
 
 <a name="EXEC"></a>exec
-</h3></div></div></div><a class="indexterm" name="id2549292"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PREEXEC">preexec</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549322"></a>
+</h3></div></div></div><a class="indexterm" name="id2549192"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PREEXEC">preexec</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549222"></a>
 
 preexec (S)
-</h3></div></div></div><a class="indexterm" name="id2549323"></a><a name="PREEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies a command to be run whenever 
+</h3></div></div></div><a class="indexterm" name="id2549224"></a><a name="PREEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies a command to be run whenever 
 	the service is connected to. It takes the usual substitutions.</p><p>An interesting example is to send the users a welcome 
 	message every time they log in. Maybe a message of the day? Here 
 	is an example:</p><p>
@@ -4388,13 +4367,13 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>preexec</code></em> = <code class="literal">echo \"%u connected to %S from %m (%I)\" &gt;&gt; /tmp/log</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549429"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549331"></a>
 
 <a name="PREFEREDMASTER"></a>prefered master
-</h3></div></div></div><a class="indexterm" name="id2549430"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PREFERREDMASTER">preferred master</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549462"></a>
+</h3></div></div></div><a class="indexterm" name="id2549332"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PREFERREDMASTER">preferred master</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549364"></a>
 
 preferred master (G)
-</h3></div></div></div><a class="indexterm" name="id2549463"></a><a name="PREFERREDMASTER"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2549365"></a><a name="PREFERREDMASTER"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean parameter controls if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> is a preferred master browser  for its workgroup.
 	</p><p>
 	If this is set to <code class="constant">yes</code>, on startup, <code class="literal">nmbd</code> will force
@@ -4408,22 +4387,22 @@
 	capabilities.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>preferred master</code></em> = <code class="literal">auto</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549556"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549457"></a>
 
 preload modules (G)
-</h3></div></div></div><a class="indexterm" name="id2549557"></a><a name="PRELOADMODULES"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of paths to modules that should
+</h3></div></div></div><a class="indexterm" name="id2549458"></a><a name="PRELOADMODULES"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of paths to modules that should
 	be loaded into smbd before a client connects. This improves
 	the speed of smbd when reacting to new connections somewhat. </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>preload modules</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>preload modules</code></em> = <code class="literal">/usr/lib/samba/passdb/mysql.so</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549616"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549517"></a>
 
 <a name="AUTOSERVICES"></a>auto services
-</h3></div></div></div><a class="indexterm" name="id2549617"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRELOAD">preload</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549650"></a>
+</h3></div></div></div><a class="indexterm" name="id2549518"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRELOAD">preload</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549550"></a>
 
 preload (G)
-</h3></div></div></div><a class="indexterm" name="id2549651"></a><a name="PRELOAD"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of services that you want to be 
+</h3></div></div></div><a class="indexterm" name="id2549551"></a><a name="PRELOAD"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a list of services that you want to be 
 	automatically added to the browse lists. This is most useful 
 	for homes and printers services that would otherwise not be 
 	visible.</p><p>
@@ -4434,33 +4413,33 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>preload</code></em> = <code class="literal">fred lp colorlp</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549728"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549628"></a>
 
 preserve case (S)
-</h3></div></div></div><a class="indexterm" name="id2549729"></a><a name="PRESERVECASE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2549629"></a><a name="PRESERVECASE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This controls if new filenames are created with the case that the client passes, or if 
 	they are forced to be the <a class="link" href="smb.conf.5.html#DEFAULTCASE">default case</a>.
 	</p><p>
 	See the section on <a class="link" href="#NAMEMANGLINGSECT" title="NAME MANGLING">NAME MANGLING</a> for a fuller discussion.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>preserve case</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549794"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549694"></a>
 
 <a name="PRINTOK"></a>print ok
-</h3></div></div></div><a class="indexterm" name="id2549795"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRINTABLE">printable</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549825"></a>
+</h3></div></div></div><a class="indexterm" name="id2549696"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRINTABLE">printable</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549725"></a>
 
 printable (S)
-</h3></div></div></div><a class="indexterm" name="id2549826"></a><a name="PRINTABLE"></a><div class="variablelist"><dl><dt></dt><dd><p>If this parameter is <code class="constant">yes</code>, then 
+</h3></div></div></div><a class="indexterm" name="id2549726"></a><a name="PRINTABLE"></a><div class="variablelist"><dl><dt></dt><dd><p>If this parameter is <code class="constant">yes</code>, then 
     clients may open, write to and submit spool files on the directory 
     specified for the service. </p><p>Note that a printable service will ALWAYS allow writing 
     to the service path (user privileges permitting) via the spooling 
     of print data. The <a class="link" href="smb.conf.5.html#READONLY">read only</a> parameter controls only non-printing access to 
     the resource.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>printable</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549888"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549788"></a>
 
 printcap cache time (G)
-</h3></div></div></div><a class="indexterm" name="id2549889"></a><a name="PRINTCAPCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies the number of seconds before the printing
+</h3></div></div></div><a class="indexterm" name="id2549789"></a><a name="PRINTCAPCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies the number of seconds before the printing
     subsystem is again asked for the known printers.  If the value
     is greater than 60 the initial waiting time is set to 60 seconds
     to allow an earlier first rescan of the printing subsystem.
@@ -4470,13 +4449,13 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>printcap cache time</code></em> = <code class="literal">600</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549956"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549856"></a>
 
 <a name="PRINTCAP"></a>printcap
-</h3></div></div></div><a class="indexterm" name="id2549957"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRINTCAPNAME">printcap name</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549989"></a>
+</h3></div></div></div><a class="indexterm" name="id2549857"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRINTCAPNAME">printcap name</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2549889"></a>
 
 printcap name (G)
-</h3></div></div></div><a class="indexterm" name="id2549990"></a><a name="PRINTCAPNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2549890"></a><a name="PRINTCAPNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter may be used to override the compiled-in default printcap name used by the server (usually
 	<code class="filename"> /etc/printcap</code>). See the discussion of the <a class="link" href="#PRINTERSSECT" title="The [printers] section">[printers]</a> section above for reasons why you might want to do this.
 	</p><p>
@@ -4511,10 +4490,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>printcap name</code></em> = <code class="literal">/etc/myprintcap</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550173"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550074"></a>
 
 print command (S)
-</h3></div></div></div><a class="indexterm" name="id2550174"></a><a name="PRINTCOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>After a print job has finished spooling to 
+</h3></div></div></div><a class="indexterm" name="id2550075"></a><a name="PRINTCOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>After a print job has finished spooling to 
     a service, this command will be used via a <code class="literal">system()</code> 
     call to process the spool file. Typically the command specified will 
     submit the spool file to the host's printing subsystem, but there 
@@ -4556,10 +4535,10 @@
     and if SAMBA is compiled against libcups, any manually 
 	set print command will be ignored.</p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>print command</code></em> = <code class="literal">/usr/local/samba/bin/myprintscript %p %s</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550443"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550344"></a>
 
 printer admin (S)
-</h3></div></div></div><a class="indexterm" name="id2550444"></a><a name="PRINTERADMIN"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2550345"></a><a name="PRINTERADMIN"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This lists users who can do anything to printers
 	via the remote administration interfaces offered
 	by MS-RPC (usually using a NT workstation).
@@ -4575,13 +4554,13 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>printer admin</code></em> = <code class="literal">admin, @staff</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550513"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550413"></a>
 
 <a name="PRINTER"></a>printer
-</h3></div></div></div><a class="indexterm" name="id2550514"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRINTERNAME">printer name</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550544"></a>
+</h3></div></div></div><a class="indexterm" name="id2550414"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#PRINTERNAME">printer name</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550444"></a>
 
 printer name (S)
-</h3></div></div></div><a class="indexterm" name="id2550545"></a><a name="PRINTERNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2550445"></a><a name="PRINTERNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter specifies the name of the printer to which print jobs spooled through a printable service
 	will be sent.
 	</p><p>
@@ -4594,10 +4573,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>printer name</code></em> = <code class="literal">laserwriter</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550632"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550532"></a>
 
 printing (S)
-</h3></div></div></div><a class="indexterm" name="id2550633"></a><a name="PRINTING"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameters controls how printer status  information is
+</h3></div></div></div><a class="indexterm" name="id2550533"></a><a name="PRINTING"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameters controls how printer status  information is
     interpreted on your system. It also affects the  default values for
     the <em class="parameter"><code>print command</code></em>,  <em class="parameter"><code>lpq command</code></em>, <em class="parameter"><code>lppause command </code></em>, <em class="parameter"><code>lpresume command</code></em>, and  <em class="parameter"><code>lprm command</code></em> if specified in the 
     [global] section.</p><p>Currently nine printing styles are supported. They are
@@ -4611,27 +4590,27 @@
     commands (e.g. print command, lpq command, etc...) after defining
     the value for the <em class="parameter"><code>printing</code></em> option since it will 
     reset the printing commands to default values.</p><p>See also the discussion in the <a class="link" href="#PRINTERSSECT" title="The [printers] section">
-    [printers]</a> section.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550767"></a>
+    [printers]</a> section.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550667"></a>
 
 printjob username (S)
-</h3></div></div></div><a class="indexterm" name="id2550768"></a><a name="PRINTJOBUSERNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies which user information will be 
+</h3></div></div></div><a class="indexterm" name="id2550668"></a><a name="PRINTJOBUSERNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies which user information will be 
     passed to the printing system. Usually, the username is sent,
     but in some cases, e.g. the domain prefix is useful, too.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>printjob username</code></em> = <code class="literal">%U</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>printjob username</code></em> = <code class="literal">%D\%U</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550828"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550728"></a>
 
 private dir (G)
-</h3></div></div></div><a class="indexterm" name="id2550829"></a><a name="PRIVATEDIR"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameters defines the directory
+</h3></div></div></div><a class="indexterm" name="id2550730"></a><a name="PRIVATEDIR"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameters defines the directory
     smbd will use for storing such files as <code class="filename">smbpasswd</code>
     and <code class="filename">secrets.tdb</code>.
 </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>private dir</code></em> = <code class="literal">${prefix}/private</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550882"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550782"></a>
 
 profile acls (S)
-</h3></div></div></div><a class="indexterm" name="id2550883"></a><a name="PROFILEACLS"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2550784"></a><a name="PROFILEACLS"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean parameter was added to fix the problems that people have been
 	having with storing user profiles on Samba shares from Windows 2000 or
 	Windows XP clients. New versions of Windows 2000 or Windows XP service
@@ -4659,10 +4638,10 @@
 	tree to the owning user.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>profile acls</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550955"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550855"></a>
 
 queuepause command (S)
-</h3></div></div></div><a class="indexterm" name="id2550956"></a><a name="QUEUEPAUSECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
+</h3></div></div></div><a class="indexterm" name="id2550856"></a><a name="QUEUEPAUSECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
     executed on the server host in order to pause the printer queue.</p><p>This command should be a program or script which takes 
     a printer name as its only parameter and stops the printer queue, 
     such that no longer jobs are submitted to the printer.</p><p>This command is not supported by Windows for Workgroups, 
@@ -4673,10 +4652,10 @@
     path in the command as the PATH may not be available to the 
 	server.</p><p><span class="emphasis"><em>No default</em></span></p><p>Example: <span class="emphasis"><em><em class="parameter"><code>queuepause command</code></em> = <code class="literal">disable %p</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551031"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550932"></a>
 
 queueresume command (S)
-</h3></div></div></div><a class="indexterm" name="id2551032"></a><a name="QUEUERESUMECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
+</h3></div></div></div><a class="indexterm" name="id2550933"></a><a name="QUEUERESUMECOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the command to be 
     executed on the server host in order to resume the printer queue. It 
     is the command to undo the behavior that is caused by the 
     previous parameter (<a class="link" href="smb.conf.5.html#QUEUEPAUSECOMMAND">queuepause command</a>).</p><p>This command should be a program or script which takes 
@@ -4691,10 +4670,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>queueresume command</code></em> = <code class="literal">enable %p</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551133"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551034"></a>
 
 read list (S)
-</h3></div></div></div><a class="indexterm" name="id2551134"></a><a name="READLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2551035"></a><a name="READLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is a list of users that are given read-only access to a service. If the connecting user is in this list
 	then they will not be given write access, no matter what the <a class="link" href="smb.conf.5.html#READONLY">read only</a> option is set
 	to. The list can include group names using the syntax described in the <a class="link" href="smb.conf.5.html#INVALIDUSERS">invalid users</a>
@@ -4704,19 +4683,19 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>read list</code></em> = <code class="literal">mary, @students</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551233"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551133"></a>
 
 read only (S)
-</h3></div></div></div><a class="indexterm" name="id2551234"></a><a name="READONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>An inverted synonym is <a class="link" href="smb.conf.5.html#WRITEABLE">writeable</a>.</p><p>If this parameter is <code class="constant">yes</code>, then users 
+</h3></div></div></div><a class="indexterm" name="id2551134"></a><a name="READONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>An inverted synonym is <a class="link" href="smb.conf.5.html#WRITEABLE">writeable</a>.</p><p>If this parameter is <code class="constant">yes</code>, then users 
     of a service may not create or modify files in the service's 
     directory.</p><p>Note that a printable service (<code class="literal">printable = yes</code>)
     will <span class="emphasis"><em>ALWAYS</em></span> allow writing to the directory 
     (user privileges permitting), but only via spooling operations.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>read only</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551310"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551210"></a>
 
 read raw (G)
-</h3></div></div></div><a class="indexterm" name="id2551311"></a><a name="READRAW"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether or not the server 
+</h3></div></div></div><a class="indexterm" name="id2551211"></a><a name="READRAW"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether or not the server 
     will support the raw read SMB requests when transferring data 
     to clients.</p><p>If enabled, raw reads allow reads of 65535 bytes in 
     one packet. This typically provides a major performance benefit.
@@ -4725,20 +4704,20 @@
 	sizes, and for these clients you may need to disable raw reads.</p><p>In general this parameter should be viewed as a system tuning 
 	tool and left severely alone.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>read raw</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551370"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551270"></a>
 
 realm (G)
-</h3></div></div></div><a class="indexterm" name="id2551371"></a><a name="REALM"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies the kerberos realm to use. The realm is 
+</h3></div></div></div><a class="indexterm" name="id2551271"></a><a name="REALM"></a><div class="variablelist"><dl><dt></dt><dd><p>This option specifies the kerberos realm to use. The realm is 
 	used as the ADS equivalent of the NT4 <code class="literal">domain</code>. It
 	is usually set to the DNS name of the kerberos server.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>realm</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>realm</code></em> = <code class="literal">mysambabox.mycompany.com</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551435"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551335"></a>
 
 registry shares (G)
-</h3></div></div></div><a class="indexterm" name="id2551436"></a><a name="REGISTRYSHARES"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2551336"></a><a name="REGISTRYSHARES"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This turns on or off support for share definitions read from
 	registry. Shares defined in <span class="emphasis"><em>smb.conf</em></span> take
 	precedence over shares with the same name defined in
@@ -4753,10 +4732,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>registry shares</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551521"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551421"></a>
 
 remote announce (G)
-</h3></div></div></div><a class="indexterm" name="id2551522"></a><a name="REMOTEANNOUNCE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2551422"></a><a name="REMOTEANNOUNCE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This option allows you to setup <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a>to periodically announce itself 
 	to arbitrary IP addresses with an arbitrary workgroup name.
 	</p><p>
@@ -4780,10 +4759,10 @@
 	See the chapter on Network Browsing in the Samba-HOWTO book.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>remote announce</code></em> = <code class="literal"></code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551626"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551526"></a>
 
 remote browse sync (G)
-</h3></div></div></div><a class="indexterm" name="id2551627"></a><a name="REMOTEBROWSESYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2551527"></a><a name="REMOTEBROWSESYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This option allows you to setup <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> to periodically request 
 	synchronization of browse lists with the master browser of a Samba 
 	server that is on a remote segment. This option will allow you to 
@@ -4815,10 +4794,10 @@
 	each network has its own WINS server.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>remote browse sync</code></em> = <code class="literal"></code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551744"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551639"></a>
 
 rename user script (G)
-</h3></div></div></div><a class="indexterm" name="id2551745"></a><a name="RENAMEUSERSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2551640"></a><a name="RENAMEUSERSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is the full pathname to a script that will be run as root by <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> under special circumstances described below.
 	</p><p>
 	When a user with admin authority or SeAddUserPrivilege rights renames a user (e.g.: from the NT4 User Manager
@@ -4836,10 +4815,10 @@
 	needs to change for other applications using the same directory.
 	</p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>rename user script</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551834"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551729"></a>
 
 reset on zero vc (G)
-</h3></div></div></div><a class="indexterm" name="id2551835"></a><a name="RESETONZEROVC"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2551730"></a><a name="RESETONZEROVC"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean option controls whether an incoming session setup
 	should kill other connections coming from the same IP. This matches
         the default Windows 2003 behaviour.
@@ -4858,10 +4837,10 @@
 
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>reset on zero vc</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551898"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551781"></a>
 
 restrict anonymous (G)
-</h3></div></div></div><a class="indexterm" name="id2551899"></a><a name="RESTRICTANONYMOUS"></a><div class="variablelist"><dl><dt></dt><dd><p>The setting of this parameter determines whether user and
+</h3></div></div></div><a class="indexterm" name="id2551782"></a><a name="RESTRICTANONYMOUS"></a><div class="variablelist"><dl><dt></dt><dd><p>The setting of this parameter determines whether user and
     group list information is returned for an anonymous connection.
     and mirrors the effects of the
 </p><pre class="programlisting">
@@ -4884,16 +4863,16 @@
     by setting <a class="link" href="smb.conf.5.html#GUESTOK">guest ok = yes</a> on any share.
 	</p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>restrict anonymous</code></em> = <code class="literal">0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551982"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551873"></a>
 
 <a name="ROOT"></a>root
-</h3></div></div></div><a class="indexterm" name="id2551983"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#ROOTDIRECTORY">root directory</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552015"></a>
+</h3></div></div></div><a class="indexterm" name="id2551874"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#ROOTDIRECTORY">root directory</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551906"></a>
 
 <a name="ROOTDIR"></a>root dir
-</h3></div></div></div><a class="indexterm" name="id2552016"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#ROOTDIRECTORY">root directory</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552046"></a>
+</h3></div></div></div><a class="indexterm" name="id2551907"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#ROOTDIRECTORY">root directory</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2551938"></a>
 
 root directory (G)
-</h3></div></div></div><a class="indexterm" name="id2552048"></a><a name="ROOTDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>The server will <code class="literal">chroot()</code> (i.e. 
+</h3></div></div></div><a class="indexterm" name="id2551939"></a><a name="ROOTDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>The server will <code class="literal">chroot()</code> (i.e. 
     Change its root directory) to this directory on startup. This is 
     not strictly necessary for secure operation. Even without it the 
     server will deny access to files not in one of the service entries. 
@@ -4916,34 +4895,34 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>root directory</code></em> = <code class="literal">/homes/smb</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552170"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552062"></a>
 
 root postexec (S)
-</h3></div></div></div><a class="indexterm" name="id2552172"></a><a name="ROOTPOSTEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2552063"></a><a name="ROOTPOSTEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is the same as the <em class="parameter"><code>postexec</code></em>
 	parameter except that the command is run as root. This is useful for 
 	unmounting filesystems (such as CDROMs) after a connection is closed.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>root postexec</code></em> = <code class="literal"></code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552219"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552110"></a>
 
 root preexec close (S)
-</h3></div></div></div><a class="indexterm" name="id2552220"></a><a name="ROOTPREEXECCLOSE"></a><div class="variablelist"><dl><dt></dt><dd><p>This is the same as the <em class="parameter"><code>preexec close
+</h3></div></div></div><a class="indexterm" name="id2552112"></a><a name="ROOTPREEXECCLOSE"></a><div class="variablelist"><dl><dt></dt><dd><p>This is the same as the <em class="parameter"><code>preexec close
 	</code></em> parameter except that the command is run as root.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>root preexec close</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552268"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552159"></a>
 
 root preexec (S)
-</h3></div></div></div><a class="indexterm" name="id2552269"></a><a name="ROOTPREEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2552160"></a><a name="ROOTPREEXEC"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is the same as the <em class="parameter"><code>preexec</code></em>
 	parameter except that the command is run as root. This is useful for 
 	mounting filesystems (such as CDROMs) when a connection is opened.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>root preexec</code></em> = <code class="literal"></code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552316"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552207"></a>
 
 security mask (S)
-</h3></div></div></div><a class="indexterm" name="id2552317"></a><a name="SECURITYMASK"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2552208"></a><a name="SECURITYMASK"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter controls what UNIX permission bits will be set when a Windows NT client is manipulating the
 	UNIX permission on a file using the native NT security dialog box.
 	</p><p>
@@ -4962,10 +4941,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>security mask</code></em> = <code class="literal">0770</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552422"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552314"></a>
 
 security (G)
-</h3></div></div></div><a class="indexterm" name="id2552423"></a><a name="SECURITY"></a><div class="variablelist"><dl><dt></dt><dd><p>This option affects how clients respond to 
+</h3></div></div></div><a class="indexterm" name="id2552315"></a><a name="SECURITY"></a><div class="variablelist"><dl><dt></dt><dd><p>This option affects how clients respond to 
     Samba and is one of the most important settings in the <code class="filename">
     smb.conf</code> file.</p><p>The option sets the "security mode bit" in replies to 
     protocol negotiations with <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> to turn share level security on or off. Clients decide 
@@ -5089,10 +5068,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>security</code></em> = <code class="literal">DOMAIN</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553301"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553192"></a>
 
 server schannel (G)
-</h3></div></div></div><a class="indexterm" name="id2553302"></a><a name="SERVERSCHANNEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2553194"></a><a name="SERVERSCHANNEL"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This controls whether the server offers or even demands the use of the netlogon schannel.
 	<a class="link" href="smb.conf.5.html#SERVERSCHANNEL">server schannel = no</a> does not offer the schannel, <a class="link" href="smb.conf.5.html#SERVERSCHANNEL">server schannel = auto</a> offers the schannel but does not enforce it, and <a class="link" href="smb.conf.5.html#SERVERSCHANNEL">server schannel = yes</a> denies access if the client is not able to speak netlogon schannel.
 	This is only the case for Windows NT4 before SP4.
@@ -5103,10 +5082,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>server schannel</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553417"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553308"></a>
 
 server signing (G)
-</h3></div></div></div><a class="indexterm" name="id2553418"></a><a name="SERVERSIGNING"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls whether the server offers or requires
+</h3></div></div></div><a class="indexterm" name="id2553309"></a><a name="SERVERSIGNING"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls whether the server offers or requires
     the client it talks to to use SMB signing. Possible values 
     are <span class="emphasis"><em>auto</em></span>, <span class="emphasis"><em>mandatory</em></span> 
     and <span class="emphasis"><em>disabled</em></span>. 
@@ -5114,10 +5093,10 @@
     When set to mandatory, SMB signing is required and if set 
 	to disabled, SMB signing is not offered either.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>server signing</code></em> = <code class="literal">Disabled</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553478"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553370"></a>
 
 server string (G)
-</h3></div></div></div><a class="indexterm" name="id2553479"></a><a name="SERVERSTRING"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls what string will show up in the printer comment box in print 
+</h3></div></div></div><a class="indexterm" name="id2553371"></a><a name="SERVERSTRING"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls what string will show up in the printer comment box in print 
         manager and next to the IPC connection in <code class="literal">net view</code>. It 
         can be any string that you wish to show to your users.</p><p>It also sets what will appear in browse lists next 
 	to the machine name.</p><p>A <em class="parameter"><code>%v</code></em> will be replaced with the Samba 
@@ -5126,10 +5105,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>server string</code></em> = <code class="literal">University of GNUs Samba Server</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553570"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553461"></a>
 
 set directory (S)
-</h3></div></div></div><a class="indexterm" name="id2553571"></a><a name="SETDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2553462"></a><a name="SETDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	If <code class="literal">set directory = no</code>, then 	users of the 
 	service may not use the setdir command to change directory.
 	</p><p>
@@ -5138,10 +5117,10 @@
 	for details.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>set directory</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553630"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553521"></a>
 
 set primary group script (G)
-</h3></div></div></div><a class="indexterm" name="id2553631"></a><a name="SETPRIMARYGROUPSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>Thanks to the Posix subsystem in NT a Windows User has a
+</h3></div></div></div><a class="indexterm" name="id2553522"></a><a name="SETPRIMARYGROUPSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>Thanks to the Posix subsystem in NT a Windows User has a
 	primary group in addition to the auxiliary groups.  This script
 	sets the primary group in the unix userdatase when an
 	administrator sets the primary group from the windows user
@@ -5153,10 +5132,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>set primary group script</code></em> = <code class="literal">/usr/sbin/usermod -g '%g' '%u'</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553712"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553603"></a>
 
 set quota command (G)
-</h3></div></div></div><a class="indexterm" name="id2553713"></a><a name="SETQUOTACOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>The <code class="literal">set quota command</code> should only be used 
+</h3></div></div></div><a class="indexterm" name="id2553604"></a><a name="SETQUOTACOMMAND"></a><div class="variablelist"><dl><dt></dt><dd><p>The <code class="literal">set quota command</code> should only be used 
 	whenever there is no operating system API available from the OS that 
 	samba can use.</p><p>This option is only available if Samba was configured with the argument <code class="literal">--with-sys-quotas</code> or 
 	on linux when <code class="literal">./configure --with-quotas</code> was used and a working quota api 
@@ -5166,10 +5145,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>set quota command</code></em> = <code class="literal">/usr/local/sbin/set_quota</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553875"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553766"></a>
 
 share modes (S)
-</h3></div></div></div><a class="indexterm" name="id2553876"></a><a name="SHAREMODES"></a><div class="variablelist"><dl><dt></dt><dd><p>This enables or disables the honoring of 
+</h3></div></div></div><a class="indexterm" name="id2553767"></a><a name="SHAREMODES"></a><div class="variablelist"><dl><dt></dt><dd><p>This enables or disables the honoring of 
 	the <em class="parameter"><code>share modes</code></em> during a file open. These 
 	modes are used by clients to gain exclusive read or write access 
 	to a file.</p><p>These open modes are not directly supported by UNIX, so
@@ -5182,20 +5161,20 @@
 	by default.</p><p>You should <span class="emphasis"><em>NEVER</em></span> turn this parameter 
 	off as many Windows applications will break if you do so.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>share modes</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553969"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553860"></a>
 
 short preserve case (S)
-</h3></div></div></div><a class="indexterm" name="id2553970"></a><a name="SHORTPRESERVECASE"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2553861"></a><a name="SHORTPRESERVECASE"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean parameter controls if new files which conform to 8.3 syntax, that is all in upper case and of
 	suitable length, are created upper case, or if they are forced to be the <a class="link" href="smb.conf.5.html#DEFAULTCASE">default case</a>.
 	This  option can be use with <a class="link" href="smb.conf.5.html#PRESERVECASE">preserve case = yes</a> to permit long filenames
 	to retain their case, while short names are lowered.
 	</p><p>See the section on <a class="link" href="#NAMEMANGLINGSECT" title="NAME MANGLING">NAME MANGLING</a>.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>short preserve case</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554048"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553939"></a>
 
 show add printer wizard (G)
-</h3></div></div></div><a class="indexterm" name="id2554050"></a><a name="SHOWADDPRINTERWIZARD"></a><div class="variablelist"><dl><dt></dt><dd><p>With the introduction of MS-RPC based printing support
+</h3></div></div></div><a class="indexterm" name="id2553940"></a><a name="SHOWADDPRINTERWIZARD"></a><div class="variablelist"><dl><dt></dt><dd><p>With the introduction of MS-RPC based printing support
     for Windows NT/2000 client in Samba 2.2, a "Printers..." folder will 
     appear on Samba hosts in the share listing.  Normally this folder will 
     contain an icon for the MS Add Printer Wizard (APW).  However, it is 
@@ -5213,10 +5192,10 @@
 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This does not prevent the same user from having 
 		administrative privilege on an individual printer.</p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>show add printer wizard</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554132"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554023"></a>
 
 shutdown script (G)
-</h3></div></div></div><a class="indexterm" name="id2554133"></a><a name="SHUTDOWNSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This a full path name to a script called by 
+</h3></div></div></div><a class="indexterm" name="id2554024"></a><a name="SHUTDOWNSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This a full path name to a script called by 
 	 <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> that should 
 	start a shutdown procedure.</p><p>If the connected user posseses the <code class="constant">SeRemoteShutdownPrivilege</code>,
 	right, this command will be run as user.</p><p>The %z %t %r %f variables are expanded as follows:</p><div class="itemizedlist"><ul type="disc"><li><p><em class="parameter"><code>%z</code></em> will be substituted with the
@@ -5241,10 +5220,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>shutdown script</code></em> = <code class="literal">/usr/local/samba/sbin/shutdown %m %t %r %f</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554285"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554177"></a>
 
 smb encrypt (S)
-</h3></div></div></div><a class="indexterm" name="id2554286"></a><a name="SMBENCRYPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a new feature introduced with Samba 3.2 and above. It is an
+</h3></div></div></div><a class="indexterm" name="id2554178"></a><a name="SMBENCRYPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a new feature introduced with Samba 3.2 and above. It is an
     extension to the SMB/CIFS protocol negotiated as part of the UNIX extensions.
     SMB encryption uses the GSSAPI (SSPI on Windows) ability to encrypt
     and sign every request/response in a SMB protocol stream. When
@@ -5273,10 +5252,10 @@
     When set to mandatory, SMB encryption is required and if set 
     to disabled, SMB encryption can not be negotiated.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>smb encrypt</code></em> = <code class="literal">auto</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554402"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554283"></a>
 
 smb passwd file (G)
-</h3></div></div></div><a class="indexterm" name="id2554403"></a><a name="SMBPASSWDFILE"></a><div class="variablelist"><dl><dt></dt><dd><p>This option sets the path to the encrypted smbpasswd file. By
+</h3></div></div></div><a class="indexterm" name="id2554284"></a><a name="SMBPASSWDFILE"></a><div class="variablelist"><dl><dt></dt><dd><p>This option sets the path to the encrypted smbpasswd file. By
     default the path to the smbpasswd file  is compiled into Samba.</p><p>
     An example of use is:
 </p><pre class="programlisting">
@@ -5284,15 +5263,15 @@
 </pre><p>
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>smb passwd file</code></em> = <code class="literal">${prefix}/private/smbpasswd</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554456"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554337"></a>
 
 smb ports (G)
-</h3></div></div></div><a class="indexterm" name="id2554457"></a><a name="SMBPORTS"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies which ports the server should listen on for SMB traffic.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>smb ports</code></em> = <code class="literal">445 139</code>
+</h3></div></div></div><a class="indexterm" name="id2554338"></a><a name="SMBPORTS"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies which ports the server should listen on for SMB traffic.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>smb ports</code></em> = <code class="literal">445 139</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554498"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554378"></a>
 
 socket address (G)
-</h3></div></div></div><a class="indexterm" name="id2554499"></a><a name="SOCKETADDRESS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to control what 
+</h3></div></div></div><a class="indexterm" name="id2554380"></a><a name="SOCKETADDRESS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to control what 
 	address Samba will listen for connections on. This is used to 
 	support multiple virtual interfaces on the one server, each 
 	with a different configuration.</p><p>By default Samba will accept connections on any 
@@ -5300,10 +5279,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>socket address</code></em> = <code class="literal">192.168.2.20</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554563"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554444"></a>
 
 socket options (G)
-</h3></div></div></div><a class="indexterm" name="id2554564"></a><a name="SOCKETOPTIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to set socket options 
+</h3></div></div></div><a class="indexterm" name="id2554445"></a><a name="SOCKETOPTIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option allows you to set socket options 
     to be used when talking with the client.</p><p>Socket options are controls on the networking layer 
     of the operating systems which allow the connection to be 
     tuned.</p><p>This option will typically be used to tune your Samba  server
@@ -5331,17 +5310,17 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>socket options</code></em> = <code class="literal">IPTOS_LOWDELAY</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554773"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554654"></a>
 
 stat cache (G)
-</h3></div></div></div><a class="indexterm" name="id2554774"></a><a name="STATCACHE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines if <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will use a cache in order to 
+</h3></div></div></div><a class="indexterm" name="id2554655"></a><a name="STATCACHE"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines if <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a> will use a cache in order to 
 	speed up case insensitive name mappings. You should never need 
 	to change this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>stat cache</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554824"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554705"></a>
 
 store dos attributes (S)
-</h3></div></div></div><a class="indexterm" name="id2554825"></a><a name="STOREDOSATTRIBUTES"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2554706"></a><a name="STOREDOSATTRIBUTES"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	If this parameter is set Samba attempts to first read DOS attributes (SYSTEM, HIDDEN, ARCHIVE or
 	READ-ONLY) from a filesystem extended attribute, before mapping DOS attributes to UNIX permission bits (such
 	as occurs with <a class="link" href="smb.conf.5.html#MAPHIDDEN">map hidden</a> and <a class="link" href="smb.conf.5.html#MAPREADONLY">map readonly</a>).  When set, DOS
@@ -5353,10 +5332,10 @@
 	extended attributes to work, also extended attributes must be compiled into the Linux kernel.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>store dos attributes</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554946"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554827"></a>
 
 strict allocate (S)
-</h3></div></div></div><a class="indexterm" name="id2554947"></a><a name="STRICTALLOCATE"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean that controls the handling of 
+</h3></div></div></div><a class="indexterm" name="id2554828"></a><a name="STRICTALLOCATE"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean that controls the handling of 
     disk space allocation in the server. When this is set to <code class="constant">yes</code> 
     the server will change from UNIX behaviour of not committing real
     disk storage blocks when a file is extended to the Windows behaviour
@@ -5368,10 +5347,10 @@
     out of quota messages on systems that are restricting the disk quota
     of users.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>strict allocate</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555016"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554897"></a>
 
 strict locking (S)
-</h3></div></div></div><a class="indexterm" name="id2555017"></a><a name="STRICTLOCKING"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2554898"></a><a name="STRICTLOCKING"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is an enumerated type that controls the handling of file locking in the server. When this is set to <code class="constant">yes</code>,
 	the server will check every read and write access for file locks, and deny access if locks exist. This can be slow on 
 	some systems.
@@ -5387,10 +5366,10 @@
 	 <code class="literal">strict locking = no</code> is acceptable.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>strict locking</code></em> = <code class="literal">Auto</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555095"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554976"></a>
 
 strict sync (S)
-</h3></div></div></div><a class="indexterm" name="id2555096"></a><a name="STRICTSYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>Many Windows applications (including the Windows 98 explorer
+</h3></div></div></div><a class="indexterm" name="id2554977"></a><a name="STRICTSYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>Many Windows applications (including the Windows 98 explorer
     shell) seem to confuse flushing buffer contents to disk with doing
     a sync to disk. Under UNIX, a sync call forces the process to be
     suspended until the kernel has ensured that all outstanding data in
@@ -5404,10 +5383,10 @@
     addition, this fixes many performance problems that people have
     reported with the new Windows98 explorer shell file copies.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>strict sync</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555160"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555041"></a>
 
 svcctl list (G)
-</h3></div></div></div><a class="indexterm" name="id2555161"></a><a name="SVCCTLLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>This option defines a list of init scripts that smbd
+</h3></div></div></div><a class="indexterm" name="id2555042"></a><a name="SVCCTLLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>This option defines a list of init scripts that smbd
     will use for starting and stopping Unix services via the Win32 
     ServiceControl API.  This allows Windows administrators to 
     utilize the MS Management Console plug-ins to manage a 
@@ -5420,10 +5399,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>svcctl list</code></em> = <code class="literal">cups postfix portmap httpd</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555245"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555126"></a>
 
 sync always (S)
-</h3></div></div></div><a class="indexterm" name="id2555246"></a><a name="SYNCALWAYS"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean parameter that controls 
+</h3></div></div></div><a class="indexterm" name="id2555127"></a><a name="SYNCALWAYS"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean parameter that controls 
     whether writes will always be written to stable storage before 
     the write call returns. If this is <code class="constant">no</code> then the server will be 
     guided by the client's request in each write call (clients can 
@@ -5434,19 +5413,19 @@
     <code class="constant">yes</code> in order for this parameter to have 
     any affect.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>sync always</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555316"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555197"></a>
 
 syslog only (G)
-</h3></div></div></div><a class="indexterm" name="id2555317"></a><a name="SYSLOGONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2555198"></a><a name="SYSLOGONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
     If this parameter is set then Samba debug messages are logged into the system 
     syslog only, and not to the debug log files. There still will be some
 	logging to log.[sn]mbd even if <span class="emphasis"><em>syslog only</em></span> is enabled.
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>syslog only</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555363"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555244"></a>
 
 syslog (G)
-</h3></div></div></div><a class="indexterm" name="id2555364"></a><a name="SYSLOG"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2555245"></a><a name="SYSLOG"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This parameter maps how Samba debug messages are logged onto the system syslog logging levels. 
     Samba debug level zero maps onto syslog <code class="constant">LOG_ERR</code>, debug level one maps onto 
     <code class="constant">LOG_WARNING</code>, debug level two maps onto <code class="constant">LOG_NOTICE</code>,
@@ -5457,10 +5436,10 @@
     logging to log.[sn]mbd even if <span class="emphasis"><em>syslog only</em></span> is enabled.
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>syslog</code></em> = <code class="literal">1</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555434"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555315"></a>
 
 template homedir (G)
-</h3></div></div></div><a class="indexterm" name="id2555435"></a><a name="TEMPLATEHOMEDIR"></a><div class="variablelist"><dl><dt></dt><dd><p>When filling out the user information for a Windows NT 
+</h3></div></div></div><a class="indexterm" name="id2555316"></a><a name="TEMPLATEHOMEDIR"></a><div class="variablelist"><dl><dt></dt><dd><p>When filling out the user information for a Windows NT 
 	user, the <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> daemon  uses this
 	parameter to fill in the home directory for that user. If the
 	string <em class="parameter"><code>%D</code></em> is present it
@@ -5468,31 +5447,31 @@
 	string <em class="parameter"><code>%U</code></em> is present it
 	is substituted with the user's Windows  NT user name.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>template homedir</code></em> = <code class="literal">/home/%D/%U</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555499"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555380"></a>
 
 template shell (G)
-</h3></div></div></div><a class="indexterm" name="id2555500"></a><a name="TEMPLATESHELL"></a><div class="variablelist"><dl><dt></dt><dd><p>When filling out the user information for a Windows NT 
+</h3></div></div></div><a class="indexterm" name="id2555381"></a><a name="TEMPLATESHELL"></a><div class="variablelist"><dl><dt></dt><dd><p>When filling out the user information for a Windows NT 
 	user, the <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> daemon uses this
-	parameter to fill in the login shell for that user.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555539"></a>
+	parameter to fill in the login shell for that user.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555419"></a>
 
 time offset (G)
-</h3></div></div></div><a class="indexterm" name="id2555540"></a><a name="TIMEOFFSET"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a setting in minutes to add 
+</h3></div></div></div><a class="indexterm" name="id2555420"></a><a name="TIMEOFFSET"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a setting in minutes to add 
 	to the normal GMT to local time conversion. This is useful if 
 	you are serving a lot of PCs that have incorrect daylight 
 	saving time handling.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>time offset</code></em> = <code class="literal">0</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>time offset</code></em> = <code class="literal">60</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555598"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555479"></a>
 
 time server (G)
-</h3></div></div></div><a class="indexterm" name="id2555599"></a><a name="TIMESERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> advertises itself as a time server to Windows 
+</h3></div></div></div><a class="indexterm" name="id2555480"></a><a name="TIMESERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter determines if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> advertises itself as a time server to Windows 
 clients.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>time server</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555648"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555529"></a>
 
 unix charset (G)
-</h3></div></div></div><a class="indexterm" name="id2555650"></a><a name="UNIXCHARSET"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies the charset the unix machine 
+</h3></div></div></div><a class="indexterm" name="id2555530"></a><a name="UNIXCHARSET"></a><div class="variablelist"><dl><dt></dt><dd><p>Specifies the charset the unix machine 
 		Samba runs on uses. Samba needs to know this in order to be able to 
 		convert text to the charsets other SMB clients use.
 	</p><p>This is also the charset Samba will use when specifying arguments 
@@ -5501,20 +5480,20 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>unix charset</code></em> = <code class="literal">ASCII</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555714"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555595"></a>
 
 unix extensions (G)
-</h3></div></div></div><a class="indexterm" name="id2555716"></a><a name="UNIXEXTENSIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether Samba 
+</h3></div></div></div><a class="indexterm" name="id2555596"></a><a name="UNIXEXTENSIONS"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether Samba 
     implments the CIFS UNIX extensions, as defined by HP. 
     These extensions enable Samba to better serve UNIX CIFS clients
     by supporting features such as symbolic links, hard links, etc...
     These extensions require a similarly enabled client, and are of
     no current use to Windows clients.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>unix extensions</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555762"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555643"></a>
 
 unix password sync (G)
-</h3></div></div></div><a class="indexterm" name="id2555763"></a><a name="UNIXPASSWORDSYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether Samba 
+</h3></div></div></div><a class="indexterm" name="id2555644"></a><a name="UNIXPASSWORDSYNC"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean parameter controls whether Samba 
     attempts to synchronize the UNIX password with the SMB password 
     when the encrypted SMB password in the smbpasswd file is changed. 
     If this is set to <code class="constant">yes</code> the program specified in the <em class="parameter"><code>passwd
@@ -5523,10 +5502,10 @@
     old UNIX password (as the SMB password change code has no 
 	access to the old password cleartext, only the new).</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>unix password sync</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555823"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555704"></a>
 
 update encrypted (G)
-</h3></div></div></div><a class="indexterm" name="id2555824"></a><a name="UPDATEENCRYPTED"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2555705"></a><a name="UPDATEENCRYPTED"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean parameter allows a user logging on with a plaintext password to have their encrypted (hashed)
 	password in the smbpasswd file to be updated automatically as they log on. This option allows a site to
 	migrate from plaintext password authentication (users authenticate with plaintext password over the
@@ -5544,10 +5523,10 @@
 	passwords.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>update encrypted</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555941"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555822"></a>
 
 use client driver (S)
-</h3></div></div></div><a class="indexterm" name="id2555942"></a><a name="USECLIENTDRIVER"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter applies only to Windows NT/2000
+</h3></div></div></div><a class="indexterm" name="id2555823"></a><a name="USECLIENTDRIVER"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter applies only to Windows NT/2000
     clients.  It has no effect on Windows 95/98/ME clients.  When 
     serving a printer to Windows NT/2000 clients without first installing
     a valid printer driver on the Samba host, the client will be required
@@ -5572,10 +5551,10 @@
     on a print share which has valid print driver installed on the Samba 
 	server.</em></span></p><p>Default: <span class="emphasis"><em><em class="parameter"><code>use client driver</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556022"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555914"></a>
 
 use kerberos keytab (G)
-</h3></div></div></div><a class="indexterm" name="id2556023"></a><a name="USEKERBEROSKEYTAB"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2555916"></a><a name="USEKERBEROSKEYTAB"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	Specifies whether Samba should attempt to maintain service principals in the systems
 	keytab file for <code class="constant">host/FQDN</code> and <code class="constant">cifs/FQDN</code>.
 	</p><p>
@@ -5587,10 +5566,10 @@
 </pre><p>
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>use kerberos keytab</code></em> = <code class="literal">False</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556091"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555983"></a>
 
 use mmap (G)
-</h3></div></div></div><a class="indexterm" name="id2556092"></a><a name="USEMMAP"></a><div class="variablelist"><dl><dt></dt><dd><p>This global parameter determines if the tdb internals of Samba can
+</h3></div></div></div><a class="indexterm" name="id2555984"></a><a name="USEMMAP"></a><div class="variablelist"><dl><dt></dt><dd><p>This global parameter determines if the tdb internals of Samba can
     depend on mmap working correctly on the running system. Samba requires a coherent
     mmap/read-write system memory cache. Currently only HPUX does not have such a
     coherent cache, and so this parameter is set to <code class="constant">no</code> by
@@ -5599,10 +5578,10 @@
     the tdb internal code.
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>use mmap</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556143"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556035"></a>
 
 username level (G)
-</h3></div></div></div><a class="indexterm" name="id2556144"></a><a name="USERNAMELEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option helps Samba to try and 'guess' at 
+</h3></div></div></div><a class="indexterm" name="id2556036"></a><a name="USERNAMELEVEL"></a><div class="variablelist"><dl><dt></dt><dd><p>This option helps Samba to try and 'guess' at 
     the real UNIX username, as many DOS clients send an all-uppercase 
     username. By default Samba tries all lowercase, followed by the 
     username with the first letter capitalized, and fails if the 
@@ -5617,10 +5596,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>username level</code></em> = <code class="literal">5</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556224"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556117"></a>
 
 username map script (G)
-</h3></div></div></div><a class="indexterm" name="id2556226"></a><a name="USERNAMEMAPSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This script is a mutually exclusive alternative to the 
+</h3></div></div></div><a class="indexterm" name="id2556118"></a><a name="USERNAMEMAPSCRIPT"></a><div class="variablelist"><dl><dt></dt><dd><p>This script is a mutually exclusive alternative to the 
 	<a class="link" href="smb.conf.5.html#USERNAMEMAP">username map</a> parameter.  This parameter 
 	specifies and external program or script that must accept a single 
 	command line option (the username transmitted in the authentication
@@ -5631,10 +5610,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>username map script</code></em> = <code class="literal">/etc/samba/scripts/mapusers.sh</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556301"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556193"></a>
 
 username map (G)
-</h3></div></div></div><a class="indexterm" name="id2556302"></a><a name="USERNAMEMAP"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2556194"></a><a name="USERNAMEMAP"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This option allows you to specify a file containing a mapping of usernames from the clients to the server.
 	This can be used for several purposes. The most common is to map usernames that users use on DOS or Windows
 	machines to those that the UNIX box uses. The other is to map multiple users to a single username so that they
@@ -5718,16 +5697,16 @@
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>username map</code></em> = <code class="literal">
 # no username map</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556581"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556473"></a>
 
 <a name="USER"></a>user
-</h3></div></div></div><a class="indexterm" name="id2556582"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#USERNAME">username</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556613"></a>
+</h3></div></div></div><a class="indexterm" name="id2556474"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#USERNAME">username</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556505"></a>
 
 <a name="USERS"></a>users
-</h3></div></div></div><a class="indexterm" name="id2556614"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#USERNAME">username</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556644"></a>
+</h3></div></div></div><a class="indexterm" name="id2556506"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#USERNAME">username</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556537"></a>
 
 username (S)
-</h3></div></div></div><a class="indexterm" name="id2556645"></a><a name="USERNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>Multiple users may be specified in a comma-delimited 
+</h3></div></div></div><a class="indexterm" name="id2556538"></a><a name="USERNAME"></a><div class="variablelist"><dl><dt></dt><dd><p>Multiple users may be specified in a comma-delimited 
     list, in which case the supplied password will be tested against 
     each username in turn (left to right).</p><p>The <em class="parameter"><code>username</code></em> line is needed only when 
     the PC is unable to supply its own username. This is the case 
@@ -5765,28 +5744,28 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>username</code></em> = <code class="literal">fred, mary, jack, jane, @users, @pcgroup</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556814"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556707"></a>
 
 usershare allow guests (G)
-</h3></div></div></div><a class="indexterm" name="id2556816"></a><a name="USERSHAREALLOWGUESTS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether user defined shares are allowed
+</h3></div></div></div><a class="indexterm" name="id2556708"></a><a name="USERSHAREALLOWGUESTS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether user defined shares are allowed
 	to be accessed by non-authenticated users or not. It is the equivalent
 	of allowing people who can create a share the option of setting
 	<em class="parameter"><code>guest ok = yes</code></em> in a share
 	definition. Due to the security sensitive nature of this the default
 	is set to off.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>usershare allow guests</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556867"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556760"></a>
 
 usershare max shares (G)
-</h3></div></div></div><a class="indexterm" name="id2556868"></a><a name="USERSHAREMAXSHARES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of user defined shares
+</h3></div></div></div><a class="indexterm" name="id2556761"></a><a name="USERSHAREMAXSHARES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of user defined shares
 	that are allowed to be created by users belonging to the group owning the
 	usershare directory. If set to zero (the default) user defined shares are ignored.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>usershare max shares</code></em> = <code class="literal">0</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556913"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556805"></a>
 
 usershare owner only (G)
-</h3></div></div></div><a class="indexterm" name="id2556914"></a><a name="USERSHAREOWNERONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether the pathname exported by
+</h3></div></div></div><a class="indexterm" name="id2556806"></a><a name="USERSHAREOWNERONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether the pathname exported by
 	a user defined shares must be owned by the user creating the
 	user defined share or not. If set to True (the default) then
 	smbd checks that the directory path being shared is owned by
@@ -5796,10 +5775,10 @@
 	regardless of who owns it.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>usershare owner only</code></em> = <code class="literal">True</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556962"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556855"></a>
 
 usershare path (G)
-</h3></div></div></div><a class="indexterm" name="id2556964"></a><a name="USERSHAREPATH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the absolute path of the directory on the
+</h3></div></div></div><a class="indexterm" name="id2556856"></a><a name="USERSHAREPATH"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the absolute path of the directory on the
 	filesystem used to store the user defined share definition files.
 	This directory must be owned by root, and have no access for
 	other, and be writable only by the group owner. In addition the
@@ -5820,10 +5799,10 @@
 	In this case, only members of the group "power_users" can create user defined shares.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>usershare path</code></em> = <code class="literal">NULL</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557033"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556926"></a>
 
 usershare prefix allow list (G)
-</h3></div></div></div><a class="indexterm" name="id2557034"></a><a name="USERSHAREPREFIXALLOWLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies a list of absolute pathnames
+</h3></div></div></div><a class="indexterm" name="id2556927"></a><a name="USERSHAREPREFIXALLOWLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies a list of absolute pathnames
 	the root of which are allowed to be exported by user defined share definitions.
 	If the pathname exported doesn't start with one of the strings in this
 	list the user defined share will not be allowed. This allows the Samba
@@ -5838,10 +5817,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>usershare prefix allow list</code></em> = <code class="literal">/home /data /space</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557106"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556998"></a>
 
 usershare prefix deny list (G)
-</h3></div></div></div><a class="indexterm" name="id2557107"></a><a name="USERSHAREPREFIXDENYLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies a list of absolute pathnames
+</h3></div></div></div><a class="indexterm" name="id2556999"></a><a name="USERSHAREPREFIXDENYLIST"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies a list of absolute pathnames
 	the root of which are NOT allowed to be exported by user defined share definitions.
 	If the pathname exported starts with one of the strings in this
 	list the user defined share will not be allowed. Any pathname not
@@ -5857,10 +5836,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>usershare prefix deny list</code></em> = <code class="literal">/etc /dev /private</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557181"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557073"></a>
 
 usershare template share (G)
-</h3></div></div></div><a class="indexterm" name="id2557182"></a><a name="USERSHARETEMPLATESHARE"></a><div class="variablelist"><dl><dt></dt><dd><p>User defined shares only have limited possible parameters
+</h3></div></div></div><a class="indexterm" name="id2557074"></a><a name="USERSHARETEMPLATESHARE"></a><div class="variablelist"><dl><dt></dt><dd><p>User defined shares only have limited possible parameters
 	such as path, guest ok etc. This parameter allows usershares to
 	"cloned" from an existing share. If "usershare template share"
 	is set to the name of an existing share, then all usershares
@@ -5875,10 +5854,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>usershare template share</code></em> = <code class="literal">template_share</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557253"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557146"></a>
 
 use sendfile (S)
-</h3></div></div></div><a class="indexterm" name="id2557254"></a><a name="USESENDFILE"></a><div class="variablelist"><dl><dt></dt><dd><p>If this parameter is <code class="constant">yes</code>, and the <code class="constant">sendfile()</code> 
+</h3></div></div></div><a class="indexterm" name="id2557147"></a><a name="USESENDFILE"></a><div class="variablelist"><dl><dt></dt><dd><p>If this parameter is <code class="constant">yes</code>, and the <code class="constant">sendfile()</code> 
     system call is supported by the underlying operating system, then some SMB read calls 
     (mainly ReadAndX and ReadRaw) will use the more efficient sendfile system call for files that
     are exclusively oplocked. This may make more efficient use of the system CPU's
@@ -5887,10 +5866,10 @@
     Windows 9x (using sendfile from Linux will cause these clients to fail).
     </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>use sendfile</code></em> = <code class="literal">false</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557311"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557203"></a>
 
 use spnego (G)
-</h3></div></div></div><a class="indexterm" name="id2557312"></a><a name="USESPNEGO"></a><div class="variablelist"><dl><dt></dt><dd><p>This variable controls controls whether samba will try 
+</h3></div></div></div><a class="indexterm" name="id2557204"></a><a name="USESPNEGO"></a><div class="variablelist"><dl><dt></dt><dd><p>This variable controls controls whether samba will try 
     to use Simple and Protected NEGOciation (as specified by rfc2478) with 
     WindowsXP and Windows2000 clients to agree upon an authentication mechanism. 
 </p><p>
@@ -5898,10 +5877,10 @@
     implementation, there is no reason this should ever be
 	disabled.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>use spnego</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557360"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557252"></a>
 
 utmp directory (G)
-</h3></div></div></div><a class="indexterm" name="id2557361"></a><a name="UTMPDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is only available if Samba has 
+</h3></div></div></div><a class="indexterm" name="id2557254"></a><a name="UTMPDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is only available if Samba has 
 	been configured and compiled with the option <code class="literal">
 	--with-utmp</code>. It specifies a directory pathname that is
 	used to store the utmp or utmpx files (depending on the UNIX system) that
@@ -5913,10 +5892,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>utmp directory</code></em> = <code class="literal">/var/run/utmp</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557438"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557330"></a>
 
 utmp (G)
-</h3></div></div></div><a class="indexterm" name="id2557439"></a><a name="UTMP"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2557332"></a><a name="UTMP"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This boolean parameter is only available if Samba has been configured and compiled  
 	with the option <code class="literal">--with-utmp</code>. If set to 
 	 <code class="constant">yes</code> then Samba will attempt to add utmp or utmpx records 
@@ -5928,10 +5907,10 @@
 	to find this number.  This may impede performance on large installations. 
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>utmp</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557501"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557393"></a>
 
 valid users (S)
-</h3></div></div></div><a class="indexterm" name="id2557502"></a><a name="VALIDUSERS"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2557394"></a><a name="VALIDUSERS"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This is a list of users that should be allowed to login to this service. Names starting with 
     '@', '+' and  '&amp;' are interpreted using the same rules as described in the 
     <em class="parameter"><code>invalid users</code></em> parameter.
@@ -5947,10 +5926,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>valid users</code></em> = <code class="literal">greg, @pcusers</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557592"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557484"></a>
 
 -valid (S)
-</h3></div></div></div><a class="indexterm" name="id2557593"></a><a name="-VALID"></a><div class="variablelist"><dl><dt></dt><dd><p> This parameter indicates whether a share is 
+</h3></div></div></div><a class="indexterm" name="id2557486"></a><a name="-VALID"></a><div class="variablelist"><dl><dt></dt><dd><p> This parameter indicates whether a share is 
 	valid and thus can be used. When this parameter is set to false, 
 	the share will be in no way visible nor accessible.
 	</p><p>
@@ -5959,10 +5938,10 @@
 	Samba uses this option internally to mark shares as deleted.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>-valid</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557641"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557534"></a>
 
 veto files (S)
-</h3></div></div></div><a class="indexterm" name="id2557642"></a><a name="VETOFILES"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2557535"></a><a name="VETOFILES"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This is a list of files and directories that are neither visible nor accessible.  Each entry in 
 	the list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' 
 	can be used to specify multiple files or directories as in DOS wildcards.
@@ -5993,10 +5972,10 @@
 </pre><p>
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>veto files</code></em> = <code class="literal">No files or directories are vetoed.</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557760"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557652"></a>
 
 veto oplock files (S)
-</h3></div></div></div><a class="indexterm" name="id2557761"></a><a name="VETOOPLOCKFILES"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2557654"></a><a name="VETOOPLOCKFILES"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter is only valid when the <a class="link" href="smb.conf.5.html#OPLOCKS">oplocks</a>
 	parameter is turned on for a share. It allows the Samba administrator
 	to selectively turn off the granting of oplocks on selected files that
@@ -6017,31 +5996,31 @@
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>veto oplock files</code></em> = <code class="literal">
 # No files are vetoed for oplock grants</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557853"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557746"></a>
 
 <a name="VFSOBJECT"></a>vfs object
-</h3></div></div></div><a class="indexterm" name="id2557854"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#VFSOBJECTS">vfs objects</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557885"></a>
+</h3></div></div></div><a class="indexterm" name="id2557747"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#VFSOBJECTS">vfs objects</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557778"></a>
 
 vfs objects (S)
-</h3></div></div></div><a class="indexterm" name="id2557886"></a><a name="VFSOBJECTS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the backend names which 
+</h3></div></div></div><a class="indexterm" name="id2557779"></a><a name="VFSOBJECTS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the backend names which 
 	are used for Samba VFS I/O operations.  By default, normal 
 	disk I/O operations are used but these can be overloaded 
 	with one or more VFS objects. </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>vfs objects</code></em> = <code class="literal"></code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>vfs objects</code></em> = <code class="literal">extd_audit recycle</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557945"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557838"></a>
 
 volume (S)
-</h3></div></div></div><a class="indexterm" name="id2557946"></a><a name="VOLUME"></a><div class="variablelist"><dl><dt></dt><dd><p>This allows you to override the volume label 
+</h3></div></div></div><a class="indexterm" name="id2557839"></a><a name="VOLUME"></a><div class="variablelist"><dl><dt></dt><dd><p>This allows you to override the volume label 
 	returned for a share. Useful for CDROMs with installation programs 
 	that insist on a particular volume label.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>volume</code></em> = <code class="literal">
 # the name of the share</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557989"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557881"></a>
 
 wide links (S)
-</h3></div></div></div><a class="indexterm" name="id2557990"></a><a name="WIDELINKS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether or not links 
+</h3></div></div></div><a class="indexterm" name="id2557882"></a><a name="WIDELINKS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether or not links 
 	in the UNIX file system may be followed by the server. Links 
 	that point to areas within the directory tree exported by the 
 	server are always allowed; this parameter controls access only 
@@ -6049,10 +6028,10 @@
 	effect on your server performance due to the extra system calls 
 	that Samba has to  do in order to perform the link checks.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>wide links</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558041"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557933"></a>
 
 winbind cache time (G)
-</h3></div></div></div><a class="indexterm" name="id2558042"></a><a name="WINBINDCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of 
+</h3></div></div></div><a class="indexterm" name="id2557934"></a><a name="WINBINDCACHETIME"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of 
 	seconds the <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> daemon will cache 
 	user and group information before querying a Windows NT server 
 	again.</p><p>
@@ -6060,10 +6039,10 @@
 	evaluated in real time unless the <a class="link" href="smb.conf.5.html#WINBINDOFFLINELOGON">winbind   offline logon</a> option has been enabled.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind cache time</code></em> = <code class="literal">300</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558112"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558005"></a>
 
 winbind enum groups (G)
-</h3></div></div></div><a class="indexterm" name="id2558113"></a><a name="WINBINDENUMGROUPS"></a><div class="variablelist"><dl><dt></dt><dd><p>On large installations using <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> it may be necessary to suppress 
+</h3></div></div></div><a class="indexterm" name="id2558006"></a><a name="WINBINDENUMGROUPS"></a><div class="variablelist"><dl><dt></dt><dd><p>On large installations using <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> it may be necessary to suppress 
 	the enumeration of groups through the <code class="literal">setgrent()</code>,
 	<code class="literal">getgrent()</code> and
 	<code class="literal">endgrent()</code> group of system calls.  If
@@ -6071,10 +6050,10 @@
 	<code class="constant">no</code>, calls to the <code class="literal">getgrent()</code> system
 	call will not return any data. </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>Turning off group enumeration may cause some programs to behave oddly.  </p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind enum groups</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558203"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558095"></a>
 
 winbind enum users (G)
-</h3></div></div></div><a class="indexterm" name="id2558204"></a><a name="WINBINDENUMUSERS"></a><div class="variablelist"><dl><dt></dt><dd><p>On large installations using <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> it may be
+</h3></div></div></div><a class="indexterm" name="id2558096"></a><a name="WINBINDENUMUSERS"></a><div class="variablelist"><dl><dt></dt><dd><p>On large installations using <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> it may be
 	necessary to suppress the enumeration of users through the <code class="literal">setpwent()</code>,
 	 <code class="literal">getpwent()</code> and
 	 <code class="literal">endpwent()</code> group of system calls.  If
@@ -6086,10 +6065,10 @@
 	full user list when searching for matching
 	usernames. </p></div><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind enum users</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558296"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558189"></a>
 
 winbind expand groups (G)
-</h3></div></div></div><a class="indexterm" name="id2558298"></a><a name="WINBINDEXPANDGROUPS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option controls the maximum depth that winbindd
+</h3></div></div></div><a class="indexterm" name="id2558190"></a><a name="WINBINDEXPANDGROUPS"></a><div class="variablelist"><dl><dt></dt><dd><p>This option controls the maximum depth that winbindd
               will traverse when flattening nested group memberships
 	      of Windows domain groups.  This is different from the
 	      <a class="link" href="smb.conf.5.html#WINBINDNESTEDGROUPS">winbind nested groups</a> option
@@ -6101,10 +6080,10 @@
 	 must perform the group unrolling and will be unable to answer
 	 incoming NSS or authentication requests during this time.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind expand groups</code></em> = <code class="literal">1</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558365"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558257"></a>
 
 winbind nested groups (G)
-</h3></div></div></div><a class="indexterm" name="id2558366"></a><a name="WINBINDNESTEDGROUPS"></a><div class="variablelist"><dl><dt></dt><dd><p>If set to yes, this parameter activates the support for nested
+</h3></div></div></div><a class="indexterm" name="id2558258"></a><a name="WINBINDNESTEDGROUPS"></a><div class="variablelist"><dl><dt></dt><dd><p>If set to yes, this parameter activates the support for nested
                  groups. Nested groups are also called local groups or
                  aliases. They work like their counterparts in Windows: Nested
                  groups are defined locally on any machine (they are shared
@@ -6112,33 +6091,25 @@
                  global groups from any trusted SAM. To be able to use nested
                  groups, you need to run nss_winbind.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind nested groups</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558415"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558307"></a>
 
 winbind normalize names (G)
-</h3></div></div></div><a class="indexterm" name="id2558416"></a><a name="WINBINDNORMALIZENAMES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether winbindd will replace
-	  whitespace in user and group names with an underscore (_) character.
-	  For example, whether the name "Space Kadet" should be
-	  replaced with the string "space_kadet".
-	  Frequently Unix shell scripts will have difficulty with usernames
-	  contains whitespace due to the default field separator in the shell.
-	  If your domain possesses names containing the underscore character,
-	  this option may cause problems unless the name aliasing feature
-	  is supported by your nss_info plugin.
-        </p><p>This feature also enables the name aliasing API which can
-	  be used to make domain user and group names to a non-qlaified
-	  version.  Please refer to the manpage for the configured
-	  idmap and nss_info plugin for the specifics on how to configure
-	  name aliasing for a specific configuration.  Name aliasing takes
-	  precendence (and is mutually exclusive) over the whitespace
-	  replacement mechanism discussed previsouly.
-	  </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind normalize names</code></em> = <code class="literal">no</code>
+</h3></div></div></div><a class="indexterm" name="id2558308"></a><a name="WINBINDNORMALIZENAMES"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether winbindd will replace
+	whitespace in user and group names with an underscore (_) character.
+	For example, whether the name "Space Kadet" should be
+	replaced with the string "space_kadet".
+	Frequently Unix shell scripts will have difficulty with usernames 
+	contains whitespace due to the default field separator in the shell.
+	Do not enable this option if the underscore character is used in
+	account names within your domain
+	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind normalize names</code></em> = <code class="literal">no</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>winbind normalize names</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558502"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558373"></a>
 
 winbind nss info (G)
-</h3></div></div></div><a class="indexterm" name="id2558503"></a><a name="WINBINDNSSINFO"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is designed to control how Winbind retrieves Name
+</h3></div></div></div><a class="indexterm" name="id2558374"></a><a name="WINBINDNSSINFO"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is designed to control how Winbind retrieves Name
 	Service Information to construct a user's home directory and login shell. 
 	Currently the following settings are available: 
 
@@ -6160,10 +6131,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>winbind nss info</code></em> = <code class="literal">template sfu</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558622"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558493"></a>
 
 winbind offline logon (G)
-</h3></div></div></div><a class="indexterm" name="id2558623"></a><a name="WINBINDOFFLINELOGON"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is designed to control whether Winbind should
+</h3></div></div></div><a class="indexterm" name="id2558494"></a><a name="WINBINDOFFLINELOGON"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is designed to control whether Winbind should
 	allow to login with the <em class="parameter"><code>pam_winbind</code></em> 
 	module using Cached Credentials. If enabled, winbindd will store user credentials
 	from successful logins encrypted in a local cache.
@@ -6171,37 +6142,29 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>winbind offline logon</code></em> = <code class="literal">true</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558691"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558562"></a>
 
-winbind reconnect delay (G)
-</h3></div></div></div><a class="indexterm" name="id2558692"></a><a name="WINBINDRECONNECTDELAY"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies the number of
-	seconds the <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> daemon will wait between
-	attempts to contact a Domain controller for a domain that is
-	determined to be down or not contactable.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind reconnect delay</code></em> = <code class="literal">30</code>
-</em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558744"></a>
-
 winbind refresh tickets (G)
-</h3></div></div></div><a class="indexterm" name="id2558745"></a><a name="WINBINDREFRESHTICKETS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is designed to control whether Winbind should refresh Kerberos Tickets
+</h3></div></div></div><a class="indexterm" name="id2558563"></a><a name="WINBINDREFRESHTICKETS"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is designed to control whether Winbind should refresh Kerberos Tickets
 	retrieved using the <em class="parameter"><code>pam_winbind</code></em> module.
 
 </p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind refresh tickets</code></em> = <code class="literal">false</code>
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>winbind refresh tickets</code></em> = <code class="literal">true</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558811"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558628"></a>
 
 winbind rpc only (G)
-</h3></div></div></div><a class="indexterm" name="id2558812"></a><a name="WINBINDRPCONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2558630"></a><a name="WINBINDRPCONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	Setting this parameter to <code class="literal">yes</code> forces 
 	winbindd to use RPC instead of LDAP to retrieve information from Domain
         Controllers.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind rpc only</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558860"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558677"></a>
 
 winbind separator (G)
-</h3></div></div></div><a class="indexterm" name="id2558861"></a><a name="WINBINDSEPARATOR"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter allows an admin to define the character 
+</h3></div></div></div><a class="indexterm" name="id2558678"></a><a name="WINBINDSEPARATOR"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter allows an admin to define the character 
 	used when listing a username of the form of <em class="replaceable"><code>DOMAIN
 	</code></em>\<em class="replaceable"><code>user</code></em>.  This parameter 
 	is only applicable when using the <code class="filename">pam_winbind.so</code>
@@ -6212,10 +6175,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>winbind separator</code></em> = <code class="literal">+</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558947"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558764"></a>
 
 winbind trusted domains only (G)
-</h3></div></div></div><a class="indexterm" name="id2558948"></a><a name="WINBINDTRUSTEDDOMAINSONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2558765"></a><a name="WINBINDTRUSTEDDOMAINSONLY"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter is designed to allow Samba servers that are members 
 	of a Samba controlled domain to use UNIX accounts distributed via NIS, 
 	rsync, or LDAP as the uid's for winbindd users in the hosts primary domain.
@@ -6223,13 +6186,14 @@
 	the account user1 in /etc/passwd instead of allocating a new uid for him or her.
 	</p><p>
 	This parameter is now deprecated in favor of the newer idmap_nss backend.
-	Refer to the <a class="citerefentry" href="idmap_nss.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_nss</span>(8)</span></a> man page for more information.
+	Refer to the <a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a> smb.conf option and
+	the <a class="citerefentry" href="idmap_nss.8.html"><span class="citerefentry"><span class="refentrytitle">idmap_nss</span>(8)</span></a> man page for more information.
 	</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>winbind trusted domains only</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559014"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558844"></a>
 
 winbind use default domain (G)
-</h3></div></div></div><a class="indexterm" name="id2559015"></a><a name="WINBINDUSEDEFAULTDOMAIN"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies whether the
+</h3></div></div></div><a class="indexterm" name="id2558845"></a><a name="WINBINDUSEDEFAULTDOMAIN"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter specifies whether the
 	 <a class="citerefentry" href="winbindd.8.html"><span class="citerefentry"><span class="refentrytitle">winbindd</span>(8)</span></a> daemon should operate on users  
 	without domain component in their username. Users without a domain
 	component are treated as is part of the winbindd server's own
@@ -6239,10 +6203,10 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>winbind use default domain</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559087"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558916"></a>
 
 wins hook (G)
-</h3></div></div></div><a class="indexterm" name="id2559088"></a><a name="WINSHOOK"></a><div class="variablelist"><dl><dt></dt><dd><p>When Samba is running as a WINS server this 
+</h3></div></div></div><a class="indexterm" name="id2558917"></a><a name="WINSHOOK"></a><div class="variablelist"><dl><dt></dt><dd><p>When Samba is running as a WINS server this 
 	allows you to call an external program for all changes to the 
 	WINS database. The primary use for this option is to allow the 
 	dynamic update of external name resolution databases such as 
@@ -6263,17 +6227,17 @@
 			addresses currently registered for that name. If this list is 
 			empty then the name should be deleted.</p></li></ul></div><p>An example script that calls the BIND dynamic DNS update 
 	program <code class="literal">nsupdate</code> is provided in the examples 
-	directory of the Samba source code. </p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559193"></a>
+	directory of the Samba source code. </p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559022"></a>
 
 wins proxy (G)
-</h3></div></div></div><a class="indexterm" name="id2559194"></a><a name="WINSPROXY"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean that controls if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> will respond to broadcast name 
+</h3></div></div></div><a class="indexterm" name="id2559024"></a><a name="WINSPROXY"></a><div class="variablelist"><dl><dt></dt><dd><p>This is a boolean that controls if <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> will respond to broadcast name 
 	queries on behalf of  other hosts. You may need to set this 
 	to <code class="constant">yes</code> for some older clients.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>wins proxy</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559248"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559077"></a>
 
 wins server (G)
-</h3></div></div></div><a class="indexterm" name="id2559249"></a><a name="WINSSERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>This specifies the IP address (or DNS name: IP 
+</h3></div></div></div><a class="indexterm" name="id2559078"></a><a name="WINSSERVER"></a><div class="variablelist"><dl><dt></dt><dd><p>This specifies the IP address (or DNS name: IP 
 	address for preference) of the WINS server that <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> should register with. If you have a WINS server on 
 	your network then you should set this to the WINS server's IP.</p><p>You should point this at your WINS server if you have a
 	multi-subnetted network.</p><p>If you want to work in multiple namespaces, you can 
@@ -6292,19 +6256,19 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>wins server</code></em> = <code class="literal">192.9.200.1 192.168.2.61</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559358"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559188"></a>
 
 wins support (G)
-</h3></div></div></div><a class="indexterm" name="id2559359"></a><a name="WINSSUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean controls if the <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> process in Samba will act as a WINS server. You should 
+</h3></div></div></div><a class="indexterm" name="id2559189"></a><a name="WINSSUPPORT"></a><div class="variablelist"><dl><dt></dt><dd><p>This boolean controls if the <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> process in Samba will act as a WINS server. You should 
 	not set this to <code class="constant">yes</code> unless you have a multi-subnetted network and 
 	you wish a particular <code class="literal">nmbd</code> to be your WINS server. 
 	Note that you should <span class="emphasis"><em>NEVER</em></span> set this to <code class="constant">yes</code>
 	on more than one machine in your network.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>wins support</code></em> = <code class="literal">no</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559428"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559257"></a>
 
 workgroup (G)
-</h3></div></div></div><a class="indexterm" name="id2559429"></a><a name="WORKGROUP"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls what workgroup your server will 
+</h3></div></div></div><a class="indexterm" name="id2559258"></a><a name="WORKGROUP"></a><div class="variablelist"><dl><dt></dt><dd><p>This controls what workgroup your server will 
 	appear to be in when queried by clients. Note that this parameter 
 	also controls the Domain name used with 
 	the <a class="link" href="smb.conf.5.html#SECURITY">security = domain</a>
@@ -6312,16 +6276,16 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>workgroup</code></em> = <code class="literal">MYGROUP</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559500"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559329"></a>
 
 <a name="WRITABLE"></a>writable
-</h3></div></div></div><a class="indexterm" name="id2559501"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#WRITEABLE">writeable</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559531"></a>
+</h3></div></div></div><a class="indexterm" name="id2559330"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter is a synonym for <a class="link" href="#WRITEABLE">writeable</a>.</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559360"></a>
 
 writeable (S)
-</h3></div></div></div><a class="indexterm" name="id2559532"></a><a name="WRITEABLE"></a><div class="variablelist"><dl><dt></dt><dd><p>Inverted synonym for <a class="link" href="smb.conf.5.html#READONLY">read only</a>.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559570"></a>
+</h3></div></div></div><a class="indexterm" name="id2559362"></a><a name="WRITEABLE"></a><div class="variablelist"><dl><dt></dt><dd><p>Inverted synonym for <a class="link" href="smb.conf.5.html#READONLY">read only</a>.</p><p><span class="emphasis"><em>No default</em></span></p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559399"></a>
 
 write cache size (S)
-</h3></div></div></div><a class="indexterm" name="id2559571"></a><a name="WRITECACHESIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>If this integer parameter is set to non-zero value,
+</h3></div></div></div><a class="indexterm" name="id2559400"></a><a name="WRITECACHESIZE"></a><div class="variablelist"><dl><dt></dt><dd><p>If this integer parameter is set to non-zero value,
     Samba will create an in-memory cache for each oplocked file 
     (it does <span class="emphasis"><em>not</em></span> do this for 
     non-oplocked files). All writes that the client does not request 
@@ -6339,10 +6303,10 @@
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>write cache size</code></em> = <code class="literal">262144
 #  for a 256k cache size per file</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559658"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559483"></a>
 
 write list (S)
-</h3></div></div></div><a class="indexterm" name="id2559659"></a><a name="WRITELIST"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2559484"></a><a name="WRITELIST"></a><div class="variablelist"><dl><dt></dt><dd><p>
     This is a list of users that are given read-write access to a service. If the 
     connecting user is in this list then they will be given write access, no matter 
     what the <a class="link" href="smb.conf.5.html#READONLY">read only</a> option is set to. The list can 
@@ -6357,17 +6321,17 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>write list</code></em> = <code class="literal">admin, root, @staff</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559752"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559576"></a>
 
 write raw (G)
-</h3></div></div></div><a class="indexterm" name="id2559753"></a><a name="WRITERAW"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether or not the server 
+</h3></div></div></div><a class="indexterm" name="id2559577"></a><a name="WRITERAW"></a><div class="variablelist"><dl><dt></dt><dd><p>This parameter controls whether or not the server 
     will support raw write SMB's when transferring data from clients. 
     You should never need to change this parameter.</p><p>Default: <span class="emphasis"><em><em class="parameter"><code>write raw</code></em> = <code class="literal">yes</code>
 </em></span>
-</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559795"></a>
+</p></dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559620"></a>
 
 wtmp directory (G)
-</h3></div></div></div><a class="indexterm" name="id2559796"></a><a name="WTMPDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>
+</h3></div></div></div><a class="indexterm" name="id2559621"></a><a name="WTMPDIRECTORY"></a><div class="variablelist"><dl><dt></dt><dd><p>
 	This parameter is only available if Samba has been configured and compiled with the option <code class="literal">
 	--with-utmp</code>. It specifies a directory pathname that is used to store the wtmp or wtmpx files (depending on 
 	the UNIX system) that record user connections to a Samba server. The difference with the utmp directory is the fact 
@@ -6379,7 +6343,7 @@
 </em></span>
 </p><p>Example: <span class="emphasis"><em><em class="parameter"><code>wtmp directory</code></em> = <code class="literal">/var/log/wtmp</code>
 </em></span>
-</p></dd></dl></div></div></div></div><div class="refsect1" lang="en"><a name="id2559879"></a><h2>WARNINGS</h2><p>
+</p></dd></dl></div></div></div></div><div class="refsect1" lang="en"><a name="id2559703"></a><h2>WARNINGS</h2><p>
 	Although the configuration file permits service names to contain spaces, your client software may not.
 	Spaces will be ignored in comparisons anyway, so it shouldn't be a problem - but be aware of the possibility.
 	</p><p>
@@ -6392,8 +6356,8 @@
 	for an administrator easy, but the various combinations of default attributes can be tricky. Take extreme
 	care when designing these sections. In particular, ensure that the permissions on spool directories are
 	correct.
-	</p></div><div class="refsect1" lang="en"><a name="id2559929"></a><h2>VERSION</h2><p>This man page is correct for version 3 of the Samba suite.</p></div><div class="refsect1" lang="en"><a name="id2559940"></a><h2>SEE ALSO</h2><p>
-	<a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a>, <a class="citerefentry" href="smbpasswd.8.html"><span class="citerefentry"><span class="refentrytitle">smbpasswd</span>(8)</span></a>, <a class="citerefentry" href="swat.8.html"><span class="citerefentry"><span class="refentrytitle">swat</span>(8)</span></a>, <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a>, <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a>, <a class="citerefentry" href="smbclient.1.html"><span class="citerefentry"><span class="refentrytitle">smbclient</span>(1)</span></a>, <a class="citerefentry" href="nmblookup.1.html"><span class="citerefentry"><span class="refentrytitle">nmblookup</span>(1)</span></a>, <a class="citerefentry" href="testparm.1.html"><span class="citerefentry"><span class="refentrytitle">testparm</span>(1)</span></a>, <a class="citerefentry" href="testprns.1.html"><span class="citerefentry"><span class="refentrytitle">testprns</span>(1)</span></a>.</p></div><div class="refsect1" lang="en"><a name="id2560019"></a><h2>AUTHOR</h2><p>
+	</p></div><div class="refsect1" lang="en"><a name="id2559753"></a><h2>VERSION</h2><p>This man page is correct for version 3 of the Samba suite.</p></div><div class="refsect1" lang="en"><a name="id2559764"></a><h2>SEE ALSO</h2><p>
+	<a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a>, <a class="citerefentry" href="smbpasswd.8.html"><span class="citerefentry"><span class="refentrytitle">smbpasswd</span>(8)</span></a>, <a class="citerefentry" href="swat.8.html"><span class="citerefentry"><span class="refentrytitle">swat</span>(8)</span></a>, <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a>, <a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a>, <a class="citerefentry" href="smbclient.1.html"><span class="citerefentry"><span class="refentrytitle">smbclient</span>(1)</span></a>, <a class="citerefentry" href="nmblookup.1.html"><span class="citerefentry"><span class="refentrytitle">nmblookup</span>(1)</span></a>, <a class="citerefentry" href="testparm.1.html"><span class="citerefentry"><span class="refentrytitle">testparm</span>(1)</span></a>, <a class="citerefentry" href="testprns.1.html"><span class="citerefentry"><span class="refentrytitle">testprns</span>(1)</span></a>.</p></div><div class="refsect1" lang="en"><a name="id2559844"></a><h2>AUTHOR</h2><p>
 	The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar to the way the Linux kernel is developed.
 	</p><p>

Modified: branches/samba/upstream/docs/htmldocs/manpages/smbcontrol.1.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/smbcontrol.1.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/smbcontrol.1.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -10,19 +10,13 @@
 compile time.</p></dd><dt><span class="term">-i</span></dt><dd><p>Run interactively. Individual commands 
 		of the form destination message-type parameters can be entered 
 		on STDIN. An empty command line or a "q" will quit the 
-		program.</p></dd><dt><span class="term">destination</span></dt><dd><p>One of <em class="parameter"><code>nmbd</code></em>, <em class="parameter"><code>smbd</code></em> or a process ID.</p><p>The <em class="parameter"><code>all</code></em> destination causes the 
-		message to "broadcast" to all running daemons including nmbd and
-		winbind. This is a change for Samba 3.3, prior to this the
-		paramter smbd used to do this.</p><p>The <em class="parameter"><code>smbd</code></em> destination causes the 
-		message to be sent to the smbd daemon specified in the 
-		<code class="filename">smbd.pid</code> file.</p><p>The <em class="parameter"><code>nmbd</code></em> destination causes the 
+		program.</p></dd><dt><span class="term">destination</span></dt><dd><p>One of <em class="parameter"><code>nmbd</code></em>, <em class="parameter"><code>smbd</code></em> or a process ID.</p><p>The <em class="parameter"><code>smbd</code></em> destination causes the 
+		message to "broadcast" to all smbd daemons.</p><p>The <em class="parameter"><code>nmbd</code></em> destination causes the 
 		message to be sent to the nmbd daemon specified in the 
-		<code class="filename">nmbd.pid</code> file.</p><p>The <em class="parameter"><code>winbindd</code></em> destination causes the 
-		message to be sent to the winbind daemon specified in the 
-		<code class="filename">winbindd.pid</code> file.</p><p>If a single process ID is given, the message is sent 
+		<code class="filename">nmbd.pid</code> file.</p><p>If a single process ID is given, the message is sent 
 		to only that process.</p></dd><dt><span class="term">message-type</span></dt><dd><p>Type of message to send. See 
 		the section <code class="constant">MESSAGE-TYPES</code> for details.
-		</p></dd><dt><span class="term">parameters</span></dt><dd><p>any parameters required for the message-type</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2482607"></a><h2>MESSAGE-TYPES</h2><p>Available message types are:</p><div class="variablelist"><dl><dt><span class="term">close-share</span></dt><dd><p>Order smbd to close the client 
+		</p></dd><dt><span class="term">parameters</span></dt><dd><p>any parameters required for the message-type</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2482572"></a><h2>MESSAGE-TYPES</h2><p>Available message types are:</p><div class="variablelist"><dl><dt><span class="term">close-share</span></dt><dd><p>Order smbd to close the client 
 	connections to the named share. Note that this doesn't affect client 
 	connections to any other shares. This message-type takes an argument of the
 	share name for which client connections will be closed, or the
@@ -65,8 +59,8 @@
 	to update their local version of the driver. Can only be 
 	sent to smbd.</p></dd><dt><span class="term">reload-config</span></dt><dd><p>Force daemon to reload smb.conf configuration file. Can be sent
 	to <code class="constant">smbd</code>, <code class="constant">nmbd</code>, or <code class="constant">winbindd</code>.
-	</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2478480"></a><h2>VERSION</h2><p>This man page is correct for version 3 of 
-	the Samba suite.</p></div><div class="refsect1" lang="en"><a name="id2478491"></a><h2>SEE ALSO</h2><p><a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> and <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a>.</p></div><div class="refsect1" lang="en"><a name="id2478516"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities 
+	</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2478445"></a><h2>VERSION</h2><p>This man page is correct for version 3 of 
+	the Samba suite.</p></div><div class="refsect1" lang="en"><a name="id2478456"></a><h2>SEE ALSO</h2><p><a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> and <a class="citerefentry" href="smbd.8.html"><span class="citerefentry"><span class="refentrytitle">smbd</span>(8)</span></a>.</p></div><div class="refsect1" lang="en"><a name="id2478481"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities 
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar 
 	to the way the Linux kernel is developed.</p><p>The original Samba man pages were written by Karl Auer. 

Deleted: branches/samba/upstream/docs/htmldocs/manpages/vfs_smb_traffic_analyzer.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/vfs_smb_traffic_analyzer.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/vfs_smb_traffic_analyzer.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,41 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>smb_traffic_analyzer</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="vfs_smb_traffic_analyzer.8"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>vfs_smb_traffic_analyzer &#8212; log Samba VFS read and write operations through a socket
-	to a helper application</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="literal">vfs objects = smb_traffic_analyzer</code></p></div></div><div class="refsect1" lang="en"><a name="id2518313"></a><h2>DESCRIPTION</h2><p>This VFS module is part of the
-	<a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a> suite.</p><p>The <code class="literal">vfs_smb_traffic_analyzer</code> VFS module logs
-	client write and read operations on a Samba server and sends this data
-	over a socket to a helper program, which feeds a SQL database. More
-	information on the helper programs can be obtained from the
-	homepage of the project at:
-	http://holger123.wordpress.com/smb-traffic-analyzer/
-	</p><p><code class="literal">vfs_smb_traffic_analyzer</code> currently is aware
-	of the following VFS operations:</p><table class="simplelist" border="0" summary="Simple list"><tr><td>write</td></tr><tr><td>pwrite</td></tr><tr><td>read</td></tr><tr><td>pread</td></tr></table><p><code class="literal">vfs_smb_traffic_analyzer</code> sends the following data
-	in a fixed format seperated by a comma through either an internet or a
-	unix domain socket:</p><pre class="programlisting">
-	BYTES|USER|DOMAIN|READ/WRITE|SHARE|FILENAME|TIMESTAMP
-	</pre><p>Description of the records:
-
-	</p><div class="itemizedlist"><ul type="disc"><li><p><code class="literal">BYTES</code> - the length in bytes of the VFS operation</p></li><li><p><code class="literal">USER</code> - the user who initiated the operation</p></li><li><p><code class="literal">DOMAIN</code> - the domain of the user</p></li><li><p><code class="literal">READ/WRITE</code> - either "W" for a write operation or "R" for read</p></li><li><p><code class="literal">SHARE</code> - the name of the share on which the VFS operation occured</p></li><li><p><code class="literal">FILENAME</code> - the name of the file that was used by the VFS operation</p></li><li><p><code class="literal">TIMESTAMP</code> - a timestamp, formatted as "yyyy-mm-dd hh-mm-ss.ms" indicating when the VFS operation occured</p></li></ul></div><p>
-
-	</p><p>This module is stackable.</p></div><div class="refsect1" lang="en"><a name="id2482489"></a><h2>OPTIONS</h2><div class="variablelist"><dl><dt><span class="term">smb_traffic_analyzer:mode = STRING</span></dt><dd><p>If STRING matches to "unix_domain_socket", the module will
-		use a unix domain socket located at /var/tmp/stadsocket, if
-		STRING contains an different string or is not defined, the module will
-		use an internet domain socket for data transfer.</p></dd><dt><span class="term">smb_traffic_analyzer:host = STRING</span></dt><dd><p>The module will send the data to the system named with
-		the hostname STRING.</p></dd><dt><span class="term">smb_traffic_analyzer:port = STRING</span></dt><dd><p>The module will send the data using the TCP port given
-		in STRING
-		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2482546"></a><h2>EXAMPLES</h2><p>The module running on share "example_share", using a unix domain socket</p><pre class="programlisting">
-	<em class="parameter"><code>[example_share]</code></em>
-	<a class="link" href="smb.conf.5.html#PATH">path = /data/example</a>
-	<a class="link" href="smb.conf.5.html#VFSOBJECTS">vfs objects = smb_traffic_analyzer</a>
-	<a class="link" href="smb.conf.5.html#SMB_TRAFFIC_ANALYZER:MODE">smb_traffic_analyzer:mode = unix_domain_socket</a>
-	</pre><p>The module running on share "example_share", using an internet domain socket,
-	connecting to host "examplehost" on port 3491.</p><pre class="programlisting">
-	<em class="parameter"><code>[example_share]</code></em>
-	<a class="link" href="smb.conf.5.html#PATH">path = /data/example</a>
-	<a class="link" href="smb.conf.5.html#VFSOBJECTS">vfs objects = smb_traffic_analyzer</a>
-	<a class="link" href="smb.conf.5.html#SMB_TRAFFIC_ANALYZER:HOST">smb_traffic_analyzer:host = examplehost</a>
-	<a class="link" href="smb.conf.5.html#SMB_TRAFFIC_ANALYZER:PORT">smb_traffic_analyzer:port = 3490</a>
-	</pre></div><div class="refsect1" lang="en"><a name="id2478300"></a><h2>VERSION</h2><p>This man page is correct for version 3.3 of the Samba suite.
-	</p></div><div class="refsect1" lang="en"><a name="id2478310"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities
-	were created by Andrew Tridgell. Samba is now developed
-	by the Samba Team as an Open Source project similar
-	to the way the Linux kernel is developed.</p><p>The original version of the VFS module and the
-	helper tools were created by Holger Hetterich.</p></div></div></body></html>

Modified: branches/samba/upstream/docs/htmldocs/manpages/winbindd.8.html
===================================================================
--- branches/samba/upstream/docs/htmldocs/manpages/winbindd.8.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/htmldocs/manpages/winbindd.8.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -127,7 +127,9 @@
 	where the user and group mappings are stored by winbindd.  If this
 	store is deleted or corrupted, there is no way for winbindd to
 	determine which user and group ids correspond to Windows NT user
-	and group rids. </p></div><div class="refsect1" lang="en"><a name="id2478640"></a><h2>CONFIGURATION</h2><p>Configuration of the <code class="literal">winbindd</code> daemon
+	and group rids. </p><p>See the <a class="link" href="smb.conf.5.html#IDMAPDOMAINS">idmap domains</a> or the old <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a> parameters in
+        <code class="filename">smb.conf</code> for options for sharing this
+        database, such as via LDAP.</p></div><div class="refsect1" lang="en"><a name="id2478675"></a><h2>CONFIGURATION</h2><p>Configuration of the <code class="literal">winbindd</code> daemon
 	is done through configuration parameters in the <a class="citerefentry" href="smb.conf.5.html"><span class="citerefentry"><span class="refentrytitle">smb.conf</span>(5)</span></a> file.  All parameters should be specified in the
 	[global] section of smb.conf. </p><div class="itemizedlist"><ul type="disc"><li><p>
 		<a class="link" href="smb.conf.5.html#WINBINDSEPARATOR">winbind separator</a></p></li><li><p>
@@ -144,7 +146,7 @@
 		Setting this parameter forces winbindd to use RPC
 		instead of LDAP to retrieve information from Domain
 		Controllers.
-		</p></li></ul></div></div><div class="refsect1" lang="en"><a name="id2525503"></a><h2>EXAMPLE SETUP</h2><p>
+		</p></li></ul></div></div><div class="refsect1" lang="en"><a name="id2525538"></a><h2>EXAMPLE SETUP</h2><p>
 	To setup winbindd for user and group lookups plus
 	authentication from a domain controller use something like the
 	following setup. This was tested on an early Red Hat Linux box.
@@ -195,7 +197,7 @@
 	and that you can login to your unix box as a domain user, using
 	the DOMAIN+user syntax for the username. You may wish to use the
 	commands <code class="literal">getent passwd</code> and <code class="literal">getent group
-	</code> to confirm the correct operation of winbindd.</p></div><div class="refsect1" lang="en"><a name="id2525711"></a><h2>NOTES</h2><p>The following notes are useful when configuring and
+	</code> to confirm the correct operation of winbindd.</p></div><div class="refsect1" lang="en"><a name="id2525746"></a><h2>NOTES</h2><p>The following notes are useful when configuring and
 	running <code class="literal">winbindd</code>: </p><p><a class="citerefentry" href="nmbd.8.html"><span class="citerefentry"><span class="refentrytitle">nmbd</span>(8)</span></a> must be running on the local machine
 	for <code class="literal">winbindd</code> to work. </p><p>PAM is really easy to misconfigure.  Make sure you know what
 	you are doing when modifying PAM configuration files.  It is possible
@@ -203,7 +205,7 @@
 	then in general the user and groups ids allocated by winbindd will not
 	be the same.  The user and group ids will only be valid for the local
 	machine, unless a shared <a class="link" href="smb.conf.5.html#IDMAPBACKEND">idmap backend</a> is configured.</p><p>If the the Windows NT SID to UNIX user and group id mapping
-	file is damaged or destroyed then the mappings will be lost. </p></div><div class="refsect1" lang="en"><a name="id2525783"></a><h2>SIGNALS</h2><p>The following signals can be used to manipulate the
+	file is damaged or destroyed then the mappings will be lost. </p></div><div class="refsect1" lang="en"><a name="id2525817"></a><h2>SIGNALS</h2><p>The following signals can be used to manipulate the
 	<code class="literal">winbindd</code> daemon. </p><div class="variablelist"><dl><dt><span class="term">SIGHUP</span></dt><dd><p>Reload the <a class="citerefentry" href="smb.conf.5.html"><span class="citerefentry"><span class="refentrytitle">smb.conf</span>(5)</span></a> file and
 		apply any parameter changes to the running
 		version of winbindd.  This signal also clears any cached
@@ -211,7 +213,7 @@
 		by winbindd is also reloaded.  </p></dd><dt><span class="term">SIGUSR2</span></dt><dd><p>The SIGUSR2 signal will cause <code class="literal">
 		winbindd</code> to write status information to the winbind
 		log file.</p><p>Log files are stored in the filename specified by the
-		log file parameter.</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2525848"></a><h2>FILES</h2><div class="variablelist"><dl><dt><span class="term"><code class="filename">/etc/nsswitch.conf(5)</code></span></dt><dd><p>Name service switch configuration file.</p></dd><dt><span class="term">/tmp/.winbindd/pipe</span></dt><dd><p>The UNIX pipe over which clients communicate with
+		log file parameter.</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2525882"></a><h2>FILES</h2><div class="variablelist"><dl><dt><span class="term"><code class="filename">/etc/nsswitch.conf(5)</code></span></dt><dd><p>Name service switch configuration file.</p></dd><dt><span class="term">/tmp/.winbindd/pipe</span></dt><dd><p>The UNIX pipe over which clients communicate with
 		the <code class="literal">winbindd</code> program.  For security reasons, the
 		winbind client will only attempt to connect to the winbindd daemon
 		if both the <code class="filename">/tmp/.winbindd</code> directory
@@ -232,8 +234,8 @@
 		compiled using the <em class="parameter"><code>--with-lockdir</code></em> option.
 		This directory is by default <code class="filename">/usr/local/samba/var/locks
 		</code>. </p></dd><dt><span class="term">$LOCKDIR/winbindd_cache.tdb</span></dt><dd><p>Storage for cached user and group information.
-		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2526004"></a><h2>VERSION</h2><p>This man page is correct for version 3 of
-        the Samba suite.</p></div><div class="refsect1" lang="en"><a name="id2526015"></a><h2>SEE ALSO</h2><p><code class="filename">nsswitch.conf(5)</code>, <a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a>, <a class="citerefentry" href="wbinfo.1.html"><span class="citerefentry"><span class="refentrytitle">wbinfo</span>(1)</span></a>, <a class="citerefentry" href="ntlm_auth.8.html"><span class="citerefentry"><span class="refentrytitle">ntlm_auth</span>(8)</span></a>, <a class="citerefentry" href="smb.conf.5.html"><span class="citerefentry"><span class="refentrytitle">smb.conf</span>(5)</span></a>, <a class="citerefentry" href="pam_winbind.8.html"><span class="citerefentry"><span class="refentrytitle">pam_winbind</span>(8)</span></a></p></div><div class="refsect1" lang="en"><a name="id2526072"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities
+		</p></dd></dl></div></div><div class="refsect1" lang="en"><a name="id2526038"></a><h2>VERSION</h2><p>This man page is correct for version 3 of
+        the Samba suite.</p></div><div class="refsect1" lang="en"><a name="id2526049"></a><h2>SEE ALSO</h2><p><code class="filename">nsswitch.conf(5)</code>, <a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a>, <a class="citerefentry" href="wbinfo.1.html"><span class="citerefentry"><span class="refentrytitle">wbinfo</span>(1)</span></a>, <a class="citerefentry" href="ntlm_auth.8.html"><span class="citerefentry"><span class="refentrytitle">ntlm_auth</span>(8)</span></a>, <a class="citerefentry" href="smb.conf.5.html"><span class="citerefentry"><span class="refentrytitle">smb.conf</span>(5)</span></a>, <a class="citerefentry" href="pam_winbind.8.html"><span class="citerefentry"><span class="refentrytitle">pam_winbind</span>(8)</span></a></p></div><div class="refsect1" lang="en"><a name="id2526106"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities
 	were created by Andrew Tridgell. Samba is now developed
 	by the Samba Team as an Open Source project similar
 	to the way the Linux kernel is developed.</p><p><code class="literal">wbinfo</code> and <code class="literal">winbindd</code> were

Modified: branches/samba/upstream/docs/manpages/cifs.upcall.8
===================================================================
--- branches/samba/upstream/docs/manpages/cifs.upcall.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/cifs.upcall.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: cifs.upcall
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "CIFS\.UPCALL" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "CIFS\.UPCALL" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/eventlogadm.8
===================================================================
--- branches/samba/upstream/docs/manpages/eventlogadm.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/eventlogadm.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: eventlogadm
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "EVENTLOGADM" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "EVENTLOGADM" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/findsmb.1
===================================================================
--- branches/samba/upstream/docs/manpages/findsmb.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/findsmb.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: findsmb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "FINDSMB" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "FINDSMB" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/idmap_ad.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_ad.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_ad.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: idmap_ad
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "IDMAP_AD" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "IDMAP_AD" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -33,12 +33,13 @@
 .RS 4
 .nf
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000\-1999999
-	idmap gid = 1000000\-1999999
+	idmap domains = ALLDOMAINS
+	idmap config ALLDOMAINS:backend      = ad
+	idmap config ALLDOMAINS:default      = yes
+	idmap config ALLDOMAINS:range        = 10000 \- 300000000
 
-	idmap config CORP : backend  = ad
-	idmap config CORP : range = 1000\-999999
+	idmap alloc backend = tdb
+	idmap alloc config:range        = 5000 \- 9999
 	
 .fi
 .RE

Deleted: branches/samba/upstream/docs/manpages/idmap_adex.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_adex.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_adex.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,43 +0,0 @@
-.\"     Title: idmap_adex
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
-.\"    Manual: System Administration tools
-.\"    Source: Samba 3.2
-.\"
-.TH "IDMAP_ADEX" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.SH "NAME"
-idmap_adex - Samba's idmap_adex Backend for Winbind
-.SH "DESCRIPTION"
-.PP
-The idmap_adex plugin provides a way for Winbind to read id mappings from an AD server that uses RFC2307 schema extensions\. This module implements both the idmap and nss_info APIs and supports domain trustes as well as two\-way cross forest trusts\. It is a read\-only plugin requiring that the administrator provide mappings in advance by adding the POSIX attribute information to the users and groups objects in AD\. The most common means of doing this is using "Identity Services for Unix" support on Windows 2003 R2 and later\.
-.PP
-Note that you must add the uidNumber, gidNumber, and uid attributes to the partial attribute set of the forest global catalog servers\. This can be done using the Active Directory Schema Management MMC plugin (schmmgmt\.dll)\.
-.SH "NSS_INFO"
-.PP
-The nss_info plugin supports reading the unixHomeDirectory, gidNumber, loginShell, and uidNumber attributes from the user object and the gidNumber attribute from the group object to fill in information required by the libc getpwnam() and getgrnam() family of functions\. Group membership is filled in according to the Windows group membership and not the msSFU30PosixMember attribute\.
-.PP
-Username aliases are implement by setting the uid attribute on the user object\. While group name aliases are implemented by reading the displayname attribute from the group object\.
-.SH "EXAMPLES"
-.PP
-The following example shows how to retrieve idmappings and NSS data from our principal and trusted AD domains\.
-.sp
-.RS 4
-.nf
-	[global]
-	idmap backend = adex
-	idmap uid = 1000\-4000000000
-	idmap gid = 1000\-4000000000
-
-	winbind nss info = adex
-	winbind normalize names = yes
-	
-.fi
-.RE
-.SH "AUTHOR"
-.PP
-The original Samba software and related utilities were created by Andrew Tridgell\. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\.

Deleted: branches/samba/upstream/docs/manpages/idmap_hash.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_hash.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_hash.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,45 +0,0 @@
-.\"     Title: idmap_hash
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
-.\"    Manual: System Administration tools
-.\"    Source: Samba 3.2
-.\"
-.TH "IDMAP_HASH" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.SH "NAME"
-idmap_hash - Samba's idmap_hash Backend for Winbind
-.SH "DESCRIPTION"
-.PP
-The idmap_hash plugin implements a hashing algorithm used map SIDs for domain users and groups to a 31\-bit uid and gid\. This plugin also implements the nss_info API and can be used to support a local name mapping files if enabled via the "winbind normlaize names" and "winbind nss info" parameters in smb\.conf\.
-.SH "IDMAP OPTIONS"
-.PP
-name_map
-.RS 4
-Specifies the absolute path to the name mapping file used by the nss_info API\. Entries in the file are of the form "\fIunix name\fR
-=
-\fIqualified domain name\fR\. Mapping of both user and group names is supported\.
-.RE
-.SH "EXAMPLES"
-.PP
-The following example utilizes the idmap_hash plugin for the idmap and nss_info information\.
-.sp
-.RS 4
-.nf
-	[global]
-	idmap backend = hash
-	idmap uid = 1000\-4000000000
-	idmap gid = 1000\-4000000000
-
-	winbind nss info = hash
-	winbind normalize names = yes
-	idmap_hash:name_map = /etc/samba/name_map\.cfg
-	
-.fi
-.RE
-.SH "AUTHOR"
-.PP
-The original Samba software and related utilities were created by Andrew Tridgell\. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\.

Modified: branches/samba/upstream/docs/manpages/idmap_ldap.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_ldap.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_ldap.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: idmap_ldap
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "IDMAP_LDAP" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "IDMAP_LDAP" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -52,20 +52,29 @@
 .RS 4
 Specifies the LDAP server to which modify/add/delete requests should be sent\. If not defined, idmap_ldap will assume that ldap://localhost/ should be used\.
 .RE
+.PP
+range = low \- high
+.RS 4
+Defines the available matching uid and gid range from which winbindd can allocate for users and groups\. If the parameter is absent, Winbind fail over to use the "idmap uid" and "idmap gid" options from smb\.conf\.
+.RE
 .SH "EXAMPLES"
 .PP
-The follow sets of a LDAP configuration which uses two LDAP directories, one for storing the ID mappings and one for retrieving new IDs\.
+The follow sets of a LDAP configuration which uses a slave server running on localhost for fast fetching SID/gid/uid mappings, it implies correct configuration of referrals\. The idmap alloc backend is pointed directly to the master to skip the referral (and consequent reconnection to the master) that the slave would return as allocation requires writing on the master\.
 .sp
 .RS 4
 .nf
 	[global]
-	idmap backend = ldap:ldap://localhost/
-	idmap uid = 1000000\-1999999
-	idmap gid = 1000000\-1999999
+	    idmap domains = ALLDOMAINS
+	    idmap config ALLDOMAINS:default      = yes
+	    idmap config ALLDOMAINS:backend      = ldap
+	    idmap config ALLDOMAINS:ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap config ALLDOMAINS:ldap_url     = ldap://localhost/
+	    idmap config ALLDOMAINS:range        = 10000 \- 50000
 
-	idmap alloc backend = ldap
-	idmap alloc config : ldap_url	= ldap://id\-master/
-	idmap alloc config : ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap alloc backend = ldap
+	    idmap alloc config:ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap alloc config:ldap_url     = ldap://master\.example\.com/
+	    idmap alloc config:range        = 10000 \- 50000
 	
 .fi
 .RE

Modified: branches/samba/upstream/docs/manpages/idmap_nss.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_nss.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_nss.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: idmap_nss
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "IDMAP_NSS" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "IDMAP_NSS" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -22,12 +22,17 @@
 .RS 4
 .nf
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000\-1999999
-	idmap gid = 1000000\-1999999
+	    idmap domains = SAMBA TRUSTEDDOMAINS
 
-	idmap config SAMBA : backend  = nss
-	idmap config SAMBA : range = 1000\-999999
+	    idmap config SAMBA:backend  = nss
+	    idmap config SAMBA:readonly = yes
+
+	    idmap config TRUSTEDDOMAINS:default = yes
+	    idmap config TRUSTEDDOMAINS:backend = tdb
+	    idmap config TRUSTEDDOMAINS:range   = 10000 \- 50000
+
+	    idmap alloc backend      = tdb
+	    idmap alloc config:range = 10000 \- 50000
 	
 .fi
 .RE

Modified: branches/samba/upstream/docs/manpages/idmap_rid.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_rid.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_rid.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: idmap_rid
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "IDMAP_RID" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "IDMAP_RID" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -25,22 +25,23 @@
 base_rid = INTEGER
 .RS 4
 Defines the base integer used to build SIDs out of an UID or a GID, and to rebase the UID or GID to be obtained from a SID\. User RIDs by default start at 1000 (512 hexadecimal), this means a good value for base_rid can be 1000 as the resulting ID is calculated this way: ID = RID \- BASE_RID + LOW RANGE ID\.
-.sp
-Use of this parameter is deprecated\.
 .RE
 .SH "EXAMPLES"
 .PP
-This example shows how to configure a domain with idmap_rid
+This example shows how to configure 2 domains with idmap_rid
 .sp
 .RS 4
 .nf
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000\-1999999
-	idmap gid = 1000000\-1999999
+	    idmap domains = MAIN TRUSTED1
 
-	idmap config TRUSTED : backend  = rid
-	idmap config TRUSTED : range    = 50000 \- 99999
+	    idmap config MAIN:backend      = rid
+	    idmap config MAIN:base_rid     = 0
+	    idmap config MAIN:range        = 10000 \- 49999
+
+	    idmap config TRUSTED1:backend  = rid
+	    idmap config TRUSTED1:base_rid = 1000
+	    idmap config TRUSTED1:range    = 50000 \- 99999
 	
 .fi
 .RE

Modified: branches/samba/upstream/docs/manpages/idmap_tdb.8
===================================================================
--- branches/samba/upstream/docs/manpages/idmap_tdb.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/idmap_tdb.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: idmap_tdb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "IDMAP_TDB" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "IDMAP_TDB" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -27,6 +27,23 @@
 .RS 4
 Defines the available matching uid and gid range from which winbindd can allocate for users and groups\. If the parameter is absent, Winbind fail over to use the "idmap uid" and "idmap gid" options from smb\.conf\.
 .RE
+.SH "EXAMPLES"
+.PP
+The following example is equivalent to the pre\-3\.0\.25 default idmap configuration using the "idmap backend = tdb" setting\.
+.sp
+.RS 4
+.nf
+	[global]
+	    idmap domains = ALLDOMAINS
+	    idmap config ALLDOMAINS:default = yes
+	    idmap config ALLDOMAINS:backend = tdb
+	    idmap config ALLDOMAINS:range   = 10000 \- 50000
+
+	    idmap alloc backend = tdb
+	    idmap alloc config:range = 10000 \- 50000
+	
+.fi
+.RE
 .SH "AUTHOR"
 .PP
 The original Samba software and related utilities were created by Andrew Tridgell\. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\.

Modified: branches/samba/upstream/docs/manpages/ldb.3
===================================================================
--- branches/samba/upstream/docs/manpages/ldb.3	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ldb.3	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ldb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: C Library Functions
 .\"    Source: Samba 3.2
 .\"
-.TH "LDB" "3" "10/02/2008" "Samba 3\.2" "C Library Functions"
+.TH "LDB" "3" "09/18/2008" "Samba 3\.2" "C Library Functions"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/ldbadd.1
===================================================================
--- branches/samba/upstream/docs/manpages/ldbadd.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ldbadd.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ldbadd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "LDBADD" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "LDBADD" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/ldbdel.1
===================================================================
--- branches/samba/upstream/docs/manpages/ldbdel.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ldbdel.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ldbdel
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "LDBDEL" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "LDBDEL" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/ldbedit.1
===================================================================
--- branches/samba/upstream/docs/manpages/ldbedit.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ldbedit.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ldbedit
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "LDBEDIT" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "LDBEDIT" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/ldbmodify.1
===================================================================
--- branches/samba/upstream/docs/manpages/ldbmodify.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ldbmodify.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ldbmodify
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "LDBMODIFY" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "LDBMODIFY" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/ldbsearch.1
===================================================================
--- branches/samba/upstream/docs/manpages/ldbsearch.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ldbsearch.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ldbsearch
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "LDBSEARCH" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "LDBSEARCH" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/libsmbclient.7
===================================================================
--- branches/samba/upstream/docs/manpages/libsmbclient.7	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/libsmbclient.7	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: libsmbclient
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: 7
 .\"    Source: Samba 3.2
 .\"
-.TH "LIBSMBCLIENT" "7" "10/02/2008" "Samba 3\.2" "7"
+.TH "LIBSMBCLIENT" "7" "09/18/2008" "Samba 3\.2" "7"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/lmhosts.5
===================================================================
--- branches/samba/upstream/docs/manpages/lmhosts.5	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/lmhosts.5	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: lmhosts
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: File Formats and Conventions
 .\"    Source: Samba 3.2
 .\"
-.TH "LMHOSTS" "5" "10/02/2008" "Samba 3\.2" "File Formats and Conventions"
+.TH "LMHOSTS" "5" "09/18/2008" "Samba 3\.2" "File Formats and Conventions"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/log2pcap.1
===================================================================
--- branches/samba/upstream/docs/manpages/log2pcap.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/log2pcap.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: log2pcap
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "LOG2PCAP" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "LOG2PCAP" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/mount.cifs.8
===================================================================
--- branches/samba/upstream/docs/manpages/mount.cifs.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/mount.cifs.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: mount.cifs
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "MOUNT\.CIFS" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "MOUNT\.CIFS" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/net.8
===================================================================
--- branches/samba/upstream/docs/manpages/net.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/net.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: net
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "NET" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "NET" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -532,12 +532,6 @@
 .SS "RPC VAMPIRE"
 .PP
 Export users, aliases and groups from remote server to local server\. You need to run this against the PDC, from a Samba machine joined as a BDC\.
-.SS "RPC VAMPIRE KEYTAB"
-.PP
-Dump remote SAM database to local Kerberos keytab file\.
-.SS "RPC VAMPIRE LDIF"
-.PP
-Dump remote SAM database to local LDIF file or standard output\.
 .SS "RPC GETSID"
 .PP
 Fetch domain SID and store it in the local

Modified: branches/samba/upstream/docs/manpages/nmbd.8
===================================================================
--- branches/samba/upstream/docs/manpages/nmbd.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/nmbd.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: nmbd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "NMBD" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "NMBD" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/nmblookup.1
===================================================================
--- branches/samba/upstream/docs/manpages/nmblookup.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/nmblookup.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: nmblookup
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "NMBLOOKUP" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "NMBLOOKUP" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/ntlm_auth.1
===================================================================
--- branches/samba/upstream/docs/manpages/ntlm_auth.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/ntlm_auth.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: ntlm_auth
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "NTLM_AUTH" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "NTLM_AUTH" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/pam_winbind.7
===================================================================
--- branches/samba/upstream/docs/manpages/pam_winbind.7	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/pam_winbind.7	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: pam_winbind
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: 7
 .\"    Source: Samba 3.2
 .\"
-.TH "PAM_WINBIND" "7" "10/02/2008" "Samba 3\.2" "7"
+.TH "PAM_WINBIND" "7" "09/18/2008" "Samba 3\.2" "7"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/pdbedit.8
===================================================================
--- branches/samba/upstream/docs/manpages/pdbedit.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/pdbedit.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: pdbedit
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "PDBEDIT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "PDBEDIT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/profiles.1
===================================================================
--- branches/samba/upstream/docs/manpages/profiles.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/profiles.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: profiles
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "PROFILES" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "PROFILES" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/rpcclient.1
===================================================================
--- branches/samba/upstream/docs/manpages/rpcclient.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/rpcclient.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: rpcclient
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "RPCCLIENT" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "RPCCLIENT" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/samba.7
===================================================================
--- branches/samba/upstream/docs/manpages/samba.7	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/samba.7	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: samba
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: Miscellanea
 .\"    Source: Samba 3.2
 .\"
-.TH "SAMBA" "7" "10/02/2008" "Samba 3\.2" "Miscellanea"
+.TH "SAMBA" "7" "09/18/2008" "Samba 3\.2" "Miscellanea"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smb.conf.5
===================================================================
--- branches/samba/upstream/docs/manpages/smb.conf.5	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smb.conf.5	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smb.conf
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: File Formats and Conventions
 .\"    Source: Samba 3.2
 .\"
-.TH "SMB\.CONF" "5" "10/02/2008" "Samba 3\.2" "File Formats and Conventions"
+.TH "SMB\.CONF" "5" "09/18/2008" "Samba 3\.2" "File Formats and Conventions"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -3444,12 +3444,10 @@
 idmap alloc backend (G)
 .PP
 .RS 4
-The idmap alloc backend provides a plugin interface for Winbind to use when allocating Unix uids/gids for Windows SIDs\. This option refers to the name of the idmap module which will provide the id allocation functionality\. Please refer to the man page for each idmap plugin to determine whether or not the module implements the allocation feature\. The most common plugins are the tdb (\fBidmap_tdb\fR(8)) and ldap (\fBidmap_ldap\fR(8)) libraries\.
+The idmap alloc backend provides a plugin interface for Winbind to use when allocating Unix uids/gids for Windows SIDs\. This option is to be used in conjunction with the
+\fIidmap domains\fR
+parameter and refers to the name of the idmap module which will provide the id allocation functionality\. Please refer to the man page for each idmap plugin to determine whether or not the module implements the allocation feature\. The most common plugins are the tdb (\fBidmap_tdb\fR(8)) and ldap (\fBidmap_ldap\fR(8)) libraries\.
 .sp
-This parameter defaults to the value
-\fIidmap backend\fR
-was set to, so by default winbind will allocate Unix IDs from the default backend\. You will only need to set this parameter explicitly if you have an external source for Unix IDs, like a central database service somewhere in your company\.
-.sp
 Also refer to the
 \fIidmap alloc config\fR
 option\.
@@ -3473,29 +3471,12 @@
 idmap backend (G)
 .PP
 .RS 4
-The idmap backend provides a plugin interface for Winbind to use varying backends to store SID/uid/gid mapping tables\.
+The idmap backend provides a plugin interface for Winbind to use varying backends to store SID/uid/gid mapping tables\. This option is mutually exclusive with the newer and more flexible
+\fIidmap domains\fR
+parameter\. The main difference between the "idmap backend" and the "idmap domains" is that the former only allows one backend for all domains while the latter supports configuring backends on a per domain basis\.
 .sp
-This option specifies the default backend that is used when no special configuration set by
-\fIidmap config\fR
-matches the specific request\.
+Examples of SID/uid/gid backends include tdb (\fBidmap_tdb\fR(8)), ldap (\fBidmap_ldap\fR(8)), rid (\fBidmap_rid\fR(8)), and ad (\fBidmap_tdb\fR(8))\.
 .sp
-This default backend also specifies the place where winbind\-generated idmap entries will be stored\. So it is highly recommended that you specify a writable backend like
-\fBidmap_tdb\fR(8)
-or
-\fBidmap_ldap\fR(8)
-as the idmap backend\. The
-\fBidmap_rid\fR(8)
-and
-\fBidmap_ad\fR(8)
-backends are not writable and thus will generate unexpected results if set as idmap backend\.
-.sp
-To use the rid and ad backends, please specify them via the
-\fIidmap config\fR
-parameter, possibly also for the domain your machine is member of, specified by
-\fIworkgroup\fR\.
-.sp
-Examples of SID/uid/gid backends include tdb (\fBidmap_tdb\fR(8)), ldap (\fBidmap_ldap\fR(8)), rid (\fBidmap_rid\fR(8)), and ad (\fBidmap_ad\fR(8))\.
-.sp
 Default:
 \fI\fIidmap backend\fR\fR\fI = \fR\fItdb\fR\fI \fR
 .RE
@@ -3506,49 +3487,73 @@
 This parameter specifies the number of seconds that Winbind\'s idmap interface will cache positive SID/uid/gid query results\.
 .sp
 Default:
-\fI\fIidmap cache time\fR\fR\fI = \fR\fI604800 (one week)\fR\fI \fR
+\fI\fIidmap cache time\fR\fR\fI = \fR\fI900\fR\fI \fR
 .RE
 
 idmap config (G)
 .PP
 .RS 4
-The idmap config prefix provides a means of managing each trusted domain separately\. The idmap config prefix should be followed by the name of the domain, a colon, and a setting specific to the chosen backend\. There are three options available for all domains:
+The idmap config prefix provides a means of managing each domain defined by the
+\fIidmap domains\fR
+option using Samba\'s parametric option support\. The idmap config prefix should be followed by the name of the domain, a colon, and a setting specific to the chosen backend\. There are three options available for all domains:
 .PP
 backend = backend_name
 .RS 4
 Specifies the name of the idmap plugin to use as the SID/uid/gid backend for this domain\.
 .RE
 .PP
-range = low \- high
+default = [yes|no]
 .RS 4
-Defines the available matching uid and gid range for which the backend is authoritative\. Note that the range commonly matches the allocation range due to the fact that the same backend will store and retrieve SID/uid/gid mapping entries\.
-.sp
-winbind uses this parameter to find the backend that is authoritative for a unix ID to SID mapping, so it must be set for each individually configured domain, and it must be disjoint from the ranges set via
-\fIidmap uid\fR
-and
-\fIidmap gid\fR\.
+The default domain/backend will be used for searching for users and groups not belonging to one of the explicitly listed domains (matched by comparing the account SID and the domain SID)\.
 .RE
+.PP
+readonly = [yes|no]
+.RS 4
+Mark the domain as readonly which means that no attempts to allocate a uid or gid (by the
+\fIidmap alloc backend\fR) for any user or group in that domain will be attempted\.
+.RE
 .sp
 The following example illustrates how to configure the
 \fBidmap_ad\fR(8)
 for the CORP domain and the
 \fBidmap_tdb\fR(8)
-backend for all other domains\. This configuration assumes that the admin of CORP assigns unix ids below 1000000 via the SFU extensions, and winbind is supposed to use the next million entries for its own mappings from trusted domains and for local groups for example\.
+backend for all other domains\. The TRUSTEDDOMAINS string is simply an arbitrary key used to reference the "idmap config" settings and does not represent the actual name of a domain\. It is a catchall domain backend for any domain not explicitly listed\.
 .sp
 .RS 4
 .nf
-	idmap backend = tdb
-	idmap uid = 1000000\-1999999
-	idmap gid = 1000000\-1999999
+	idmap domains = CORP TRUSTEDDOMAINS
 
-	idmap config CORP : backend  = ad
-	idmap config CORP : range = 1000\-999999
+	idmap config CORP:backend  = ad
+	idmap config CORP:readonly = yes
+
+	idmap config TRUSTEDDOMAINS:backend = tdb
+	idmap config TRUSTEDDOMAINS:default = yes
+	idmap config TRUSTEDDOMAINS:range   = 1000 \- 9999
 	
 .fi
 .RE
 \fINo default\fR
 .RE
 
+idmap domains (G)
+.PP
+.RS 4
+The idmap domains option defines a list of Windows domains which will each have a separately configured backend for managing Winbind\'s SID/uid/gid tables\. This parameter is mutually exclusive with the older
+\fIidmap backend\fR
+option\.
+.sp
+Values consist of the short domain name for Winbind\'s primary or collection of trusted domains\. You may also use an arbitrary string to represent a catchall domain backend for any domain not explicitly listed\.
+.sp
+Refer to the
+\fIidmap config\fR
+for details about managing the SID/uid/gid backend for each domain\.
+.sp
+\fINo default\fR
+.sp
+Example:
+\fI\fIidmap domains\fR\fR\fI = \fR\fIdefault AD CORP\fR\fI \fR
+.RE
+
 winbind gid
 .PP
 .RS 4
@@ -3562,7 +3567,8 @@
 The idmap gid parameter specifies the range of group ids that are allocated for the purpose of mapping UNX groups to NT group SIDs\. This range of group ids should have no existing local or NIS groups within it as strange conflicts can occur otherwise\.
 .sp
 See also the
-\fIidmap backend\fR, and
+\fIidmap backend\fR,
+\fIidmap domains\fR, and
 \fIidmap config\fR
 options\.
 .sp
@@ -3595,8 +3601,8 @@
 The idmap uid parameter specifies the range of user ids that are allocated for use in mapping UNIX users to NT user SIDs\. This range of ids should have no existing local or NIS users within it as strange conflicts can occur otherwise\.
 .sp
 See also the
-\fIidmap backend\fR
-and
+\fIidmap backend\fR,
+\fIidmap domains\fR, and
 \fIidmap config\fR
 options\.
 .sp
@@ -3683,32 +3689,6 @@
 \fI\fIinherit permissions\fR\fR\fI = \fR\fIno\fR\fI \fR
 .RE
 
-init logon delayed hosts (G)
-.PP
-.RS 4
-This parameter takes a list of host names, addresses or networks for which the initial samlogon reply should be delayed (so other DCs get preferred by XP workstations if there are any)\.
-.sp
-The length of the delay can be specified with the
-\fIinit logon delay\fR
-parameter\.
-.sp
-Default:
-\fI\fIinit logon delayed hosts\fR\fR\fI = \fR\fI\fR\fI \fR
-.sp
-Example:
-\fI\fIinit logon delayed hosts\fR\fR\fI = \fR\fI150\.203\.5\. myhost\.mynet\.de\fR\fI \fR
-.RE
-
-init logon delay (G)
-.PP
-.RS 4
-This parameter specifies a delay in milliseconds for the hosts configured for delayed initial samlogon with
-\fIinit logon delayed hosts\fR\.
-.sp
-Default:
-\fI\fIinit logon delay\fR\fR\fI = \fR\fI100\fR\fI \fR
-.RE
-
 interfaces (G)
 .PP
 .RS 4
@@ -9171,10 +9151,8 @@
 winbind normalize names (G)
 .PP
 .RS 4
-This parameter controls whether winbindd will replace whitespace in user and group names with an underscore (_) character\. For example, whether the name "Space Kadet" should be replaced with the string "space_kadet"\. Frequently Unix shell scripts will have difficulty with usernames contains whitespace due to the default field separator in the shell\. If your domain possesses names containing the underscore character, this option may cause problems unless the name aliasing feature is supported by your nss_info plugin\.
+This parameter controls whether winbindd will replace whitespace in user and group names with an underscore (_) character\. For example, whether the name "Space Kadet" should be replaced with the string "space_kadet"\. Frequently Unix shell scripts will have difficulty with usernames contains whitespace due to the default field separator in the shell\. Do not enable this option if the underscore character is used in account names within your domain
 .sp
-This feature also enables the name aliasing API which can be used to make domain user and group names to a non\-qlaified version\. Please refer to the manpage for the configured idmap and nss_info plugin for the specifics on how to configure name aliasing for a specific configuration\. Name aliasing takes precendence (and is mutually exclusive) over the whitespace replacement mechanism discussed previsouly\.
-.sp
 Default:
 \fI\fIwinbind normalize names\fR\fR\fI = \fR\fIno\fR\fI \fR
 .sp
@@ -9240,17 +9218,6 @@
 \fI\fIwinbind offline logon\fR\fR\fI = \fR\fItrue\fR\fI \fR
 .RE
 
-winbind reconnect delay (G)
-.PP
-.RS 4
-This parameter specifies the number of seconds the
-\fBwinbindd\fR(8)
-daemon will wait between attempts to contact a Domain controller for a domain that is determined to be down or not contactable\.
-.sp
-Default:
-\fI\fIwinbind reconnect delay\fR\fR\fI = \fR\fI30\fR\fI \fR
-.RE
-
 winbind refresh tickets (G)
 .PP
 .RS 4
@@ -9303,6 +9270,8 @@
 would be mapped to the account user1 in /etc/passwd instead of allocating a new uid for him or her\.
 .sp
 This parameter is now deprecated in favor of the newer idmap_nss backend\. Refer to the
+\fIidmap domains\fR
+smb\.conf option and the
 \fBidmap_nss\fR(8)
 man page for more information\.
 .sp

Modified: branches/samba/upstream/docs/manpages/smbcacls.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbcacls.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbcacls.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbcacls
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBCACLS" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBCACLS" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbclient.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbclient.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbclient.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbclient
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBCLIENT" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBCLIENT" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbcontrol.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbcontrol.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbcontrol.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbcontrol
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBCONTROL" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBCONTROL" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -56,14 +56,8 @@
 or a process ID\.
 .sp
 The
-\fIall\fR
-destination causes the message to "broadcast" to all running daemons including nmbd and winbind\. This is a change for Samba 3\.3, prior to this the paramter smbd used to do this\.
-.sp
-The
 \fIsmbd\fR
-destination causes the message to be sent to the smbd daemon specified in the
-\fIsmbd\.pid\fR
-file\.
+destination causes the message to "broadcast" to all smbd daemons\.
 .sp
 The
 \fInmbd\fR
@@ -71,12 +65,6 @@
 \fInmbd\.pid\fR
 file\.
 .sp
-The
-\fIwinbindd\fR
-destination causes the message to be sent to the winbind daemon specified in the
-\fIwinbindd\.pid\fR
-file\.
-.sp
 If a single process ID is given, the message is sent to only that process\.
 .RE
 .PP

Modified: branches/samba/upstream/docs/manpages/smbcquotas.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbcquotas.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbcquotas.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbcquotas
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBCQUOTAS" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBCQUOTAS" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbd.8
===================================================================
--- branches/samba/upstream/docs/manpages/smbd.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbd.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBD" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "SMBD" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbget.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbget.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbget.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbget
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBGET" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBGET" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbgetrc.5
===================================================================
--- branches/samba/upstream/docs/manpages/smbgetrc.5	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbgetrc.5	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbgetrc
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: File Formats and Conventions
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBGETRC" "5" "10/02/2008" "Samba 3\.2" "File Formats and Conventions"
+.TH "SMBGETRC" "5" "09/18/2008" "Samba 3\.2" "File Formats and Conventions"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbpasswd.5
===================================================================
--- branches/samba/upstream/docs/manpages/smbpasswd.5	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbpasswd.5	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbpasswd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: File Formats and Conventions
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBPASSWD" "5" "10/02/2008" "Samba 3\.2" "File Formats and Conventions"
+.TH "SMBPASSWD" "5" "09/18/2008" "Samba 3\.2" "File Formats and Conventions"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbpasswd.8
===================================================================
--- branches/samba/upstream/docs/manpages/smbpasswd.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbpasswd.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbpasswd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBPASSWD" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "SMBPASSWD" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbspool.8
===================================================================
--- branches/samba/upstream/docs/manpages/smbspool.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbspool.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbspool
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBSPOOL" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "SMBSPOOL" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbstatus.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbstatus.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbstatus.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbstatus
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBSTATUS" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBSTATUS" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbtar.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbtar.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbtar.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbtar
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBTAR" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBTAR" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/smbtree.1
===================================================================
--- branches/samba/upstream/docs/manpages/smbtree.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/smbtree.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: smbtree
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "SMBTREE" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "SMBTREE" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/swat.8
===================================================================
--- branches/samba/upstream/docs/manpages/swat.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/swat.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: swat
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "SWAT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "SWAT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/tdbbackup.8
===================================================================
--- branches/samba/upstream/docs/manpages/tdbbackup.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/tdbbackup.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: tdbbackup
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "TDBBACKUP" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "TDBBACKUP" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/tdbdump.8
===================================================================
--- branches/samba/upstream/docs/manpages/tdbdump.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/tdbdump.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: tdbdump
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "TDBDUMP" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "TDBDUMP" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/tdbtool.8
===================================================================
--- branches/samba/upstream/docs/manpages/tdbtool.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/tdbtool.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: tdbtool
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "TDBTOOL" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "TDBTOOL" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/testparm.1
===================================================================
--- branches/samba/upstream/docs/manpages/testparm.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/testparm.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: testparm
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "TESTPARM" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "TESTPARM" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/umount.cifs.8
===================================================================
--- branches/samba/upstream/docs/manpages/umount.cifs.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/umount.cifs.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: umount.cifs
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "UMOUNT\.CIFS" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "UMOUNT\.CIFS" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_audit.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_audit.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_audit.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_audit
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_AUDIT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_AUDIT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_cacheprime.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_cacheprime.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_cacheprime.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_cacheprime
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_CACHEPRIME" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_CACHEPRIME" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_cap.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_cap.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_cap.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_cap
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_CAP" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_CAP" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_catia.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_catia.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_catia.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_catia
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_CATIA" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_CATIA" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_commit.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_commit.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_commit.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_commit
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_COMMIT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_COMMIT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_default_quota.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_default_quota.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_default_quota.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_default_quota
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_DEFAULT_QUOTA" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_DEFAULT_QUOTA" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_extd_audit.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_extd_audit.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_extd_audit.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_extd_audit
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_EXTD_AUDIT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_EXTD_AUDIT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_fake_perms.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_fake_perms.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_fake_perms.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_fake_perms
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_FAKE_PERMS" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_FAKE_PERMS" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_full_audit.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_full_audit.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_full_audit.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_full_audit
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_FULL_AUDIT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_FULL_AUDIT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_gpfs.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_gpfs.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_gpfs.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_gpfs
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_GPFS" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_GPFS" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_netatalk.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_netatalk.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_netatalk.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_netatalk
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_NETATALK" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_NETATALK" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_notify_fam.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_notify_fam.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_notify_fam.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_notify_fam
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_NOTIFY_FAM" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_NOTIFY_FAM" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_prealloc.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_prealloc.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_prealloc.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_prealloc
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_PREALLOC" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_PREALLOC" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_readahead.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_readahead.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_readahead.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_readahead
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_READAHEAD" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_READAHEAD" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_readonly.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_readonly.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_readonly.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_readonly
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_READONLY" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_READONLY" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_recycle.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_recycle.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_recycle.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_recycle
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_RECYCLE" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_RECYCLE" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_shadow_copy.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_shadow_copy.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_shadow_copy.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_shadow_copy
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_SHADOW_COPY" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_SHADOW_COPY" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Deleted: branches/samba/upstream/docs/manpages/vfs_smb_traffic_analyzer.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_smb_traffic_analyzer.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_smb_traffic_analyzer.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,186 +0,0 @@
-.\"     Title: smb_traffic_analyzer
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
-.\"    Manual: System Administration tools
-.\"    Source: Samba 3.3
-.\"
-.TH "SMB_TRAFFIC_ANALYZER" "8" "10/02/2008" "Samba 3\.3" "System Administration tools"
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.SH "NAME"
-vfs_smb_traffic_analyzer - log Samba VFS read and write operations through a socket to a helper application
-.SH "SYNOPSIS"
-.HP 1
-vfs objects = smb_traffic_analyzer
-.SH "DESCRIPTION"
-.PP
-This VFS module is part of the
-\fBsamba\fR(7)
-suite\.
-.PP
-The
-vfs_smb_traffic_analyzer
-VFS module logs client write and read operations on a Samba server and sends this data over a socket to a helper program, which feeds a SQL database\. More information on the helper programs can be obtained from the homepage of the project at: http://holger123\.wordpress\.com/smb\-traffic\-analyzer/
-.PP
-vfs_smb_traffic_analyzer
-currently is aware of the following VFS operations:
-.IP "" 4
-write
-.IP "" 4
-pwrite
-.IP "" 4
-read
-.IP "" 4
-pread
-.PP
-vfs_smb_traffic_analyzer
-sends the following data in a fixed format seperated by a comma through either an internet or a unix domain socket:
-.sp
-.RS 4
-.nf
-	BYTES|USER|DOMAIN|READ/WRITE|SHARE|FILENAME|TIMESTAMP
-	
-.fi
-.RE
-.PP
-Description of the records:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-BYTES
-\- the length in bytes of the VFS operation
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-USER
-\- the user who initiated the operation
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-DOMAIN
-\- the domain of the user
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-READ/WRITE
-\- either "W" for a write operation or "R" for read
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-SHARE
-\- the name of the share on which the VFS operation occured
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-FILENAME
-\- the name of the file that was used by the VFS operation
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-TIMESTAMP
-\- a timestamp, formatted as "yyyy\-mm\-dd hh\-mm\-ss\.ms" indicating when the VFS operation occured
-.sp
-.RE
-.PP
-This module is stackable\.
-.SH "OPTIONS"
-.PP
-smb_traffic_analyzer:mode = STRING
-.RS 4
-If STRING matches to "unix_domain_socket", the module will use a unix domain socket located at /var/tmp/stadsocket, if STRING contains an different string or is not defined, the module will use an internet domain socket for data transfer\.
-.RE
-.PP
-smb_traffic_analyzer:host = STRING
-.RS 4
-The module will send the data to the system named with the hostname STRING\.
-.RE
-.PP
-smb_traffic_analyzer:port = STRING
-.RS 4
-The module will send the data using the TCP port given in STRING
-.RE
-.SH "EXAMPLES"
-.PP
-The module running on share "example_share", using a unix domain socket
-.sp
-.RS 4
-.nf
-	\fI[example_share]\fR
-	\fIpath = /data/example\fR
-	\fIvfs objects = smb_traffic_analyzer\fR
-	\fIsmb_traffic_analyzer:mode = unix_domain_socket\fR
-	
-.fi
-.RE
-.PP
-The module running on share "example_share", using an internet domain socket, connecting to host "examplehost" on port 3491\.
-.sp
-.RS 4
-.nf
-	\fI[example_share]\fR
-	\fIpath = /data/example\fR
-	\fIvfs objects = smb_traffic_analyzer\fR
-	\fIsmb_traffic_analyzer:host = examplehost\fR
-	\fIsmb_traffic_analyzer:port = 3490\fR
-	
-.fi
-.RE
-.SH "VERSION"
-.PP
-This man page is correct for version 3\.3 of the Samba suite\.
-.SH "AUTHOR"
-.PP
-The original Samba software and related utilities were created by Andrew Tridgell\. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\.
-.PP
-The original version of the VFS module and the helper tools were created by Holger Hetterich\.

Modified: branches/samba/upstream/docs/manpages/vfs_streams_depot.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_streams_depot.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_streams_depot.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_streams_depot
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_STREAMS_DEPOT" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_STREAMS_DEPOT" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_streams_xattr.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_streams_xattr.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_streams_xattr.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_streams_xattr
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_STREAMS_XATTR" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_STREAMS_XATTR" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfs_xattr_tdb.8
===================================================================
--- branches/samba/upstream/docs/manpages/vfs_xattr_tdb.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfs_xattr_tdb.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfs_xattr_tdb
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "VFS_XATTR_TDB" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "VFS_XATTR_TDB" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/vfstest.1
===================================================================
--- branches/samba/upstream/docs/manpages/vfstest.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/vfstest.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: vfstest
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "VFSTEST" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "VFSTEST" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/wbinfo.1
===================================================================
--- branches/samba/upstream/docs/manpages/wbinfo.1	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/wbinfo.1	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: wbinfo
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: User Commands
 .\"    Source: Samba 3.2
 .\"
-.TH "WBINFO" "1" "10/02/2008" "Samba 3\.2" "User Commands"
+.TH "WBINFO" "1" "09/18/2008" "Samba 3\.2" "User Commands"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)

Modified: branches/samba/upstream/docs/manpages/winbindd.8
===================================================================
--- branches/samba/upstream/docs/manpages/winbindd.8	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs/manpages/winbindd.8	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,11 +1,11 @@
 .\"     Title: winbindd
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 10/02/2008
+.\"      Date: 09/18/2008
 .\"    Manual: System Administration tools
 .\"    Source: Samba 3.2
 .\"
-.TH "WINBINDD" "8" "10/02/2008" "Samba 3\.2" "System Administration tools"
+.TH "WINBINDD" "8" "09/18/2008" "Samba 3\.2" "System Administration tools"
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
@@ -220,6 +220,14 @@
 As winbindd users and groups are resolved from a server, user and group ids are allocated from a specified range\. This is done on a first come, first served basis, although all existing users and groups will be mapped as soon as a client performs a user or group enumeration command\. The allocated unix ids are stored in a database and will be remembered\.
 .PP
 WARNING: The SID to unix id database is the only location where the user and group mappings are stored by winbindd\. If this store is deleted or corrupted, there is no way for winbindd to determine which user and group ids correspond to Windows NT user and group rids\.
+.PP
+See the
+\fIidmap domains\fR
+or the old
+\fIidmap backend\fR
+parameters in
+\fIsmb\.conf\fR
+for options for sharing this database, such as via LDAP\.
 .SH "CONFIGURATION"
 .PP
 Configuration of the

Copied: branches/samba/upstream/docs-xml/.gitignore (from rev 2163, branches/samba/upstream/docs-xml/.gitignore)
===================================================================
--- branches/samba/upstream/docs-xml/.gitignore	                        (rev 0)
+++ branches/samba/upstream/docs-xml/.gitignore	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,41 @@
+Makefile.settings
+Samba3-Developers-Guide-attributions.xml
+Samba3-HOWTO-attributions.xml
+Samba3-HOWTO.d
+Samba4-HOWTO.d
+Samba4-HOWTO-attributions.xml
+autom4te.cache
+config.log
+config.status
+configure
+test.d
+tmp
+smbdotconf/parameters.all.xml
+smbdotconf/parameters.global.xml
+smbdotconf/parameters.service.xml
+*.d
+output/manpages-3
+Samba3-ByExample.tex
+Samba3-Developers-Guide.tex
+xslt/figures/*.pdf
+output/*.pdf
+*.lof
+*.out
+*.log
+*.aux
+*.ind
+*.ilg
+*.tpt
+*.idx
+*.glo
+*.loe
+*.lot
+*.toc
+Samba3-ByExample.pdf
+Samba3-Developers-Guide.pdf
+Samba3-HOWTO.pdf
+Samba3-HOWTO.tex
+Samba4-HOWTO.pdf
+Samba4-HOWTO.tex
+test.pdf
+test.tex

Modified: branches/samba/upstream/docs-xml/Makefile
===================================================================
--- branches/samba/upstream/docs-xml/Makefile	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/Makefile	2008-11-01 11:09:46 UTC (rev 2200)
@@ -50,10 +50,10 @@
 $(DOCBOOKDIR)/Samba4-HOWTO.xml: $(filter-out Samba4-HOWTO/index.xml,$(wildcard Samba4-HOWTO/*.xml)) Samba4-HOWTO-attributions.xml
 
 # Pseudo targets 
-all:: $(TARGETS)
-everything:: manpages3 pdf html-single html htmlman3 txt ps fo htmlhelp pearson 
-release:: manpages3 htmlman3 html pdf 
-clean::
+all: $(TARGETS)
+everything: manpages3 pdf html-single html htmlman3 txt ps fo htmlhelp pearson 
+release: manpages3 htmlman3 html pdf 
+clean:
 	@echo "Cleaning up..." 
 	rm -rf $(OUTPUTDIR)/* $(DOCBOOKDIR)
 	rm -f $(patsubst %.svg,%.png,$(foreach DOC,$(MAIN_DOCS),$($(DOC)-images-latex-dia))) \
@@ -61,43 +61,38 @@
 			$(patsubst %.svg,%.eps,$(foreach DOC,$(MAIN_DOCS),$($(DOC)-images-latex-svg)))
 	rm -f *-attributions.xml *.d *.tpt *.tex *.loc *.toc *.lof *.glo *.idx *.aux
 	rm -f *-images-html*
-	rm -f *-images-latex-* $(LATEX_FIGURES)
+	rm -f *-images-latex-* latexfigures
 	rm -f xslt/figures/*pdf
 	rm -f $(SMBDOTCONFDOC)/parameters.*.xml
 	rm -f $(addsuffix .*,$(MAIN_DOCS))
 
 # Output format targets
-pdf:: $(patsubst %,$(PDFDIR)/%.pdf,$(MAIN_DOCS))
-dvi:: $(patsubst %,$(DVIDIR)/%.dvi,$(MAIN_DOCS))
-ps:: $(patsubst %,$(PSDIR)/%.ps,$(MAIN_DOCS))
-txt:: $(patsubst %,$(TXTDIR)/%.txt,$(MAIN_DOCS))
-txt-chunks:: $(addsuffix -txt-chunks,$(MAIN_DOCS))
-fo:: $(patsubst %,$(FODIR)/%.fo,$(MAIN_DOCS))
-fo-pdf:: $(patsubst %,$(FOPDFDIR)/%.pdf,$(MAIN_DOCS))
-tex:: $(addsuffix .tex,$(MAIN_DOCS))
-texi:: $(patsubst %,$(TEXINFODIR)/%.texi,$(MAIN_DOCS))
-texiinfo:: $(patsubst %,$(TEXINFODIR)/%.info,$(MAIN_DOCS))
-manpages3:: $(patsubst $(MANPAGEDIR3)/%.xml,$(OUTPUTDIR)/manpages-3/%,$(MANPAGES3))
-pearson:: $(PEARSONDIR)/Samba3-HOWTO.xml
-pearson-verify:: $(PEARSONDIR)/Samba3-HOWTO.report.html
-plucker:: $(patsubst %,$(PLUCKERDIR)/%.pdb,$(MAIN_DOCS))
-htmlman3:: $(patsubst $(MANPAGEDIR3)/%.xml,$(HTMLDIR)/manpages-3/%.html,$(MANPAGES3)) $(HTMLDIR)/manpages-3/index.html
-html-single:: $(patsubst %,$(HTMLDIR)/%.html,$(MAIN_DOCS))
-html:: $(patsubst %,$(HTMLDIR)/%/index.html,$(MAIN_DOCS)) $(HTMLDIR)/index.html
-htmlhelp:: $(addprefix $(HTMLHELPDIR)/,$(MAIN_DOCS))
-validate:: $(addsuffix -validate,$(MAIN_DOCS))
+pdf: $(patsubst %,$(PDFDIR)/%.pdf,$(MAIN_DOCS))
+dvi: $(patsubst %,$(DVIDIR)/%.dvi,$(MAIN_DOCS))
+ps: $(patsubst %,$(PSDIR)/%.ps,$(MAIN_DOCS))
+txt: $(patsubst %,$(TXTDIR)/%.txt,$(MAIN_DOCS))
+txt-chunks: $(addsuffix -txt-chunks,$(MAIN_DOCS))
+fo: $(patsubst %,$(FODIR)/%.fo,$(MAIN_DOCS))
+fo-pdf: $(patsubst %,$(FOPDFDIR)/%.pdf,$(MAIN_DOCS))
+tex: $(addsuffix .tex,$(MAIN_DOCS))
+texi: $(patsubst %,$(TEXINFODIR)/%.texi,$(MAIN_DOCS))
+texiinfo: $(patsubst %,$(TEXINFODIR)/%.info,$(MAIN_DOCS))
+manpages3: $(patsubst $(MANPAGEDIR3)/%.xml,$(OUTPUTDIR)/manpages-3/%,$(MANPAGES3))
+pearson: $(PEARSONDIR)/Samba3-HOWTO.xml
+pearson-verify: $(PEARSONDIR)/Samba3-HOWTO.report.html
+plucker: $(patsubst %,$(PLUCKERDIR)/%.pdb,$(MAIN_DOCS))
+htmlman3: $(patsubst $(MANPAGEDIR3)/%.xml,$(HTMLDIR)/manpages-3/%.html,$(MANPAGES3)) $(HTMLDIR)/manpages-3/index.html
+html-single: $(patsubst %,$(HTMLDIR)/%.html,$(MAIN_DOCS))
+html: $(patsubst %,$(HTMLDIR)/%/index.html,$(MAIN_DOCS)) $(HTMLDIR)/index.html
+htmlhelp: $(addprefix $(HTMLHELPDIR)/,$(MAIN_DOCS))
+validate: $(addsuffix -validate,$(MAIN_DOCS))
 
-test:: validate
-check:: validate
-
-.PHONY: test check validate
-
 # Intermediate docbook docs
 #
 $(DOCBOOKDIR)/%.xml: %/index.xml xslt/expand-sambadoc.xsl
 	@echo "Converting Samba-specific tags for $*..."
 	@mkdir -p $(@D)
-	@$(XSLTPROC) --stringparam latex.imagebasedir "$*/"  --stringparam noreference 0  --xinclude --output $@ xslt/expand-sambadoc.xsl $<
+	$(XSLTPROC) --stringparam latex.imagebasedir "$*/"  --stringparam noreference 0  --xinclude --output $@ xslt/expand-sambadoc.xsl $<
 
 $(DOCBOOKDIR)/manpages-3/%.xml: $(MANPAGEDIR3)/%.xml xslt/expand-sambadoc.xsl
 	@mkdir -p $(@D)
@@ -110,6 +105,7 @@
 	@echo "</variablelist></article>" >> $@
 
 # HTML docs
+
 $(HTMLDIR)/index.html: htmldocs.html
 	@mkdir -p $(@D)
 	cp $< $@
@@ -132,7 +128,7 @@
 %-attributions.xml: 
 	@echo "Generating attributions file $@ from $*/"
 	@cp -f templates/attributions.xml $@
-	@$(XSLTPROC) --xinclude -o $@ xslt/generate-attributions.xsl $*/index.xml 
+	$(XSLTPROC) --xinclude -o $@ xslt/generate-attributions.xsl $*/index.xml 
 
 # Text files
 $(TXTDIR)/%.txt: $(HTMLDIR)/%.html
@@ -143,13 +139,15 @@
 %.tex: %/index.xml xslt/latex.xsl
 	@echo "Generating $@..."
 	@mkdir -p $(@D)
-	@$(XSLTPROC) $(DB2LATEX_ARGS) --stringparam latex.imagebasedir "$*/" --xinclude --output $@ xslt/latex.xsl $<
+	$(XSLTPROC) $(DB2LATEX_ARGS) --stringparam latex.imagebasedir "$*/" --xinclude --output $@ xslt/latex.xsl $<
 
+latexfigures: $(LATEX_FIGURES)
+
 $(PDFDIR)/%.pdf: %.pdf
 	@mkdir -p $(@D)
 	cp $< $@
 
-%.idx: %.tex $(LATEX_FIGURES)
+%.idx: %.tex latexfigures
 	-$(PDFLATEX) $<
 
 %.ind: %.idx
@@ -158,7 +156,8 @@
 # Dependency files
 %.d: $(DOCBOOKDIR)/%.xml xslt/generate-dependencies.xsl
 	@echo "Generating dependency file for $*" 
-	@$(XSLTPROC) --novalid \
+	$(XSLTPROC) \
+		--novalid \
 		--stringparam txtbasedir "$(TXTDIR)/$*/" \
 		--stringparam target "$*" \
 		-o $@ xslt/generate-dependencies.xsl $<
@@ -191,7 +190,7 @@
 endif
 
 # Adobe PDF files
-%.pdf: %.tex %.ind $(LATEX_FIGURES) %-images-latex-png %-images-latex-pdf
+%.pdf: %.tex %.ind latexfigures %-images-latex-png %-images-latex-pdf
 	-$(PDFLATEX) $<
 	-$(PDFLATEX) $<
 	-$(PDFLATEX) $<
@@ -319,12 +318,12 @@
 xslt/man.xsl:
 xslt/pearson.xsl:
 
-distclean clobber:: clean
+distclean clobber: clean
 	rm Makefile.settings config.status config.log configure
 	rm -rf autom4te.cache
 
 
 # Always keep intermediate files if we can
 .SECONDARY:
-.PHONY: clean clobber archive release everything all 
+.PHONY: clean clobber archive release everything all $(TARGETS) latexfigures
 

Copied: branches/samba/upstream/docs-xml/Makefile.settings (from rev 2163, branches/samba/upstream/docs-xml/Makefile.settings)
===================================================================
--- branches/samba/upstream/docs-xml/Makefile.settings	                        (rev 0)
+++ branches/samba/upstream/docs-xml/Makefile.settings	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,50 @@
+# Programs
+XSLTPROC = xsltproc
+XMLLINT = xmllint
+DVIPS = dvips
+PNGTOPNM = pngtopnm
+EPSTOPNM = @EPSTOPNM@
+PNMTOPNG = @PNMTOPNG@
+DIA = @DIA@
+INKSCAPE = inkscape
+PNMTOPS = pnmtops
+HTML2TEXT = 
+DB2TEXI = 
+MAKEINFO = makeinfo
+PLUCKERBUILD = 
+COPY_IMAGES = ./scripts/copy-images.sh
+THUMBPDF = thumbpdf
+PDFLATEX = pdflatex --file-line-error-style
+LATEX = latex --file-line-error-style
+FOP = fop
+RM = rm
+PERL = perl
+ifndef DEBUG_LATEX
+PDFLATEX += --interaction nonstopmode
+LATEX += --interaction nonstopmode
+endif
+
+# Paths
+OUTPUTDIR = output
+ARCHIVEDIR = archive
+TEXINFODIR = $(OUTPUTDIR)/texi
+SRCDIR = 
+EPSTOPDF = epstopdf
+MANPAGEDIR3 = manpages-3
+MAKEINDEX = makeindex
+EXAMPLESDIR = $(OUTPUTDIR)/examples
+SMBDOTCONFDOC = smbdotconf
+DOCBOOKDIR = tmp
+PSDIR = $(OUTPUTDIR)
+FOPDFDIR = $(OUTPUTDIR)/fo-pdf
+PDFDIR = $(OUTPUTDIR)
+DVIDIR = $(OUTPUTDIR)
+FODIR = $(OUTPUTDIR)
+HTMLHELPDIR = $(OUTPUTDIR)/htmlhelp
+PEARSONDIR = $(OUTPUTDIR)/pearson
+TXTDIR = $(OUTPUTDIR)/textdocs
+HTMLDIR=$(OUTPUTDIR)/htmldocs
+PLUCKERDIR=$(OUTPUTDIR)/plucker
+DB2LATEX_ARGS = --stringparam latex.documentclass.book letterpaper,11pt,openright,twoside
+
+TARGETS =   tex pdf ps html htmlhelp htmlman3 manpages3 pearson  fo-pdf texiinfo

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/AccountingNetwork.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/AccountingNetwork.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/Charity-Network.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/Charity-Network.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/UNIX-Samba-and-LDAP.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/UNIX-Samba-and-LDAP.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/acct2net.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/acct2net.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-dual-additive-LDAP-Ok.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-dual-additive-LDAP-Ok.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-dual-additive-LDAP.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-dual-additive-LDAP.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-fail-overLDAP.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-fail-overLDAP.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-singleLDAP.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch7-singleLDAP.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch8-migration.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/ch8-migration.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap4-net.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap4-net.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap5-net.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap5-net.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap6-net.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap6-net.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap7-idresol.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap7-idresol.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap9-ADSDC.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap9-ADSDC.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap9-SambaDC.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-ByExample/images/chap9-SambaDC.png)
===================================================================
(Binary files differ)

Modified: branches/samba/upstream/docs-xml/Samba3-Developers-Guide/packagers.xml
===================================================================
--- branches/samba/upstream/docs-xml/Samba3-Developers-Guide/packagers.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/Samba3-Developers-Guide/packagers.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -13,11 +13,9 @@
 <title>Versioning</title>
 
 <para>
-Please, please set the vendor version suffix and number in <filename>source/VERSION</filename> and call
-<filename>source/script/mkvesion.sh</filename> to include the versioning of your package. There is also
-the possibility to set a function to create the vendor version. This makes it easier to distinguish
-standard samba builds from custom-build samba builds (distributions often patch packages). For example,
-a good version would be:
+Please, please update the version number in <filename>source/include/version.h</filename> to include the
+versioning of your package. This makes it easier to distinguish standard samba builds from custom-build samba
+builds (distributions often patch packages). For example, a good version would be:
 </para>
 
 <para><programlisting>

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/access1.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/access1.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/browsing1.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/browsing1.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/cups1.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/cups1.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/cups2.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/cups2.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/domain.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/domain.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-gid2sid.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-gid2sid.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-sid2gid.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-sid2gid.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-sid2uid.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-sid2uid.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-store-gid2sid.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-store-gid2sid.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-uid2sid.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/idmap-uid2sid.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/pdftoepsonusb.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/pdftoepsonusb.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/pdftosocket.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/pdftosocket.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/Samba3-HOWTO/images/trusts1.png (from rev 2163, branches/samba/upstream/docs-xml/Samba3-HOWTO/images/trusts1.png)
===================================================================
(Binary files differ)

Copied: branches/samba/upstream/docs-xml/autom4te.cache (from rev 2163, branches/samba/upstream/docs-xml/autom4te.cache)

Copied: branches/samba/upstream/docs-xml/build/catalog.xml (from rev 2163, branches/samba/upstream/docs-xml/build/catalog.xml)
===================================================================
--- branches/samba/upstream/docs-xml/build/catalog.xml	                        (rev 0)
+++ branches/samba/upstream/docs-xml/build/catalog.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,14 @@
+<?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">
+
+<!--  XML Catalog file for SAMBA. -->
+
+    <rewriteURI
+			uriStartString="http://www.samba.org/samba/DTD/"
+			rewritePrefix="file://@BUILDDIR@/build/DTD/"/>
+
+    <rewriteURI
+			uriStartString="http://www.gnu.org/licenses/"
+			rewritePrefix="file://@BUILDDIR@/Samba3-ByExample/"/>
+</catalog>

Copied: branches/samba/upstream/docs-xml/config.log (from rev 2163, branches/samba/upstream/docs-xml/config.log)
===================================================================
--- branches/samba/upstream/docs-xml/config.log	                        (rev 0)
+++ branches/samba/upstream/docs-xml/config.log	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,244 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by configure, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  $ ./configure --with-papersize=letter
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = bando
+uname -m = i686
+uname -r = 2.6.22.18-0.2-default
+uname -s = Linux
+uname -v = #1 SMP 2008-06-09 13:53:20 +0200
+
+/usr/bin/uname -p = unknown
+/bin/uname -X     = unknown
+
+/bin/arch              = i686
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo      = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /opt/kde3/bin
+PATH: /home/kseeger/bin
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/bin/X11
+PATH: /usr/X11R6/bin
+PATH: /usr/games
+PATH: /usr/lib/jvm/jre/bin
+PATH: /usr/lib/mit/bin
+PATH: /usr/lib/mit/sbin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1664: checking for xsltproc
+configure:1680: found /usr/bin/xsltproc
+configure:1691: result: xsltproc
+configure:1715: checking for rm
+configure:1731: found /bin/rm
+configure:1742: result: rm
+configure:1766: checking for inkscape
+configure:1782: found /usr/bin/inkscape
+configure:1793: result: inkscape
+configure:1817: checking for inkscape
+configure:1844: result: inkscape
+configure:1868: checking for inkscape
+configure:1895: result: inkscape
+configure:1919: checking for inkscape
+configure:1946: result: inkscape
+configure:1970: checking for inkscape
+configure:1997: result: inkscape
+configure:2021: checking for inkscape
+configure:2048: result: inkscape
+configure:2072: checking for inkscape
+configure:2099: result: inkscape
+configure:2123: checking for inkscape
+configure:2150: result: inkscape
+configure:2190: checking for makeindex
+configure:2206: found /usr/bin/makeindex
+configure:2217: result: makeindex
+configure:2241: checking for pdflatex
+configure:2257: found /usr/bin/pdflatex
+configure:2268: result: pdflatex
+configure:2292: checking for epstopdf
+configure:2308: found /usr/bin/epstopdf
+configure:2319: result: epstopdf
+configure:2343: checking for thumbpdf
+configure:2359: found /usr/bin/thumbpdf
+configure:2370: result: thumbpdf
+configure:2394: checking for pngtopnm
+configure:2410: found /usr/bin/pngtopnm
+configure:2421: result: pngtopnm
+configure:2445: checking for pnmtops
+configure:2461: found /usr/bin/pnmtops
+configure:2472: result: pnmtops
+configure:2496: checking for latex
+configure:2512: found /usr/bin/latex
+configure:2523: result: latex
+configure:2547: checking for dvips
+configure:2563: found /usr/bin/dvips
+configure:2574: result: dvips
+configure:2598: checking for plucker-build
+configure:2628: result: no
+configure:2649: checking for html2text
+configure:2679: result: no
+configure:2700: checking for perl
+configure:2716: found /usr/bin/perl
+configure:2727: result: perl
+configure:2751: checking for xmllint
+configure:2767: found /usr/bin/xmllint
+configure:2778: result: xmllint
+configure:2802: checking for fop
+configure:2818: found /usr/bin/fop
+configure:2829: result: fop
+configure:2853: checking for docbook2x-texi
+configure:2883: result: no
+configure:2904: checking for makeinfo
+configure:2920: found /usr/bin/makeinfo
+configure:2931: result: makeinfo
+configure:2951: checking for param/loadparm.c
+configure:2965: result: not found
+configure:2973: result: 
+configure:2975: result: Summary:
+configure:2977: result: --------------
+configure:3116: result: Building the plucker versions requires : plucker-build 
+configure:3158: result: Building the TexInfo versions requires : docbook2x-texi 
+configure:3186: result: Building the list of undocumented options requires : SAMBASOURCEDIR 
+configure:3200: result: Building the text versions requires : html2text 
+configure:3210: result: You will be able to build:   tex pdf ps html htmlhelp htmlman3 manpages3 pearson  fo-pdf texiinfo
+configure:3348: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by config.status, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on bando
+
+config.status:587: creating Makefile.settings
+config.status:587: creating build/catalog.xml
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_prog_DVIPS=dvips
+ac_cv_prog_EPSTOPDF=epstopdf
+ac_cv_prog_FOP=fop
+ac_cv_prog_INKSCAPE=inkscape
+ac_cv_prog_LATEX=latex
+ac_cv_prog_MAKEINDEX=makeindex
+ac_cv_prog_MAKEINFO=makeinfo
+ac_cv_prog_PDFLATEX=pdflatex
+ac_cv_prog_PERL=perl
+ac_cv_prog_PNGTOPNM=pngtopnm
+ac_cv_prog_PNMTOPS=pnmtops
+ac_cv_prog_RM=rm
+ac_cv_prog_THUMBPDF=thumbpdf
+ac_cv_prog_XMLLINT=xmllint
+ac_cv_prog_XSLTPROC=xsltproc
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+DB2TEXI=''
+DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\"'
+DOC_BUILD_DATE='18-09-2008'
+DVIPS='dvips'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EPSTOPDF='epstopdf'
+FOP='fop'
+HTML2TEXT=''
+INKSCAPE='inkscape'
+LATEX='latex'
+LATEX_DOCUMENTCLASS_OPTIONS='letterpaper,11pt,openright,twoside'
+LIBOBJS=''
+LIBS=''
+LTLIBOBJS=''
+MAKEINDEX='makeindex'
+MAKEINFO='makeinfo'
+PACKAGE_BUGREPORT=''
+PACKAGE_NAME=''
+PACKAGE_STRING=''
+PACKAGE_TARNAME=''
+PACKAGE_VERSION=''
+PATH_SEPARATOR=':'
+PDFLATEX='pdflatex'
+PERL='perl'
+PLUCKERBUILD=''
+PNGTOPNM='pngtopnm'
+PNMTOPS='pnmtops'
+RM='rm'
+SAMBASOURCEDIR=''
+SHELL='/bin/sh'
+TARGETS='  tex pdf ps html htmlhelp htmlman3 manpages3 pearson  fo-pdf texiinfo'
+THUMBPDF='thumbpdf'
+XMLLINT='xmllint'
+XSLTPROC='xsltproc'
+bindir='${exec_prefix}/bin'
+build_alias=''
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE}'
+dvidir='${docdir}'
+exec_prefix='${prefix}'
+host_alias=''
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define PACKAGE_NAME ""
+#define PACKAGE_TARNAME ""
+#define PACKAGE_VERSION ""
+#define PACKAGE_STRING ""
+#define PACKAGE_BUGREPORT ""
+
+configure: exit 0

Copied: branches/samba/upstream/docs-xml/config.status (from rev 2163, branches/samba/upstream/docs-xml/config.status)
===================================================================
--- branches/samba/upstream/docs-xml/config.status	                        (rev 0)
+++ branches/samba/upstream/docs-xml/config.status	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,773 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=${CONFIG_SHELL-/bin/sh}
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s='ln -s'
+  # ... but there are two gotchas:
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+  # In both cases, we have to default to `cp -p'.
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+    as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+# Files that config.status was made for.
+config_files=" Makefile.settings build/catalog.xml"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf at gnu.org>."
+
+ac_cs_version="\
+config.status
+configured by ./configure, generated by GNU Autoconf 2.61,
+  with options \"'--with-papersize=letter'\"
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='/data/git/samba/samba-3.2.4/docs-xml'
+srcdir='.'
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+  echo "running CONFIG_SHELL=/bin/sh /bin/sh ./configure " '--with-papersize=letter' $ac_configure_extra_args " --no-create --no-recursion" >&6
+  CONFIG_SHELL=/bin/sh
+  export CONFIG_SHELL
+  exec /bin/sh "./configure" '--with-papersize=letter' $ac_configure_extra_args --no-create --no-recursion
+fi
+
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  echo "$ac_log"
+} >&5
+
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile.settings") CONFIG_FILES="$CONFIG_FILES Makefile.settings" ;;
+    "build/catalog.xml") CONFIG_FILES="$CONFIG_FILES build/catalog.xml" ;;
+
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+cat >"$tmp/subs-1.sed" <<\CEOF
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+s, at SHELL@,|#_!!_#|/bin/sh,g
+s, at PATH_SEPARATOR@,|#_!!_#|:,g
+s, at PACKAGE_NAME@,|#_!!_#|,g
+s, at PACKAGE_TARNAME@,|#_!!_#|,g
+s, at PACKAGE_VERSION@,|#_!!_#|,g
+s, at PACKAGE_STRING@,|#_!!_#|,g
+s, at PACKAGE_BUGREPORT@,|#_!!_#|,g
+s, at exec_prefix@,|#_!!_#|${prefix},g
+s, at prefix@,|#_!!_#|/usr/local,g
+s, at program_transform_name@,|#_!!_#|s\,x\,x\,,g
+s, at bindir@,|#_!!_#|${exec_prefix}/bin,g
+s, at sbindir@,|#_!!_#|${exec_prefix}/sbin,g
+s, at libexecdir@,|#_!!_#|${exec_prefix}/libexec,g
+s, at datarootdir@,|#_!!_#|${prefix}/share,g
+s, at datadir@,|#_!!_#|${datarootdir},g
+s, at sysconfdir@,|#_!!_#|${prefix}/etc,g
+s, at sharedstatedir@,|#_!!_#|${prefix}/com,g
+s, at localstatedir@,|#_!!_#|${prefix}/var,g
+s, at includedir@,|#_!!_#|${prefix}/include,g
+s, at oldincludedir@,|#_!!_#|/usr/include,g
+s, at docdir@,|#_!!_#|${datarootdir}/doc/${PACKAGE},g
+s, at infodir@,|#_!!_#|${datarootdir}/info,g
+s, at htmldir@,|#_!!_#|${docdir},g
+s, at dvidir@,|#_!!_#|${docdir},g
+s, at pdfdir@,|#_!!_#|${docdir},g
+s, at psdir@,|#_!!_#|${docdir},g
+s, at libdir@,|#_!!_#|${exec_prefix}/lib,g
+s, at localedir@,|#_!!_#|${datarootdir}/locale,g
+s, at mandir@,|#_!!_#|${datarootdir}/man,g
+s, at DEFS@,|#_!!_#|-DPACKAGE_NAME=\\"\\" -DPACKAGE_TARNAME=\\"\\" -DPACKAGE_VERSION=\\"\\" -DPACKAGE_STRING=\\"\\" -DPACKAGE_BUGREPORT=\\"\\",g
+s, at ECHO_C@,|#_!!_#|,g
+s, at ECHO_N@,|#_!!_#|-n,g
+s, at ECHO_T@,|#_!!_#|,g
+s, at LIBS@,|#_!!_#|,g
+s, at build_alias@,|#_!!_#|,g
+s, at host_alias@,|#_!!_#|,g
+s, at target_alias@,|#_!!_#|,g
+s, at LATEX_DOCUMENTCLASS_OPTIONS@,|#_!!_#|letterpaper\,11pt\,openright\,twoside,g
+s, at DOC_BUILD_DATE@,|#_!!_#|18-09-2008,g
+s, at SAMBASOURCEDIR@,|#_!!_#|,g
+s, at XSLTPROC@,|#_!!_#|xsltproc,g
+s, at RM@,|#_!!_#|rm,g
+s, at INKSCAPE@,|#_!!_#|inkscape,g
+s, at MAKEINDEX@,|#_!!_#|makeindex,g
+s, at PDFLATEX@,|#_!!_#|pdflatex,g
+s, at EPSTOPDF@,|#_!!_#|epstopdf,g
+s, at THUMBPDF@,|#_!!_#|thumbpdf,g
+s, at PNGTOPNM@,|#_!!_#|pngtopnm,g
+s, at PNMTOPS@,|#_!!_#|pnmtops,g
+s, at LATEX@,|#_!!_#|latex,g
+s, at DVIPS@,|#_!!_#|dvips,g
+s, at PLUCKERBUILD@,|#_!!_#|,g
+s, at HTML2TEXT@,|#_!!_#|,g
+s, at PERL@,|#_!!_#|perl,g
+s, at XMLLINT@,|#_!!_#|xmllint,g
+s, at FOP@,|#_!!_#|fop,g
+s, at DB2TEXI@,|#_!!_#|,g
+s, at MAKEINFO@,|#_!!_#|makeinfo,g
+s, at TARGETS@,|#_!!_#|  tex pdf ps html htmlhelp htmlman3 manpages3 pearson  fo-pdf texiinfo,g
+s, at LIBOBJS@,|#_!!_#|,g
+s, at LTLIBOBJS@,|#_!!_#|,g
+:end
+s/|#_!!_#|//g
+CEOF
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in  :F $CONFIG_FILES
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      ac_file_inputs="$ac_file_inputs $ac_f"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input="Generated from "`IFS=:
+	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    fi
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin";;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+case `sed -n '/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  ac_datarootdir_hack='
+  s&@datadir@&${datarootdir}&g
+  s&@docdir@&${datarootdir}/doc/${PACKAGE}&g
+  s&@infodir@&${datarootdir}/info&g
+  s&@localedir@&${datarootdir}/locale&g
+  s&@mandir@&${datarootdir}/man&g
+    s&\${datarootdir}&${prefix}/share&g' ;;
+esac
+  sed "/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[	 ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[	 ]*$//
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out"; rm -f "$tmp/out";;
+  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+  esac
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }

Copied: branches/samba/upstream/docs-xml/configure (from rev 2163, branches/samba/upstream/docs-xml/configure)
===================================================================
--- branches/samba/upstream/docs-xml/configure	                        (rev 0)
+++ branches/samba/upstream/docs-xml/configure	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,4236 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes && 	 (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	   done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+	 # Try only shells that exist, to save several forks.
+	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		{ ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+	       as_have_required=yes
+	       if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+        done
+        export CONFIG_SHELL
+        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell autoconf at gnu.org about your system,
+  echo including any error possibly output before this
+  echo message
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s='ln -s'
+  # ... but there are two gotchas:
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+  # In both cases, we have to default to `cp -p'.
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+    as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="xslt/latex.xsl"
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+LATEX_DOCUMENTCLASS_OPTIONS
+DOC_BUILD_DATE
+SAMBASOURCEDIR
+XSLTPROC
+RM
+INKSCAPE
+MAKEINDEX
+PDFLATEX
+EPSTOPDF
+THUMBPDF
+PNGTOPNM
+PNMTOPS
+LATEX
+DVIPS
+PLUCKERBUILD
+HTML2TEXT
+PERL
+XMLLINT
+FOP
+DB2TEXI
+MAKEINFO
+TARGETS
+LIBOBJS
+LTLIBOBJS'
+ac_subst_files=''
+      ac_precious_vars='build_alias
+host_alias
+target_alias'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)	ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { echo "$as_me: error: Working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR          info documentation [DATAROOTDIR/info]
+  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR           man documentation [DATAROOTDIR/man]
+  --docdir=DIR           documentation root [DATAROOTDIR/doc/PACKAGE]
+  --htmldir=DIR          html documentation [DOCDIR]
+  --dvidir=DIR           dvi documentation [DOCDIR]
+  --pdfdir=DIR           pdf documentation [DOCDIR]
+  --psdir=DIR            ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+ --enable-prentice-hall     Produce Prentice-Hall compatible output
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-samba-sources=DIR Specify path to Samba sources
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" || continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+  set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+  set x "$ac_default_prefix/share/config.site" \
+	"$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+# Check whether --with-samba-sources was given.
+if test "${with_samba_sources+set}" = set; then
+  withval=$with_samba_sources;  test "$withval" && SPECIFIED_SOURCEDIR="$withval"
+fi
+
+
+LATEX_DOCUMENTCLASS_OPTIONS="letterpaper,11pt,openright,twoside"
+# Check whether --enable-prentice-hall was given.
+if test "${enable_prentice_hall+set}" = set; then
+  enableval=$enable_prentice_hall;  test "$enableval" && LATEX_DOCUMENTCLASS_OPTIONS="letterpaper,10pt,openleft,twoside,ph"
+fi
+
+
+
+DOC_BUILD_DATE=`date '+%d-%m-%Y'`
+
+
+
+
+	for ac_prog in xsltproc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_XSLTPROC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$XSLTPROC"; then
+  ac_cv_prog_XSLTPROC="$XSLTPROC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_XSLTPROC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+XSLTPROC=$ac_cv_prog_XSLTPROC
+if test -n "$XSLTPROC"; then
+  { echo "$as_me:$LINENO: result: $XSLTPROC" >&5
+echo "${ECHO_T}$XSLTPROC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$XSLTPROC" && break
+done
+
+	if test x"$XSLTPROC" = x; then
+		if test x"$ALL_REQUIRES" = x; then
+			ALL_REQUIRES="xsltproc"
+		else
+			ALL_REQUIRES="$ALL_REQUIRES xsltproc"
+		fi
+	fi
+
+
+	for ac_prog in rm
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_RM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RM"; then
+  ac_cv_prog_RM="$RM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RM="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RM=$ac_cv_prog_RM
+if test -n "$RM"; then
+  { echo "$as_me:$LINENO: result: $RM" >&5
+echo "${ECHO_T}$RM" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$RM" && break
+done
+
+	if test x"$RM" = x; then
+		if test x"$ALL_REQUIRES" = x; then
+			ALL_REQUIRES="rm"
+		else
+			ALL_REQUIRES="$ALL_REQUIRES rm"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$LATEX_REQUIRES" = x; then
+			LATEX_REQUIRES="inkscape"
+		else
+			LATEX_REQUIRES="$LATEX_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$PS_REQUIRES" = x; then
+			PS_REQUIRES="inkscape"
+		else
+			PS_REQUIRES="$PS_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$PDF_REQUIRES" = x; then
+			PDF_REQUIRES="inkscape"
+		else
+			PDF_REQUIRES="$PDF_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$HTML_REQUIRES" = x; then
+			HTML_REQUIRES="inkscape"
+		else
+			HTML_REQUIRES="$HTML_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$HTMLHELP_REQUIRES" = x; then
+			HTMLHELP_REQUIRES="inkscape"
+		else
+			HTMLHELP_REQUIRES="$HTMLHELP_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$PEARSON_REQUIRES" = x; then
+			PEARSON_REQUIRES="inkscape"
+		else
+			PEARSON_REQUIRES="$PEARSON_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$PLUCKER_REQUIRES" = x; then
+			PLUCKER_REQUIRES="inkscape"
+		else
+			PLUCKER_REQUIRES="$PLUCKER_REQUIRES inkscape"
+		fi
+	fi
+
+
+	for ac_prog in inkscape
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_INKSCAPE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$INKSCAPE"; then
+  ac_cv_prog_INKSCAPE="$INKSCAPE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_INKSCAPE="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+INKSCAPE=$ac_cv_prog_INKSCAPE
+if test -n "$INKSCAPE"; then
+  { echo "$as_me:$LINENO: result: $INKSCAPE" >&5
+echo "${ECHO_T}$INKSCAPE" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$INKSCAPE" && break
+done
+
+	if test x"$INKSCAPE" = x; then
+		if test x"$FOPDF_REQUIRES" = x; then
+			FOPDF_REQUIRES="inkscape"
+		else
+			FOPDF_REQUIRES="$FOPDF_REQUIRES inkscape"
+		fi
+	fi
+
+# Check dia version number
+
+#if test -n "$DIA"; then
+#   [ DIA_VERSION=`$DIA -v | egrep -o '([0-9]+)\.([0-9]+)'`]
+#   DIA_MAJ_VERSION=`echo $DIA_VERSION | cut -d . -f 1`
+#   DIA_MIN_VERSION=`echo $DIA_VERSION | cut -d . -f 2`
+
+#   if test "$DIA_MAJ_VERSION" -le "0"
+#   then
+#	if test "$DIA_MIN_VERSION" -le "92" && test -z "$DISPLAY"
+#	then
+#		AC_MSG_ERROR([Dia below 0.93 requires an X environment. Set \$DISPLAY or install Dia 0.93 or higher])
+#	fi
+#   fi
+#fi
+
+
+	for ac_prog in makeindex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_MAKEINDEX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$MAKEINDEX"; then
+  ac_cv_prog_MAKEINDEX="$MAKEINDEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MAKEINDEX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKEINDEX=$ac_cv_prog_MAKEINDEX
+if test -n "$MAKEINDEX"; then
+  { echo "$as_me:$LINENO: result: $MAKEINDEX" >&5
+echo "${ECHO_T}$MAKEINDEX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$MAKEINDEX" && break
+done
+
+	if test x"$MAKEINDEX" = x; then
+		if test x"$LATEX_REQUIRES" = x; then
+			LATEX_REQUIRES="makeindex"
+		else
+			LATEX_REQUIRES="$LATEX_REQUIRES makeindex"
+		fi
+	fi
+
+
+	for ac_prog in pdflatex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PDFLATEX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$PDFLATEX"; then
+  ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PDFLATEX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PDFLATEX=$ac_cv_prog_PDFLATEX
+if test -n "$PDFLATEX"; then
+  { echo "$as_me:$LINENO: result: $PDFLATEX" >&5
+echo "${ECHO_T}$PDFLATEX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$PDFLATEX" && break
+done
+
+	if test x"$PDFLATEX" = x; then
+		if test x"$PDF_REQUIRES" = x; then
+			PDF_REQUIRES="pdflatex"
+		else
+			PDF_REQUIRES="$PDF_REQUIRES pdflatex"
+		fi
+	fi
+
+
+	for ac_prog in epstopdf
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_EPSTOPDF+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$EPSTOPDF"; then
+  ac_cv_prog_EPSTOPDF="$EPSTOPDF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_EPSTOPDF="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+EPSTOPDF=$ac_cv_prog_EPSTOPDF
+if test -n "$EPSTOPDF"; then
+  { echo "$as_me:$LINENO: result: $EPSTOPDF" >&5
+echo "${ECHO_T}$EPSTOPDF" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$EPSTOPDF" && break
+done
+
+	if test x"$EPSTOPDF" = x; then
+		if test x"$PDF_REQUIRES" = x; then
+			PDF_REQUIRES="epstopdf"
+		else
+			PDF_REQUIRES="$PDF_REQUIRES epstopdf"
+		fi
+	fi
+
+
+	for ac_prog in thumbpdf
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_THUMBPDF+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$THUMBPDF"; then
+  ac_cv_prog_THUMBPDF="$THUMBPDF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_THUMBPDF="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+THUMBPDF=$ac_cv_prog_THUMBPDF
+if test -n "$THUMBPDF"; then
+  { echo "$as_me:$LINENO: result: $THUMBPDF" >&5
+echo "${ECHO_T}$THUMBPDF" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$THUMBPDF" && break
+done
+
+	if test x"$THUMBPDF" = x; then
+		if test x"$PDF_REQUIRES" = x; then
+			PDF_REQUIRES="thumbpdf"
+		else
+			PDF_REQUIRES="$PDF_REQUIRES thumbpdf"
+		fi
+	fi
+
+
+	for ac_prog in pngtopnm
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PNGTOPNM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$PNGTOPNM"; then
+  ac_cv_prog_PNGTOPNM="$PNGTOPNM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PNGTOPNM="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PNGTOPNM=$ac_cv_prog_PNGTOPNM
+if test -n "$PNGTOPNM"; then
+  { echo "$as_me:$LINENO: result: $PNGTOPNM" >&5
+echo "${ECHO_T}$PNGTOPNM" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$PNGTOPNM" && break
+done
+
+	if test x"$PNGTOPNM" = x; then
+		if test x"$PS_REQUIRES" = x; then
+			PS_REQUIRES="pngtopnm"
+		else
+			PS_REQUIRES="$PS_REQUIRES pngtopnm"
+		fi
+	fi
+
+
+	for ac_prog in pnmtops
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PNMTOPS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$PNMTOPS"; then
+  ac_cv_prog_PNMTOPS="$PNMTOPS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PNMTOPS="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PNMTOPS=$ac_cv_prog_PNMTOPS
+if test -n "$PNMTOPS"; then
+  { echo "$as_me:$LINENO: result: $PNMTOPS" >&5
+echo "${ECHO_T}$PNMTOPS" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$PNMTOPS" && break
+done
+
+	if test x"$PNMTOPS" = x; then
+		if test x"$PS_REQUIRES" = x; then
+			PS_REQUIRES="pnmtops"
+		else
+			PS_REQUIRES="$PS_REQUIRES pnmtops"
+		fi
+	fi
+
+
+	for ac_prog in latex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_LATEX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$LATEX"; then
+  ac_cv_prog_LATEX="$LATEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LATEX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+LATEX=$ac_cv_prog_LATEX
+if test -n "$LATEX"; then
+  { echo "$as_me:$LINENO: result: $LATEX" >&5
+echo "${ECHO_T}$LATEX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$LATEX" && break
+done
+
+	if test x"$LATEX" = x; then
+		if test x"$PS_REQUIRES" = x; then
+			PS_REQUIRES="latex"
+		else
+			PS_REQUIRES="$PS_REQUIRES latex"
+		fi
+	fi
+
+
+	for ac_prog in dvips
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_DVIPS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$DVIPS"; then
+  ac_cv_prog_DVIPS="$DVIPS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DVIPS="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DVIPS=$ac_cv_prog_DVIPS
+if test -n "$DVIPS"; then
+  { echo "$as_me:$LINENO: result: $DVIPS" >&5
+echo "${ECHO_T}$DVIPS" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$DVIPS" && break
+done
+
+	if test x"$DVIPS" = x; then
+		if test x"$PS_REQUIRES" = x; then
+			PS_REQUIRES="dvips"
+		else
+			PS_REQUIRES="$PS_REQUIRES dvips"
+		fi
+	fi
+
+
+	for ac_prog in plucker-build
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PLUCKERBUILD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$PLUCKERBUILD"; then
+  ac_cv_prog_PLUCKERBUILD="$PLUCKERBUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PLUCKERBUILD="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PLUCKERBUILD=$ac_cv_prog_PLUCKERBUILD
+if test -n "$PLUCKERBUILD"; then
+  { echo "$as_me:$LINENO: result: $PLUCKERBUILD" >&5
+echo "${ECHO_T}$PLUCKERBUILD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$PLUCKERBUILD" && break
+done
+
+	if test x"$PLUCKERBUILD" = x; then
+		if test x"$PLUCKER_REQUIRES" = x; then
+			PLUCKER_REQUIRES="plucker-build"
+		else
+			PLUCKER_REQUIRES="$PLUCKER_REQUIRES plucker-build"
+		fi
+	fi
+
+
+	for ac_prog in html2text
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_HTML2TEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$HTML2TEXT"; then
+  ac_cv_prog_HTML2TEXT="$HTML2TEXT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_HTML2TEXT="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+HTML2TEXT=$ac_cv_prog_HTML2TEXT
+if test -n "$HTML2TEXT"; then
+  { echo "$as_me:$LINENO: result: $HTML2TEXT" >&5
+echo "${ECHO_T}$HTML2TEXT" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$HTML2TEXT" && break
+done
+
+	if test x"$HTML2TEXT" = x; then
+		if test x"$TXT_REQUIRES" = x; then
+			TXT_REQUIRES="html2text"
+		else
+			TXT_REQUIRES="$TXT_REQUIRES html2text"
+		fi
+	fi
+
+
+	for ac_prog in perl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PERL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$PERL"; then
+  ac_cv_prog_PERL="$PERL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PERL="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PERL=$ac_cv_prog_PERL
+if test -n "$PERL"; then
+  { echo "$as_me:$LINENO: result: $PERL" >&5
+echo "${ECHO_T}$PERL" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$PERL" && break
+done
+
+	if test x"$PERL" = x; then
+		if test x"$UNDOCUMENTED_REQUIRES" = x; then
+			UNDOCUMENTED_REQUIRES="perl"
+		else
+			UNDOCUMENTED_REQUIRES="$UNDOCUMENTED_REQUIRES perl"
+		fi
+	fi
+
+
+	for ac_prog in xmllint
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_XMLLINT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$XMLLINT"; then
+  ac_cv_prog_XMLLINT="$XMLLINT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_XMLLINT="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+XMLLINT=$ac_cv_prog_XMLLINT
+if test -n "$XMLLINT"; then
+  { echo "$as_me:$LINENO: result: $XMLLINT" >&5
+echo "${ECHO_T}$XMLLINT" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$XMLLINT" && break
+done
+
+	if test x"$XMLLINT" = x; then
+		if test x"$VALIDATE_REQUIRES" = x; then
+			VALIDATE_REQUIRES="xmllint"
+		else
+			VALIDATE_REQUIRES="$VALIDATE_REQUIRES xmllint"
+		fi
+	fi
+
+
+	for ac_prog in fop
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_FOP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$FOP"; then
+  ac_cv_prog_FOP="$FOP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_FOP="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+FOP=$ac_cv_prog_FOP
+if test -n "$FOP"; then
+  { echo "$as_me:$LINENO: result: $FOP" >&5
+echo "${ECHO_T}$FOP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$FOP" && break
+done
+
+	if test x"$FOP" = x; then
+		if test x"$FOPDF_REQUIRES" = x; then
+			FOPDF_REQUIRES="fop"
+		else
+			FOPDF_REQUIRES="$FOPDF_REQUIRES fop"
+		fi
+	fi
+
+
+	for ac_prog in docbook2x-texi
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_DB2TEXI+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$DB2TEXI"; then
+  ac_cv_prog_DB2TEXI="$DB2TEXI" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DB2TEXI="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DB2TEXI=$ac_cv_prog_DB2TEXI
+if test -n "$DB2TEXI"; then
+  { echo "$as_me:$LINENO: result: $DB2TEXI" >&5
+echo "${ECHO_T}$DB2TEXI" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$DB2TEXI" && break
+done
+
+	if test x"$DB2TEXI" = x; then
+		if test x"$TEXI_REQUIRES" = x; then
+			TEXI_REQUIRES="docbook2x-texi"
+		else
+			TEXI_REQUIRES="$TEXI_REQUIRES docbook2x-texi"
+		fi
+	fi
+
+
+	for ac_prog in makeinfo
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_MAKEINFO+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$MAKEINFO"; then
+  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MAKEINFO="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+MAKEINFO=$ac_cv_prog_MAKEINFO
+if test -n "$MAKEINFO"; then
+  { echo "$as_me:$LINENO: result: $MAKEINFO" >&5
+echo "${ECHO_T}$MAKEINFO" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$MAKEINFO" && break
+done
+
+	if test x"$MAKEINFO" = x; then
+		if test x"$TEXIINFO_REQUIRES" = x; then
+			TEXIINFO_REQUIRES="makeinfo"
+		else
+			TEXIINFO_REQUIRES="$TEXIINFO_REQUIRES makeinfo"
+		fi
+	fi
+
+
+    { echo "$as_me:$LINENO: checking for param/loadparm.c" >&5
+echo $ECHO_N "checking for param/loadparm.c... $ECHO_C" >&6; }
+
+	for I in $SPECIFIED_SOURCEDIR $SPECIFIED_SOURCEDIR/source ..;
+	do
+		test -f "$I/param/loadparm.c" && SAMBASOURCEDIR="$I"
+	done
+
+	if test x$SAMBASOURCEDIR = x; then
+		if test x"$UNDOCUMENTED_REQUIRES" = x; then
+			UNDOCUMENTED_REQUIRES="SAMBASOURCEDIR"
+		else
+			UNDOCUMENTED_REQUIRES="$UNDOCUMENTED_REQUIRES SAMBASOURCEDIR"
+		fi
+		{ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+	else
+		{ echo "$as_me:$LINENO: result: found in $SAMBASOURCEDIR" >&5
+echo "${ECHO_T}found in $SAMBASOURCEDIR" >&6; }
+	fi
+
+
+{ echo "$as_me:$LINENO: result: " >&5
+echo "${ECHO_T}" >&6; }
+{ echo "$as_me:$LINENO: result: Summary:" >&5
+echo "${ECHO_T}Summary:" >&6; }
+{ echo "$as_me:$LINENO: result: --------------" >&5
+echo "${ECHO_T}--------------" >&6; }
+
+
+	if test "x$ALL_REQUIRES" = x; then
+		ALL_REQUIRES="$_REQUIRES"
+	else
+		ALL_REQUIRES="$ALL_REQUIRES $_REQUIRES"
+	fi
+
+	if test x"$ALL_REQUIRES" = x; then
+		TARGETS="$TARGETS "
+	else
+		{ echo "$as_me:$LINENO: result: Building the base requirements requires : $ALL_REQUIRES" >&5
+echo "${ECHO_T}Building the base requirements requires : $ALL_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$LATEX_REQUIRES" = x; then
+		LATEX_REQUIRES="$ALL_REQUIRES"
+	else
+		LATEX_REQUIRES="$LATEX_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$LATEX_REQUIRES" = x; then
+		TARGETS="$TARGETS tex"
+	else
+		{ echo "$as_me:$LINENO: result: Building the LaTeX versions requires : $LATEX_REQUIRES" >&5
+echo "${ECHO_T}Building the LaTeX versions requires : $LATEX_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$PDF_REQUIRES" = x; then
+		PDF_REQUIRES="$LATEX_REQUIRES"
+	else
+		PDF_REQUIRES="$PDF_REQUIRES $LATEX_REQUIRES"
+	fi
+
+	if test x"$PDF_REQUIRES" = x; then
+		TARGETS="$TARGETS pdf"
+	else
+		{ echo "$as_me:$LINENO: result: Building the PDF versions requires : $PDF_REQUIRES" >&5
+echo "${ECHO_T}Building the PDF versions requires : $PDF_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$PS_REQUIRES" = x; then
+		PS_REQUIRES="$LATEX_REQUIRES"
+	else
+		PS_REQUIRES="$PS_REQUIRES $LATEX_REQUIRES"
+	fi
+
+	if test x"$PS_REQUIRES" = x; then
+		TARGETS="$TARGETS ps"
+	else
+		{ echo "$as_me:$LINENO: result: Building the PostScript versions requires : $PS_REQUIRES" >&5
+echo "${ECHO_T}Building the PostScript versions requires : $PS_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$HTML_REQUIRES" = x; then
+		HTML_REQUIRES="$ALL_REQUIRES"
+	else
+		HTML_REQUIRES="$HTML_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$HTML_REQUIRES" = x; then
+		TARGETS="$TARGETS html"
+	else
+		{ echo "$as_me:$LINENO: result: Building the HTML versions requires : $HTML_REQUIRES" >&5
+echo "${ECHO_T}Building the HTML versions requires : $HTML_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$HTMLHELP_REQUIRES" = x; then
+		HTMLHELP_REQUIRES="$ALL_REQUIRES"
+	else
+		HTMLHELP_REQUIRES="$HTMLHELP_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$HTMLHELP_REQUIRES" = x; then
+		TARGETS="$TARGETS htmlhelp"
+	else
+		{ echo "$as_me:$LINENO: result: Building the HTML Help versions requires : $HTMLHELP_REQUIRES" >&5
+echo "${ECHO_T}Building the HTML Help versions requires : $HTMLHELP_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$HTMLMAN_REQUIRES" = x; then
+		HTMLMAN_REQUIRES="$ALL_REQUIRES"
+	else
+		HTMLMAN_REQUIRES="$HTMLMAN_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$HTMLMAN_REQUIRES" = x; then
+		TARGETS="$TARGETS htmlman3"
+	else
+		{ echo "$as_me:$LINENO: result: Building the HTML versions of the manpages requires : $HTMLMAN_REQUIRES" >&5
+echo "${ECHO_T}Building the HTML versions of the manpages requires : $HTMLMAN_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$MANPAGES_REQUIRES" = x; then
+		MANPAGES_REQUIRES="$ALL_REQUIRES"
+	else
+		MANPAGES_REQUIRES="$MANPAGES_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$MANPAGES_REQUIRES" = x; then
+		TARGETS="$TARGETS manpages3"
+	else
+		{ echo "$as_me:$LINENO: result: Building the manpages requires : $MANPAGES_REQUIRES" >&5
+echo "${ECHO_T}Building the manpages requires : $MANPAGES_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$PEARSON_REQUIRES" = x; then
+		PEARSON_REQUIRES="$ALL_REQUIRES"
+	else
+		PEARSON_REQUIRES="$PEARSON_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$PEARSON_REQUIRES" = x; then
+		TARGETS="$TARGETS pearson"
+	else
+		{ echo "$as_me:$LINENO: result: Building the pearson-compatible XML requires : $PEARSON_REQUIRES" >&5
+echo "${ECHO_T}Building the pearson-compatible XML requires : $PEARSON_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$PLUCKER_REQUIRES" = x; then
+		PLUCKER_REQUIRES="$HTML_REQUIRES"
+	else
+		PLUCKER_REQUIRES="$PLUCKER_REQUIRES $HTML_REQUIRES"
+	fi
+
+	if test x"$PLUCKER_REQUIRES" = x; then
+		TARGETS="$TARGETS plucker"
+	else
+		{ echo "$as_me:$LINENO: result: Building the plucker versions requires : $PLUCKER_REQUIRES" >&5
+echo "${ECHO_T}Building the plucker versions requires : $PLUCKER_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$VALIDATE_REQUIRES" = x; then
+		VALIDATE_REQUIRES="$ALL_REQUIRES"
+	else
+		VALIDATE_REQUIRES="$VALIDATE_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$VALIDATE_REQUIRES" = x; then
+		TARGETS="$TARGETS "
+	else
+		{ echo "$as_me:$LINENO: result: Building the validating docbook output requires : $VALIDATE_REQUIRES" >&5
+echo "${ECHO_T}Building the validating docbook output requires : $VALIDATE_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$FOPDF_REQUIRES" = x; then
+		FOPDF_REQUIRES="$ALL_REQUIRES"
+	else
+		FOPDF_REQUIRES="$FOPDF_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$FOPDF_REQUIRES" = x; then
+		TARGETS="$TARGETS fo-pdf"
+	else
+		{ echo "$as_me:$LINENO: result: Building the PDF versions thru FO requires : $FOPDF_REQUIRES" >&5
+echo "${ECHO_T}Building the PDF versions thru FO requires : $FOPDF_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$TEXI_REQUIRES" = x; then
+		TEXI_REQUIRES="$ALL_REQUIRES"
+	else
+		TEXI_REQUIRES="$TEXI_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$TEXI_REQUIRES" = x; then
+		TARGETS="$TARGETS texi"
+	else
+		{ echo "$as_me:$LINENO: result: Building the TexInfo versions requires : $TEXI_REQUIRES" >&5
+echo "${ECHO_T}Building the TexInfo versions requires : $TEXI_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$TEXIINFO_REQUIRES" = x; then
+		TEXIINFO_REQUIRES="$ALL_REQUIRES"
+	else
+		TEXIINFO_REQUIRES="$TEXIINFO_REQUIRES $ALL_REQUIRES"
+	fi
+
+	if test x"$TEXIINFO_REQUIRES" = x; then
+		TARGETS="$TARGETS texiinfo"
+	else
+		{ echo "$as_me:$LINENO: result: Building the TexInfo Info versions requires : $TEXIINFO_REQUIRES" >&5
+echo "${ECHO_T}Building the TexInfo Info versions requires : $TEXIINFO_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$UNDOCUMENTED_REQUIRES" = x; then
+		UNDOCUMENTED_REQUIRES="$MANPAGES_REQUIRES"
+	else
+		UNDOCUMENTED_REQUIRES="$UNDOCUMENTED_REQUIRES $MANPAGES_REQUIRES"
+	fi
+
+	if test x"$UNDOCUMENTED_REQUIRES" = x; then
+		TARGETS="$TARGETS undocumented"
+	else
+		{ echo "$as_me:$LINENO: result: Building the list of undocumented options requires : $UNDOCUMENTED_REQUIRES" >&5
+echo "${ECHO_T}Building the list of undocumented options requires : $UNDOCUMENTED_REQUIRES" >&6; }
+	fi
+
+
+	if test "x$TXT_REQUIRES" = x; then
+		TXT_REQUIRES="$HTML_REQUIRES"
+	else
+		TXT_REQUIRES="$TXT_REQUIRES $HTML_REQUIRES"
+	fi
+
+	if test x"$TXT_REQUIRES" = x; then
+		TARGETS="$TARGETS txt"
+	else
+		{ echo "$as_me:$LINENO: result: Building the text versions requires : $TXT_REQUIRES" >&5
+echo "${ECHO_T}Building the text versions requires : $TXT_REQUIRES" >&6; }
+	fi
+
+
+if test x"$TARGETS" = x; then
+	{ { echo "$as_me:$LINENO: error: You won't be able to build any of the docs" >&5
+echo "$as_me: error: You won't be able to build any of the docs" >&2;}
+   { (exit 1); exit 1; }; }
+else
+	{ echo "$as_me:$LINENO: result: You will be able to build: $TARGETS" >&5
+echo "${ECHO_T}You will be able to build: $TARGETS" >&6; }
+fi
+
+
+
+ac_config_files="$ac_config_files Makefile.settings build/catalog.xml"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s='ln -s'
+  # ... but there are two gotchas:
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+  # In both cases, we have to default to `cp -p'.
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+    as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf at gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.61,
+  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  CONFIG_SHELL=$SHELL
+  export CONFIG_SHELL
+  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile.settings") CONFIG_FILES="$CONFIG_FILES Makefile.settings" ;;
+    "build/catalog.xml") CONFIG_FILES="$CONFIG_FILES build/catalog.xml" ;;
+
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+_ACEOF
+
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+LATEX_DOCUMENTCLASS_OPTIONS!$LATEX_DOCUMENTCLASS_OPTIONS$ac_delim
+DOC_BUILD_DATE!$DOC_BUILD_DATE$ac_delim
+SAMBASOURCEDIR!$SAMBASOURCEDIR$ac_delim
+XSLTPROC!$XSLTPROC$ac_delim
+RM!$RM$ac_delim
+INKSCAPE!$INKSCAPE$ac_delim
+MAKEINDEX!$MAKEINDEX$ac_delim
+PDFLATEX!$PDFLATEX$ac_delim
+EPSTOPDF!$EPSTOPDF$ac_delim
+THUMBPDF!$THUMBPDF$ac_delim
+PNGTOPNM!$PNGTOPNM$ac_delim
+PNMTOPS!$PNMTOPS$ac_delim
+LATEX!$LATEX$ac_delim
+DVIPS!$DVIPS$ac_delim
+PLUCKERBUILD!$PLUCKERBUILD$ac_delim
+HTML2TEXT!$HTML2TEXT$ac_delim
+PERL!$PERL$ac_delim
+XMLLINT!$XMLLINT$ac_delim
+FOP!$FOP$ac_delim
+DB2TEXI!$DB2TEXI$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
+TARGETS!$TARGETS$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+_ACEOF
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 61; then
+    break
+  elif $ac_last_try; then
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+  ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
+_ACEOF
+
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[	 ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in  :F $CONFIG_FILES
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      ac_file_inputs="$ac_file_inputs $ac_f"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input="Generated from "`IFS=:
+	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    fi
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin";;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+case `sed -n '/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out"; rm -f "$tmp/out";;
+  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+  esac
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+

Modified: branches/samba/upstream/docs-xml/manpages-3/idmap_ad.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_ad.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_ad.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -68,12 +68,13 @@
 
 	<programlisting>
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	idmap domains = ALLDOMAINS
+	idmap config ALLDOMAINS:backend      = ad
+	idmap config ALLDOMAINS:default      = yes
+	idmap config ALLDOMAINS:range        = 10000 - 300000000
 
-	idmap config CORP : backend  = ad
-	idmap config CORP : range = 1000-999999
+	idmap alloc backend = tdb
+	idmap alloc config:range        = 5000 - 9999
 	</programlisting>
 </refsect1>
 

Deleted: branches/samba/upstream/docs-xml/manpages-3/idmap_adex.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_adex.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_adex.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
-<refentry id="idmap_adex.8">
-
-<refmeta>
-	<refentrytitle>idmap_adex</refentrytitle>
-	<manvolnum>8</manvolnum>
-	<refmiscinfo class="source">Samba</refmiscinfo>
-	<refmiscinfo class="manual">System Administration tools</refmiscinfo>
-	<refmiscinfo class="version">3.2</refmiscinfo>
-</refmeta>
-
-
-<refnamediv>
-	<refname>idmap_adex</refname>
-	<refpurpose>Samba's idmap_adex Backend for Winbind</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-	<title>DESCRIPTION</title>
-	<para>
-	  The idmap_adex plugin provides a way for Winbind to read
-	  id mappings from an AD server that uses RFC2307 schema
-	  extensions. This module implements both the idmap and nss_info
-	  APIs and supports domain trustes as well as two-way cross
-	  forest trusts.  It is a read-only plugin requiring that the
-	  administrator provide mappings in advance by adding the
-	  POSIX attribute information to the users and groups objects
-	  in AD.  The most common means of doing this is using &quot;Identity
-	  Services for Unix&quot; support on Windows 2003 R2 and later.
-	</para>
-
-	<para>
-	  Note that you must add the uidNumber, gidNumber, and uid
-	  attributes to the partial attribute set of the forest global
-	  catalog servers.  This can be done using the Active Directory Schema
-	  Management MMC plugin (schmmgmt.dll).
-	</para>
-</refsynopsisdiv>
-
-<refsynopsisdiv>
-	<title>NSS_INFO</title>
-	<para>
-	  The nss_info plugin supports reading the unixHomeDirectory,
-	  gidNumber, loginShell, and uidNumber attributes from the user
-	  object and the gidNumber attribute from the group object to
-	  fill in information required by the libc getpwnam() and
-	  getgrnam() family of functions.  Group membership is filled in
-	  according to the Windows group membership and not the
-	  msSFU30PosixMember attribute.
-	</para>
-
-	<para>
-	  Username aliases are implement by setting the uid attribute
-	  on the user object.  While group name aliases are implemented
-	  by reading the displayname attribute from the group object.
-	</para>
-</refsynopsisdiv>
-
-<refsect1>
-	<title>EXAMPLES</title>
-	<para>
-	  The following example shows how to retrieve idmappings and NSS data
-	  from our principal and trusted AD domains.
-	</para>
-
-	<programlisting>
-	[global]
-	idmap backend = adex
-	idmap uid = 1000-4000000000
-	idmap gid = 1000-4000000000
-
-	winbind nss info = adex
-	winbind normalize names = yes
-	</programlisting>
-</refsect1>
-
-<refsect1>
-	<title>AUTHOR</title>
-
-	<para>
-	The original Samba software and related utilities
-	were created by Andrew Tridgell. Samba is now developed
-	by the Samba Team as an Open Source project similar
-	to the way the Linux kernel is developed.
-	</para>
-</refsect1>
-
-</refentry>

Deleted: branches/samba/upstream/docs-xml/manpages-3/idmap_hash.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_hash.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_hash.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
-<refentry id="idmap_hash.8">
-
-<refmeta>
-	<refentrytitle>idmap_hash</refentrytitle>
-	<manvolnum>8</manvolnum>
-	<refmiscinfo class="source">Samba</refmiscinfo>
-	<refmiscinfo class="manual">System Administration tools</refmiscinfo>
-	<refmiscinfo class="version">3.2</refmiscinfo>
-</refmeta>
-
-
-<refnamediv>
-	<refname>idmap_hash</refname>
-	<refpurpose>Samba's idmap_hash Backend for Winbind</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-	<title>DESCRIPTION</title>
-	<para>The idmap_hash plugin implements a hashing algorithm used
-	  map SIDs for domain users and groups to a 31-bit uid and gid.
-	  This plugin also implements the nss_info API and can be used
-	  to support a local name mapping files if enabled via the
-	  &quot;winbind normlaize names&quot; and &quot;winbind nss info&quot;
-	  parameters in smb.conf.
-	</para>
-</refsynopsisdiv>
-
-<refsect1>
-	<title>IDMAP OPTIONS</title>
-
-	<variablelist>
-		<varlistentry>
-		<term>name_map</term>
-		<listitem><para>
-		    Specifies the absolute path to the name mapping
-		    file used by the nss_info API.  Entries in the file
-		    are of the form &quot;<replaceable>unix name</replaceable>
-		    = <replaceable>qualified domain name</replaceable>&quote;.
-		    Mapping of both user and group names is supported.
-		</para></listitem>
-		</varlistentry>
-	</variablelist>
-</refsect1>
-
-<refsect1>
-	<title>EXAMPLES</title>
-	<para>The following example utilizes the idmap_hash plugin for
-	  the idmap and nss_info information.
-	</para>
-
-	<programlisting>
-	[global]
-	idmap backend = hash
-	idmap uid = 1000-4000000000
-	idmap gid = 1000-4000000000
-
-	winbind nss info = hash
-	winbind normalize names = yes
-	idmap_hash:name_map = /etc/samba/name_map.cfg
-	</programlisting>
-</refsect1>
-
-<refsect1>
-	<title>AUTHOR</title>
-
-	<para>
-	The original Samba software and related utilities
-	were created by Andrew Tridgell. Samba is now developed
-	by the Samba Team as an Open Source project similar
-	to the way the Linux kernel is developed.
-	</para>
-</refsect1>
-
-</refentry>

Modified: branches/samba/upstream/docs-xml/manpages-3/idmap_ldap.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_ldap.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_ldap.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -99,6 +99,16 @@
 			should be used.
 		</para></listitem>
 		</varlistentry>
+
+                <varlistentry>
+		<term>range = low - high</term>
+                <listitem><para>
+			Defines the available matching uid and gid range from which
+			winbindd can allocate for users and groups.  If the parameter
+			is absent, Winbind fail over to use the &quot;idmap uid&quot;
+			and &quot;idmap gid&quot; options from smb.conf.
+                </para></listitem>
+                </varlistentry>
 	</variablelist>
 </refsect1>
 
@@ -106,20 +116,27 @@
 	<title>EXAMPLES</title>
 
 	<para>
-	The follow sets of a LDAP configuration which uses two LDAP
-	directories, one for storing the ID mappings and one for retrieving
-	new IDs.
+	The follow sets of a LDAP configuration which uses a slave server
+	running on localhost for fast fetching SID/gid/uid mappings, it
+	implies correct configuration of referrals.
+	The idmap alloc backend is pointed directly to the master to skip
+	the referral (and consequent reconnection to the master) that the
+	slave would return as allocation requires writing on the master.
 	</para>
 
 	<programlisting>
 	[global]
-	idmap backend = ldap:ldap://localhost/
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	    idmap domains = ALLDOMAINS
+	    idmap config ALLDOMAINS:default      = yes
+	    idmap config ALLDOMAINS:backend      = ldap
+	    idmap config ALLDOMAINS:ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap config ALLDOMAINS:ldap_url     = ldap://localhost/
+	    idmap config ALLDOMAINS:range        = 10000 - 50000
 
-	idmap alloc backend = ldap
-	idmap alloc config : ldap_url	= ldap://id-master/
-	idmap alloc config : ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap alloc backend = ldap
+	    idmap alloc config:ldap_base_dn = ou=idmap,dc=example,dc=com
+	    idmap alloc config:ldap_url     = ldap://master.example.com/
+	    idmap alloc config:range        = 10000 - 50000
 	</programlisting>
 </refsect1>
 

Modified: branches/samba/upstream/docs-xml/manpages-3/idmap_nss.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_nss.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_nss.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -38,12 +38,17 @@
 
 	<programlisting>
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	    idmap domains = SAMBA TRUSTEDDOMAINS
 
-	idmap config SAMBA : backend  = nss
-	idmap config SAMBA : range = 1000-999999
+	    idmap config SAMBA:backend  = nss
+	    idmap config SAMBA:readonly = yes
+
+	    idmap config TRUSTEDDOMAINS:default = yes
+	    idmap config TRUSTEDDOMAINS:backend = tdb
+	    idmap config TRUSTEDDOMAINS:range   = 10000 - 50000
+
+	    idmap alloc backend      = tdb
+	    idmap alloc config:range = 10000 - 50000
 	</programlisting>
 </refsect1>
 

Modified: branches/samba/upstream/docs-xml/manpages-3/idmap_rid.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_rid.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_rid.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -47,9 +47,6 @@
 			by default start at 1000 (512 hexadecimal), this means a good value
 			for base_rid can be 1000 as the resulting ID is calculated this way:
 			ID = RID - BASE_RID + LOW RANGE ID.
-		</para>
-		<para>
-			Use of this parameter is deprecated.
 		</para></listitem>
 		</varlistentry>
 	</variablelist>
@@ -57,16 +54,19 @@
 
 <refsect1>
 	<title>EXAMPLES</title>
-	<para>This example shows how to configure a domain with idmap_rid</para>
+	<para>This example shows how to configure 2 domains with idmap_rid</para>
 
 	<programlisting>
 	[global]
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	    idmap domains = MAIN TRUSTED1
 
-	idmap config TRUSTED : backend  = rid
-	idmap config TRUSTED : range    = 50000 - 99999
+	    idmap config MAIN:backend      = rid
+	    idmap config MAIN:base_rid     = 0
+	    idmap config MAIN:range        = 10000 - 49999
+
+	    idmap config TRUSTED1:backend  = rid
+	    idmap config TRUSTED1:base_rid = 1000
+	    idmap config TRUSTED1:range    = 50000 - 99999
 	</programlisting>
 </refsect1>
 

Modified: branches/samba/upstream/docs-xml/manpages-3/idmap_tdb.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/idmap_tdb.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/idmap_tdb.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -60,6 +60,26 @@
 </refsect1>
 
 <refsect1>
+	<title>EXAMPLES</title>
+
+	<para>
+	The following example is equivalent to the pre-3.0.25 default idmap
+	configuration using the &quot;idmap backend = tdb&quot; setting.
+	</para>
+
+	<programlisting>
+	[global]
+	    idmap domains = ALLDOMAINS
+	    idmap config ALLDOMAINS:default = yes
+	    idmap config ALLDOMAINS:backend = tdb
+	    idmap config ALLDOMAINS:range   = 10000 - 50000
+
+	    idmap alloc backend = tdb
+	    idmap alloc config:range = 10000 - 50000
+	</programlisting>
+</refsect1>
+
+<refsect1>
 	<title>AUTHOR</title>
 
 	<para>

Modified: branches/samba/upstream/docs-xml/manpages-3/net.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/net.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/net.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -850,23 +850,10 @@
 <para>Export users, aliases and groups from remote server to 
 local server.  You need to run this against the PDC, from a Samba machine joined as a BDC. 
 </para>
-</refsect2>
 
-<refsect2>
-<title>RPC VAMPIRE KEYTAB</title>
-
-<para>Dump remote SAM database to local Kerberos keytab file.
-</para>
 </refsect2>
 
 <refsect2>
-<title>RPC VAMPIRE LDIF</title>
-
-<para>Dump remote SAM database to local LDIF file or standard output.
-</para>
-</refsect2>
-
-<refsect2>
 <title>RPC GETSID</title>
 
 <para>Fetch domain SID and store it in the local <filename>secrets.tdb</filename>. </para>

Modified: branches/samba/upstream/docs-xml/manpages-3/smbcontrol.1.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/smbcontrol.1.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/smbcontrol.1.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -58,32 +58,23 @@
 		on STDIN. An empty command line or a "q" will quit the 
 		program.</para></listitem>
 		</varlistentry>
-
+		
 		<varlistentry>
 		<term>destination</term>
 		<listitem><para>One of <parameter>nmbd</parameter>, <parameter>smbd</parameter> or a process ID.</para>
 
-		<para>The <parameter>all</parameter> destination causes the 
-		message to "broadcast" to all running daemons including nmbd and
-		winbind. This is a change for Samba 3.3, prior to this the
-		paramter smbd used to do this.</para>
-
 		<para>The <parameter>smbd</parameter> destination causes the 
-		message to be sent to the smbd daemon specified in the 
-		<filename>smbd.pid</filename> file.</para>
+		message to "broadcast" to all smbd daemons.</para>
 
 		<para>The <parameter>nmbd</parameter> destination causes the 
 		message to be sent to the nmbd daemon specified in the 
 		<filename>nmbd.pid</filename> file.</para>
 
-		<para>The <parameter>winbindd</parameter> destination causes the 
-		message to be sent to the winbind daemon specified in the 
-		<filename>winbindd.pid</filename> file.</para>
-
 		<para>If a single process ID is given, the message is sent 
 		to only that process.</para></listitem>
 		</varlistentry>
-
+		
+		
 		<varlistentry>
 		<term>message-type</term>
 		<listitem><para>Type of message to send. See 

Deleted: branches/samba/upstream/docs-xml/manpages-3/vfs_smb_traffic_analyzer.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/vfs_smb_traffic_analyzer.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/vfs_smb_traffic_analyzer.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
-<refentry id="vfs_smb_traffic_analyzer.8">
-
-<refmeta>
-	<refentrytitle>smb_traffic_analyzer</refentrytitle>
-	<manvolnum>8</manvolnum>
-	<refmiscinfo class="source">Samba</refmiscinfo>
-	<refmiscinfo class="manual">System Administration tools</refmiscinfo>
-	<refmiscinfo class="version">3.3</refmiscinfo>
-</refmeta>
-
-
-<refnamediv>
-	<refname>vfs_smb_traffic_analyzer</refname>
-	<refpurpose>log Samba VFS read and write operations through a socket
-	to a helper application</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-	<cmdsynopsis>
-		<command>vfs objects = smb_traffic_analyzer</command>
-	</cmdsynopsis>
-</refsynopsisdiv>
-
-<refsect1>
-	<title>DESCRIPTION</title>
-
-	<para>This VFS module is part of the
-	<citerefentry><refentrytitle>samba</refentrytitle>
-	<manvolnum>7</manvolnum></citerefentry> suite.</para>
-
-	<para>The <command>vfs_smb_traffic_analyzer</command> VFS module logs
-	client write and read operations on a Samba server and sends this data
-	over a socket to a helper program, which feeds a SQL database. More
-	information on the helper programs can be obtained from the
-	homepage of the project at:
-	http://holger123.wordpress.com/smb-traffic-analyzer/
-	</para>
-	<para><command>vfs_smb_traffic_analyzer</command> currently is aware
-	of the following VFS operations:</para>
-
-	<simplelist>
-        <member>write</member>
-        <member>pwrite</member>
-	<member>read</member>
-	<member>pread</member>
-	</simplelist>
-
-	<para><command>vfs_smb_traffic_analyzer</command> sends the following data
-	in a fixed format seperated by a comma through either an internet or a
-	unix domain socket:</para>
-	<programlisting>
-	BYTES|USER|DOMAIN|READ/WRITE|SHARE|FILENAME|TIMESTAMP
-	</programlisting>
-
-	<para>Description of the records:
-
-	<itemizedlist>
-	<listitem><para><command>BYTES</command> - the length in bytes of the VFS operation</para></listitem>
-	<listitem><para><command>USER</command> - the user who initiated the operation</para></listitem>
-	<listitem><para><command>DOMAIN</command> - the domain of the user</para></listitem>
-	<listitem><para><command>READ/WRITE</command> - either "W" for a write operation or "R" for read</para></listitem>
-	<listitem><para><command>SHARE</command> - the name of the share on which the VFS operation occured</para></listitem>
-	<listitem><para><command>FILENAME</command> - the name of the file that was used by the VFS operation</para></listitem>
-	<listitem><para><command>TIMESTAMP</command> - a timestamp, formatted as "yyyy-mm-dd hh-mm-ss.ms" indicating when the VFS operation occured</para></listitem>
-	</itemizedlist>
-
-	</para>
-
-	<para>This module is stackable.</para>
-
-</refsect1>
-
-
-<refsect1>
-	<title>OPTIONS</title>
-
-	<variablelist>
-
-		<varlistentry>
-                <term>smb_traffic_analyzer:mode = STRING</term>
-                <listitem>
-                <para>If STRING matches to "unix_domain_socket", the module will
-		use a unix domain socket located at /var/tmp/stadsocket, if
-		STRING contains an different string or is not defined, the module will
-		use an internet domain socket for data transfer.</para>
-
-                </listitem>
-                </varlistentry>
-
-
-		<varlistentry>
-		<term>smb_traffic_analyzer:host = STRING</term>
-		<listitem>
-		<para>The module will send the data to the system named with
-		the hostname STRING.</para>
-
-		</listitem>
-		</varlistentry>
-
-		<varlistentry>
-		<term>smb_traffic_analyzer:port = STRING</term>
-		<listitem>
-		<para>The module will send the data using the TCP port given
-		in STRING
-		</para>
-
-		</listitem>
-		</varlistentry>
-
-
-	</variablelist>
-</refsect1>
-
-<refsect1>
-	<title>EXAMPLES</title>
-
-	<para>The module running on share "example_share", using a unix domain socket</para>
-	<programlisting>
-	<smbconfsection name="[example_share]"/>
-	<smbconfoption name="path">/data/example</smbconfoption>
-	<smbconfoption name="vfs objects">smb_traffic_analyzer</smbconfoption>
-	<smbconfoption name="smb_traffic_analyzer:mode">unix_domain_socket</smbconfoption>
-	</programlisting>
-
-	<para>The module running on share "example_share", using an internet domain socket,
-	connecting to host "examplehost" on port 3491.</para>
-	<programlisting>
-	<smbconfsection name="[example_share]"/>
-	<smbconfoption name="path">/data/example</smbconfoption>
-	<smbconfoption name="vfs objects">smb_traffic_analyzer</smbconfoption>
-	<smbconfoption name="smb_traffic_analyzer:host">examplehost</smbconfoption>
-	<smbconfoption name="smb_traffic_analyzer:port">3490</smbconfoption>
-	</programlisting>
-
-</refsect1>
-
-<refsect1>
-	<title>VERSION</title>
-	<para>This man page is correct for version 3.3 of the Samba suite.
-	</para>
-</refsect1>
-
-<refsect1>
-	<title>AUTHOR</title>
-
-	<para>The original Samba software and related utilities
-	were created by Andrew Tridgell. Samba is now developed
-	by the Samba Team as an Open Source project similar
-	to the way the Linux kernel is developed.</para>
-
-	<para>The original version of the VFS module and the
-	helper tools were created by Holger Hetterich.</para>
-</refsect1>
-
-</refentry>

Modified: branches/samba/upstream/docs-xml/manpages-3/winbindd.8.xml
===================================================================
--- branches/samba/upstream/docs-xml/manpages-3/winbindd.8.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/manpages-3/winbindd.8.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -230,6 +230,9 @@
 	determine which user and group ids correspond to Windows NT user
 	and group rids. </para>
 
+        <para>See the <smbconfoption name="idmap domains"/> or the old <smbconfoption name="idmap backend"/> parameters in
+        <filename>smb.conf</filename> for options for sharing this
+        database, such as via LDAP.</para>
 </refsect1>
 
 

Copied: branches/samba/upstream/docs-xml/output (from rev 2163, branches/samba/upstream/docs-xml/output)

Deleted: branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelay.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelay.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelay.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,15 +0,0 @@
-<samba:parameter name="init logon delay"
-                 context="G"
-		 type="integer"
-                 advanced="1" developer="1"
-                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
-<description>
-	<para>
-	This parameter specifies a delay in milliseconds for the hosts configured
-	for delayed initial samlogon with
-	<smbconfoption name="init logon delayed hosts"/>.
-	</para>
-</description>
-
-<value type="default">100</value>
-</samba:parameter>

Deleted: branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,21 +0,0 @@
-<samba:parameter name="init logon delayed hosts"
-                 context="G"
-		 type="list"
-                 advanced="1" developer="1"
-                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
-<description>
-	<para>
-	This parameter takes a list of host names, addresses or networks for
-	which the initial samlogon reply should be delayed (so other DCs get
-	preferred by XP workstations if there are any).
-	</para>
-
-	<para>
-	The length of the delay can be specified with the
-	<smbconfoption name="init logon delay"/> parameter.
-	</para>
-</description>
-
-<value type="default"></value>
-<value type="example">150.203.5. myhost.mynet.de</value>
-</samba:parameter>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapallocbackend.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapallocbackend.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapallocbackend.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -6,27 +6,19 @@
 <description>
 	<para>
 	The idmap alloc backend provides a plugin interface for Winbind to use
-	when allocating Unix uids/gids for Windows SIDs. This option refers
-	to the name of the idmap module which will provide the id allocation
-	functionality. Please refer to the man page for each idmap plugin to
-	determine whether or not the module implements the allocation feature.
-	The most common plugins are the tdb (<citerefentry>
-	<refentrytitle>idmap_tdb</refentrytitle><manvolnum>8</manvolnum></citerefentry>)
-	and ldap (<citerefentry><refentrytitle>idmap_ldap</refentrytitle>
-	<manvolnum>8</manvolnum></citerefentry>) libraries.
+	when allocating Unix uids/gids for Windows SIDs.  This option is
+	to be used in conjunction with the <smbconfoption name="idmap domains"/> 
+	parameter and refers to the name of the idmap module which will provide
+	the id allocation functionality.  Please refer to the man page 
+	for each idmap plugin to determine whether or not the module implements
+	the allocation feature.  The most common plugins are the tdb (<citerefentry>
+        <refentrytitle>idmap_tdb</refentrytitle><manvolnum>8</manvolnum></citerefentry>)
+        and ldap (<citerefentry><refentrytitle>idmap_ldap</refentrytitle>
+        <manvolnum>8</manvolnum></citerefentry>) libraries.
 	</para>
 
-	<para>
-	This parameter defaults to the value <smbconfoption name="idmap
-	backend"/> was set to, so by default winbind will allocate Unix IDs
-	from the default backend. You will only need to set this parameter
-	explicitly if you have an external source for Unix IDs, like a central
-	database service somewhere in your company.
+	<para>Also refer to the <smbconfoption name="idmap alloc config"/> option.
 	</para>
-
-	<para>
-	Also refer to the <smbconfoption name="idmap alloc config"/> option.
-	</para>
 </description>
 
 <value type="example">tdb</value>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapbackend.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapbackend.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapbackend.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -6,43 +6,20 @@
 <description>
 	<para>
 	The idmap backend provides a plugin interface for Winbind to use
-	varying backends to store SID/uid/gid mapping tables.
+	varying backends to store SID/uid/gid mapping tables.  This
+	option is mutually exclusive with the newer and more flexible
+	<smbconfoption name="idmap domains"/> parameter. The main difference
+	between the &quot;idmap backend&quot; and the &quot;idmap domains&quot;
+	is that the former only allows one backend for all domains while the
+	latter supports configuring backends on a per domain basis.
 	</para>
 
-	<para>
-	This option specifies the default backend that is used when no special
-	configuration set by <smbconfoption name="idmap config"/> matches the
-	specific request.
-	</para>
-
-	<para>
-	This default backend also specifies the place where winbind-generated
-	idmap entries will be stored. So it is highly recommended that you
-	specify a writable backend like <citerefentry>
-	<refentrytitle>idmap_tdb</refentrytitle> <manvolnum>8</manvolnum>
-	</citerefentry> or <citerefentry>
-	<refentrytitle>idmap_ldap</refentrytitle> <manvolnum>8</manvolnum>
-	</citerefentry> as the idmap backend. The <citerefentry>
-	<refentrytitle>idmap_rid</refentrytitle> <manvolnum>8</manvolnum>
-	</citerefentry> and <citerefentry>
-	<refentrytitle>idmap_ad</refentrytitle> <manvolnum>8</manvolnum>
-	</citerefentry> backends are not writable and thus will generate
-	unexpected results if set as idmap backend.
-	</para>
-
-	<para>
-	To use the rid and ad backends, please specify them via the
-	<smbconfoption name="idmap config"/> parameter, possibly also for the
-	domain your machine is member of, specified by <smbconfoption
-	name="workgroup"/>.
-	</para>
-
 	<para>Examples of SID/uid/gid backends include tdb (<citerefentry>
 	<refentrytitle>idmap_tdb</refentrytitle><manvolnum>8</manvolnum></citerefentry>),
 	ldap (<citerefentry><refentrytitle>idmap_ldap</refentrytitle>
 	<manvolnum>8</manvolnum></citerefentry>), rid (<citerefentry>
 	<refentrytitle>idmap_rid</refentrytitle><manvolnum>8</manvolnum></citerefentry>),
-	and ad (<citerefentry><refentrytitle>idmap_ad</refentrytitle>
+	and ad (<citerefentry><refentrytitle>idmap_tdb</refentrytitle>
 	<manvolnum>8</manvolnum></citerefentry>).
 	</para>
 </description>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapcachetime.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapcachetime.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapcachetime.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -9,5 +9,5 @@
 	</para>
 </description>
 
-<value type="default">604800 (one week)</value>
+<value type="default">900</value>
 </samba:parameter>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapconfig.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapconfig.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapconfig.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -4,14 +4,13 @@
                  advanced="1" developer="1" hide="1"
                  xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
 <description>
-
 	<para>
-	The idmap config prefix provides a means of managing each trusted
-        domain separately. The idmap config prefix should be followed by the
-        name of the domain, a colon, and a setting specific to the chosen
-        backend. There are three options available for all domains:
+	The idmap config prefix provides a means of managing each domain 
+	defined by the <smbconfoption name="idmap domains"/> option using Samba's
+	parametric option support. The idmap config prefix should be
+	followed by the name of the domain, a colon, and a setting specific to 
+	the chosen backend. There are three options available for all domains:
 	</para>
-
 	<variablelist>  
 		<varlistentry>
 		<term>backend = backend_name</term>
@@ -22,43 +21,45 @@
 		</varlistentry>
 
 		<varlistentry>
-		<term>range = low - high</term>
-                <listitem><para>
-		Defines the available matching uid and gid range for which the
-		backend is authoritative.  Note that the range commonly
-		matches the allocation range due to the fact that the same
-		backend will store and retrieve SID/uid/gid mapping entries.
-                </para>
-		<para>
-		winbind uses this parameter to find the backend that is
-                authoritative for a unix ID to SID mapping, so it must be set
-                for each individually configured domain, and it must be
-                disjoint from the ranges set via <smbconfoption name="idmap
-                uid"/> and <smbconfoption name="idmap gid"/>.
+		<term>default = [yes|no]</term>
+		<listitem><para>
+			The default domain/backend will be used for searching for 
+			users and groups not belonging to one of the explicitly
+			listed domains (matched by comparing the account SID and the 
+			domain SID).
 		</para></listitem>
+		</varlistentry>
 
+		<varlistentry>
+		<term>readonly = [yes|no]</term>
+		<listitem><para>
+			Mark the domain as readonly which means that no attempts to
+			allocate a uid or gid (by the <smbconfoption name="idmap alloc 
+			backend"/>) for any user or group in that domain
+			will be attempted.
+		</para></listitem>
 		</varlistentry>
 	</variablelist>
 
 	<para>
 	The following example illustrates how to configure the <citerefentry>
-	<refentrytitle>idmap_ad</refentrytitle> <manvolnum>8</manvolnum>
-	</citerefentry> for the CORP domain and the
-	<citerefentry><refentrytitle>idmap_tdb</refentrytitle>
-	<manvolnum>8</manvolnum></citerefentry> backend for all other
-	domains. This configuration assumes that the admin of CORP assigns
-	unix ids below 1000000 via the SFU extensions, and winbind is supposed
-	to use the next million entries for its own mappings from trusted
-	domains and for local groups for example.
+	<refentrytitle>idmap_ad</refentrytitle><manvolnum>8</manvolnum></citerefentry> 
+	for the CORP domain and the <citerefentry><refentrytitle>idmap_tdb</refentrytitle>
+	<manvolnum>8</manvolnum></citerefentry> backend for all other domains. The
+	TRUSTEDDOMAINS string is simply an arbitrary key used to reference the &quot;idmap
+	config&quot; settings and does not represent the actual name of a domain.
+	It is a catchall domain backend for any domain not explicitly listed.
 	</para>
 
 	<programlisting>
-	idmap backend = tdb
-	idmap uid = 1000000-1999999
-	idmap gid = 1000000-1999999
+	idmap domains = CORP TRUSTEDDOMAINS
 
-	idmap config CORP : backend  = ad
-	idmap config CORP : range = 1000-999999
+	idmap config CORP:backend  = ad
+	idmap config CORP:readonly = yes
+
+	idmap config TRUSTEDDOMAINS:backend = tdb
+	idmap config TRUSTEDDOMAINS:default = yes
+	idmap config TRUSTEDDOMAINS:range   = 1000 - 9999
 	</programlisting>
 	
 </description>

Copied: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapdomains.xml (from rev 2163, branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapdomains.xml)
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapdomains.xml	                        (rev 0)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapdomains.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,27 @@
+<samba:parameter name="idmap domains"
+                 context="G"
+		 type="string"
+                 advanced="1" developer="1" hide="1"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>
+	The idmap domains option defines a list of Windows domains which will each
+	have a separately configured backend for managing Winbind's SID/uid/gid
+	tables.  This parameter is mutually exclusive with the older <smbconfoption 
+	name="idmap backend"/> option.
+	</para>
+
+	<para>
+	Values consist of the short domain name for Winbind's primary or collection
+	of trusted domains.  You may also use an arbitrary string to represent a catchall
+	domain backend for any domain not explicitly listed.
+	</para>
+
+	<para>
+	Refer to the <smbconfoption name="idmap config"/> for details about
+	managing the SID/uid/gid backend for each domain.
+	</para>
+</description>
+
+<value type="example">default AD CORP</value>
+</samba:parameter>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapgid.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapgid.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapgid.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -11,10 +11,9 @@
 	existing local or NIS groups within it as strange conflicts can 
 	occur otherwise.</para>
 
-	<para>See also the <smbconfoption name="idmap backend"/>, and
-	<smbconfoption name="idmap config"/> options.
+	<para>See also the <smbconfoption name="idmap backend"/>, <smbconfoption 
+	name="idmap domains"/>, and <smbconfoption name="idmap config"/> options.
 	</para>
-
 </description>
 
 <value type="default"></value>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapuid.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapuid.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/idmapuid.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -11,8 +11,8 @@
 	range of ids should have no existing local
 	or NIS users within it as strange conflicts can occur otherwise.</para>
 
-	<para>See also the <smbconfoption name="idmap backend"/> and
-	<smbconfoption name="idmap config"/> options.
+	<para>See also the <smbconfoption name="idmap backend"/>, <smbconfoption 
+	name="idmap domains"/>, and <smbconfoption name="idmap config"/> options.
 	</para>
 </description>
 

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5,25 +5,14 @@
                  xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
 <description>
 	<para>This parameter controls whether winbindd will replace
-	  whitespace in user and group names with an underscore (_) character.
-	  For example, whether the name &quot;Space Kadet&quot; should be
-	  replaced with the string &quot;space_kadet&quot;.
-	  Frequently Unix shell scripts will have difficulty with usernames
-	  contains whitespace due to the default field separator in the shell.
-	  If your domain possesses names containing the underscore character,
-	  this option may cause problems unless the name aliasing feature
-	  is supported by your nss_info plugin.
-        </para>
-
-	<para>This feature also enables the name aliasing API which can
-	  be used to make domain user and group names to a non-qlaified
-	  version.  Please refer to the manpage for the configured
-	  idmap and nss_info plugin for the specifics on how to configure
-	  name aliasing for a specific configuration.  Name aliasing takes
-	  precendence (and is mutually exclusive) over the whitespace
-	  replacement mechanism discussed previsouly.
-	  </para>
-
+	whitespace in user and group names with an underscore (_) character.
+	For example, whether the name &quot;Space Kadet&quot; should be
+	replaced with the string &quot;space_kadet&quot;.
+	Frequently Unix shell scripts will have difficulty with usernames 
+	contains whitespace due to the default field separator in the shell.
+	Do not enable this option if the underscore character is used in
+	account names within your domain
+	</para>
 </description>
 
 <value type="default">no</value>

Deleted: branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,15 +0,0 @@
-<samba:parameter name="winbind reconnect delay"
-                 context="G"
-				 type="integer"
-                 advanced="1" developer="1"
-                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
-<description>
-	<para>This parameter specifies the number of
-	seconds the <citerefentry><refentrytitle>winbindd</refentrytitle>
-	<manvolnum>8</manvolnum></citerefentry> daemon will wait between
-	attempts to contact a Domain controller for a domain that is
-	determined to be down or not contactable.</para>
-</description>
-
-<value type="default">30</value>
-</samba:parameter>

Modified: branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindtrusteddomainsonly.xml
===================================================================
--- branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindtrusteddomainsonly.xml	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/docs-xml/smbdotconf/winbind/winbindtrusteddomainsonly.xml	2008-11-01 11:09:46 UTC (rev 2200)
@@ -14,7 +14,8 @@
 
 	<para>
 	This parameter is now deprecated in favor of the newer idmap_nss backend.
-	Refer to the <citerefentry><refentrytitle>idmap_nss</refentrytitle>
+	Refer to the <smbconfoption name="idmap domains"/> smb.conf option and
+	the <citerefentry><refentrytitle>idmap_nss</refentrytitle>
 	<manvolnum>8</manvolnum></citerefentry> man page for more information.
 	</para>
 </description>

Modified: branches/samba/upstream/examples/VFS/skel_opaque.c
===================================================================
--- branches/samba/upstream/examples/VFS/skel_opaque.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/VFS/skel_opaque.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -321,6 +321,13 @@
 	return NT_STATUS_NOT_IMPLEMENTED;
 }
 
+static NTSTATUS skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const
+	char *name, uint32 security_info_sent, SEC_DESC *psd)
+{
+	errno = ENOSYS;
+	return NT_STATUS_NOT_IMPLEMENTED;
+}
+
 static int skel_chmod_acl(vfs_handle_struct *handle,  const char *name, mode_t mode)
 {
 	errno = ENOSYS;
@@ -655,6 +662,7 @@
 	{SMB_VFS_OP(skel_fget_nt_acl),			SMB_VFS_OP_FGET_NT_ACL,		SMB_VFS_LAYER_OPAQUE},
 	{SMB_VFS_OP(skel_get_nt_acl),			SMB_VFS_OP_GET_NT_ACL,		SMB_VFS_LAYER_OPAQUE},
 	{SMB_VFS_OP(skel_fset_nt_acl),			SMB_VFS_OP_FSET_NT_ACL,		SMB_VFS_LAYER_OPAQUE},
+	{SMB_VFS_OP(skel_set_nt_acl),			SMB_VFS_OP_SET_NT_ACL,		SMB_VFS_LAYER_OPAQUE},
 
 	/* POSIX ACL operations */
 

Modified: branches/samba/upstream/examples/VFS/skel_transparent.c
===================================================================
--- branches/samba/upstream/examples/VFS/skel_transparent.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/VFS/skel_transparent.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -307,6 +307,12 @@
 	return SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, security_info_sent, psd);
 }
 
+static NTSTATUS skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+	const char *name, uint32 security_info_sent, SEC_DESC *psd)
+{
+	return SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent, psd);
+}
+
 static int skel_chmod_acl(vfs_handle_struct *handle,  const char *name, mode_t mode)
 {
 	/* If the underlying VFS doesn't have ACL support... */
@@ -618,6 +624,7 @@
 	{SMB_VFS_OP(skel_fget_nt_acl),			SMB_VFS_OP_FGET_NT_ACL,		SMB_VFS_LAYER_TRANSPARENT},
 	{SMB_VFS_OP(skel_get_nt_acl),			SMB_VFS_OP_GET_NT_ACL,		SMB_VFS_LAYER_TRANSPARENT},
 	{SMB_VFS_OP(skel_fset_nt_acl),			SMB_VFS_OP_FSET_NT_ACL,		SMB_VFS_LAYER_TRANSPARENT},
+	{SMB_VFS_OP(skel_set_nt_acl),			SMB_VFS_OP_SET_NT_ACL,		SMB_VFS_LAYER_TRANSPARENT},
 
 	/* POSIX ACL operations */
 

Modified: branches/samba/upstream/examples/libsmbclient/Makefile
===================================================================
--- branches/samba/upstream/examples/libsmbclient/Makefile	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/libsmbclient/Makefile	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5,7 +5,7 @@
 EXTLIB_INCL = -I/usr/include/gtk-1.2 \
 	      -I/usr/include/glib-1.2 \
 	      -I/usr/lib/glib/include
-EXTLIB_INCL = `gtk-config --cflags`
+#EXTLIB_INCL = `gtk-config --cflags`
 
 DEFS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
 CFLAGS = -O0 -g $(SAMBA_INCL) $(EXTLIB_INCL) $(DEFS)
@@ -13,7 +13,7 @@
 LDFLAGS = -L/usr/local/samba/lib \
 	  -lldap -lkrb5 -lgssapi_krb5
 #LIBSMBCLIENT = /usr/local/samba/lib/libsmbclient.so
-LIBSMBCLIENT = -lwbclient -lsmbclient -ltalloc -ltdb -ldl -lresolv
+LIBSMBCLIENT = -lwbclient -lsmbclient -ldl -lresolv
 
 TESTS=	testsmbc \
 	testacl \

Deleted: branches/samba/upstream/examples/libsmbclient/Makefile.internal.in
===================================================================
--- branches/samba/upstream/examples/libsmbclient/Makefile.internal.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/libsmbclient/Makefile.internal.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,138 +0,0 @@
-# Makefile.internal.in for building the libsmbclient examples
-# from within a samba build.
-#
-# Use Makfile for building the examples with a libsmbclient
-# installed to /usr/local/samba
-
-CC = @CC@
-
-SAMBA_DIR = ../../source
-SAMBA_INCLUDES = -I$(SAMBA_DIR)/include
-SAMBA_LIBPATH = -L$(SAMBA_DIR)/bin
-
-GTK_CFLAGS = `gtk-config --cflags`
-GTK_LIBS  = `gtk-config --libs`
-
-#GTK_CFLAGS = `pkg-config gtk+-2.0 --cflags`
-#GTK_LIBS = `pkg-config gtk+-2.0 --libs`
-
-FLAGS = @CPPFLAGS@ @CFLAGS@ $(GTK_CFLAGS) $(SAMBA_INCLUDES)
-
-PICFLAG=@PICFLAG@
-LDFLAGS= $(SAMBA_LIBPATH) @PIE_LDFLAGS@ @LDFLAGS@
-
-EXTERNAL_LIBS = @LIBS@ @LDAP_LIBS@ @KRB5_LIBS@ @NSCD_LIBS@
-LIBSMBCLIENT_LIBS = -lwbclient -lsmbclient -ltalloc -ltdb -ldl -lresolv
-CMDLINE_LIBS = @POPTLIBS@
-LIBS = $(EXTERNAL_LIBS) $(LIBSMBCLIENT_LIBS)
-
-# Compile a source file. (.c --> .o)
-COMPILE_CC = $(CC) -I. $(FLAGS) $(PICFLAG) -c $< -o $@
-COMPILE = $(COMPILE_CC)
-
-MAKEDIR = || exec false; \
-	  if test -d "$$dir"; then :; else \
-	  echo mkdir "$$dir"; \
-	  mkdir -p "$$dir" >/dev/null 2>&1 || \
-	  test -d "$$dir" || \
-	  mkdir "$$dir" || \
-	  exec false; fi || exec false
-
-TESTS=	testsmbc \
-	testacl \
-	testacl2 \
-	testacl3 \
-	testbrowse \
-	testbrowse2 \
-	teststat \
-	teststat2 \
-	teststat3 \
-	testtruncate \
-	testchmod \
-	testutime \
-	testread \
-	testwrite
-
-#	tree \
-
-all:	$(TESTS) smbsh
-
-.c.o:
-	@if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \
-	dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi
-	@echo Compiling $*.c
-	@$(COMPILE) && exit 0;\
-		echo "The following command failed:" 1>&2;\
-		echo "$(COMPILE_CC)" 1>&2;\
-		$(COMPILE_CC) >/dev/null 2>&1
-
-testsmbc: testsmbc.o
-	@echo Linking testsmbc
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS)
-
-tree: tree.o
-	@echo Linking tree
-	@$(CC) $(GTK_CFLAGS) $(FLAGS) $(LDFLAGS) -o $@ $< $(GTK_LIBS) $(LIBS)
-
-testacl: testacl.o
-	@echo Linking testacl
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testacl2: testacl2.o
-	@echo Linking testacl2
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testacl3: testacl3.o
-	@echo Linking testacl3
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testbrowse: testbrowse.o
-	@echo Linking testbrowse
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testbrowse2: testbrowse2.o
-	@echo Linking testbrowse2
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-teststat: teststat.o
-	@echo Linking teststat
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-teststat2: teststat2.o
-	@echo Linking teststat2
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-teststat3: teststat3.o
-	@echo Linking teststat3
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testtruncate: testtruncate.o
-	@echo Linking testtruncate
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testchmod: testchmod.o
-	@echo Linking testchmod
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testutime: testutime.o
-	@echo Linking testutime
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testread: testread.o
-	@echo Linking testread
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testwrite: testwrite.o
-	@echo Linking testwrite
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-testctx: testctx.o
-	@echo Linking testctx
-	@$(CC) $(FLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CMDLINE_LIBS)
-
-smbsh:
-	make -C smbwrapper
-
-clean:
-	@rm -f *.o *~ $(TESTS)
-	@make -C smbwrapper clean

Modified: branches/samba/upstream/examples/libsmbclient/smbwrapper/Makefile
===================================================================
--- branches/samba/upstream/examples/libsmbclient/smbwrapper/Makefile	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/libsmbclient/smbwrapper/Makefile	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,9 +1,9 @@
-LIBS = -lwbclient -lsmbclient -ltalloc -ltdb -ldl
+LIBS = -lwbclient -lsmbclient -ldl
 DEFS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
 
 CFLAGS = -I$(SAMBA_INCL) $(EXTLIB_INCL)
 
-LDFLAGS = -L/usr/local/samba/lib -L../../../source/bin
+LDFLAGS = -L/usr/local/samba/lib
 
 SMBINCLUDE = -I../../../source/include
 CFLAGS= -fpic -g -O0 $(DEFS) $(SMBINCLUDE)

Modified: branches/samba/upstream/examples/libsmbclient/smbwrapper/wrapper.c
===================================================================
--- branches/samba/upstream/examples/libsmbclient/smbwrapper/wrapper.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/libsmbclient/smbwrapper/wrapper.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1109,7 +1109,7 @@
         return (* smbw_libc.utimes)((char *) name, (struct timeval *) tvp);
 }
 
-ssize_t readlink(const char *path, char *buf, size_t bufsize)
+int readlink(const char *path, char *buf, size_t bufsize)
 {
         check_init("readlink");
         

Modified: branches/samba/upstream/examples/libsmbclient/testacl.c
===================================================================
--- branches/samba/upstream/examples/libsmbclient/testacl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/examples/libsmbclient/testacl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,7 +24,6 @@
     int flags;
     int debug = 0;
     int numeric = 0;
-    int stat_and_retry = 0;
     int full_time_names = 0;
     enum acl_mode mode = SMB_ACL_LIST;
     static char *the_acl = NULL;
@@ -34,7 +33,6 @@
     char path[1024];
     char value[1024];
     poptContext pc;
-    struct stat st;
     struct poptOption long_options[] =
         {
             POPT_AUTOHELP
@@ -80,10 +78,6 @@
                 'g', "Get a specific acl attribute", "ACL"
             },
             {
-                "stat_and_retry", 'R', POPT_ARG_NONE, &stat_and_retry,
-                1, "After 'get' do 'stat' and another 'get'"
-            },
-            {
                 NULL
             }
         };
@@ -181,40 +175,26 @@
         break;
 
     case SMB_ACL_GET:
-        do
+        if (the_acl == NULL)
         {
-            if (the_acl == NULL)
+            if (numeric)
             {
-                if (numeric)
-                {
-                    the_acl = "system.*";
-                }
-                else
-                {
-                    the_acl = "system.*+";
-                }
+                the_acl = "system.*";
             }
-            ret = smbc_getxattr(path, the_acl, value, sizeof(value));
-            if (ret < 0)
+            else
             {
-                printf("Could not get attributes for [%s] %d: %s\n",
-                       path, errno, strerror(errno));
-                return 1;
+                the_acl = "system.*+";
             }
+        }
+        ret = smbc_getxattr(path, the_acl, value, sizeof(value));
+        if (ret < 0)
+        {
+            printf("Could not get attributes for [%s] %d: %s\n",
+                   path, errno, strerror(errno));
+            return 1;
+        }
         
-            printf("Attributes for [%s] are:\n%s\n", path, value);
-
-            if (stat_and_retry)
-            {
-                if (smbc_stat(path, &st) < 0)
-                {
-                    perror("smbc_stat");
-                    return 1;
-                }
-            }
-
-            --stat_and_retry;
-        } while (stat_and_retry >= 0);
+        printf("Attributes for [%s] are:\n%s\n", path, value);
         break;
 
     case SMB_ACL_ADD:

Deleted: branches/samba/upstream/packaging/RHEL/makerpms.git.sh
===================================================================
--- branches/samba/upstream/packaging/RHEL/makerpms.git.sh	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/packaging/RHEL/makerpms.git.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,149 +0,0 @@
-#!/bin/sh
-# Copyright (C) John H Terpstra 1998-2002
-# Copyright (C) Gerald (Jerry) Carter 2003
-# Copyright (C) Michael Adam 2008
-
-# Script to build RPMs for RHEL from inside a git checkout.
-
-# The following allows environment variables to override the target directories
-#   the alternative is to have a file in your home directory calles .rpmmacros
-#   containing the following:
-#   %_topdir  /home/mylogin/redhat
-#
-# Note: Under this directory rpm expects to find the same directories
-# that are under the /usr/src/redhat directory.
-
-# Set DOCS_TARBALL to the path to a docs release tarball in .tar.bz2 format.
-# This tarball should contain the compiled docs with a prefix of "docs/".
-
-# extra options passed to rpmbuild
-EXTRA_OPTIONS="$1"
-
-RPMSPECDIR=`rpm --eval %_specdir`
-RPMSRCDIR=`rpm --eval %_sourcedir`
-
-# At this point the RPMSPECDIR and RPMSRCDIR variables must have a value!
-
-USERID=`id -u`
-GRPID=`id -g`
-
-DIRNAME=$(dirname $0)
-TOPDIR=${DIRNAME}/../..
-SRCDIR=${TOPDIR}/source
-VERSION_H=${SRCDIR}/include/version.h
-
-SPECFILE="samba.spec"
-DOCS="docs.tar.bz2"
-RPMVER=`rpm --version | awk '{print $3}'`
-RPM="rpmbuild"
-
-##
-## Check the RPM version (paranoid)
-##
-case $RPMVER in
-    4*)
-       echo "Supported RPM version [$RPMVER]"
-       ;;
-    *)
-       echo "Unknown RPM version: `rpm --version`"
-       exit 1
-       ;;
-esac
-
-##
-## determine the samba version and create the SPEC file
-##
-pushd ${SRCDIR}
-./script/mkversion.sh
-popd
-if [ ! -f ${VERSION_H} ] ; then
-	echo "Error creating version.h"
-	exit 1
-fi
-
-VERSION=`grep SAMBA_VERSION_OFFICIAL_STRING ${VERSION_H} | awk '{print $3}'`
-vendor_version=`grep SAMBA_VERSION_VENDOR_SUFFIX ${VERSION_H} | awk '{print $3}'`
-if test "x${vendor_version}"  != "x" ; then
-	VERSION="${VERSION}-${vendor_version}"
-fi
-VERSION=`echo ${VERSION} | sed 's/-/_/g'`
-VERSION=`echo ${VERSION} | sed 's/\"//g'`
-echo "VERSION: ${VERSION}"
-sed -e s/PVERSION/${VERSION}/g \
-	-e s/PRELEASE/1/g \
-	-e s/PRPMREV//g \
-	< ${DIRNAME}/${SPECFILE}.tmpl \
-	> ${DIRNAME}/${SPECFILE}
-
-
-##
-## create the tarball
-##
-pushd ${TOPDIR}
-rm -rf ../samba-${VERSION}
-git archive --prefix=samba-${VERSION}/ HEAD | (cd .. && tar -xf -)
-RC=$?
-popd
-if [ $RC -ne 0 ]; then
-	echo "Build failed!"
-	exit 1
-fi
-
-if [ "x${DOCS_TARBALL}" != "x" ] && [ -f ${DOCS_TARBALL} ]; then
-	cp ${DOCS_TARBALL} /tmp/${DOCS}
-	pushd ${TOPDIR}/../samba-${VERSION}
-	tar xjf /tmp/${DOCS}
-	RC=$?
-	rm -f /tmp/${DOCS}
-	popd
-	if [ $RC -ne 0 ]; then
-		echo "Build failed!"
-		exit 1
-	fi
-fi
-
-pushd ${TOPDIR}/..
-chown -R ${USERID}.${GRPID} samba-${VERSION}${REVISION}
-if [ ! -d samba-${VERSION} ]; then
-	ln -s samba-${VERSION}${REVISION} samba-${VERSION} || exit 1
-fi
-echo -n "Creating samba-${VERSION}.tar.bz2 ... "
-tar --exclude=.svn -cf - samba-${VERSION}/. | bzip2 > ${RPMSRCDIR}/samba-${VERSION}.tar.bz2
-RC=$?
-rm -rf samba-${VERSION}/
-popd
-echo "Done."
-if [ $RC -ne 0 ]; then
-        echo "Build failed!"
-        exit 1
-fi
-
-
-##
-## copy additional source files
-##
-pushd ${DIRNAME}
-chmod 755 setup/filter-requires-samba.sh
-tar --exclude=.svn -jcvf - setup > ${RPMSRCDIR}/setup.tar.bz2
-cp -p ${SPECFILE} ${RPMSPECDIR}
-popd
-
-##
-## Build
-##
-echo "$(basename $0): Getting Ready to build release package"
-pushd ${RPMSPECDIR}
-${RPM} -ba $EXTRA_OPTIONS $SPECFILE
-if [ "x$?" = "x0" ] && [ `arch` = "x86_64" ]; then
-    echo "Building 32 bit winbind libs"
-    # hi ho, a hacking we will go ...
-    ln -sf /lib/libcom_err.so.2 /lib/libcom_err.so
-    ln -sf /lib/libuuid.so.1 /lib/libuuid.so
-    ln -sf /lib/libkeyutils.so.1 /lib/libkeyutils.so
-    ${RPM} -ba --rebuild --target=i386 $SPECFILE
-fi
-
-popd
-
-echo "$(basename $0): Done."
-

Modified: branches/samba/upstream/packaging/RHEL/makerpms.sh
===================================================================
--- branches/samba/upstream/packaging/RHEL/makerpms.sh	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/packaging/RHEL/makerpms.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,7 +20,7 @@
 
 USERID=`id -u`
 GRPID=`id -g`
-VERSION='3.3.0pre2'
+VERSION='3.2.4'
 REVISION=''
 SPECFILE="samba.spec"
 RPMVER=`rpm --version | awk '{print $3}'`

Modified: branches/samba/upstream/packaging/RHEL/samba.spec
===================================================================
--- branches/samba/upstream/packaging/RHEL/samba.spec	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/packaging/RHEL/samba.spec	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5,7 +5,7 @@
 Vendor: Samba Team
 Packager: Samba Team <samba at samba.org>
 Name:         samba
-Version:      3.3.0pre2
+Version:      3.2.4
 Release:      1
 Epoch:        0
 License: GNU GPL version 3
@@ -136,8 +136,7 @@
 	--prefix=%{_prefix} \
 	--localstatedir=/var \
         --with-configdir=%{_sysconfdir}/samba \
-        --libdir=%{_libarchdir} \
-	--with-modulesdir=%{_libarchdir}/samba \
+        --with-libdir=%{_libarchdir}/samba \
 	--with-pammodulesdir=%{_libarch}/security \
         --with-lockdir=/var/lib/samba \
         --with-logfilebase=/var/log/samba \
@@ -164,6 +163,8 @@
 
 make showlayout
 
+make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"  proto 
+
 ## check for gcc 3.4 or later
 CC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`
 CC_MAJOR=`echo ${CC_VERSION} | cut -d. -f 1`
@@ -223,6 +224,18 @@
   ln -sf libnss_winbind.so.2  libnss_winbind.so;
   ln -sf libnss_wins.so.2  libnss_wins.so )
 
+# Put the shared (and possibly static) libraries into /usr/lib{,64}/ .
+# Samba 3.2.2 installs them into /usr/lib{,64}/samba/ .
+# This step will become unnecessary in 3.3.0.
+#
+for library in libsmbclient libsmbsharemodes libwbclient libtalloc libtdb
+libnetapi
+do
+	mv -f ${RPM_BUILD_ROOT}%{_libarchdir}/samba/${library}.* \
+		${RPM_BUILD_ROOT}%{_libarchdir}/
+done
+
+
 ## cleanup
 /bin/rm -rf $RPM_BUILD_ROOT/usr/lib*/samba/security
 
@@ -398,7 +411,6 @@
 %defattr(-,root,root)
 /sbin/mount.cifs
 /sbin/umount.cifs
-%{_sbindir}/cifs.upcall
 
 %{_bindir}/rpcclient
 %{_bindir}/smbcacls
@@ -415,7 +427,6 @@
 
 %{_mandir}/man8/mount.cifs.8.*
 %{_mandir}/man8/umount.cifs.8.*
-%{_mandir}/man8/cifs.upcall.8.*
 %{_mandir}/man8/smbspool.8*
 %{_mandir}/man1/smbget.1*
 %{_mandir}/man5/smbgetrc.5*

Modified: branches/samba/upstream/packaging/RHEL/samba.spec.tmpl
===================================================================
--- branches/samba/upstream/packaging/RHEL/samba.spec.tmpl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/packaging/RHEL/samba.spec.tmpl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -136,8 +136,7 @@
 	--prefix=%{_prefix} \
 	--localstatedir=/var \
         --with-configdir=%{_sysconfdir}/samba \
-        --libdir=%{_libarchdir} \
-	--with-modulesdir=%{_libarchdir}/samba \
+        --with-libdir=%{_libarchdir}/samba \
 	--with-pammodulesdir=%{_libarch}/security \
         --with-lockdir=/var/lib/samba \
         --with-logfilebase=/var/log/samba \
@@ -164,6 +163,8 @@
 
 make showlayout
 
+make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"  proto 
+
 ## check for gcc 3.4 or later
 CC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`
 CC_MAJOR=`echo ${CC_VERSION} | cut -d. -f 1`
@@ -223,6 +224,18 @@
   ln -sf libnss_winbind.so.2  libnss_winbind.so;
   ln -sf libnss_wins.so.2  libnss_wins.so )
 
+# Put the shared (and possibly static) libraries into /usr/lib{,64}/ .
+# Samba 3.2.2 installs them into /usr/lib{,64}/samba/ .
+# This step will become unnecessary in 3.3.0.
+#
+for library in libsmbclient libsmbsharemodes libwbclient libtalloc libtdb
+libnetapi
+do
+	mv -f ${RPM_BUILD_ROOT}%{_libarchdir}/samba/${library}.* \
+		${RPM_BUILD_ROOT}%{_libarchdir}/
+done
+
+
 ## cleanup
 /bin/rm -rf $RPM_BUILD_ROOT/usr/lib*/samba/security
 
@@ -398,7 +411,6 @@
 %defattr(-,root,root)
 /sbin/mount.cifs
 /sbin/umount.cifs
-%{_sbindir}/cifs.upcall
 
 %{_bindir}/rpcclient
 %{_bindir}/smbcacls
@@ -415,7 +427,6 @@
 
 %{_mandir}/man8/mount.cifs.8.*
 %{_mandir}/man8/umount.cifs.8.*
-%{_mandir}/man8/cifs.upcall.8.*
 %{_mandir}/man8/smbspool.8*
 %{_mandir}/man1/smbget.1*
 %{_mandir}/man5/smbgetrc.5*

Copied: branches/samba/upstream/packaging/RHEL4-CTDB (from rev 2163, branches/samba/upstream/packaging/RHEL4-CTDB)

Modified: branches/samba/upstream/release-scripts/build-docs
===================================================================
--- branches/samba/upstream/release-scripts/build-docs	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/release-scripts/build-docs	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,7 +25,4 @@
 mv manpages-3 manpages
 mv htmldocs/manpages-3 htmldocs/manpages
 
-cd $DOCSRCDIR || exit 1
-make clean
-
 exit

Modified: branches/samba/upstream/source/Doxyfile
===================================================================
--- branches/samba/upstream/source/Doxyfile	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/Doxyfile	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,7 +1,7 @@
-# Doxyfile 1.5.3
+# Doxyfile 0.1
 
 #---------------------------------------------------------------------------
-# Project related configuration options
+# General configuration options
 #---------------------------------------------------------------------------
 PROJECT_NAME           = Samba
 PROJECT_NUMBER         = HEAD
@@ -13,84 +13,68 @@
 # doesn't mind variables being redefined.
 
 OUTPUT_DIRECTORY       = dox
+
 OUTPUT_LANGUAGE        = English
-DOXYFILE_ENCODING      = UTF-8
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ALWAYS_DETAILED_SEC    = NO
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = $(PWD)/
-SHORT_NAMES            = NO
-JAVADOC_AUTOBRIEF      = YES
-INHERIT_DOCS           = YES
-TAB_SIZE               = 8
-ALIASES                =
-OPTIMIZE_OUTPUT_FOR_C  = YES
-DISTRIBUTE_GROUP_DOC   = NO
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
 EXTRACT_ALL            = YES
 EXTRACT_PRIVATE        = YES
 EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
 HIDE_UNDOC_MEMBERS     = NO
 HIDE_UNDOC_CLASSES     = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ALWAYS_DETAILED_SEC    = NO
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = $(PWD)/
 INTERNAL_DOCS          = YES
+CLASS_DIAGRAMS         = YES
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = YES
+STRIP_CODE_COMMENTS    = NO
 CASE_SENSE_NAMES       = YES
+SHORT_NAMES            = NO
 HIDE_SCOPE_NAMES       = YES
+VERBATIM_HEADERS       = YES
 SHOW_INCLUDE_FILES     = YES
+JAVADOC_AUTOBRIEF      = YES
+INHERIT_DOCS           = YES
 INLINE_INFO            = YES
 SORT_MEMBER_DOCS       = NO
-SORT_BRIEF_DOCS        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
 GENERATE_TODOLIST      = YES
 GENERATE_TESTLIST      = YES
 GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
+ALIASES                = 
 ENABLED_SECTIONS       = 
 MAX_INITIALIZER_LINES  = 30
+OPTIMIZE_OUTPUT_FOR_C  = YES
 SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = YES
+REFERENCED_BY_RELATION = YES
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 QUIET                  = YES
 WARNINGS               = NO
 WARN_IF_UNDOCUMENTED   = NO
-WARN_IF_DOC_ERROR      = NO
-WARN_NO_PARAMDOC       = NO
 WARN_FORMAT            = "$file:$line: $text"
 WARN_LOGFILE           = 
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
 INPUT                  = . 
-INPUT_ENCODING         = UTF-8
 FILE_PATTERNS          = *.c \
                          *.h \
                          *.idl
 RECURSIVE              = YES
 EXCLUDE                = include/includes.h \
                          include/proto.h
-EXCLUDE_SYMLINKS       = NO
 EXCLUDE_PATTERNS       = 
 EXAMPLE_PATH           = 
 EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
 IMAGE_PATH             = 
 INPUT_FILTER           = 
 FILTER_SOURCE_FILES    = NO
 #---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = YES
-INLINE_SOURCES         = YES
-STRIP_CODE_COMMENTS    = NO
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION    = YES
-REFERENCES_LINK_SOURCE = YES
-VERBATIM_HEADERS       = YES
-#---------------------------------------------------------------------------
 # configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
 ALPHABETICAL_INDEX     = YES
@@ -101,12 +85,13 @@
 #---------------------------------------------------------------------------
 GENERATE_HTML          = YES
 HTML_OUTPUT            = .
-HTML_FILE_EXTENSION    = .html
 HTML_HEADER            = 
 HTML_FOOTER            = 
 HTML_STYLESHEET        = 
 HTML_ALIGN_MEMBERS     = YES
 GENERATE_HTMLHELP      = NO
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
 TOC_EXPAND             = NO
 DISABLE_INDEX          = NO
 ENUM_VALUES_PER_LINE   = 3
@@ -167,26 +152,25 @@
 # configuration options related to the dot tool   
 #---------------------------------------------------------------------------
 HAVE_DOT               = NO
-CLASS_DIAGRAMS         = YES
-HIDE_UNDOC_RELATIONS   = NO
 CLASS_GRAPH            = YES
 COLLABORATION_GRAPH    = YES
-GROUP_GRAPHS           = YES
 TEMPLATE_RELATIONS     = YES
 INCLUDE_GRAPH          = YES
 INCLUDED_BY_GRAPH      = YES
-CALL_GRAPH             = YES
-CALLER_GRAPH           = YES
 GRAPHICAL_HIERARCHY    = YES
-DIRECTORY_GRAPH        = YES
-DOT_IMAGE_FORMAT       = png
 DOT_PATH               = 
 DOTFILE_DIRS           = 
-DOT_GRAPH_MAX_NODES    = 50
-MAX_DOT_GRAPH_DEPTH    = 0
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
 GENERATE_LEGEND        = YES
 DOT_CLEANUP            = YES
 #---------------------------------------------------------------------------
 # configuration::additions related to the search engine   
 #---------------------------------------------------------------------------
 SEARCHENGINE           = NO
+CGI_NAME               = search.cgi
+CGI_URL                = 
+DOC_URL                = 
+DOC_ABSPATH            = 
+BIN_ABSPATH            = /usr/local/bin/
+EXT_DOC_PATHS          = 

Modified: branches/samba/upstream/source/Makefile.in
===================================================================
--- branches/samba/upstream/source/Makefile.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/Makefile.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -34,8 +34,8 @@
 MODULE_EXPORTS=@MODULE_EXPORTS@
 
 # Add $(DEVELOPER_CFLAGS) to $(CFLAGS) to enable extra compiler
-# (GCC) warnings. This is done automtically for --enable-developer,
-# --enable-picky-developer and --enable-krb5developer.
+# (GCC) warnings. This is done automtically for --enable-developer
+# and --enable-krb5developer.
 DEVELOPER_CFLAGS=@DEVELOPER_CFLAGS@
 CFLAGS=@CFLAGS@
 CPPFLAGS=-DHAVE_CONFIG_H @CPPFLAGS@
@@ -99,18 +99,16 @@
 SBINDIR = @sbindir@
 ROOTSBINDIR = @rootsbindir@
 LIBDIR = @libdir@
-MODULESDIR = @modulesdir@
 INCLUDEDIR=@includedir@
 PAMMODULESDIR = @pammodulesdir@
-VFSLIBDIR = $(MODULESDIR)/vfs
-PDBLIBDIR = $(MODULESDIR)/pdb
-RPCLIBDIR = $(MODULESDIR)/rpc
-IDMAPLIBDIR = $(MODULESDIR)/idmap
-NSSINFOLIBDIR = $(MODULESDIR)/nss_info
-CHARSETLIBDIR = $(MODULESDIR)/charset
-AUTHLIBDIR = $(MODULESDIR)/auth
-CONFIGLIBDIR = $(MODULESDIR)/config
-GPEXTLIBDIR = $(MODULESDIR)/gpext
+VFSLIBDIR = $(LIBDIR)/vfs
+PDBLIBDIR = $(LIBDIR)/pdb
+RPCLIBDIR = $(LIBDIR)/rpc
+IDMAPLIBDIR = $(LIBDIR)/idmap
+NSSINFOLIBDIR = $(LIBDIR)/nss_info
+CHARSETLIBDIR = $(LIBDIR)/charset
+AUTHLIBDIR = $(LIBDIR)/auth
+CONFIGLIBDIR = $(LIBDIR)/config
 CONFIGDIR = @configdir@
 VARDIR = @localstatedir@
 MANDIR = @mandir@
@@ -167,7 +165,6 @@
 	-DLOCKDIR=\"$(LOCKDIR)\" \
 	-DPIDDIR=\"$(PIDDIR)\" \
 	-DLIBDIR=\"$(LIBDIR)\" \
-	-DMODULESDIR=\"$(MODULESDIR)\" \
 	-DLOGFILEBASE=\"$(LOGFILEBASE)\" \
 	-DSHLIBEXT=\"@SHLIBEXT@\" \
 	-DCTDBDIR=\"$(CTDBDIR)\" \
@@ -178,7 +175,7 @@
 
 # Note that all executable programs now provide for an optional executable suffix.
 
-SBIN_PROGS = bin/smbd at EXEEXT@ bin/nmbd at EXEEXT@ @SWAT_SBIN_TARGETS@ @EXTRA_SBIN_PROGS@
+SBIN_PROGS = bin/smbd at EXEEXT@ bin/nmbd at EXEEXT@ @SWAT_SBIN_TARGETS@ @EXTRA_SBIN_PROGS@ @CIFSUPCALL_PROGS@
 
 ROOT_SBIN_PROGS = @CIFSMOUNT_PROGS@
 
@@ -221,10 +218,8 @@
 CHARSET_MODULES = @CHARSET_MODULES@
 AUTH_MODULES = @AUTH_MODULES@
 NSS_INFO_MODULES = @NSS_INFO_MODULES@
-GPEXT_MODULES = @GPEXT_MODULES@
 MODULES = $(VFS_MODULES) $(PDB_MODULES) $(RPC_MODULES) $(IDMAP_MODULES) \
-          $(CHARSET_MODULES) $(AUTH_MODULES) $(NSS_INFO_MODULES) \
-	  $(GPEXT_MODULES)
+          $(CHARSET_MODULES) $(AUTH_MODULES) $(NSS_INFO_MODULES)
 
 ######################################################################
 # object file lists
@@ -232,7 +227,7 @@
 
 TDB_OBJ = lib/util_tdb.o \
 	  lib/dbwrap.o lib/dbwrap_tdb.o \
-	  lib/dbwrap_ctdb.o \
+	  lib/dbwrap_tdb2.o lib/dbwrap_ctdb.o \
 	  lib/dbwrap_rbt.o @LIBTDB_STATIC@
 
 SMBLDAP_OBJ = @SMBLDAP@ @SMBLDAPUTIL@
@@ -249,16 +244,7 @@
 
 PASSCHANGE_OBJ = libsmb/passchange.o
 
-LIBNDR_DRSUAPI_OBJ = librpc/ndr/ndr_drsuapi.o \
-		     librpc/ndr/ndr_compression.o \
-		     librpc/gen_ndr/ndr_drsuapi.o \
-		     librpc/gen_ndr/ndr_drsblobs.o
 
-COMPRESSION_OBJ = lib/compression/mszip.o
-
-DRSUAPI_OBJ = $(LIBNDR_DRSUAPI_OBJ) \
-	      $(COMPRESSION_OBJ)
-
 LIBNDR_OBJ = librpc/ndr/ndr_basic.o \
 	     librpc/ndr/ndr.o \
 	     librpc/ndr/ndr_misc.o \
@@ -288,7 +274,6 @@
 		 librpc/gen_ndr/ndr_dssetup.o \
 		 librpc/gen_ndr/ndr_notify.o \
 		 librpc/gen_ndr/ndr_xattr.o \
-		 librpc/gen_ndr/ndr_epmapper.o \
 		 librpc/gen_ndr/ndr_ntsvcs.o
 
 RPC_PARSE_OBJ0 = rpc_parse/parse_prs.o rpc_parse/parse_misc.o
@@ -312,14 +297,14 @@
 		$(SOCKET_WRAPPER_OBJ) \
 		$(NSS_WRAPPER_OBJ)
 
-LIB_OBJ = $(LIBSAMBAUTIL_OBJ) \
-	  lib/messages.o librpc/gen_ndr/ndr_messaging.o lib/messages_local.o \
-	  lib/messages_ctdbd.o lib/packet.o lib/ctdbd_conn.o lib/talloc_stack.o \
-	  lib/interfaces.o lib/rbtree.o lib/memcache.o \
-	  lib/util_transfer_file.o lib/async_req.o \
-	  lib/async_sock.o \
-	  $(TDB_OBJ) \
-	  $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \
+LIB_WITHOUT_PROTO_OBJ = $(LIBSAMBAUTIL_OBJ) \
+	lib/messages.o librpc/gen_ndr/ndr_messaging.o lib/messages_local.o \
+	lib/messages_ctdbd.o lib/packet.o lib/ctdbd_conn.o lib/talloc_stack.o \
+	lib/interfaces.o lib/rbtree.o lib/memcache.o \
+	lib/util_transfer_file.o lib/async_req.o \
+	$(TDB_OBJ)
+
+LIB_WITH_PROTO_OBJ = $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \
 	  lib/interface.o lib/md4.o \
 	  lib/pidfile.o \
 	  lib/signal.o lib/system.o lib/sendfile.o lib/recvfile.o lib/time.o \
@@ -339,8 +324,10 @@
 	  lib/module.o lib/events.o lib/ldap_escape.o @CHARSET_STATIC@ \
 	  lib/secdesc.o lib/util_seaccess.o lib/secace.o lib/secacl.o \
 	  libads/krb5_errs.o lib/system_smbd.o lib/audit.o $(LIBNDR_OBJ) \
-	  lib/file_id.o lib/idmap_cache.o
+	  lib/file_id.o
 
+LIB_OBJ = $(LIB_WITHOUT_PROTO_OBJ) $(LIB_WITH_PROTO_OBJ)
+
 LIB_DUMMY_OBJ = lib/dummysmbd.o lib/dummyroot.o
 LIB_NONSMBD_OBJ = $(LIB_OBJ) $(LIB_DUMMY_OBJ)
 
@@ -360,12 +347,8 @@
 	       libaddns/dnsgss.o libaddns/dnsmarshall.o
 LIBADDNS_OBJ = $(LIBADDNS_OBJ0) $(SOCKET_WRAPPER_OBJ) @LIBTALLOC_STATIC@
 
-GPEXT_OBJ = libgpo/gpext/gpext.o @GPEXT_STATIC@
-
 LIBGPO_OBJ0 = libgpo/gpo_ldap.o libgpo/gpo_ini.o libgpo/gpo_util.o \
-	      libgpo/gpo_fetch.o libgpo/gpo_filesync.o libgpo/gpo_sec.o \
-	      libgpo/gpo_reg.o \
-	      $(GPEXT_OBJ)
+	      libgpo/gpo_fetch.o libgpo/gpo_filesync.o libgpo/gpo_sec.o
 LIBGPO_OBJ = $(LIBGPO_OBJ0)
 
 LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o \
@@ -422,8 +405,7 @@
 	     $(LIBSAMBA_OBJ) \
 	     $(LIBNMB_OBJ) \
 	     $(LIBNBT_OBJ) \
-	     $(CLDAP_OBJ) \
-	     $(DRSUAPI_OBJ)
+	     $(CLDAP_OBJ)
 
 RPC_CLIENT_OBJ1 = rpc_client/cli_netlogon.o
 
@@ -431,9 +413,7 @@
 	       $(RPC_CLIENT_OBJ1) rpc_client/cli_reg.o $(RPC_CLIENT_OBJ) \
 	       rpc_client/cli_spoolss.o rpc_client/cli_spoolss_notify.o  \
 	       rpc_client/cli_svcctl.o \
-	       rpc_client/init_samr.o \
-		   librpc/rpc/dcerpc.o \
-		   librpc/rpc/binding.o
+	       rpc_client/init_samr.o
 
 LIBMSRPC_GEN_OBJ = librpc/gen_ndr/cli_lsa.o \
 		   librpc/gen_ndr/cli_dfs.o \
@@ -448,8 +428,6 @@
 		   librpc/gen_ndr/cli_samr.o \
 		   librpc/gen_ndr/cli_dssetup.o \
 		   librpc/gen_ndr/cli_ntsvcs.o \
-		   librpc/gen_ndr/cli_epmapper.o \
-		   librpc/gen_ndr/cli_drsuapi.o \
 		   $(LIBNDR_GEN_OBJ) \
 		   $(RPCCLIENT_NDR_OBJ)
 
@@ -623,8 +601,6 @@
 VFS_FILEID_OBJ = modules/vfs_fileid.o
 VFS_AIO_FORK_OBJ = modules/vfs_aio_fork.o
 VFS_SYNCOPS_OBJ = modules/vfs_syncops.o
-VFS_ACL_XATTR_OBJ = modules/vfs_acl_xattr.o
-VFS_SMB_TRAFFIC_ANALYZER_OBJ = modules/vfs_smb_traffic_analyzer.o
 
 PLAINTEXT_AUTH_OBJ = auth/pampass.o auth/pass_check.o
 
@@ -733,7 +709,7 @@
 SMBTREE_OBJ = utils/smbtree.o $(PARAM_OBJ) \
              $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(LIBSMB_OBJ) \
 	     $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) \
-             rpc_client/cli_pipe.o librpc/rpc/binding.o $(RPC_PARSE_OBJ2) \
+             rpc_client/cli_pipe.o $(RPC_PARSE_OBJ2) \
              $(RPC_CLIENT_OBJ1) \
 	     $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(LDB_OBJ) $(GROUPDB_OBJ) \
 	     $(LIBMSRPC_GEN_OBJ)
@@ -767,7 +743,6 @@
 		 rpcclient/cmd_dssetup.o rpcclient/cmd_echo.o \
 		 rpcclient/cmd_shutdown.o rpcclient/cmd_test.o \
 		 rpcclient/cmd_wkssvc.o rpcclient/cmd_ntsvcs.o \
-		 rpcclient/cmd_drsuapi.o \
 		 $(DISPLAY_SEC_OBJ)
 
 RPCCLIENT_OBJ = $(RPCCLIENT_OBJ1) \
@@ -813,7 +788,6 @@
 	$(GROUPDB_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ) $(LDB_OBJ)
 
 CLIENT_OBJ1 = client/client.o client/clitar.o rpc_client/cli_pipe.o \
-	      librpc/rpc/binding.o \
 	      client/dnsbrowse.o \
 	      $(RPC_CLIENT_OBJ1) \
 	      $(RPC_PARSE_OBJ2)
@@ -822,7 +796,7 @@
 	     $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(LIBMSRPC_GEN_OBJ) \
              $(READLINE_OBJ) $(POPT_LIB_OBJ) \
              $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ) \
-	     $(DISPLAY_SEC_OBJ)
+	     $(DISPLAY_SEC_OBJ) 
 
 LIBSMBCONF_OBJ = lib/smbconf/smbconf.o lib/smbconf/smbconf_util.o \
 		 lib/smbconf/smbconf_reg.o \
@@ -838,14 +812,7 @@
 		  $(POPT_LIB_OBJ)
 
 LIBNET_OBJ = libnet/libnet_join.o \
-	     libnet/libnet_keytab.o \
 	     libnet/libnet_samsync.o \
-	     libnet/libnet_samsync_ldif.o \
-	     libnet/libnet_samsync_passdb.o \
-	     libnet/libnet_samsync_display.o \
-	     libnet/libnet_samsync_keytab.o \
-	     libnet/libnet_dssync.o \
-	     libnet/libnet_dssync_keytab.o \
 	     librpc/gen_ndr/ndr_libnet_join.o
 
 NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_help.o \
@@ -857,15 +824,15 @@
 	   utils/netlookup.o utils/net_sam.o utils/net_rpc_shell.o \
 	   utils/net_util.o utils/net_rpc_sh_acct.o utils/net_rpc_audit.o \
 	   $(PASSWD_UTIL_OBJ) utils/net_dns.o utils/net_ads_gpo.o \
-	   utils/net_conf.o utils/net_join.o utils/net_user.o \
-	   utils/net_group.o utils/net_file.o utils/net_registry.o \
-	   auth/token_util.o utils/net_dom.o utils/net_share.o
+	   utils/net_conf.o \
+	   utils/net_registry.o \
+	   auth/token_util.o utils/net_dom.o
 
 # these are not processed by make proto
-NET_OBJ2 = utils/net_registry_util.o utils/net_help_common.o
+NET_OBJ2 = utils/net_registry_util.o
 
 NET_OBJ = $(NET_OBJ1) \
-	  $(NET_OBJ2) @FAKE_KASERVER_OBJ@\
+	  $(NET_OBJ2) \
 	  $(PARAM_WITHOUT_REG_OBJ) $(LIBSMB_OBJ) \
 	  $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \
 	  $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(LIBADDNS_OBJ0) \
@@ -972,6 +939,26 @@
                  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
 		 $(LIBNDR_GEN_OBJ0)
 
+PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
+	    $(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(LIBSMB_OBJ) \
+	    $(SMBTORTURE_OBJ1) $(RPCCLIENT_OBJ1) \
+	    $(LIBMSRPC_OBJ) \
+	    $(LIB_WITH_PROTO_OBJ) \
+	    $(RPC_PIPE_OBJ) $(RPC_PARSE_OBJ) $(KRBCLIENT_OBJ) \
+	    $(AUTH_OBJ) $(PARAM_WITHOUT_REG_OBJ) $(LOCKING_OBJ) \
+	    $(PRINTING_OBJ) $(PRINTBACKEND_OBJ) $(OPLOCK_OBJ) $(NOTIFY_OBJ) \
+	    $(PASSDB_OBJ) $(GROUPDB_OBJ) \
+	    $(READLINE_OBJ) $(PROFILE_OBJ) $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
+	    $(AUTH_SAM_OBJ) $(REG_FULL_OBJ) $(POPT_LIB_OBJ) \
+	    $(RPC_LSA_OBJ) $(RPC_NETLOG_OBJ) $(RPC_SAMR_OBJ) $(RPC_REG_OBJ) $(RPC_DSSETUP_OBJ) \
+	    $(RPC_SVC_OBJ) $(RPC_WKS_OBJ) $(RPC_DFS_OBJ) $(RPC_SPOOLSS_OBJ) \
+	    $(RPC_ECHO_OBJ) $(RPC_SVCCTL_OBJ) $(RPC_EVENTLOG_OBJ) $(SMBLDAP_OBJ) \
+            $(IDMAP_OBJ) libsmb/spnego.o $(PASSCHANGE_OBJ) \
+	    $(RPC_NTSVCS_OBJ) $(RPC_INITSHUTDOWN_OBJ) \
+	    utils/passwd_util.o $(LIBGPO_OBJ) $(NSS_INFO_OBJ) \
+	    $(RPCCLIENT_NDR_OBJ) \
+	    $(PRIVILEGES_BASIC_OBJ)
+
 WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
 	$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) \
 	$(LIBNDR_GEN_OBJ0)
@@ -982,22 +969,10 @@
 		$(SMBLDAP_OBJ) $(LIBSAMBA_OBJ) \
 		$(LDB_OBJ)
 
-IDMAP_OBJ     = winbindd/idmap.o winbindd/idmap_util.o @IDMAP_STATIC@
+IDMAP_OBJ     = winbindd/idmap.o winbindd/idmap_cache.o winbindd/idmap_util.o @IDMAP_STATIC@
 
 NSS_INFO_OBJ = winbindd/nss_info.o @NSS_INFO_STATIC@
 
-IDMAP_HASH_OBJ = \
-		winbindd/idmap_hash/idmap_hash.o \
-		winbindd/idmap_hash/mapfile.o
-
-IDMAP_ADEX_OBJ = \
-		winbindd/idmap_adex/idmap_adex.o \
-		winbindd/idmap_adex/cell_util.o \
-		winbindd/idmap_adex/likewise_cell.o \
-		winbindd/idmap_adex/provider_unified.o \
-		winbindd/idmap_adex/gc_util.o \
-		winbindd/idmap_adex/domain_util.o
-
 WINBINDD_OBJ1 = \
 		winbindd/winbindd.o       \
 		winbindd/winbindd_user.o  \
@@ -1105,7 +1080,7 @@
 		$(LIBNDR_GEN_OBJ0) $(LIBNDR_GEN_OBJ1)
 
 
-VLP_OBJ1 = ../testsuite/printing/vlp.o $(RPC_CLIENT_OBJ1) $(RPC_PARSE_OBJ2) $(RPC_CLIENT_OBJ) librpc/rpc/binding.o
+VLP_OBJ1 = ../testsuite/printing/vlp.o $(RPC_CLIENT_OBJ1) $(RPC_PARSE_OBJ2) $(RPC_CLIENT_OBJ)
 
 VLP_OBJ = $(VLP_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \
 	  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(LIBMSRPC_GEN_OBJ) \
@@ -1113,20 +1088,6 @@
 	  $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ) \
 	  $(DISPLAY_SEC_OBJ)
 
-RPC_OPEN_TCP_OBJ = torture/rpc_open_tcp.o \
-		   $(LIBSMB_OBJ) \
-		   $(PARAM_OBJ) \
-		   $(PASSDB_OBJ) \
-		   @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(LDB_OBJ) $(GROUPDB_OBJ) \
-		   $(LIB_NONSMBD_OBJ) \
-		   $(KRBCLIENT_OBJ) \
-		   $(RPC_PARSE_OBJ2) \
-		   $(RPC_CLIENT_OBJ1) \
-		   rpc_client/cli_pipe.o \
-		   librpc/rpc/binding.o \
-		   $(LIBMSRPC_GEN_OBJ)
-
-
 ######################################################################
 # now the rules...
 ######################################################################
@@ -1137,12 +1098,10 @@
 
 pam_modules:: $(PAM_MODULES)
 
-pam_smbpass: SHOWFLAGS bin/pam_smbpass. at SHLIBEXT@
+pam_smbpass : SHOWFLAGS bin/pam_smbpass. at SHLIBEXT@
 
-pam_winbind: SHOWFLAGS bin/pam_winbind. at SHLIBEXT@
+pam_winbind : SHOWFLAGS bin/pam_winbind. at SHLIBEXT@
 
-gpext_modules:: $(GPEXT_MODULES)
-
 torture:: SHOWFLAGS $(TORTURE_PROGS)
 
 smbtorture : SHOWFLAGS bin/smbtorture at EXEEXT@
@@ -1188,8 +1147,7 @@
 IDL_FILES = lsa.idl dfs.idl echo.idl winreg.idl initshutdown.idl \
 	srvsvc.idl svcctl.idl eventlog.idl wkssvc.idl netlogon.idl notify.idl \
 	epmapper.idl messaging.idl xattr.idl misc.idl samr.idl security.idl \
-	dssetup.idl krb5pac.idl ntsvcs.idl libnetapi.idl drsuapi.idl drsblobs.idl \
-	nbt.idl
+	dssetup.idl krb5pac.idl ntsvcs.idl libnetapi.idl
 
 idl::
 	@IDL_FILES="$(IDL_FILES)" CPP="$(CPP)" PERL="$(PERL)" \
@@ -1250,14 +1208,14 @@
 
 # this adds support for precompiled headers. To use it, install a snapshot
 # of gcc-3.4 and run 'make pch' before you do the main build.
-pch::
+pch:: proto_exists
 	rm -f $(PRECOMPILED_HEADER)
 	$(MAKE) $(PRECOMPILED_HEADER)
 
 $(PRECOMPILED_HEADER): $(srcdir)/include/includes.h
 	$(COMPILE)
 
-BINARY_PREREQS = bin/.dummy
+BINARY_PREREQS = proto_exists bin/.dummy
 
 # These dependencies are only approximately correct: we want to make
 # sure Samba's paths are updated if ./configure is re-run.  Really it
@@ -1847,13 +1805,7 @@
 		 lib/netapi/joindomain.o \
 		 lib/netapi/serverinfo.o \
 		 lib/netapi/getdc.o \
-		 lib/netapi/user.o \
-		 lib/netapi/group.o \
-		 lib/netapi/localgroup.o \
-		 lib/netapi/samr.o \
-		 lib/netapi/sid.o \
-		 lib/netapi/share.o \
-		 lib/netapi/file.o
+		 lib/netapi/user.o
 
 LIBNETAPI_OBJ  = $(LIBNETAPI_OBJ0) $(LIBNET_OBJ) \
 		 $(LIBSMBCONF_OBJ) \
@@ -1862,8 +1814,7 @@
 		 $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
 		 $(LIBMSRPC_OBJ) $(LIBMSRPC_GEN_OBJ) $(RPC_PARSE_OBJ) \
 		 $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ) \
-		 $(DCUTIL_OBJ) $(LIBADS_OBJ) $(PRIVILEGES_BASIC_OBJ) \
-		 auth/token_util.o
+		 $(DCUTIL_OBJ) $(LIBADS_OBJ) $(PRIVILEGES_BASIC_OBJ)
 
 LIBNETAPI_SHARED_TARGET=@LIBNETAPI_SHARED_TARGET@
 LIBNETAPI_SOVER=@LIBNETAPI_SOVER@
@@ -1935,13 +1886,10 @@
 LIBSMBCLIENT_SHARED_TARGET_SONAME=$(LIBSMBCLIENT_SHARED_TARGET).$(LIBSMBCLIENT_SOVER)
 LIBSMBCLIENT_STATIC_TARGET=@LIBSMBCLIENT_STATIC_TARGET@
 LIBSMBCLIENT=$(LIBSMBCLIENT_STATIC_TARGET) @LIBSMBCLIENT_SHARED@
-LIBSMBCLIENT_SYMS=$(srcdir)/exports/libsmbclient. at SYMSEXT@
+#LIBSMBCLIENT_SYMS=$(srcdir)/exports/libsmbclient. at SYMSEXT@
 LIBSMBCLIENT_HEADERS=$(srcdir)/include/libsmbclient.h
 
-$(LIBSMBCLIENT_SYMS): $(LIBSMBCLIENT_HEADERS)
-	@$(MKSYMS_SH) $(AWK) $@ $(LIBSMBCLIENT_HEADERS)
-
-$(LIBSMBCLIENT_SHARED_TARGET_SONAME): $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) $(LIBSMBCLIENT_SYMS) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
+$(LIBSMBCLIENT_SHARED_TARGET_SONAME): $(BINARY_PREREQS) $(LIBSMBCLIENT_OBJ) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
 	@echo Linking shared library $@
 	@$(SHLD_DSO) $(LIBSMBCLIENT_OBJ) \
 		$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(WINBIND_LIBS) $(LIBS) \
@@ -2007,13 +1955,12 @@
 LIBSMBSHAREMODES_SHARED_TARGET_SONAME=$(LIBSMBSHAREMODES_SHARED_TARGET).$(LIBSMBSHAREMODES_SOVER)
 LIBSMBSHAREMODES_STATIC_TARGET=@LIBSMBSHAREMODES_STATIC_TARGET@
 LIBSMBSHAREMODES=$(LIBSMBSHAREMODES_STATIC_TARGET) @LIBSMBSHAREMODES_SHARED@
-LIBSMBSHAREMODES_SYMS=$(srcdir)/exports/libsmbsharemodes. at SYMSEXT@
+#LIBSMBSHAREMODES_SYMS=$(srcdir)/exports/libsmbsharemodes. at SYMSEXT@
 LIBSMBSHAREMODES_HEADERS=$(srcdir)/include/smb_share_modes.h
 
-$(LIBSMBSHAREMODES_SYMS): $(LIBSMBSHAREMODES_HEADERS)
-	@$(MKSYMS_SH) $(AWK) $@ $(LIBSMBSHAREMODES_HEADERS)
+LIBSMBSHAREMODES=bin/libsmbsharemodes.a @LIBSMBSHAREMODES_SHARED@
 
-$(LIBSMBSHAREMODES_SHARED_TARGET_SONAME): $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) $(LIBSMBSHAREMODES_SYMS) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@
+$(LIBSMBSHAREMODES_SHARED_TARGET_SONAME): $(BINARY_PREREQS) $(LIBSMBSHAREMODES_OBJ) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@
 	@echo Linking shared library $@
 	@$(SHLD_DSO) $(LIBSMBSHAREMODES_OBJ) \
 		$(LIBS) $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) \
@@ -2231,14 +2178,6 @@
 	@echo "Building plugin $@"
 	@$(SHLD_MODULE) winbindd/idmap_ad.o
 
-bin/hash. at SHLIBEXT@: $(BINARY_PREREQS) $(IDMAP_HASH_OBJ)
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) $(IDMAP_HASH_OBJ)
-
-bin/adex. at SHLIBEXT@: $(BINARY_PREREQS) $(IDMAP_ADEX_OBJ)
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) $(IDMAP_ADEX_OBJ)
-
 bin/tdb2. at SHLIBEXT@: $(BINARY_PREREQS) winbindd/idmap_tdb2.o
 	@echo "Building plugin $@"
 	@$(SHLD_MODULE) winbindd/idmap_tdb2.o
@@ -2406,26 +2345,6 @@
 	@echo "Building plugin $@"
 	@$(SHLD_MODULE) $(VFS_AIO_FORK_OBJ)
 
-bin/acl_xattr. at SHLIBEXT@: $(BINARY_PREREQS) $(VFS_ACL_XATTR_OBJ)
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) $(VFS_ACL_XATTR_OBJ)
-
-bin/registry. at SHLIBEXT@: $(BINARY_PREREQS) libgpo/gpext/registry.o
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) libgpo/gpext/registry.o
-
-bin/scripts. at SHLIBEXT@: $(BINARY_PREREQS) libgpo/gpext/scripts.o
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) libgpo/gpext/scripts.o
-
-bin/smb_traffic_analyzer. at SHLIBEXT@: $(BINARY_PREREQS) $(VFS_SMB_TRAFFIC_ANALYZER_OBJ)
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) $(VFS_SMB_TRAFFIC_ANALYZER_OBJ)
-
-bin/security. at SHLIBEXT@: $(BINARY_PREREQS) libgpo/gpext/security.o
-	@echo "Building plugin $@"
-	@$(SHLD_MODULE) libgpo/gpext/security.o
-
 #########################################################
 ## IdMap NSS plugins
 
@@ -2492,12 +2411,6 @@
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(DYNEXP) script/tests/timelimit.o
 
-bin/rpc_open_tcp at EXEEXT@: $(BINARY_PREREQS) $(RPC_OPEN_TCP_OBJ) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
-	@echo "Linking $@"
-	@$(CC) $(FLAGS) -o $@ $(RPC_OPEN_TCP_OBJ) $(LDFLAGS) $(DYNEXP) \
-		$(LIBS) $(LIBTALLOC_LIBS) @LIBTDB_SHARED@ $(WINBIND_LIBS) \
-		$(LDAP_LIBS) $(KRB5LIBS) $(NSCD_LIBS)
-
 install:: installservers installbin @INSTALL_CIFSMOUNT@ @INSTALL_CIFSUPCALL@ installman \
 		installscripts installdat installmodules @SWAT_INSTALL_TARGETS@ \
 		@INSTALL_PAM_MODULES@ installlibs
@@ -2513,7 +2426,7 @@
 # is not used
 
 installdirs::
-	@$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(BINDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(PRIVATEDIR) $(PIDDIR) $(LOCKDIR) $(MANDIR) $(CODEPAGEDIR) $(MODULESDIR)
+	@$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(BINDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(PRIVATEDIR) $(PIDDIR) $(LOCKDIR) $(MANDIR)
 
 installservers:: all installdirs
 	@$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(SBINDIR) $(SBIN_PROGS)
@@ -2539,7 +2452,6 @@
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(NSSINFOLIBDIR) $(NSS_INFO_MODULES)
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
-	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(GPEXTLIBDIR) $(GPEXT_MODULES)
 	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam. at SHLIBEXT@ NDS_ldapsam. at SHLIBEXT@
 	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam. at SHLIBEXT@ NDS_ldapsam_compat. at SHLIBEXT@
 	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam. at SHLIBEXT@ ldapsam_compat. at SHLIBEXT@
@@ -2548,8 +2460,6 @@
 	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) domain. at SHLIBEXT@ trustdomain. at SHLIBEXT@ ntdomain. at SHLIBEXT@
 	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) builtin. at SHLIBEXT@ guest. at SHLIBEXT@ fixed_challenge. at SHLIBEXT@ name_to_ntstatus. at SHLIBEXT@
 	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(NSSINFOLIBDIR) ../idmap/ad. at SHLIBEXT@ rfc2307. at SHLIBEXT@ sfu. at SHLIBEXT@ sfu20. at SHLIBEXT@
-	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(NSSINFOLIBDIR) ../idmap/adex. at SHLIBEXT@ adex. at SHLIBEXT@
-	@$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(NSSINFOLIBDIR) ../idmap/hash. at SHLIBEXT@ hash. at SHLIBEXT@
 
 installscripts:: installdirs
 	@$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS_BIN) $(DESTDIR)$(BINDIR) $(SCRIPTS)
@@ -2587,7 +2497,6 @@
 	@echo "  bindir:      $(BINDIR)"
 	@echo "  sbindir:     $(SBINDIR)"
 	@echo "  libdir:      $(LIBDIR)"
-	@echo "  modulesdir:  $(MODULESDIR)"
 	@echo "  vardir:      $(VARDIR)"
 	@echo "  mandir:      $(MANDIR)"
 	@echo "  privatedir:  $(PRIVATE_DIR)"
@@ -2595,7 +2504,6 @@
 	@echo "  lockdir:     $(LOCKDIR)"
 	@echo "  piddir:      $(PIDDIR)"
 	@echo "  swatdir:     $(SWATDIR)"
-	@echo "  codepagedir: $(CODEPAGEDIR)"
 
 
 uninstall:: uninstallman uninstallservers uninstallbin @UNINSTALL_CIFSMOUNT@ @UNINSTALL_CIFSUPCALL@ uninstallscripts uninstalldat uninstallswat uninstallmodules uninstalllibs @UNINSTALL_PAM_MODULES@
@@ -2622,7 +2530,6 @@
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
-	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(GPEXTLIBDIR) $(GPEXT_MODULES)
 
 uninstallscripts::
 	@$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS_BIN) $(DESTDIR)$(BINDIR) $(SCRIPTS)
@@ -2645,9 +2552,7 @@
 # Toplevel clean files
 TOPFILES=dynconfig.o
 
-clean:: cleanlibs
-	-rm -f include/build_env.h
-	-rm -f smbd/build_options.c
+clean:: delheaders cleanlibs
 	-rm -f $(PRECOMPILED_HEADER)
 	-rm -f core */*~ *~ \
 		*/*.o */*/*.o */*/*/*.o \
@@ -2657,29 +2562,102 @@
 		$(MODULES) $(TORTURE_PROGS) \
 		$(EVERYTHING_PROGS) \
 		bin/timelimit \
-		.headers.stamp */src/*.o
+		.headers.stamp */src/*.o proto_exists
 	-rm -rf t_dir
 
+# Making this target will just make sure that the prototype files
+# exist, not necessarily that they are up to date.  Since they're
+# removed by "make clean" this will always be run when you do anything
+# afterwards.
+proto_exists:: include/proto.h include/build_env.h \
+	winbindd/winbindd_proto.h web/swat_proto.h \
+	libnet/libnet_proto.h \
+	client/client_proto.h utils/net_proto.h utils/ntlm_auth_proto.h smbd/build_options.c
+	@touch proto_exists
+
+delheaders::
+	@echo Removing prototype headers
+	@rm -f include/proto.h include/build_env.h \
+		winbindd/winbindd_proto.h web/swat_proto.h \
+		client/client_proto.h utils/net_proto.h \
+		smbd/build_options.c utils/ntlm_auth_proto.h \
+		utils/passwd_proto.h libnet/libnet_proto.h
+
+MKPROTO_SH = $(srcdir)/script/mkproto.sh
+
+include/proto.h: smbd/build_options.c
+	@echo Building include/proto.h
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _PROTO_H_ $(builddir)/include/proto.h \
+	  $(PROTO_OBJ)
+
 include/build_env.h: script/build_env.sh
 	@echo Building include/build_env.h
 	@$(SHELL) $(srcdir)/script/build_env.sh $(srcdir) $(builddir) $(CC) \
 	  > $(builddir)/include/build_env.h
 
-proto::
-	@echo
-	@echo "NOTE: 'proto' is no longer a valid make target as proto.h"
-	@echo "and other prototype headers are not generated anymore."
-	@echo
+winbindd/winbindd_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _WINBINDD_PROTO_H_ $(builddir)/winbindd/winbindd_proto.h \
+	  $(WINBINDD_OBJ1)
 
-.PHONY: proto
+web/swat_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _SWAT_PROTO_H_ $(builddir)/web/swat_proto.h \
+	  $(SWAT_OBJ1)
 
+client/client_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _CLIENT_PROTO_H_ $(builddir)/client/client_proto.h \
+	  $(CLIENT_OBJ1)
+
+utils/net_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _NET_PROTO_H_ $(builddir)/utils/net_proto.h \
+	  $(NET_OBJ1)
+
+utils/passwd_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _PASSWD_PROTO_H_ $(builddir)/utils/passwd_proto.h \
+	  $(PASSWD_UTIL_OBJ)
+
+utils/ntlm_auth_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _NTLM_AUTH_PROTO_H_ $(builddir)/utils/ntlm_auth_proto.h \
+	  $(NTLM_AUTH_OBJ1)
+
+libnet/libnet_proto.h:
+	@cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \
+	  -h _LIBNET_PROTO_H_ $(builddir)/libnet/libnet_proto.h \
+	  $(LIBNET_OBJ)
+
+# "make headers" or "make proto" calls a subshell because we need to
+# make sure these commands are executed in sequence even for a
+# parallel make.
+headers::
+	$(MAKE) delheaders; \
+	$(MAKE) smbd/build_options.c; \
+	$(MAKE) include/proto.h; \
+	$(MAKE) include/build_env.h; \
+	$(MAKE) winbindd/winbindd_proto.h; \
+	$(MAKE) web/swat_proto.h; \
+	$(MAKE) client/client_proto.h; \
+	$(MAKE) utils/ntlm_auth_proto.h; \
+	$(MAKE) utils/net_proto.h; \
+	$(MAKE) utils/passwd_proto.h; \
+	$(MAKE) libnet/libnet_proto.h;
+
+proto:: headers
+
+.PHONY: headers proto
+
 etags:
 	etags `find $(srcdir) -name "*.[ch]" | grep -v /.svn/`
 
 ctags:
 	ctags `find $(srcdir) -name "*.[ch]" | grep -v /.svn/`
 
-realclean:: clean
+realclean:: clean delheaders
 	-rm -f config.log bin/.dummy script/findsmb script/gen-8bit-gap.sh
 	-rm -f script/installbin.sh script/uninstallbin.sh
 
@@ -2760,14 +2738,3 @@
 	 SMBD_VALGRIND="xterm -n smbd -e valgrind -q --db-attach=yes --num-callers=30" \
 	 VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \
 	 PERL="$(PERL)" $(srcdir)/script/tests/selftest.sh ${selftest_prefix} all "${smbtorture4_path}"
-
-
-##
-## Examples:
-##
-
-libsmbclient_examples:
-	$(MAKE) -C ../examples/libsmbclient -f Makefile.internal
-
-clean_libsmbclient_examples:
-	$(MAKE) -C ../examples/libsmbclient -f Makefile.internal clean

Modified: branches/samba/upstream/source/VERSION
===================================================================
--- branches/samba/upstream/source/VERSION	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/VERSION	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,8 +24,8 @@
 #  ->  "3.0.0"                                         #
 ########################################################
 SAMBA_VERSION_MAJOR=3
-SAMBA_VERSION_MINOR=3
-SAMBA_VERSION_RELEASE=0
+SAMBA_VERSION_MINOR=2
+SAMBA_VERSION_RELEASE=4
 
 ########################################################
 # Bug fix releases use a letter for the patch revision #
@@ -46,7 +46,7 @@
 # e.g. SAMBA_VERSION_PRE_RELEASE=1                     #
 #  ->  "2.2.9pre1"                                     #
 ########################################################
-SAMBA_VERSION_PRE_RELEASE=2
+SAMBA_VERSION_PRE_RELEASE=
 
 ########################################################
 # For 'rc' releases the version will be                #
@@ -72,6 +72,8 @@
 
 ########################################################
 # This can be set by vendors if they want...           #
+# This can be a string constant or a function which    #
+# returns a string (const char *)                      #
 #                                                      #
 # <MAJOR>.<MINOR>.<RELEASE>[...]-<VENDOR_SUFFIX>       #
 #                                                      #
@@ -80,26 +82,18 @@
 # e.g. SAMBA_VERSION_VENDOR_SUFFIX="VendorVersion"     #
 #  ->  "CVS 3.0.0rc2-VendorVersion"                    #
 #                                                      #
-# Note: If you want to use a function, take a look at  #
-#       SAMBA_VERSION_VENDOR_FUNCTION                  #
+# Note: If you want to use a function,                 #
+#       then patch lib/version.c and add this function #
+#       there, because the symbol must be available in #
+#       binary.                                        #
 #                                                      #
-########################################################
-SAMBA_VERSION_VENDOR_SUFFIX=
-SAMBA_VERSION_VENDOR_PATCH=
-
-########################################################
-# This can be set by vendors if they want..            #
-# This have to be a function which returns a string    #
-# (const char *).                                      #
-#                                                      #
-# Patch for example lib/version.c and add something    #
-# like the following example:                          #
-#                                                      #
-# const char *samba_vendor_version(void)               #
+# const char *vendor_version(void)                     #
 # {                                                    #
-#   return SAMBA_VERSION_OFFICIAL_STRING "-ENREDO-1.0" #
+#	return "VendorVersion";                        #
 # }                                                    #
 #                                                      #
-# -> "Version 3.2.0-ENREDO-1.0                         #
+# e.g. SAMBA_VERSION_VENDOR_SUFFIX=vendor_version()    #
+#  ->  "CVS 3.0.0rc2-VendorVersion"                    #
 ########################################################
-SAMBA_VERSION_VENDOR_FUNCTION=
+SAMBA_VERSION_VENDOR_SUFFIX=
+SAMBA_VERSION_VENDOR_PATCH=

Modified: branches/samba/upstream/source/auth/auth_builtin.c
===================================================================
--- branches/samba/upstream/source/auth/auth_builtin.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_builtin.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -42,7 +42,7 @@
 
 	if (!(user_info->internal_username 
 	      && *user_info->internal_username)) {
-		nt_status = make_server_info_guest(NULL, server_info);
+		nt_status = make_server_info_guest(server_info);
 	}
 
 	return nt_status;

Modified: branches/samba/upstream/source/auth/auth_domain.c
===================================================================
--- branches/samba/upstream/source/auth/auth_domain.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_domain.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -109,15 +109,13 @@
 	/* open the netlogon pipe. */
 	if (lp_client_schannel()) {
 		/* We also setup the creds chain in the open_schannel call. */
-		result = cli_rpc_pipe_open_schannel(
-			*cli, &ndr_table_netlogon.syntax_id,
-			PIPE_AUTH_LEVEL_PRIVACY, domain, &netlogon_pipe);
+		netlogon_pipe = cli_rpc_pipe_open_schannel(*cli, PI_NETLOGON,
+					PIPE_AUTH_LEVEL_PRIVACY, domain, &result);
 	} else {
-		result = cli_rpc_pipe_open_noauth(
-			*cli, &ndr_table_netlogon.syntax_id, &netlogon_pipe);
+		netlogon_pipe = cli_rpc_pipe_open_noauth(*cli, PI_NETLOGON, &result);
 	}
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if(!netlogon_pipe) {
 		DEBUG(0,("connect_to_domain_password_server: unable to open the domain client session to \
 machine %s. Error was : %s.\n", dc_name, nt_errstr(result)));
 		cli_shutdown(*cli);
@@ -272,7 +270,9 @@
 						info3);
 
 		if (NT_STATUS_IS_OK(nt_status)) {
-			(*server_info)->nss_token |= user_info->was_mapped;
+			if (user_info->was_mapped) {
+				(*server_info)->was_mapped = user_info->was_mapped;
+			}
 
 			if ( ! (*server_info)->guest) {
 				/* if a real user check pam account restrictions */

Modified: branches/samba/upstream/source/auth/auth_ntlmssp.c
===================================================================
--- branches/samba/upstream/source/auth/auth_ntlmssp.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_ntlmssp.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -122,7 +122,7 @@
 		return nt_status;
 	}
 
-	auth_ntlmssp_state->server_info->nss_token |= username_was_mapped;
+	auth_ntlmssp_state->server_info->was_mapped |= username_was_mapped;
 
 	nt_status = create_local_token(auth_ntlmssp_state->server_info);
 

Modified: branches/samba/upstream/source/auth/auth_sam.c
===================================================================
--- branches/samba/upstream/source/auth/auth_sam.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_sam.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -368,7 +368,7 @@
 				 lm_sess_key.length);
 	data_blob_free(&lm_sess_key);
 
-	(*server_info)->nss_token |= user_info->was_mapped;
+	(*server_info)->was_mapped |= user_info->was_mapped;
 
 	return nt_status;
 }

Modified: branches/samba/upstream/source/auth/auth_server.c
===================================================================
--- branches/samba/upstream/source/auth/auth_server.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_server.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -37,7 +37,7 @@
 	const char *p;
 	char *pserver = NULL;
 	bool connected_ok = False;
-	struct named_mutex *mutex = NULL;
+	struct named_mutex *mutex;
 
 	if (!(cli = cli_initialise()))
 		return NULL;

Modified: branches/samba/upstream/source/auth/auth_util.c
===================================================================
--- branches/samba/upstream/source/auth/auth_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -508,19 +508,11 @@
 	   which may save us from giving away root access if there
 	   is a bug in allocating these fields. */
 
-	result->utok.uid = -1;
-	result->utok.gid = -1;
+	result->uid = -1;
+	result->gid = -1;
 	return result;
 }
 
-static char *sanitize_username(TALLOC_CTX *mem_ctx, const char *username)
-{
-	fstring tmp;
-
-	alpha_strcpy(tmp, username, ". _-$", sizeof(tmp));
-	return talloc_strdup(mem_ctx, tmp);
-}
-
 /***************************************************************************
  Is the incoming username our own machine account ?
  If so, the connection is almost certainly from winbindd.
@@ -578,18 +570,11 @@
 	result->unix_name = pwd->pw_name;
 	/* Ensure that we keep pwd->pw_name, because we will free pwd below */
 	talloc_steal(result, pwd->pw_name);
-	result->utok.gid = pwd->pw_gid;
-	result->utok.uid = pwd->pw_uid;
+	result->gid = pwd->pw_gid;
+	result->uid = pwd->pw_uid;
 
 	TALLOC_FREE(pwd);
 
-	result->sanitized_username = sanitize_username(result,
-						       result->unix_name);
-	if (result->sanitized_username == NULL) {
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
-
 	if (IS_DC && is_our_machine_account(username)) {
 		/*
 		 * Ensure for a connection from our own
@@ -669,44 +654,39 @@
 	return NT_STATUS_OK;
 }
 
-static NTSTATUS log_nt_token(NT_USER_TOKEN *token)
+static NTSTATUS log_nt_token(TALLOC_CTX *tmp_ctx, NT_USER_TOKEN *token)
 {
-	TALLOC_CTX *frame = talloc_stackframe();
 	char *command;
 	char *group_sidstr;
 	size_t i;
 
 	if ((lp_log_nt_token_command() == NULL) ||
 	    (strlen(lp_log_nt_token_command()) == 0)) {
-		TALLOC_FREE(frame);
 		return NT_STATUS_OK;
 	}
 
-	group_sidstr = talloc_strdup(frame, "");
+	group_sidstr = talloc_strdup(tmp_ctx, "");
 	for (i=1; i<token->num_sids; i++) {
 		group_sidstr = talloc_asprintf(
-			frame, "%s %s", group_sidstr,
-			sid_string_talloc(frame, &token->user_sids[i]));
+			tmp_ctx, "%s %s", group_sidstr,
+			sid_string_talloc(tmp_ctx, &token->user_sids[i]));
 	}
 
 	command = talloc_string_sub(
-		frame, lp_log_nt_token_command(),
-		"%s", sid_string_talloc(frame, &token->user_sids[0]));
-	command = talloc_string_sub(frame, command, "%t", group_sidstr);
+		tmp_ctx, lp_log_nt_token_command(),
+		"%s", sid_string_talloc(tmp_ctx, &token->user_sids[0]));
+	command = talloc_string_sub(tmp_ctx, command, "%t", group_sidstr);
 
 	if (command == NULL) {
-		TALLOC_FREE(frame);
 		return NT_STATUS_NO_MEMORY;
 	}
 
 	DEBUG(8, ("running command: [%s]\n", command));
 	if (smbrun(command, NULL) != 0) {
 		DEBUG(0, ("Could not log NT token\n"));
-		TALLOC_FREE(frame);
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
-	TALLOC_FREE(frame);
 	return NT_STATUS_OK;
 }
 
@@ -717,9 +697,17 @@
 
 NTSTATUS create_local_token(auth_serversupplied_info *server_info)
 {
+	TALLOC_CTX *mem_ctx;
 	NTSTATUS status;
 	size_t i;
+	
 
+	mem_ctx = talloc_new(NULL);
+	if (mem_ctx == NULL) {
+		DEBUG(0, ("talloc_new failed\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
 	/*
 	 * If winbind is not around, we can not make much use of the SIDs the
 	 * domain controller provided us with. Likewise if the user name was
@@ -727,15 +715,15 @@
 	 */
 
 	if (((lp_server_role() == ROLE_DOMAIN_MEMBER) && !winbind_ping()) ||
-	    (server_info->nss_token)) {
+	    (server_info->was_mapped)) {
 		status = create_token_from_username(server_info,
 						    server_info->unix_name,
 						    server_info->guest,
-						    &server_info->utok.uid,
-						    &server_info->utok.gid,
+						    &server_info->uid,
+						    &server_info->gid,
 						    &server_info->unix_name,
 						    &server_info->ptok);
-
+		
 	} else {
 		server_info->ptok = create_local_nt_token(
 			server_info,
@@ -747,13 +735,14 @@
 	}
 
 	if (!NT_STATUS_IS_OK(status)) {
+		TALLOC_FREE(mem_ctx);
 		return status;
 	}
-
+	
 	/* Convert the SIDs to gids. */
 
-	server_info->utok.ngroups = 0;
-	server_info->utok.groups = NULL;
+	server_info->n_groups = 0;
+	server_info->groups = NULL;
 
 	/* Start at index 1, where the groups start. */
 
@@ -766,14 +755,15 @@
 				   "ignoring it\n", sid_string_dbg(sid)));
 			continue;
 		}
-		add_gid_to_array_unique(server_info, gid,
-					&server_info->utok.groups,
-					&server_info->utok.ngroups);
+		add_gid_to_array_unique(server_info, gid, &server_info->groups,
+					&server_info->n_groups);
 	}
-
+	
 	debug_nt_user_token(DBGC_AUTH, 10, server_info->ptok);
 
-	status = log_nt_token(server_info->ptok);
+	status = log_nt_token(mem_ctx, server_info->ptok);
+
+	TALLOC_FREE(mem_ctx);
 	return status;
 }
 
@@ -1074,8 +1064,9 @@
 	return user_in_group_sid(username, &group_sid);
 }
 
+
 /***************************************************************************
- Make (and fill) a server_info struct from a 'struct passwd' by conversion
+ Make (and fill) a user_info struct from a 'struct passwd' by conversion 
  to a struct samu
 ***************************************************************************/
 
@@ -1108,20 +1099,10 @@
 	}
 
 	result->sam_account = sampass;
-
 	result->unix_name = talloc_strdup(result, unix_username);
-	result->sanitized_username = sanitize_username(result, unix_username);
+	result->uid = pwd->pw_uid;
+	result->gid = pwd->pw_gid;
 
-	if ((result->unix_name == NULL)
-	    || (result->sanitized_username == NULL)) {
-		TALLOC_FREE(sampass);
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->utok.uid = pwd->pw_uid;
-	result->utok.gid = pwd->pw_gid;
-
 	status = pdb_enum_group_memberships(result, sampass,
 					    &result->sids, &gids,
 					    &result->num_sids);
@@ -1207,7 +1188,6 @@
 	DOM_SID guest_sid;
 	bool ret;
 	char zeros[16];
-	fstring tmp;
 
 	if ( !(sampass = samu_new( NULL )) ) {
 		return NT_STATUS_NO_MEMORY;
@@ -1246,73 +1226,27 @@
 	(*server_info)->user_session_key = data_blob(zeros, sizeof(zeros));
 	(*server_info)->lm_session_key = data_blob(zeros, sizeof(zeros));
 
-	alpha_strcpy(tmp, pdb_get_username(sampass), ". _-$", sizeof(tmp));
-	(*server_info)->sanitized_username = talloc_strdup(*server_info, tmp);
-
 	return NT_STATUS_OK;
 }
 
-/****************************************************************************
-  Fake a auth_serversupplied_info just from a username
-****************************************************************************/
-
-NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx,
-				       const char *username,
-				       bool is_guest,
-				       struct auth_serversupplied_info **presult)
+static auth_serversupplied_info *copy_serverinfo(auth_serversupplied_info *src)
 {
-	struct auth_serversupplied_info *result;
-	struct passwd *pwd;
-	NTSTATUS status;
-
-	pwd = getpwnam_alloc(talloc_tos(), username);
-	if (pwd == NULL) {
-		return NT_STATUS_NO_SUCH_USER;
-	}
-
-	status = make_server_info_pw(&result, pwd->pw_name, pwd);
-
-	TALLOC_FREE(pwd);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	result->nss_token = true;
-	result->guest = is_guest;
-
-	status = create_local_token(result);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		TALLOC_FREE(result);
-		return status;
-	}
-
-	*presult = result;
-	return NT_STATUS_OK;
-}
-
-
-struct auth_serversupplied_info *copy_serverinfo(TALLOC_CTX *mem_ctx,
-						 auth_serversupplied_info *src)
-{
 	auth_serversupplied_info *dst;
 
-	dst = make_server_info(mem_ctx);
+	dst = make_server_info(NULL);
 	if (dst == NULL) {
 		return NULL;
 	}
 
 	dst->guest = src->guest;
-	dst->utok.uid = src->utok.uid;
-	dst->utok.gid = src->utok.gid;
-	dst->utok.ngroups = src->utok.ngroups;
-	if (src->utok.ngroups != 0) {
-		dst->utok.groups = (gid_t *)TALLOC_MEMDUP(
-			dst, src->utok.groups,
-			sizeof(gid_t)*dst->utok.ngroups);
+	dst->uid = src->uid;
+	dst->gid = src->gid;
+	dst->n_groups = src->n_groups;
+	if (src->n_groups != 0) {
+		dst->groups = (gid_t *)TALLOC_MEMDUP(
+			dst, src->groups, sizeof(gid_t)*dst->n_groups);
 	} else {
-		dst->utok.groups = NULL;
+		dst->groups = NULL;
 	}
 
 	if (src->ptok) {
@@ -1347,31 +1281,9 @@
 		return NULL;
 	}
 
-	dst->sanitized_username = talloc_strdup(dst, src->sanitized_username);
-	if (!dst->sanitized_username) {
-		TALLOC_FREE(dst);
-		return NULL;
-	}
-
 	return dst;
 }
 
-/*
- * Set a new session key. Used in the rpc server where we have to override the
- * SMB level session key with SystemLibraryDTC
- */
-
-bool server_info_set_session_key(struct auth_serversupplied_info *info,
-				 DATA_BLOB session_key)
-{
-	TALLOC_FREE(info->user_session_key.data);
-
-	info->user_session_key = data_blob_talloc(
-		info, session_key.data, session_key.length);
-
-	return (info->user_session_key.data != NULL);
-}
-
 static auth_serversupplied_info *guest_info = NULL;
 
 bool init_guest_info(void)
@@ -1382,10 +1294,9 @@
 	return NT_STATUS_IS_OK(make_new_server_info_guest(&guest_info));
 }
 
-NTSTATUS make_server_info_guest(TALLOC_CTX *mem_ctx,
-				auth_serversupplied_info **server_info)
+NTSTATUS make_server_info_guest(auth_serversupplied_info **server_info)
 {
-	*server_info = copy_serverinfo(mem_ctx, guest_info);
+	*server_info = copy_serverinfo(guest_info);
 	return (*server_info != NULL) ? NT_STATUS_OK : NT_STATUS_NO_MEMORY;
 }
 
@@ -1416,6 +1327,39 @@
 	return True;
 }
 
+bool set_current_user_guest(struct current_user *dst)
+{
+	gid_t *groups;
+	NT_USER_TOKEN *nt_token;
+
+	groups = (gid_t *)memdup(guest_info->groups,
+				 sizeof(gid_t) * guest_info->n_groups);
+	if (groups == NULL) {
+		return False;
+	}
+
+	nt_token = dup_nt_token(NULL, guest_info->ptok);
+	if (nt_token == NULL) {
+		SAFE_FREE(groups);
+		return False;
+	}
+
+	TALLOC_FREE(dst->nt_user_token);
+	SAFE_FREE(dst->ut.groups);
+
+	/* dst->conn is never really dereferenced, it's only tested for
+	 * equality in uid.c */
+	dst->conn = NULL;
+
+	dst->vuid = UID_FIELD_INVALID;
+	dst->ut.uid = guest_info->uid;
+	dst->ut.gid = guest_info->gid;
+	dst->ut.ngroups = guest_info->n_groups;
+	dst->ut.groups = groups;
+	dst->nt_user_token = nt_token;
+	return True;
+}
+
 /***************************************************************************
  Purely internal function for make_server_info_info3
  Fill the sam account from getpwnam
@@ -1636,7 +1580,7 @@
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		TALLOC_FREE( sam_account );
 		if ( lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_UID ) {
-			make_server_info_guest(NULL, server_info);
+		 	make_server_info_guest(server_info); 
 			return NT_STATUS_OK;
 		}
 		return nt_status;
@@ -1744,17 +1688,10 @@
 	result->sam_account = sam_account;
 	result->unix_name = talloc_strdup(result, found_username);
 
-	result->sanitized_username = sanitize_username(result,
-						       result->unix_name);
-	if (result->sanitized_username == NULL) {
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
-
 	/* Fill in the unix info we found on the way */
 
-	result->utok.uid = uid;
-	result->utok.gid = gid;
+	result->uid = uid;
+	result->gid = gid;
 
 	/* Create a 'combined' list of all SIDs we might want in the SD */
 
@@ -1796,7 +1733,7 @@
 			sizeof(info3->base.LMSessKey.key));
 	}
 
-	result->nss_token |= username_was_mapped;
+	result->was_mapped = username_was_mapped;
 
 	*server_info = result;
 
@@ -1898,7 +1835,7 @@
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		TALLOC_FREE( result );
 		if ( lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_UID ) {
-			make_server_info_guest(NULL, server_info);
+			make_server_info_guest(server_info);
 			return NT_STATUS_OK;
 		}
 		return nt_status;
@@ -1989,21 +1926,12 @@
 	result->sam_account = sam_account;
 	result->unix_name = talloc_strdup(result, found_username);
 
-	result->sanitized_username = sanitize_username(result,
-						       result->unix_name);
 	result->login_server = talloc_strdup(result, info->logon_server);
 
-	if ((result->unix_name == NULL)
-	    || (result->sanitized_username == NULL)
-	    || (result->login_server == NULL)) {
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
-
 	/* Fill in the unix info we found on the way */
 
-	result->utok.uid = uid;
-	result->utok.gid = gid;
+	result->uid = uid;
+	result->gid = gid;
 
 	/* Create a 'combined' list of all SIDs we might want in the SD */
 
@@ -2041,7 +1969,7 @@
 			sizeof(info->lm_session_key));
 	}
 
-	result->nss_token |= username_was_mapped;
+	result->was_mapped = username_was_mapped;
 
 	*server_info = result;
 

Modified: branches/samba/upstream/source/auth/auth_winbind.c
===================================================================
--- branches/samba/upstream/source/auth/auth_winbind.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/auth_winbind.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -120,7 +120,9 @@
 		return nt_status;
 	}
 
-	(*server_info)->nss_token |= user_info->was_mapped;
+	if (user_info->was_mapped) {
+		(*server_info)->was_mapped = user_info->was_mapped;
+	}
 
         return nt_status;
 }

Modified: branches/samba/upstream/source/auth/pampass.c
===================================================================
--- branches/samba/upstream/source/auth/pampass.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/pampass.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -63,7 +63,6 @@
  *  Macros to help make life easy
  */
 #define COPY_STRING(s) (s) ? SMB_STRDUP(s) : NULL
-#define COPY_FSTRING(s) (s[0]) ? SMB_STRDUP(s) : NULL
 
 /*******************************************************************
  PAM error handler.
@@ -328,7 +327,7 @@
 					DEBUG(100,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: We actualy sent: %s\n", current_reply));
 #endif
 					reply[replies].resp_retcode = PAM_SUCCESS;
-					reply[replies].resp = COPY_FSTRING(current_reply);
+					reply[replies].resp = COPY_STRING(current_reply);
 					found = True;
 					break;
 				}
@@ -356,7 +355,7 @@
 					DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: We sent: %s\n", current_reply));
 					pwd_sub(current_reply, udp->PAM_username, udp->PAM_password, udp->PAM_newpassword);
 					reply[replies].resp_retcode = PAM_SUCCESS;
-					reply[replies].resp = COPY_FSTRING(current_reply);
+					reply[replies].resp = COPY_STRING(current_reply);
 #ifdef DEBUG_PASSWORD
 					DEBUG(100,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: We actualy sent: %s\n", current_reply));
 #endif

Modified: branches/samba/upstream/source/auth/token_util.c
===================================================================
--- branches/samba/upstream/source/auth/token_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/auth/token_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -165,8 +165,7 @@
 /*******************************************************************
 *******************************************************************/
 
-static NTSTATUS add_builtin_administrators(struct nt_user_token *token,
-					   const DOM_SID *dom_sid)
+static NTSTATUS add_builtin_administrators( struct nt_user_token *token )
 {
 	DOM_SID domadm;
 	NTSTATUS status;
@@ -182,7 +181,8 @@
 	if ( IS_DC ) {
 		sid_copy( &domadm, get_global_sam_sid() );
 	} else {
-		sid_copy(&domadm, dom_sid);
+		if ( !secrets_fetch_domain_sid( lp_workgroup(), &domadm ) )
+			return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
 	}
 	sid_append_rid( &domadm, DOMAIN_GROUP_RID_ADMINS );
 
@@ -200,74 +200,15 @@
 	return NT_STATUS_OK;
 }
 
-/**
- * Create the requested BUILTIN if it doesn't already exist.  This requires
- * winbindd to be running.
- *
- * @param[in] rid BUILTIN rid to create
- * @return Normal NTSTATUS return.
- */
-static NTSTATUS create_builtin(uint32 rid)
-{
-	NTSTATUS status = NT_STATUS_OK;
-	DOM_SID sid;
-	gid_t gid;
-
-	if (!sid_compose(&sid, &global_sid_Builtin, rid)) {
-		return NT_STATUS_NO_SUCH_ALIAS;
-	}
-
-	if (!sid_to_gid(&sid, &gid)) {
-		if (!lp_winbind_nested_groups() || !winbind_ping()) {
-			return NT_STATUS_PROTOCOL_UNREACHABLE;
-		}
-		status = pdb_create_builtin_alias(rid);
-	}
-	return status;
-}
-
-/**
- * Add sid as a member of builtin_sid.
- *
- * @param[in] builtin_sid	An existing builtin group.
- * @param[in] dom_sid		sid to add as a member of builtin_sid.
- * @return Normal NTSTATUS return
- */
-static NTSTATUS add_sid_to_builtin(const DOM_SID *builtin_sid,
-				   const DOM_SID *dom_sid)
-{
-	NTSTATUS status = NT_STATUS_OK;
-
-	if (!dom_sid || !builtin_sid) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	status = pdb_add_aliasmem(builtin_sid, dom_sid);
-
-	if (NT_STATUS_EQUAL(status, NT_STATUS_MEMBER_IN_ALIAS)) {
-		DEBUG(5, ("add_sid_to_builtin %s is already a member of %s\n",
-			  sid_string_dbg(dom_sid),
-			  sid_string_dbg(builtin_sid)));
-		return NT_STATUS_OK;
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(4, ("add_sid_to_builtin %s could not be added to %s: "
-			  "%s\n", sid_string_dbg(dom_sid),
-			  sid_string_dbg(builtin_sid), nt_errstr(status)));
-	}
-	return status;
-}
-
 /*******************************************************************
 *******************************************************************/
 
-NTSTATUS create_builtin_users(const DOM_SID *dom_sid)
+static NTSTATUS create_builtin_users( void )
 {
 	NTSTATUS status;
 	DOM_SID dom_users;
 
-	status = create_builtin(BUILTIN_ALIAS_RID_USERS);
+	status = pdb_create_builtin_alias( BUILTIN_ALIAS_RID_USERS );
 	if ( !NT_STATUS_IS_OK(status) ) {
 		DEBUG(5,("create_builtin_users: Failed to create Users\n"));
 		return status;
@@ -275,19 +216,24 @@
 
 	/* add domain users */
 	if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER))
-		&& sid_compose(&dom_users, dom_sid, DOMAIN_GROUP_RID_USERS))
+		&& secrets_fetch_domain_sid(lp_workgroup(), &dom_users))
 	{
-		status = add_sid_to_builtin(&global_sid_Builtin_Users,
-					    &dom_users);
+		sid_append_rid(&dom_users, DOMAIN_GROUP_RID_USERS );
+		status = pdb_add_aliasmem( &global_sid_Builtin_Users, &dom_users);
+		if ( !NT_STATUS_IS_OK(status) ) {
+			DEBUG(4,("create_builtin_administrators: Failed to add Domain Users to"
+				" Users\n"));
+			return status;
+		}
 	}
 
-	return status;
+	return NT_STATUS_OK;
 }
 
 /*******************************************************************
 *******************************************************************/
 
-NTSTATUS create_builtin_administrators(const DOM_SID *dom_sid)
+static NTSTATUS create_builtin_administrators( void )
 {
 	NTSTATUS status;
 	DOM_SID dom_admins, root_sid;
@@ -296,7 +242,7 @@
 	TALLOC_CTX *ctx;
 	bool ret;
 
-	status = create_builtin(BUILTIN_ALIAS_RID_ADMINS);
+	status = pdb_create_builtin_alias( BUILTIN_ALIAS_RID_ADMINS );
 	if ( !NT_STATUS_IS_OK(status) ) {
 		DEBUG(5,("create_builtin_administrators: Failed to create Administrators\n"));
 		return status;
@@ -304,11 +250,13 @@
 
 	/* add domain admins */
 	if ((IS_DC || (lp_server_role() == ROLE_DOMAIN_MEMBER))
-		&& sid_compose(&dom_admins, dom_sid, DOMAIN_GROUP_RID_ADMINS))
+		&& secrets_fetch_domain_sid(lp_workgroup(), &dom_admins))
 	{
-		status = add_sid_to_builtin(&global_sid_Builtin_Administrators,
-					    &dom_admins);
-		if (!NT_STATUS_IS_OK(status)) {
+		sid_append_rid(&dom_admins, DOMAIN_GROUP_RID_ADMINS);
+		status = pdb_add_aliasmem( &global_sid_Builtin_Administrators, &dom_admins );
+		if ( !NT_STATUS_IS_OK(status) ) {
+			DEBUG(4,("create_builtin_administrators: Failed to add Domain Admins"
+				" Administrators\n"));
 			return status;
 		}
 	}
@@ -323,11 +271,15 @@
 	TALLOC_FREE( ctx );
 
 	if ( ret ) {
-		status = add_sid_to_builtin(&global_sid_Builtin_Administrators,
-					    &root_sid);
+		status = pdb_add_aliasmem( &global_sid_Builtin_Administrators, &root_sid );
+		if ( !NT_STATUS_IS_OK(status) ) {
+			DEBUG(4,("create_builtin_administrators: Failed to add root"
+				" Administrators\n"));
+			return status;
+		}
 	}
 
-	return status;
+	return NT_STATUS_OK;
 }
 
 
@@ -345,7 +297,6 @@
 	int i;
 	NTSTATUS status;
 	gid_t gid;
-	DOM_SID dom_sid;
 
 	DEBUG(10, ("Create local NT token for %s\n",
 		   sid_string_dbg(user_sid)));
@@ -422,30 +373,27 @@
 	   be resolved then assume that the add_aliasmem( S-1-5-32 )
 	   handled it. */
 
-	if (!sid_to_gid(&global_sid_Builtin_Administrators, &gid)) {
+	if ( !sid_to_gid( &global_sid_Builtin_Administrators, &gid ) ) {
+		/* We can only create a mapping if winbind is running
+		   and the nested group functionality has been enabled */
 
-		become_root();
-		if (!secrets_fetch_domain_sid(lp_workgroup(), &dom_sid)) {
-			status = NT_STATUS_OK;
-			DEBUG(3, ("Failed to fetch domain sid for %s\n",
-				  lp_workgroup()));
-		} else {
-			status = create_builtin_administrators(&dom_sid);
+		if ( lp_winbind_nested_groups() && winbind_ping() ) {
+			become_root();
+			status = create_builtin_administrators( );
+			if ( !NT_STATUS_IS_OK(status) ) {
+				DEBUG(2,("WARNING: Failed to create BUILTIN\\Administrators "
+					 "group!  Can Winbind allocate gids?\n"));
+				/* don't fail, just log the message */
+			}
+			unbecome_root();
 		}
-		unbecome_root();
-
-		if (NT_STATUS_EQUAL(status, NT_STATUS_PROTOCOL_UNREACHABLE)) {
-			/* Add BUILTIN\Administrators directly to token. */
-			status = add_builtin_administrators(result, &dom_sid);
+		else {
+			status = add_builtin_administrators( result );
 			if ( !NT_STATUS_IS_OK(status) ) {
-				DEBUG(3, ("Failed to check for local "
-					  "Administrators membership (%s)\n",
-					  nt_errstr(status)));
+				/* just log a complaint but do not fail */
+				DEBUG(3,("create_local_nt_token: failed to check for local Administrators"
+					" membership (%s)\n", nt_errstr(status)));
 			}
-		} else if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(2, ("WARNING: Failed to create "
-				  "BUILTIN\\Administrators group!  Can "
-				  "Winbind allocate gids?\n"));
 		}
 	}
 
@@ -453,24 +401,20 @@
 	   be resolved then assume that the add_aliasmem( S-1-5-32 )
 	   handled it. */
 
-	if (!sid_to_gid(&global_sid_Builtin_Users, &gid)) {
+	if ( !sid_to_gid( &global_sid_Builtin_Users, &gid ) ) {
+		/* We can only create a mapping if winbind is running
+		   and the nested group functionality has been enabled */
 
-		become_root();
-		if (!secrets_fetch_domain_sid(lp_workgroup(), &dom_sid)) {
-			status = NT_STATUS_OK;
-			DEBUG(3, ("Failed to fetch domain sid for %s\n",
-				  lp_workgroup()));
-		} else {
-			status = create_builtin_users(&dom_sid);
+		if ( lp_winbind_nested_groups() && winbind_ping() ) {
+			become_root();
+			status = create_builtin_users( );
+			if ( !NT_STATUS_IS_OK(status) ) {
+				DEBUG(2,("WARNING: Failed to create BUILTIN\\Users group! "
+					 "Can Winbind allocate gids?\n"));
+				/* don't fail, just log the message */
+			}
+			unbecome_root();
 		}
-		unbecome_root();
-
-		if (!NT_STATUS_EQUAL(status, NT_STATUS_PROTOCOL_UNREACHABLE) &&
-		    !NT_STATUS_IS_OK(status))
-		{
-			DEBUG(2, ("WARNING: Failed to create BUILTIN\\Users group! "
-				  "Can Winbind allocate gids?\n"));
-		}
 	}
 
 	/* Deal with local groups */

Modified: branches/samba/upstream/source/autogen.sh
===================================================================
--- branches/samba/upstream/source/autogen.sh	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/autogen.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,9 +1,9 @@
 #!/bin/sh
 
-# Run this script to build samba from GIT.
+# Run this script to build samba from SVN.
 
 ## insert all possible names (only works with 
-## autoconf 2.x)
+## autoconf 2.x
 TESTAUTOHEADER="autoheader autoheader-2.53 autoheader2.50 autoheader259 autoheader253"
 TESTAUTOCONF="autoconf autoconf-2.53 autoconf2.50 autoconf259 autoconf253"
 
@@ -43,7 +43,7 @@
 ## do we have it?
 ##
 if test "$AUTOCONFFOUND" = "0" -o "$AUTOHEADERFOUND" = "0"; then
-	echo "$0: need autoconf 2.53 or later to build samba from GIT" >&2
+	echo "$0: need autoconf 2.53 or later to build samba from SVN" >&2
 	exit 1
 fi
 

Modified: branches/samba/upstream/source/client/client.c
===================================================================
--- branches/samba/upstream/source/client/client.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/client/client.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3634,10 +3634,9 @@
 	uint32_t total_entries = 0;
 	int i;
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc.syntax_id,
-					  &pipe_hnd);
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &status);
 
-	if (!NT_STATUS_IS_OK(status)) {
+	if (pipe_hnd == NULL) {
 		DEBUG(10, ("Could not connect to srvsvc pipe: %s\n",
 			   nt_errstr(status)));
 		TALLOC_FREE(frame);
@@ -3651,7 +3650,7 @@
 	info_ctr.ctr.ctr1 = &ctr1;
 
 	status = rpccli_srvsvc_NetShareEnumAll(pipe_hnd, frame,
-					      pipe_hnd->desthost,
+					      pipe_hnd->cli->desthost,
 					      &info_ctr,
 					      0xffffffff,
 					      &total_entries,
@@ -3659,7 +3658,7 @@
 					      &werr);
 
 	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(werr)) {
-		TALLOC_FREE(pipe_hnd);
+		cli_rpc_pipe_close(pipe_hnd);
 		TALLOC_FREE(frame);
 		return false;
 	}
@@ -3669,7 +3668,7 @@
 		browse_fn(info.name, info.type, info.comment, NULL);
 	}
 
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 	TALLOC_FREE(frame);
 	return true;
 }

Deleted: branches/samba/upstream/source/client/client_proto.h
===================================================================
--- branches/samba/upstream/source/client/client_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/client/client_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,52 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _CLIENT_PROTO_H_
-#define _CLIENT_PROTO_H_
-
-
-/* The following definitions come from client/client.c  */
-
-const char *client_get_cur_dir(void);
-const char *client_set_cur_dir(const char *newdir);
-void do_list(const char *mask,
-			uint16 attribute,
-			void (*fn)(file_info *, const char *dir),
-			bool rec,
-			bool dirs);
-int cmd_iosize(void);
-
-/* The following definitions come from client/clitar.c  */
-
-int cmd_block(void);
-int cmd_tarmode(void);
-int cmd_setmode(void);
-int cmd_tar(void);
-int process_tar(void);
-int tar_parseargs(int argc, char *argv[], const char *Optarg, int Optind);
-
-/* The following definitions come from client/dnsbrowse.c  */
-
-int do_smb_browse(void);
-int do_smb_browse(void);
-
-#endif /*  _CLIENT_PROTO_H_  */

Modified: branches/samba/upstream/source/client/mount.cifs.c
===================================================================
--- branches/samba/upstream/source/client/mount.cifs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/client/mount.cifs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -56,10 +56,6 @@
  #endif /* _SAMBA_BUILD_ */
 #endif /* MOUNT_CIFS_VENDOR_SUFFIX */
 
-#ifdef _SAMBA_BUILD_
-#include "include/config.h"
-#endif
-
 #ifndef MS_MOVE 
 #define MS_MOVE 8192 
 #endif 
@@ -98,8 +94,6 @@
 
 /* like strncpy but does not 0 fill the buffer and always null
  *    terminates. bufsize is the size of the destination buffer */
-
-#ifndef HAVE_STRLCPY
 static size_t strlcpy(char *d, const char *s, size_t bufsize)
 {
 	size_t len = strlen(s);
@@ -110,13 +104,10 @@
 	d[len] = 0;
 	return ret;
 }
-#endif
 
 /* like strncat but does not 0 fill the buffer and always null
  *    terminates. bufsize is the length of the buffer, which should
  *       be one more than the maximum resulting string length */
-
-#ifndef HAVE_STRLCAT
 static size_t strlcat(char *d, const char *s, size_t bufsize)
 {
 	size_t len1 = strlen(d);
@@ -135,7 +126,6 @@
 	}
 	return ret;
 }
-#endif
 
 /* BB finish BB
 
@@ -483,8 +473,7 @@
 			}
 		} else if (strncmp(data, "sec", 3) == 0) {
 			if (value) {
-				if (!strncmp(value, "none", 4) ||
-				    !strncmp(value, "krb5", 4))
+				if (!strcmp(value, "none"))
 					got_password = 1;
 			}
 		} else if (strncmp(data, "ip", 2) == 0) {
@@ -528,11 +517,8 @@
 				printf("CIFS: UNC name too long\n");
 				return 1;
 			}
-		} else if ((strncmp(data, "dom" /* domain */, 3) == 0)
-			   || (strncmp(data, "workg", 5) == 0)) {
-			/* note this allows for synonyms of "domain"
-			   such as "DOM" and "dom" and "workgroup"
-			   and "WORKGRP" etc. */
+		} else if ((strncmp(data, "domain", 3) == 0)
+			   || (strncmp(data, "workgroup", 5) == 0)) {
 			if (!value || !*value) {
 				printf("CIFS: invalid domain name\n");
 				return 1;	/* needs_arg; */

Modified: branches/samba/upstream/source/configure
===================================================================
--- branches/samba/upstream/source/configure	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/configure	2008-11-01 11:09:46 UTC (rev 2200)
@@ -680,7 +680,6 @@
 cachedir
 rootsbindir
 pammodulesdir
-modulesdir
 selftest_prefix
 smbtorture4_path
 CC
@@ -740,7 +739,6 @@
 KRB5_LIBS
 UUID_LIBS
 LDAP_LIBS
-GPEXT_LIBS
 PAM_MODULES
 INSTALL_PAM_MODULES
 UNINSTALL_PAM_MODULES
@@ -756,7 +754,7 @@
 EXTRA_ALL_TARGETS
 CONFIG_LIBS
 NSCD_LIBS
-DEFAULT_TEST_OPTIONS
+DEFAULT_TEST_TARGET
 HAVE_SOCKET_WRAPPER
 SOCKET_WRAPPER_OBJS
 HAVE_NSS_WRAPPER
@@ -780,7 +778,6 @@
 ROFF
 LIB_PATH_VAR
 SMB_FAM_LIBS
-FAKE_KASERVER_OBJ
 SMBLDAP
 SMBLDAPUTIL
 LDBLDAP
@@ -863,8 +860,6 @@
 AUTH_MODULES
 VFS_STATIC
 VFS_MODULES
-GPEXT_STATIC
-GPEXT_MODULES
 DEVELOPER_CFLAGS
 SMBD_LIBS
 LTLIBOBJS'
@@ -1458,8 +1453,6 @@
                           (default=no)
   --enable-krb5developer  Turn on developer warnings and debugging, except
                           -Wstrict-prototypes (default=no)
-  --enable-picky-developer
-                          Halt compilation on warnings
   --disable-largefile     omit support for large files
   --enable-socket-wrapper         Turn on socket wrapper library (default=no)
   --enable-nss-wrapper         Turn on nss wrapper library (default=no)
@@ -1491,7 +1484,7 @@
   --with-configdir=DIR    Where to put configuration files ($libdir)
   --with-logfilebase=DIR  Where to put log files ($VARDIR)
   --with-ctdb=DIR         Where to find ctdb sources
-  --with-modulesdir=DIR   Where to put shared modules ($libdir)
+  --with-libdir=DIR       Where to put libdir ($libdir)
   --with-pammodulesdir=DIR
                           Which directory to use for PAM modules
                           ($ac_default_prefix/$libdir/security)
@@ -2237,11 +2230,10 @@
 logfilebase="\${VARDIR}"
 privatedir="\${prefix}/private"
 test "${libdir}" || libdir="\${prefix}/lib"
-modulesdir="${libdir}"
-pammodulesdir="${libdir}/security"
-configdir="${libdir}"
+pammodulesdir="\${LIBDIR}/security"
+configdir="\${LIBDIR}"
 swatdir="\${prefix}/swat"
-codepagedir="\${MODULESDIR}"
+codepagedir="\${LIBDIR}"
 statedir="\${LOCKDIR}"
 cachedir="\${LOCKDIR}"
 
@@ -2255,11 +2247,10 @@
     mandir="\${prefix}/share/man"
     logfilebase="\${VARDIR}/log/samba"
     privatedir="\${CONFIGDIR}/private"
-    test "${libdir}" || libdir="\${prefix}/lib"
-    modulesdir="${libdir}/samba"
+    test "${libdir}" || libdir="\${prefix}/lib/samba"
     configdir="\${sysconfdir}/samba"
     swatdir="\${DATADIR}/samba/swat"
-    codepagedir="\${MODULESDIR}"
+    codepagedir="\${LIBDIR}"
     statedir="\${VARDIR}/lib/samba"
     cachedir="\${VARDIR}/lib/samba"
 
@@ -2431,20 +2422,20 @@
 
 
 #################################################
-# set shared modules (internal lib) directory location
+# set lib directory location
 
-# Check whether --with-modulesdir was given.
-if test "${with_modulesdir+set}" = set; then
-  withval=$with_modulesdir;  case "$withval" in
+# Check whether --with-libdir was given.
+if test "${with_libdir+set}" = set; then
+  withval=$with_libdir;  case "$withval" in
   yes|no)
   #
   # Just in case anybody does it
   #
-    { echo "$as_me:$LINENO: WARNING: --with-modulesdir without argument - will use default" >&5
-echo "$as_me: WARNING: --with-modulesdir without argument - will use default" >&2;}
+    { echo "$as_me:$LINENO: WARNING: --with-libdir without argument - will use default" >&5
+echo "$as_me: WARNING: --with-libdir without argument - will use default" >&2;}
   ;;
   * )
-    modulesdir="$withval"
+    libdir="$withval"
     ;;
   esac
 fi
@@ -2505,7 +2496,6 @@
 
 
 
-
 #################################################
 # set prefix for 'make test'
 selftest_prefix="./st"
@@ -2584,18 +2574,7 @@
 fi
 
 
-picky_developer=no
-# Check whether --enable-picky-developer was given.
-if test "${enable_picky_developer+set}" = set; then
-  enableval=$enable_picky_developer; if eval "test x$enable_picky_developer = xyes"; then
-        debug=yes
-        developer=yes
-        picky_developer=yes
-    fi
-fi
 
-
-
 # Check whether --with-cfenc was given.
 if test "${with_cfenc+set}" = set; then
   withval=$with_cfenc;
@@ -11361,7 +11340,6 @@
 
 
 
-
 # compile with optimization and without debugging by default, but
 # allow people to set their own preference.
 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
@@ -11384,7 +11362,7 @@
 fi
 
 
-DEFAULT_TEST_OPTIONS=
+DEFAULT_TEST_TARGET=test-noswrap
 HAVE_SOCKET_WRAPPER=no
 
 if eval "test x$developer = xyes"; then
@@ -11397,7 +11375,7 @@
 #define SOCKET_WRAPPER 1
 _ACEOF
 
-	DEFAULT_TEST_OPTIONS=--socket-wrapper
+	DEFAULT_TEST_TARGET=test-swrap
 	HAVE_SOCKET_WRAPPER=yes
 
 	# this is only used for samba3
@@ -11636,10 +11614,6 @@
        if test x"$krb5_developer" != x"$yes" ; then
 	    DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
        fi
-
-       if test x"$picky_developer" = x"yes"; then
-	    DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
-       fi
 fi
 
 # Check whether --enable-dmalloc was given.
@@ -12840,7 +12814,7 @@
 
 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
 
-default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_acl_xattr vfs_smb_traffic_analyzer"
+default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr"
 
 if test "x$developer" = xyes; then
    default_static_modules="$default_static_modules rpc_rpcecho"
@@ -33372,174 +33346,13 @@
 
         if test "x$CUPS_CONFIG" != x; then
 
-		ac_save_CFLAGS=$CFLAGS
-		ac_save_LDFLAGS=$LDFLAGS
-		ac_save_PRINT_LIBS=$PRINT_LIBS
-		CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
-		LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
-		PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
-
-
-for ac_header in cups/cups.h cups/language.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## ---------------------------------------- ##
-## Report this to samba-technical at samba.org ##
-## ---------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-		if test x"$ac_cv_header_cups_cups_h" = xyes -a \
-		        x"$ac_cv_header_cups_language_h" = xyes; then
-
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_CUPS 1
 _ACEOF
 
-			samba_cv_HAVE_CUPS=yes
-		else
-			{ echo "$as_me:$LINENO: WARNING: cups-config around but cups-devel not installed" >&5
-echo "$as_me: WARNING: cups-config around but cups-devel not installed" >&2;}
-			CFLAGS=$ac_save_CFLAGS
-			LDFLAGS=$ac_save_LDFLAGS
-			PRINT_LIBS=$ac_save_PRINT_LIBS
-		fi
-
+		CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
+		LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
+		PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
 	elif test x"$enable_cups" = x"yes"; then
 		{ { echo "$as_me:$LINENO: error: Cups support required but cups-config not located.  Make sure cups-devel related files are installed." >&5
 echo "$as_me: error: Cups support required but cups-config not located.  Make sure cups-devel related files are installed." >&2;}
@@ -33554,7 +33367,7 @@
 
 
 if test x$enable_iprint != xno; then
-	if test x"$samba_cv_HAVE_CUPS" = xyes; then
+	if test "x$CUPS_CONFIG" != x; then
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_IPRINT 1
@@ -49682,13 +49495,9 @@
     # in both libiconv and in libc. In this case the jm_ICONV test will always
     # succeed when the header is found. To counter this, make sure the
     # library directory is there and check the ABI directory first (which
-    # should be harmless on other systems, but causes tons of linker warnings on
-    # 64bit Ubuntu systems).
-    # As the build farm doesn't seem to have any IRIX machines with iconv.h
-    # installed, I've decided to fix the linker warnings.
-    # -- Kai
+    # should be harmless on other systems.
     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
-    for l in "lib" "lib32" "lib/hpux32"; do
+    for l in "lib32" "lib" "lib/hpux32"; do
         if test -d "$i/$l" ; then
                 LDFLAGS="$save_LDFLAGS -L$i/$l"
 		LIBS=
@@ -54230,17 +54039,14 @@
     fi
 fi
 
-FAKE_KASERVER_OBJ=""
 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
 
 cat >>confdefs.h <<\_ACEOF
 #define WITH_FAKE_KASERVER 1
 _ACEOF
 
-    FAKE_KASERVER_OBJ="utils/net_afs.o"
 fi
 
-
 #################################################
 # check whether to compile AFS/NT ACL mapping module
 samba_cv_WITH_VFS_AFSACL=no
@@ -68030,7 +67836,6 @@
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
 #include <sys/statvfs.h>
 int
 main ()
@@ -68077,67 +67882,6 @@
 
 fi
 
-# fsusage.c assumes that statvfs has an f_frsize entry. Some weird
-# systems use f_bsize.
-{ echo "$as_me:$LINENO: checking that statvfs.f_frsize works" >&5
-echo $ECHO_N "checking that statvfs.f_frsize works... $ECHO_C" >&6; }
-if test "${samba_cv_frsize+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/statvfs.h>
-int
-main ()
-{
-struct statvfs buf; buf.f_frsize = 0
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  samba_cv_frsize=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	samba_cv_frsize=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $samba_cv_frsize" >&5
-echo "${ECHO_T}$samba_cv_frsize" >&6; }
-if test x"$samba_cv_frsize" = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_FRSIZE 1
-_ACEOF
-
-fi
-
 if test $space = no; then
   # DEC Alpha running OSF/1
   { echo "$as_me:$LINENO: checking for 3-argument statfs function (DEC OSF/1)" >&5
@@ -73792,83 +73536,9 @@
 	fi
 
 
-	{ echo "$as_me:$LINENO: checking how to build idmap_hash" >&5
-echo $ECHO_N "checking how to build idmap_hash... $ECHO_C" >&6; }
-	if test "$MODULE_idmap_hash"; then
-		DEST=$MODULE_idmap_hash
-	elif test "$MODULE_idmap" -a "$MODULE_DEFAULT_idmap_hash"; then
-		DEST=$MODULE_idmap
-	else
-		DEST=$MODULE_DEFAULT_idmap_hash
-	fi
 
-	if test x"$DEST" = xSHARED; then
 
-cat >>confdefs.h <<\_ACEOF
-#define idmap_hash_init init_samba_module
-_ACEOF
 
-		IDMAP_MODULES="$IDMAP_MODULES "bin/hash.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
-
-		string_shared_modules="$string_shared_modules idmap_hash"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_idmap="$init_static_modules_idmap  idmap_hash_init();"
- 		decl_static_modules_idmap="$decl_static_modules_idmap extern NTSTATUS idmap_hash_init(void);"
-		string_static_modules="$string_static_modules idmap_hash"
-		IDMAP_STATIC="$IDMAP_STATIC \$(IDMAP_HASH_OBJ)"
-
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules idmap_hash"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-	{ echo "$as_me:$LINENO: checking how to build idmap_adex" >&5
-echo $ECHO_N "checking how to build idmap_adex... $ECHO_C" >&6; }
-	if test "$MODULE_idmap_adex"; then
-		DEST=$MODULE_idmap_adex
-	elif test "$MODULE_idmap" -a "$MODULE_DEFAULT_idmap_adex"; then
-		DEST=$MODULE_idmap
-	else
-		DEST=$MODULE_DEFAULT_idmap_adex
-	fi
-
-	if test x"$DEST" = xSHARED; then
-
-cat >>confdefs.h <<\_ACEOF
-#define idmap_adex_init init_samba_module
-_ACEOF
-
-		IDMAP_MODULES="$IDMAP_MODULES "bin/adex.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
-
-		string_shared_modules="$string_shared_modules idmap_adex"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_idmap="$init_static_modules_idmap  idmap_adex_init();"
- 		decl_static_modules_idmap="$decl_static_modules_idmap extern NTSTATUS idmap_adex_init(void);"
-		string_static_modules="$string_static_modules idmap_adex"
-		IDMAP_STATIC="$IDMAP_STATIC \$(IDMAP_ADEX_OBJ)"
-
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules idmap_adex"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-
-
-
 cat >>confdefs.h <<_ACEOF
 #define static_init_idmap {$init_static_modules_idmap}
 _ACEOF
@@ -75706,85 +75376,11 @@
 	fi
 
 
-	{ echo "$as_me:$LINENO: checking how to build vfs_acl_xattr" >&5
-echo $ECHO_N "checking how to build vfs_acl_xattr... $ECHO_C" >&6; }
-	if test "$MODULE_vfs_acl_xattr"; then
-		DEST=$MODULE_vfs_acl_xattr
-	elif test "$MODULE_vfs" -a "$MODULE_DEFAULT_vfs_acl_xattr"; then
-		DEST=$MODULE_vfs
-	else
-		DEST=$MODULE_DEFAULT_vfs_acl_xattr
-	fi
 
-	if test x"$DEST" = xSHARED; then
 
-cat >>confdefs.h <<\_ACEOF
-#define vfs_acl_xattr_init init_samba_module
-_ACEOF
 
-		VFS_MODULES="$VFS_MODULES "bin/acl_xattr.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
 
-		string_shared_modules="$string_shared_modules vfs_acl_xattr"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_vfs="$init_static_modules_vfs  vfs_acl_xattr_init();"
- 		decl_static_modules_vfs="$decl_static_modules_vfs extern NTSTATUS vfs_acl_xattr_init(void);"
-		string_static_modules="$string_static_modules vfs_acl_xattr"
-		VFS_STATIC="$VFS_STATIC \$(VFS_ACL_XATTR_OBJ)"
 
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules vfs_acl_xattr"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-	{ echo "$as_me:$LINENO: checking how to build vfs_smb_traffic_analyzer" >&5
-echo $ECHO_N "checking how to build vfs_smb_traffic_analyzer... $ECHO_C" >&6; }
-	if test "$MODULE_vfs_smb_traffic_analyzer"; then
-		DEST=$MODULE_vfs_smb_traffic_analyzer
-	elif test "$MODULE_vfs" -a "$MODULE_DEFAULT_vfs_smb_traffic_analyzer"; then
-		DEST=$MODULE_vfs
-	else
-		DEST=$MODULE_DEFAULT_vfs_smb_traffic_analyzer
-	fi
-
-	if test x"$DEST" = xSHARED; then
-
-cat >>confdefs.h <<\_ACEOF
-#define vfs_smb_traffic_analyzer_init init_samba_module
-_ACEOF
-
-		VFS_MODULES="$VFS_MODULES "bin/smb_traffic_analyzer.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
-
-		string_shared_modules="$string_shared_modules vfs_smb_traffic_analyzer"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_vfs="$init_static_modules_vfs  vfs_smb_traffic_analyzer_init();"
- 		decl_static_modules_vfs="$decl_static_modules_vfs extern NTSTATUS vfs_smb_traffic_analyzer_init(void);"
-		string_static_modules="$string_static_modules vfs_smb_traffic_analyzer"
-		VFS_STATIC="$VFS_STATIC \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ)"
-
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules vfs_smb_traffic_analyzer"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-
-
-
-
-
 cat >>confdefs.h <<_ACEOF
 #define static_init_vfs {$init_static_modules_vfs}
 _ACEOF
@@ -75798,134 +75394,7 @@
 
 
 
-	{ echo "$as_me:$LINENO: checking how to build gpext_registry" >&5
-echo $ECHO_N "checking how to build gpext_registry... $ECHO_C" >&6; }
-	if test "$MODULE_gpext_registry"; then
-		DEST=$MODULE_gpext_registry
-	elif test "$MODULE_gpext" -a "$MODULE_DEFAULT_gpext_registry"; then
-		DEST=$MODULE_gpext
-	else
-		DEST=$MODULE_DEFAULT_gpext_registry
-	fi
-
-	if test x"$DEST" = xSHARED; then
-
-cat >>confdefs.h <<\_ACEOF
-#define gpext_registry_init init_samba_module
-_ACEOF
-
-		GPEXT_MODULES="$GPEXT_MODULES "bin/registry.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
-
-		string_shared_modules="$string_shared_modules gpext_registry"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_gpext="$init_static_modules_gpext  gpext_registry_init();"
- 		decl_static_modules_gpext="$decl_static_modules_gpext extern NTSTATUS gpext_registry_init(void);"
-		string_static_modules="$string_static_modules gpext_registry"
-		GPEXT_STATIC="$GPEXT_STATIC libgpo/gpext/registry.o"
-
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules gpext_registry"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-	{ echo "$as_me:$LINENO: checking how to build gpext_scripts" >&5
-echo $ECHO_N "checking how to build gpext_scripts... $ECHO_C" >&6; }
-	if test "$MODULE_gpext_scripts"; then
-		DEST=$MODULE_gpext_scripts
-	elif test "$MODULE_gpext" -a "$MODULE_DEFAULT_gpext_scripts"; then
-		DEST=$MODULE_gpext
-	else
-		DEST=$MODULE_DEFAULT_gpext_scripts
-	fi
-
-	if test x"$DEST" = xSHARED; then
-
-cat >>confdefs.h <<\_ACEOF
-#define gpext_scripts_init init_samba_module
-_ACEOF
-
-		GPEXT_MODULES="$GPEXT_MODULES "bin/scripts.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
-
-		string_shared_modules="$string_shared_modules gpext_scripts"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_gpext="$init_static_modules_gpext  gpext_scripts_init();"
- 		decl_static_modules_gpext="$decl_static_modules_gpext extern NTSTATUS gpext_scripts_init(void);"
-		string_static_modules="$string_static_modules gpext_scripts"
-		GPEXT_STATIC="$GPEXT_STATIC libgpo/gpext/scripts.o"
-
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules gpext_scripts"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-	{ echo "$as_me:$LINENO: checking how to build gpext_security" >&5
-echo $ECHO_N "checking how to build gpext_security... $ECHO_C" >&6; }
-	if test "$MODULE_gpext_security"; then
-		DEST=$MODULE_gpext_security
-	elif test "$MODULE_gpext" -a "$MODULE_DEFAULT_gpext_security"; then
-		DEST=$MODULE_gpext
-	else
-		DEST=$MODULE_DEFAULT_gpext_security
-	fi
-
-	if test x"$DEST" = xSHARED; then
-
-cat >>confdefs.h <<\_ACEOF
-#define gpext_security_init init_samba_module
-_ACEOF
-
-		GPEXT_MODULES="$GPEXT_MODULES "bin/security.$SHLIBEXT""
-		{ echo "$as_me:$LINENO: result: shared" >&5
-echo "${ECHO_T}shared" >&6; }
-
-		string_shared_modules="$string_shared_modules gpext_security"
-	elif test x"$DEST" = xSTATIC; then
-		init_static_modules_gpext="$init_static_modules_gpext  gpext_security_init();"
- 		decl_static_modules_gpext="$decl_static_modules_gpext extern NTSTATUS gpext_security_init(void);"
-		string_static_modules="$string_static_modules gpext_security"
-		GPEXT_STATIC="$GPEXT_STATIC libgpo/gpext/security.o"
-
-
-		{ echo "$as_me:$LINENO: result: static" >&5
-echo "${ECHO_T}static" >&6; }
-	else
-	    string_ignored_modules="$string_ignored_modules gpext_security"
-		{ echo "$as_me:$LINENO: result: not" >&5
-echo "${ECHO_T}not" >&6; }
-	fi
-
-
-
-
-
 cat >>confdefs.h <<_ACEOF
-#define static_init_gpext {$init_static_modules_gpext}
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define static_decl_gpext $decl_static_modules_gpext
-_ACEOF
-
-    	rm -f libgpo/gpext/gpext.o
-
-
-
-cat >>confdefs.h <<_ACEOF
 #define STRING_STATIC_MODULES "$string_static_modules"
 _ACEOF
 
@@ -76403,7 +75872,7 @@
 
 
 
-if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
+if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
 fi
 
@@ -76412,7 +75881,7 @@
 SMBD_LIBS="$samba_dmapi_libs"
 
 
-ac_config_files="$ac_config_files Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh lib/netapi/examples/Makefile lib/netapi/tests/Makefile pkgconfig/smbclient.pc pkgconfig/wbclient.pc pkgconfig/netapi.pc pkgconfig/smbsharemodes.pc ../examples/libsmbclient/Makefile.internal"
+ac_config_files="$ac_config_files Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh lib/netapi/examples/Makefile pkgconfig/smbclient.pc pkgconfig/wbclient.pc pkgconfig/netapi.pc pkgconfig/smbsharemodes.pc"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -76991,12 +76460,10 @@
     "script/installbin.sh") CONFIG_FILES="$CONFIG_FILES script/installbin.sh" ;;
     "script/uninstallbin.sh") CONFIG_FILES="$CONFIG_FILES script/uninstallbin.sh" ;;
     "lib/netapi/examples/Makefile") CONFIG_FILES="$CONFIG_FILES lib/netapi/examples/Makefile" ;;
-    "lib/netapi/tests/Makefile") CONFIG_FILES="$CONFIG_FILES lib/netapi/tests/Makefile" ;;
     "pkgconfig/smbclient.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/smbclient.pc" ;;
     "pkgconfig/wbclient.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/wbclient.pc" ;;
     "pkgconfig/netapi.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/netapi.pc" ;;
     "pkgconfig/smbsharemodes.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/smbsharemodes.pc" ;;
-    "../examples/libsmbclient/Makefile.internal") CONFIG_FILES="$CONFIG_FILES ../examples/libsmbclient/Makefile.internal" ;;
 
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
@@ -77123,7 +76590,6 @@
 cachedir!$cachedir$ac_delim
 rootsbindir!$rootsbindir$ac_delim
 pammodulesdir!$pammodulesdir$ac_delim
-modulesdir!$modulesdir$ac_delim
 selftest_prefix!$selftest_prefix$ac_delim
 smbtorture4_path!$smbtorture4_path$ac_delim
 CC!$CC$ac_delim
@@ -77156,6 +76622,7 @@
 MODULE_EXPORTS!$MODULE_EXPORTS$ac_delim
 DSO_EXPORTS!$DSO_EXPORTS$ac_delim
 HOST_OS!$HOST_OS$ac_delim
+PICFLAG!$PICFLAG$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -77197,7 +76664,6 @@
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
-PICFLAG!$PICFLAG$ac_delim
 PIE_CFLAGS!$PIE_CFLAGS$ac_delim
 PIE_LDFLAGS!$PIE_LDFLAGS$ac_delim
 RELRO_LDFLAGS!$RELRO_LDFLAGS$ac_delim
@@ -77224,7 +76690,6 @@
 KRB5_LIBS!$KRB5_LIBS$ac_delim
 UUID_LIBS!$UUID_LIBS$ac_delim
 LDAP_LIBS!$LDAP_LIBS$ac_delim
-GPEXT_LIBS!$GPEXT_LIBS$ac_delim
 PAM_MODULES!$PAM_MODULES$ac_delim
 INSTALL_PAM_MODULES!$INSTALL_PAM_MODULES$ac_delim
 UNINSTALL_PAM_MODULES!$UNINSTALL_PAM_MODULES$ac_delim
@@ -77240,7 +76705,7 @@
 EXTRA_ALL_TARGETS!$EXTRA_ALL_TARGETS$ac_delim
 CONFIG_LIBS!$CONFIG_LIBS$ac_delim
 NSCD_LIBS!$NSCD_LIBS$ac_delim
-DEFAULT_TEST_OPTIONS!$DEFAULT_TEST_OPTIONS$ac_delim
+DEFAULT_TEST_TARGET!$DEFAULT_TEST_TARGET$ac_delim
 HAVE_SOCKET_WRAPPER!$HAVE_SOCKET_WRAPPER$ac_delim
 SOCKET_WRAPPER_OBJS!$SOCKET_WRAPPER_OBJS$ac_delim
 HAVE_NSS_WRAPPER!$HAVE_NSS_WRAPPER$ac_delim
@@ -77264,7 +76729,6 @@
 ROFF!$ROFF$ac_delim
 LIB_PATH_VAR!$LIB_PATH_VAR$ac_delim
 SMB_FAM_LIBS!$SMB_FAM_LIBS$ac_delim
-FAKE_KASERVER_OBJ!$FAKE_KASERVER_OBJ$ac_delim
 SMBLDAP!$SMBLDAP$ac_delim
 SMBLDAPUTIL!$SMBLDAPUTIL$ac_delim
 LDBLDAP!$LDBLDAP$ac_delim
@@ -77294,6 +76758,9 @@
 INSTALL_LIBNETAPI!$INSTALL_LIBNETAPI$ac_delim
 UNINSTALL_LIBNETAPI!$UNINSTALL_LIBNETAPI$ac_delim
 LIBNETAPI_SOVER!$LIBNETAPI_SOVER$ac_delim
+LIBSMBCLIENT_SHARED_TARGET!$LIBSMBCLIENT_SHARED_TARGET$ac_delim
+LIBSMBCLIENT_STATIC_TARGET!$LIBSMBCLIENT_STATIC_TARGET$ac_delim
+LIBSMBCLIENT_SHARED!$LIBSMBCLIENT_SHARED$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -77335,9 +76802,6 @@
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
-LIBSMBCLIENT_SHARED_TARGET!$LIBSMBCLIENT_SHARED_TARGET$ac_delim
-LIBSMBCLIENT_STATIC_TARGET!$LIBSMBCLIENT_STATIC_TARGET$ac_delim
-LIBSMBCLIENT_SHARED!$LIBSMBCLIENT_SHARED$ac_delim
 LIBSMBCLIENT_STATIC!$LIBSMBCLIENT_STATIC$ac_delim
 LIBSMBCLIENT_LIBS!$LIBSMBCLIENT_LIBS$ac_delim
 INSTALL_LIBSMBCLIENT!$INSTALL_LIBSMBCLIENT$ac_delim
@@ -77388,14 +76852,12 @@
 AUTH_MODULES!$AUTH_MODULES$ac_delim
 VFS_STATIC!$VFS_STATIC$ac_delim
 VFS_MODULES!$VFS_MODULES$ac_delim
-GPEXT_STATIC!$GPEXT_STATIC$ac_delim
-GPEXT_MODULES!$GPEXT_MODULES$ac_delim
 DEVELOPER_CFLAGS!$DEVELOPER_CFLAGS$ac_delim
 SMBD_LIBS!$SMBD_LIBS$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 58; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 53; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

Modified: branches/samba/upstream/source/configure.in
===================================================================
--- branches/samba/upstream/source/configure.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/configure.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -100,7 +100,6 @@
 AC_SUBST(KRB5_LIBS)
 AC_SUBST(UUID_LIBS)
 AC_SUBST(LDAP_LIBS)
-AC_SUBST(GPEXT_LIBS)
 AC_SUBST(PAM_MODULES)
 AC_SUBST(INSTALL_PAM_MODULES)
 AC_SUBST(UNINSTALL_PAM_MODULES)
@@ -183,10 +182,6 @@
        if test x"$krb5_developer" != x"$yes" ; then
 	    DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
        fi
-
-       if test x"$picky_developer" = x"yes"; then
-	    DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
-       fi
 fi
 
 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
@@ -409,7 +404,7 @@
 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
 
 dnl These are preferably build shared, and static if dlopen() is not available
-default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_acl_xattr vfs_smb_traffic_analyzer"
+default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr"
 
 if test "x$developer" = xyes; then
    default_static_modules="$default_static_modules rpc_rpcecho"
@@ -761,25 +756,10 @@
 	AC_PATH_PROG(CUPS_CONFIG, cups-config)
 
         if test "x$CUPS_CONFIG" != x; then
-
-		ac_save_CFLAGS=$CFLAGS
-		ac_save_LDFLAGS=$LDFLAGS
-		ac_save_PRINT_LIBS=$PRINT_LIBS
+                AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
 		CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
 		LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
 		PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
-		AC_CHECK_HEADERS(cups/cups.h cups/language.h)
-		if test x"$ac_cv_header_cups_cups_h" = xyes -a \
-		        x"$ac_cv_header_cups_language_h" = xyes; then
-			AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
-			samba_cv_HAVE_CUPS=yes
-		else
-			AC_MSG_WARN([cups-config around but cups-devel not installed])
-			CFLAGS=$ac_save_CFLAGS
-			LDFLAGS=$ac_save_LDFLAGS
-			PRINT_LIBS=$ac_save_PRINT_LIBS
-		fi
-
 	elif test x"$enable_cups" = x"yes"; then
 		AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
         fi
@@ -789,7 +769,7 @@
 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
 
 if test x$enable_iprint != xno; then
-	if test x"$samba_cv_HAVE_CUPS" = xyes; then
+	if test "x$CUPS_CONFIG" != x; then
                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
 	elif test x"$enable_iprint" = x"yes"; then
 		AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
@@ -2309,13 +2289,9 @@
     # in both libiconv and in libc. In this case the jm_ICONV test will always
     # succeed when the header is found. To counter this, make sure the
     # library directory is there and check the ABI directory first (which
-    # should be harmless on other systems, but causes tons of linker warnings on
-    # 64bit Ubuntu systems).
-    # As the build farm doesn't seem to have any IRIX machines with iconv.h
-    # installed, I've decided to fix the linker warnings.
-    # -- Kai
+    # should be harmless on other systems.
     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
-    for l in "lib" "lib32" "lib/hpux32"; do
+    for l in "lib32" "lib" "lib/hpux32"; do
         if test -d "$i/$l" ; then
                 LDFLAGS="$save_LDFLAGS -L$i/$l"
 		LIBS=
@@ -2990,12 +2966,9 @@
     fi
 fi
 
-FAKE_KASERVER_OBJ=""
 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
-    FAKE_KASERVER_OBJ="utils/net_afs.o"
 fi
-AC_SUBST(FAKE_KASERVER_OBJ)
 
 #################################################
 # check whether to compile AFS/NT ACL mapping module
@@ -4879,23 +4852,12 @@
 # This is not the case on ancient Linux systems.
 
 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
-    AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
+    AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
 	samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
 if test x"$samba_cv_fsid_int" = x"yes"; then
     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
 fi
 
-# fsusage.c assumes that statvfs has an f_frsize entry. Some weird
-# systems use f_bsize.
-AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
-    AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
-	samba_cv_frsize=yes,samba_cv_frsize=no)])
-if test x"$samba_cv_frsize" = x"yes"; then
-    AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
-fi
-
 if test $space = no; then
   # DEC Alpha running OSF/1
   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
@@ -6059,8 +6021,6 @@
 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
-SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
-SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
 
 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
@@ -6117,17 +6077,10 @@
 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
-SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
-SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
 
 
 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
 
-SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
-SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
-SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
-SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
-
 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
 
 #################################################
@@ -6259,7 +6212,7 @@
 
 dnl Merge in developer cflags from now on
 AC_SUBST(DEVELOPER_CFLAGS)
-if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
+if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
 fi
 
@@ -6271,12 +6224,10 @@
 AC_OUTPUT(Makefile
 	  script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
 	  lib/netapi/examples/Makefile
-	  lib/netapi/tests/Makefile
 	  pkgconfig/smbclient.pc
 	  pkgconfig/wbclient.pc
 	  pkgconfig/netapi.pc
 	  pkgconfig/smbsharemodes.pc
-	  ../examples/libsmbclient/Makefile.internal
 	  )
 
 #################################################

Modified: branches/samba/upstream/source/dynconfig.c
===================================================================
--- branches/samba/upstream/source/dynconfig.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/dynconfig.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -40,6 +40,12 @@
  * table?  There's kind of a chicken-and-egg situation there...
  **/
 
+#if 0
+static char const *dyn_SBINDIR = SBINDIR;
+static char const *dyn_BINDIR = BINDIR;
+static char const *dyn_SWATDIR = SWATDIR;
+#endif
+
 #define DEFINE_DYN_CONFIG_PARAM(name) \
 static char *dyn_##name; \
 \
@@ -73,13 +79,222 @@
 DEFINE_DYN_CONFIG_PARAM(LMHOSTSFILE) /** Statically configured LanMan hosts. **/
 DEFINE_DYN_CONFIG_PARAM(CODEPAGEDIR)
 DEFINE_DYN_CONFIG_PARAM(LIBDIR)
-DEFINE_DYN_CONFIG_PARAM(MODULESDIR)
 DEFINE_DYN_CONFIG_PARAM(SHLIBEXT)
 DEFINE_DYN_CONFIG_PARAM(LOCKDIR)
 DEFINE_DYN_CONFIG_PARAM(PIDDIR)
 DEFINE_DYN_CONFIG_PARAM(SMB_PASSWD_FILE)
 DEFINE_DYN_CONFIG_PARAM(PRIVATE_DIR)
 
+#if 0
+static char *dyn_CONFIGFILE; /**< Location of smb.conf file. **/
+
+const char *get_dyn_CONFIGFILE(void)
+{
+	if (dyn_CONFIGFILE == NULL) {
+		return CONFIGFILE;
+	}
+	return dyn_CONFIGFILE;
+}
+
+const char *set_dyn_CONFIGFILE(const char *newpath)
+{
+	if (dyn_CONFIGFILE) {
+		SAFE_FREE(dyn_CONFIGFILE);
+	}
+	dyn_CONFIGFILE = SMB_STRDUP(newpath);
+	return dyn_CONFIGFILE;
+}
+
+/** Log file directory. **/
+static char *dyn_LOGFILEBASE;
+
+const char *get_dyn_LOGFILEBASE(void)
+{
+	if (dyn_LOGFILEBASE == NULL) {
+		return LOGFILEBASE;
+	}
+	return dyn_LOGFILEBASE;
+}
+
+const char *set_dyn_LOGFILEBASE(const char *newpath)
+{
+	if (dyn_LOGFILEBASE) {
+		SAFE_FREE(dyn_LOGFILEBASE);
+	}
+	dyn_LOGFILEBASE = SMB_STRDUP(newpath);
+	return dyn_LOGFILEBASE;
+}
+
+/** Statically configured LanMan hosts. **/
+static char *dyn_LMHOSTSFILE;
+
+const char *get_dyn_LMHOSTSFILE(void)
+{
+	if (dyn_LMHOSTSFILE == NULL) {
+		return LMHOSTSFILE;
+	}
+	return dyn_LMHOSTSFILE;
+}
+
+const char *set_dyn_LMHOSTSFILE(const char *newpath)
+{
+	if (dyn_LMHOSTSFILE) {
+		SAFE_FREE(dyn_LMHOSTSFILE);
+	}
+	dyn_LMHOSTSFILE = SMB_STRDUP(newpath);
+	return dyn_LMHOSTSFILE;
+}
+
+/**
+ * @brief Samba data directory.
+ *
+ * @sa data_path() to get the path to a file inside the CODEPAGEDIR.
+ **/
+static char *dyn_CODEPAGEDIR;
+
+const char *get_dyn_CODEPAGEDIR(void)
+{
+	if (dyn_CODEPAGEDIR == NULL) {
+		return CODEPAGEDIR;
+	}
+	return dyn_CODEPAGEDIR;
+}
+
+const char *set_dyn_CODEPAGEDIR(const char *newpath)
+{
+	if (dyn_CODEPAGEDIR) {
+		SAFE_FREE(dyn_CODEPAGEDIR);
+	}
+	dyn_CODEPAGEDIR = SMB_STRDUP(newpath);
+	return dyn_CODEPAGEDIR;
+}
+
+/**
+ * @brief Samba library directory.
+ *
+ * @sa lib_path() to get the path to a file inside the LIBDIR.
+ **/
+static char *dyn_LIBDIR;
+
+const char *get_dyn_LIBDIR(void)
+{
+	if (dyn_LIBDIR == NULL) {
+		return LIBDIR;
+	}
+	return dyn_CODEPAGEDIR;
+}
+
+const char *set_dyn_LIBDIR(const char *newpath)
+{
+	if (dyn_LIBDIR) {
+		SAFE_FREE(dyn_LIBDIR);
+	}
+	dyn_LIBDIR = SMB_STRDUP(newpath);
+	return dyn_LIBDIR;
+}
+
+static char *dyn_SHLIBEXT;
+
+const char *get_dyn_SHLIBEXT(void)
+{
+	if (dyn_SHLIBEXT == NULL) {
+		return SHLIBEXT;
+	}
+	return dyn_SHLIBEXT;
+}
+
+const char *set_dyn_SHLIBEXT(const char *newpath)
+{
+	if (dyn_SHLIBEXT) {
+		SAFE_FREE(dyn_SHLIBEXT);
+	}
+	dyn_SHLIBEXT = SMB_STRDUP(newpath);
+	return dyn_SHLIBEXT;
+}
+
+/**
+ * @brief Directory holding lock files.
+ *
+ * Not writable, but used to set a default in the parameter table.
+ **/
+
+static char *dyn_LOCKDIR;
+
+const char *get_dyn_LOCKDIR(void)
+{
+	if (dyn_LOCKDIR == NULL) {
+		return LOCKDIR;
+	}
+	return dyn_LOCKDIR;
+}
+
+const char *set_dyn_LOCKDIR(const char *newpath)
+{
+	if (dyn_LOCKDIR) {
+		SAFE_FREE(dyn_LOCKDIR);
+	}
+	dyn_LOCKDIR = SMB_STRDUP(newpath);
+	return dyn_LOCKDIR;
+}
+
+static char *dyn_PIDDIR;
+
+const char *get_dyn_PIDDIR(void)
+{
+	if (dyn_PIDDIR == NULL) {
+		return PIDDIR;
+	}
+	return dyn_PIDDIR;
+}
+
+const char *set_dyn_PIDDIR(const char *newpath)
+{
+	if (dyn_PIDDIR) {
+		SAFE_FREE(dyn_PIDDIR);
+	}
+	dyn_PIDDIR = SMB_STRDUP(newpath);
+	return dyn_PIDDIR;
+}
+
+static char *dyn_SMB_PASSWD_FILE;
+
+const char *get_dyn_SMB_PASSWD_FILE(void)
+{
+	if (dyn_SMB_PASSWD_FILE == NULL) {
+		return SMB_PASSWD_FILE;
+	}
+	return dyn_SMB_PASSWD_FILE;
+}
+
+const char *set_dyn_SMB_PASSWD_FILE(const char *newpath)
+{
+	if (dyn_SMB_PASSWD_FILE) {
+		SAFE_FREE(dyn_SMB_PASSWD_FILE);
+	}
+	dyn_SMB_PASSWD_FILE = SMB_STRDUP(newpath);
+	return dyn_SMB_PASSWD_FILE;
+}
+
+static char *dyn_PRIVATE_DIR;
+
+const char *get_dyn_PRIVATE_DIR(void)
+{
+	if (dyn_PRIVATE_DIR == NULL) {
+		return PRIVATE_DIR;
+	}
+	return dyn_PRIVATE_DIR;
+}
+
+const char *set_dyn_PRIVATE_DIR(const char *newpath)
+{
+	if (dyn_PRIVATE_DIR) {
+		SAFE_FREE(dyn_PRIVATE_DIR);
+	}
+	dyn_PRIVATE_DIR = SMB_STRDUP(newpath);
+	return dyn_PRIVATE_DIR;
+}
+#endif
+
 /* In non-FHS mode, these should be configurable using 'lock dir =';
    but in FHS mode, they are their own directory.  Implement as wrapper
    functions so that everything can still be kept in dynconfig.c.

Copied: branches/samba/upstream/source/exports/libsmbclient.syms (from rev 2163, branches/samba/upstream/source/exports/libsmbclient.syms)
===================================================================
--- branches/samba/upstream/source/exports/libsmbclient.syms	                        (rev 0)
+++ branches/samba/upstream/source/exports/libsmbclient.syms	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,4 @@
+{
+	global: smbc_*;
+	local: *;
+};

Copied: branches/samba/upstream/source/exports/libsmbsharemodes.syms (from rev 2163, branches/samba/upstream/source/exports/libsmbsharemodes.syms)
===================================================================
--- branches/samba/upstream/source/exports/libsmbsharemodes.syms	                        (rev 0)
+++ branches/samba/upstream/source/exports/libsmbsharemodes.syms	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,3 @@
+{
+	global: *;
+};

Modified: branches/samba/upstream/source/groupdb/mapping_tdb.c
===================================================================
--- branches/samba/upstream/source/groupdb/mapping_tdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/groupdb/mapping_tdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -38,7 +38,7 @@
 		return true;
 	}
 
-	db = db_open(NULL, state_path("group_mapping.tdb"), 0,
+	db = db_open_trans(NULL, state_path("group_mapping.tdb"), 0,
 			   TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (db == NULL) {
 		DEBUG(0, ("Failed to open group mapping database: %s\n",
@@ -521,7 +521,7 @@
 	if (db->transaction_commit(db) != 0) {
 		DEBUG(0, ("transaction_commit failed\n"));
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
-		return status;
+		goto cancel;
 	}
 
 	return NT_STATUS_OK;
@@ -705,7 +705,7 @@
 	if (db->transaction_commit(db) != 0) {
 		DEBUG(0, ("transaction_commit failed\n"));
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
-		return status;
+		goto cancel;
 	}
 
 	return NT_STATUS_OK;

Modified: branches/samba/upstream/source/include/ads.h
===================================================================
--- branches/samba/upstream/source/include/ads.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/ads.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -53,9 +53,7 @@
 		char *realm;
 		char *workgroup;
 		char *ldap_server;
-		int foreign; /* set to 1 if connecting to a foreign
-			      * realm */
-		bool gc;     /* Is this a global catalog server? */
+		int foreign; /* set to 1 if connecting to a foreign realm */
 	} server;
 
 	/* info needed to authenticate */
@@ -133,7 +131,6 @@
 	char *posix_uidnumber_attr;
 	char *posix_gidnumber_attr;
 	char *posix_gecos_attr;
-	char *posix_uid_attr;
 };
 
 
@@ -180,7 +177,6 @@
 #define ADS_ATTR_SFU_HOMEDIR_OID 	"1.2.840.113556.1.6.18.1.344"
 #define ADS_ATTR_SFU_SHELL_OID 		"1.2.840.113556.1.6.18.1.312"
 #define ADS_ATTR_SFU_GECOS_OID 		"1.2.840.113556.1.6.18.1.337"
-#define ADS_ATTR_SFU_UID_OID            "1.2.840.113556.1.6.18.1.309"
 
 /* ldap attribute oids (Services for Unix 2.0) */
 #define ADS_ATTR_SFU20_UIDNUMBER_OID	"1.2.840.113556.1.4.7000.187.70"
@@ -188,16 +184,13 @@
 #define ADS_ATTR_SFU20_HOMEDIR_OID	"1.2.840.113556.1.4.7000.187.106"
 #define ADS_ATTR_SFU20_SHELL_OID	"1.2.840.113556.1.4.7000.187.72"
 #define ADS_ATTR_SFU20_GECOS_OID 	"1.2.840.113556.1.4.7000.187.97"
-#define ADS_ATTR_SFU20_UID_OID          "1.2.840.113556.1.4.7000.187.102"
 
-
 /* ldap attribute oids (RFC2307) */
 #define ADS_ATTR_RFC2307_UIDNUMBER_OID	"1.3.6.1.1.1.1.0"
 #define ADS_ATTR_RFC2307_GIDNUMBER_OID	"1.3.6.1.1.1.1.1"
 #define ADS_ATTR_RFC2307_HOMEDIR_OID	"1.3.6.1.1.1.1.3"
 #define ADS_ATTR_RFC2307_SHELL_OID	"1.3.6.1.1.1.1.4"
 #define ADS_ATTR_RFC2307_GECOS_OID	"1.3.6.1.1.1.1.2"
-#define ADS_ATTR_RFC2307_UID_OID        "0.9.2342.19200300.100.1.1"
 
 /* ldap bitwise searches */
 #define ADS_LDAP_MATCHING_RULE_BIT_AND	"1.2.840.113556.1.4.803"
@@ -327,15 +320,14 @@
 #define ADS_DNS_FOREST     0x80000000  /* DnsForestName is a DNS name */
 
 /* ads auth control flags */
-#define ADS_AUTH_DISABLE_KERBEROS 0x0001
-#define ADS_AUTH_NO_BIND          0x0002
-#define ADS_AUTH_ANON_BIND        0x0004
-#define ADS_AUTH_SIMPLE_BIND      0x0008
-#define ADS_AUTH_ALLOW_NTLMSSP    0x0010
-#define ADS_AUTH_SASL_SIGN        0x0020
-#define ADS_AUTH_SASL_SEAL        0x0040
-#define ADS_AUTH_SASL_FORCE       0x0080
-#define ADS_AUTH_USER_CREDS       0x0100
+#define ADS_AUTH_DISABLE_KERBEROS 0x01
+#define ADS_AUTH_NO_BIND          0x02
+#define ADS_AUTH_ANON_BIND        0x04
+#define ADS_AUTH_SIMPLE_BIND      0x08
+#define ADS_AUTH_ALLOW_NTLMSSP    0x10
+#define ADS_AUTH_SASL_SIGN        0x20
+#define ADS_AUTH_SASL_SEAL        0x40
+#define ADS_AUTH_SASL_FORCE       0x80
 
 /* Kerberos environment variable names */
 #define KRB5_ENV_CCNAME "KRB5CCNAME"
@@ -377,31 +369,10 @@
 	krb5_addresses *addrs;
 #else
 #error UNKNOWN_KRB5_ADDRESS_TYPE
-#endif /* defined(HAVE_MAGIC_IN_KRB5_ADDRESS) && defined(HAVE_ADDRTYPE_IN_KRB5_ADDRESS) */
+#endif
 } smb_krb5_addresses;
+#endif
 
-#ifdef HAVE_KRB5_KEYBLOCK_KEYVALUE /* Heimdal */
-#define KRB5_KEY_TYPE(k)	((k)->keytype)
-#define KRB5_KEY_LENGTH(k)	((k)->keyvalue.length)
-#define KRB5_KEY_DATA(k)	((k)->keyvalue.data)
-#define KRB5_KEY_DATA_CAST	void
-#else /* MIT */
-#define KRB5_KEY_TYPE(k)	((k)->enctype)
-#define KRB5_KEY_LENGTH(k)	((k)->length)
-#define KRB5_KEY_DATA(k)	((k)->contents)
-#define KRB5_KEY_DATA_CAST	krb5_octet
-#endif /* HAVE_KRB5_KEYBLOCK_KEYVALUE */
-
-#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEY               /* MIT */
-#define KRB5_KT_KEY(k)		(&(k)->key)
-#elif HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK          /* Heimdal */
-#define KRB5_KT_KEY(k)		(&(k)->keyblock)
-#else
-#error krb5_keytab_entry has no key or keyblock member
-#endif /* HAVE_KRB5_KEYTAB_ENTRY_KEY */
-
-#endif /* HAVE_KRB5 */
-
 enum ads_extended_dn_flags {
 	ADS_EXTENDED_DN_HEX_STRING	= 0,
 	ADS_EXTENDED_DN_STRING		= 1 /* not supported on win2k */

Modified: branches/samba/upstream/source/include/async_req.h
===================================================================
--- branches/samba/upstream/source/include/async_req.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/async_req.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,116 +22,75 @@
 
 #include "includes.h"
 
-/**
- * An async request moves between the following 4 states:
+/*
+ * An async request moves between the following 4 states.
  */
-
 enum async_req_state {
-	/**
-	 * we are creating the request
-	 */
-	ASYNC_REQ_INIT,
-	/**
-	 * we are waiting the request to complete
-	 */
-	ASYNC_REQ_IN_PROGRESS,
-	/**
-	 * the request is finished
-	 */
-	ASYNC_REQ_DONE,
-	/**
-	 * an error has occured
-	 */
-	ASYNC_REQ_ERROR
-};
+	ASYNC_REQ_INIT,		/* we are creating the request */
+	ASYNC_REQ_IN_PROGRESS,	/* we are waiting the request to complete */
+	ASYNC_REQ_DONE,		/* the request is finished */
+	ASYNC_REQ_ERROR };	/* an error has occured */
 
-/**
- * @brief An async request
- *
- * This represents an async request being processed by callbacks via an event
- * context. A user can issue for example a write request to a socket, giving
- * an implementation function the fd, the buffer and the number of bytes to
- * transfer. The function issuing the request will immediately return without
- * blocking most likely without having sent anything. The API user then fills
- * in req->async.fn and req->async.priv, functions that are called when the
- * request is finished.
- *
- * It is up to the user of the async request to talloc_free it after it has
- * finished. This can happen while the completion function is called.
- */
-
 struct async_req {
-	/**
-	 * @brief The external state - will be queried by the caller
-	 *
-	 * While the async request is being processed, state will remain in
-	 * ASYNC_REQ_IN_PROGRESS. A request is finished if
-	 * req->state>=ASYNC_REQ_DONE.
-	 */
+	/* the external state - will be queried by the caller */
 	enum async_req_state state;
 
-	/**
-	 * @brief Private pointer for the actual implementation
-	 *
-	 * The implementation doing the work for the async request needs a
-	 * current state like for example a fd event. The user of an async
-	 * request should not touch this.
-	 */
+	/* a private pointer for use by the async function implementation */
 	void *private_data;
 
-	/**
-	 * @brief Print yourself, for debugging purposes
-	 *
-	 * Async requests are opaque data structures. The implementation of an
-	 * async request can define a custom function to print more debug
-	 * info.
-	 */
+	/* print yourself, for debugging purposes */
 	char *(*print)(TALLOC_CTX *mem_ctx, struct async_req *);
 
-	/**
-	 * @brief status code when finished
-	 *
-	 * This status can be queried in the async completion function. It
-	 * will be set to NT_STATUS_OK when everything went fine.
-	 **/
+	/* status code when finished */
 	NTSTATUS status;
 
-	/**
-	 * @brief The event context we are using
-	 *
-	 * The event context that this async request works on.
-	 */
+	/* the event context we are using */
 	struct event_context *event_ctx;
 
-	/**
-	 * @brief What to do on completion
-	 *
-	 * This is used for the user of an async request, fn is called when
-	 * the request completes, either successfully or with an error.
-	 */
+	/* information on what to do on completion */
 	struct {
-		/**
-		 * @brief Completion function
-		 * Completion function, to be filled by the API user
-		 */
 		void (*fn)(struct async_req *);
-		/**
-		 * @brief Private data for the completion function
-		 */
 		void *priv;
 	} async;
 };
 
-struct async_req *async_req_new(TALLOC_CTX *mem_ctx, struct event_context *ev);
-
+/*
+ * Print an async_req structure for debugging purposes
+ */
 char *async_req_print(TALLOC_CTX *mem_ctx, struct async_req *req);
 
+/*
+ * Create an async request
+ */
+struct async_req *async_req_new(TALLOC_CTX *mem_ctx, struct event_context *ev);
+
+/*
+ * An async request has successfully finished, invoke the callback
+ */
 void async_req_done(struct async_req *req);
 
+/*
+ * An async request has seen an error, invoke the callback
+ */
 void async_req_error(struct async_req *req, NTSTATUS status);
 
+/*
+ * If a request is finished or ends in error even before it has the chance to
+ * trigger the event loop, post a status. This creates an immediate timed
+ * event to call the async function if there is any.
+ */
 bool async_post_status(struct async_req *req, NTSTATUS status);
 
+/*
+ * Convenience helper to easily check alloc failure within a callback.
+ *
+ * Call pattern would be
+ * p = talloc(mem_ctx, bla);
+ * if (async_req_nomem(p, req)) {
+ *	return;
+ * }
+ *
+ */
 bool async_req_nomem(const void *p, struct async_req *req);
 
 #endif

Deleted: branches/samba/upstream/source/include/async_sock.h
===================================================================
--- branches/samba/upstream/source/include/async_sock.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/async_sock.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,45 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   async socket operations
-   Copyright (C) Volker Lendecke 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ASYNC_SOCK_H__
-#define __ASYNC_SOCK_H__
-
-#include "includes.h"
-
-ssize_t async_syscall_result_ssize_t(struct async_req **req, int *perrno);
-size_t  async_syscall_result_size_t (struct async_req **req, int *perrno);
-ssize_t async_syscall_result_int    (struct async_req **req, int *perrno);
-
-struct async_req *async_send(TALLOC_CTX *mem_ctx, struct event_context *ev,
-			     int fd, const void *buffer, size_t length,
-			     int flags);
-struct async_req *async_sendall(TALLOC_CTX *mem_ctx, struct event_context *ev,
-				int fd, const void *buffer, size_t length,
-				int flags);
-struct async_req *async_recv(TALLOC_CTX *mem_ctx, struct event_context *ev,
-			     int fd, void *buffer, size_t length,
-			     int flags);
-struct async_req *async_recvall(TALLOC_CTX *mem_ctx, struct event_context *ev,
-				int fd, void *buffer, size_t length,
-				int flags);
-struct async_req *async_connect(TALLOC_CTX *mem_ctx, struct event_context *ev,
-				int fd, const struct sockaddr *address,
-				socklen_t address_len);
-
-#endif

Modified: branches/samba/upstream/source/include/auth.h
===================================================================
--- branches/samba/upstream/source/include/auth.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/auth.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -47,8 +47,13 @@
 			   check_ntlm_password and the token creation. */
 	size_t num_sids;
 
-	struct unix_user_token utok;
-
+	uid_t uid;
+	gid_t gid;
+	
+	/* This groups info is needed for when we become_user() for this uid */
+	size_t n_groups;
+	gid_t *groups;
+	
 	/* NT group information taken from the info3 structure */
 	
 	NT_USER_TOKEN *ptok;
@@ -62,21 +67,9 @@
 	
 	void *pam_handle;
 
-	/*
-	 * This is a token from /etc/passwd and /etc/group
-	 */
-	bool nss_token;
-
+	bool was_mapped;	/* Did the username map match? */
 	char *unix_name;
-
-	/*
-	 * For performance reasons we keep an alpha_strcpy-sanitized version
-	 * of the username around as long as the global variable current_user
-	 * still exists. If we did not do keep this, we'd have to call
-	 * alpha_strcpy whenever we do a become_user(), potentially on every
-	 * smb request. See set_current_user_info.
-	 */
-	char *sanitized_username;
+	
 } auth_serversupplied_info;
 
 struct auth_context {

Modified: branches/samba/upstream/source/include/client.h
===================================================================
--- branches/samba/upstream/source/include/client.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/client.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -49,43 +49,33 @@
 struct cli_pipe_auth_data {
 	enum pipe_auth_type auth_type; /* switch for the union below. Defined in ntdomain.h */
 	enum pipe_auth_level auth_level; /* defined in ntdomain.h */
-
-	char *domain;
-	char *user_name;
-
 	union {
 		struct schannel_auth_struct *schannel_auth;
 		NTLMSSP_STATE *ntlmssp_state;
 		struct kerberos_auth_struct *kerberos_auth;
 	} a_u;
+	void (*cli_auth_data_free_func)(struct cli_pipe_auth_data *);
 };
 
 struct rpc_pipe_client {
 	struct rpc_pipe_client *prev, *next;
 
-	enum dcerpc_transport_t transport_type;
+	TALLOC_CTX *mem_ctx;
 
-	union {
-		struct {
-			struct cli_state *cli;
-			const char *pipe_name;
-			uint16 fnum;
-		} np;
-		struct {
-			int fd;
-		} sock;
-	} trans ;
+	struct cli_state *cli;
 
-	struct ndr_syntax_id abstract_syntax;
-	struct ndr_syntax_id transfer_syntax;
+	int pipe_idx;
+	const char *pipe_name;
+	uint16 fnum;
 
-	char *desthost;
-	char *srv_name_slash;
+	const char *domain;
+	const char *user_name;
+	struct pwd_info pwd;
 
 	uint16 max_xmit_frag;
 	uint16 max_recv_frag;
 
-	struct cli_pipe_auth_data *auth;
+	struct cli_pipe_auth_data auth;
 
 	/* The following is only non-null on a netlogon pipe. */
 	struct dcinfo *dc;
@@ -133,6 +123,7 @@
 	int privileges;
 
 	fstring desthost;
+	fstring srv_name_slash;
 
 	/* The credentials used to open the cli_state connection. */
 	fstring domain;

Modified: branches/samba/upstream/source/include/config.h.in
===================================================================
--- branches/samba/upstream/source/include/config.h.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/config.h.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -307,12 +307,6 @@
 /* Whether we have CUPS */
 #undef HAVE_CUPS
 
-/* Define to 1 if you have the <cups/cups.h> header file. */
-#undef HAVE_CUPS_CUPS_H
-
-/* Define to 1 if you have the <cups/language.h> header file. */
-#undef HAVE_CUPS_LANGUAGE_H
-
 /* Whether to use the Darwin-specific initgroups system call */
 #undef HAVE_DARWIN_INITGROUPS
 
@@ -538,9 +532,6 @@
 /* Define to 1 if you have the `fremovexattr' function. */
 #undef HAVE_FREMOVEXATTR
 
-/* Whether statvfs.f_frsize exists */
-#undef HAVE_FRSIZE
-
 /* Define to 1 if you have the `fseek64' function. */
 #undef HAVE_FSEEK64
 
@@ -2861,24 +2852,9 @@
 /* Define to `int' if <sys/types.h> doesn't define. */
 #undef gid_t
 
-/* Whether to build gpext_registry as shared module */
-#undef gpext_registry_init
-
-/* Whether to build gpext_scripts as shared module */
-#undef gpext_scripts_init
-
-/* Whether to build gpext_security as shared module */
-#undef gpext_security_init
-
 /* Whether to build idmap_ad as shared module */
 #undef idmap_ad_init
 
-/* Whether to build idmap_adex as shared module */
-#undef idmap_adex_init
-
-/* Whether to build idmap_hash as shared module */
-#undef idmap_hash_init
-
 /* Whether to build idmap_ldap as shared module */
 #undef idmap_ldap_init
 
@@ -3006,9 +2982,6 @@
 #undef static_decl_charset
 
 /* Decl of Static init functions */
-#undef static_decl_gpext
-
-/* Decl of Static init functions */
 #undef static_decl_idmap
 
 /* Decl of Static init functions */
@@ -3030,9 +3003,6 @@
 #undef static_init_charset
 
 /* Static init functions */
-#undef static_init_gpext
-
-/* Static init functions */
 #undef static_init_idmap
 
 /* Static init functions */
@@ -3068,9 +3038,6 @@
 /* Define to `unsigned long long' if <sys/types.h> does not define. */
 #undef uintptr_t
 
-/* Whether to build vfs_acl_xattr as shared module */
-#undef vfs_acl_xattr_init
-
 /* Whether to build vfs_afsacl as shared module */
 #undef vfs_afsacl_init
 
@@ -3155,9 +3122,6 @@
 /* Whether to build vfs_shadow_copy as shared module */
 #undef vfs_shadow_copy_init
 
-/* Whether to build vfs_smb_traffic_analyzer as shared module */
-#undef vfs_smb_traffic_analyzer_init
-
 /* Whether to build vfs_solarisacl as shared module */
 #undef vfs_solarisacl_init
 

Modified: branches/samba/upstream/source/include/ctdbd_conn.h
===================================================================
--- branches/samba/upstream/source/include/ctdbd_conn.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/ctdbd_conn.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -66,12 +66,5 @@
 NTSTATUS ctdbd_register_reconfigure(struct ctdbd_connection *conn);
 
 NTSTATUS ctdbd_persistent_store(struct ctdbd_connection *conn, uint32_t db_id, TDB_DATA key, TDB_DATA data);
-NTSTATUS ctdbd_start_persistent_update(struct ctdbd_connection *conn, uint32_t db_id, TDB_DATA key, TDB_DATA data);
-NTSTATUS ctdbd_cancel_persistent_update(struct ctdbd_connection *conn, uint32_t db_id, TDB_DATA key, TDB_DATA data);
 
-NTSTATUS ctdbd_control_local(struct ctdbd_connection *conn, uint32 opcode, 
-			     uint64_t srvid, uint32_t flags, TDB_DATA data, 
-			     TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
-			     int *cstatus);
-
 #endif /* _CTDBD_CONN_H */

Modified: branches/samba/upstream/source/include/dbwrap.h
===================================================================
--- branches/samba/upstream/source/include/dbwrap.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/dbwrap.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -54,6 +54,11 @@
 			   int hash_size, int tdb_flags,
 			   int open_flags, mode_t mode);
 
+struct db_context *db_open_trans(TALLOC_CTX *mem_ctx,
+				 const char *name,
+				 int hash_size, int tdb_flags,
+				 int open_flags, mode_t mode);
+
 struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx);
 
 struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
@@ -67,6 +72,7 @@
 			        int open_flags, mode_t mode);
 
 struct messaging_context;
+void db_tdb2_setup_messaging(struct messaging_context *msg_ctx, bool server);
 
 #ifdef CLUSTER_SUPPORT
 struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,

Modified: branches/samba/upstream/source/include/doserr.h
===================================================================
--- branches/samba/upstream/source/include/doserr.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/doserr.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -202,19 +202,13 @@
 #define WERR_SERVICE_ALREADY_RUNNING W_ERROR(1056)
 #define WERR_SERVICE_DISABLED W_ERROR(1058)
 #define WERR_SERVICE_NEVER_STARTED W_ERROR(1077)
-#define WERR_NOT_FOUND W_ERROR(1168)
 #define WERR_INVALID_COMPUTER_NAME W_ERROR(1210)
 #define WERR_INVALID_DOMAINNAME W_ERROR(1212)
 #define WERR_MACHINE_LOCKED W_ERROR(1271)
-#define WERR_REVISION_MISMATCH W_ERROR(1306)
 #define WERR_NO_LOGON_SERVERS W_ERROR(1311)
 #define WERR_NO_SUCH_LOGON_SESSION W_ERROR(1312)
 #define WERR_USER_ALREADY_EXISTS W_ERROR(1316)
 #define WERR_NO_SUCH_USER W_ERROR(1317)
-#define WERR_GROUP_EXISTS W_ERROR(1318)
-#define WERR_MEMBER_IN_GROUP W_ERROR(1320)
-#define WERR_USER_NOT_IN_GROUP W_ERROR(1321)
-#define WERR_WRONG_PASSWORD W_ERROR(1323)
 #define WERR_PASSWORD_RESTRICTION W_ERROR(1325)
 #define WERR_LOGON_FAILURE W_ERROR(1326)
 #define WERR_NO_SUCH_DOMAIN W_ERROR(1355)
@@ -222,10 +216,6 @@
 #define WERR_INVALID_SECURITY_DESCRIPTOR W_ERROR(1338)
 #define WERR_INVALID_DOMAIN_STATE W_ERROR(1353)
 #define WERR_INVALID_DOMAIN_ROLE W_ERROR(1354)
-#define WERR_SPECIAL_ACCOUNT W_ERROR(1371)
-#define WERR_NO_SUCH_ALIAS W_ERROR(1376)
-#define WERR_MEMBER_IN_ALIAS W_ERROR(1378)
-#define WERR_ALIAS_EXISTS W_ERROR(1379)
 #define WERR_TIME_SKEW W_ERROR(1398)
 #define WERR_EVENTLOG_FILE_CORRUPT W_ERROR(1500)
 #define WERR_SERVER_UNAVAILABLE W_ERROR(1722)
@@ -238,9 +228,6 @@
 #define WERR_DEVICE_NOT_AVAILABLE W_ERROR(4319)
 #define WERR_STATUS_MORE_ENTRIES   W_ERROR(0x0105)
 
-#define WERR_DS_DRA_BAD_DN W_ERROR(8439)
-#define WERR_DS_DRA_BAD_NC W_ERROR(8440)
-
 #define WERR_PRINTER_DRIVER_ALREADY_INSTALLED W_ERROR(ERRdriveralreadyinstalled)
 #define WERR_UNKNOWN_PORT W_ERROR(ERRunknownprinterport)
 #define WERR_UNKNOWN_PRINTER_DRIVER W_ERROR(ERRunknownprinterdriver)
@@ -284,8 +271,6 @@
 #define WERR_BUF_TOO_SMALL		W_ERROR(NERR_BASE+23)
 #define WERR_JOB_NOT_FOUND		W_ERROR(NERR_BASE+51)
 #define WERR_DEST_NOT_FOUND		W_ERROR(NERR_BASE+52)
-#define WERR_GROUP_NOT_FOUND		W_ERROR(NERR_BASE+120)
-#define WERR_USER_NOT_FOUND		W_ERROR(NERR_BASE+121)
 #define WERR_USER_EXISTS		W_ERROR(NERR_BASE+124)
 #define WERR_NET_NAME_NOT_FOUND		W_ERROR(NERR_BASE+210)
 #define WERR_NOT_LOCAL_DOMAIN		W_ERROR(NERR_BASE+220)

Modified: branches/samba/upstream/source/include/dynconfig.h
===================================================================
--- branches/samba/upstream/source/include/dynconfig.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/dynconfig.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,7 +23,23 @@
  * @brief Exported global configurations.
  **/
 
+#if 0
 const char *get_dyn_SBINDIR(void);
+const char *get_dyn_BINDIR(void);
+const char *get_dyn_SWATDIR(void);
+
+extern char dyn_CONFIGFILE[1024];
+extern char dyn_LOGFILEBASE[1024], dyn_LMHOSTSFILE[1024];
+extern char dyn_LIBDIR[1024];
+extern char dyn_CODEPAGEDIR[1024];
+extern fstring dyn_SHLIBEXT;
+extern char dyn_LOCKDIR[1024];
+extern char dyn_PIDDIR[1024];
+extern char dyn_SMB_PASSWD_FILE[1024];
+extern char dyn_PRIVATE_DIR[1024];
+#endif
+
+const char *get_dyn_SBINDIR(void);
 const char *set_dyn_SBINDIR(const char *newpath);
 bool is_default_dyn_SBINDIR(void);
 
@@ -55,10 +71,6 @@
 const char *set_dyn_LIBDIR(const char *newpath);
 bool is_default_dyn_LIBDIR(void);
 
-const char *get_dyn_MODULESDIR(void);
-const char *set_dyn_MODULESDIR(const char *newpath);
-bool is_default_dyn_MODULESDIR(void);
-
 const char *get_dyn_SHLIBEXT(void);
 const char *set_dyn_SHLIBEXT(const char *newpath);
 bool is_default_dyn_SHLIBEXT(void);
@@ -79,11 +91,10 @@
 const char *set_dyn_PRIVATE_DIR(const char *newpath);
 bool is_default_dyn_PRIVATE_DIR(void);
 
-/*
- * For STATEDIR and CACHEDIR, there are only getter functions.
- * In non-FHS-mode, these are configurable via LOCKDIR.
- * In FHS-mode, these are their own fixed directories.
- */
 const char *get_dyn_STATEDIR(void);
+const char *set_dyn_STATEDIR(const char *newpath);
+bool is_default_dyn_STATEDIR(void);
 
 const char *get_dyn_CACHEDIR(void);
+const char *set_dyn_CACHEDIR(const char *newpath);
+bool is_default_dyn_CACHEDIR(bool);

Modified: branches/samba/upstream/source/include/fake_file.h
===================================================================
--- branches/samba/upstream/source/include/fake_file.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/fake_file.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -31,9 +31,19 @@
 #define FAKE_FILE_NAME_QUOTA_WIN32	"\\$Extend\\$Quota:$Q:$INDEX_ALLOCATION"
 #define FAKE_FILE_NAME_QUOTA_UNIX	"$Extend/$Quota:$Q:$INDEX_ALLOCATION"
 
-struct fake_file_handle {
+typedef struct _FAKE_FILE_HANDLE {
 	enum FAKE_FILE_TYPE type;
-	void *private_data;
-};
+	TALLOC_CTX *mem_ctx;
+	void *pd; /* for private data */
+	void (*free_pd)(void **pd); /* free private_data */
+} FAKE_FILE_HANDLE;
 
+typedef struct _FAKE_FILE {
+	const char *name;
+	enum FAKE_FILE_TYPE type;
+	void *(*init_pd)(TALLOC_CTX *men_ctx);
+	void (*free_pd)(void **pd);
+} FAKE_FILE;
+
+
 #endif /* _FAKE_FILE_H */

Modified: branches/samba/upstream/source/include/gpo.h
===================================================================
--- branches/samba/upstream/source/include/gpo.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/gpo.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,7 +1,7 @@
 /*
  *  Unix SMB/CIFS implementation.
  *  Group Policy Object Support
- *  Copyright (C) Guenther Deschner 2005-2008
+ *  Copyright (C) Guenther Deschner 2005-2007
  *
  *  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
@@ -22,8 +22,7 @@
 	GP_LINK_MACHINE	= 1,
 	GP_LINK_SITE	= 2,
 	GP_LINK_DOMAIN	= 3,
-	GP_LINK_OU	= 4,
-	GP_LINK_LOCAL	= 5 /* for convenience */
+	GP_LINK_OU	= 4
 };
 
 /* GPO_OPTIONS */
@@ -34,17 +33,6 @@
 #define GPO_LIST_FLAG_MACHINE	0x00000001
 #define GPO_LIST_FLAG_SITEONLY	0x00000002
 
-/* following flags from http://support.microsoft.com/kb/312164/EN-US/ */
-#define GPO_INFO_FLAG_MACHINE			0x00000001
-#define GPO_INFO_FLAG_BACKGROUND	 	0x00000010
-#define GPO_INFO_FLAG_SLOWLINK			0x00000020
-#define GPO_INFO_FLAG_VERBOSE			0x00000040
-#define GPO_INFO_FLAG_NOCHANGES			0x00000080
-#define GPO_INFO_FLAG_LINKTRANSITION		0x00000100
-#define GPO_INFO_FLAG_LOGRSOP_TRANSITION	0x00000200
-#define GPO_INFO_FLAG_FORCED_REFRESH		0x00000400
-#define GPO_INFO_FLAG_SAFEMODE_BOOT		0x00000800
-
 #define GPO_VERSION_USER(x) (x >> 16)
 #define GPO_VERSION_MACHINE(x) (x & 0xffff)
 
@@ -100,59 +88,11 @@
 	char **extensions_guid;
 	char **snapins;
 	char **snapins_guid;
-	struct GP_EXT *next, *prev;
 };
 
 #define GPO_CACHE_DIR "gpo_cache"
 #define GPT_INI "GPT.INI"
-#define GPO_REFRESH_INTERVAL 60*90
 
-#define GPO_REG_STATE_MACHINE "State\\Machine"
-
-enum gp_reg_action {
-	GP_REG_ACTION_NONE = 0,
-	GP_REG_ACTION_ADD_VALUE = 1,
-	GP_REG_ACTION_ADD_KEY = 2,
-	GP_REG_ACTION_DEL_VALUES = 3,
-	GP_REG_ACTION_DEL_VALUE = 4,
-	GP_REG_ACTION_DEL_ALL_VALUES = 5,
-	GP_REG_ACTION_DEL_KEYS = 6,
-	GP_REG_ACTION_SEC_KEY_SET = 7,
-	GP_REG_ACTION_SEC_KEY_RESET = 8
-};
-
-struct gp_registry_entry {
-	enum gp_reg_action action;
-	const char *key;
-	const char *value;
-	struct registry_value *data;
-};
-
-struct gp_registry_value {
-	const char *value;
-	struct registry_value *data;
-};
-
-struct gp_registry_entry2 {
-	enum gp_reg_action action;
-	const char *key;
-	size_t num_values;
-	struct gp_registry_value **values;
-};
-
-struct gp_registry_entries {
-	size_t num_entries;
-	struct gp_registry_entry **entries;
-};
-
-struct gp_registry_context {
-	const struct nt_user_token *token;
-	const char *path;
-	struct registry_key *curr_key;
-};
-
 #define GP_EXT_GUID_SECURITY "827D319E-6EAC-11D2-A4EA-00C04F79F83A"
 #define GP_EXT_GUID_REGISTRY "35378EAC-683F-11D2-A89A-00C04FBBCFA2"
 #define GP_EXT_GUID_SCRIPTS  "42B5FAAE-6536-11D2-AE5A-0000F87571E3"
-
-#include "libgpo/gpext/gpext.h"

Modified: branches/samba/upstream/source/include/idmap.h
===================================================================
--- branches/samba/upstream/source/include/idmap.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/idmap.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -31,21 +31,24 @@
    Updated to 3 for enum types by JRA. */
 
 /* Updated to 4, completely new interface, SSS */
-/* Updated to 5, simplified interface by Volker */
 
-#define SMB_IDMAP_INTERFACE_VERSION 5
+#define SMB_IDMAP_INTERFACE_VERSION 4
 
 struct idmap_domain {
 	const char *name;
+	bool default_domain;
+	bool readonly;
+	void *private_data;
 	struct idmap_methods *methods;
-	void *private_data;
+	bool initialized;
+	const char *params;
 };
 
 /* Filled out by IDMAP backends */
 struct idmap_methods {
 
 	/* Called when backend is first loaded */
-	NTSTATUS (*init)(struct idmap_domain *dom, const char *params);
+	NTSTATUS (*init)(struct idmap_domain *dom);
 
 	/* Map an array of uids/gids to SIDs.  The caller specifies
 	   the uid/gid and type. Gets back the SID. */

Modified: branches/samba/upstream/source/include/includes.h
===================================================================
--- branches/samba/upstream/source/include/includes.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/includes.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -702,7 +702,6 @@
 #include "rpc_perfcount_defs.h"
 #include "librpc/gen_ndr/notify.h"
 #include "librpc/gen_ndr/xattr.h"
-#include "librpc/rpc/dcerpc.h"
 #include "nt_printing.h"
 #include "idmap.h"
 #include "client.h"
@@ -723,10 +722,21 @@
 #include "memcache.h"
 #include "async_req.h"
 #include "async_smb.h"
-#include "async_sock.h"
 
 #include "lib/smbconf/smbconf.h"
 
+/* used in net.c */
+struct functable {
+	const char *funcname;
+	int (*fn)(int argc, const char **argv);
+};
+
+struct functable2 {
+	const char *funcname;
+	int (*fn)(int argc, const char **argv);
+	const char *helptext;
+};
+
 /* Defines for wisXXX functions. */
 #define UNI_UPPER    0x1
 #define UNI_LOWER    0x2
@@ -794,26 +804,6 @@
 #include "proto.h"
 #endif
 
-#if defined(HAVE_POSIX_ACLS)
-#include "modules/vfs_posixacl.h"
-#endif
-
-#if defined(HAVE_TRU64_ACLS)
-#include "modules/vfs_tru64acl.h"
-#endif
-
-#if defined(HAVE_SOLARIS_ACLS) || defined(HAVE_UNIXWARE_ACLS)
-#include "modules/vfs_solarisacl.h"
-#endif
-
-#if defined(HAVE_HPUX_ACLS)
-#include "modules/vfs_hpuxacl.h"
-#endif
-
-#if defined(HAVE_IRIX_ACLS)
-#include "modules/vfs_irixacl.h"
-#endif
-
 #ifdef HAVE_LDAP
 #include "ads_protos.h"
 #endif
@@ -1164,7 +1154,8 @@
 
 /* Samba wrapper function for krb5 functionality. */
 bool setup_kaddr( krb5_address *pkaddr, struct sockaddr_storage *paddr);
-int create_kerberos_key_from_string(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype, bool no_salt);
+int create_kerberos_key_from_string(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype);
+int create_kerberos_key_from_string_direct(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype);
 bool get_auth_data_from_tkt(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, krb5_ticket *tkt);
 krb5_const_principal get_principal_from_tkt(krb5_ticket *tkt);
 krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
@@ -1234,7 +1225,7 @@
 					krb5_error_code error_code,
 					const krb5_principal server,
 					krb5_data *reply);
-krb5_enctype smb_get_enctype_from_kt_entry(krb5_keytab_entry *kt_entry);
+krb5_enctype smb_get_enctype_from_kt_entry(const krb5_keytab_entry *kt_entry);
 krb5_error_code smb_krb5_enctype_to_string(krb5_context context, 
  					    krb5_enctype enctype, 
 					    char **etype_s);
@@ -1242,19 +1233,6 @@
  				      const char *keytab_name, 
 				      bool write_access, 
 				      krb5_keytab *keytab);
-krb5_error_code smb_krb5_keytab_name(TALLOC_CTX *mem_ctx,
-				     krb5_context context,
-				     krb5_keytab keytab,
-				     const char **keytab_name);
-int smb_krb5_kt_add_entry_ext(krb5_context context,
-			      krb5_keytab keytab,
-			      krb5_kvno kvno,
-			      const char *princ_s,
-			      krb5_enctype *enctypes,
-			      krb5_data password,
-			      bool no_salt,
-			      bool keep_old_entries);
-
 #endif /* HAVE_KRB5 */
 
 

Copied: branches/samba/upstream/source/include/libmsrpc.h (from rev 2163, branches/samba/upstream/source/include/libmsrpc.h)
===================================================================
--- branches/samba/upstream/source/include/libmsrpc.h	                        (rev 0)
+++ branches/samba/upstream/source/include/libmsrpc.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,3045 @@
+/* 
+ *  Unix SMB/CIFS implementation.
+ *  MS-RPC client library API definitions/prototypes
+ *
+ *  Copyright (C) Chris Nicholls              2005.
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef LIBMSRPC_H
+#define LIBMSRPC_H
+
+
+#include "includes.h"
+#include "libsmbclient.h"
+#include "libsmb_internal.h"
+
+/*server capability levels*/
+#define SRV_WIN_NT4     1
+#define SRV_WIN_2K      2
+#define SRV_WIN_2K_SP3  3
+#define SRV_WIN_2K3     4
+
+/**@defgroup handle Server Handle*/
+/**@defgroup Library_Functions Library/Utility Functions*/
+/**@defgroup lsa_defs LSA Definitions*/
+/**@defgroup LSA_Functions LSA Functions*/
+/**@defgroup reg_defs Registry Definitions*/
+/**@defgroup Reg_Functions Registry Functions*/
+/**@defgroup sam_defs SAM Definitions*/
+/**@defgroup SAM_Functions SAM Functions*/
+/**@defgroup svc_defs Service Control Definitions*/
+/**@defgroup SCM_Functions Service Control Functions*/
+
+/**Operation was unsuccessful*/
+#define CAC_FAILURE           0
+/**Operation was successful*/
+#define CAC_SUCCESS           1
+/**Operation was only partially successful
+ *  an example of this is if you try to lookup a list of accounts to SIDs and not all accounts can be resolved*/
+#define CAC_PARTIAL_SUCCESS   2
+
+/**@ingroup CAC_errors Use this to see if the last operation failed - useful for enumeration functions that use multiple calls*/
+#define CAC_OP_FAILED(status) !NT_STATUS_IS_OK(status) && \
+                              NT_STATUS_V(status) != NT_STATUS_V(STATUS_SOME_UNMAPPED) && \
+                              NT_STATUS_V(status) != NT_STATUS_V(STATUS_NO_MORE_FILES) && \
+                              NT_STATUS_V(status) != NT_STATUS_V(NT_STATUS_NO_MORE_ENTRIES) && \
+                              NT_STATUS_V(status) != NT_STATUS_V(NT_STATUS_NONE_MAPPED) && \
+                              NT_STATUS_V(status) != NT_STATUS_V(NT_STATUS_GUIDS_EXHAUSTED)
+
+
+/**Privilege string constants*/
+#define CAC_SE_CREATE_TOKEN            "SeCreateTokenPrivilege"
+#define CAC_SE_ASSIGN_PRIMARY_TOKEN    "SeAssignPrimaryTokenPrivilege"
+#define CAC_SE_LOCK_MEMORY             "SeLockMemoryPrivilege"
+#define CAC_SE_INCREASE_QUOTA          "SeIncreaseQuotaPrivilege"
+#define CAC_SE_MACHINE_ACCOUNT         "SeMachineAccountPrivilege"
+#define CAC_SE_TCB                     "SeTcbPrivilege"
+#define CAC_SE_SECURITY                "SeSecurityPrivilege"
+#define CAC_SE_TAKE_OWNERSHIP          "SeTakeOwnershipPrivilege"
+#define CAC_SE_LOAD_DRIVER             "SeLoadDriverPrivilege"
+#define CAC_SE_SYSTEM_PROFILE          "SeSystemProfilePrivilege"
+#define CAC_SE_SYSTEM_TIME             "SeSystemtimePrivilege"
+#define CAC_SE_PROFILE_SINGLE_PROC     "SeProfileSingleProcessPrivilege"
+#define CAC_SE_INCREASE_BASE_PRIORITY  "SeIncreaseBasePriorityPrivilege"
+#define CAC_SE_CREATE_PAGEFILE         "SeCreatePagefilePrivilege"
+#define CAC_SE_CREATE_PERMANENT        "SeCreatePermanentPrivilege"
+#define CAC_SE_BACKUP                  "SeBackupPrivilege"
+#define CAC_SE_RESTORE                 "SeRestorePrivilege"
+#define CAC_SE_SHUTDOWN                "SeShutdownPrivilege"
+#define CAC_SE_DEBUG                   "SeDebugPrivilege"
+#define CAC_SE_AUDIT                   "SeAuditPrivilege"
+#define CAC_SE_SYSTEM_ENV              "SeSystemEnvironmentPrivilege"
+#define CAC_SE_CHANGE_NOTIFY           "SeChangeNotifyPrivilege"
+#define CAC_SE_REMOTE_SHUTDOWN         "SeRemoteShutdownPrivilege"
+#define CAC_SE_UNDOCK                  "SeUndockPrivilege"
+#define CAC_SE_SYNC_AGENT              "SeSyncAgentPrivilege"
+#define CAC_SE_ENABLE_DELEGATION       "SeEnableDelegationPrivilege"
+#define CAC_SE_MANAGE_VOLUME           "SeManageVolumePrivilege"
+#define CAC_SE_IMPERSONATE             "SeImpersonatePrivilege"
+#define CAC_SE_CREATE_GLOBAL           "SeCreateGlobalPrivilege"
+#define CAC_SE_PRINT_OPERATOR          "SePrintOperatorPrivilege"
+#define CAC_SE_NETWORK_LOGON           "SeNetworkLogonRight"
+#define CAC_SE_INTERACTIVE_LOGON       "SeInteractiveLogonRight"
+#define CAC_SE_BATCH_LOGON             "SeBatchLogonRight"
+#define CAC_SE_SERVICE_LOGON           "SeServiceLogonRight"
+#define CAC_SE_ADD_USERS               "SeAddUsersPrivilege"
+#define CAC_SE_DISK_OPERATOR           "SeDiskOperatorPrivilege"
+
+/**
+ * @addtogroup lsa_defs
+ * @{
+ */
+/**used to specify what data to retrieve using cac_LsaQueryTrustedDomainInformation*/
+#define CAC_INFO_TRUSTED_DOMAIN_NAME         0x1
+#define CAC_INFO_TRUSTED_DOMAIN_POSIX_OFFSET 0x3
+#define CAC_INFO_TRUSTED_DOMAIN_PASSWORD     0x4
+
+/**Used when requesting machine domain information*/
+#define CAC_DOMAIN_INFO 0x0003
+
+/**Used when requesting machine local information*/
+#define CAC_LOCAL_INFO  0x0005
+
+/**Stores information about a SID*/
+typedef struct _CACSIDINFO {
+   /**The actual SID*/
+   DOM_SID sid;
+   
+   /**The name of the object which maps to this SID*/
+   char *name;
+
+   /**The domain the SID belongs to*/
+   char *domain;
+} CacSidInfo;
+/* @} */
+
+/**
+ * @addtogroup reg_defs
+ * @{
+ */
+/**Null terminated string*/
+typedef char*  REG_SZ_DATA;
+
+/**Null terminated string with windows environment variables that should be expanded*/
+typedef char*  REG_EXPAND_SZ_DATA;
+
+/**Binary data of some kind*/
+typedef struct _REGBINARYDATA {
+   uint32 data_length;
+   uint8 * data;
+} REG_BINARY_DATA;
+   
+/**32-bit (little endian) number*/
+typedef uint32 REG_DWORD_DATA;
+
+/**32-bit big endian number*/
+typedef uint32 REG_DWORD_BE_DATA;
+
+/**array of strings*/
+typedef struct _REGMULTISZDATA {
+   uint32 num_strings;
+
+   char **strings;
+} REG_MULTI_SZ_DATA;
+
+typedef union _REGVALUEDATA {
+   REG_SZ_DATA          reg_sz;
+   REG_EXPAND_SZ_DATA   reg_expand_sz;
+   REG_BINARY_DATA      reg_binary;
+   REG_DWORD_DATA       reg_dword;
+   REG_DWORD_BE_DATA    reg_dword_be;
+   REG_MULTI_SZ_DATA    reg_multi_sz;
+} REG_VALUE_DATA;
+/**@}*/
+
+/**
+ * @addtogroup sam_defs
+ * @{
+ */
+
+#define CAC_USER_RID  0x1
+#define CAC_GROUP_RID 0x2
+
+typedef struct _CACLOOKUPRIDSRECORD {
+   char *name;
+   uint32 rid;
+
+   /**If found, this will be one of:
+    * - CAC_USER_RID
+    * - CAC_GROUP_RID
+    */
+   uint32 type;
+   
+   /*if the name or RID was looked up, then found = True*/
+   bool found;
+} CacLookupRidsRecord;
+
+typedef struct _CACUSERINFO {
+   /**Last logon time*/
+   time_t logon_time;
+
+   /**Last logoff time*/
+   time_t logoff_time;
+
+   /**Last kickoff time*/
+   time_t kickoff_time;
+
+   /**Last password set time*/
+   time_t pass_last_set_time;
+
+   /**Time password can change*/
+   time_t pass_can_change_time;
+
+   /**Time password must change*/
+   time_t pass_must_change_time;
+
+   /**LM user password*/
+   uint8 lm_password[8];
+
+   /**NT user password*/
+   uint8 nt_password[8];
+
+   /**User's RID*/
+   uint32 rid;
+
+   /**RID of primary group*/
+   uint32 group_rid;
+
+   /**User's ACB mask*/
+   uint32 acb_mask;
+
+   /**Bad password count*/
+   uint16 bad_passwd_count;
+
+   /**Number of logons*/
+   uint16 logon_count;
+
+   /**Change password at next logon?*/
+   bool pass_must_change;
+
+   /**Username*/
+   char *username;
+
+   /**User's full name*/
+   char *full_name;
+
+   /**User's home directory*/
+   char *home_dir;
+
+   /**Home directory drive*/
+   char *home_drive;
+
+   /**Logon script*/
+   char *logon_script;
+
+   /**Path to profile*/
+   char *profile_path;
+
+   /**Account description*/
+   char *description;
+
+   /**Login from workstations*/
+   char *workstations;
+
+   char *dial;
+
+   /**Possible logon hours*/
+   LOGON_HRS *logon_hours;
+
+} CacUserInfo;
+
+typedef struct _CACGROUPINFO {
+   /**Group name*/
+   char *name;
+
+   /**Description*/
+   char *description;
+ 
+   /**Number of members*/
+   uint32 num_members;
+} CacGroupInfo, CacAliasInfo;
+
+/**Represents a period (duration) of time*/
+typedef struct _CACTIME {
+   /**Number of days*/
+   uint32 days;
+
+   /**Number of hours*/
+   uint32 hours;
+
+   /**Number of minutes*/
+   uint32 minutes;
+
+   /**number of seconds*/
+   uint32 seconds;
+} CacTime;
+
+
+typedef struct _CACDOMINFO {
+   /**The server role. Should be one of:
+    *   ROLE_STANDALONE
+    *   ROLE_DOMAIN_MEMBER
+    *   ROLE_DOMAIN_BDC
+    *   ROLE_DOMAIN_PDC
+    *   see include/smb.h
+    */
+   uint32 server_role;
+
+   /**Number of domain users*/
+   uint32 num_users;
+
+   /**Number of domain groups*/
+   uint32 num_domain_groups;
+   
+   /**Number of local groups*/
+   uint32 num_local_groups;
+
+   /**Comment*/
+   char *comment;
+
+   /**Domain name*/
+   char *domain_name;
+
+   /**Server name*/
+   char *server_name;
+
+   /**Minimum password length*/
+   uint16 min_pass_length;
+
+   /**How many previous passwords to remember - ie, password cannot be the same as N previous passwords*/
+   uint16 pass_history;
+
+   /**How long (from now) before passwords expire*/
+   CacTime expire;
+
+   /**How long (from now) before passwords can be changed*/
+   CacTime min_pass_age;
+
+   /**How long users are locked out for too many bad password attempts*/
+   CacTime lockout_duration;
+
+   /**How long before lockouts are reset*/
+   CacTime lockout_reset;
+
+   /**How many bad password attempts before lockout occurs*/
+   uint16 num_bad_attempts;
+} CacDomainInfo;
+
+/**@}*/ /*sam_defs*/
+
+/**@addtogroup svc_defs
+ * @{
+ */
+typedef struct _CACSERVICE {
+   /**The service name*/
+   char *service_name;
+
+   /**The display name of the service*/
+   char *display_name;
+   
+   /**Current status of the service - see include/rpc_svcctl.h for SERVICE_STATUS definition*/
+   SERVICE_STATUS status;
+} CacService;
+
+typedef struct __CACSERVICECONFIG {
+   /**The service type*/
+   uint32 type;
+
+   /**The start type. Should be one of:
+    * - SVCCTL_BOOT_START
+    * - SVCCTL_SYSTEM_START
+    * - SVCCTL_AUTO_START
+    * - SVCCTL_DEMAND_START
+    */
+   uint32 start_type;
+
+   uint32 error_control;
+
+   /**Path to executable*/
+   char *exe_path;
+
+   /***/
+   char *load_order_group;
+
+   uint32 tag_id;
+
+   /**Any dependencies for the service*/
+   char *dependencies;
+
+   /**Run as...*/
+   char *start_name;
+
+   /**Service display name*/
+   char *display_name;
+   
+} CacServiceConfig;
+/**@}*/ /*svc_defs*/
+
+#include "libmsrpc_internal.h"
+
+/**
+ * @addtogroup handle
+ * @{
+ */
+
+/**
+ * Server handle used to keep track of client/server/pipe information. Use cac_NewServerHandle() to allocate. 
+ * Initiliaze as many values as possible before calling cac_Connect(). 
+ * 
+ * @note When allocating memory for the fields, use SMB_MALLOC() (or equivalent) instead of talloc() (or equivalent) -  
+ * If memory is not allocated for a field, cac_Connect will allocate sizeof(fstring) bytes for it.
+ * 
+ * @note It may be wise to allocate large buffers for these fields and strcpy data into them.
+ *
+ * @see cac_NewServerHandle()
+ * @see cac_FreeHandle()
+ */
+typedef struct _CACSERVERHANDLE {
+   /** debug level
+    */
+   int debug;
+
+   /** netbios name used to make connections
+    */
+   char *netbios_name;
+
+   /** domain name used to make connections
+    */
+   char *domain;
+
+   /** username used to make connections
+    */
+   char *username;
+
+   /** user's password plain text string
+    */
+   char *password;
+
+   /** name or IP address of server we are currently working with
+    */
+   char *server;
+
+   /**stores the latest NTSTATUS code
+    */
+   NTSTATUS status;
+   
+   /** internal. do not modify!
+    */
+   struct CacServerHandleInternal _internal;
+
+} CacServerHandle;
+
+/*@}*/
+
+/**internal function. do not call this function*/
+SMBCSRV *cac_GetServer(CacServerHandle *hnd);
+
+
+/** @addtogroup Library_Functions
+ * @{
+ */
+/**
+ * Initializes the library - do not need to call this function.  Open's smb.conf as well as initializes logging.
+ * @param debug Debug level for library to use
+ */
+
+void cac_Init(int debug);
+
+/**
+ * Creates an un-initialized CacServerHandle
+ * @param allocate_fields If True, the function will allocate sizeof(fstring) bytes for all char * fields in the handle
+ * @return - un-initialized server handle
+ *         - NULL if no memory could be allocated
+ */
+CacServerHandle * cac_NewServerHandle(bool allocate_fields);
+
+/**
+ * Specifies the smbc_get_auth_data_fn to use if you do not want to use the default.
+ * @param hnd non-NULL server handle
+ * @param auth_fn  auth_data_fn to set in server handle
+ */
+
+void cac_SetAuthDataFn(CacServerHandle *hnd, smbc_get_auth_data_fn auth_fn);
+
+/** Use your own libsmbclient context - not necessary. 
+ * @note You must still call cac_Connect() after specifying your own libsmbclient context
+ * @param hnd Initialized, but not connected CacServerHandle
+ * @param ctx The libsmbclient context you would like to use.
+ */
+void cac_SetSmbcContext(CacServerHandle *hnd, SMBCCTX *ctx);
+
+/** Connects to a specified server.  If there is already a connection to a different server, 
+ *    it will be cleaned up before connecting to the new server.
+ * @param hnd   Pre-initialized CacServerHandle
+ * @param srv   (Optional) Name or IP of the server to connect to.  If NULL, server from the CacServerHandle will be used.
+ *
+ * @return CAC_FAILURE if the operation could not be completed successfully (hnd->status will also be set with a NTSTATUS code)
+ * @return CAC_SUCCESS if the operation succeeded
+ */            
+int cac_Connect(CacServerHandle *hnd, const char *srv);
+
+
+/**
+ * Cleans up any data used by the CacServerHandle. If the libsmbclient context was set using cac_SetSmbcContext(), it will not be free'd. 
+ * @param hnd the CacServerHandle to destroy
+ */
+void cac_FreeHandle(CacServerHandle * hnd);
+
+/**
+ * Initializes a CacTime structure based on an NTTIME structure
+ *  If the function fails, then the CacTime structure will be zero'd out
+ */
+void cac_InitCacTime(CacTime *cactime, NTTIME nttime);
+
+/**
+ * Called by cac_NewServerHandle() if allocate_fields = True. You can call this if you want to, allocates sizeof(fstring) char's for every char * field
+ * @param hnd Uninitialized server handle
+ * @return CAC_FAILURE Memory could not be allocated
+ * @return CAC_SUCCESS Memory was allocated
+ */
+int cac_InitHandleMem(CacServerHandle *hnd);
+
+/**
+ * Default smbc_get_auth_data_fn for libmsrpc. This function is called when libmsrpc needs to get more information about the 
+ * client (username/password, workgroup). 
+ * This function provides simple prompts to the user to enter the information. This description his here so you know how to re-define this function.
+ * @see cac_SetAuthDataFn()
+ * @param pServer Name/IP of the server to connect to. 
+ * @param pShare Share name to connect to
+ * @param pWorkgroup libmsrpc passes in the workgroup/domain name from hnd->domain. It can be modified in the function.
+ * @param maxLenWorkgroup The maximum length of a string pWogroup can hold.
+ * @param pUsername libmsrpc passes in the username from hnd->username. It can be modified in the function.
+ * @param maxLenUsername The maximum length of a string pUsername can hold.
+ * @param pPassword libmsrpc pass in the password from hnd->password. It can be modified in the function.
+ * @param maxLenPassword The maximum length  of a string pPassword can hold.
+ */
+void cac_GetAuthDataFn(const char * pServer,
+                 const char * pShare,
+                 char * pWorkgroup,
+                 int maxLenWorkgroup,
+                 char * pUsername,
+                 int maxLenUsername,
+                 char * pPassword,
+                 int maxLenPassword);
+
+
+/**@}*/
+
+/*****************
+ * LSA Functions *
+ *****************/
+
+/** @addtogroup LSA_Functions
+ * @{
+ */
+
+struct LsaOpenPolicy {
+   /**Inputs*/
+   struct {
+      /**Access Mask. Refer to Security Access Masks in include/rpc_secdes.h*/
+      uint32 access;
+
+      /**Use security quality of service? (True/False)*/
+      bool security_qos;
+   } in;
+
+   /**Outputs*/
+   struct {
+      /**Handle to the open policy (needed for all other operations)*/
+      POLICY_HND *pol;
+   } out;
+};
+
+/** 
+ * Opens a policy handle on a remote machine.
+ * @param hnd fully initialized CacServerHandle for remote machine
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE if the policy could not be opened. hnd->status set with appropriate NTSTATUS
+ * @return CAC_SUCCESS if the policy could be opened, the policy handle can be found
+ */
+int cac_LsaOpenPolicy(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaOpenPolicy *op);
+
+
+/** 
+ * Closes an  LSA policy handle (Retrieved using cac_LsaOpenPolicy).
+ *   If successful, the handle will be closed on the server, and memory for pol will be freed
+ * @param hnd - An initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param pol - the policy handle to close
+ * @return CAC_FAILURE could not close the policy handle, hnd->status is set to the appropriate NTSTATUS error code
+ * @return CAC_SUCCESS the policy handle was closed 
+ */
+int cac_LsaClosePolicy(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *pol);
+
+
+struct LsaGetNamesFromSids {
+   struct {
+      /**handle to and open LSA policy*/
+      POLICY_HND *pol;
+      
+      /**the number of SIDs to lookup*/
+      uint32 num_sids;
+      
+      /**array of SIDs to lookup*/
+      DOM_SID *sids;
+   } in;
+
+   struct {
+      /**The number of names returned (in case of CAC_PARTIAL_SUCCESS)*/
+      uint32 num_found;
+
+      /**array of SID info each index is one sid */
+      CacSidInfo *sids;
+
+      /**in case of partial success, an array of SIDs that could not be looked up (NULL if all sids were looked up)*/
+      DOM_SID *unknown;
+   } out;
+};
+
+/** 
+ * Looks up the names for a list of SIDS
+ * @param hnd initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op  input and output parameters 
+ * @return CAC_FAILURE none of the SIDs could be looked up hnd->status is set with appropriate NTSTATUS error code
+ * @return CAC_SUCCESS all of the SIDs were translated and a list of names has been output
+ * @return CAC_PARTIAL_SUCCESS not all of the SIDs were translated, as a result the number of returned names is less than the original list of SIDs
+ */
+int cac_LsaGetNamesFromSids(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaGetNamesFromSids *op);
+
+struct LsaGetSidsFromNames {
+   struct {
+      /**handle to an open LSA policy*/
+      POLICY_HND *pol;
+
+      /**number of SIDs to lookup*/
+      uint32 num_names;
+
+      /**array of strings listing the names*/
+      char **names;
+   } in;
+
+   struct {
+      /**The number of SIDs returned (in case of partial success*/
+      uint32 num_found;
+
+      /**array of SID info for the looked up names*/
+      CacSidInfo *sids;
+
+      /**in case of partial success, the names that were not looked up*/
+      char **unknown;
+   } out;
+};
+
+/** 
+ * Looks up the SIDs for a list of names
+ * @param hnd initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op  input and output parameters 
+ * @return CAC_FAILURE none of the SIDs could be looked up hnd->status is set with appropriate NTSTATUS error code
+ * @return CAC_SUCCESS all of the SIDs were translated and a list of names has been output
+ * @return CAC_PARTIAL_SUCCESS not all of the SIDs were translated, as a result the number of returned names is less than the original list of SIDs
+ */
+int cac_LsaGetSidsFromNames(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaGetSidsFromNames *op);
+
+struct LsaFetchSid {
+   struct {
+      /**handle to an open LSA policy*/
+      POLICY_HND *pol;
+
+      /**can be CAC_LOCAL_INFO, CAC_DOMAIN_INFO, or (CAC_LOCAL_INFO | CAC_DOMAIN_INFO)*/
+      uint16 info_class;
+   } in;
+
+   struct {
+      /**the machine's local SID and domain name (NULL if not asked for)*/
+      CacSidInfo *local_sid;
+
+      /**the machine's domain SID and name (NULL if not asked for)*/
+      CacSidInfo *domain_sid;
+      
+   } out;
+};
+
+/** 
+ * Looks up the domain or local sid of a machine with an open LSA policy handle
+ * @param hnd initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op input and output parameters
+ * @return CAC_FAILURE if the SID could not be fetched
+ * @return CAC_SUCCESS if the SID was fetched
+ * @return CAC_PARTIAL_SUCCESS if you asked for both local and domain sids but only one was returned
+ */
+int cac_LsaFetchSid(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaFetchSid *op);
+
+struct LsaQueryInfoPolicy {
+   struct {
+      /**Open LSA policy handle on remote server*/
+      POLICY_HND *pol;
+   } in;
+
+   struct {
+      /**remote server's domain name*/
+      char *domain_name;
+
+      /**remote server's dns name*/
+      char *dns_name;
+
+      /**remote server's forest name*/
+      char *forest_name;
+
+      /**remote server's domain guid*/
+      struct GUID *domain_guid;
+
+      /**remote server's domain SID*/
+      DOM_SID *domain_sid;
+   } out;
+};
+
+/** 
+ * Retrieves information about the LSA machine/domain
+ * @param hnd initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op input and output parameters
+ *           Note: for pre-Windows 2000 machines, only op->out.SID and op->out.domain will be set. @see cac_LsaFetchSid
+ * @return - CAC_FAILURE if the operation was not successful. hnd->status will be set with an accurate NT_STATUS code
+ * @return CAC_SUCCESS the operation was successful.
+ */
+int cac_LsaQueryInfoPolicy(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaQueryInfoPolicy *op);
+
+struct LsaEnumSids {
+   struct {
+      /**Open LSA Policy handle*/
+      POLICY_HND *pol;
+
+      /**The prefered maximum number of SIDs returned per call*/
+      uint32 pref_max_sids;
+   } in;
+
+   struct {
+      /**used to keep track of how many sids have been retrieved over multiple calls
+       *  should be set to zero via ZERO_STRUCT() befrore the first call. Use the same struct LsaEnumSids for multiple calls*/
+      uint32 resume_idx;
+
+      /**The number of sids returned this call*/
+      uint32 num_sids;
+
+      /**Array of sids returned*/
+      DOM_SID *sids;
+
+   } out;
+};
+
+/** 
+ * Enumerates the SIDs in the LSA.  Can be enumerated in blocks by calling the function multiple times.
+ *  Example: while(cac_LsaEnumSids(hnd, mem_ctx, op) { ... }
+ * @param hnd - An initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE there was an error during operations OR there are no more results
+ * @return CAC_SUCCESS the operation completed and results were returned
+ */
+int cac_LsaEnumSids(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaEnumSids *op);
+
+struct LsaEnumAccountRights {
+   struct {
+      /**Open LSA Policy handle*/
+      POLICY_HND *pol;
+
+      /**(Optional) SID of the account - must supply either sid or name*/
+      DOM_SID *sid;
+
+      /**(Optional) name of the account - must supply either sid or name*/
+      char *name;
+   } in;
+
+   struct {
+      /**Count of rights for this account*/
+      uint32 num_privs;
+
+      /**array of privilege names*/
+      char **priv_names;
+   } out;
+};
+
+/** 
+ * Enumerates rights assigned to a given account. Takes a SID instead of account handle as input
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE the rights could not be retrieved. hnd->status is set with NT_STATUS code
+ * @return CAC_SUCCESS the operation was successful. 
+ */
+
+int cac_LsaEnumAccountRights(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaEnumAccountRights *op);
+
+struct LsaEnumTrustedDomains {
+   struct {
+      /**Open LSA policy handle*/
+      POLICY_HND *pol;
+   } in;
+
+   struct {
+      /**used to keep track of how many domains have been retrieved over multiple calls
+       *  should be set to zero via ZERO_STRUCT() before the first call. Use the same struct LsaEnumSids for multiple calls*/
+      uint32 resume_idx;
+      
+      /**The number of domains returned by the remote server this call*/
+      uint32 num_domains;
+
+      /**array of trusted domain names returned by the remote server*/
+      char **domain_names;
+
+      /**array of trusted domain sids returned by the remote server*/
+      DOM_SID *domain_sids;
+   } out;
+};
+     
+/** 
+ * Enumerates the trusted domains in the LSA.  
+ * @param hnd - An initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op - initialized parameters
+ * @return CAC_FAILURE there was an error during operations OR there are no more results
+ * @return CAC_SUCCESS the operation completed and results were returned
+ */
+int cac_LsaEnumTrustedDomains(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaEnumTrustedDomains *op);
+
+struct LsaOpenTrustedDomain {
+   struct {
+      /**an open LSA policy handle*/
+      POLICY_HND *pol;
+
+      /**SID of the trusted domain to open*/
+      DOM_SID *domain_sid;
+
+      /**Desired access on the open domain*/
+      uint32 access;
+   } in;
+
+   struct {
+      /**A handle to the policy that is opened*/
+      POLICY_HND *domain_pol;
+   } out;
+};
+
+/** 
+ * Opens a trusted domain by SID.
+ * @param hnd An initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op initialized I/O parameters
+ * @return CAC_FAILURE a handle to the domain could not be opened. hnd->status is set with approriate NT_STATUS code
+ * @return CAC_SUCCESS the domain was opened successfully
+ */
+int cac_LsaOpenTrustedDomain(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaOpenTrustedDomain *op);
+
+struct LsaQueryTrustedDomainInfo {
+   struct {
+      /**Open LSA policy handle*/
+      POLICY_HND *pol;
+
+      /**Info class of returned data*/
+      uint16 info_class;
+
+      /**(Optional)SID of trusted domain to query (must specify either SID or name of trusted domain)*/
+      DOM_SID *domain_sid;
+
+      /**(Optional)Name of trusted domain to query (must specify either SID or name of trusted domain)*/
+      char *domain_name;
+   } in;
+
+   struct {
+      /**information about the trusted domain*/
+      LSA_TRUSTED_DOMAIN_INFO *info;
+   } out;
+};
+
+/** 
+ * Retrieves information a trusted domain.
+ * @param hnd An initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op initialized I/O parameters
+ * @return CAC_FAILURE a handle to the domain could not be opened. hnd->status is set with approriate NT_STATUS code
+ * @return CAC_SUCCESS the domain was opened successfully
+ */
+
+int cac_LsaQueryTrustedDomainInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaQueryTrustedDomainInfo *op);
+
+struct LsaEnumPrivileges {
+   struct {
+      /**An open LSA policy handle*/
+      POLICY_HND *pol;
+
+      /**The _preferred_ maxinum number of privileges returned per call*/
+      uint32 pref_max_privs;
+   } in;
+
+   struct {
+      /**Used to keep track of how many privileges have been retrieved over multiple calls. Do not modify this value between calls*/
+      uint32 resume_idx;
+
+      /**The number of privileges returned this call*/
+      uint32 num_privs;
+
+      /**Array of privilege names*/
+      char **priv_names;
+
+      /**Array of high bits for privilege LUID*/
+      uint32 *high_bits;
+
+      /**Array of low bits for privilege LUID*/
+      uint32 *low_bits;
+   } out; 
+};
+
+/** 
+ * Enumerates the Privileges supported by the LSA.  Can be enumerated in blocks by calling the function multiple times.
+ *  Example: while(cac_LsaEnumPrivileges(hnd, mem_ctx, op) { ... }
+ * @param hnd An initialized and connected server handle
+ * @param mem_ctx Talloc context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE there was an error during operations OR there are no more results
+ * @return CAC_SUCCESS the operation completed and results were returned
+ * @see CAC_OP_FAILED()
+ */
+int cac_LsaEnumPrivileges(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaEnumPrivileges *op);
+
+struct LsaOpenAccount {
+   struct {
+      /**An open LSA policy handle*/
+      POLICY_HND *pol;
+
+      /**(Optional) account SID - must supply either sid or name*/
+      DOM_SID *sid;
+
+      /**(Optional) account name - must supply either sid or name*/
+      char *name;
+
+      /**desired access for the handle*/
+      uint32 access;
+   } in;
+
+   struct {
+      /**A handle to the opened user*/
+      POLICY_HND *user;
+   } out;
+};
+
+/** 
+ * Opens a handle to an account in the LSA
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE the account could not be opened. hnd->status has appropriate NT_STATUS code
+ * @return CAC_SUCCESS the account was opened
+ */
+int cac_LsaOpenAccount(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaOpenAccount *op);
+
+struct LsaAddPrivileges {
+   struct {
+      /**An open LSA policy handle*/
+      POLICY_HND *pol;
+
+      /**(Optional) The user's SID (must specify at least sid or name)*/
+      DOM_SID *sid;
+
+      /**(Optional) The user's name (must specify at least sid or name)*/
+      char *name;
+
+      /**The privilege names of the privileges to add for the account*/
+      char **priv_names;
+      
+      /**The number of privileges in the priv_names array*/
+      uint32 num_privs;
+
+   } in;
+};
+
+/** 
+ * Adds Privileges an account.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE the privileges could not be set. hnd->status has appropriate NT_STATUS code
+ * @return CAC_SUCCESS the privileges were set.
+ */
+int cac_LsaAddPrivileges(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaAddPrivileges *op);
+
+struct LsaRemovePrivileges {
+   struct {
+      /**An open handle to the LSA*/
+      POLICY_HND *pol;
+
+      /**(Optional) The account SID (must specify at least sid or name)*/
+      DOM_SID *sid;
+
+      /**(Optional) The account name (must specify at least sid or name)*/
+      char *name;
+
+      /**The privilege names of the privileges to remove from the account*/
+      char **priv_names;
+
+      /**The number of privileges in the priv_names array*/
+      uint32 num_privs;
+
+   } in;
+
+};
+
+/** 
+ * Removes a _specific_ set of privileges from an account
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE the privileges could not be removed. hnd->status is set with NT_STATUS code
+ * @return CAC_SUCCESS the privileges were removed 
+ */
+int cac_LsaRemovePrivileges(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaRemovePrivileges *op);
+
+struct LsaClearPrivileges {
+   struct {
+      /**An open handle to the LSA*/
+      POLICY_HND *pol;
+
+      /**(Optional) The user's SID (must specify at least sid or name)*/
+      DOM_SID *sid;
+
+      /**(Optional) The user's name (must specify at least sid or name)*/
+      char *name;
+   } in;
+
+};
+
+/** 
+ * Removes ALL privileges from an account
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE the operation was not successful, hnd->status set with NT_STATUS code
+ * @return CAC_SUCCESS the opeartion was successful.
+ */
+int cac_LsaClearPrivileges(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaClearPrivileges *op);
+
+/** 
+ * Sets an accounts priviliges. Removes all privileges and then adds specified privileges.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters 
+ * @return CAC_FAILURE The operation could not complete successfully
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_LsaSetPrivileges(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaAddPrivileges *op);
+
+struct LsaGetSecurityObject {
+   struct {
+      /**Open LSA policy handle*/
+      POLICY_HND *pol;
+   } in;
+
+   struct {
+      /**Returned security descriptor information*/
+      SEC_DESC_BUF *sec;
+   } out;
+};
+
+/**
+ * Retrieves Security Descriptor information about the LSA
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters 
+ * @return CAC_FAILURE The operation could not complete successfully
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_LsaGetSecurityObject(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct LsaGetSecurityObject *op);
+
+
+/**@}*/ /*LSA_Functions*/
+      
+/**********************
+ * Registry Functions *
+ *********************/
+
+/**@addtogroup Reg_Functions
+ * @{
+ */
+
+struct RegConnect {
+   struct {
+      /** must be one of : 
+       *    HKEY_CLASSES_ROOT, 
+       *    HKEY_LOCAL_MACHINE, 
+       *    HKEY_USERS, 
+       *    HKEY_PERFORMANCE_DATA,
+       */
+      int root;
+
+      /**desired access on the root key
+       * combination of: 
+       * REG_KEY_READ,
+       * REG_KEY_WRITE,
+       * REG_KEY_EXECUTE,
+       * REG_KEY_ALL,
+       * found in include/rpc_secdes.h*/
+      uint32 access;
+   } in;
+
+   struct {
+      POLICY_HND *key;
+   } out;
+};
+
+/** 
+ * Opens a handle to the registry on the server
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters 
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegConnect(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegConnect *op);
+
+/**
+ * Closes an open registry handle
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param key The Key/Handle to close 
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegClose(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *key);
+
+struct RegOpenKey {
+   struct {
+      /**(Optional)parent key. 
+       * If this is NULL, then cac_RegOpenKey() will attempt to connect to the registry, name MUST start with something like:<br>
+       *  HKEY_LOCAL_MACHINE\  or an abbreviation like HKCR\
+       *
+       *  supported root names:
+       *   - HKEY_LOCAL_MACHINE\ or HKLM\
+       *   - HKEY_CLASSES_ROOT\ or HKCR\
+       *   - HKEY_USERS\ or HKU\
+       *   - HKEY_PERFORMANCE_DATA or HKPD\
+       */
+      POLICY_HND *parent_key;
+
+      /**name/path of key*/
+      char *name;
+
+      /**desired access on this key*/
+      uint32 access;
+   } in;
+
+   struct {
+      POLICY_HND *key;
+   } out;
+};
+      
+/**
+ * Opens a registry key
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_RegOpenKey(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegOpenKey *op);
+
+struct RegEnumKeys {
+   struct {
+      /**enumerate subkeys of this key*/
+      POLICY_HND *key;
+
+      /**maximum number of keys to enumerate each call*/
+      uint32 max_keys;
+   } in;
+
+   struct {
+      /**keeps track of the index to resume enumerating*/
+      uint32 resume_idx;
+
+      /**the number of keys returned this call*/
+      uint32 num_keys;
+
+      /**array of key names*/
+      char **key_names;
+
+      /**class names of the keys*/
+      char **class_names;
+
+      /**last modification time of the key*/
+      time_t *mod_times;
+   } out;
+};
+
+/**
+ * Enumerates Subkeys of a given key. Can be run in a loop. Example: while(cac_RegEnumKeys(hnd, mem_ctx, op)) { ... }
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @see CAC_OP_FAILED()
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegEnumKeys(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegEnumKeys *op);
+
+
+struct RegCreateKey {
+   struct {
+      /**create a subkey of parent_key*/
+      POLICY_HND *parent_key;
+
+      /**name of the key to create*/
+      char *key_name;
+
+      /**class of the key*/
+      char *class_name;
+
+      /**Access mask to open the key with. See REG_KEY_* in include/rpc_secdes.h*/
+      uint32 access;
+   } in;
+
+   struct {
+      /**Open handle to the key*/
+      POLICY_HND *key;
+   } out;
+};
+
+/**
+ * Creates a registry key, if the key already exists, it will be opened __Creating keys is not currently working__.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parmeters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegCreateKey(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegCreateKey *op);
+
+struct RegDeleteKey {
+   struct {
+      /**handle to open registry key*/
+      POLICY_HND *parent_key;
+
+      /**name of the key to delete*/
+      char *name;
+
+      /**delete recursively. WARNING: this might not always work as planned*/
+      bool recursive;
+   } in;
+
+};
+
+/**
+ * Deletes a subkey of an open key. Note: if you run this with op->in.recursive == True, and the operation fails, it may leave the key in an inconsistent state.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_RegDeleteKey(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegDeleteKey *op);
+
+struct RegDeleteValue {
+   struct {
+      /**handle to open registry key*/
+      POLICY_HND *parent_key;
+
+      /**name of the value to delete*/
+      char *name;
+   } in;
+};
+
+/**
+ * Deletes a registry value.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegDeleteValue(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegDeleteValue *op);
+
+struct RegQueryKeyInfo {
+   struct {
+      /**Open handle to the key to query*/
+      POLICY_HND *key;
+   } in;
+
+   struct {
+      /**name of the key class*/
+      char *class_name;
+
+      /**number of subkeys of the key*/
+      uint32 num_subkeys;
+
+      /**length (in characters) of the longest subkey name*/
+      uint32 longest_subkey;
+
+      /**length (in characters) of the longest class name*/
+      uint32 longest_class;
+
+      /**number of values in this key*/
+      uint32 num_values;
+
+      /**length (in characters) of the longest value name*/
+      uint32 longest_value_name;
+
+      /**length (in bytes) of the biggest value data*/
+      uint32 longest_value_data;
+
+      /**size (in bytes) of the security descriptor*/
+      uint32 security_desc_size;
+
+      /**time of the last write*/
+      time_t last_write_time;
+   } out;
+};
+
+/**
+ * Retrieves information about an open key
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_RegQueryKeyInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegQueryKeyInfo *op);
+
+struct RegSaveKey {
+   struct {
+      /**Open key to be saved*/
+      POLICY_HND *key;
+
+      /**The path (on the remote computer) to save the file to*/
+      char *filename;
+   } in;
+};
+
+/**
+ * Saves a key to a file on the remote machine __Not currently working__.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_RegSaveKey(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegSaveKey *op);
+
+struct RegQueryValue {
+   struct {
+      /**handle to open registry key*/
+      POLICY_HND *key;
+
+      /**name of the value to query*/
+      char *val_name;
+   } in;
+
+   struct {
+      /**Value type.
+       * One of:
+       *  - REG_DWORD (equivalent to REG_DWORD_LE)
+       *  - REG_DWORD_BE
+       *  - REG_SZ
+       *  - REG_EXPAND_SZ
+       *  - REG_MULTI_SZ
+       *  - REG_BINARY
+       */
+      uint32 type;
+
+      /**The value*/
+      REG_VALUE_DATA *data;
+   } out;
+};
+
+/**
+ * Retrieves a value (type and data) _not currently working_.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_RegQueryValue(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegQueryValue *op);
+
+struct RegEnumValues {
+   struct {
+      /**handle to open key*/
+      POLICY_HND *key;
+
+      /**max number of values returned per call*/
+      uint32 max_values;
+
+   } in;
+
+   struct {
+      /**keeps track of the index to resume from - used over multiple calls*/
+      uint32 resume_idx;
+
+      /**the number of values that were returned this call*/
+      uint32 num_values;
+
+      /**Array of value types. A type can be one of:
+       *  - REG_DWORD (equivalent to REG_DWORD_LE)
+       *  - REG_DWORD_BE
+       *  - REG_SZ
+       *  - REG_EXPAND_SZ
+       *  - REG_MULTI_SZ
+       *  - REG_BINARY
+       */
+      uint32 *types;
+
+      /**array of strings storing the names of the values*/
+      char **value_names;
+
+      /**array of pointers to the value data returned*/
+      REG_VALUE_DATA **values;
+   } out;
+};
+
+/**
+ * Enumerates a number of Registry values in an open registry key.
+ * Can be run in a loop. Example: while(cac_RegEnumValues(hnd, mem_ctx, op)) { ... }
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @see CAC_OP_FAILED()
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegEnumValues(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegEnumValues *op);
+
+struct RegSetValue {
+   struct {
+      /**Handle to open registry key*/
+      POLICY_HND *key;
+
+      /**Name of the value*/
+      char *val_name;
+
+      /**Value type.
+       * One of:
+       *  - REG_DWORD (equivalent to REG_DWORD_LE)
+       *  - REG_DWORD_BE
+       *  - REG_SZ
+       *  - REG_EXPAND_SZ
+       *  - REG_MULTI_SZ
+       *  - REG_BINARY
+       */
+      uint32 type;
+
+      /**the value*/
+      REG_VALUE_DATA value;
+   } in;
+};
+
+/**
+ * Sets or creates value (type and data).
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegSetValue(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegSetValue *op);
+
+struct RegGetVersion {
+   struct {
+      /**open registry key*/
+      POLICY_HND *key;
+   } in;
+
+   struct {
+      /**version number*/
+      uint32 version;
+   } out;
+};
+
+/**
+ * Retrieves the registry version number
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegGetVersion(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegGetVersion *op);
+
+struct RegGetKeySecurity {
+   struct {
+      /**Handle to key to query*/
+      POLICY_HND *key;
+
+      /**Info that you want. Should be a combination of (1 or more or'd):
+       * - OWNER_SECURITY_INFORMATION
+       * - GROUP_SECURITY_INFORMATION
+       * - DACL_SECURITY_INFORMATION
+       * - SACL_SECURITY_INFORMATION
+       * - UNPROTECTED_SACL_SECURITY_INFORMATION
+       * - UNPROTECTED_DACL_SECURITY_INFORMATION
+       * - PROTECTED_SACL_SECURITY_INFORMATION
+       * - PROTECTED_DACL_SECURITY_INFORMATION
+       *
+       * or use:
+       * - ALL_SECURITY_INFORMATION
+       *
+       * all definitions from include/rpc_secdes.h
+       */
+      uint32 info_type;
+   } in;
+
+   struct {
+      /**size of the data returned*/
+      uint32 size;
+
+      /**Security descriptor*/
+      SEC_DESC *descriptor;
+   } out;
+};
+
+/**
+ * Retrieves a key security descriptor.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_RegGetKeySecurity(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegGetKeySecurity *op);
+
+struct RegSetKeySecurity {
+   struct {
+      /**Handle to key to query*/
+      POLICY_HND *key;
+
+      /**Info that you want. Should be a combination of (1 or more or'd):
+       * - OWNER_SECURITY_INFORMATION
+       * - GROUP_SECURITY_INFORMATION
+       * - DACL_SECURITY_INFORMATION
+       * - SACL_SECURITY_INFORMATION
+       * - UNPROTECTED_SACL_SECURITY_INFORMATION
+       * - UNPROTECTED_DACL_SECURITY_INFORMATION
+       * - PROTECTED_SACL_SECURITY_INFORMATION
+       * - PROTECTED_DACL_SECURITY_INFORMATION
+       *
+       * or use:
+       * - ALL_SECURITY_INFORMATION
+       *
+       * all definitions from include/rpc_secdes.h
+       */
+      uint32 info_type;
+      
+      /**size of the descriptor*/
+      size_t size;
+
+      /**Security descriptor*/
+      SEC_DESC *descriptor;
+   } in;
+};
+
+/**
+ * Sets the key security descriptor.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_RegSetKeySecurity(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct RegSetKeySecurity *op);
+
+/**@}*/ /*Reg_Functions*/
+
+struct Shutdown {
+   struct {
+      /**the message to display (can be NULL)*/
+      char *message;
+
+      /**timeout in seconds*/
+      uint32 timeout;
+
+      /**False = shutdown, True = reboot*/
+      bool reboot;
+      
+      /**force the*/
+      bool force;
+
+      /*FIXME: make this useful*/
+      uint32 reason;
+   } in;
+};
+
+
+/**
+ * Shutdown the server _not currently working_. 
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_Shutdown(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct Shutdown *op);
+
+/**
+ * Attempt to abort initiated shutdown on the server _not currently working_. 
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_AbortShutdown(CacServerHandle *hnd, TALLOC_CTX *mem_ctx);
+
+/*****************
+ * SAM Functions *
+ *****************/
+
+/**@addtogroup SAM_Functions
+ * @{
+ */
+struct SamConnect {
+   struct {
+      /**Access mask to open with
+       * see generic access masks in include/smb.h*/
+      uint32 access;
+   } in;
+
+   struct {
+      POLICY_HND *sam;
+   } out;
+};
+
+/** 
+ * Connects to the SAM. This can be skipped by just calling cac_SamOpenDomain()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamConnect(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamConnect *op);
+
+
+/** 
+ * Closes any (SAM, domain, user, group, etc.) SAM handle. 
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param sam Handle to close
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamClose(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *sam);
+
+struct SamOpenDomain {
+   struct {
+      /**The desired access. See generic access masks - include/smb.h*/
+      uint32 access;
+
+      /**(Optional) An open handle to the SAM. If it is NULL, the function will connect to the SAM with the access mask above*/
+      POLICY_HND *sam;
+
+      /**(Optional) The SID of the domain to open. 
+       *  If this this is NULL, the function will attempt to open the domain specified in hnd->domain */
+      DOM_SID *sid;
+   } in;
+
+   struct {
+      /**handle to the open domain*/
+      POLICY_HND *dom_hnd;
+
+      /**Handle to the open SAM*/
+      POLICY_HND *sam;
+   } out;
+};
+
+/** 
+ * Opens a handle to a domain. This must be called before any other SAM functions 
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamOpenDomain(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamOpenDomain *op);
+
+struct SamCreateUser {
+   struct {
+      /**Open domain handle*/
+      POLICY_HND *dom_hnd;
+
+      /**Username*/
+      char *name;
+
+      /**See Allowable account control bits in include/smb.h*/
+      uint32 acb_mask;
+   } in;
+
+   struct {
+      /**handle to the user*/
+      POLICY_HND *user_hnd;
+
+      /**rid of the user*/
+      uint32 rid;
+   } out;
+};
+
+/** 
+ * Creates a new domain user, if the account already exists it will _not_ be opened and hnd->status will be NT_STATUS_USER_EXISTS
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamCreateUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamCreateUser *op);
+
+struct SamOpenUser {
+   struct {
+      /**Handle to open SAM connection*/
+      POLICY_HND *dom_hnd;
+
+      /**desired access - see generic access masks in include/smb.h*/
+      uint32 access;
+
+      /**RID of the user*/
+      uint32 rid;
+
+      /**(Optional) name of the user - must supply either RID or user name*/
+      char *name;
+   } in;
+
+   struct {
+      /**Handle to the user*/
+      POLICY_HND *user_hnd;
+   } out;    
+};
+
+/** 
+ * Opens a domain user.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamOpenUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamOpenUser *op);
+
+/** 
+ * Deletes a domain user.  
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param user_hnd Open handle to the user
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamDeleteUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *user_hnd);
+
+
+struct SamEnumUsers {
+   struct {
+      /**Open handle to a domain*/
+      POLICY_HND *dom_hnd;
+
+      /**Enumerate users with specific ACB. If 0, all users will be enumerated*/
+      uint32 acb_mask;
+   } in;
+
+   struct {
+      /**where to resume from. Used over multiple calls*/
+      uint32 resume_idx;
+
+      /**the number of users returned this call*/
+      uint32 num_users;
+
+      /**Array storing the rids of the returned users*/
+      uint32 *rids;
+
+      /**Array storing the names of all the users returned*/
+      char **names;
+
+      bool done;
+   } out;
+};
+
+/** 
+ * Enumerates domain users. Can be used as a loop condition. Example: while(cac_SamEnumUsers(hnd, mem_ctx, op)) { ... }
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamEnumUsers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamEnumUsers *op);
+
+struct SamGetNamesFromRids {
+   struct {
+      /**An open handle to the domain SAM from cac_SamOpenDomain()*/
+      POLICY_HND *dom_hnd;
+
+      /**Number of RIDs to resolve*/
+      uint32 num_rids;
+
+      /**Array of RIDs to resolve*/
+      uint32 *rids;
+   } in;
+
+   struct {
+      /**the number of names returned - if this is 0, the map is NULL*/
+      uint32 num_names;
+
+      /**array contiaing the Names and RIDs*/
+      CacLookupRidsRecord *map;
+   } out;
+};
+
+/** 
+ * Returns a list of names which map to a list of RIDs.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetNamesFromRids(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetNamesFromRids *op);
+
+struct SamGetRidsFromNames {
+   struct {
+      /**An open handle to the domain SAM from cac_SamOpenDomain()*/
+      POLICY_HND *dom_hnd;
+
+      /**Number of names to resolve*/
+      uint32 num_names;
+
+      /**Array of names to resolve*/
+      char **names;
+   } in;
+
+   struct {
+      /**the number of names returned - if this is 0, then map is NULL*/
+      uint32 num_rids;
+
+      /**array contiaing the Names and RIDs*/
+      CacLookupRidsRecord *map;
+   } out;
+};
+
+/** 
+ * Returns a list of RIDs which map to a list of names.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetRidsFromNames(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetRidsFromNames *op);
+
+struct SamGetGroupsForUser {
+   struct {
+      /**An open handle to the user*/
+      POLICY_HND *user_hnd;
+   } in;
+
+   struct {
+      /**The number of groups the user is a member of*/
+      uint32 num_groups;
+
+      /**The RIDs of the groups*/
+      uint32 *rids;
+
+      /**The attributes of the groups*/ 
+      uint32 *attributes;
+   } out;
+};
+/** 
+ * Retrieves a list of groups that a user is a member of.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetGroupsForUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetGroupsForUser *op);
+
+struct SamOpenGroup {
+   struct {
+      /**Open handle to the domain SAM*/
+      POLICY_HND *dom_hnd;
+
+      /**Desired access to open the group with. See Generic access masks in include/smb.h*/
+      uint32 access;
+
+      /**rid of the group*/
+      uint32 rid;
+   } in;
+
+   struct {
+      /**Handle to the group*/
+      POLICY_HND *group_hnd;
+   } out;
+};
+
+/** 
+ * Opens a domain group.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamOpenGroup(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamOpenGroup *op);
+
+struct SamCreateGroup {
+   struct {
+      /**Open handle to the domain SAM*/
+      POLICY_HND *dom_hnd;
+
+      /**Desired access to open the group with. See Generic access masks in include/smb.h*/
+      uint32 access;
+
+      /**The name of the group*/
+      char *name;
+   } in;
+
+   struct {
+      /**Handle to the group*/
+      POLICY_HND *group_hnd;
+   } out;
+};
+
+/** 
+ * Creates a group. If the group already exists it will not be opened.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamCreateGroup(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamCreateGroup *op);
+
+/** 
+ * Deletes a domain group.  
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param group_hnd Open handle to the group.
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamDeleteGroup(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *group_hnd);
+
+struct SamGetGroupMembers {
+   struct {
+      /**Open handle to a group*/
+      POLICY_HND *group_hnd;
+   } in;
+
+   struct {
+      /**The number of members in the group*/
+      uint32 num_members;
+
+      /**An array storing the RIDs of the users*/
+      uint32 *rids;
+
+      /**The attributes*/
+      uint32 *attributes;
+   } out;
+};
+
+/** 
+ * Retrives a list of users in a group.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetGroupMembers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetGroupMembers *op);
+
+struct SamAddGroupMember {
+   struct {
+      /**Open handle to a group*/
+      POLICY_HND *group_hnd;
+
+      /**RID of new member*/
+      uint32 rid;
+   } in;
+};
+
+/** 
+ * Adds a user to a group.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamAddGroupMember(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamAddGroupMember *op);
+
+struct SamRemoveGroupMember {
+   struct {
+      /**Open handle to a group*/
+      POLICY_HND *group_hnd;
+
+      /**RID of member to remove*/
+      uint32 rid;
+   } in;
+};
+
+/** 
+ * Removes a user from a group.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamRemoveGroupMember(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamRemoveGroupMember *op);
+
+/**
+ * Removes all the members of a group - warning: if this function fails is is possible that some but not all members were removed
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param group_hnd Open handle to the group to clear
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamClearGroupMembers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *group_hnd);
+
+struct SamSetGroupMembers {
+   struct {
+      /**Open handle to the group*/
+      POLICY_HND *group_hnd;
+
+      /**Number of members in the group - if this is 0, all members of the group will be removed*/
+      uint32 num_members;
+
+      /**The RIDs of the users to add*/
+      uint32 *rids;
+   } in;
+};
+
+/**
+ * Clears the members of a group and adds a list of members to the group
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamSetGroupMembers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetGroupMembers *op);
+
+struct SamEnumGroups {
+   struct {
+      /**Open handle to a domain*/
+      POLICY_HND *dom_hnd;
+   } in;
+
+   struct {
+      /**Where to resume from _do not_ modify this value. Used over multiple calls.*/
+      uint32 resume_idx;
+
+      /**the number of users returned this call*/
+      uint32 num_groups;
+
+      /**Array storing the rids of the returned groups*/
+      uint32 *rids;
+
+      /**Array storing the names of all the groups returned*/
+      char **names;
+
+      /**Array storing the descriptions of all the groups returned*/
+      char **descriptions;
+
+      bool done;
+   } out;
+};
+
+/** 
+ * Enumerates domain groups. Can be used as a loop condition. Example: while(cac_SamEnumGroups(hnd, mem_ctx, op)) { ... }
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamEnumGroups(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamEnumGroups *op);
+
+struct SamEnumAliases {
+   struct {
+      /**Open handle to a domain*/
+      POLICY_HND *dom_hnd;
+   } in;
+
+   struct {
+      /**where to resume from. Used over multiple calls*/
+      uint32 resume_idx;
+
+      /**the number of users returned this call*/
+      uint32 num_aliases;
+
+      /**Array storing the rids of the returned groups*/
+      uint32 *rids;
+
+      /**Array storing the names of all the groups returned*/
+      char **names;
+
+      /**Array storing the descriptions of all the groups returned*/
+      char **descriptions;
+
+      bool done;
+   } out;
+};
+
+/** 
+ * Enumerates domain aliases. Can be used as a loop condition. Example: while(cac_SamEnumAliases(hnd, mem_ctx, op)) { ... }
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamEnumAliases(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamEnumAliases *op);
+
+struct SamCreateAlias {
+   struct {
+      /**Open handle to the domain SAM*/
+      POLICY_HND *dom_hnd;
+
+      /**The name of the alias*/
+      char *name;
+   } in;
+
+   struct {
+      /**Handle to the group*/
+      POLICY_HND *alias_hnd;
+   } out;
+};
+
+/** 
+ * Creates an alias. If the alias already exists it will not be opened.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamCreateAlias(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamCreateAlias *op);
+
+struct SamOpenAlias {
+   struct {
+      /**Open handle to the domain SAM*/
+      POLICY_HND *dom_hnd;
+
+      /**Desired access to open the group with. See Generic access masks in include/smb.h*/
+      uint32 access;
+
+      /**rid of the alias*/
+      uint32 rid;
+   } in;
+
+   struct {
+      /**Handle to the alias*/
+      POLICY_HND *alias_hnd;
+   } out;
+};
+
+/** 
+ * Opens a handle to an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamOpenAlias(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamOpenAlias *op);
+
+/** 
+ * Deletes an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param alias_hnd Open handle to the alias
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamDeleteAlias(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *alias_hnd);
+
+struct SamAddAliasMember {
+   struct {
+      /**Open handle to a alias*/
+      POLICY_HND *alias_hnd;
+
+      /**SID of new member*/
+      DOM_SID *sid;
+   } in;
+};
+
+/** 
+ * Adds an account to an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamAddAliasMember(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamAddAliasMember *op);
+
+struct SamRemoveAliasMember {
+   struct {
+      /**Open handle to the alias*/
+      POLICY_HND *alias_hnd;
+
+      /**The SID of the member*/
+      DOM_SID *sid;
+   } in;
+};
+
+/** 
+ * Removes an account from an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamRemoveAliasMember(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamRemoveAliasMember *op);
+
+struct SamGetAliasMembers {
+   struct {
+      /**Open handle to the alias*/
+      POLICY_HND *alias_hnd;
+   } in;
+
+   struct {
+      /**The number of members*/
+      uint32 num_members;
+
+      /**An array storing the SIDs of the accounts*/
+      DOM_SID *sids;
+   } out;
+};
+
+/** 
+ * Retrieves a list of all accounts in an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetAliasMembers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetAliasMembers *op);
+
+/**
+ * Removes all the members of an alias  - warning: if this function fails is is possible that some but not all members were removed
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param alias_hnd Handle to the alias to clear
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamClearAliasMembers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *alias_hnd);
+
+struct SamSetAliasMembers {
+   struct {
+      /**Open handle to the group*/
+      POLICY_HND *alias_hnd;
+
+      /**Number of members in the group - if this is 0, all members of the group will be removed*/
+      uint32 num_members;
+
+      /**The SIDs of the accounts to add*/
+      DOM_SID *sids;
+   } in;
+};
+
+/**
+ * Clears the members of an alias and adds a list of members to the alias
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamSetAliasMembers(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetAliasMembers *op);
+
+
+struct SamUserChangePasswd {
+   struct {
+      /**The username*/
+      char *username;
+
+      /**The current password*/
+      char *password;
+
+      /**The new password*/
+      char *new_password;
+   } in;
+};
+/**Used by a user to change their password*/
+int cac_SamUserChangePasswd(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamUserChangePasswd *op);
+
+/**
+ * Enables a user
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param user_hnd Open handle to the user to enable
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamEnableUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *user_hnd);
+
+/**
+ * Disables a user
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param user_hnd Open handle to the user to disables
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamDisableUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *user_hnd);
+
+struct SamSetPassword {
+   struct {
+      /**Open handle to a user*/
+      POLICY_HND *user_hnd;
+
+      /**The new password*/
+      char *password;
+   } in;
+};
+
+/**
+ * Sets a user's password
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamSetPassword(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetPassword *op);
+
+struct SamGetUserInfo {
+   struct {
+      /**Open Handle to a user*/
+      POLICY_HND *user_hnd;
+   } in;
+
+   struct {
+      CacUserInfo *info;
+   } out;
+};
+
+/**
+ * Retrieves user information using a CacUserInfo structure. If you would like to use a SAM_USERINFO_CTR directly, use cac_SamGetUserInfoCtr()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @see cac_SamGetUserInfoCtr()
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetUserInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetUserInfo *op);
+
+struct SamSetUserInfo {
+   struct {
+      /**Open handle to a user*/
+      POLICY_HND *user_hnd;
+
+      /**Structure containing the data you would like to set*/
+      CacUserInfo *info;
+   } in;
+};
+
+/**
+ * Sets the user info using a CacUserInfo structure. If you would like to use a SAM_USERINFO_CTR directly use cac_SamSetUserInfoCtr().
+ * @note All fields in the CacUserInfo structure will be set. Best to call cac_GetUserInfo() modify fields that you want, and then call cac_SetUserInfo().
+ * @note When calling this, you _must_ set the user's password.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @see cac_SamSetUserInfoCtr()
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamSetUserInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetUserInfo *op);
+
+struct SamGetUserInfoCtr {
+   struct {
+      /**Open handle to a user*/
+      POLICY_HND *user_hnd;
+
+      /**What USER_INFO structure you want. See include/rpc_samr.h*/
+      uint16 info_class;
+   } in;
+
+   struct {
+      /**returned user info*/
+      SAM_USERINFO_CTR *ctr;
+   } out;
+};
+
+/**
+ * Retrieves user information using a SAM_USERINFO_CTR structure. If you don't want to use this structure, user SamGetUserInfo()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @see cac_SamGetUserInfo()
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetUserInfoCtr(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetUserInfoCtr *op);
+
+struct SamSetUserInfoCtr {
+   struct {
+      /**Open handle to a user*/
+      POLICY_HND *user_hnd;
+
+      /**user info - make sure ctr->switch_value is set properly*/
+      SAM_USERINFO_CTR *ctr;
+   } in;
+};
+
+/**
+ * Sets the user info using a SAM_USERINFO_CTR structure. If you don't want to use this structure, use cac_SamSetUserInfo()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @see cac_SamSetUserInfo()
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamSetUserInfoCtr(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetUserInfoCtr *op);
+
+struct SamRenameUser {
+   struct {
+      /**Open handle to user*/
+      POLICY_HND *user_hnd;
+
+      /**New user name*/
+      char *new_name;
+   } in;
+};
+
+/**
+ * Changes the name of a user.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamRenameUser(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamRenameUser *op);
+
+struct SamGetGroupInfo {
+   struct {
+      /**Open handle to a group*/
+      POLICY_HND *group_hnd;
+   } in;
+
+   struct {
+      /**Returned info about the group*/
+      CacGroupInfo *info;
+   } out;
+};
+
+/**
+ * Retrieves information about a group.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetGroupInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetGroupInfo *op);
+
+struct SamSetGroupInfo {
+   struct {
+      /**Open handle to a group*/
+      POLICY_HND *group_hnd;
+
+      /**group info*/
+      CacGroupInfo *info;
+   } in;
+};
+
+/**
+ * Sets information about a group.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamSetGroupInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetGroupInfo *op);
+
+struct SamRenameGroup {
+   struct {
+      /**Open handle to a group*/
+      POLICY_HND *group_hnd;
+
+      /**New name*/
+      char *new_name;
+   } in;
+};
+
+/**
+ * Changes the name of a group
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+
+int cac_SamRenameGroup(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamRenameGroup *op);
+
+struct SamGetAliasInfo {
+   struct {
+      /**Open handle to an alias*/
+      POLICY_HND *alias_hnd;
+   } in;
+
+   struct {
+      /**Returned alias info*/
+      CacAliasInfo *info;
+   } out;
+};
+
+/**
+ * Retrieves information about an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamGetAliasInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetAliasInfo *op);
+
+struct SamSetAliasInfo {
+   struct {
+      /**Open handle to an alias*/
+      POLICY_HND *alias_hnd;
+      
+      /**Returned alias info*/
+      CacAliasInfo *info;
+   } in;
+};
+
+/**
+ * Sets information about an alias.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE The operation could not complete successfully. hnd->status is set with appropriate NTSTATUS code
+ * @return CAC_SUCCESS The operation completed successfully
+ */
+int cac_SamSetAliasInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamSetAliasInfo *op);
+
+struct SamGetDomainInfo {
+   struct {
+      /**Open handle to the domain SAM*/
+      POLICY_HND *dom_hnd;
+   } in;
+
+   struct {
+      /**Returned domain info*/
+      CacDomainInfo *info;
+   } out;
+};
+
+/**
+ * Gets domain information in the form of a CacDomainInfo structure. 
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @see SamGetDomainInfoCtr()
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ * @return CAC_PARTIAL_SUCCESS - This function makes 3 rpc calls, if one or two fail and the rest succeed, 
+ *                                  not all fields in the CacDomainInfo structure will be filled
+ */
+int cac_SamGetDomainInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetDomainInfo *op);
+
+struct SamGetDomainInfoCtr {
+   struct {
+      /**Open handle to domain*/
+      POLICY_HND *dom_hnd;
+
+      /**What info level you want*/
+      uint16 info_class;
+   } in;
+
+   struct {
+      SAM_UNK_CTR *info;
+   } out;
+};
+
+/**
+ * Gets domain information in the form of a SAM_UNK_CTR structure. 
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @see SamGetDomainInfo()
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SamGetDomainInfoCtr(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetDomainInfoCtr *op);
+
+struct SamGetDisplayInfo {
+   struct {
+      /**Open handle to domain*/
+      POLICY_HND *dom_hnd;
+
+      /**What type of data*/
+      uint16 info_class;
+
+      /**(Optional)If 0, max_entries and max_size will be filled in by the function*/
+      uint32 max_entries;
+      
+      /**(Optional)If 0, max_entries and max_size will be filled in by the function*/
+      uint32 max_size;
+   } in;
+
+   struct {
+      /**Do not modify this value, use the same value between multiple calls (ie in while loop)*/
+      uint32 resume_idx;
+
+      /**Number of entries returned*/
+      uint32 num_entries;
+
+      /**Returned display info*/
+      SAM_DISPINFO_CTR ctr;
+
+      /**Internal value. Do not modify.*/
+      uint32 loop_count;
+
+      bool done;
+   } out;
+};
+
+/**
+ * Gets dislpay information using a SAM_DISPINFO_CTR.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SamGetDisplayInfo(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetDisplayInfo *op);
+
+struct SamLookupDomain {
+   struct {
+      /**Open handle to the sam (opened with cac_SamConnect() or cac_SamOpenDomain()*/
+      POLICY_HND *sam;
+
+      /**Name of the domain to lookup*/
+      char *name;
+   } in;
+
+   struct {
+      /**SID of the domain*/
+      DOM_SID *sid;
+   } out;
+};
+
+/**
+ * Looks up a Domain SID given it's name.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SamLookupDomain(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamLookupDomain *op);
+
+struct SamGetSecurityObject {
+   struct {
+      /**An open handle (SAM, domain or user)*/
+      POLICY_HND *pol;
+   } in;
+
+   struct {
+      SEC_DESC_BUF *sec;
+   } out;
+};
+
+/**
+ * Retrievies Security descriptor information for a SAM/Domain/user
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SamGetSecurityObject(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamGetSecurityObject *op);
+
+struct SamFlush {
+   struct {
+      /**Open handle to the domain SAM*/
+      POLICY_HND *dom_hnd;
+
+      /**(Optional)Domain SID. If NULL, the domain in hnd->domain will be opened*/
+      DOM_SID *sid;
+
+      /**(Optional)Desired access to re-open the domain with. If 0, MAXIMUM_ALLOWED_ACCESS is used.*/
+      uint32 access;
+   } in;
+};
+
+/**
+ * Closes the domain handle, then re-opens it - effectively flushing any changes made.
+ * WARNING: if this fails you will no longer have an open handle to the domain SAM.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SamFlush(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SamFlush *op);
+
+/**@}*/ /*SAM_Functions*/
+
+/**@addtogroup SCM_Functions
+ * @{
+ */
+
+struct SvcOpenScm {
+   struct {
+      /**Desired access to open the Handle with. See SC_RIGHT_MGR_* or SC_MANAGER_* in include/rpc_secdes.h*/
+      uint32 access;
+   } in;
+
+   struct {
+      /**Handle to the SCM*/
+      POLICY_HND *scm_hnd;
+   } out;
+};
+
+/**
+ * Opens a handle to the SCM on the remote machine.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcOpenScm(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcOpenScm *op);
+
+/**
+ * Closes an Svc handle (SCM or Service)
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param scm_hnd The handle to close
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcClose(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *scm_hnd);
+
+struct SvcEnumServices {
+   struct {
+      /**Open handle to the SCM*/
+      POLICY_HND *scm_hnd;
+
+      /**(Optional)Type of service to enumerate. Possible values:
+       *  - SVCCTL_TYPE_WIN32
+       *  - SVCCTL_TYPE_DRIVER
+       *  If this is 0, (SVCCTL_TYPE_DRIVER | SVCCTL_TYPE_WIN32) is assumed.
+       */
+      uint32 type;
+
+      /**(Optional)State of service to enumerate. Possible values:
+       *  - SVCCTL_STATE_ACTIVE
+       *  - SVCCTL_STATE_INACTIVE
+       *  - SVCCTL_STATE_ALL
+       *  If this is 0, SVCCTL_STATE_ALL is assumed.
+       */
+      uint32 state;
+   } in;
+   
+   struct {
+      /**Number of services returned*/
+      uint32 num_services;
+
+      /**Array of service structures*/
+      CacService *services;
+   } out;
+};
+
+/**
+ * Enumerates services on the remote machine.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcEnumServices(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcEnumServices *op);
+
+struct SvcOpenService {
+   struct {
+      /**Handle to the Service Control Manager*/
+      POLICY_HND *scm_hnd;
+
+      /**Access mask to open service with see SERVICE_* or SC_RIGHT_SVC_* in include/rpc_secdes.h*/
+      uint32 access;
+
+      /**The name of the service. _not_ the display name*/
+      char *name;
+   } in;
+
+   struct {
+      /**Handle to the open service*/
+      POLICY_HND *svc_hnd;
+   } out;
+};
+
+/**
+ * Opens a handle to a service.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+
+int cac_SvcOpenService(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcOpenService *op);
+
+struct SvcGetStatus {
+   struct {
+      /**Open handle to the service to query*/
+      POLICY_HND *svc_hnd;
+   } in;
+
+   struct {
+      /**The status of the service. See include/rpc_svcctl.h for SERVICE_STATUS definition.*/
+      SERVICE_STATUS status;
+   } out;
+};
+
+/**
+ * Retrieves the status of a service.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcGetStatus(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcGetStatus *op);
+
+struct SvcStartService {
+   struct {
+      /**open handle to the service*/
+      POLICY_HND *svc_hnd;
+
+      /**Array of parameters to start the service with. Can be NULL if num_parms is 0*/
+      char **parms;
+
+      /**Number of parameters in the parms array*/
+      uint32 num_parms;
+
+      /**Number of seconds to wait for the service to actually start. If this is 0, then the status will not be checked after the initial call*/
+      uint32 timeout;
+   } in;
+};
+
+/**
+ * Attempts to start a service.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+
+int cac_SvcStartService(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcStartService *op);
+
+struct SvcControlService {
+   struct {
+      /**Open handle to the service to control*/
+      POLICY_HND *svc_hnd;
+
+      /**The control operation to perform. Possible values (from include/rpc_svcctl.h):
+       * - SVCCTL_CONTROL_STOP
+       * - SVCCTL_CONTROL_PAUSE
+       * - SVCCTL_CONTROL_CONTINUE
+       * - SVCCTL_CONTROL_SHUTDOWN
+       */
+      uint32 control;
+   } in;
+
+   struct {
+      /**The returned status of the service, _immediately_ after the call*/
+      SERVICE_STATUS *status;
+   } out;
+};
+
+/**
+ * Performs a control operation on a service and _immediately_ returns.
+ * @see cac_SvcStopService()
+ * @see cac_SvcPauseService()
+ * @see cac_SvcContinueService()
+ * @see cac_SvcShutdownService()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcControlService(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcControlService *op);
+
+struct SvcStopService {
+   struct {
+      /**Open handle to the service*/
+      POLICY_HND *svc_hnd;
+
+      /**Number of seconds to wait for the service to actually start. 
+       * If this is 0, then the status will not be checked after the initial call and CAC_SUCCESS might be returned if the status isn't actually started
+       */
+      uint32 timeout;
+   } in;
+
+   struct {
+      /**Status of the service after the operation*/
+      SERVICE_STATUS status;
+   } out;
+};
+
+/**
+ * Attempts to stop a service.
+ * @see cacSvcControlService()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful. If hnd->status is NT_STATUS_OK, then a timeout occured.
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcStopService(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcStopService *op);
+
+struct SvcPauseService {
+   struct {
+      /**Open handle to the service*/
+      POLICY_HND *svc_hnd;
+
+      /**Number of seconds to wait for the service to actually start. 
+       * If this is 0, then the status will not be checked after the initial call and CAC_SUCCESS might be returned if the status isn't actually started
+       */
+      uint32 timeout;
+   } in;
+
+   struct {
+      /**Status of the service after the operation*/
+      SERVICE_STATUS status;
+   } out;
+};
+
+/**
+ * Attempts to pause a service.
+ * @see cacSvcControlService()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful. If hnd->status is NT_STATUS_OK, then a timeout occured.
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcPauseService(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcPauseService *op);
+
+struct SvcContinueService {
+   struct {
+      /**Open handle to the service*/
+      POLICY_HND *svc_hnd;
+
+      /**Number of seconds to wait for the service to actually start. 
+       * If this is 0, then the status will not be checked after the initial call and CAC_SUCCESS might be returned if the status isn't actually started
+       */
+      uint32 timeout;
+   } in;
+
+   struct {
+      /**Status of the service after the operation*/
+      SERVICE_STATUS status;
+   } out;
+};
+
+/**
+ * Attempts to continue a paused service.
+ * @see cacSvcControlService()
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful. If hnd->status is NT_STATUS_OK, then a timeout occured.
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcContinueService(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcContinueService *op);
+
+struct SvcGetDisplayName {
+   struct {
+      /**Open handle to the service*/
+      POLICY_HND *svc_hnd;
+   } in;
+
+   struct {
+      /**The returned display name of the service*/
+      char *display_name;
+   } out;
+};
+
+/**
+ * Retrieves the display name of a service _not currently working_
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcGetDisplayName(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcGetDisplayName *op);
+
+struct SvcGetServiceConfig {
+   struct {
+      /**Open handle to the service*/
+      POLICY_HND *svc_hnd;
+   } in;
+
+   struct {
+      /**Returned Configuration information*/
+      CacServiceConfig config;
+   } out;
+};
+
+/**
+ * Retrieves configuration information about a service.
+ * @param hnd Initialized and connected server handle
+ * @param mem_ctx Context for memory allocation
+ * @param op Initialized Parameters
+ * @return CAC_FAILURE - the operation was not successful hnd->status is set appropriately
+ * @return CAC_SUCCESS - the operation was successful
+ */
+int cac_SvcGetServiceConfig(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, struct SvcGetServiceConfig *op);
+
+/**@}*/ /*SCM_Functions*/
+
+struct rpc_pipe_client *cac_GetPipe(CacServerHandle *hnd, int pi_idx);
+
+#endif /* LIBMSRPC_H */
+
+

Copied: branches/samba/upstream/source/include/libmsrpc_internal.h (from rev 2163, branches/samba/upstream/source/include/libmsrpc_internal.h)
===================================================================
--- branches/samba/upstream/source/include/libmsrpc_internal.h	                        (rev 0)
+++ branches/samba/upstream/source/include/libmsrpc_internal.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,73 @@
+/* 
+ *  Unix SMB/CIFS implementation.
+ *  MS-RPC client internal definitions
+ *  Copyright (C) Chris Nicholls              2005.
+ *  
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef LIBMSRPC_INTERNAL_H
+#define LIBMSRPC_INTERNAL_H
+
+#include "libmsrpc.h"
+
+/*definitions*/
+
+struct CacServerHandleInternal {
+   /*stores the os type of the server*/
+   uint16 srv_level;
+
+   /*stores the initialized/active pipes*/
+   bool pipes[PI_MAX_PIPES];
+
+   /*underlying smbc context*/
+   SMBCCTX *ctx;
+
+   /*did the user supply this SMBCCTX?*/
+   bool user_supplied_ctx;
+};
+
+/*used to get a struct rpc_pipe_client* to be passed into rpccli* calls*/
+
+/*nessecary prototypes*/
+bool rid_in_list(uint32 rid, uint32 *list, uint32 list_len);
+
+int cac_ParseRegPath(char *path, uint32 *reg_type, char **key_name);
+
+REG_VALUE_DATA *cac_MakeRegValueData(TALLOC_CTX *mem_ctx, uint32 data_type, REGVAL_BUFFER buf);
+
+RPC_DATA_BLOB *cac_MakeRpcDataBlob(TALLOC_CTX *mem_ctx, uint32 data_type, REG_VALUE_DATA data);
+
+SAM_USERINFO_CTR *cac_MakeUserInfoCtr(TALLOC_CTX *mem_ctx, CacUserInfo *info);
+
+CacUserInfo *cac_MakeUserInfo(TALLOC_CTX *mem_ctx, SAM_USERINFO_CTR *ctr);
+CacGroupInfo *cac_MakeGroupInfo(TALLOC_CTX *mem_ctx, GROUP_INFO_CTR *ctr);
+GROUP_INFO_CTR *cac_MakeGroupInfoCtr(TALLOC_CTX *mem_ctx, CacGroupInfo *info);
+CacAliasInfo *cac_MakeAliasInfo(TALLOC_CTX *mem_ctx, ALIAS_INFO_CTR ctr);
+ALIAS_INFO_CTR *cac_MakeAliasInfoCtr(TALLOC_CTX *mem_ctx, CacAliasInfo *info);
+CacDomainInfo *cac_MakeDomainInfo(TALLOC_CTX *mem_ctx, SAM_UNK_INFO_1 *info1, SAM_UNK_INFO_2 *info2, SAM_UNK_INFO_12 *info12);
+CacService *cac_MakeServiceArray(TALLOC_CTX *mem_ctx, ENUM_SERVICES_STATUS *svc, uint32 num_services);
+int cac_InitCacServiceConfig(TALLOC_CTX *mem_ctx, SERVICE_CONFIG *src, CacServiceConfig *dest);
+
+/*moved to libmsrpc.h*/
+/*struct rpc_pipe_client *cac_GetPipe(CacServerHandle *hnd, int pi_idx);*/
+
+SMBCSRV *smbc_attr_server(SMBCCTX *context,
+                          const char *server, const char *share, 
+                          fstring workgroup,
+                          fstring username, fstring password,
+                          POLICY_HND *pol);
+
+
+#endif /* LIBMSRPC_INTERNAL_H */

Modified: branches/samba/upstream/source/include/libsmb_internal.h
===================================================================
--- branches/samba/upstream/source/include/libsmb_internal.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/libsmb_internal.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -346,7 +346,7 @@
 ssize_t
 SMBC_write_ctx(SMBCCTX *context,
                SMBCFILE *file,
-               const void *buf,
+               void *buf,
                size_t count);
 
 int

Modified: branches/samba/upstream/source/include/libsmbclient.h
===================================================================
--- branches/samba/upstream/source/include/libsmbclient.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/libsmbclient.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -796,7 +796,7 @@
 
 typedef ssize_t (*smbc_write_fn)(SMBCCTX *c,
                                  SMBCFILE *file,
-                                 const void *buf,
+                                 void *buf,
                                  size_t count);
 smbc_write_fn smbc_getFunctionWrite(SMBCCTX *c);
 void smbc_setFunctionWrite(SMBCCTX *c, smbc_write_fn fn);
@@ -1240,7 +1240,7 @@
  * @see             smbc_open(), smbc_read()
  *
  */
-ssize_t smbc_write(int fd, const void *buf, size_t bufsize);
+ssize_t smbc_write(int fd, void *buf, size_t bufsize);
 
 
 /**@ingroup file
@@ -2561,33 +2561,6 @@
 }
 #endif
 
-/**@ingroup misc
- * Set the users credentials globally so they can be used for DFS
- * referrals. Probably best to use this function in the smbc_get_auth_data_fn
- * callback.
- *
- * @param workgroup      Workgroup of the user.
- *
- * @param user           Username of user.
- *
- * @param password       Password of user.
- *
- * @param use_kerberos   Whether to use Kerberos
- *
- * @param signing_state  One of these strings (all equivalents on same line):
- *                         "off", "no", "false"
- *                         "on", "yes", "true", "auto"
- *                         "force", "required", "forced"
- */
-
-void
-smbc_set_credentials(char *workgroup,
-                     char *user,
-                     char *password,
-                     smbc_bool use_kerberos,
-                     char *signing_state);
-
-
 /**
  * @ingroup structure
  * Structure that contains a client context information 

Modified: branches/samba/upstream/source/include/nss_info.h
===================================================================
--- branches/samba/upstream/source/include/nss_info.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/nss_info.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -66,10 +66,6 @@
 				  TALLOC_CTX *ctx, 
 				  ADS_STRUCT *ads, LDAPMessage *msg,
 				  char **homedir, char **shell, char **gecos, gid_t *p_gid);
-	NTSTATUS (*map_to_alias)( TALLOC_CTX *mem_ctx, const char *domain,
-				  const char *name, char **alias );
-	NTSTATUS (*map_from_alias)( TALLOC_CTX *mem_ctx, const char *domain,
-				    const char *alias, char **name );
 	NTSTATUS (*close_fn)( void );
 };
 
@@ -88,12 +84,6 @@
                        char **homedir, char **shell, char **gecos,
                        gid_t *p_gid);
 
-NTSTATUS nss_map_to_alias( TALLOC_CTX *mem_ctx, const char *domain,
-			   const char *name, char **alias );
-
-NTSTATUS nss_map_from_alias( TALLOC_CTX *mem_ctx, const char *domain,
-			     const char *alias, char **name );
-
 NTSTATUS nss_close( const char *parameters );
 
 #endif /* _IDMAP_NSS_H_ */

Modified: branches/samba/upstream/source/include/ntdomain.h
===================================================================
--- branches/samba/upstream/source/include/ntdomain.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/ntdomain.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -157,7 +157,7 @@
 	
 	/* RPC function table associated with the current rpc_bind (associated by context) */
 	
-	const struct api_struct *cmds;
+	struct api_struct *cmds;
 	int n_cmds;
 	uint32 context_id;
 	
@@ -211,10 +211,9 @@
 typedef struct pipes_struct {
 	struct pipes_struct *next, *prev;
 
-	char client_address[INET6_ADDRSTRLEN];
+	connection_struct *conn;
+	uint16 vuid; /* points to the unauthenticated user that opened this pipe. */
 
-	struct auth_serversupplied_info *server_info;
-
 	fstring name;
 	fstring pipe_srv_name;
 	
@@ -226,15 +225,27 @@
 	RPC_HDR hdr; /* Incoming RPC header. */
 	RPC_HDR_REQ hdr_req; /* Incoming request header. */
 
+	/* This context is used for pipe state storage and is freed when the pipe is closed. */
+	TALLOC_CTX *pipe_state_mem_ctx;
+
 	struct pipe_auth_data auth;
 
 	struct dcinfo *dc; /* Keeps the creds data from netlogon. */
 
 	/*
+	 * Windows user info.
+	 */
+	fstring user_name;
+	fstring domain;
+	fstring wks;
+
+	/*
 	 * Unix user name and credentials used when a pipe is authenticated.
 	 */
 
+	fstring pipe_user_name;
 	struct current_user pipe_user;
+	DATA_BLOB session_key;
  
 	/*
 	 * Set to true when an RPC bind has been done on this pipe.
@@ -303,8 +314,10 @@
 
 	/*
 	 * NamedPipe state information.
+	 *
+	 * (e.g. typecast a np_struct, above).
 	 */
-	struct pipes_struct *np_state;
+	void *np_state;
 
 	/*
 	 * NamedPipe functions, to be called to perform
@@ -316,16 +329,24 @@
 	 * returns: state information representing the connection.
 	 *          is stored in np_state, above.
 	 */
-	struct pipes_struct *(*namedpipe_create)(
-		const char *pipe_name,
-		const char *client_address,
-		struct auth_serversupplied_info *server_info,
-		uint16_t vuid);
+	void *   (*namedpipe_create)(const char *pipe_name, 
+					  connection_struct *conn, uint16 vuid);
 
+	/* call to perform a write / read namedpipe transaction.
+	 * TransactNamedPipe is weird: it returns whether there
+	 * is more data outstanding to be read, and the
+	 * caller is expected to take note and follow up with
+	 * read requests.
+	 */
+	ssize_t  (*namedpipe_transact)(void *np_state,
+	                               char *data, int len,
+	                               char *rdata, int rlen,
+	                               bool *pipe_outstanding);
+
 	/* call to perform a write namedpipe operation
 	 */
-	ssize_t (*namedpipe_write)(struct pipes_struct *p,
-				   char *data, size_t n);
+	ssize_t  (*namedpipe_write)(void * np_state,
+	                            char *data, size_t n);
 
 	/* call to perform a read namedpipe operation.
 	 *
@@ -338,10 +359,19 @@
 	 * when samba is modified to use namedpipe_transact,
 	 * the pipe_outstanding argument may be removed.
 	 */
-	ssize_t (*namedpipe_read)(struct pipes_struct *p,
-				  char *data, size_t max_len,
-				  bool *pipe_outstanding);
+	ssize_t  (*namedpipe_read)(void * np_state,
+	                           char *data, size_t max_len,
+	                           bool *pipe_outstanding);
 
+	/* call to close a namedpipe.
+	 * function is expected to perform all cleanups
+	 * necessary, free all memory etc.
+	 *
+	 * returns True if cleanup was successful (not that
+	 * we particularly care).
+	 */
+	bool     (*namedpipe_close)(void * np_state);
+
 } smb_np_struct;
 
 struct api_struct {  

Modified: branches/samba/upstream/source/include/ntlmssp.h
===================================================================
--- branches/samba/upstream/source/include/ntlmssp.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/ntlmssp.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -59,7 +59,7 @@
 #define NTLMSSP_CHAL_NON_NT_SESSION_KEY    0x00040000
 #define NTLMSSP_NEGOTIATE_NTLM2            0x00080000
 #define NTLMSSP_CHAL_TARGET_INFO           0x00800000
-#define NTLMSSP_NEGOTIATE_VERSION	   0x02000000
+#define NTLMSSP_UNKNOWN_02000000	   0x02000000
 #define NTLMSSP_NEGOTIATE_128              0x20000000 /* 128-bit encryption */
 #define NTLMSSP_NEGOTIATE_KEY_EXCH         0x40000000
 #define NTLMSSP_NEGOTIATE_56               0x80000000

Modified: branches/samba/upstream/source/include/ntquotas.h
===================================================================
--- branches/samba/upstream/source/include/ntquotas.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/ntquotas.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -88,4 +88,9 @@
 	SMB_NTQUOTA_LIST *tmp_list;
 } SMB_NTQUOTA_HANDLE;
 
+#define CHECK_NTQUOTA_HANDLE_OK(fsp,conn)	(FNUM_OK(fsp,conn) &&\
+	 (fsp)->fake_file_handle &&\
+	 ((fsp)->fake_file_handle->type == FAKE_FILE_TYPE_QUOTA) &&\
+	 (fsp)->fake_file_handle->pd)
+
 #endif /*_NTQUOTAS_H */

Modified: branches/samba/upstream/source/include/passdb.h
===================================================================
--- branches/samba/upstream/source/include/passdb.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/passdb.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -59,6 +59,7 @@
 	PDB_GROUPSID,
 	PDB_ACCTCTRL,
 	PDB_PASSLASTSET,
+	PDB_UNIXHOMEDIR,
 	PDB_ACCTDESC,
 	PDB_WORKSTATIONS,
 	PDB_COMMENT,

Modified: branches/samba/upstream/source/include/popt_common.h
===================================================================
--- branches/samba/upstream/source/include/popt_common.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/popt_common.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,7 +28,6 @@
 extern struct poptOption popt_common_configfile[];
 extern struct poptOption popt_common_version[];
 extern struct poptOption popt_common_credentials[];
-extern struct poptOption popt_common_debuglevel[];
 extern const struct poptOption popt_common_dynconfig[];
 
 #ifndef POPT_TABLEEND
@@ -43,7 +42,6 @@
 #define POPT_COMMON_DYNCONFIG { NULL, 0, POPT_ARG_INCLUDE_TABLE, \
     CONST_DISCARD(poptOption *, popt_common_dynconfig), 0, \
     "Build-time configuration overrides:", NULL },
-#define POPT_COMMON_DEBUGLEVEL { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debuglevel, 0, "Common samba debugging:", NULL },
 
 struct user_auth_info {
 	char *username;

Modified: branches/samba/upstream/source/include/printing.h
===================================================================
--- branches/samba/upstream/source/include/printing.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/printing.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -77,7 +77,6 @@
 #define NEXT_JOBID(j) ((j+1) % PRINT_MAX_JOBID > 0 ? (j+1) % PRINT_MAX_JOBID : 1)
 
 #define MAX_CACHE_VALID_TIME 3600
-#define CUPS_DEFAULT_CONNECTION_TIMEOUT 30
 
 #ifndef PRINT_SPOOL_PREFIX
 #define PRINT_SPOOL_PREFIX "smbprn."

Deleted: branches/samba/upstream/source/include/proto.h
===================================================================
--- branches/samba/upstream/source/include/proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,10532 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _PROTO_H_
-#define _PROTO_H_
-
-
-/* The following definitions come from auth/auth.c  */
-
-NTSTATUS smb_register_auth(int version, const char *name, auth_init_function init);
-bool load_auth_module(struct auth_context *auth_context, 
-		      const char *module, auth_methods **ret) ;
-NTSTATUS make_auth_context_subsystem(struct auth_context **auth_context) ;
-NTSTATUS make_auth_context_fixed(struct auth_context **auth_context, uchar chal[8]) ;
-
-/* The following definitions come from auth/auth_builtin.c  */
-
-NTSTATUS auth_builtin_init(void);
-
-/* The following definitions come from auth/auth_compat.c  */
-
-NTSTATUS check_plaintext_password(const char *smb_name, DATA_BLOB plaintext_password, auth_serversupplied_info **server_info);
-bool password_ok(const char *smb_name, DATA_BLOB password_blob);
-
-/* The following definitions come from auth/auth_domain.c  */
-
-NTSTATUS auth_domain_init(void) ;
-
-/* The following definitions come from auth/auth_ntlmssp.c  */
-
-NTSTATUS auth_ntlmssp_start(AUTH_NTLMSSP_STATE **auth_ntlmssp_state);
-void auth_ntlmssp_end(AUTH_NTLMSSP_STATE **auth_ntlmssp_state);
-NTSTATUS auth_ntlmssp_update(AUTH_NTLMSSP_STATE *auth_ntlmssp_state, 
-			     const DATA_BLOB request, DATA_BLOB *reply) ;
-
-/* The following definitions come from auth/auth_sam.c  */
-
-NTSTATUS auth_sam_init(void);
-
-/* The following definitions come from auth/auth_server.c  */
-
-NTSTATUS auth_server_init(void);
-
-/* The following definitions come from auth/auth_unix.c  */
-
-NTSTATUS auth_unix_init(void);
-
-/* The following definitions come from auth/auth_util.c  */
-
-NTSTATUS make_user_info_map(auth_usersupplied_info **user_info, 
-			    const char *smb_name, 
-			    const char *client_domain, 
-			    const char *wksta_name, 
- 			    DATA_BLOB *lm_pwd, DATA_BLOB *nt_pwd,
- 			    DATA_BLOB *lm_interactive_pwd, DATA_BLOB *nt_interactive_pwd,
-			    DATA_BLOB *plaintext, 
-			    bool encrypted);
-bool make_user_info_netlogon_network(auth_usersupplied_info **user_info, 
-				     const char *smb_name, 
-				     const char *client_domain, 
-				     const char *wksta_name, 
-				     uint32 logon_parameters,
-				     const uchar *lm_network_pwd,
-				     int lm_pwd_len,
-				     const uchar *nt_network_pwd,
-				     int nt_pwd_len);
-bool make_user_info_netlogon_interactive(auth_usersupplied_info **user_info, 
-					 const char *smb_name, 
-					 const char *client_domain, 
-					 const char *wksta_name, 
-					 uint32 logon_parameters,
-					 const uchar chal[8], 
-					 const uchar lm_interactive_pwd[16], 
-					 const uchar nt_interactive_pwd[16], 
-					 const uchar *dc_sess_key);
-bool make_user_info_for_reply(auth_usersupplied_info **user_info, 
-			      const char *smb_name, 
-			      const char *client_domain,
-			      const uint8 chal[8],
-			      DATA_BLOB plaintext_password);
-NTSTATUS make_user_info_for_reply_enc(auth_usersupplied_info **user_info, 
-                                      const char *smb_name,
-                                      const char *client_domain, 
-                                      DATA_BLOB lm_resp, DATA_BLOB nt_resp);
-bool make_user_info_guest(auth_usersupplied_info **user_info) ;
-NTSTATUS make_server_info_sam(auth_serversupplied_info **server_info, 
-			      struct samu *sampass);
-NTSTATUS create_local_token(auth_serversupplied_info *server_info);
-NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username,
-				    bool is_guest,
-				    uid_t *uid, gid_t *gid,
-				    char **found_username,
-				    struct nt_user_token **token);
-bool user_in_group_sid(const char *username, const DOM_SID *group_sid);
-bool user_in_group(const char *username, const char *groupname);
-NTSTATUS make_server_info_pw(auth_serversupplied_info **server_info, 
-                             char *unix_username,
-			     struct passwd *pwd);
-NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx,
-				       const char *username,
-				       bool is_guest,
-				       struct auth_serversupplied_info **presult);
-struct auth_serversupplied_info *copy_serverinfo(TALLOC_CTX *mem_ctx,
-						 auth_serversupplied_info *src);
-bool init_guest_info(void);
-bool server_info_set_session_key(struct auth_serversupplied_info *info,
-				 DATA_BLOB session_key);
-NTSTATUS make_server_info_guest(TALLOC_CTX *mem_ctx,
-				auth_serversupplied_info **server_info);
-bool copy_current_user(struct current_user *dst, struct current_user *src);
-struct passwd *smb_getpwnam( TALLOC_CTX *mem_ctx, char *domuser,
-			     fstring save_username, bool create );
-NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, 
-				const char *sent_nt_username,
-				const char *domain,
-				auth_serversupplied_info **server_info, 
-				struct netr_SamInfo3 *info3);
-NTSTATUS make_server_info_wbcAuthUserInfo(TALLOC_CTX *mem_ctx,
-					  const char *sent_nt_username,
-					  const char *domain,
-					  const struct wbcAuthUserInfo *info,
-					  auth_serversupplied_info **server_info);
-void free_user_info(auth_usersupplied_info **user_info);
-bool make_auth_methods(struct auth_context *auth_context, auth_methods **auth_method) ;
-bool is_trusted_domain(const char* dom_name);
-
-/* The following definitions come from auth/auth_winbind.c  */
-
-NTSTATUS auth_winbind_init(void);
-
-/* The following definitions come from auth/pampass.c  */
-
-bool smb_pam_claim_session(char *user, char *tty, char *rhost);
-bool smb_pam_close_session(char *user, char *tty, char *rhost);
-NTSTATUS smb_pam_accountcheck(const char * user);
-NTSTATUS smb_pam_passcheck(const char * user, const char * password);
-bool smb_pam_passchange(const char * user, const char * oldpassword, const char * newpassword);
-NTSTATUS smb_pam_accountcheck(const char * user);
-bool smb_pam_claim_session(char *user, char *tty, char *rhost);
-bool smb_pam_close_session(char *in_user, char *tty, char *rhost);
-
-/* The following definitions come from auth/pass_check.c  */
-
-void dfs_unlogin(void);
-NTSTATUS pass_check(const struct passwd *pass, const char *user, const char *password, 
-		    int pwlen, bool (*fn) (const char *, const char *), bool run_cracker);
-
-/* The following definitions come from auth/token_util.c  */
-
-bool nt_token_check_sid ( const DOM_SID *sid, const NT_USER_TOKEN *token );
-bool nt_token_check_domain_rid( NT_USER_TOKEN *token, uint32 rid );
-NT_USER_TOKEN *get_root_nt_token( void );
-NTSTATUS add_aliases(const DOM_SID *domain_sid,
-		     struct nt_user_token *token);
-NTSTATUS create_builtin_users(const DOM_SID *sid);
-NTSTATUS create_builtin_administrators(const DOM_SID *sid);
-struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx,
-					    const DOM_SID *user_sid,
-					    bool is_guest,
-					    int num_groupsids,
-					    const DOM_SID *groupsids);
-void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token);
-void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid,
-			   int n_groups, gid_t *groups);
-
-/* The following definitions come from groupdb/mapping.c  */
-
-NTSTATUS add_initial_entry(gid_t gid, const char *sid, enum lsa_SidType sid_name_use, const char *nt_name, const char *comment);
-bool get_domain_group_from_sid(DOM_SID sid, GROUP_MAP *map);
-int smb_create_group(const char *unix_group, gid_t *new_gid);
-int smb_delete_group(const char *unix_group);
-int smb_set_primary_group(const char *unix_group, const char* unix_user);
-int smb_add_user_group(const char *unix_group, const char *unix_user);
-int smb_delete_user_group(const char *unix_group, const char *unix_user);
-NTSTATUS pdb_default_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
-				 DOM_SID sid);
-NTSTATUS pdb_default_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
-				 gid_t gid);
-NTSTATUS pdb_default_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
-				 const char *name);
-NTSTATUS pdb_default_add_group_mapping_entry(struct pdb_methods *methods,
-						GROUP_MAP *map);
-NTSTATUS pdb_default_update_group_mapping_entry(struct pdb_methods *methods,
-						   GROUP_MAP *map);
-NTSTATUS pdb_default_delete_group_mapping_entry(struct pdb_methods *methods,
-						   DOM_SID sid);
-NTSTATUS pdb_default_enum_group_mapping(struct pdb_methods *methods,
-					   const DOM_SID *sid, enum lsa_SidType sid_name_use,
-					   GROUP_MAP **pp_rmap, size_t *p_num_entries,
-					   bool unix_only);
-NTSTATUS pdb_default_create_alias(struct pdb_methods *methods,
-				  const char *name, uint32 *rid);
-NTSTATUS pdb_default_delete_alias(struct pdb_methods *methods,
-				  const DOM_SID *sid);
-NTSTATUS pdb_default_get_aliasinfo(struct pdb_methods *methods,
-				   const DOM_SID *sid,
-				   struct acct_info *info);
-NTSTATUS pdb_default_set_aliasinfo(struct pdb_methods *methods,
-				   const DOM_SID *sid,
-				   struct acct_info *info);
-NTSTATUS pdb_default_add_aliasmem(struct pdb_methods *methods,
-				  const DOM_SID *alias, const DOM_SID *member);
-NTSTATUS pdb_default_del_aliasmem(struct pdb_methods *methods,
-				  const DOM_SID *alias, const DOM_SID *member);
-NTSTATUS pdb_default_enum_aliasmem(struct pdb_methods *methods,
-				   const DOM_SID *alias, DOM_SID **pp_members,
-				   size_t *p_num_members);
-NTSTATUS pdb_default_alias_memberships(struct pdb_methods *methods,
-				       TALLOC_CTX *mem_ctx,
-				       const DOM_SID *domain_sid,
-				       const DOM_SID *members,
-				       size_t num_members,
-				       uint32 **pp_alias_rids,
-				       size_t *p_num_alias_rids);
-NTSTATUS pdb_nop_getgrsid(struct pdb_methods *methods, GROUP_MAP *map,
-				 DOM_SID sid);
-NTSTATUS pdb_nop_getgrgid(struct pdb_methods *methods, GROUP_MAP *map,
-				 gid_t gid);
-NTSTATUS pdb_nop_getgrnam(struct pdb_methods *methods, GROUP_MAP *map,
-				 const char *name);
-NTSTATUS pdb_nop_add_group_mapping_entry(struct pdb_methods *methods,
-						GROUP_MAP *map);
-NTSTATUS pdb_nop_update_group_mapping_entry(struct pdb_methods *methods,
-						   GROUP_MAP *map);
-NTSTATUS pdb_nop_delete_group_mapping_entry(struct pdb_methods *methods,
-						   DOM_SID sid);
-NTSTATUS pdb_nop_enum_group_mapping(struct pdb_methods *methods,
-					   enum lsa_SidType sid_name_use,
-					   GROUP_MAP **rmap, size_t *num_entries,
-					   bool unix_only);
-bool pdb_get_dom_grp_info(const DOM_SID *sid, struct acct_info *info);
-bool pdb_set_dom_grp_info(const DOM_SID *sid, const struct acct_info *info);
-NTSTATUS pdb_create_builtin_alias(uint32 rid);
-
-/* The following definitions come from groupdb/mapping_ldb.c  */
-
-const struct mapping_backend *groupdb_ldb_init(void);
-
-/* The following definitions come from groupdb/mapping_tdb.c  */
-
-const struct mapping_backend *groupdb_tdb_init(void);
-
-/* The following definitions come from intl/lang_tdb.c  */
-
-bool lang_tdb_init(const char *lang);
-const char *lang_msg(const char *msgid);
-void lang_msg_free(const char *msgstr);
-char *lang_tdb_current(void);
-
-/* The following definitions come from lib/access.c  */
-
-bool client_match(const char *tok, const void *item);
-bool list_match(const char **list,const void *item,
-		bool (*match_fn)(const char *, const void *));
-bool allow_access(const char **deny_list,
-		const char **allow_list,
-		const char *cname,
-		const char *caddr);
-bool check_access(int sock, const char **allow_list, const char **deny_list);
-
-/* The following definitions come from lib/account_pol.c  */
-
-void account_policy_names_list(const char ***names, int *num_names);
-const char *decode_account_policy_name(int field);
-const char *get_account_policy_attr(int field);
-const char *account_policy_get_desc(int field);
-int account_policy_name_to_fieldnum(const char *name);
-bool account_policy_get_default(int account_policy, uint32 *val);
-bool init_account_policy(void);
-bool account_policy_get(int field, uint32 *value);
-bool account_policy_set(int field, uint32 value);
-bool cache_account_policy_set(int field, uint32 value);
-bool cache_account_policy_get(int field, uint32 *value);
-struct db_context *get_account_pol_db( void );
-
-/* The following definitions come from lib/adt_tree.c  */
-
-
-/* The following definitions come from lib/afs.c  */
-
-char *afs_createtoken_str(const char *username, const char *cell);
-bool afs_login(connection_struct *conn);
-bool afs_login(connection_struct *conn);
-char *afs_createtoken_str(const char *username, const char *cell);
-
-/* The following definitions come from lib/afs_settoken.c  */
-
-int afs_syscall( int subcall,
-	  char * path,
-	  int cmd,
-	  char * cmarg,
-	  int follow);
-bool afs_settoken_str(const char *token_string);
-bool afs_settoken_str(const char *token_string);
-
-/* The following definitions come from lib/arc4.c  */
-
-void smb_arc4_init(unsigned char arc4_state_out[258], const unsigned char *key, size_t keylen);
-void smb_arc4_crypt(unsigned char arc4_state_inout[258], unsigned char *data, size_t len);
-
-/* The following definitions come from lib/audit.c  */
-
-const char *audit_category_str(uint32 category);
-const char *audit_param_str(uint32 category);
-const char *audit_description_str(uint32 category);
-bool get_audit_category_from_param(const char *param, uint32 *audit_category);
-const char *audit_policy_str(TALLOC_CTX *mem_ctx, uint32 policy);
-
-/* The following definitions come from lib/bitmap.c  */
-
-struct bitmap *bitmap_allocate(int n);
-void bitmap_free(struct bitmap *bm);
-struct bitmap *bitmap_talloc(TALLOC_CTX *mem_ctx, int n);
-int bitmap_copy(struct bitmap * const dst, const struct bitmap * const src);
-bool bitmap_set(struct bitmap *bm, unsigned i);
-bool bitmap_clear(struct bitmap *bm, unsigned i);
-bool bitmap_query(struct bitmap *bm, unsigned i);
-int bitmap_find(struct bitmap *bm, unsigned ofs);
-
-/* The following definitions come from lib/charcnv.c  */
-
-char lp_failed_convert_char(void);
-void lazy_initialize_conv(void);
-void gfree_charcnv(void);
-void init_iconv(void);
-size_t convert_string(charset_t from, charset_t to,
-		      void const *src, size_t srclen, 
-		      void *dest, size_t destlen, bool allow_bad_conv);
-bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
-			     void const *src, size_t srclen, void *dst,
-			     size_t *converted_size, bool allow_bad_conv);
-bool convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to,
-			   void const *src, size_t srclen, void *dst,
-			   size_t *converted_size, bool allow_bad_conv);
-size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen);
-char *strdup_upper(const char *s);
-char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s);
-size_t unix_strlower(const char *src, size_t srclen, char *dest, size_t destlen);
-char *strdup_lower(const char *s);
-char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s);
-size_t ucs2_align(const void *base_ptr, const void *p, int flags);
-size_t push_ascii(void *dest, const char *src, size_t dest_len, int flags);
-size_t push_ascii_fstring(void *dest, const char *src);
-size_t push_ascii_nstring(void *dest, const char *src);
-bool push_ascii_allocate(char **dest, const char *src, size_t *converted_size);
-size_t pull_ascii(char *dest, const void *src, size_t dest_len, size_t src_len, int flags);
-size_t pull_ascii_fstring(char *dest, const void *src);
-size_t pull_ascii_nstring(char *dest, size_t dest_len, const void *src);
-size_t push_ucs2(const void *base_ptr, void *dest, const char *src, size_t dest_len, int flags);
-bool push_ucs2_allocate(smb_ucs2_t **dest, const char *src,
-			size_t *converted_size);
-size_t push_utf8_fstring(void *dest, const char *src);
-bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
-		      size_t *converted_size);
-bool push_utf8_allocate(char **dest, const char *src, size_t *converted_size);
-size_t pull_ucs2(const void *base_ptr, char *dest, const void *src, size_t dest_len, size_t src_len, int flags);
-size_t pull_ucs2_base_talloc(TALLOC_CTX *ctx,
-			const void *base_ptr,
-			char **ppdest,
-			const void *src,
-			size_t src_len,
-			int flags);
-size_t pull_ucs2_fstring(char *dest, const void *src);
-bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src,
-		      size_t *converted_size);
-bool pull_ucs2_allocate(char **dest, const smb_ucs2_t *src,
-			size_t *converted_size);
-bool pull_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
-		      size_t *converted_size);
-bool pull_utf8_allocate(char **dest, const char *src, size_t *converted_size);
-bool pull_ucs2_talloc(TALLOC_CTX *ctx, char **dest, const smb_ucs2_t *src,
-		      size_t *converted_size);
-bool pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
-		       size_t *converted_size);
-size_t push_string_fn(const char *function, unsigned int line,
-		      const void *base_ptr, uint16 flags2,
-		      void *dest, const char *src,
-		      size_t dest_len, int flags);
-size_t pull_string_fn(const char *function,
-			unsigned int line,
-			const void *base_ptr,
-			uint16 smb_flags2,
-			char *dest,
-			const void *src,
-			size_t dest_len,
-			size_t src_len,
-			int flags);
-size_t pull_string_talloc_fn(const char *function,
-			unsigned int line,
-			TALLOC_CTX *ctx,
-			const void *base_ptr,
-			uint16 smb_flags2,
-			char **ppdest,
-			const void *src,
-			size_t src_len,
-			int flags);
-size_t align_string(const void *base_ptr, const char *p, int flags);
-codepoint_t next_codepoint(const char *str, size_t *size);
-
-/* The following definitions come from lib/clobber.c  */
-
-void clobber_region(const char *fn, unsigned int line, char *dest, size_t len);
-
-/* The following definitions come from lib/conn_tdb.c  */
-
-struct db_record *connections_fetch_record(TALLOC_CTX *mem_ctx,
-					   TDB_DATA key);
-struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
-					  connection_struct *conn,
-					  const char *name);
-int connections_traverse(int (*fn)(struct db_record *rec,
-				   void *private_data),
-			 void *private_data);
-int connections_forall(int (*fn)(struct db_record *rec,
-				 const struct connections_key *key,
-				 const struct connections_data *data,
-				 void *private_data),
-		       void *private_data);
-bool connections_init(bool rw);
-
-/* The following definitions come from lib/crc32.c  */
-
-uint32 crc32_calc_buffer(const char *buf, size_t size);
-
-/* The following definitions come from lib/data_blob.c  */
-
-DATA_BLOB data_blob(const void *p, size_t length);
-DATA_BLOB data_blob_talloc(TALLOC_CTX *mem_ctx, const void *p, size_t length);
-void data_blob_free(DATA_BLOB *d);
-void data_blob_clear(DATA_BLOB *d);
-void data_blob_clear_free(DATA_BLOB *d);
-DATA_BLOB data_blob_string_const(const char *str);
-DATA_BLOB data_blob_const(const void *p, size_t length);
-DATA_BLOB data_blob_talloc_zero(TALLOC_CTX *mem_ctx, size_t length);
-_PUBLIC_ char *data_blob_hex_string(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob);
-
-/* The following definitions come from lib/dbwrap_util.c  */
-
-int32_t dbwrap_fetch_int32(struct db_context *db, const char *keystr);
-int dbwrap_store_int32(struct db_context *db, const char *keystr, int32_t v);
-bool dbwrap_fetch_uint32(struct db_context *db, const char *keystr,
-			 uint32_t *val);
-bool dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v);
-uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr,
-				     uint32_t *oldval, uint32_t change_val);
-int32 dbwrap_change_int32_atomic(struct db_context *db, const char *keystr,
-				 int32 *oldval, int32 change_val);
-NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf,
-			    int flag);
-NTSTATUS dbwrap_trans_delete(struct db_context *db, TDB_DATA key);
-NTSTATUS dbwrap_trans_store_int32(struct db_context *db, const char *keystr,
-				  int32_t v);
-NTSTATUS dbwrap_trans_store_uint32(struct db_context *db, const char *keystr,
-				   uint32_t v);
-NTSTATUS dbwrap_trans_store_bystring(struct db_context *db, const char *key,
-				     TDB_DATA data, int flags);
-NTSTATUS dbwrap_trans_delete_bystring(struct db_context *db, const char *key);
-
-/* The following definitions come from lib/debug.c  */
-
-void gfree_debugsyms(void);
-const char *debug_classname_from_index(int ndx);
-int debug_add_class(const char *classname);
-int debug_lookup_classname(const char *classname);
-bool debug_parse_levels(const char *params_str);
-void debug_message(struct messaging_context *msg_ctx, void *private_data, uint32_t msg_type, struct server_id src, DATA_BLOB *data);
-void debug_init(void);
-void debug_register_msgs(struct messaging_context *msg_ctx);
-void setup_logging(const char *pname, bool interactive);
-void debug_set_logfile(const char *name);
-bool reopen_logs( void );
-void force_check_log_size( void );
-bool need_to_check_log_size( void );
-void check_log_size( void );
-void dbgflush( void );
-bool dbghdr(int level, int cls, const char *file, const char *func, int line);
-TALLOC_CTX *debug_ctx(void);
-
-/* The following definitions come from lib/display_sec.c  */
-
-char *get_sec_mask_str(TALLOC_CTX *ctx, uint32 type);
-void display_sec_access(SEC_ACCESS *info);
-void display_sec_ace_flags(uint8_t flags);
-void display_sec_ace(SEC_ACE *ace);
-void display_sec_acl(SEC_ACL *sec_acl);
-void display_acl_type(uint16 type);
-void display_sec_desc(SEC_DESC *sec);
-
-/* The following definitions come from lib/dmallocmsg.c  */
-
-void register_dmalloc_msgs(struct messaging_context *msg_ctx);
-
-/* The following definitions come from lib/dprintf.c  */
-
-void display_set_stderr(void);
-
-/* The following definitions come from lib/errmap_unix.c  */
-
-NTSTATUS map_nt_error_from_unix(int unix_error);
-
-/* The following definitions come from lib/events.c  */
-
-struct timed_event *event_add_timed(struct event_context *event_ctx,
-				TALLOC_CTX *mem_ctx,
-				struct timeval when,
-				const char *event_name,
-				void (*handler)(struct event_context *event_ctx,
-						struct timed_event *te,
-						const struct timeval *now,
-						void *private_data),
-				void *private_data);
-struct fd_event *event_add_fd(struct event_context *event_ctx,
-			      TALLOC_CTX *mem_ctx,
-			      int fd, uint16_t flags,
-			      void (*handler)(struct event_context *event_ctx,
-					      struct fd_event *event,
-					      uint16 flags,
-					      void *private_data),
-			      void *private_data);
-void event_fd_set_writeable(struct fd_event *fde);
-void event_fd_set_not_writeable(struct fd_event *fde);
-void event_fd_set_readable(struct fd_event *fde);
-void event_fd_set_not_readable(struct fd_event *fde);
-bool event_add_to_select_args(struct event_context *event_ctx,
-			      const struct timeval *now,
-			      fd_set *read_fds, fd_set *write_fds,
-			      struct timeval *timeout, int *maxfd);
-bool events_pending(struct event_context *event_ctx);
-bool run_events(struct event_context *event_ctx,
-		int selrtn, fd_set *read_fds, fd_set *write_fds);
-struct timeval *get_timed_events_timeout(struct event_context *event_ctx,
-					 struct timeval *to_ret);
-int event_loop_once(struct event_context *ev);
-struct event_context *event_context_init(TALLOC_CTX *mem_ctx);
-int set_event_dispatch_time(struct event_context *event_ctx,
-			    const char *event_name, struct timeval when);
-int cancel_named_event(struct event_context *event_ctx,
-		       const char *event_name);
-void dump_event_list(struct event_context *event_ctx);
-
-/* The following definitions come from lib/fault.c  */
-
-void fault_setup(void (*fn)(void *));
-void dump_core_setup(const char *progname);
-
-/* The following definitions come from lib/file_id.c  */
-
-struct file_id file_id_create_dev(SMB_DEV_T dev, SMB_INO_T inode);
-struct file_id vfs_file_id_from_sbuf(connection_struct *conn, const SMB_STRUCT_STAT *sbuf);
-bool file_id_equal(const struct file_id *id1, const struct file_id *id2);
-const char *file_id_string_tos(const struct file_id *id);
-void push_file_id_16(char *buf, const struct file_id *id);
-void pull_file_id_16(char *buf, struct file_id *id);
-
-/* The following definitions come from lib/fsusage.c  */
-
-int sys_fsusage(const char *path, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-
-/* The following definitions come from lib/gencache.c  */
-
-bool gencache_init(void);
-bool gencache_shutdown(void);
-bool gencache_set(const char *keystr, const char *value, time_t timeout);
-bool gencache_del(const char *keystr);
-bool gencache_get(const char *keystr, char **valstr, time_t *timeout);
-bool gencache_get_data_blob(const char *keystr, DATA_BLOB *blob, bool *expired);
-bool gencache_set_data_blob(const char *keystr, const DATA_BLOB *blob, time_t timeout);
-void gencache_iterate(void (*fn)(const char* key, const char *value, time_t timeout, void* dptr),
-                      void* data, const char* keystr_pattern);
-int gencache_lock_entry( const char *key );
-void gencache_unlock_entry( const char *key );
-
-/* The following definitions come from lib/genrand.c  */
-
-void set_rand_reseed_callback(void (*fn)(int *));
-void set_need_random_reseed(void);
-void generate_random_buffer( unsigned char *out, int len);
-char *generate_random_str(size_t len);
-
-/* The following definitions come from lib/hmacmd5.c  */
-
-void hmac_md5_init_rfc2104(const unsigned char *key, int key_len, HMACMD5Context *ctx);
-void hmac_md5_init_limK_to_64(const unsigned char* key, int key_len,
-			HMACMD5Context *ctx);
-void hmac_md5_update(const unsigned char *text, int text_len, HMACMD5Context *ctx);
-void hmac_md5_final(unsigned char *digest, HMACMD5Context *ctx);
-void hmac_md5( unsigned char key[16], const unsigned char *data, int data_len,
-	       unsigned char *digest);
-
-/* The following definitions come from lib/iconv.c  */
-
-NTSTATUS smb_register_charset(struct charset_functions *funcs) ;
-size_t smb_iconv(smb_iconv_t cd, 
-		 const char **inbuf, size_t *inbytesleft,
-		 char **outbuf, size_t *outbytesleft);
-smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode);
-int smb_iconv_close (smb_iconv_t cd);
-
-/* The following definitions come from lib/interface.c  */
-
-bool ismyaddr(const struct sockaddr_storage *ip);
-bool ismyip_v4(struct in_addr ip);
-bool is_local_net(const struct sockaddr_storage *from);
-void setup_linklocal_scope_id(struct sockaddr_storage *pss);
-bool is_local_net_v4(struct in_addr from);
-int iface_count(void);
-int iface_count_v4_nl(void);
-const struct in_addr *first_ipv4_iface(void);
-struct interface *get_interface(int n);
-const struct sockaddr_storage *iface_n_sockaddr_storage(int n);
-const struct in_addr *iface_n_ip_v4(int n);
-const struct in_addr *iface_n_bcast_v4(int n);
-const struct sockaddr_storage *iface_n_bcast(int n);
-const struct sockaddr_storage *iface_ip(const struct sockaddr_storage *ip);
-bool iface_local(const struct sockaddr_storage *ip);
-void load_interfaces(void);
-void gfree_interfaces(void);
-bool interfaces_changed(void);
-
-/* The following definitions come from lib/ldap_debug_handler.c  */
-
-void init_ldap_debugging(void);
-
-/* The following definitions come from lib/ldap_escape.c  */
-
-char *escape_ldap_string_alloc(const char *s);
-char *escape_rdn_val_string_alloc(const char *s);
-
-/* The following definitions come from lib/md4.c  */
-
-void mdfour(unsigned char *out, const unsigned char *in, int n);
-
-/* The following definitions come from lib/md5.c  */
-
-void MD5Init(struct MD5Context *ctx);
-void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len);
-void MD5Final(unsigned char digest[16], struct MD5Context *ctx);
-
-/* The following definitions come from lib/module.c  */
-
-NTSTATUS smb_load_module(const char *module_name);
-int smb_load_modules(const char **modules);
-NTSTATUS smb_probe_module(const char *subsystem, const char *module);
-NTSTATUS smb_load_module(const char *module_name);
-int smb_load_modules(const char **modules);
-NTSTATUS smb_probe_module(const char *subsystem, const char *module);
-void init_modules(void);
-
-/* The following definitions come from lib/ms_fnmatch.c  */
-
-int ms_fnmatch(const char *pattern, const char *string, bool translate_pattern,
-	       bool is_case_sensitive);
-int gen_fnmatch(const char *pattern, const char *string);
-
-/* The following definitions come from lib/pam_errors.c  */
-
-NTSTATUS pam_to_nt_status(int pam_error);
-int nt_status_to_pam(NTSTATUS nt_status);
-NTSTATUS pam_to_nt_status(int pam_error);
-int nt_status_to_pam(NTSTATUS nt_status);
-
-/* The following definitions come from lib/pidfile.c  */
-
-pid_t pidfile_pid(const char *name);
-void pidfile_create(const char *program_name);
-
-/* The following definitions come from lib/popt_common.c  */
-
-
-/* The following definitions come from lib/privileges.c  */
-
-bool get_privileges_for_sids(SE_PRIV *privileges, DOM_SID *slist, int scount);
-NTSTATUS privilege_enumerate_accounts(DOM_SID **sids, int *num_sids);
-NTSTATUS privilege_enum_sids(const SE_PRIV *mask, TALLOC_CTX *mem_ctx,
-			     DOM_SID **sids, int *num_sids);
-bool grant_privilege(const DOM_SID *sid, const SE_PRIV *priv_mask);
-bool grant_privilege_by_name(DOM_SID *sid, const char *name);
-bool revoke_privilege(const DOM_SID *sid, const SE_PRIV *priv_mask);
-bool revoke_all_privileges( DOM_SID *sid );
-bool revoke_privilege_by_name(DOM_SID *sid, const char *name);
-NTSTATUS privilege_create_account(const DOM_SID *sid );
-NTSTATUS privilege_set_init(PRIVILEGE_SET *priv_set);
-NTSTATUS privilege_set_init_by_ctx(TALLOC_CTX *mem_ctx, PRIVILEGE_SET *priv_set);
-void privilege_set_free(PRIVILEGE_SET *priv_set);
-NTSTATUS dup_luid_attr(TALLOC_CTX *mem_ctx, LUID_ATTR **new_la, LUID_ATTR *old_la, int count);
-bool is_privileged_sid( const DOM_SID *sid );
-bool grant_all_privileges( const DOM_SID *sid );
-
-/* The following definitions come from lib/privileges_basic.c  */
-
-bool se_priv_copy( SE_PRIV *dst, const SE_PRIV *src );
-bool se_priv_put_all_privileges(SE_PRIV *mask);
-void se_priv_add( SE_PRIV *mask, const SE_PRIV *addpriv );
-void se_priv_remove( SE_PRIV *mask, const SE_PRIV *removepriv );
-bool se_priv_equal( const SE_PRIV *mask1, const SE_PRIV *mask2 );
-bool se_priv_from_name( const char *name, SE_PRIV *mask );
-void dump_se_priv( int dbg_cl, int dbg_lvl, const SE_PRIV *mask );
-bool is_privilege_assigned(const SE_PRIV *privileges,
-			   const SE_PRIV *check);
-const char* get_privilege_dispname( const char *name );
-bool user_has_privileges(const NT_USER_TOKEN *token, const SE_PRIV *privilege);
-bool user_has_any_privilege(NT_USER_TOKEN *token, const SE_PRIV *privilege);
-int count_all_privileges( void );
-LUID_ATTR get_privilege_luid( SE_PRIV *mask );
-const char *luid_to_privilege_name(const LUID *set);
-bool se_priv_to_privilege_set( PRIVILEGE_SET *set, SE_PRIV *mask );
-bool privilege_set_to_se_priv( SE_PRIV *mask, struct lsa_PrivilegeSet *privset );
-
-/* The following definitions come from lib/readline.c  */
-
-char *smb_readline(const char *prompt, void (*callback)(void),
-		   char **(completion_fn)(const char *text, int start, int end));
-const char *smb_readline_get_line_buffer(void);
-void smb_readline_ca_char(char c);
-int cmd_history(void);
-
-/* The following definitions come from lib/recvfile.c  */
-
-ssize_t sys_recvfile(int fromfd,
-			int tofd,
-			SMB_OFF_T offset,
-			size_t count);
-ssize_t sys_recvfile(int fromfd,
-			int tofd,
-			SMB_OFF_T offset,
-			size_t count);
-ssize_t drain_socket(int sockfd, size_t count);
-
-/* The following definitions come from lib/secace.c  */
-
-bool sec_ace_object(uint8 type);
-void sec_ace_copy(SEC_ACE *ace_dest, SEC_ACE *ace_src);
-void init_sec_ace(SEC_ACE *t, const DOM_SID *sid, enum security_ace_type type,
-		  uint32 mask, uint8 flag);
-NTSTATUS sec_ace_add_sid(TALLOC_CTX *ctx, SEC_ACE **pp_new, SEC_ACE *old, unsigned *num, DOM_SID *sid, uint32 mask);
-NTSTATUS sec_ace_mod_sid(SEC_ACE *ace, size_t num, DOM_SID *sid, uint32 mask);
-NTSTATUS sec_ace_del_sid(TALLOC_CTX *ctx, SEC_ACE **pp_new, SEC_ACE *old, uint32 *num, DOM_SID *sid);
-bool sec_ace_equal(SEC_ACE *s1, SEC_ACE *s2);
-int nt_ace_inherit_comp( SEC_ACE *a1, SEC_ACE *a2);
-int nt_ace_canon_comp( SEC_ACE *a1, SEC_ACE *a2);
-void dacl_sort_into_canonical_order(SEC_ACE *srclist, unsigned int num_aces);
-bool token_sid_in_ace(const NT_USER_TOKEN *token, const SEC_ACE *ace);
-
-/* The following definitions come from lib/secacl.c  */
-
-SEC_ACL *make_sec_acl(TALLOC_CTX *ctx, enum security_acl_revision revision,
-		      int num_aces, SEC_ACE *ace_list);
-SEC_ACL *dup_sec_acl(TALLOC_CTX *ctx, SEC_ACL *src);
-bool sec_acl_equal(SEC_ACL *s1, SEC_ACL *s2);
-
-/* The following definitions come from lib/secdesc.c  */
-
-bool sec_desc_equal(SEC_DESC *s1, SEC_DESC *s2);
-SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BUF *old_sdb);
-SEC_DESC *make_sec_desc(TALLOC_CTX *ctx,
-			enum security_descriptor_revision revision,
-			uint16 type,
-			const DOM_SID *owner_sid, const DOM_SID *grp_sid,
-			SEC_ACL *sacl, SEC_ACL *dacl, size_t *sd_size);
-SEC_DESC *dup_sec_desc(TALLOC_CTX *ctx, const SEC_DESC *src);
-NTSTATUS marshall_sec_desc(TALLOC_CTX *mem_ctx,
-			   struct security_descriptor *secdesc,
-			   uint8 **data, size_t *len);
-NTSTATUS unmarshall_sec_desc(TALLOC_CTX *mem_ctx, uint8 *data, size_t len,
-			     struct security_descriptor **psecdesc);
-SEC_DESC *make_standard_sec_desc(TALLOC_CTX *ctx, const DOM_SID *owner_sid, const DOM_SID *grp_sid,
-				 SEC_ACL *dacl, size_t *sd_size);
-SEC_DESC_BUF *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, SEC_DESC *sec_desc);
-SEC_DESC_BUF *dup_sec_desc_buf(TALLOC_CTX *ctx, SEC_DESC_BUF *src);
-NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, uint32 mask, size_t *sd_size);
-NTSTATUS sec_desc_mod_sid(SEC_DESC *sd, DOM_SID *sid, uint32 mask);
-NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, size_t *sd_size);
-SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr, 
-				      bool child_container);
-void init_sec_access(uint32 *t, uint32 mask);
-
-/* The following definitions come from lib/select.c  */
-
-void sys_select_signal(char c);
-int sys_select(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *tval);
-int sys_select_intr(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *tval);
-
-/* The following definitions come from lib/sendfile.c  */
-
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);
-
-/* The following definitions come from lib/server_mutex.c  */
-
-struct named_mutex *grab_named_mutex(TALLOC_CTX *mem_ctx, const char *name,
-				     int timeout);
-
-/* The following definitions come from lib/sharesec.c  */
-
-SEC_DESC *get_share_security_default( TALLOC_CTX *ctx, size_t *psize, uint32 def_access);
-SEC_DESC *get_share_security( TALLOC_CTX *ctx, const char *servicename,
-			      size_t *psize);
-bool set_share_security(const char *share_name, SEC_DESC *psd);
-bool delete_share_security(const char *servicename);
-bool share_access_check(const NT_USER_TOKEN *token, const char *sharename,
-			uint32 desired_access);
-bool parse_usershare_acl(TALLOC_CTX *ctx, const char *acl_str, SEC_DESC **ppsd);
-
-/* The following definitions come from lib/signal.c  */
-
-void BlockSignals(bool block,int signum);
-void (*CatchSignal(int signum,void (*handler)(int )))(int);
-void CatchChild(void);
-void CatchChildLeaveStatus(void);
-
-/* The following definitions come from lib/smbldap.c  */
-
-int smb_ldap_start_tls(LDAP *ldap_struct, int version);
-int smb_ldap_setup_conn(LDAP **ldap_struct, const char *uri);
-int smb_ldap_upgrade_conn(LDAP *ldap_struct, int *new_version) ;
-int smb_ldap_setup_full_conn(LDAP **ldap_struct, const char *uri);
-int smbldap_search(struct smbldap_state *ldap_state, 
-		   const char *base, int scope, const char *filter, 
-		   const char *attrs[], int attrsonly, 
-		   LDAPMessage **res);
-int smbldap_search_paged(struct smbldap_state *ldap_state, 
-			 const char *base, int scope, const char *filter, 
-			 const char **attrs, int attrsonly, int pagesize,
-			 LDAPMessage **res, void **cookie);
-int smbldap_modify(struct smbldap_state *ldap_state, const char *dn, LDAPMod *attrs[]);
-int smbldap_add(struct smbldap_state *ldap_state, const char *dn, LDAPMod *attrs[]);
-int smbldap_delete(struct smbldap_state *ldap_state, const char *dn);
-int smbldap_extended_operation(struct smbldap_state *ldap_state, 
-			       LDAP_CONST char *reqoid, struct berval *reqdata, 
-			       LDAPControl **serverctrls, LDAPControl **clientctrls, 
-			       char **retoidp, struct berval **retdatap);
-int smbldap_search_suffix (struct smbldap_state *ldap_state,
-			   const char *filter, const char **search_attr,
-			   LDAPMessage ** result);
-void smbldap_free_struct(struct smbldap_state **ldap_state) ;
-NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx, struct event_context *event_ctx,
-		      const char *location,
-		      struct smbldap_state **smbldap_state);
-char *smbldap_get_dn(LDAP *ld, LDAPMessage *entry);
-bool smbldap_has_control(LDAP *ld, const char *control);
-bool smbldap_has_extension(LDAP *ld, const char *extension);
-bool smbldap_has_naming_context(LDAP *ld, const char *naming_context);
-bool smbldap_set_creds(struct smbldap_state *ldap_state, bool anon, const char *dn, const char *secret);
-
-/* The following definitions come from lib/smbldap_util.c  */
-
-NTSTATUS smbldap_search_domain_info(struct smbldap_state *ldap_state,
-                                    LDAPMessage ** result, const char *domain_name,
-                                    bool try_add);
-
-/* The following definitions come from lib/smbrun.c  */
-
-int smbrun_no_sanitize(const char *cmd, int *outfd);
-int smbrun(const char *cmd, int *outfd);
-int smbrunsecret(const char *cmd, const char *secret);
-
-/* The following definitions come from lib/sock_exec.c  */
-
-int sock_exec(const char *prog);
-
-/* The following definitions come from lib/substitute.c  */
-
-void free_local_machine_name(void);
-bool set_local_machine_name(const char *local_name, bool perm);
-const char *get_local_machine_name(void);
-bool set_remote_machine_name(const char *remote_name, bool perm);
-const char *get_remote_machine_name(void);
-void sub_set_smb_name(const char *name);
-void set_current_user_info(const char *smb_name, const char *unix_name,
-			   const char *full_name, const char *domain);
-const char *get_current_username(void);
-void standard_sub_basic(const char *smb_name, const char *domain_name,
-			char *str, size_t len);
-char *talloc_sub_basic(TALLOC_CTX *mem_ctx, const char *smb_name,
-		       const char *domain_name, const char *str);
-char *alloc_sub_basic(const char *smb_name, const char *domain_name,
-		      const char *str);
-char *talloc_sub_specified(TALLOC_CTX *mem_ctx,
-			const char *input_string,
-			const char *username,
-			const char *domain,
-			uid_t uid,
-			gid_t gid);
-char *talloc_sub_advanced(TALLOC_CTX *mem_ctx,
-			  const char *servicename, const char *user,
-			  const char *connectpath, gid_t gid,
-			  const char *smb_name, const char *domain_name,
-			  const char *str);
-void standard_sub_advanced(const char *servicename, const char *user,
-			   const char *connectpath, gid_t gid,
-			   const char *smb_name, const char *domain_name,
-			   char *str, size_t len);
-char *standard_sub_conn(TALLOC_CTX *ctx, connection_struct *conn, const char *str);
-
-/* The following definitions come from lib/sysacls.c  */
-
-int sys_acl_get_entry(SMB_ACL_T acl_d, int entry_id, SMB_ACL_ENTRY_T *entry_p);
-int sys_acl_get_tag_type(SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *type_p);
-int sys_acl_get_permset(SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p);
-void *sys_acl_get_qualifier(SMB_ACL_ENTRY_T entry_d);
-int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset_d);
-int sys_acl_add_perm(SMB_ACL_PERMSET_T permset_d, SMB_ACL_PERM_T perm);
-int sys_acl_get_perm(SMB_ACL_PERMSET_T permset_d, SMB_ACL_PERM_T perm);
-char *sys_acl_to_text(SMB_ACL_T acl_d, ssize_t *len_p);
-SMB_ACL_T sys_acl_init(int count);
-int sys_acl_create_entry(SMB_ACL_T *acl_p, SMB_ACL_ENTRY_T *entry_p);
-int sys_acl_set_tag_type(SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T tag_type);
-int sys_acl_set_qualifier(SMB_ACL_ENTRY_T entry_d, void *qual_p);
-int sys_acl_set_permset(SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T permset_d);
-int sys_acl_free_text(char *text);
-int sys_acl_free_acl(SMB_ACL_T acl_d) ;
-int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype);
-int sys_acl_valid(SMB_ACL_T acl_d);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
-			   const char *path_p, SMB_ACL_TYPE_T type);
-SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp);
-int sys_acl_set_file(vfs_handle_struct *handle,
-		     const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d);
-int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
-		   SMB_ACL_T acl_d);
-int sys_acl_delete_def_file(vfs_handle_struct *handle,
-			    const char *path);
-int no_acl_syscall_error(int err);
-
-/* The following definitions come from lib/sysquotas.c  */
-
-int sys_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-int sys_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-
-/* The following definitions come from lib/sysquotas_4A.c  */
-
-int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-
-/* The following definitions come from lib/sysquotas_linux.c  */
-
-int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-
-/* The following definitions come from lib/sysquotas_xfs.c  */
-
-int sys_get_xfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-int sys_set_xfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-
-/* The following definitions come from lib/system.c  */
-
-void *sys_memalign( size_t align, size_t size );
-int sys_usleep(long usecs);
-ssize_t sys_read(int fd, void *buf, size_t count);
-ssize_t sys_write(int fd, const void *buf, size_t count);
-ssize_t sys_pread(int fd, void *buf, size_t count, SMB_OFF_T off);
-ssize_t sys_pwrite(int fd, const void *buf, size_t count, SMB_OFF_T off);
-ssize_t sys_send(int s, const void *msg, size_t len, int flags);
-ssize_t sys_sendto(int s,  const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
-ssize_t sys_recv(int fd, void *buf, size_t count, int flags);
-ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
-int sys_fcntl_ptr(int fd, int cmd, void *arg);
-int sys_fcntl_long(int fd, int cmd, long arg);
-int sys_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
-int sys_fstat(int fd,SMB_STRUCT_STAT *sbuf);
-int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf);
-int sys_ftruncate(int fd, SMB_OFF_T offset);
-SMB_OFF_T sys_lseek(int fd, SMB_OFF_T offset, int whence);
-int sys_fseek(FILE *fp, SMB_OFF_T offset, int whence);
-SMB_OFF_T sys_ftell(FILE *fp);
-int sys_creat(const char *path, mode_t mode);
-int sys_open(const char *path, int oflag, mode_t mode);
-FILE *sys_fopen(const char *path, const char *type);
-void kernel_flock(int fd, uint32 share_mode);
-SMB_STRUCT_DIR *sys_opendir(const char *name);
-SMB_STRUCT_DIRENT *sys_readdir(SMB_STRUCT_DIR *dirp);
-void sys_seekdir(SMB_STRUCT_DIR *dirp, long offset);
-long sys_telldir(SMB_STRUCT_DIR *dirp);
-void sys_rewinddir(SMB_STRUCT_DIR *dirp);
-int sys_closedir(SMB_STRUCT_DIR *dirp);
-int sys_mknod(const char *path, mode_t mode, SMB_DEV_T dev);
-char *sys_realpath(const char *path, char *resolved_path);
-int sys_waitpid(pid_t pid,int *status,int options);
-char *sys_getwd(char *s);
-int sys_symlink(const char *oldpath, const char *newpath);
-int sys_readlink(const char *path, char *buf, size_t bufsiz);
-int sys_link(const char *oldpath, const char *newpath);
-int sys_chown(const char *fname,uid_t uid,gid_t gid);
-int sys_lchown(const char *fname,uid_t uid,gid_t gid);
-int sys_chroot(const char *dname);
-void set_effective_capability(enum smbd_capability capability);
-void drop_effective_capability(enum smbd_capability capability);
-long sys_random(void);
-void sys_srandom(unsigned int seed);
-int groups_max(void);
-int sys_getgroups(int setlen, gid_t *gidset);
-int sys_setgroups(gid_t UNUSED(primary_gid), int setlen, gid_t *gidset);
-void sys_setpwent(void);
-struct passwd *sys_getpwent(void);
-void sys_endpwent(void);
-struct passwd *sys_getpwnam(const char *name);
-struct passwd *sys_getpwuid(uid_t uid);
-struct group *sys_getgrnam(const char *name);
-struct group *sys_getgrgid(gid_t gid);
-pid_t sys_fork(void);
-pid_t sys_getpid(void);
-int sys_popen(const char *command);
-int sys_pclose(int fd);
-void *sys_dlopen(const char *name, int flags);
-void *sys_dlsym(void *handle, const char *symbol);
-int sys_dlclose (void *handle);
-const char *sys_dlerror(void);
-int sys_dup2(int oldfd, int newfd) ;
-ssize_t sys_getxattr (const char *path, const char *name, void *value, size_t size);
-ssize_t sys_lgetxattr (const char *path, const char *name, void *value, size_t size);
-ssize_t sys_fgetxattr (int filedes, const char *name, void *value, size_t size);
-ssize_t sys_listxattr (const char *path, char *list, size_t size);
-ssize_t sys_llistxattr (const char *path, char *list, size_t size);
-ssize_t sys_flistxattr (int filedes, char *list, size_t size);
-int sys_removexattr (const char *path, const char *name);
-int sys_lremovexattr (const char *path, const char *name);
-int sys_fremovexattr (int filedes, const char *name);
-int sys_setxattr (const char *path, const char *name, const void *value, size_t size, int flags);
-int sys_lsetxattr (const char *path, const char *name, const void *value, size_t size, int flags);
-int sys_fsetxattr (int filedes, const char *name, const void *value, size_t size, int flags);
-uint32 unix_dev_major(SMB_DEV_T dev);
-uint32 unix_dev_minor(SMB_DEV_T dev);
-int sys_aio_read(SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_write(SMB_STRUCT_AIOCB *aiocb);
-ssize_t sys_aio_return(SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_cancel(int fd, SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_error(const SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_fsync(int op, SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct timespec *timeout);
-int sys_aio_read(SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_write(SMB_STRUCT_AIOCB *aiocb);
-ssize_t sys_aio_return(SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_cancel(int fd, SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_error(const SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_fsync(int op, SMB_STRUCT_AIOCB *aiocb);
-int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct timespec *timeout);
-int sys_getpeereid( int s, uid_t *uid);
-int sys_getnameinfo(const struct sockaddr *psa,
-			socklen_t salen,
-			char *host,
-			size_t hostlen,
-			char *service,
-			size_t servlen,
-			int flags);
-int sys_connect(int fd, const struct sockaddr * addr);
-
-/* The following definitions come from lib/system_smbd.c  */
-
-bool getgroups_unix_user(TALLOC_CTX *mem_ctx, const char *user,
-			 gid_t primary_gid,
-			 gid_t **ret_groups, size_t *p_ngroups);
-
-/* The following definitions come from lib/tallocmsg.c  */
-
-void register_msg_pool_usage(struct messaging_context *msg_ctx);
-
-/* The following definitions come from lib/time.c  */
-
-time_t get_time_t_max(void);
-void GetTimeOfDay(struct timeval *tval);
-time_t nt_time_to_unix(NTTIME nt);
-void unix_to_nt_time(NTTIME *nt, time_t t);
-bool null_time(time_t t);
-bool null_nttime(NTTIME t);
-bool null_timespec(struct timespec ts);
-void push_dos_date(uint8_t *buf, int offset, time_t unixdate, int zone_offset);
-void push_dos_date2(uint8_t *buf,int offset,time_t unixdate, int zone_offset);
-void push_dos_date3(uint8_t *buf,int offset,time_t unixdate, int zone_offset);
-time_t pull_dos_date(const uint8_t *date_ptr, int zone_offset);
-time_t pull_dos_date2(const uint8_t *date_ptr, int zone_offset);
-time_t pull_dos_date3(const uint8_t *date_ptr, int zone_offset);
-char *http_timestring(time_t t);
-char *timestring(TALLOC_CTX *mem_ctx, time_t t);
-const char *nt_time_string(TALLOC_CTX *mem_ctx, NTTIME nt);
-NTTIME nttime_from_string(const char *s);
-int64_t usec_time_diff(struct timeval *tv1, struct timeval *tv2);
-struct timeval timeval_zero(void);
-bool timeval_is_zero(const struct timeval *tv);
-struct timeval timeval_current(void);
-struct timeval timeval_set(uint32_t secs, uint32_t usecs);
-struct timeval timeval_add(const struct timeval *tv,
-			   uint32_t secs, uint32_t usecs);
-struct timeval timeval_sum(const struct timeval *tv1,
-			   const struct timeval *tv2);
-struct timeval timeval_current_ofs(uint32_t secs, uint32_t usecs);
-int timeval_compare(const struct timeval *tv1, const struct timeval *tv2);
-bool timeval_expired(const struct timeval *tv);
-double timeval_elapsed2(const struct timeval *tv1, const struct timeval *tv2);
-double timeval_elapsed(const struct timeval *tv);
-struct timeval timeval_min(const struct timeval *tv1,
-			   const struct timeval *tv2);
-struct timeval timeval_max(const struct timeval *tv1,
-			   const struct timeval *tv2);
-struct timeval timeval_until(const struct timeval *tv1,
-			     const struct timeval *tv2);
-NTTIME timeval_to_nttime(const struct timeval *tv);
-uint32 convert_time_t_to_uint32(time_t t);
-time_t convert_uint32_to_time_t(uint32 u);
-int get_time_zone(time_t t);
-bool nt_time_is_zero(const NTTIME *nt);
-time_t generalized_to_unix_time(const char *str);
-int get_server_zone_offset(void);
-int set_server_zone_offset(time_t t);
-char *current_timestring(TALLOC_CTX *ctx, bool hires);
-void srv_put_dos_date(char *buf,int offset,time_t unixdate);
-void srv_put_dos_date2(char *buf,int offset, time_t unixdate);
-void srv_put_dos_date3(char *buf,int offset,time_t unixdate);
-void put_long_date_timespec(char *p, struct timespec ts);
-void put_long_date(char *p, time_t t);
-struct timespec get_create_timespec(const SMB_STRUCT_STAT *st,bool fake_dirs);
-struct timespec get_atimespec(const SMB_STRUCT_STAT *pst);
-void set_atimespec(SMB_STRUCT_STAT *pst, struct timespec ts);
-struct timespec get_mtimespec(const SMB_STRUCT_STAT *pst);
-void set_mtimespec(SMB_STRUCT_STAT *pst, struct timespec ts);
-struct timespec get_ctimespec(const SMB_STRUCT_STAT *pst);
-void set_ctimespec(SMB_STRUCT_STAT *pst, struct timespec ts);
-void dos_filetime_timespec(struct timespec *tsp);
-time_t srv_make_unix_date(const void *date_ptr);
-time_t srv_make_unix_date2(const void *date_ptr);
-time_t srv_make_unix_date3(const void *date_ptr);
-time_t convert_timespec_to_time_t(struct timespec ts);
-struct timespec convert_time_t_to_timespec(time_t t);
-struct timespec convert_timeval_to_timespec(const struct timeval tv);
-struct timeval convert_timespec_to_timeval(const struct timespec ts);
-struct timespec timespec_current(void);
-struct timespec timespec_min(const struct timespec *ts1,
-			   const struct timespec *ts2);
-int timespec_compare(const struct timespec *ts1, const struct timespec *ts2);
-struct timespec interpret_long_date(const char *p);
-void cli_put_dos_date(struct cli_state *cli, char *buf, int offset, time_t unixdate);
-void cli_put_dos_date2(struct cli_state *cli, char *buf, int offset, time_t unixdate);
-void cli_put_dos_date3(struct cli_state *cli, char *buf, int offset, time_t unixdate);
-time_t cli_make_unix_date(struct cli_state *cli, const void *date_ptr);
-time_t cli_make_unix_date2(struct cli_state *cli, const void *date_ptr);
-time_t cli_make_unix_date3(struct cli_state *cli, const void *date_ptr);
-struct timespec nt_time_to_unix_timespec(NTTIME *nt);
-bool nt_time_equals(const NTTIME *nt1, const NTTIME *nt2);
-void TimeInit(void);
-void get_process_uptime(struct timeval *ret_time);
-time_t nt_time_to_unix_abs(const NTTIME *nt);
-time_t uint64s_nt_time_to_unix_abs(const uint64_t *src);
-void unix_timespec_to_nt_time(NTTIME *nt, struct timespec ts);
-void unix_to_nt_time_abs(NTTIME *nt, time_t t);
-bool null_mtime(time_t mtime);
-const char *time_to_asc(const time_t t);
-const char *display_time(NTTIME nttime);
-bool nt_time_is_set(const NTTIME *nt);
-
-/* The following definitions come from lib/ufc.c  */
-
-char *ufc_crypt(const char *key,const char *salt);
-
-/* The following definitions come from lib/username.c  */
-
-char *get_user_home_dir(TALLOC_CTX *mem_ctx, const char *user);
-struct passwd *Get_Pwnam_alloc(TALLOC_CTX *mem_ctx, const char *user);
-
-/* The following definitions come from lib/util.c  */
-
-bool set_global_myname(const char *myname);
-const char *global_myname(void);
-bool set_global_myworkgroup(const char *myworkgroup);
-const char *lp_workgroup(void);
-bool set_global_scope(const char *scope);
-const char *global_scope(void);
-void gfree_names(void);
-void gfree_all( void );
-const char *my_netbios_names(int i);
-bool set_netbios_aliases(const char **str_array);
-bool init_names(void);
-const char *get_cmdline_auth_info_username(void);
-void set_cmdline_auth_info_username(const char *username);
-const char *get_cmdline_auth_info_password(void);
-void set_cmdline_auth_info_password(const char *password);
-bool set_cmdline_auth_info_signing_state(const char *arg);
-int get_cmdline_auth_info_signing_state(void);
-void set_cmdline_auth_info_use_kerberos(bool b);
-bool get_cmdline_auth_info_use_kerberos(void);
-void set_cmdline_auth_info_use_krb5_ticket(void);
-void set_cmdline_auth_info_smb_encrypt(void);
-void set_cmdline_auth_info_use_machine_account(void);
-bool get_cmdline_auth_info_got_pass(void);
-bool get_cmdline_auth_info_smb_encrypt(void);
-bool get_cmdline_auth_info_use_machine_account(void);
-bool get_cmdline_auth_info_copy(struct user_auth_info *info);
-bool set_cmdline_auth_info_machine_account_creds(void);
-const char *tmpdir(void);
-bool add_gid_to_array_unique(TALLOC_CTX *mem_ctx, gid_t gid,
-			     gid_t **gids, size_t *num_gids);
-const char *get_numlist(const char *p, uint32 **num, int *count);
-bool file_exist(const char *fname,SMB_STRUCT_STAT *sbuf);
-bool socket_exist(const char *fname);
-time_t file_modtime(const char *fname);
-bool directory_exist(char *dname,SMB_STRUCT_STAT *st);
-SMB_OFF_T get_file_size(char *file_name);
-char *attrib_string(uint16 mode);
-void show_msg(char *buf);
-void smb_set_enclen(char *buf,int len,uint16 enc_ctx_num);
-void smb_setlen(char *buf,int len);
-int set_message_bcc(char *buf,int num_bytes);
-ssize_t message_push_blob(uint8 **outbuf, DATA_BLOB blob);
-char *unix_clean_name(TALLOC_CTX *ctx, const char *s);
-char *clean_name(TALLOC_CTX *ctx, const char *s);
-void close_low_fds(bool stderr_too);
-ssize_t write_data_at_offset(int fd, const char *buffer, size_t N, SMB_OFF_T pos);
-int set_blocking(int fd, bool set);
-void smb_msleep(unsigned int t);
-void become_daemon(bool Fork, bool no_process_group);
-bool reinit_after_fork(struct messaging_context *msg_ctx,
-		       bool parent_longlived);
-bool yesno(const char *p);
-void *malloc_(size_t size);
-void *malloc_array(size_t el_size, unsigned int count);
-void *memalign_array(size_t el_size, size_t align, unsigned int count);
-void *calloc_array(size_t size, size_t nmemb);
-void *Realloc(void *p, size_t size, bool free_old_on_error);
-void *realloc_array(void *p, size_t el_size, unsigned int count, bool free_old_on_error);
-void add_to_large_array(TALLOC_CTX *mem_ctx, size_t element_size,
-			void *element, void *_array, uint32 *num_elements,
-			ssize_t *array_size);
-void safe_free(void *p);
-char *get_myname(TALLOC_CTX *ctx);
-char *get_mydnsdomname(TALLOC_CTX *ctx);
-int interpret_protocol(const char *str,int def);
-char *automount_lookup(TALLOC_CTX *ctx, const char *user_name);
-char *automount_lookup(TALLOC_CTX *ctx, const char *user_name);
-bool process_exists(const struct server_id pid);
-bool process_exists_by_pid(pid_t pid);
-const char *uidtoname(uid_t uid);
-char *gidtoname(gid_t gid);
-uid_t nametouid(const char *name);
-gid_t nametogid(const char *name);
-void smb_panic(const char *const why);
-void log_stack_trace(void);
-const char *readdirname(SMB_STRUCT_DIR *p);
-bool is_in_path(const char *name, name_compare_entry *namelist, bool case_sensitive);
-void set_namearray(name_compare_entry **ppname_array, const char *namelist);
-void free_namearray(name_compare_entry *name_array);
-bool fcntl_lock(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
-bool fcntl_getlock(int fd, SMB_OFF_T *poffset, SMB_OFF_T *pcount, int *ptype, pid_t *ppid);
-bool is_myname(const char *s);
-bool is_myworkgroup(const char *s);
-void ra_lanman_string( const char *native_lanman );
-const char *get_remote_arch_str(void);
-void set_remote_arch(enum remote_arch_types type);
-enum remote_arch_types get_remote_arch(void);
-void print_asc(int level, const unsigned char *buf,int len);
-void dump_data(int level, const unsigned char *buf1,int len);
-void dump_data_pw(const char *msg, const uchar * data, size_t len);
-const char *tab_depth(int level, int depth);
-int str_checksum(const char *s);
-void zero_free(void *p, size_t size);
-int set_maxfiles(int requested_max);
-int smb_mkstemp(char *name_template);
-void *smb_xmalloc_array(size_t size, unsigned int count);
-void *smb_xmemdup(const void *p, size_t size);
-char *smb_xstrdup(const char *s);
-char *smb_xstrndup(const char *s, size_t n);
-void *memdup(const void *p, size_t size);
-char *myhostname(void);
-char *lock_path(const char *name);
-char *pid_path(const char *name);
-char *lib_path(const char *name);
-char *modules_path(const char *name);
-char *data_path(const char *name);
-char *state_path(const char *name);
-const char *shlib_ext(void);
-char *parent_dirname(const char *path);
-bool parent_dirname_talloc(TALLOC_CTX *mem_ctx, const char *dir,
-			   char **parent, const char **name);
-bool ms_has_wild(const char *s);
-bool ms_has_wild_w(const smb_ucs2_t *s);
-bool mask_match(const char *string, const char *pattern, bool is_case_sensitive);
-bool mask_match_search(const char *string, const char *pattern, bool is_case_sensitive);
-bool mask_match_list(const char *string, char **list, int listLen, bool is_case_sensitive);
-bool unix_wild_match(const char *pattern, const char *string);
-bool name_to_fqdn(fstring fqdn, const char *name);
-void *talloc_check_name_abort(const void *ptr, const char *name);
-uint32 map_share_mode_to_deny_mode(uint32 share_access, uint32 private_options);
-pid_t procid_to_pid(const struct server_id *proc);
-void set_my_vnn(uint32 vnn);
-uint32 get_my_vnn(void);
-struct server_id pid_to_procid(pid_t pid);
-struct server_id procid_self(void);
-struct server_id server_id_self(void);
-bool procid_equal(const struct server_id *p1, const struct server_id *p2);
-bool cluster_id_equal(const struct server_id *id1,
-		      const struct server_id *id2);
-bool procid_is_me(const struct server_id *pid);
-struct server_id interpret_pid(const char *pid_string);
-char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid);
-char *procid_str_static(const struct server_id *pid);
-bool procid_valid(const struct server_id *pid);
-bool procid_is_local(const struct server_id *pid);
-int this_is_smp(void);
-bool is_offset_safe(const char *buf_base, size_t buf_len, char *ptr, size_t off);
-char *get_safe_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off);
-char *get_safe_str_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off);
-int get_safe_SVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval);
-int get_safe_IVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval);
-void split_domain_user(TALLOC_CTX *mem_ctx,
-		       const char *full_name,
-		       char **domain,
-		       char **user);
-void *_talloc_zero_zeronull(const void *ctx, size_t size, const char *name);
-void *_talloc_memdup_zeronull(const void *t, const void *p, size_t size, const char *name);
-void *_talloc_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name);
-void *_talloc_zero_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name);
-void *talloc_zeronull(const void *context, size_t size, const char *name);
-NTSTATUS split_ntfs_stream_name(TALLOC_CTX *mem_ctx, const char *fname,
-				char **pbase, char **pstream);
-bool is_valid_policy_hnd(const POLICY_HND *hnd);
-bool policy_hnd_equal(const struct policy_handle *hnd1,
-		      const struct policy_handle *hnd2);
-const char *strip_hostname(const char *s);
-
-/* The following definitions come from lib/util_file.c  */
-
-char *fgets_slash(char *s2,int maxlen,XFILE *f);
-char *fd_load(int fd, size_t *psize, size_t maxsize);
-char *file_load(const char *fname, size_t *size, size_t maxsize);
-bool unmap_file(void* start, size_t size);
-void *map_file(char *fname, size_t size);
-char **file_lines_load(const char *fname, int *numlines, size_t maxsize);
-char **fd_lines_load(int fd, int *numlines, size_t maxsize);
-char **file_lines_pload(char *syscmd, int *numlines);
-void file_lines_free(char **lines);
-void file_lines_slashcont(char **lines);
-bool file_save(const char *fname, void *packet, size_t length);
-
-/* The following definitions come from lib/util_nscd.c  */
-
-void smb_nscd_flush_user_cache(void);
-void smb_nscd_flush_group_cache(void);
-
-/* The following definitions come from lib/util_nttoken.c  */
-
-NT_USER_TOKEN *dup_nt_token(TALLOC_CTX *mem_ctx, const NT_USER_TOKEN *ptoken);
-NTSTATUS merge_nt_token(TALLOC_CTX *mem_ctx,
-			const struct nt_user_token *token_1,
-			const struct nt_user_token *token_2,
-			struct nt_user_token **token_out);
-
-/* The following definitions come from lib/util_pw.c  */
-
-struct passwd *tcopy_passwd(TALLOC_CTX *mem_ctx, const struct passwd *from) ;
-void flush_pwnam_cache(void);
-struct passwd *getpwnam_alloc(TALLOC_CTX *mem_ctx, const char *name);
-struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid) ;
-
-/* The following definitions come from lib/util_reg.c  */
-
-const char *reg_type_lookup(enum winreg_Type type);
-WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len,
-			 uint32 *num_values, char ***values);
-
-/* The following definitions come from lib/util_reg_api.c  */
-
-WERROR registry_pull_value(TALLOC_CTX *mem_ctx,
-			   struct registry_value **pvalue,
-			   enum winreg_Type type, uint8 *data,
-			   uint32 size, uint32 length);
-WERROR registry_push_value(TALLOC_CTX *mem_ctx,
-			   const struct registry_value *value,
-			   DATA_BLOB *presult);
-
-/* The following definitions come from lib/util_seaccess.c  */
-
-void se_map_generic(uint32 *access_mask, const struct generic_mapping *mapping);
-void se_map_standard(uint32 *access_mask, struct standard_mapping *mapping);
-bool se_access_check(const SEC_DESC *sd, const NT_USER_TOKEN *token,
-		     uint32 acc_desired, uint32 *acc_granted, 
-		     NTSTATUS *status);
-NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size);
-
-/* The following definitions come from lib/util_sec.c  */
-
-void sec_init(void);
-uid_t sec_initial_uid(void);
-gid_t sec_initial_gid(void);
-bool non_root_mode(void);
-void gain_root_privilege(void);
-void gain_root_group_privilege(void);
-void set_effective_uid(uid_t uid);
-void set_effective_gid(gid_t gid);
-void save_re_uid(void);
-void restore_re_uid_fromroot(void);
-void restore_re_uid(void);
-void save_re_gid(void);
-void restore_re_gid(void);
-int set_re_uid(void);
-void become_user_permanently(uid_t uid, gid_t gid);
-bool is_setuid_root(void) ;
-
-/* The following definitions come from lib/util_sid.c  */
-
-const char *sid_type_lookup(uint32 sid_type) ;
-NT_USER_TOKEN *get_system_token(void) ;
-const char *get_global_sam_name(void) ;
-char *sid_to_fstring(fstring sidstr_out, const DOM_SID *sid);
-char *sid_string_talloc(TALLOC_CTX *mem_ctx, const DOM_SID *sid);
-char *sid_string_dbg(const DOM_SID *sid);
-char *sid_string_tos(const DOM_SID *sid);
-bool string_to_sid(DOM_SID *sidout, const char *sidstr);
-DOM_SID *string_sid_talloc(TALLOC_CTX *mem_ctx, const char *sidstr);
-bool sid_append_rid(DOM_SID *sid, uint32 rid);
-bool sid_compose(DOM_SID *dst, const DOM_SID *domain_sid, uint32 rid);
-bool sid_split_rid(DOM_SID *sid, uint32 *rid);
-bool sid_peek_rid(const DOM_SID *sid, uint32 *rid);
-bool sid_peek_check_rid(const DOM_SID *exp_dom_sid, const DOM_SID *sid, uint32 *rid);
-void sid_copy(DOM_SID *dst, const DOM_SID *src);
-bool sid_linearize(char *outbuf, size_t len, const DOM_SID *sid);
-bool sid_parse(const char *inbuf, size_t len, DOM_SID *sid);
-int sid_compare(const DOM_SID *sid1, const DOM_SID *sid2);
-int sid_compare_domain(const DOM_SID *sid1, const DOM_SID *sid2);
-bool sid_equal(const DOM_SID *sid1, const DOM_SID *sid2);
-bool non_mappable_sid(DOM_SID *sid);
-char *sid_binstring(const DOM_SID *sid);
-char *sid_binstring_hex(const DOM_SID *sid);
-DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, const DOM_SID *src);
-NTSTATUS add_sid_to_array(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-			  DOM_SID **sids, size_t *num);
-NTSTATUS add_sid_to_array_unique(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-				 DOM_SID **sids, size_t *num_sids);
-void del_sid_from_array(const DOM_SID *sid, DOM_SID **sids, size_t *num);
-bool add_rid_to_array_unique(TALLOC_CTX *mem_ctx,
-				    uint32 rid, uint32 **pp_rids, size_t *p_num);
-bool is_null_sid(const DOM_SID *sid);
-NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
-			      const struct netr_SamInfo3 *info3,
-			      DOM_SID **user_sids,
-			      size_t *num_user_sids,
-			      bool include_user_group_rid,
-			      bool skip_ressource_groups);
-
-/* The following definitions come from lib/util_sock.c  */
-
-bool is_ipaddress_v4(const char *str);
-bool is_ipaddress(const char *str);
-bool is_broadcast_addr(const struct sockaddr_storage *pss);
-uint32 interpret_addr(const char *str);
-struct in_addr *interpret_addr2(struct in_addr *ip, const char *str);
-bool interpret_string_addr(struct sockaddr_storage *pss,
-		const char *str,
-		int flags);
-bool is_loopback_ip_v4(struct in_addr ip);
-bool is_loopback_addr(const struct sockaddr_storage *pss);
-bool is_zero_ip_v4(struct in_addr ip);
-bool is_zero_addr(const struct sockaddr_storage *pss);
-void zero_ip_v4(struct in_addr *ip);
-void zero_addr(struct sockaddr_storage *pss);
-bool same_net_v4(struct in_addr ip1,struct in_addr ip2,struct in_addr mask);
-void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss,
-		struct in_addr ip);
-bool same_net(const struct sockaddr_storage *ip1,
-		const struct sockaddr_storage *ip2,
-		const struct sockaddr_storage *mask);
-bool addr_equal(const struct sockaddr_storage *ip1,
-		const struct sockaddr_storage *ip2);
-bool is_address_any(const struct sockaddr_storage *psa);
-uint16_t get_sockaddr_port(const struct sockaddr_storage *pss);
-char *print_sockaddr(char *dest,
-			size_t destlen,
-			const struct sockaddr_storage *psa);
-char *print_canonical_sockaddr(TALLOC_CTX *ctx,
-			const struct sockaddr_storage *pss);
-void set_sockaddr_port(struct sockaddr_storage *psa, uint16 port);
-const char *client_name(int fd);
-const char *client_addr(int fd, char *addr, size_t addrlen);
-const char *client_socket_addr(int fd, char *addr, size_t addr_len);
-int client_socket_port(int fd);
-void set_smb_read_error(enum smb_read_errors *pre,
-			enum smb_read_errors newerr);
-void cond_set_smb_read_error(enum smb_read_errors *pre,
-			enum smb_read_errors newerr);
-bool is_a_socket(int fd);
-void set_socket_options(int fd, const char *options);
-ssize_t read_udp_v4_socket(int fd,
-			char *buf,
-			size_t len,
-			struct sockaddr_storage *psa);
-NTSTATUS read_socket_with_timeout(int fd, char *buf,
-				  size_t mincnt, size_t maxcnt,
-				  unsigned int time_out,
-				  size_t *size_ret);
-NTSTATUS read_data(int fd, char *buffer, size_t N);
-ssize_t write_data(int fd, const char *buffer, size_t N);
-bool send_keepalive(int client);
-NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf,
-					  unsigned int timeout,
-					  size_t *len);
-NTSTATUS read_smb_length(int fd, char *inbuf, unsigned int timeout,
-			 size_t *len);
-NTSTATUS receive_smb_raw(int fd,
-			char *buffer,
-			size_t buflen,
-			unsigned int timeout,
-			size_t maxlen,
-			size_t *p_len);
-int open_socket_in(int type,
-		uint16_t port,
-		int dlevel,
-		const struct sockaddr_storage *psock,
-		bool rebind);
-int open_socket_out(int type,
-		const struct sockaddr_storage *pss,
-		uint16_t port,
-		int timeout);
-bool open_any_socket_out(struct sockaddr_storage *addrs, int num_addrs,
-			 int timeout, int *fd_index, int *fd);
-int open_udp_socket(const char *host, int port);
-const char *get_peer_name(int fd, bool force_lookup);
-const char *get_peer_addr(int fd, char *addr, size_t addr_len);
-int create_pipe_sock(const char *socket_dir,
-		     const char *socket_name,
-		     mode_t dir_perms);
-const char *get_mydnsfullname(void);
-bool is_myname_or_ipaddr(const char *s);
-
-/* The following definitions come from lib/util_str.c  */
-
-bool next_token(const char **ptr, char *buff, const char *sep, size_t bufsize);
-bool next_token_talloc(TALLOC_CTX *ctx,
-			const char **ptr,
-			char **pp_buff,
-			const char *sep);
-bool next_token_no_ltrim_talloc(TALLOC_CTX *ctx,
-			const char **ptr,
-			char **pp_buff,
-			const char *sep);
-int StrCaseCmp(const char *s, const char *t);
-int StrnCaseCmp(const char *s, const char *t, size_t len);
-bool strequal(const char *s1, const char *s2);
-bool strnequal(const char *s1,const char *s2,size_t n);
-bool strcsequal(const char *s1,const char *s2);
-int strwicmp(const char *psz1, const char *psz2);
-void strnorm(char *s, int case_default);
-bool strisnormal(const char *s, int case_default);
-void string_replace( char *s, char oldc, char newc );
-char *push_skip_string(char *buf);
-char *skip_string(const char *base, size_t len, char *buf);
-size_t str_charnum(const char *s);
-size_t str_ascii_charnum(const char *s);
-bool trim_char(char *s,char cfront,char cback);
-bool trim_string(char *s,const char *front,const char *back);
-bool strhasupper(const char *s);
-bool strhaslower(const char *s);
-size_t count_chars(const char *s,char c);
-char *safe_strcpy_fn(const char *fn,
-		int line,
-		char *dest,
-		const char *src,
-		size_t maxlength);
-char *safe_strcat_fn(const char *fn,
-		int line,
-		char *dest,
-		const char *src,
-		size_t maxlength);
-char *alpha_strcpy_fn(const char *fn,
-		int line,
-		char *dest,
-		const char *src,
-		const char *other_safe_chars,
-		size_t maxlength);
-char *StrnCpy_fn(const char *fn, int line,char *dest,const char *src,size_t n);
-size_t strhex_to_str(char *buf, size_t buf_len, const char *strhex, size_t strhex_len);
-DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *strhex);
-char *hex_encode(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_t len);
-bool in_list(const char *s, const char *list, bool casesensitive);
-void string_free(char **s);
-bool string_set(char **dest,const char *src);
-void string_sub2(char *s,const char *pattern, const char *insert, size_t len,
-		 bool remove_unsafe_characters, bool replace_once,
-		 bool allow_trailing_dollar);
-void string_sub_once(char *s, const char *pattern,
-		const char *insert, size_t len);
-void string_sub(char *s,const char *pattern, const char *insert, size_t len);
-void fstring_sub(char *s,const char *pattern,const char *insert);
-char *realloc_string_sub2(char *string,
-			const char *pattern,
-			const char *insert,
-			bool remove_unsafe_characters,
-			bool allow_trailing_dollar);
-char *realloc_string_sub(char *string,
-			const char *pattern,
-			const char *insert);
-char *talloc_string_sub2(TALLOC_CTX *mem_ctx, const char *src,
-			const char *pattern,
-			const char *insert,
-			bool remove_unsafe_characters,
-			bool replace_once,
-			bool allow_trailing_dollar);
-char *talloc_string_sub(TALLOC_CTX *mem_ctx,
-			const char *src,
-			const char *pattern,
-			const char *insert);
-void all_string_sub(char *s,const char *pattern,const char *insert, size_t len);
-char *talloc_all_string_sub(TALLOC_CTX *ctx,
-				const char *src,
-				const char *pattern,
-				const char *insert);
-char *octal_string(int i);
-char *string_truncate(char *s, unsigned int length);
-char *strchr_m(const char *src, char c);
-char *strrchr_m(const char *s, char c);
-char *strnrchr_m(const char *s, char c, unsigned int n);
-char *strstr_m(const char *src, const char *findstr);
-void strlower_m(char *s);
-void strupper_m(char *s);
-size_t strlen_m(const char *s);
-size_t strlen_m_term(const char *s);
-size_t strlen_m_term_null(const char *s);
-char *binary_string_rfc2254(char *buf, int len);
-char *binary_string(char *buf, int len);
-int fstr_sprintf(fstring s, const char *fmt, ...);
-char **str_list_make(TALLOC_CTX *mem_ctx, const char *string, const char *sep);
-bool str_list_copy(TALLOC_CTX *mem_ctx, char ***dest, const char **src);
-bool str_list_compare(char **list1, char **list2);
-int str_list_count( const char **list );
-bool str_list_sub_basic( char **list, const char *smb_name,
-			 const char *domain_name );
-bool str_list_substitute(char **list, const char *pattern, const char *insert);
-char *ipstr_list_make(char **ipstr_list,
-			const struct ip_service *ip_list,
-			int ip_count);
-int ipstr_list_parse(const char *ipstr_list, struct ip_service **ip_list);
-void ipstr_list_free(char* ipstr_list);
-void rfc1738_unescape(char *buf);
-DATA_BLOB base64_decode_data_blob(const char *s);
-void base64_decode_inplace(char *s);
-char *base64_encode_data_blob(TALLOC_CTX *mem_ctx, DATA_BLOB data);
-SMB_BIG_UINT STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr);
-SMB_OFF_T conv_str_size(const char * str);
-void string_append(char **left, const char *right);
-bool add_string_to_array(TALLOC_CTX *mem_ctx,
-			 const char *str, const char ***strings,
-			 int *num);
-void sprintf_append(TALLOC_CTX *mem_ctx, char **string, ssize_t *len,
-		    size_t *bufsize, const char *fmt, ...);
-int asprintf_strupper_m(char **strp, const char *fmt, ...);
-char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...);
-char *talloc_asprintf_strlower_m(TALLOC_CTX *t, const char *fmt, ...);
-char *sstring_sub(const char *src, char front, char back);
-bool validate_net_name( const char *name,
-		const char *invalid_chars,
-		int max_len);
-size_t ascii_len_n(const char *src, size_t n);
-size_t utf16_len(const void *buf);
-size_t utf16_len_n(const void *src, size_t n);
-char *escape_shell_string(const char *src);
-
-/* The following definitions come from lib/util_unistr.c  */
-
-void gfree_case_tables(void);
-void load_case_tables(void);
-void init_valid_table(void);
-size_t dos_PutUniCode(char *dst,const char *src, size_t len, bool null_terminate);
-char *skip_unibuf(char *src, size_t len);
-int rpcstr_pull(char* dest, void *src, int dest_len, int src_len, int flags);
-int rpcstr_pull_talloc(TALLOC_CTX *ctx,
-			char **dest,
-			void *src,
-			int src_len,
-			int flags);
-int rpcstr_pull_unistr2_fstring(char *dest, UNISTR2 *src);
-char *rpcstr_pull_unistr2_talloc(TALLOC_CTX *ctx, const UNISTR2 *src);
-int rpcstr_push(void *dest, const char *src, size_t dest_len, int flags);
-int rpcstr_push_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src);
-void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen);
-void unistr3_to_ascii(char *dest, const UNISTR3 *str, size_t maxlen);
-char *unistr2_to_ascii_talloc(TALLOC_CTX *ctx, const UNISTR2 *str);
-const char *unistr2_static(const UNISTR2 *str);
-smb_ucs2_t toupper_w(smb_ucs2_t val);
-smb_ucs2_t tolower_w( smb_ucs2_t val );
-bool islower_w(smb_ucs2_t c);
-bool isupper_w(smb_ucs2_t c);
-bool isvalid83_w(smb_ucs2_t c);
-size_t strlen_w(const smb_ucs2_t *src);
-size_t strnlen_w(const smb_ucs2_t *src, size_t max);
-smb_ucs2_t *strchr_w(const smb_ucs2_t *s, smb_ucs2_t c);
-smb_ucs2_t *strchr_wa(const smb_ucs2_t *s, char c);
-smb_ucs2_t *strrchr_w(const smb_ucs2_t *s, smb_ucs2_t c);
-smb_ucs2_t *strnrchr_w(const smb_ucs2_t *s, smb_ucs2_t c, unsigned int n);
-smb_ucs2_t *strstr_w(const smb_ucs2_t *s, const smb_ucs2_t *ins);
-bool strlower_w(smb_ucs2_t *s);
-bool strupper_w(smb_ucs2_t *s);
-void strnorm_w(smb_ucs2_t *s, int case_default);
-int strcmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b);
-int strncmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len);
-int strcasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b);
-int strncasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len);
-bool strequal_w(const smb_ucs2_t *s1, const smb_ucs2_t *s2);
-bool strnequal_w(const smb_ucs2_t *s1,const smb_ucs2_t *s2,size_t n);
-smb_ucs2_t *strdup_w(const smb_ucs2_t *src);
-smb_ucs2_t *strndup_w(const smb_ucs2_t *src, size_t len);
-smb_ucs2_t *strncpy_w(smb_ucs2_t *dest, const smb_ucs2_t *src, const size_t max);
-smb_ucs2_t *strncat_w(smb_ucs2_t *dest, const smb_ucs2_t *src, const size_t max);
-smb_ucs2_t *strcat_w(smb_ucs2_t *dest, const smb_ucs2_t *src);
-void string_replace_w(smb_ucs2_t *s, smb_ucs2_t oldc, smb_ucs2_t newc);
-bool trim_string_w(smb_ucs2_t *s, const smb_ucs2_t *front,
-				  const smb_ucs2_t *back);
-int strcmp_wa(const smb_ucs2_t *a, const char *b);
-int strncmp_wa(const smb_ucs2_t *a, const char *b, size_t len);
-smb_ucs2_t *strpbrk_wa(const smb_ucs2_t *s, const char *p);
-smb_ucs2_t *strstr_wa(const smb_ucs2_t *s, const char *ins);
-int unistrlen(uint16 *s);
-int unistrcpy(uint16 *dst, uint16 *src);
-UNISTR2* ucs2_to_unistr2(TALLOC_CTX *ctx, UNISTR2* dst, smb_ucs2_t* src);
-int toupper_ascii(int c);
-int tolower_ascii(int c);
-int isupper_ascii(int c);
-int islower_ascii(int c);
-
-/* The following definitions come from lib/util_uuid.c  */
-
-void smb_uuid_pack(const struct GUID uu, UUID_FLAT *ptr);
-void smb_uuid_unpack(const UUID_FLAT in, struct GUID *uu);
-void smb_uuid_generate_random(struct GUID *uu);
-const char *smb_uuid_string(TALLOC_CTX *mem_ctx, const struct GUID uu);
-bool smb_string_to_uuid(const char *in, struct GUID* uu);
-char *guid_binstring(const struct GUID *guid);
-
-/* The following definitions come from lib/version.c  */
-
-const char *samba_version_string(void);
-
-/* The following definitions come from lib/winbind_util.c  */
-
-bool winbind_lookup_name(const char *dom_name, const char *name, DOM_SID *sid, 
-                         enum lsa_SidType *name_type);
-bool winbind_lookup_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 
-			const char **domain, const char **name,
-                        enum lsa_SidType *name_type);
-bool winbind_ping(void);
-bool winbind_sid_to_uid(uid_t *puid, const DOM_SID *sid);
-bool winbind_uid_to_sid(DOM_SID *sid, uid_t uid);
-bool winbind_sid_to_gid(gid_t *pgid, const DOM_SID *sid);
-bool winbind_gid_to_sid(DOM_SID *sid, gid_t gid);
-wbcErr wb_is_trusted_domain(const char *domain);
-bool winbind_lookup_rids(TALLOC_CTX *mem_ctx,
-			 const DOM_SID *domain_sid,
-			 int num_rids, uint32 *rids,
-			 const char **domain_name,
-			 const char ***names, enum lsa_SidType **types);
-bool winbind_allocate_uid(uid_t *uid);
-bool winbind_allocate_gid(gid_t *gid);
-bool winbind_lookup_name(const char *dom_name, const char *name, DOM_SID *sid, 
-                         enum lsa_SidType *name_type);
-bool winbind_lookup_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 
-			const char **domain, const char **name,
-                        enum lsa_SidType *name_type);
-bool winbind_ping(void);
-bool winbind_sid_to_uid(uid_t *puid, const DOM_SID *sid);
-bool winbind_uid_to_sid(DOM_SID *sid, uid_t uid);
-bool winbind_sid_to_gid(gid_t *pgid, const DOM_SID *sid);
-bool winbind_gid_to_sid(DOM_SID *sid, gid_t gid);
-wbcErr wb_is_trusted_domain(const char *domain);
-bool winbind_lookup_rids(TALLOC_CTX *mem_ctx,
-			 const DOM_SID *domain_sid,
-			 int num_rids, uint32 *rids,
-			 const char **domain_name,
-			 const char ***names, enum lsa_SidType **types);
-bool winbind_allocate_uid(uid_t *uid);
-bool winbind_allocate_gid(gid_t *gid);
-
-/* The following definitions come from lib/wins_srv.c  */
-
-bool wins_srv_is_dead(struct in_addr wins_ip, struct in_addr src_ip);
-void wins_srv_alive(struct in_addr wins_ip, struct in_addr src_ip);
-void wins_srv_died(struct in_addr wins_ip, struct in_addr src_ip);
-unsigned wins_srv_count(void);
-char **wins_srv_tags(void);
-void wins_srv_tags_free(char **list);
-struct in_addr wins_srv_ip_tag(const char *tag, struct in_addr src_ip);
-unsigned wins_srv_count_tag(const char *tag);
-
-/* The following definitions come from lib/xfile.c  */
-
-int x_setvbuf(XFILE *f, char *buf, int mode, size_t size);
-XFILE *x_fopen(const char *fname, int flags, mode_t mode);
-XFILE *x_fdup(const XFILE *f);
-int x_fclose(XFILE *f);
-size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f);
-int x_fileno(const XFILE *f);
-int x_fflush(XFILE *f);
-void x_setbuffer(XFILE *f, char *buf, size_t size);
-void x_setbuf(XFILE *f, char *buf);
-void x_setlinebuf(XFILE *f);
-int x_feof(XFILE *f);
-int x_ferror(XFILE *f);
-int x_fgetc(XFILE *f);
-size_t x_fread(void *p, size_t size, size_t nmemb, XFILE *f);
-char *x_fgets(char *s, int size, XFILE *stream) ;
-off_t x_tseek(XFILE *f, off_t offset, int whence);
-
-/* The following definitions come from libads/ads_status.c  */
-
-ADS_STATUS ads_build_error(enum ads_error_type etype, 
-			   int rc, int minor_status);
-ADS_STATUS ads_build_nt_error(enum ads_error_type etype, 
-			   NTSTATUS nt_status);
-NTSTATUS ads_ntstatus(ADS_STATUS status);
-const char *ads_errstr(ADS_STATUS status);
-NTSTATUS gss_err_to_ntstatus(uint32 maj, uint32 min);
-
-/* The following definitions come from libads/ads_struct.c  */
-
-char *ads_build_path(const char *realm, const char *sep, const char *field, int reverse);
-char *ads_build_dn(const char *realm);
-char *ads_build_domain(const char *dn);
-ADS_STRUCT *ads_init(const char *realm, 
-		     const char *workgroup,
-		     const char *ldap_server);
-void ads_destroy(ADS_STRUCT **ads);
-
-/* The following definitions come from libads/ads_utils.c  */
-
-uint32 ads_acb2uf(uint32 acb);
-uint32 ads_uf2acb(uint32 uf);
-uint32 ads_uf2atype(uint32 uf);
-uint32 ads_gtype2atype(uint32 gtype);
-enum lsa_SidType ads_atype_map(uint32 atype);
-
-/* The following definitions come from libads/authdata.c  */
-
-struct PAC_LOGON_INFO *get_logon_info_from_pac(struct PAC_DATA *pac_data);
-NTSTATUS kerberos_return_pac(TALLOC_CTX *mem_ctx,
-			     const char *name,
-			     const char *pass,
-			     time_t time_offset,
-			     time_t *expire_time,
-			     time_t *renew_till_time,
-			     const char *cache_name,
-			     bool request_pac,
-			     bool add_netbios_addr,
-			     time_t renewable_time,
-			     struct PAC_DATA **pac_ret);
-NTSTATUS kerberos_return_info3_from_pac(TALLOC_CTX *mem_ctx,
-					const char *name,
-					const char *pass,
-					time_t time_offset,
-					time_t *expire_time,
-					time_t *renew_till_time,
-					const char *cache_name,
-					bool request_pac,
-					bool add_netbios_addr,
-					time_t renewable_time,
-					struct netr_SamInfo3 **info3);
-
-/* The following definitions come from libads/cldap.c  */
-
-bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
-			const char *server,
-			const char *realm,
-			uint32_t *nt_version,
-			union nbt_cldap_netlogon **reply);
-bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx,
-			  const char *server,
-			  const char *realm,
-			  struct nbt_cldap_netlogon_5 *reply5);
-bool pull_mailslot_cldap_reply(TALLOC_CTX *mem_ctx,
-			       const DATA_BLOB *blob,
-			       union nbt_cldap_netlogon *r,
-			       uint32_t *nt_version);
-
-/* The following definitions come from libads/disp_sec.c  */
-
-void ads_disp_sd(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, SEC_DESC *sd);
-
-/* The following definitions come from libads/dns.c  */
-
-NTSTATUS ads_dns_lookup_ns(TALLOC_CTX *ctx,
-				const char *dnsdomain,
-				struct dns_rr_ns **nslist,
-				int *numns);
-bool sitename_store(const char *realm, const char *sitename);
-char *sitename_fetch(const char *realm);
-bool stored_sitename_changed(const char *realm, const char *sitename);
-NTSTATUS ads_dns_query_dcs(TALLOC_CTX *ctx,
-			   const char *realm,
-			   const char *sitename,
-			   struct dns_rr_srv **dclist,
-			   int *numdcs );
-NTSTATUS ads_dns_query_gcs(TALLOC_CTX *ctx,
-			   const char *realm,
-			   const char *sitename,
-			   struct dns_rr_srv **dclist,
-			   int *numdcs );
-NTSTATUS ads_dns_query_kdcs(TALLOC_CTX *ctx,
-			    const char *dns_forest_name,
-			    const char *sitename,
-			    struct dns_rr_srv **dclist,
-			    int *numdcs );
-NTSTATUS ads_dns_query_pdc(TALLOC_CTX *ctx,
-			   const char *dns_domain_name,
-			   struct dns_rr_srv **dclist,
-			   int *numdcs );
-NTSTATUS ads_dns_query_dcs_guid(TALLOC_CTX *ctx,
-				const char *dns_forest_name,
-				const struct GUID *domain_guid,
-				struct dns_rr_srv **dclist,
-				int *numdcs );
-
-/* The following definitions come from libads/kerberos.c  */
-
-int kerberos_kinit_password_ext(const char *principal,
-				const char *password,
-				int time_offset,
-				time_t *expire_time,
-				time_t *renew_till_time,
-				const char *cache_name,
-				bool request_pac,
-				bool add_netbios_addr,
-				time_t renewable_time,
-				NTSTATUS *ntstatus);
-int ads_kinit_password(ADS_STRUCT *ads);
-int ads_kdestroy(const char *cc_name);
-char* kerberos_standard_des_salt( void );
-bool kerberos_secrets_store_des_salt( const char* salt );
-char* kerberos_secrets_fetch_des_salt( void );
-char *kerberos_get_default_realm_from_ccache( void );
-bool kerberos_secrets_store_salting_principal(const char *service,
-					      int enctype,
-					      const char *principal);
-int kerberos_kinit_password(const char *principal,
-			    const char *password,
-			    int time_offset,
-			    const char *cache_name);
-bool create_local_private_krb5_conf_for_domain(const char *realm,
-						const char *domain,
-						const char *sitename,
-						struct sockaddr_storage *pss);
-
-/* The following definitions come from libads/kerberos_keytab.c  */
-
-int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc);
-int ads_keytab_flush(ADS_STRUCT *ads);
-int ads_keytab_create_default(ADS_STRUCT *ads);
-int ads_keytab_list(const char *keytab_name);
-
-/* The following definitions come from libads/kerberos_verify.c  */
-
-NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx,
-			   const char *realm,
-			   time_t time_offset,
-			   const DATA_BLOB *ticket,
-			   char **principal,
-			   struct PAC_DATA **pac_data,
-			   DATA_BLOB *ap_rep,
-			   DATA_BLOB *session_key,
-			   bool use_replay_cache);
-
-/* The following definitions come from libads/krb5_errs.c  */
-
-
-/* The following definitions come from libads/krb5_setpw.c  */
-
-ADS_STATUS ads_krb5_set_password(const char *kdc_host, const char *princ, 
-				 const char *newpw, int time_offset);
-ADS_STATUS kerberos_set_password(const char *kpasswd_server, 
-				 const char *auth_principal, const char *auth_password,
-				 const char *target_principal, const char *new_password,
-				 int time_offset);
-ADS_STATUS ads_set_machine_password(ADS_STRUCT *ads,
-				    const char *machine_account,
-				    const char *password);
-
-/* The following definitions come from libads/ldap.c  */
-
-bool ads_sitename_match(ADS_STRUCT *ads);
-bool ads_closest_dc(ADS_STRUCT *ads);
-ADS_STATUS ads_connect(ADS_STRUCT *ads);
-ADS_STATUS ads_connect_user_creds(ADS_STRUCT *ads);
-ADS_STATUS ads_connect_gc(ADS_STRUCT *ads);
-void ads_disconnect(ADS_STRUCT *ads);
-ADS_STATUS ads_do_search_all_fn(ADS_STRUCT *ads, const char *bind_path,
-				int scope, const char *expr, const char **attrs,
-				bool (*fn)(ADS_STRUCT *, char *, void **, void *), 
-				void *data_area);
-void ads_memfree(ADS_STRUCT *ads, void *mem);
-char *ads_parent_dn(const char *dn);
-ADS_MODLIST ads_init_mods(TALLOC_CTX *ctx);
-ADS_STATUS ads_mod_str(TALLOC_CTX *ctx, ADS_MODLIST *mods, 
-		       const char *name, const char *val);
-ADS_STATUS ads_mod_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods,
-			   const char *name, const char **vals);
-ADS_STATUS ads_gen_mod(ADS_STRUCT *ads, const char *mod_dn, ADS_MODLIST mods);
-ADS_STATUS ads_gen_add(ADS_STRUCT *ads, const char *new_dn, ADS_MODLIST mods);
-ADS_STATUS ads_del_dn(ADS_STRUCT *ads, char *del_dn);
-char *ads_ou_string(ADS_STRUCT *ads, const char *org_unit);
-char *ads_default_ou_string(ADS_STRUCT *ads, const char *wknguid);
-ADS_STATUS ads_add_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods,
-				const char *name, const char **vals);
-uint32 ads_get_kvno(ADS_STRUCT *ads, const char *account_name);
-uint32_t ads_get_machine_kvno(ADS_STRUCT *ads, const char *machine_name);
-ADS_STATUS ads_clear_service_principal_names(ADS_STRUCT *ads, const char *machine_name);
-ADS_STATUS ads_add_service_principal_name(ADS_STRUCT *ads, const char *machine_name, 
-                                          const char *my_fqdn, const char *spn);
-ADS_STATUS ads_create_machine_acct(ADS_STRUCT *ads, const char *machine_name, 
-                                   const char *org_unit);
-ADS_STATUS ads_move_machine_acct(ADS_STRUCT *ads, const char *machine_name, 
-                                 const char *org_unit, bool *moved);
-int ads_count_replies(ADS_STRUCT *ads, void *res);
-ADS_STATUS ads_USN(ADS_STRUCT *ads, uint32 *usn);
-ADS_STATUS ads_current_time(ADS_STRUCT *ads);
-ADS_STATUS ads_domain_func_level(ADS_STRUCT *ads, uint32 *val);
-ADS_STATUS ads_domain_sid(ADS_STRUCT *ads, DOM_SID *sid);
-ADS_STATUS ads_site_dn(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, const char **site_name);
-ADS_STATUS ads_site_dn_for_machine(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, const char *computer_name, const char **site_dn);
-ADS_STATUS ads_upn_suffixes(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, char ***suffixes, size_t *num_suffixes);
-ADS_STATUS ads_get_joinable_ous(ADS_STRUCT *ads,
-				TALLOC_CTX *mem_ctx,
-				char ***ous,
-				size_t *num_ous);
-bool ads_get_sid_from_extended_dn(TALLOC_CTX *mem_ctx, 
-				  const char *extended_dn, 
-				  enum ads_extended_dn_flags flags, 
-				  DOM_SID *sid);
-char* ads_get_dnshostname( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name );
-char* ads_get_upn( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name );
-char* ads_get_samaccountname( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name );
-ADS_STATUS ads_join_realm(ADS_STRUCT *ads, const char *machine_name,
-			uint32 account_type, const char *org_unit);
-ADS_STATUS ads_leave_realm(ADS_STRUCT *ads, const char *hostname);
-ADS_STATUS ads_find_samaccount(ADS_STRUCT *ads,
-			       TALLOC_CTX *mem_ctx,
-			       const char *samaccountname,
-			       uint32 *uac_ret,
-			       const char **dn_ret);
-ADS_STATUS ads_config_path(ADS_STRUCT *ads, 
-			   TALLOC_CTX *mem_ctx, 
-			   char **config_path);
-const char *ads_get_extended_right_name_by_guid(ADS_STRUCT *ads, 
-						const char *config_path, 
-						TALLOC_CTX *mem_ctx, 
-						const struct GUID *rights_guid);
-ADS_STATUS ads_check_ou_dn(TALLOC_CTX *mem_ctx,
-			   ADS_STRUCT *ads,
-			   const char **account_ou);
-
-/* The following definitions come from libads/ldap_printer.c  */
-
-ADS_STATUS ads_mod_printer_entry(ADS_STRUCT *ads, char *prt_dn,
-				 TALLOC_CTX *ctx, const ADS_MODLIST *mods);
-ADS_STATUS ads_add_printer_entry(ADS_STRUCT *ads, char *prt_dn,
-					TALLOC_CTX *ctx, ADS_MODLIST *mods);
-WERROR get_remote_printer_publishing_data(struct rpc_pipe_client *cli, 
-					  TALLOC_CTX *mem_ctx,
-					  ADS_MODLIST *mods,
-					  const char *printer);
-bool get_local_printer_publishing_data(TALLOC_CTX *mem_ctx,
-				       ADS_MODLIST *mods,
-				       NT_PRINTER_DATA *data);
-
-/* The following definitions come from libads/ldap_schema.c  */
-
-ADS_STATUS ads_get_attrnames_by_oids(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx,
-				     const char *schema_path,
-				     const char **OIDs, size_t num_OIDs, 
-				     char ***OIDs_out, char ***names, size_t *count);
-const char *ads_get_attrname_by_guid(ADS_STRUCT *ads, 
-				     const char *schema_path, 
-				     TALLOC_CTX *mem_ctx, 
-				     const struct GUID *schema_guid);
-const char *ads_get_attrname_by_oid(ADS_STRUCT *ads, const char *schema_path, TALLOC_CTX *mem_ctx, const char * OID);
-ADS_STATUS ads_schema_path(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, char **schema_path);
-ADS_STATUS ads_check_posix_schema_mapping(TALLOC_CTX *mem_ctx,
-					  ADS_STRUCT *ads,
-					  enum wb_posix_mapping map_type,
-					  struct posix_schema **s ) ;
-
-/* The following definitions come from libads/ldap_user.c  */
-
-ADS_STATUS ads_add_user_acct(ADS_STRUCT *ads, const char *user, 
-			     const char *container, const char *fullname);
-ADS_STATUS ads_add_group_acct(ADS_STRUCT *ads, const char *group, 
-			      const char *container, const char *comment);
-
-/* The following definitions come from libads/ldap_utils.c  */
-
-ADS_STATUS ads_ranged_search(ADS_STRUCT *ads, 
-			     TALLOC_CTX *mem_ctx,
-			     int scope,
-			     const char *base,
-			     const char *filter,
-			     void *args,
-			     const char *range_attr,
-			     char ***strings,
-			     size_t *num_strings);
-ADS_STATUS ads_ranged_search_internal(ADS_STRUCT *ads, 
-				      TALLOC_CTX *mem_ctx,
-				      int scope,
-				      const char *base,
-				      const char *filter,
-				      const char **attrs,
-				      void *args,
-				      const char *range_attr,
-				      char ***strings,
-				      size_t *num_strings,
-				      uint32 *first_usn,
-				      int *num_retries,
-				      bool *more_values);
-
-/* The following definitions come from libads/ndr.c  */
-
-void ndr_print_ads_auth_flags(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_ads_struct(struct ndr_print *ndr, const char *name, const struct ads_struct *r);
-
-/* The following definitions come from libads/sasl.c  */
-
-ADS_STATUS ads_sasl_bind(ADS_STRUCT *ads);
-
-/* The following definitions come from libads/sasl_wrapping.c  */
-
-ADS_STATUS ads_setup_sasl_wrapping(ADS_STRUCT *ads,
-				   const struct ads_saslwrap_ops *ops,
-				   void *private_data);
-ADS_STATUS ads_setup_sasl_wrapping(ADS_STRUCT *ads,
-				   const struct ads_saslwrap_ops *ops,
-				   void *private_data);
-
-/* The following definitions come from libads/util.c  */
-
-ADS_STATUS ads_change_trust_account_password(ADS_STRUCT *ads, char *host_principal);
-ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads,
-				       char **returned_principal);
-
-/* The following definitions come from libcli/nbt/nbtname.c  */
-
-_PUBLIC_ void ndr_print_nbt_string(struct ndr_print *ndr, const char *name, const char *s);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_string(struct ndr_pull *ndr, int ndr_flags, const char **s);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_string(struct ndr_push *ndr, int ndr_flags, const char *s);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_name(struct ndr_pull *ndr, int ndr_flags, struct nbt_name *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_name(struct ndr_push *ndr, int ndr_flags, const struct nbt_name *r);
-_PUBLIC_ NTSTATUS nbt_name_dup(TALLOC_CTX *mem_ctx, struct nbt_name *name, struct nbt_name *newname);
-_PUBLIC_ NTSTATUS nbt_name_to_blob(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct nbt_name *name);
-_PUBLIC_ NTSTATUS nbt_name_from_blob(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, struct nbt_name *name);
-_PUBLIC_ void nbt_choose_called_name(TALLOC_CTX *mem_ctx,
-			    struct nbt_name *n, const char *name, int type);
-_PUBLIC_ char *nbt_name_string(TALLOC_CTX *mem_ctx, const struct nbt_name *name);
-_PUBLIC_ enum ndr_err_code ndr_pull_wrepl_nbt_name(struct ndr_pull *ndr, int ndr_flags, const struct nbt_name **_r);
-_PUBLIC_ enum ndr_err_code ndr_push_wrepl_nbt_name(struct ndr_push *ndr, int ndr_flags, const struct nbt_name *r);
-_PUBLIC_ void ndr_print_wrepl_nbt_name(struct ndr_print *ndr, const char *name, const struct nbt_name *r);
-
-/* The following definitions come from libgpo/gpext/gpext.c  */
-
-struct gp_extension *get_gp_extension_list(void);
-NTSTATUS unregister_gp_extension(const char *name);
-NTSTATUS register_gp_extension(TALLOC_CTX *gpext_ctx,
-			       int version,
-			       const char *name,
-			       const char *guid,
-			       struct gp_extension_methods *methods);
-NTSTATUS gp_ext_info_add_entry(TALLOC_CTX *mem_ctx,
-			       const char *module,
-			       const char *ext_guid,
-			       struct gp_extension_reg_table *table,
-			       struct gp_extension_reg_info *info);
-NTSTATUS shutdown_gp_extensions(void);
-NTSTATUS init_gp_extensions(TALLOC_CTX *mem_ctx);
-NTSTATUS free_gp_extensions(void);
-void debug_gpext_header(int lvl,
-			const char *name,
-			uint32_t flags,
-			struct GROUP_POLICY_OBJECT *gpo,
-			const char *extension_guid,
-			const char *snapin_guid);
-NTSTATUS process_gpo_list_with_extension(ADS_STRUCT *ads,
-			   TALLOC_CTX *mem_ctx,
-			   uint32_t flags,
-			   const struct nt_user_token *token,
-			   struct GROUP_POLICY_OBJECT *gpo_list,
-			   const char *extension_guid,
-			   const char *snapin_guid);
-NTSTATUS gpext_process_extension(ADS_STRUCT *ads,
-				 TALLOC_CTX *mem_ctx,
-				 uint32_t flags,
-				 const struct nt_user_token *token,
-				 struct registry_key *root_key,
-				 struct GROUP_POLICY_OBJECT *gpo,
-				 const char *extension_guid,
-				 const char *snapin_guid);
-
-/* The following definitions come from libgpo/gpo_fetch.c  */
-
-NTSTATUS gpo_explode_filesyspath(TALLOC_CTX *mem_ctx,
-				 const char *file_sys_path,
-				 char **server,
-				 char **service,
-				 char **nt_path,
-				 char **unix_path);
-NTSTATUS gpo_fetch_files(TALLOC_CTX *mem_ctx,
-			 struct cli_state *cli,
-			 struct GROUP_POLICY_OBJECT *gpo);
-NTSTATUS gpo_get_sysvol_gpt_version(TALLOC_CTX *mem_ctx,
-				    const char *unix_path,
-				    uint32_t *sysvol_version,
-				    char **display_name);
-
-/* The following definitions come from libgpo/gpo_filesync.c  */
-
-NTSTATUS gpo_copy_file(TALLOC_CTX *mem_ctx,
-		       struct cli_state *cli,
-		       const char *nt_path,
-		       const char *unix_path);
-NTSTATUS gpo_sync_directories(TALLOC_CTX *mem_ctx,
-			      struct cli_state *cli,
-			      const char *nt_path,
-			      const char *local_path);
-
-/* The following definitions come from libgpo/gpo_ini.c  */
-
-NTSTATUS parse_gpt_ini(TALLOC_CTX *mem_ctx,
-		       const char *filename,
-		       uint32_t *version,
-		       char **display_name);
-
-/* The following definitions come from libgpo/gpo_ldap.c  */
-
-bool ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
-		      const char *extension_raw,
-		      struct GP_EXT **gp_ext);
-ADS_STATUS ads_get_gpo_link(ADS_STRUCT *ads,
-			    TALLOC_CTX *mem_ctx,
-			    const char *link_dn,
-			    struct GP_LINK *gp_link_struct);
-ADS_STATUS ads_add_gpo_link(ADS_STRUCT *ads,
-			    TALLOC_CTX *mem_ctx,
-			    const char *link_dn,
-			    const char *gpo_dn,
-			    uint32_t gpo_opt);
-ADS_STATUS ads_delete_gpo_link(ADS_STRUCT *ads,
-			       TALLOC_CTX *mem_ctx,
-			       const char *link_dn,
-			       const char *gpo_dn);
-ADS_STATUS ads_get_gpo(ADS_STRUCT *ads,
-		       TALLOC_CTX *mem_ctx,
-		       const char *gpo_dn,
-		       const char *display_name,
-		       const char *guid_name,
-		       struct GROUP_POLICY_OBJECT *gpo);
-ADS_STATUS ads_get_sid_token(ADS_STRUCT *ads,
-			     TALLOC_CTX *mem_ctx,
-			     const char *dn,
-			     struct nt_user_token **token);
-ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
-			    TALLOC_CTX *mem_ctx,
-			    const char *dn,
-			    uint32_t flags,
-			    const struct nt_user_token *token,
-			    struct GROUP_POLICY_OBJECT **gpo_list);
-
-/* The following definitions come from libgpo/gpo_reg.c  */
-
-struct nt_user_token *registry_create_system_token(TALLOC_CTX *mem_ctx);
-WERROR gp_init_reg_ctx(TALLOC_CTX *mem_ctx,
-		       const char *initial_path,
-		       uint32_t desired_access,
-		       const struct nt_user_token *token,
-		       struct gp_registry_context **reg_ctx);
-void gp_free_reg_ctx(struct gp_registry_context *reg_ctx);
-WERROR gp_store_reg_subkey(TALLOC_CTX *mem_ctx,
-			   const char *subkeyname,
-			   struct registry_key *curr_key,
-			   struct registry_key **new_key);
-WERROR gp_read_reg_subkey(TALLOC_CTX *mem_ctx,
-			  struct gp_registry_context *reg_ctx,
-			  const char *subkeyname,
-			  struct registry_key **key);
-WERROR gp_store_reg_val_sz(TALLOC_CTX *mem_ctx,
-			   struct registry_key *key,
-			   const char *val_name,
-			   const char *val);
-WERROR gp_read_reg_val_sz(TALLOC_CTX *mem_ctx,
-			  struct registry_key *key,
-			  const char *val_name,
-			  const char **val);
-WERROR gp_reg_state_store(TALLOC_CTX *mem_ctx,
-			  uint32_t flags,
-			  const char *dn,
-			  const struct nt_user_token *token,
-			  struct GROUP_POLICY_OBJECT *gpo_list);
-WERROR gp_reg_state_read(TALLOC_CTX *mem_ctx,
-			 uint32_t flags,
-			 const DOM_SID *sid,
-			 struct GROUP_POLICY_OBJECT **gpo_list);
-WERROR gp_secure_key(TALLOC_CTX *mem_ctx,
-		     uint32_t flags,
-		     struct registry_key *key,
-		     const DOM_SID *sid);
-void dump_reg_val(int lvl, const char *direction,
-		  const char *key, const char *subkey,
-		  struct registry_value *val);
-void dump_reg_entry(uint32_t flags,
-		    const char *dir,
-		    struct gp_registry_entry *entry);
-void dump_reg_entries(uint32_t flags,
-		      const char *dir,
-		      struct gp_registry_entry *entries,
-		      size_t num_entries);
-bool add_gp_registry_entry_to_array(TALLOC_CTX *mem_ctx,
-				    struct gp_registry_entry *entry,
-				    struct gp_registry_entry **entries,
-				    size_t *num);
-WERROR reg_apply_registry_entry(TALLOC_CTX *mem_ctx,
-				struct registry_key *root_key,
-				struct gp_registry_context *reg_ctx,
-				struct gp_registry_entry *entry,
-				const struct nt_user_token *token,
-				uint32_t flags);
-
-/* The following definitions come from libgpo/gpo_sec.c  */
-
-NTSTATUS gpo_apply_security_filtering(const struct GROUP_POLICY_OBJECT *gpo,
-				      const struct nt_user_token *token);
-
-/* The following definitions come from libgpo/gpo_util.c  */
-
-const char *cse_gpo_guid_string_to_name(const char *guid);
-const char *cse_gpo_name_to_guid_string(const char *name);
-const char *cse_snapin_gpo_guid_string_to_name(const char *guid);
-void dump_gp_ext(struct GP_EXT *gp_ext, int debuglevel);
-void dump_gpo(ADS_STRUCT *ads,
-	      TALLOC_CTX *mem_ctx,
-	      struct GROUP_POLICY_OBJECT *gpo,
-	      int debuglevel);
-void dump_gpo_list(ADS_STRUCT *ads,
-		   TALLOC_CTX *mem_ctx,
-		   struct GROUP_POLICY_OBJECT *gpo_list,
-		   int debuglevel);
-void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link);
-ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
-			     TALLOC_CTX *mem_ctx,
-			     const struct nt_user_token *token,
-			     struct registry_key *root_key,
-			     struct GROUP_POLICY_OBJECT *gpo,
-			     const char *extension_guid_filter,
-			     uint32_t flags);
-ADS_STATUS gpo_process_gpo_list(ADS_STRUCT *ads,
-				TALLOC_CTX *mem_ctx,
-				const struct nt_user_token *token,
-				struct GROUP_POLICY_OBJECT *gpo_list,
-				const char *extensions_guid_filter,
-				uint32_t flags);
-NTSTATUS check_refresh_gpo(ADS_STRUCT *ads,
-			   TALLOC_CTX *mem_ctx,
-			   uint32_t flags,
-			   struct GROUP_POLICY_OBJECT *gpo,
-			   struct cli_state **cli_out);
-NTSTATUS check_refresh_gpo_list(ADS_STRUCT *ads,
-				TALLOC_CTX *mem_ctx,
-				uint32_t flags,
-				struct GROUP_POLICY_OBJECT *gpo_list);
-NTSTATUS gpo_get_unix_path(TALLOC_CTX *mem_ctx,
-			   struct GROUP_POLICY_OBJECT *gpo,
-			   char **unix_path);
-char *gpo_flag_str(uint32_t flags);
-NTSTATUS gp_find_file(TALLOC_CTX *mem_ctx,
-		      uint32_t flags,
-		      const char *filename,
-		      const char *suffix,
-		      const char **filename_out);
-ADS_STATUS gp_get_machine_token(ADS_STRUCT *ads,
-				TALLOC_CTX *mem_ctx,
-				const char *dn,
-				struct nt_user_token **token);
-
-/* The following definitions come from librpc/gen_ndr/ndr_dfs.c  */
-
-_PUBLIC_ void ndr_print_dfs_ManagerVersion(struct ndr_print *ndr, const char *name, enum dfs_ManagerVersion r);
-_PUBLIC_ void ndr_print_dfs_Info0(struct ndr_print *ndr, const char *name, const struct dfs_Info0 *r);
-_PUBLIC_ void ndr_print_dfs_Info1(struct ndr_print *ndr, const char *name, const struct dfs_Info1 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_dfs_VolumeState(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_dfs_VolumeState(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_dfs_VolumeState(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_dfs_Info2(struct ndr_print *ndr, const char *name, const struct dfs_Info2 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_dfs_StorageState(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_dfs_StorageState(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_dfs_StorageState(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_dfs_StorageInfo(struct ndr_print *ndr, const char *name, const struct dfs_StorageInfo *r);
-_PUBLIC_ void ndr_print_dfs_Info3(struct ndr_print *ndr, const char *name, const struct dfs_Info3 *r);
-_PUBLIC_ void ndr_print_dfs_Info4(struct ndr_print *ndr, const char *name, const struct dfs_Info4 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_dfs_PropertyFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_dfs_PropertyFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_dfs_PropertyFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_dfs_Info5(struct ndr_print *ndr, const char *name, const struct dfs_Info5 *r);
-_PUBLIC_ void ndr_print_dfs_Target_PriorityClass(struct ndr_print *ndr, const char *name, enum dfs_Target_PriorityClass r);
-_PUBLIC_ void ndr_print_dfs_Target_Priority(struct ndr_print *ndr, const char *name, const struct dfs_Target_Priority *r);
-_PUBLIC_ void ndr_print_dfs_StorageInfo2(struct ndr_print *ndr, const char *name, const struct dfs_StorageInfo2 *r);
-_PUBLIC_ void ndr_print_dfs_Info6(struct ndr_print *ndr, const char *name, const struct dfs_Info6 *r);
-_PUBLIC_ void ndr_print_dfs_Info7(struct ndr_print *ndr, const char *name, const struct dfs_Info7 *r);
-_PUBLIC_ void ndr_print_dfs_Info100(struct ndr_print *ndr, const char *name, const struct dfs_Info100 *r);
-_PUBLIC_ void ndr_print_dfs_Info101(struct ndr_print *ndr, const char *name, const struct dfs_Info101 *r);
-_PUBLIC_ void ndr_print_dfs_Info102(struct ndr_print *ndr, const char *name, const struct dfs_Info102 *r);
-_PUBLIC_ void ndr_print_dfs_Info103(struct ndr_print *ndr, const char *name, const struct dfs_Info103 *r);
-_PUBLIC_ void ndr_print_dfs_Info104(struct ndr_print *ndr, const char *name, const struct dfs_Info104 *r);
-_PUBLIC_ void ndr_print_dfs_Info105(struct ndr_print *ndr, const char *name, const struct dfs_Info105 *r);
-_PUBLIC_ void ndr_print_dfs_Info106(struct ndr_print *ndr, const char *name, const struct dfs_Info106 *r);
-_PUBLIC_ void ndr_print_dfs_Info200(struct ndr_print *ndr, const char *name, const struct dfs_Info200 *r);
-_PUBLIC_ void ndr_print_dfs_VolumeFlavor(struct ndr_print *ndr, const char *name, enum dfs_VolumeFlavor r);
-_PUBLIC_ void ndr_print_dfs_Info300(struct ndr_print *ndr, const char *name, const struct dfs_Info300 *r);
-_PUBLIC_ void ndr_print_dfs_Info(struct ndr_print *ndr, const char *name, const union dfs_Info *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray1(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray1 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray2(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray2 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray3(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray3 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray4(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray4 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray5(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray5 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray6(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray6 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray200(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray200 *r);
-_PUBLIC_ void ndr_print_dfs_EnumArray300(struct ndr_print *ndr, const char *name, const struct dfs_EnumArray300 *r);
-_PUBLIC_ void ndr_print_dfs_EnumInfo(struct ndr_print *ndr, const char *name, const union dfs_EnumInfo *r);
-_PUBLIC_ void ndr_print_dfs_EnumStruct(struct ndr_print *ndr, const char *name, const struct dfs_EnumStruct *r);
-_PUBLIC_ void ndr_print_dfs_UnknownStruct(struct ndr_print *ndr, const char *name, const struct dfs_UnknownStruct *r);
-_PUBLIC_ enum ndr_err_code ndr_push_dfs_GetManagerVersion(struct ndr_push *ndr, int flags, const struct dfs_GetManagerVersion *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_dfs_GetManagerVersion(struct ndr_pull *ndr, int flags, struct dfs_GetManagerVersion *r);
-_PUBLIC_ void ndr_print_dfs_GetManagerVersion(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetManagerVersion *r);
-_PUBLIC_ void ndr_print_dfs_Add(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Add *r);
-_PUBLIC_ void ndr_print_dfs_Remove(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Remove *r);
-_PUBLIC_ void ndr_print_dfs_SetInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetInfo *r);
-_PUBLIC_ void ndr_print_dfs_GetInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetInfo *r);
-_PUBLIC_ void ndr_print_dfs_Enum(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Enum *r);
-_PUBLIC_ void ndr_print_dfs_Rename(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Rename *r);
-_PUBLIC_ void ndr_print_dfs_Move(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Move *r);
-_PUBLIC_ void ndr_print_dfs_ManagerGetConfigInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerGetConfigInfo *r);
-_PUBLIC_ void ndr_print_dfs_ManagerSendSiteInfo(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerSendSiteInfo *r);
-_PUBLIC_ void ndr_print_dfs_AddFtRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddFtRoot *r);
-_PUBLIC_ void ndr_print_dfs_RemoveFtRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_RemoveFtRoot *r);
-_PUBLIC_ void ndr_print_dfs_AddStdRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddStdRoot *r);
-_PUBLIC_ void ndr_print_dfs_RemoveStdRoot(struct ndr_print *ndr, const char *name, int flags, const struct dfs_RemoveStdRoot *r);
-_PUBLIC_ void ndr_print_dfs_ManagerInitialize(struct ndr_print *ndr, const char *name, int flags, const struct dfs_ManagerInitialize *r);
-_PUBLIC_ void ndr_print_dfs_AddStdRootForced(struct ndr_print *ndr, const char *name, int flags, const struct dfs_AddStdRootForced *r);
-_PUBLIC_ void ndr_print_dfs_GetDcAddress(struct ndr_print *ndr, const char *name, int flags, const struct dfs_GetDcAddress *r);
-_PUBLIC_ void ndr_print_dfs_SetDcAddress(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetDcAddress *r);
-_PUBLIC_ void ndr_print_dfs_FlushFtTable(struct ndr_print *ndr, const char *name, int flags, const struct dfs_FlushFtTable *r);
-_PUBLIC_ void ndr_print_dfs_Add2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Add2 *r);
-_PUBLIC_ void ndr_print_dfs_Remove2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_Remove2 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_dfs_EnumEx(struct ndr_push *ndr, int flags, const struct dfs_EnumEx *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_dfs_EnumEx(struct ndr_pull *ndr, int flags, struct dfs_EnumEx *r);
-_PUBLIC_ void ndr_print_dfs_EnumEx(struct ndr_print *ndr, const char *name, int flags, const struct dfs_EnumEx *r);
-_PUBLIC_ void ndr_print_dfs_SetInfo2(struct ndr_print *ndr, const char *name, int flags, const struct dfs_SetInfo2 *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_dssetup.c  */
-
-_PUBLIC_ void ndr_print_dssetup_DsRole(struct ndr_print *ndr, const char *name, enum dssetup_DsRole r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_dssetup_DsRolePrimaryDomInfoBasic(struct ndr_print *ndr, const char *name, const struct dssetup_DsRolePrimaryDomInfoBasic *r);
-_PUBLIC_ void ndr_print_dssetup_DsUpgrade(struct ndr_print *ndr, const char *name, enum dssetup_DsUpgrade r);
-_PUBLIC_ void ndr_print_dssetup_DsPrevious(struct ndr_print *ndr, const char *name, enum dssetup_DsPrevious r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleUpgradeStatus(struct ndr_print *ndr, const char *name, const struct dssetup_DsRoleUpgradeStatus *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleOp(struct ndr_print *ndr, const char *name, enum dssetup_DsRoleOp r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleOpStatus(struct ndr_print *ndr, const char *name, const struct dssetup_DsRoleOpStatus *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleInfoLevel(struct ndr_print *ndr, const char *name, enum dssetup_DsRoleInfoLevel r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleInfo(struct ndr_print *ndr, const char *name, const union dssetup_DsRoleInfo *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleGetPrimaryDomainInformation(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleGetPrimaryDomainInformation *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleDnsNameToFlatName(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleDnsNameToFlatName *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleDcAsDc(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleDcAsDc *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleDcAsReplica(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleDcAsReplica *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleDemoteDc(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleDemoteDc *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleGetDcOperationProgress(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleGetDcOperationProgress *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleGetDcOperationResults(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleGetDcOperationResults *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleCancel(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleCancel *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleServerSaveStateForUpgrade(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleServerSaveStateForUpgrade *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleUpgradeDownlevelServer(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleUpgradeDownlevelServer *r);
-_PUBLIC_ void ndr_print_dssetup_DsRoleAbortDownlevelServerUpgrade(struct ndr_print *ndr, const char *name, int flags, const struct dssetup_DsRoleAbortDownlevelServerUpgrade *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_echo.c  */
-
-_PUBLIC_ void ndr_print_echo_info1(struct ndr_print *ndr, const char *name, const struct echo_info1 *r);
-_PUBLIC_ void ndr_print_echo_info2(struct ndr_print *ndr, const char *name, const struct echo_info2 *r);
-_PUBLIC_ void ndr_print_echo_info3(struct ndr_print *ndr, const char *name, const struct echo_info3 *r);
-_PUBLIC_ void ndr_print_STRUCT_echo_info4(struct ndr_print *ndr, const char *name, const struct echo_info4 *r);
-_PUBLIC_ void ndr_print_echo_info5(struct ndr_print *ndr, const char *name, const struct echo_info5 *r);
-_PUBLIC_ void ndr_print_echo_info6(struct ndr_print *ndr, const char *name, const struct echo_info6 *r);
-_PUBLIC_ void ndr_print_echo_info7(struct ndr_print *ndr, const char *name, const struct echo_info7 *r);
-_PUBLIC_ void ndr_print_echo_Info(struct ndr_print *ndr, const char *name, const union echo_Info *r);
-_PUBLIC_ void ndr_print_echo_Enum1(struct ndr_print *ndr, const char *name, enum echo_Enum1 r);
-_PUBLIC_ void ndr_print_echo_Enum1_32(struct ndr_print *ndr, const char *name, enum echo_Enum1_32 r);
-_PUBLIC_ void ndr_print_echo_Enum2(struct ndr_print *ndr, const char *name, const struct echo_Enum2 *r);
-_PUBLIC_ void ndr_print_echo_Enum3(struct ndr_print *ndr, const char *name, const union echo_Enum3 *r);
-_PUBLIC_ void ndr_print_echo_Surrounding(struct ndr_print *ndr, const char *name, const struct echo_Surrounding *r);
-_PUBLIC_ void ndr_print_echo_AddOne(struct ndr_print *ndr, const char *name, int flags, const struct echo_AddOne *r);
-_PUBLIC_ void ndr_print_echo_EchoData(struct ndr_print *ndr, const char *name, int flags, const struct echo_EchoData *r);
-_PUBLIC_ void ndr_print_echo_SinkData(struct ndr_print *ndr, const char *name, int flags, const struct echo_SinkData *r);
-_PUBLIC_ void ndr_print_echo_SourceData(struct ndr_print *ndr, const char *name, int flags, const struct echo_SourceData *r);
-_PUBLIC_ void ndr_print_echo_TestCall(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestCall *r);
-_PUBLIC_ void ndr_print_echo_TestCall2(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestCall2 *r);
-_PUBLIC_ void ndr_print_echo_TestSleep(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestSleep *r);
-_PUBLIC_ void ndr_print_echo_TestEnum(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestEnum *r);
-_PUBLIC_ void ndr_print_echo_TestSurrounding(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestSurrounding *r);
-_PUBLIC_ void ndr_print_echo_TestDoublePointer(struct ndr_print *ndr, const char *name, int flags, const struct echo_TestDoublePointer *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_eventlog.c  */
-
-_PUBLIC_ void ndr_print_eventlog_OpenUnknown0(struct ndr_print *ndr, const char *name, const struct eventlog_OpenUnknown0 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_eventlog_Record(struct ndr_push *ndr, int ndr_flags, const struct eventlog_Record *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_eventlog_Record(struct ndr_pull *ndr, int ndr_flags, struct eventlog_Record *r);
-_PUBLIC_ void ndr_print_eventlog_Record(struct ndr_print *ndr, const char *name, const struct eventlog_Record *r);
-_PUBLIC_ void ndr_print_eventlog_ClearEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ClearEventLogW *r);
-_PUBLIC_ void ndr_print_eventlog_BackupEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_BackupEventLogW *r);
-_PUBLIC_ void ndr_print_eventlog_CloseEventLog(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_CloseEventLog *r);
-_PUBLIC_ void ndr_print_eventlog_DeregisterEventSource(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_DeregisterEventSource *r);
-_PUBLIC_ void ndr_print_eventlog_GetNumRecords(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetNumRecords *r);
-_PUBLIC_ void ndr_print_eventlog_GetOldestRecord(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetOldestRecord *r);
-_PUBLIC_ void ndr_print_eventlog_ChangeNotify(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ChangeNotify *r);
-_PUBLIC_ void ndr_print_eventlog_OpenEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenEventLogW *r);
-_PUBLIC_ void ndr_print_eventlog_RegisterEventSourceW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterEventSourceW *r);
-_PUBLIC_ void ndr_print_eventlog_OpenBackupEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenBackupEventLogW *r);
-_PUBLIC_ void ndr_print_eventlog_ReadEventLogW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReadEventLogW *r);
-_PUBLIC_ void ndr_print_eventlog_ReportEventW(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReportEventW *r);
-_PUBLIC_ void ndr_print_eventlog_ClearEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ClearEventLogA *r);
-_PUBLIC_ void ndr_print_eventlog_BackupEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_BackupEventLogA *r);
-_PUBLIC_ void ndr_print_eventlog_OpenEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenEventLogA *r);
-_PUBLIC_ void ndr_print_eventlog_RegisterEventSourceA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterEventSourceA *r);
-_PUBLIC_ void ndr_print_eventlog_OpenBackupEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_OpenBackupEventLogA *r);
-_PUBLIC_ void ndr_print_eventlog_ReadEventLogA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReadEventLogA *r);
-_PUBLIC_ void ndr_print_eventlog_ReportEventA(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_ReportEventA *r);
-_PUBLIC_ void ndr_print_eventlog_RegisterClusterSvc(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_RegisterClusterSvc *r);
-_PUBLIC_ void ndr_print_eventlog_DeregisterClusterSvc(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_DeregisterClusterSvc *r);
-_PUBLIC_ void ndr_print_eventlog_WriteClusterEvents(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_WriteClusterEvents *r);
-_PUBLIC_ void ndr_print_eventlog_GetLogIntormation(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_GetLogIntormation *r);
-_PUBLIC_ void ndr_print_eventlog_FlushEventLog(struct ndr_print *ndr, const char *name, int flags, const struct eventlog_FlushEventLog *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_initshutdown.c  */
-
-_PUBLIC_ void ndr_print_initshutdown_String_sub(struct ndr_print *ndr, const char *name, const struct initshutdown_String_sub *r);
-_PUBLIC_ enum ndr_err_code ndr_push_initshutdown_String(struct ndr_push *ndr, int ndr_flags, const struct initshutdown_String *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_initshutdown_String(struct ndr_pull *ndr, int ndr_flags, struct initshutdown_String *r);
-_PUBLIC_ void ndr_print_initshutdown_String(struct ndr_print *ndr, const char *name, const struct initshutdown_String *r);
-_PUBLIC_ void ndr_print_initshutdown_Init(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_Init *r);
-_PUBLIC_ void ndr_print_initshutdown_Abort(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_Abort *r);
-_PUBLIC_ void ndr_print_initshutdown_InitEx(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_InitEx *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_krb5pac.c  */
-
-_PUBLIC_ void ndr_print_PAC_LOGON_NAME(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_NAME *r);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_SIGNATURE_DATA(struct ndr_push *ndr, int ndr_flags, const struct PAC_SIGNATURE_DATA *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_SIGNATURE_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_SIGNATURE_DATA *r);
-_PUBLIC_ void ndr_print_PAC_SIGNATURE_DATA(struct ndr_print *ndr, const char *name, const struct PAC_SIGNATURE_DATA *r);
-_PUBLIC_ void ndr_print_PAC_LOGON_INFO(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_INFO *r);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_LOGON_INFO_CTR(struct ndr_push *ndr, int ndr_flags, const struct PAC_LOGON_INFO_CTR *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_LOGON_INFO_CTR(struct ndr_pull *ndr, int ndr_flags, struct PAC_LOGON_INFO_CTR *r);
-_PUBLIC_ void ndr_print_PAC_LOGON_INFO_CTR(struct ndr_print *ndr, const char *name, const struct PAC_LOGON_INFO_CTR *r);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_TYPE(struct ndr_push *ndr, int ndr_flags, enum PAC_TYPE r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_TYPE(struct ndr_pull *ndr, int ndr_flags, enum PAC_TYPE *r);
-_PUBLIC_ void ndr_print_PAC_TYPE(struct ndr_print *ndr, const char *name, enum PAC_TYPE r);
-_PUBLIC_ void ndr_print_DATA_BLOB_REM(struct ndr_print *ndr, const char *name, const struct DATA_BLOB_REM *r);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_INFO(struct ndr_push *ndr, int ndr_flags, const union PAC_INFO *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_INFO(struct ndr_pull *ndr, int ndr_flags, union PAC_INFO *r);
-_PUBLIC_ void ndr_print_PAC_INFO(struct ndr_print *ndr, const char *name, const union PAC_INFO *r);
-_PUBLIC_ size_t ndr_size_PAC_INFO(const union PAC_INFO *r, uint32_t level, int flags);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_DATA(struct ndr_push *ndr, int ndr_flags, const struct PAC_DATA *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_DATA *r);
-_PUBLIC_ void ndr_print_PAC_DATA(struct ndr_print *ndr, const char *name, const struct PAC_DATA *r);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_BUFFER_RAW(struct ndr_push *ndr, int ndr_flags, const struct PAC_BUFFER_RAW *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_BUFFER_RAW(struct ndr_pull *ndr, int ndr_flags, struct PAC_BUFFER_RAW *r);
-_PUBLIC_ void ndr_print_PAC_BUFFER_RAW(struct ndr_print *ndr, const char *name, const struct PAC_BUFFER_RAW *r);
-_PUBLIC_ enum ndr_err_code ndr_push_PAC_DATA_RAW(struct ndr_push *ndr, int ndr_flags, const struct PAC_DATA_RAW *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_PAC_DATA_RAW(struct ndr_pull *ndr, int ndr_flags, struct PAC_DATA_RAW *r);
-_PUBLIC_ void ndr_print_PAC_DATA_RAW(struct ndr_print *ndr, const char *name, const struct PAC_DATA_RAW *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netsamlogoncache_entry(struct ndr_push *ndr, int ndr_flags, const struct netsamlogoncache_entry *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netsamlogoncache_entry(struct ndr_pull *ndr, int ndr_flags, struct netsamlogoncache_entry *r);
-_PUBLIC_ void ndr_print_netsamlogoncache_entry(struct ndr_print *ndr, const char *name, const struct netsamlogoncache_entry *r);
-_PUBLIC_ void ndr_print_decode_pac(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac *r);
-_PUBLIC_ void ndr_print_decode_pac_raw(struct ndr_print *ndr, const char *name, int flags, const struct decode_pac_raw *r);
-_PUBLIC_ void ndr_print_decode_login_info(struct ndr_print *ndr, const char *name, int flags, const struct decode_login_info *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_lsa.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_String(struct ndr_push *ndr, int ndr_flags, const struct lsa_String *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_String(struct ndr_pull *ndr, int ndr_flags, struct lsa_String *r);
-_PUBLIC_ void ndr_print_lsa_String(struct ndr_print *ndr, const char *name, const struct lsa_String *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_StringLarge(struct ndr_push *ndr, int ndr_flags, const struct lsa_StringLarge *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_StringLarge(struct ndr_pull *ndr, int ndr_flags, struct lsa_StringLarge *r);
-_PUBLIC_ void ndr_print_lsa_StringLarge(struct ndr_print *ndr, const char *name, const struct lsa_StringLarge *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_Strings(struct ndr_push *ndr, int ndr_flags, const struct lsa_Strings *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_Strings(struct ndr_pull *ndr, int ndr_flags, struct lsa_Strings *r);
-_PUBLIC_ void ndr_print_lsa_Strings(struct ndr_print *ndr, const char *name, const struct lsa_Strings *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_AsciiString(struct ndr_push *ndr, int ndr_flags, const struct lsa_AsciiString *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_AsciiString(struct ndr_pull *ndr, int ndr_flags, struct lsa_AsciiString *r);
-_PUBLIC_ void ndr_print_lsa_AsciiString(struct ndr_print *ndr, const char *name, const struct lsa_AsciiString *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_AsciiStringLarge(struct ndr_push *ndr, int ndr_flags, const struct lsa_AsciiStringLarge *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_AsciiStringLarge(struct ndr_pull *ndr, int ndr_flags, struct lsa_AsciiStringLarge *r);
-_PUBLIC_ void ndr_print_lsa_AsciiStringLarge(struct ndr_print *ndr, const char *name, const struct lsa_AsciiStringLarge *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_BinaryString(struct ndr_push *ndr, int ndr_flags, const struct lsa_BinaryString *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_BinaryString(struct ndr_pull *ndr, int ndr_flags, struct lsa_BinaryString *r);
-_PUBLIC_ void ndr_print_lsa_BinaryString(struct ndr_print *ndr, const char *name, const struct lsa_BinaryString *r);
-_PUBLIC_ void ndr_print_lsa_LUID(struct ndr_print *ndr, const char *name, const struct lsa_LUID *r);
-_PUBLIC_ void ndr_print_lsa_PrivEntry(struct ndr_print *ndr, const char *name, const struct lsa_PrivEntry *r);
-_PUBLIC_ void ndr_print_lsa_PrivArray(struct ndr_print *ndr, const char *name, const struct lsa_PrivArray *r);
-_PUBLIC_ void ndr_print_lsa_QosInfo(struct ndr_print *ndr, const char *name, const struct lsa_QosInfo *r);
-_PUBLIC_ void ndr_print_lsa_ObjectAttribute(struct ndr_print *ndr, const char *name, const struct lsa_ObjectAttribute *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_PolicyAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_PolicyAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_lsa_PolicyAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_lsa_AuditLogInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditLogInfo *r);
-_PUBLIC_ void ndr_print_lsa_PolicyAuditPolicy(struct ndr_print *ndr, const char *name, enum lsa_PolicyAuditPolicy r);
-_PUBLIC_ void ndr_print_lsa_AuditEventsInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditEventsInfo *r);
-_PUBLIC_ void ndr_print_lsa_DomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfo *r);
-_PUBLIC_ void ndr_print_lsa_PDAccountInfo(struct ndr_print *ndr, const char *name, const struct lsa_PDAccountInfo *r);
-_PUBLIC_ void ndr_print_lsa_ServerRole(struct ndr_print *ndr, const char *name, const struct lsa_ServerRole *r);
-_PUBLIC_ void ndr_print_lsa_ReplicaSourceInfo(struct ndr_print *ndr, const char *name, const struct lsa_ReplicaSourceInfo *r);
-_PUBLIC_ void ndr_print_lsa_DefaultQuotaInfo(struct ndr_print *ndr, const char *name, const struct lsa_DefaultQuotaInfo *r);
-_PUBLIC_ void ndr_print_lsa_ModificationInfo(struct ndr_print *ndr, const char *name, const struct lsa_ModificationInfo *r);
-_PUBLIC_ void ndr_print_lsa_AuditFullSetInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditFullSetInfo *r);
-_PUBLIC_ void ndr_print_lsa_AuditFullQueryInfo(struct ndr_print *ndr, const char *name, const struct lsa_AuditFullQueryInfo *r);
-_PUBLIC_ void ndr_print_lsa_DnsDomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_DnsDomainInfo *r);
-_PUBLIC_ void ndr_print_lsa_PolicyInfo(struct ndr_print *ndr, const char *name, enum lsa_PolicyInfo r);
-_PUBLIC_ void ndr_print_lsa_PolicyInformation(struct ndr_print *ndr, const char *name, const union lsa_PolicyInformation *r);
-_PUBLIC_ void ndr_print_lsa_SidPtr(struct ndr_print *ndr, const char *name, const struct lsa_SidPtr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_SidArray(struct ndr_push *ndr, int ndr_flags, const struct lsa_SidArray *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_SidArray(struct ndr_pull *ndr, int ndr_flags, struct lsa_SidArray *r);
-_PUBLIC_ void ndr_print_lsa_SidArray(struct ndr_print *ndr, const char *name, const struct lsa_SidArray *r);
-_PUBLIC_ void ndr_print_lsa_DomainList(struct ndr_print *ndr, const char *name, const struct lsa_DomainList *r);
-_PUBLIC_ void ndr_print_lsa_SidType(struct ndr_print *ndr, const char *name, enum lsa_SidType r);
-_PUBLIC_ void ndr_print_lsa_TranslatedSid(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid *r);
-_PUBLIC_ void ndr_print_lsa_TransSidArray(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray *r);
-_PUBLIC_ void ndr_print_lsa_RefDomainList(struct ndr_print *ndr, const char *name, const struct lsa_RefDomainList *r);
-_PUBLIC_ void ndr_print_lsa_LookupNamesLevel(struct ndr_print *ndr, const char *name, enum lsa_LookupNamesLevel r);
-_PUBLIC_ void ndr_print_lsa_TranslatedName(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedName *r);
-_PUBLIC_ void ndr_print_lsa_TransNameArray(struct ndr_print *ndr, const char *name, const struct lsa_TransNameArray *r);
-_PUBLIC_ void ndr_print_lsa_LUIDAttribute(struct ndr_print *ndr, const char *name, const struct lsa_LUIDAttribute *r);
-_PUBLIC_ void ndr_print_lsa_PrivilegeSet(struct ndr_print *ndr, const char *name, const struct lsa_PrivilegeSet *r);
-_PUBLIC_ void ndr_print_lsa_DATA_BUF(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF *r);
-_PUBLIC_ void ndr_print_lsa_DATA_BUF2(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF2 *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomInfoEnum(struct ndr_print *ndr, const char *name, enum lsa_TrustDomInfoEnum r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoName(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoName *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoPosixOffset(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoPosixOffset *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoPassword(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoPassword *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoBasic(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoBasic *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoInfoEx(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoInfoEx *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoBuffer(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoBuffer *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoAuthInfo(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoAuthInfo *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoFullInfo(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoFullInfo *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfo11(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfo11 *r);
-_PUBLIC_ void ndr_print_lsa_TrustDomainInfoInfoAll(struct ndr_print *ndr, const char *name, const struct lsa_TrustDomainInfoInfoAll *r);
-_PUBLIC_ void ndr_print_lsa_TrustedDomainInfo(struct ndr_print *ndr, const char *name, const union lsa_TrustedDomainInfo *r);
-_PUBLIC_ void ndr_print_lsa_DATA_BUF_PTR(struct ndr_print *ndr, const char *name, const struct lsa_DATA_BUF_PTR *r);
-_PUBLIC_ void ndr_print_lsa_RightSet(struct ndr_print *ndr, const char *name, const struct lsa_RightSet *r);
-_PUBLIC_ void ndr_print_lsa_DomainListEx(struct ndr_print *ndr, const char *name, const struct lsa_DomainListEx *r);
-_PUBLIC_ void ndr_print_lsa_DomainInfoKerberos(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfoKerberos *r);
-_PUBLIC_ void ndr_print_lsa_DomainInfoEfs(struct ndr_print *ndr, const char *name, const struct lsa_DomainInfoEfs *r);
-_PUBLIC_ void ndr_print_lsa_DomainInformationPolicy(struct ndr_print *ndr, const char *name, const union lsa_DomainInformationPolicy *r);
-_PUBLIC_ void ndr_print_lsa_TranslatedName2(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedName2 *r);
-_PUBLIC_ void ndr_print_lsa_TransNameArray2(struct ndr_print *ndr, const char *name, const struct lsa_TransNameArray2 *r);
-_PUBLIC_ void ndr_print_lsa_TranslatedSid2(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid2 *r);
-_PUBLIC_ void ndr_print_lsa_TransSidArray2(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray2 *r);
-_PUBLIC_ void ndr_print_lsa_TranslatedSid3(struct ndr_print *ndr, const char *name, const struct lsa_TranslatedSid3 *r);
-_PUBLIC_ void ndr_print_lsa_TransSidArray3(struct ndr_print *ndr, const char *name, const struct lsa_TransSidArray3 *r);
-_PUBLIC_ void ndr_print_lsa_ForestTrustBinaryData(struct ndr_print *ndr, const char *name, const struct lsa_ForestTrustBinaryData *r);
-_PUBLIC_ void ndr_print_lsa_ForestTrustDomainInfo(struct ndr_print *ndr, const char *name, const struct lsa_ForestTrustDomainInfo *r);
-_PUBLIC_ void ndr_print_lsa_ForestTrustData(struct ndr_print *ndr, const char *name, const union lsa_ForestTrustData *r);
-_PUBLIC_ void ndr_print_lsa_ForestTrustRecordType(struct ndr_print *ndr, const char *name, enum lsa_ForestTrustRecordType r);
-_PUBLIC_ void ndr_print_lsa_ForestTrustRecord(struct ndr_print *ndr, const char *name, const struct lsa_ForestTrustRecord *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_ForestTrustInformation(struct ndr_push *ndr, int ndr_flags, const struct lsa_ForestTrustInformation *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_ForestTrustInformation(struct ndr_pull *ndr, int ndr_flags, struct lsa_ForestTrustInformation *r);
-_PUBLIC_ void ndr_print_lsa_ForestTrustInformation(struct ndr_print *ndr, const char *name, const struct lsa_ForestTrustInformation *r);
-_PUBLIC_ void ndr_print_lsa_Close(struct ndr_print *ndr, const char *name, int flags, const struct lsa_Close *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_Delete(struct ndr_push *ndr, int flags, const struct lsa_Delete *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_Delete(struct ndr_pull *ndr, int flags, struct lsa_Delete *r);
-_PUBLIC_ void ndr_print_lsa_Delete(struct ndr_print *ndr, const char *name, int flags, const struct lsa_Delete *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_EnumPrivs(struct ndr_push *ndr, int flags, const struct lsa_EnumPrivs *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_EnumPrivs(struct ndr_pull *ndr, int flags, struct lsa_EnumPrivs *r);
-_PUBLIC_ void ndr_print_lsa_EnumPrivs(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumPrivs *r);
-_PUBLIC_ void ndr_print_lsa_QuerySecurity(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QuerySecurity *r);
-_PUBLIC_ void ndr_print_lsa_SetSecObj(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSecObj *r);
-_PUBLIC_ void ndr_print_lsa_ChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct lsa_ChangePassword *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_OpenPolicy(struct ndr_push *ndr, int flags, const struct lsa_OpenPolicy *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_OpenPolicy(struct ndr_pull *ndr, int flags, struct lsa_OpenPolicy *r);
-_PUBLIC_ void ndr_print_lsa_OpenPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenPolicy *r);
-_PUBLIC_ void ndr_print_lsa_QueryInfoPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryInfoPolicy *r);
-_PUBLIC_ void ndr_print_lsa_SetInfoPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInfoPolicy *r);
-_PUBLIC_ void ndr_print_lsa_ClearAuditLog(struct ndr_print *ndr, const char *name, int flags, const struct lsa_ClearAuditLog *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_CreateAccount(struct ndr_push *ndr, int flags, const struct lsa_CreateAccount *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_CreateAccount(struct ndr_pull *ndr, int flags, struct lsa_CreateAccount *r);
-_PUBLIC_ void ndr_print_lsa_CreateAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateAccount *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_EnumAccounts(struct ndr_push *ndr, int flags, const struct lsa_EnumAccounts *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_EnumAccounts(struct ndr_pull *ndr, int flags, struct lsa_EnumAccounts *r);
-_PUBLIC_ void ndr_print_lsa_EnumAccounts(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccounts *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_CreateTrustedDomain(struct ndr_push *ndr, int flags, const struct lsa_CreateTrustedDomain *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_CreateTrustedDomain(struct ndr_pull *ndr, int flags, struct lsa_CreateTrustedDomain *r);
-_PUBLIC_ void ndr_print_lsa_CreateTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomain *r);
-_PUBLIC_ void ndr_print_lsa_EnumTrustDom(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumTrustDom *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupNames(struct ndr_push *ndr, int flags, const struct lsa_LookupNames *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames(struct ndr_pull *ndr, int flags, struct lsa_LookupNames *r);
-_PUBLIC_ void ndr_print_lsa_LookupNames(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupSids(struct ndr_push *ndr, int flags, const struct lsa_LookupSids *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids(struct ndr_pull *ndr, int flags, struct lsa_LookupSids *r);
-_PUBLIC_ void ndr_print_lsa_LookupSids(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_CreateSecret(struct ndr_push *ndr, int flags, const struct lsa_CreateSecret *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_CreateSecret(struct ndr_pull *ndr, int flags, struct lsa_CreateSecret *r);
-_PUBLIC_ void ndr_print_lsa_CreateSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateSecret *r);
-_PUBLIC_ void ndr_print_lsa_OpenAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenAccount *r);
-_PUBLIC_ void ndr_print_lsa_EnumPrivsAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumPrivsAccount *r);
-_PUBLIC_ void ndr_print_lsa_AddPrivilegesToAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_AddPrivilegesToAccount *r);
-_PUBLIC_ void ndr_print_lsa_RemovePrivilegesFromAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RemovePrivilegesFromAccount *r);
-_PUBLIC_ void ndr_print_lsa_GetQuotasForAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetQuotasForAccount *r);
-_PUBLIC_ void ndr_print_lsa_SetQuotasForAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetQuotasForAccount *r);
-_PUBLIC_ void ndr_print_lsa_GetSystemAccessAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetSystemAccessAccount *r);
-_PUBLIC_ void ndr_print_lsa_SetSystemAccessAccount(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSystemAccessAccount *r);
-_PUBLIC_ void ndr_print_lsa_OpenTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenTrustedDomain *r);
-_PUBLIC_ void ndr_print_lsa_QueryTrustedDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfo *r);
-_PUBLIC_ void ndr_print_lsa_SetInformationTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInformationTrustedDomain *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_OpenSecret(struct ndr_push *ndr, int flags, const struct lsa_OpenSecret *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_OpenSecret(struct ndr_pull *ndr, int flags, struct lsa_OpenSecret *r);
-_PUBLIC_ void ndr_print_lsa_OpenSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenSecret *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_SetSecret(struct ndr_push *ndr, int flags, const struct lsa_SetSecret *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_SetSecret(struct ndr_pull *ndr, int flags, struct lsa_SetSecret *r);
-_PUBLIC_ void ndr_print_lsa_SetSecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetSecret *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_QuerySecret(struct ndr_push *ndr, int flags, const struct lsa_QuerySecret *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_QuerySecret(struct ndr_pull *ndr, int flags, struct lsa_QuerySecret *r);
-_PUBLIC_ void ndr_print_lsa_QuerySecret(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QuerySecret *r);
-_PUBLIC_ void ndr_print_lsa_LookupPrivValue(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivValue *r);
-_PUBLIC_ void ndr_print_lsa_LookupPrivName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivName *r);
-_PUBLIC_ void ndr_print_lsa_LookupPrivDisplayName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupPrivDisplayName *r);
-_PUBLIC_ void ndr_print_lsa_DeleteObject(struct ndr_print *ndr, const char *name, int flags, const struct lsa_DeleteObject *r);
-_PUBLIC_ void ndr_print_lsa_EnumAccountsWithUserRight(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccountsWithUserRight *r);
-_PUBLIC_ void ndr_print_lsa_EnumAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumAccountRights *r);
-_PUBLIC_ void ndr_print_lsa_AddAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_AddAccountRights *r);
-_PUBLIC_ void ndr_print_lsa_RemoveAccountRights(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RemoveAccountRights *r);
-_PUBLIC_ void ndr_print_lsa_QueryTrustedDomainInfoBySid(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfoBySid *r);
-_PUBLIC_ void ndr_print_lsa_SetTrustedDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetTrustedDomainInfo *r);
-_PUBLIC_ void ndr_print_lsa_DeleteTrustedDomain(struct ndr_print *ndr, const char *name, int flags, const struct lsa_DeleteTrustedDomain *r);
-_PUBLIC_ void ndr_print_lsa_StorePrivateData(struct ndr_print *ndr, const char *name, int flags, const struct lsa_StorePrivateData *r);
-_PUBLIC_ void ndr_print_lsa_RetrievePrivateData(struct ndr_print *ndr, const char *name, int flags, const struct lsa_RetrievePrivateData *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_OpenPolicy2(struct ndr_push *ndr, int flags, const struct lsa_OpenPolicy2 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_OpenPolicy2(struct ndr_pull *ndr, int flags, struct lsa_OpenPolicy2 *r);
-_PUBLIC_ void ndr_print_lsa_OpenPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenPolicy2 *r);
-_PUBLIC_ void ndr_print_lsa_GetUserName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_GetUserName *r);
-_PUBLIC_ void ndr_print_lsa_QueryInfoPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryInfoPolicy2 *r);
-_PUBLIC_ void ndr_print_lsa_SetInfoPolicy2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetInfoPolicy2 *r);
-_PUBLIC_ void ndr_print_lsa_QueryTrustedDomainInfoByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryTrustedDomainInfoByName *r);
-_PUBLIC_ void ndr_print_lsa_SetTrustedDomainInfoByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetTrustedDomainInfoByName *r);
-_PUBLIC_ void ndr_print_lsa_EnumTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_EnumTrustedDomainsEx *r);
-_PUBLIC_ void ndr_print_lsa_CreateTrustedDomainEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomainEx *r);
-_PUBLIC_ void ndr_print_lsa_CloseTrustedDomainEx(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CloseTrustedDomainEx *r);
-_PUBLIC_ void ndr_print_lsa_QueryDomainInformationPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_QueryDomainInformationPolicy *r);
-_PUBLIC_ void ndr_print_lsa_SetDomainInformationPolicy(struct ndr_print *ndr, const char *name, int flags, const struct lsa_SetDomainInformationPolicy *r);
-_PUBLIC_ void ndr_print_lsa_OpenTrustedDomainByName(struct ndr_print *ndr, const char *name, int flags, const struct lsa_OpenTrustedDomainByName *r);
-_PUBLIC_ void ndr_print_lsa_TestCall(struct ndr_print *ndr, const char *name, int flags, const struct lsa_TestCall *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupSids2(struct ndr_push *ndr, int flags, const struct lsa_LookupSids2 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids2(struct ndr_pull *ndr, int flags, struct lsa_LookupSids2 *r);
-_PUBLIC_ void ndr_print_lsa_LookupSids2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids2 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupNames2(struct ndr_push *ndr, int flags, const struct lsa_LookupNames2 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames2(struct ndr_pull *ndr, int flags, struct lsa_LookupNames2 *r);
-_PUBLIC_ void ndr_print_lsa_LookupNames2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames2 *r);
-_PUBLIC_ void ndr_print_lsa_CreateTrustedDomainEx2(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CreateTrustedDomainEx2 *r);
-_PUBLIC_ void ndr_print_lsa_CREDRWRITE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRWRITE *r);
-_PUBLIC_ void ndr_print_lsa_CREDRREAD(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRREAD *r);
-_PUBLIC_ void ndr_print_lsa_CREDRENUMERATE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRENUMERATE *r);
-_PUBLIC_ void ndr_print_lsa_CREDRWRITEDOMAINCREDENTIALS(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRWRITEDOMAINCREDENTIALS *r);
-_PUBLIC_ void ndr_print_lsa_CREDRREADDOMAINCREDENTIALS(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRREADDOMAINCREDENTIALS *r);
-_PUBLIC_ void ndr_print_lsa_CREDRDELETE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRDELETE *r);
-_PUBLIC_ void ndr_print_lsa_CREDRGETTARGETINFO(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRGETTARGETINFO *r);
-_PUBLIC_ void ndr_print_lsa_CREDRPROFILELOADED(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRPROFILELOADED *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupNames3(struct ndr_push *ndr, int flags, const struct lsa_LookupNames3 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupNames3(struct ndr_pull *ndr, int flags, struct lsa_LookupNames3 *r);
-_PUBLIC_ void ndr_print_lsa_LookupNames3(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames3 *r);
-_PUBLIC_ void ndr_print_lsa_CREDRGETSESSIONTYPES(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRGETSESSIONTYPES *r);
-_PUBLIC_ void ndr_print_lsa_LSARREGISTERAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARREGISTERAUDITEVENT *r);
-_PUBLIC_ void ndr_print_lsa_LSARGENAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARGENAUDITEVENT *r);
-_PUBLIC_ void ndr_print_lsa_LSARUNREGISTERAUDITEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARUNREGISTERAUDITEVENT *r);
-_PUBLIC_ void ndr_print_lsa_lsaRQueryForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct lsa_lsaRQueryForestTrustInformation *r);
-_PUBLIC_ void ndr_print_lsa_LSARSETFORESTTRUSTINFORMATION(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARSETFORESTTRUSTINFORMATION *r);
-_PUBLIC_ void ndr_print_lsa_CREDRRENAME(struct ndr_print *ndr, const char *name, int flags, const struct lsa_CREDRRENAME *r);
-_PUBLIC_ enum ndr_err_code ndr_push_lsa_LookupSids3(struct ndr_push *ndr, int flags, const struct lsa_LookupSids3 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_lsa_LookupSids3(struct ndr_pull *ndr, int flags, struct lsa_LookupSids3 *r);
-_PUBLIC_ void ndr_print_lsa_LookupSids3(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupSids3 *r);
-_PUBLIC_ void ndr_print_lsa_LookupNames4(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LookupNames4 *r);
-_PUBLIC_ void ndr_print_lsa_LSAROPENPOLICYSCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSAROPENPOLICYSCE *r);
-_PUBLIC_ void ndr_print_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r);
-_PUBLIC_ void ndr_print_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r);
-_PUBLIC_ void ndr_print_lsa_LSARADTREPORTSECURITYEVENT(struct ndr_print *ndr, const char *name, int flags, const struct lsa_LSARADTREPORTSECURITYEVENT *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_misc.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_push_GUID(struct ndr_push *ndr, int ndr_flags, const struct GUID *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_GUID(struct ndr_pull *ndr, int ndr_flags, struct GUID *r);
-_PUBLIC_ size_t ndr_size_GUID(const struct GUID *r, int flags);
-_PUBLIC_ enum ndr_err_code ndr_push_ndr_syntax_id(struct ndr_push *ndr, int ndr_flags, const struct ndr_syntax_id *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_ndr_syntax_id(struct ndr_pull *ndr, int ndr_flags, struct ndr_syntax_id *r);
-_PUBLIC_ void ndr_print_ndr_syntax_id(struct ndr_print *ndr, const char *name, const struct ndr_syntax_id *r);
-_PUBLIC_ enum ndr_err_code ndr_push_policy_handle(struct ndr_push *ndr, int ndr_flags, const struct policy_handle *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_policy_handle(struct ndr_pull *ndr, int ndr_flags, struct policy_handle *r);
-_PUBLIC_ void ndr_print_policy_handle(struct ndr_print *ndr, const char *name, const struct policy_handle *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_SchannelType(struct ndr_push *ndr, int ndr_flags, enum netr_SchannelType r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_SchannelType(struct ndr_pull *ndr, int ndr_flags, enum netr_SchannelType *r);
-_PUBLIC_ void ndr_print_netr_SchannelType(struct ndr_print *ndr, const char *name, enum netr_SchannelType r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_SamDatabaseID(struct ndr_push *ndr, int ndr_flags, enum netr_SamDatabaseID r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_SamDatabaseID(struct ndr_pull *ndr, int ndr_flags, enum netr_SamDatabaseID *r);
-_PUBLIC_ void ndr_print_netr_SamDatabaseID(struct ndr_print *ndr, const char *name, enum netr_SamDatabaseID r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_RejectReason(struct ndr_push *ndr, int ndr_flags, enum samr_RejectReason r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_RejectReason(struct ndr_pull *ndr, int ndr_flags, enum samr_RejectReason *r);
-_PUBLIC_ void ndr_print_samr_RejectReason(struct ndr_print *ndr, const char *name, enum samr_RejectReason r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_nbt.c  */
-
-_PUBLIC_ void ndr_print_nbt_operation(struct ndr_print *ndr, const char *name, uint16_t r);
-_PUBLIC_ void ndr_print_nbt_name_type(struct ndr_print *ndr, const char *name, enum nbt_name_type r);
-_PUBLIC_ void ndr_print_nbt_name(struct ndr_print *ndr, const char *name, const struct nbt_name *r);
-_PUBLIC_ void ndr_print_nbt_qclass(struct ndr_print *ndr, const char *name, enum nbt_qclass r);
-_PUBLIC_ void ndr_print_nbt_qtype(struct ndr_print *ndr, const char *name, enum nbt_qtype r);
-_PUBLIC_ void ndr_print_nbt_name_question(struct ndr_print *ndr, const char *name, const struct nbt_name_question *r);
-_PUBLIC_ void ndr_print_nb_flags(struct ndr_print *ndr, const char *name, uint16_t r);
-_PUBLIC_ void ndr_print_nbt_rdata_address(struct ndr_print *ndr, const char *name, const struct nbt_rdata_address *r);
-_PUBLIC_ void ndr_print_nbt_rdata_netbios(struct ndr_print *ndr, const char *name, const struct nbt_rdata_netbios *r);
-_PUBLIC_ void ndr_print_nbt_statistics(struct ndr_print *ndr, const char *name, const struct nbt_statistics *r);
-_PUBLIC_ void ndr_print_nbt_status_name(struct ndr_print *ndr, const char *name, const struct nbt_status_name *r);
-_PUBLIC_ void ndr_print_nbt_rdata_status(struct ndr_print *ndr, const char *name, const struct nbt_rdata_status *r);
-_PUBLIC_ void ndr_print_nbt_rdata_data(struct ndr_print *ndr, const char *name, const struct nbt_rdata_data *r);
-_PUBLIC_ void ndr_print_nbt_rdata(struct ndr_print *ndr, const char *name, const union nbt_rdata *r);
-_PUBLIC_ void ndr_print_nbt_res_rec(struct ndr_print *ndr, const char *name, const struct nbt_res_rec *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_name_packet(struct ndr_push *ndr, int ndr_flags, const struct nbt_name_packet *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_name_packet(struct ndr_pull *ndr, int ndr_flags, struct nbt_name_packet *r);
-_PUBLIC_ void ndr_print_nbt_name_packet(struct ndr_print *ndr, const char *name, const struct nbt_name_packet *r);
-_PUBLIC_ void ndr_print_dgram_msg_type(struct ndr_print *ndr, const char *name, enum dgram_msg_type r);
-_PUBLIC_ void ndr_print_dgram_flags(struct ndr_print *ndr, const char *name, uint8_t r);
-_PUBLIC_ void ndr_print_smb_command(struct ndr_print *ndr, const char *name, enum smb_command r);
-_PUBLIC_ void ndr_print_smb_trans_body(struct ndr_print *ndr, const char *name, const struct smb_trans_body *r);
-_PUBLIC_ void ndr_print_smb_body(struct ndr_print *ndr, const char *name, const union smb_body *r);
-_PUBLIC_ enum ndr_err_code ndr_push_dgram_smb_packet(struct ndr_push *ndr, int ndr_flags, const struct dgram_smb_packet *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_dgram_smb_packet(struct ndr_pull *ndr, int ndr_flags, struct dgram_smb_packet *r);
-_PUBLIC_ void ndr_print_dgram_smb_packet(struct ndr_print *ndr, const char *name, const struct dgram_smb_packet *r);
-_PUBLIC_ void ndr_print_dgram_message_body(struct ndr_print *ndr, const char *name, const union dgram_message_body *r);
-_PUBLIC_ void ndr_print_dgram_message(struct ndr_print *ndr, const char *name, const struct dgram_message *r);
-_PUBLIC_ void ndr_print_dgram_err_code(struct ndr_print *ndr, const char *name, enum dgram_err_code r);
-_PUBLIC_ void ndr_print_dgram_data(struct ndr_print *ndr, const char *name, const union dgram_data *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_dgram_packet(struct ndr_push *ndr, int ndr_flags, const struct nbt_dgram_packet *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_dgram_packet(struct ndr_pull *ndr, int ndr_flags, struct nbt_dgram_packet *r);
-_PUBLIC_ void ndr_print_nbt_dgram_packet(struct ndr_print *ndr, const char *name, const struct nbt_dgram_packet *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_command(struct ndr_print *ndr, const char *name, enum nbt_netlogon_command r);
-_PUBLIC_ void ndr_print_nbt_netlogon_version(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_nbt_netlogon_query_for_pdc(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_query_for_pdc *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_query_for_pdc2(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_query_for_pdc2 *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_response_from_pdc(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_response_from_pdc *r);
-_PUBLIC_ void ndr_print_nbt_server_type(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_nbt_dc_sock_addr(struct ndr_print *ndr, const char *name, const struct nbt_dc_sock_addr *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_response_from_pdc2(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_response_from_pdc2 *r);
-_PUBLIC_ void ndr_print_nbt_db_change(struct ndr_print *ndr, const char *name, const struct nbt_db_change *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_announce_uas(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_announce_uas *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_request(struct ndr_print *ndr, const char *name, const union nbt_netlogon_request *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_netlogon_packet(struct ndr_push *ndr, int ndr_flags, const struct nbt_netlogon_packet *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_netlogon_packet(struct ndr_pull *ndr, int ndr_flags, struct nbt_netlogon_packet *r);
-_PUBLIC_ void ndr_print_nbt_netlogon_packet(struct ndr_print *ndr, const char *name, const struct nbt_netlogon_packet *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon_1(struct ndr_print *ndr, const char *name, const struct nbt_cldap_netlogon_1 *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon_3(struct ndr_print *ndr, const char *name, const struct nbt_cldap_netlogon_3 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_cldap_netlogon_5(struct ndr_push *ndr, int ndr_flags, const struct nbt_cldap_netlogon_5 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_cldap_netlogon_5(struct ndr_pull *ndr, int ndr_flags, struct nbt_cldap_netlogon_5 *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon_5(struct ndr_print *ndr, const char *name, const struct nbt_cldap_netlogon_5 *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon_13(struct ndr_print *ndr, const char *name, const struct nbt_cldap_netlogon_13 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_cldap_netlogon_15(struct ndr_push *ndr, int ndr_flags, const struct nbt_cldap_netlogon_15 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_cldap_netlogon_15(struct ndr_pull *ndr, int ndr_flags, struct nbt_cldap_netlogon_15 *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon_15(struct ndr_print *ndr, const char *name, const struct nbt_cldap_netlogon_15 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_cldap_netlogon_29(struct ndr_push *ndr, int ndr_flags, const struct nbt_cldap_netlogon_29 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_cldap_netlogon_29(struct ndr_pull *ndr, int ndr_flags, struct nbt_cldap_netlogon_29 *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon_29(struct ndr_print *ndr, const char *name, const struct nbt_cldap_netlogon_29 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_cldap_netlogon(struct ndr_push *ndr, int ndr_flags, const union nbt_cldap_netlogon *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_cldap_netlogon(struct ndr_pull *ndr, int ndr_flags, union nbt_cldap_netlogon *r);
-_PUBLIC_ void ndr_print_nbt_cldap_netlogon(struct ndr_print *ndr, const char *name, const union nbt_cldap_netlogon *r);
-_PUBLIC_ void ndr_print_nbt_ntlogon_command(struct ndr_print *ndr, const char *name, enum nbt_ntlogon_command r);
-_PUBLIC_ void ndr_print_nbt_ntlogon_sam_logon(struct ndr_print *ndr, const char *name, const struct nbt_ntlogon_sam_logon *r);
-_PUBLIC_ void ndr_print_nbt_ntlogon_sam_logon_reply(struct ndr_print *ndr, const char *name, const struct nbt_ntlogon_sam_logon_reply *r);
-_PUBLIC_ void ndr_print_nbt_ntlogon_request(struct ndr_print *ndr, const char *name, const union nbt_ntlogon_request *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_ntlogon_packet(struct ndr_push *ndr, int ndr_flags, const struct nbt_ntlogon_packet *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_ntlogon_packet(struct ndr_pull *ndr, int ndr_flags, struct nbt_ntlogon_packet *r);
-_PUBLIC_ void ndr_print_nbt_ntlogon_packet(struct ndr_print *ndr, const char *name, const struct nbt_ntlogon_packet *r);
-_PUBLIC_ void ndr_print_nbt_browse_opcode(struct ndr_print *ndr, const char *name, enum nbt_browse_opcode r);
-_PUBLIC_ void ndr_print_nbt_browse_host_announcement(struct ndr_print *ndr, const char *name, const struct nbt_browse_host_announcement *r);
-_PUBLIC_ void ndr_print_nbt_browse_announcement_request(struct ndr_print *ndr, const char *name, const struct nbt_browse_announcement_request *r);
-_PUBLIC_ void ndr_print_nbt_browse_election_request(struct ndr_print *ndr, const char *name, const struct nbt_browse_election_request *r);
-_PUBLIC_ void ndr_print_nbt_browse_backup_list_request(struct ndr_print *ndr, const char *name, const struct nbt_browse_backup_list_request *r);
-_PUBLIC_ void ndr_print_nbt_browse_backup_list_response(struct ndr_print *ndr, const char *name, const struct nbt_browse_backup_list_response *r);
-_PUBLIC_ void ndr_print_nbt_browse_become_backup(struct ndr_print *ndr, const char *name, const struct nbt_browse_become_backup *r);
-_PUBLIC_ void ndr_print_nbt_browse_domain_announcement(struct ndr_print *ndr, const char *name, const struct nbt_browse_domain_announcement *r);
-_PUBLIC_ void ndr_print_nbt_browse_master_announcement(struct ndr_print *ndr, const char *name, const struct nbt_browse_master_announcement *r);
-_PUBLIC_ void ndr_print_nbt_browse_reset_state(struct ndr_print *ndr, const char *name, const struct nbt_browse_reset_state *r);
-_PUBLIC_ void ndr_print_nbt_browse_local_master_announcement(struct ndr_print *ndr, const char *name, const struct nbt_browse_local_master_announcement *r);
-_PUBLIC_ void ndr_print_nbt_browse_payload(struct ndr_print *ndr, const char *name, const union nbt_browse_payload *r);
-_PUBLIC_ enum ndr_err_code ndr_push_nbt_browse_packet(struct ndr_push *ndr, int ndr_flags, const struct nbt_browse_packet *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_nbt_browse_packet(struct ndr_pull *ndr, int ndr_flags, struct nbt_browse_packet *r);
-_PUBLIC_ void ndr_print_nbt_browse_packet(struct ndr_print *ndr, const char *name, const struct nbt_browse_packet *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_netlogon.c  */
-
-_PUBLIC_ void ndr_print_netr_UasInfo(struct ndr_print *ndr, const char *name, const struct netr_UasInfo *r);
-_PUBLIC_ void ndr_print_netr_UasLogoffInfo(struct ndr_print *ndr, const char *name, const struct netr_UasLogoffInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_AcctLockStr(struct ndr_push *ndr, int ndr_flags, const struct netr_AcctLockStr *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_AcctLockStr(struct ndr_pull *ndr, int ndr_flags, struct netr_AcctLockStr *r);
-_PUBLIC_ void ndr_print_netr_AcctLockStr(struct ndr_print *ndr, const char *name, const struct netr_AcctLockStr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_LogonParameterControl(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonParameterControl(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_netr_LogonParameterControl(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *name, const struct netr_IdentityInfo *r);
-_PUBLIC_ void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r);
-_PUBLIC_ void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r);
-_PUBLIC_ void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_LogonInfo(struct ndr_push *ndr, int ndr_flags, const union netr_LogonInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonInfo(struct ndr_pull *ndr, int ndr_flags, union netr_LogonInfo *r);
-_PUBLIC_ void ndr_print_netr_LogonInfo(struct ndr_print *ndr, const char *name, const union netr_LogonInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r);
-_PUBLIC_ void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_LMSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_LMSessionKey *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_LMSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_LMSessionKey *r);
-_PUBLIC_ void ndr_print_netr_LMSessionKey(struct ndr_print *ndr, const char *name, const struct netr_LMSessionKey *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_UserFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_UserFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_netr_UserFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_SamBaseInfo(struct ndr_print *ndr, const char *name, const struct netr_SamBaseInfo *r);
-_PUBLIC_ void ndr_print_netr_SamInfo2(struct ndr_print *ndr, const char *name, const struct netr_SamInfo2 *r);
-_PUBLIC_ void ndr_print_netr_SidAttr(struct ndr_print *ndr, const char *name, const struct netr_SidAttr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_SamInfo3(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo3 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo3 *r);
-_PUBLIC_ void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r);
-_PUBLIC_ void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r);
-_PUBLIC_ void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r);
-_PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_Credential(struct ndr_push *ndr, int ndr_flags, const struct netr_Credential *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_Credential(struct ndr_pull *ndr, int ndr_flags, struct netr_Credential *r);
-_PUBLIC_ void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name, const struct netr_Credential *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r);
-_PUBLIC_ void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r);
-_PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, enum netr_LogonLevel r);
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r);
-_PUBLIC_ void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r);
-_PUBLIC_ void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r);
-_PUBLIC_ void ndr_print_netr_USER_KEYS2(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS2 *r);
-_PUBLIC_ void ndr_print_netr_USER_KEY_UNION(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY_UNION *r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_USER_KEYS(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_USER_KEYS(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS *r);
-_PUBLIC_ void ndr_print_netr_USER_KEYS(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS *r);
-_PUBLIC_ void ndr_print_netr_USER_PRIVATE_INFO(struct ndr_print *ndr, const char *name, const struct netr_USER_PRIVATE_INFO *r);
-_PUBLIC_ void ndr_print_netr_DELTA_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_USER *r);
-_PUBLIC_ void ndr_print_netr_DELTA_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DOMAIN *r);
-_PUBLIC_ void ndr_print_netr_DELTA_GROUP(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP *r);
-_PUBLIC_ void ndr_print_netr_DELTA_RENAME(struct ndr_print *ndr, const char *name, const struct netr_DELTA_RENAME *r);
-_PUBLIC_ void ndr_print_netr_DELTA_GROUP_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP_MEMBER *r);
-_PUBLIC_ void ndr_print_netr_DELTA_ALIAS(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS *r);
-_PUBLIC_ void ndr_print_netr_DELTA_ALIAS_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS_MEMBER *r);
-_PUBLIC_ void ndr_print_netr_QUOTA_LIMITS(struct ndr_print *ndr, const char *name, const struct netr_QUOTA_LIMITS *r);
-_PUBLIC_ void ndr_print_netr_DELTA_POLICY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_POLICY *r);
-_PUBLIC_ void ndr_print_netr_DELTA_TRUSTED_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_TRUSTED_DOMAIN *r);
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_TRUST(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_TRUST *r);
-_PUBLIC_ void ndr_print_netr_DELTA_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ACCOUNT *r);
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_ACCOUNT *r);
-_PUBLIC_ void ndr_print_netr_DELTA_DELETE_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_SECRET *r);
-_PUBLIC_ void ndr_print_netr_CIPHER_VALUE(struct ndr_print *ndr, const char *name, const struct netr_CIPHER_VALUE *r);
-_PUBLIC_ void ndr_print_netr_DELTA_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_SECRET *r);
-_PUBLIC_ void ndr_print_netr_DeltaEnum(struct ndr_print *ndr, const char *name, enum netr_DeltaEnum r);
-_PUBLIC_ void ndr_print_netr_DELTA_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_UNION *r);
-_PUBLIC_ void ndr_print_netr_DELTA_ID_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_ID_UNION *r);
-_PUBLIC_ void ndr_print_netr_DELTA_ENUM(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM *r);
-_PUBLIC_ void ndr_print_netr_DELTA_ENUM_ARRAY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM_ARRAY *r);
-_PUBLIC_ void ndr_print_netr_UAS_INFO_0(struct ndr_print *ndr, const char *name, const struct netr_UAS_INFO_0 *r);
-_PUBLIC_ void ndr_print_netr_AccountBuffer(struct ndr_print *ndr, const char *name, const struct netr_AccountBuffer *r);
-_PUBLIC_ void ndr_print_netr_InfoFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_NETLOGON_INFO_1(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_1 *r);
-_PUBLIC_ void ndr_print_netr_NETLOGON_INFO_2(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_2 *r);
-_PUBLIC_ void ndr_print_netr_NETLOGON_INFO_3(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_3 *r);
-_PUBLIC_ void ndr_print_netr_CONTROL_QUERY_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_QUERY_INFORMATION *r);
-_PUBLIC_ void ndr_print_netr_LogonControlCode(struct ndr_print *ndr, const char *name, enum netr_LogonControlCode r);
-_PUBLIC_ void ndr_print_netr_CONTROL_DATA_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_DATA_INFORMATION *r);
-_PUBLIC_ void ndr_print_netr_NegotiateFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_Blob(struct ndr_print *ndr, const char *name, const struct netr_Blob *r);
-_PUBLIC_ void ndr_print_netr_DsRGetDCName_flags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo_AddressType(struct ndr_print *ndr, const char *name, enum netr_DsRGetDCNameInfo_AddressType r);
-_PUBLIC_ void ndr_print_netr_DsR_DcFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRGetDCNameInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRGetDCNameInfo *r);
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r);
-_PUBLIC_ void ndr_print_netr_BinaryString(struct ndr_print *ndr, const char *name, const struct netr_BinaryString *r);
-_PUBLIC_ void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r);
-_PUBLIC_ void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r);
-_PUBLIC_ void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r);
-_PUBLIC_ void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r);
-_PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r);
-_PUBLIC_ void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r);
-_PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesWCtr *r);
-_PUBLIC_ void ndr_print_netr_DsRAddress(struct ndr_print *ndr, const char *name, const struct netr_DsRAddress *r);
-_PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r);
-_PUBLIC_ void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r);
-_PUBLIC_ void ndr_print_netr_DomainTrustList(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustList *r);
-_PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesExWCtr *r);
-_PUBLIC_ void ndr_print_DcSitesCtr(struct ndr_print *ndr, const char *name, const struct DcSitesCtr *r);
-_PUBLIC_ void ndr_print_netr_LogonUasLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogon *r);
-_PUBLIC_ void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogoff *r);
-_PUBLIC_ void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogon *r);
-_PUBLIC_ void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogoff *r);
-_PUBLIC_ void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerReqChallenge *r);
-_PUBLIC_ void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate *r);
-_PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet *r);
-_PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseDeltas *r);
-_PUBLIC_ void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync *r);
-_PUBLIC_ void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountDeltas *r);
-_PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountSync *r);
-_PUBLIC_ void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetDcName *r);
-_PUBLIC_ void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl *r);
-_PUBLIC_ void ndr_print_netr_GetAnyDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetAnyDCName *r);
-_PUBLIC_ void ndr_print_netr_LogonControl2(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2 *r);
-_PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate2 *r);
-_PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync2 *r);
-_PUBLIC_ void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseRedo *r);
-_PUBLIC_ void ndr_print_netr_LogonControl2Ex(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2Ex *r);
-_PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomains(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomains *r);
-_PUBLIC_ void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCName *r);
-_PUBLIC_ void ndr_print_netr_NETRLOGONDUMMYROUTINE1(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONDUMMYROUTINE1 *r);
-_PUBLIC_ void ndr_print_netr_NETRLOGONSETSERVICEBITS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r);
-_PUBLIC_ void ndr_print_netr_LogonGetTrustRid(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetTrustRid *r);
-_PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r);
-_PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r);
-_PUBLIC_ void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate3 *r);
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx *r);
-_PUBLIC_ void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetSiteName *r);
-_PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetDomainInfo *r);
-_PUBLIC_ void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet2 *r);
-_PUBLIC_ void ndr_print_netr_ServerPasswordGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordGet *r);
-_PUBLIC_ void ndr_print_netr_NETRLOGONSENDTOSAM(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSENDTOSAM *r);
-_PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesW *r);
-_PUBLIC_ void ndr_print_netr_DsRGetDCNameEx2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx2 *r);
-_PUBLIC_ void ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r);
-_PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r);
-_PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesExW *r);
-_PUBLIC_ void ndr_print_netr_DsrGetDcSiteCoverageW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrGetDcSiteCoverageW *r);
-_PUBLIC_ void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonEx *r);
-_PUBLIC_ void ndr_print_netr_DsrEnumerateDomainTrusts(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrEnumerateDomainTrusts *r);
-_PUBLIC_ void ndr_print_netr_DsrDeregisterDNSHostRecords(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrDeregisterDNSHostRecords *r);
-_PUBLIC_ void ndr_print_netr_ServerTrustPasswordsGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerTrustPasswordsGet *r);
-_PUBLIC_ void ndr_print_netr_DsRGetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetForestTrustInformation *r);
-_PUBLIC_ void ndr_print_netr_GetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetForestTrustInformation *r);
-_PUBLIC_ void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonWithFlags *r);
-_PUBLIC_ void ndr_print_netr_NETRSERVERGETTRUSTINFO(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERGETTRUSTINFO *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_notify.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_push_notify_entry(struct ndr_push *ndr, int ndr_flags, const struct notify_entry *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_notify_entry(struct ndr_pull *ndr, int ndr_flags, struct notify_entry *r);
-_PUBLIC_ void ndr_print_notify_entry(struct ndr_print *ndr, const char *name, const struct notify_entry *r);
-_PUBLIC_ void ndr_print_notify_depth(struct ndr_print *ndr, const char *name, const struct notify_depth *r);
-_PUBLIC_ enum ndr_err_code ndr_push_notify_array(struct ndr_push *ndr, int ndr_flags, const struct notify_array *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_notify_array(struct ndr_pull *ndr, int ndr_flags, struct notify_array *r);
-_PUBLIC_ void ndr_print_notify_array(struct ndr_print *ndr, const char *name, const struct notify_array *r);
-_PUBLIC_ enum ndr_err_code ndr_push_notify_event(struct ndr_push *ndr, int ndr_flags, const struct notify_event *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_notify_event(struct ndr_pull *ndr, int ndr_flags, struct notify_event *r);
-_PUBLIC_ void ndr_print_notify_event(struct ndr_print *ndr, const char *name, const struct notify_event *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_ntsvcs.c  */
-
-_PUBLIC_ void ndr_print_PNP_HwProfInfo(struct ndr_print *ndr, const char *name, const struct PNP_HwProfInfo *r);
-_PUBLIC_ void ndr_print_PNP_Disconnect(struct ndr_print *ndr, const char *name, int flags, const struct PNP_Disconnect *r);
-_PUBLIC_ void ndr_print_PNP_Connect(struct ndr_print *ndr, const char *name, int flags, const struct PNP_Connect *r);
-_PUBLIC_ void ndr_print_PNP_GetVersion(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetVersion *r);
-_PUBLIC_ void ndr_print_PNP_GetGlobalState(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetGlobalState *r);
-_PUBLIC_ void ndr_print_PNP_InitDetection(struct ndr_print *ndr, const char *name, int flags, const struct PNP_InitDetection *r);
-_PUBLIC_ void ndr_print_PNP_ReportLogOn(struct ndr_print *ndr, const char *name, int flags, const struct PNP_ReportLogOn *r);
-_PUBLIC_ void ndr_print_PNP_ValidateDeviceInstance(struct ndr_print *ndr, const char *name, int flags, const struct PNP_ValidateDeviceInstance *r);
-_PUBLIC_ void ndr_print_PNP_GetRootDeviceInstance(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetRootDeviceInstance *r);
-_PUBLIC_ void ndr_print_PNP_GetRelatedDeviceInstance(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetRelatedDeviceInstance *r);
-_PUBLIC_ void ndr_print_PNP_EnumerateSubKeys(struct ndr_print *ndr, const char *name, int flags, const struct PNP_EnumerateSubKeys *r);
-_PUBLIC_ void ndr_print_PNP_GetDeviceList(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetDeviceList *r);
-_PUBLIC_ void ndr_print_PNP_GetDeviceListSize(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetDeviceListSize *r);
-_PUBLIC_ void ndr_print_PNP_GetDepth(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetDepth *r);
-_PUBLIC_ void ndr_print_PNP_GetDeviceRegProp(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetDeviceRegProp *r);
-_PUBLIC_ void ndr_print_PNP_SetDeviceRegProp(struct ndr_print *ndr, const char *name, int flags, const struct PNP_SetDeviceRegProp *r);
-_PUBLIC_ void ndr_print_PNP_GetClassInstance(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetClassInstance *r);
-_PUBLIC_ void ndr_print_PNP_CreateKey(struct ndr_print *ndr, const char *name, int flags, const struct PNP_CreateKey *r);
-_PUBLIC_ void ndr_print_PNP_DeleteRegistryKey(struct ndr_print *ndr, const char *name, int flags, const struct PNP_DeleteRegistryKey *r);
-_PUBLIC_ void ndr_print_PNP_GetClassCount(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetClassCount *r);
-_PUBLIC_ void ndr_print_PNP_GetClassName(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetClassName *r);
-_PUBLIC_ void ndr_print_PNP_DeleteClassKey(struct ndr_print *ndr, const char *name, int flags, const struct PNP_DeleteClassKey *r);
-_PUBLIC_ void ndr_print_PNP_GetInterfaceDeviceAlias(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetInterfaceDeviceAlias *r);
-_PUBLIC_ void ndr_print_PNP_GetInterfaceDeviceList(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetInterfaceDeviceList *r);
-_PUBLIC_ void ndr_print_PNP_GetInterfaceDeviceListSize(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetInterfaceDeviceListSize *r);
-_PUBLIC_ void ndr_print_PNP_RegisterDeviceClassAssociation(struct ndr_print *ndr, const char *name, int flags, const struct PNP_RegisterDeviceClassAssociation *r);
-_PUBLIC_ void ndr_print_PNP_UnregisterDeviceClassAssociation(struct ndr_print *ndr, const char *name, int flags, const struct PNP_UnregisterDeviceClassAssociation *r);
-_PUBLIC_ void ndr_print_PNP_GetClassRegProp(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetClassRegProp *r);
-_PUBLIC_ void ndr_print_PNP_SetClassRegProp(struct ndr_print *ndr, const char *name, int flags, const struct PNP_SetClassRegProp *r);
-_PUBLIC_ void ndr_print_PNP_CreateDevInst(struct ndr_print *ndr, const char *name, int flags, const struct PNP_CreateDevInst *r);
-_PUBLIC_ void ndr_print_PNP_DeviceInstanceAction(struct ndr_print *ndr, const char *name, int flags, const struct PNP_DeviceInstanceAction *r);
-_PUBLIC_ void ndr_print_PNP_GetDeviceStatus(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetDeviceStatus *r);
-_PUBLIC_ void ndr_print_PNP_SetDeviceProblem(struct ndr_print *ndr, const char *name, int flags, const struct PNP_SetDeviceProblem *r);
-_PUBLIC_ void ndr_print_PNP_DisableDevInst(struct ndr_print *ndr, const char *name, int flags, const struct PNP_DisableDevInst *r);
-_PUBLIC_ void ndr_print_PNP_UninstallDevInst(struct ndr_print *ndr, const char *name, int flags, const struct PNP_UninstallDevInst *r);
-_PUBLIC_ void ndr_print_PNP_AddID(struct ndr_print *ndr, const char *name, int flags, const struct PNP_AddID *r);
-_PUBLIC_ void ndr_print_PNP_RegisterDriver(struct ndr_print *ndr, const char *name, int flags, const struct PNP_RegisterDriver *r);
-_PUBLIC_ void ndr_print_PNP_QueryRemove(struct ndr_print *ndr, const char *name, int flags, const struct PNP_QueryRemove *r);
-_PUBLIC_ void ndr_print_PNP_RequestDeviceEject(struct ndr_print *ndr, const char *name, int flags, const struct PNP_RequestDeviceEject *r);
-_PUBLIC_ void ndr_print_PNP_IsDockStationPresent(struct ndr_print *ndr, const char *name, int flags, const struct PNP_IsDockStationPresent *r);
-_PUBLIC_ void ndr_print_PNP_RequestEjectPC(struct ndr_print *ndr, const char *name, int flags, const struct PNP_RequestEjectPC *r);
-_PUBLIC_ void ndr_print_PNP_HwProfFlags(struct ndr_print *ndr, const char *name, int flags, const struct PNP_HwProfFlags *r);
-_PUBLIC_ void ndr_print_PNP_GetHwProfInfo(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetHwProfInfo *r);
-_PUBLIC_ void ndr_print_PNP_AddEmptyLogConf(struct ndr_print *ndr, const char *name, int flags, const struct PNP_AddEmptyLogConf *r);
-_PUBLIC_ void ndr_print_PNP_FreeLogConf(struct ndr_print *ndr, const char *name, int flags, const struct PNP_FreeLogConf *r);
-_PUBLIC_ void ndr_print_PNP_GetFirstLogConf(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetFirstLogConf *r);
-_PUBLIC_ void ndr_print_PNP_GetNextLogConf(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetNextLogConf *r);
-_PUBLIC_ void ndr_print_PNP_GetLogConfPriority(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetLogConfPriority *r);
-_PUBLIC_ void ndr_print_PNP_AddResDes(struct ndr_print *ndr, const char *name, int flags, const struct PNP_AddResDes *r);
-_PUBLIC_ void ndr_print_PNP_FreeResDes(struct ndr_print *ndr, const char *name, int flags, const struct PNP_FreeResDes *r);
-_PUBLIC_ void ndr_print_PNP_GetNextResDes(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetNextResDes *r);
-_PUBLIC_ void ndr_print_PNP_GetResDesData(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetResDesData *r);
-_PUBLIC_ void ndr_print_PNP_GetResDesDataSize(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetResDesDataSize *r);
-_PUBLIC_ void ndr_print_PNP_ModifyResDes(struct ndr_print *ndr, const char *name, int flags, const struct PNP_ModifyResDes *r);
-_PUBLIC_ void ndr_print_PNP_DetectResourceLimit(struct ndr_print *ndr, const char *name, int flags, const struct PNP_DetectResourceLimit *r);
-_PUBLIC_ void ndr_print_PNP_QueryResConfList(struct ndr_print *ndr, const char *name, int flags, const struct PNP_QueryResConfList *r);
-_PUBLIC_ void ndr_print_PNP_SetHwProf(struct ndr_print *ndr, const char *name, int flags, const struct PNP_SetHwProf *r);
-_PUBLIC_ void ndr_print_PNP_QueryArbitratorFreeData(struct ndr_print *ndr, const char *name, int flags, const struct PNP_QueryArbitratorFreeData *r);
-_PUBLIC_ void ndr_print_PNP_QueryArbitratorFreeSize(struct ndr_print *ndr, const char *name, int flags, const struct PNP_QueryArbitratorFreeSize *r);
-_PUBLIC_ void ndr_print_PNP_RunDetection(struct ndr_print *ndr, const char *name, int flags, const struct PNP_RunDetection *r);
-_PUBLIC_ void ndr_print_PNP_RegisterNotification(struct ndr_print *ndr, const char *name, int flags, const struct PNP_RegisterNotification *r);
-_PUBLIC_ void ndr_print_PNP_UnregisterNotification(struct ndr_print *ndr, const char *name, int flags, const struct PNP_UnregisterNotification *r);
-_PUBLIC_ void ndr_print_PNP_GetCustomDevProp(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetCustomDevProp *r);
-_PUBLIC_ void ndr_print_PNP_GetVersionInternal(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetVersionInternal *r);
-_PUBLIC_ void ndr_print_PNP_GetBlockedDriverInfo(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetBlockedDriverInfo *r);
-_PUBLIC_ void ndr_print_PNP_GetServerSideDeviceInstallFlags(struct ndr_print *ndr, const char *name, int flags, const struct PNP_GetServerSideDeviceInstallFlags *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_samr.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_push_samr_AcctFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_AcctFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_samr_AcctFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_ConnectAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_UserAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_DomainAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_GroupAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_AliasAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_SamEntry(struct ndr_print *ndr, const char *name, const struct samr_SamEntry *r);
-_PUBLIC_ void ndr_print_samr_SamArray(struct ndr_print *ndr, const char *name, const struct samr_SamArray *r);
-_PUBLIC_ void ndr_print_samr_Role(struct ndr_print *ndr, const char *name, enum samr_Role r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_PasswordProperties(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_PasswordProperties(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_samr_PasswordProperties(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_DomInfo1(struct ndr_print *ndr, const char *name, const struct samr_DomInfo1 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo2(struct ndr_print *ndr, const char *name, const struct samr_DomInfo2 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo3(struct ndr_print *ndr, const char *name, const struct samr_DomInfo3 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo4(struct ndr_print *ndr, const char *name, const struct samr_DomInfo4 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo5(struct ndr_print *ndr, const char *name, const struct samr_DomInfo5 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo6(struct ndr_print *ndr, const char *name, const struct samr_DomInfo6 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo7(struct ndr_print *ndr, const char *name, const struct samr_DomInfo7 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo8(struct ndr_print *ndr, const char *name, const struct samr_DomInfo8 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo9(struct ndr_print *ndr, const char *name, const struct samr_DomInfo9 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo11(struct ndr_print *ndr, const char *name, const struct samr_DomInfo11 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo12(struct ndr_print *ndr, const char *name, const struct samr_DomInfo12 *r);
-_PUBLIC_ void ndr_print_samr_DomInfo13(struct ndr_print *ndr, const char *name, const struct samr_DomInfo13 *r);
-_PUBLIC_ void ndr_print_samr_DomainInfo(struct ndr_print *ndr, const char *name, const union samr_DomainInfo *r);
-_PUBLIC_ void ndr_print_samr_Ids(struct ndr_print *ndr, const char *name, const struct samr_Ids *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_GroupAttrs(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_GroupAttrs(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_samr_GroupAttrs(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_GroupInfoAll(struct ndr_print *ndr, const char *name, const struct samr_GroupInfoAll *r);
-_PUBLIC_ void ndr_print_samr_GroupInfoAttributes(struct ndr_print *ndr, const char *name, const struct samr_GroupInfoAttributes *r);
-_PUBLIC_ void ndr_print_samr_GroupInfoEnum(struct ndr_print *ndr, const char *name, enum samr_GroupInfoEnum r);
-_PUBLIC_ void ndr_print_samr_GroupInfo(struct ndr_print *ndr, const char *name, const union samr_GroupInfo *r);
-_PUBLIC_ void ndr_print_samr_RidTypeArray(struct ndr_print *ndr, const char *name, const struct samr_RidTypeArray *r);
-_PUBLIC_ void ndr_print_samr_AliasInfoAll(struct ndr_print *ndr, const char *name, const struct samr_AliasInfoAll *r);
-_PUBLIC_ void ndr_print_samr_AliasInfoEnum(struct ndr_print *ndr, const char *name, enum samr_AliasInfoEnum r);
-_PUBLIC_ void ndr_print_samr_AliasInfo(struct ndr_print *ndr, const char *name, const union samr_AliasInfo *r);
-_PUBLIC_ void ndr_print_samr_UserInfo1(struct ndr_print *ndr, const char *name, const struct samr_UserInfo1 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo2(struct ndr_print *ndr, const char *name, const struct samr_UserInfo2 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_LogonHours(struct ndr_push *ndr, int ndr_flags, const struct samr_LogonHours *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_LogonHours(struct ndr_pull *ndr, int ndr_flags, struct samr_LogonHours *r);
-_PUBLIC_ void ndr_print_samr_LogonHours(struct ndr_print *ndr, const char *name, const struct samr_LogonHours *r);
-_PUBLIC_ void ndr_print_samr_UserInfo3(struct ndr_print *ndr, const char *name, const struct samr_UserInfo3 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo4(struct ndr_print *ndr, const char *name, const struct samr_UserInfo4 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo5(struct ndr_print *ndr, const char *name, const struct samr_UserInfo5 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo6(struct ndr_print *ndr, const char *name, const struct samr_UserInfo6 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo7(struct ndr_print *ndr, const char *name, const struct samr_UserInfo7 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo8(struct ndr_print *ndr, const char *name, const struct samr_UserInfo8 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo9(struct ndr_print *ndr, const char *name, const struct samr_UserInfo9 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo10(struct ndr_print *ndr, const char *name, const struct samr_UserInfo10 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo11(struct ndr_print *ndr, const char *name, const struct samr_UserInfo11 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo12(struct ndr_print *ndr, const char *name, const struct samr_UserInfo12 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo13(struct ndr_print *ndr, const char *name, const struct samr_UserInfo13 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo14(struct ndr_print *ndr, const char *name, const struct samr_UserInfo14 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo16(struct ndr_print *ndr, const char *name, const struct samr_UserInfo16 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo17(struct ndr_print *ndr, const char *name, const struct samr_UserInfo17 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_Password(struct ndr_push *ndr, int ndr_flags, const struct samr_Password *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_Password(struct ndr_pull *ndr, int ndr_flags, struct samr_Password *r);
-_PUBLIC_ void ndr_print_samr_Password(struct ndr_print *ndr, const char *name, const struct samr_Password *r);
-_PUBLIC_ void ndr_print_samr_UserInfo18(struct ndr_print *ndr, const char *name, const struct samr_UserInfo18 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo20(struct ndr_print *ndr, const char *name, const struct samr_UserInfo20 *r);
-_PUBLIC_ void ndr_print_samr_FieldsPresent(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_UserInfo21(struct ndr_print *ndr, const char *name, const struct samr_UserInfo21 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_CryptPassword(struct ndr_push *ndr, int ndr_flags, const struct samr_CryptPassword *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_CryptPassword(struct ndr_pull *ndr, int ndr_flags, struct samr_CryptPassword *r);
-_PUBLIC_ void ndr_print_samr_CryptPassword(struct ndr_print *ndr, const char *name, const struct samr_CryptPassword *r);
-_PUBLIC_ void ndr_print_samr_UserInfo23(struct ndr_print *ndr, const char *name, const struct samr_UserInfo23 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo24(struct ndr_print *ndr, const char *name, const struct samr_UserInfo24 *r);
-_PUBLIC_ void ndr_print_samr_CryptPasswordEx(struct ndr_print *ndr, const char *name, const struct samr_CryptPasswordEx *r);
-_PUBLIC_ void ndr_print_samr_UserInfo25(struct ndr_print *ndr, const char *name, const struct samr_UserInfo25 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo26(struct ndr_print *ndr, const char *name, const struct samr_UserInfo26 *r);
-_PUBLIC_ void ndr_print_samr_UserInfo(struct ndr_print *ndr, const char *name, const union samr_UserInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_RidWithAttribute(struct ndr_push *ndr, int ndr_flags, const struct samr_RidWithAttribute *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_RidWithAttribute(struct ndr_pull *ndr, int ndr_flags, struct samr_RidWithAttribute *r);
-_PUBLIC_ void ndr_print_samr_RidWithAttribute(struct ndr_print *ndr, const char *name, const struct samr_RidWithAttribute *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_RidWithAttributeArray(struct ndr_push *ndr, int ndr_flags, const struct samr_RidWithAttributeArray *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_RidWithAttributeArray(struct ndr_pull *ndr, int ndr_flags, struct samr_RidWithAttributeArray *r);
-_PUBLIC_ void ndr_print_samr_RidWithAttributeArray(struct ndr_print *ndr, const char *name, const struct samr_RidWithAttributeArray *r);
-_PUBLIC_ void ndr_print_samr_DispEntryGeneral(struct ndr_print *ndr, const char *name, const struct samr_DispEntryGeneral *r);
-_PUBLIC_ void ndr_print_samr_DispInfoGeneral(struct ndr_print *ndr, const char *name, const struct samr_DispInfoGeneral *r);
-_PUBLIC_ void ndr_print_samr_DispEntryFull(struct ndr_print *ndr, const char *name, const struct samr_DispEntryFull *r);
-_PUBLIC_ void ndr_print_samr_DispInfoFull(struct ndr_print *ndr, const char *name, const struct samr_DispInfoFull *r);
-_PUBLIC_ void ndr_print_samr_DispEntryFullGroup(struct ndr_print *ndr, const char *name, const struct samr_DispEntryFullGroup *r);
-_PUBLIC_ void ndr_print_samr_DispInfoFullGroups(struct ndr_print *ndr, const char *name, const struct samr_DispInfoFullGroups *r);
-_PUBLIC_ void ndr_print_samr_DispEntryAscii(struct ndr_print *ndr, const char *name, const struct samr_DispEntryAscii *r);
-_PUBLIC_ void ndr_print_samr_DispInfoAscii(struct ndr_print *ndr, const char *name, const struct samr_DispInfoAscii *r);
-_PUBLIC_ void ndr_print_samr_DispInfo(struct ndr_print *ndr, const char *name, const union samr_DispInfo *r);
-_PUBLIC_ void ndr_print_samr_PwInfo(struct ndr_print *ndr, const char *name, const struct samr_PwInfo *r);
-_PUBLIC_ void ndr_print_samr_ConnectVersion(struct ndr_print *ndr, const char *name, enum samr_ConnectVersion r);
-_PUBLIC_ void ndr_print_samr_ChangeReject(struct ndr_print *ndr, const char *name, const struct samr_ChangeReject *r);
-_PUBLIC_ void ndr_print_samr_ConnectInfo1(struct ndr_print *ndr, const char *name, const struct samr_ConnectInfo1 *r);
-_PUBLIC_ void ndr_print_samr_ConnectInfo(struct ndr_print *ndr, const char *name, const union samr_ConnectInfo *r);
-_PUBLIC_ void ndr_print_samr_ValidateFieldsPresent(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordLevel(struct ndr_print *ndr, const char *name, enum samr_ValidatePasswordLevel r);
-_PUBLIC_ void ndr_print_samr_ValidationStatus(struct ndr_print *ndr, const char *name, enum samr_ValidationStatus r);
-_PUBLIC_ void ndr_print_samr_ValidationBlob(struct ndr_print *ndr, const char *name, const struct samr_ValidationBlob *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordInfo(struct ndr_print *ndr, const char *name, const struct samr_ValidatePasswordInfo *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordRepCtr(struct ndr_print *ndr, const char *name, const struct samr_ValidatePasswordRepCtr *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordRep(struct ndr_print *ndr, const char *name, const union samr_ValidatePasswordRep *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordReq3(struct ndr_print *ndr, const char *name, const struct samr_ValidatePasswordReq3 *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordReq2(struct ndr_print *ndr, const char *name, const struct samr_ValidatePasswordReq2 *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordReq1(struct ndr_print *ndr, const char *name, const struct samr_ValidatePasswordReq1 *r);
-_PUBLIC_ void ndr_print_samr_ValidatePasswordReq(struct ndr_print *ndr, const char *name, const union samr_ValidatePasswordReq *r);
-_PUBLIC_ void ndr_print_samr_Connect(struct ndr_print *ndr, const char *name, int flags, const struct samr_Connect *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_Close(struct ndr_push *ndr, int flags, const struct samr_Close *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_Close(struct ndr_pull *ndr, int flags, struct samr_Close *r);
-_PUBLIC_ void ndr_print_samr_Close(struct ndr_print *ndr, const char *name, int flags, const struct samr_Close *r);
-_PUBLIC_ void ndr_print_samr_SetSecurity(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetSecurity *r);
-_PUBLIC_ void ndr_print_samr_QuerySecurity(struct ndr_print *ndr, const char *name, int flags, const struct samr_QuerySecurity *r);
-_PUBLIC_ void ndr_print_samr_Shutdown(struct ndr_print *ndr, const char *name, int flags, const struct samr_Shutdown *r);
-_PUBLIC_ void ndr_print_samr_LookupDomain(struct ndr_print *ndr, const char *name, int flags, const struct samr_LookupDomain *r);
-_PUBLIC_ void ndr_print_samr_EnumDomains(struct ndr_print *ndr, const char *name, int flags, const struct samr_EnumDomains *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_OpenDomain(struct ndr_push *ndr, int flags, const struct samr_OpenDomain *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_OpenDomain(struct ndr_pull *ndr, int flags, struct samr_OpenDomain *r);
-_PUBLIC_ void ndr_print_samr_OpenDomain(struct ndr_print *ndr, const char *name, int flags, const struct samr_OpenDomain *r);
-_PUBLIC_ void ndr_print_samr_QueryDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryDomainInfo *r);
-_PUBLIC_ void ndr_print_samr_SetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetDomainInfo *r);
-_PUBLIC_ void ndr_print_samr_CreateDomainGroup(struct ndr_print *ndr, const char *name, int flags, const struct samr_CreateDomainGroup *r);
-_PUBLIC_ void ndr_print_samr_EnumDomainGroups(struct ndr_print *ndr, const char *name, int flags, const struct samr_EnumDomainGroups *r);
-_PUBLIC_ void ndr_print_samr_CreateUser(struct ndr_print *ndr, const char *name, int flags, const struct samr_CreateUser *r);
-_PUBLIC_ void ndr_print_samr_EnumDomainUsers(struct ndr_print *ndr, const char *name, int flags, const struct samr_EnumDomainUsers *r);
-_PUBLIC_ void ndr_print_samr_CreateDomAlias(struct ndr_print *ndr, const char *name, int flags, const struct samr_CreateDomAlias *r);
-_PUBLIC_ void ndr_print_samr_EnumDomainAliases(struct ndr_print *ndr, const char *name, int flags, const struct samr_EnumDomainAliases *r);
-_PUBLIC_ void ndr_print_samr_GetAliasMembership(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetAliasMembership *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_LookupNames(struct ndr_push *ndr, int flags, const struct samr_LookupNames *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_LookupNames(struct ndr_pull *ndr, int flags, struct samr_LookupNames *r);
-_PUBLIC_ void ndr_print_samr_LookupNames(struct ndr_print *ndr, const char *name, int flags, const struct samr_LookupNames *r);
-_PUBLIC_ void ndr_print_samr_LookupRids(struct ndr_print *ndr, const char *name, int flags, const struct samr_LookupRids *r);
-_PUBLIC_ void ndr_print_samr_OpenGroup(struct ndr_print *ndr, const char *name, int flags, const struct samr_OpenGroup *r);
-_PUBLIC_ void ndr_print_samr_QueryGroupInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryGroupInfo *r);
-_PUBLIC_ void ndr_print_samr_SetGroupInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetGroupInfo *r);
-_PUBLIC_ void ndr_print_samr_AddGroupMember(struct ndr_print *ndr, const char *name, int flags, const struct samr_AddGroupMember *r);
-_PUBLIC_ void ndr_print_samr_DeleteDomainGroup(struct ndr_print *ndr, const char *name, int flags, const struct samr_DeleteDomainGroup *r);
-_PUBLIC_ void ndr_print_samr_DeleteGroupMember(struct ndr_print *ndr, const char *name, int flags, const struct samr_DeleteGroupMember *r);
-_PUBLIC_ void ndr_print_samr_QueryGroupMember(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryGroupMember *r);
-_PUBLIC_ void ndr_print_samr_SetMemberAttributesOfGroup(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetMemberAttributesOfGroup *r);
-_PUBLIC_ void ndr_print_samr_OpenAlias(struct ndr_print *ndr, const char *name, int flags, const struct samr_OpenAlias *r);
-_PUBLIC_ void ndr_print_samr_QueryAliasInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryAliasInfo *r);
-_PUBLIC_ void ndr_print_samr_SetAliasInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetAliasInfo *r);
-_PUBLIC_ void ndr_print_samr_DeleteDomAlias(struct ndr_print *ndr, const char *name, int flags, const struct samr_DeleteDomAlias *r);
-_PUBLIC_ void ndr_print_samr_AddAliasMember(struct ndr_print *ndr, const char *name, int flags, const struct samr_AddAliasMember *r);
-_PUBLIC_ void ndr_print_samr_DeleteAliasMember(struct ndr_print *ndr, const char *name, int flags, const struct samr_DeleteAliasMember *r);
-_PUBLIC_ void ndr_print_samr_GetMembersInAlias(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetMembersInAlias *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_OpenUser(struct ndr_push *ndr, int flags, const struct samr_OpenUser *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_OpenUser(struct ndr_pull *ndr, int flags, struct samr_OpenUser *r);
-_PUBLIC_ void ndr_print_samr_OpenUser(struct ndr_print *ndr, const char *name, int flags, const struct samr_OpenUser *r);
-_PUBLIC_ void ndr_print_samr_DeleteUser(struct ndr_print *ndr, const char *name, int flags, const struct samr_DeleteUser *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_QueryUserInfo(struct ndr_push *ndr, int flags, const struct samr_QueryUserInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_QueryUserInfo(struct ndr_pull *ndr, int flags, struct samr_QueryUserInfo *r);
-_PUBLIC_ void ndr_print_samr_QueryUserInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryUserInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_SetUserInfo(struct ndr_push *ndr, int flags, const struct samr_SetUserInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_SetUserInfo(struct ndr_pull *ndr, int flags, struct samr_SetUserInfo *r);
-_PUBLIC_ void ndr_print_samr_SetUserInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetUserInfo *r);
-_PUBLIC_ void ndr_print_samr_ChangePasswordUser(struct ndr_print *ndr, const char *name, int flags, const struct samr_ChangePasswordUser *r);
-_PUBLIC_ void ndr_print_samr_GetGroupsForUser(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetGroupsForUser *r);
-_PUBLIC_ void ndr_print_samr_QueryDisplayInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryDisplayInfo *r);
-_PUBLIC_ void ndr_print_samr_GetDisplayEnumerationIndex(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetDisplayEnumerationIndex *r);
-_PUBLIC_ void ndr_print_samr_TestPrivateFunctionsDomain(struct ndr_print *ndr, const char *name, int flags, const struct samr_TestPrivateFunctionsDomain *r);
-_PUBLIC_ void ndr_print_samr_TestPrivateFunctionsUser(struct ndr_print *ndr, const char *name, int flags, const struct samr_TestPrivateFunctionsUser *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_GetUserPwInfo(struct ndr_push *ndr, int flags, const struct samr_GetUserPwInfo *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_GetUserPwInfo(struct ndr_pull *ndr, int flags, struct samr_GetUserPwInfo *r);
-_PUBLIC_ void ndr_print_samr_GetUserPwInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetUserPwInfo *r);
-_PUBLIC_ void ndr_print_samr_RemoveMemberFromForeignDomain(struct ndr_print *ndr, const char *name, int flags, const struct samr_RemoveMemberFromForeignDomain *r);
-_PUBLIC_ void ndr_print_samr_QueryDomainInfo2(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryDomainInfo2 *r);
-_PUBLIC_ void ndr_print_samr_QueryUserInfo2(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryUserInfo2 *r);
-_PUBLIC_ void ndr_print_samr_QueryDisplayInfo2(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryDisplayInfo2 *r);
-_PUBLIC_ void ndr_print_samr_GetDisplayEnumerationIndex2(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetDisplayEnumerationIndex2 *r);
-_PUBLIC_ void ndr_print_samr_CreateUser2(struct ndr_print *ndr, const char *name, int flags, const struct samr_CreateUser2 *r);
-_PUBLIC_ void ndr_print_samr_QueryDisplayInfo3(struct ndr_print *ndr, const char *name, int flags, const struct samr_QueryDisplayInfo3 *r);
-_PUBLIC_ void ndr_print_samr_AddMultipleMembersToAlias(struct ndr_print *ndr, const char *name, int flags, const struct samr_AddMultipleMembersToAlias *r);
-_PUBLIC_ void ndr_print_samr_RemoveMultipleMembersFromAlias(struct ndr_print *ndr, const char *name, int flags, const struct samr_RemoveMultipleMembersFromAlias *r);
-_PUBLIC_ void ndr_print_samr_OemChangePasswordUser2(struct ndr_print *ndr, const char *name, int flags, const struct samr_OemChangePasswordUser2 *r);
-_PUBLIC_ void ndr_print_samr_ChangePasswordUser2(struct ndr_print *ndr, const char *name, int flags, const struct samr_ChangePasswordUser2 *r);
-_PUBLIC_ void ndr_print_samr_GetDomPwInfo(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetDomPwInfo *r);
-_PUBLIC_ void ndr_print_samr_Connect2(struct ndr_print *ndr, const char *name, int flags, const struct samr_Connect2 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_SetUserInfo2(struct ndr_push *ndr, int flags, const struct samr_SetUserInfo2 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_SetUserInfo2(struct ndr_pull *ndr, int flags, struct samr_SetUserInfo2 *r);
-_PUBLIC_ void ndr_print_samr_SetUserInfo2(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetUserInfo2 *r);
-_PUBLIC_ void ndr_print_samr_SetBootKeyInformation(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetBootKeyInformation *r);
-_PUBLIC_ void ndr_print_samr_GetBootKeyInformation(struct ndr_print *ndr, const char *name, int flags, const struct samr_GetBootKeyInformation *r);
-_PUBLIC_ void ndr_print_samr_Connect3(struct ndr_print *ndr, const char *name, int flags, const struct samr_Connect3 *r);
-_PUBLIC_ void ndr_print_samr_Connect4(struct ndr_print *ndr, const char *name, int flags, const struct samr_Connect4 *r);
-_PUBLIC_ void ndr_print_samr_ChangePasswordUser3(struct ndr_print *ndr, const char *name, int flags, const struct samr_ChangePasswordUser3 *r);
-_PUBLIC_ enum ndr_err_code ndr_push_samr_Connect5(struct ndr_push *ndr, int flags, const struct samr_Connect5 *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_samr_Connect5(struct ndr_pull *ndr, int flags, struct samr_Connect5 *r);
-_PUBLIC_ void ndr_print_samr_Connect5(struct ndr_print *ndr, const char *name, int flags, const struct samr_Connect5 *r);
-_PUBLIC_ void ndr_print_samr_RidToSid(struct ndr_print *ndr, const char *name, int flags, const struct samr_RidToSid *r);
-_PUBLIC_ void ndr_print_samr_SetDsrmPassword(struct ndr_print *ndr, const char *name, int flags, const struct samr_SetDsrmPassword *r);
-_PUBLIC_ void ndr_print_samr_ValidatePassword(struct ndr_print *ndr, const char *name, int flags, const struct samr_ValidatePassword *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_security.c  */
-
-_PUBLIC_ void ndr_print_security_ace_flags(struct ndr_print *ndr, const char *name, uint8_t r);
-_PUBLIC_ void ndr_print_security_ace_type(struct ndr_print *ndr, const char *name, enum security_ace_type r);
-_PUBLIC_ void ndr_print_security_ace_object_flags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_security_ace_object_type(struct ndr_print *ndr, const char *name, const union security_ace_object_type *r);
-_PUBLIC_ void ndr_print_security_ace_object_inherited_type(struct ndr_print *ndr, const char *name, const union security_ace_object_inherited_type *r);
-_PUBLIC_ void ndr_print_security_ace_object(struct ndr_print *ndr, const char *name, const struct security_ace_object *r);
-_PUBLIC_ void ndr_print_security_ace_object_ctr(struct ndr_print *ndr, const char *name, const union security_ace_object_ctr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_security_ace(struct ndr_push *ndr, int ndr_flags, const struct security_ace *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_security_ace(struct ndr_pull *ndr, int ndr_flags, struct security_ace *r);
-_PUBLIC_ void ndr_print_security_ace(struct ndr_print *ndr, const char *name, const struct security_ace *r);
-_PUBLIC_ void ndr_print_security_acl_revision(struct ndr_print *ndr, const char *name, enum security_acl_revision r);
-_PUBLIC_ enum ndr_err_code ndr_push_security_acl(struct ndr_push *ndr, int ndr_flags, const struct security_acl *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_flags, struct security_acl *r);
-_PUBLIC_ void ndr_print_security_acl(struct ndr_print *ndr, const char *name, const struct security_acl *r);
-_PUBLIC_ void ndr_print_security_descriptor_revision(struct ndr_print *ndr, const char *name, enum security_descriptor_revision r);
-_PUBLIC_ void ndr_print_security_descriptor_type(struct ndr_print *ndr, const char *name, uint16_t r);
-_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r);
-_PUBLIC_ void ndr_print_security_descriptor(struct ndr_print *ndr, const char *name, const struct security_descriptor *r);
-_PUBLIC_ enum ndr_err_code ndr_push_sec_desc_buf(struct ndr_push *ndr, int ndr_flags, const struct sec_desc_buf *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_sec_desc_buf(struct ndr_pull *ndr, int ndr_flags, struct sec_desc_buf *r);
-_PUBLIC_ void ndr_print_sec_desc_buf(struct ndr_print *ndr, const char *name, const struct sec_desc_buf *r);
-_PUBLIC_ enum ndr_err_code ndr_push_security_token(struct ndr_push *ndr, int ndr_flags, const struct security_token *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_security_token(struct ndr_pull *ndr, int ndr_flags, struct security_token *r);
-_PUBLIC_ void ndr_print_security_token(struct ndr_print *ndr, const char *name, const struct security_token *r);
-_PUBLIC_ enum ndr_err_code ndr_push_security_secinfo(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_security_secinfo(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_security_secinfo(struct ndr_print *ndr, const char *name, uint32_t r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_srvsvc.c  */
-
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevCtr0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevInfo1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevCtr1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQCtr0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfo1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQCtr1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevQInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevQCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnCtr0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfo1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnCtr1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetConnCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfoCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfo2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileCtr2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfo3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfo3 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileCtr3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileCtr3 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetFileInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetFileCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfoCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo10(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo10 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr10(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr10 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo502 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr502 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetSessCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfoCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_ShareType(struct ndr_print *ndr, const char *name, enum srvsvc_ShareType r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo501 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr501 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo502 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr502 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1004(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1004 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1004(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1004 *r);
-_PUBLIC_ void ndr_print_NetShareInfo1005Flags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1005(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1005 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1005(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1005 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1006(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1006 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1006(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1006 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo1007(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo1007 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1007(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1007 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr1501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr1501 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetShareInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetShareCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfoCtr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_srvsvc_PlatformId(struct ndr_push *ndr, int ndr_flags, enum srvsvc_PlatformId r);
-_PUBLIC_ enum ndr_err_code ndr_pull_srvsvc_PlatformId(struct ndr_pull *ndr, int ndr_flags, enum srvsvc_PlatformId *r);
-_PUBLIC_ void ndr_print_srvsvc_PlatformId(struct ndr_print *ndr, const char *name, enum srvsvc_PlatformId r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo100(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo100 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo101(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo101 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo102(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo102 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo402(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo402 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo403(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo403 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo502 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo503(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo503 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo599(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo599 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1005(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1005 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1010(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1010 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1016(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1016 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1017(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1017 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1018(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1018 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1107(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1107 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1501(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1501 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1502 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1503(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1503 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1506(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1506 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1509(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1509 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1510(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1510 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1511(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1511 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1512(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1512 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1513(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1513 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1514(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1514 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1515(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1515 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1516(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1516 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1518(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1518 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1520(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1520 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1521(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1521 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1522(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1522 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1523(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1523 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1524(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1524 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1525(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1525 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1528(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1528 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1529(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1529 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1530(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1530 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1533(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1533 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1534(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1534 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1535(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1535 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1536(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1536 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1537(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1537 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1538(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1538 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1539(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1539 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1540(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1540 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1541(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1541 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1542(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1542 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1543(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1543 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1544(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1544 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1545(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1545 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1546(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1546 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1547(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1547 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1548(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1548 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1549(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1549 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1550(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1550 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1552(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1552 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1553(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1553 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1554(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1554 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1555(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1555 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo1556(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSrvInfo1556 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetSrvInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetDiskInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetDiskInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetDiskInfo(struct ndr_print *ndr, const char *name, const struct srvsvc_NetDiskInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_Statistics(struct ndr_print *ndr, const char *name, const struct srvsvc_Statistics *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr0 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr1 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr2(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr2 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo3 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr3 *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetTransportCtr *r);
-_PUBLIC_ void ndr_print_srvsvc_NetRemoteTODInfo(struct ndr_print *ndr, const char *name, const struct srvsvc_NetRemoteTODInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetTransportInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevGetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevControl(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevControl *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQGetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQSetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQPurge(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQPurge *r);
-_PUBLIC_ void ndr_print_srvsvc_NetCharDevQPurgeSelf(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevQPurgeSelf *r);
-_PUBLIC_ void ndr_print_srvsvc_NetConnEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetConnEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetFileEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetFileGetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetFileClose(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetFileClose *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSessEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSessDel(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSessDel *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareAdd(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareAdd *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareEnumAll(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareEnumAll *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareGetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareSetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareDel(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDel *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareDelSticky(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDelSticky *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareCheck(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareCheck *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSrvGetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSrvSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSrvSetInfo *r);
-_PUBLIC_ void ndr_print_srvsvc_NetDiskEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetDiskEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetServerStatisticsGet(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetServerStatisticsGet *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportAdd(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetTransportAdd *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetTransportEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetTransportDel(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetTransportDel *r);
-_PUBLIC_ void ndr_print_srvsvc_NetRemoteTOD(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetRemoteTOD *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSetServiceBits(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSetServiceBits *r);
-_PUBLIC_ void ndr_print_srvsvc_NetPathType(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPathType *r);
-_PUBLIC_ void ndr_print_srvsvc_NetPathCanonicalize(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPathCanonicalize *r);
-_PUBLIC_ void ndr_print_srvsvc_NetPathCompare(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPathCompare *r);
-_PUBLIC_ void ndr_print_srvsvc_NetNameValidate(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetNameValidate *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRPRNAMECANONICALIZE(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRPRNAMECANONICALIZE *r);
-_PUBLIC_ void ndr_print_srvsvc_NetPRNameCompare(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetPRNameCompare *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareEnum *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareDelStart(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDelStart *r);
-_PUBLIC_ void ndr_print_srvsvc_NetShareDelCommit(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetShareDelCommit *r);
-_PUBLIC_ void ndr_print_srvsvc_NetGetFileSecurity(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetGetFileSecurity *r);
-_PUBLIC_ void ndr_print_srvsvc_NetSetFileSecurity(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetSetFileSecurity *r);
-_PUBLIC_ void ndr_print_srvsvc_NetServerTransportAddEx(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetServerTransportAddEx *r);
-_PUBLIC_ void ndr_print_srvsvc_NetServerSetServiceBitsEx(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetServerSetServiceBitsEx *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSGETVERSION(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSGETVERSION *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSCREATELOCALPARTITION(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSCREATELOCALPARTITION *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSDELETELOCALPARTITION(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSDELETELOCALPARTITION *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSSETSERVERINFO(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSSETSERVERINFO *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSCREATEEXITPOINT(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSCREATEEXITPOINT *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSDELETEEXITPOINT(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSDELETEEXITPOINT *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSMODIFYPREFIX(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSMODIFYPREFIX *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSFIXLOCALVOLUME(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSFIXLOCALVOLUME *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r);
-_PUBLIC_ void ndr_print_srvsvc_NETRSERVERTRANSPORTDELEX(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NETRSERVERTRANSPORTDELEX *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_svcctl.c  */
-
-_PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r);
-_PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r);
-_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r);
-_PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-_PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-_PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r);
-_PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r);
-_PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r);
-_PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r);
-_PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r);
-_PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r);
-_PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r);
-_PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r);
-_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r);
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r);
-_PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r);
-_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r);
-_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r);
-_PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r);
-_PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r);
-_PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r);
-_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r);
-_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r);
-_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r);
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r);
-_PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r);
-_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r);
-_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r);
-_PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r);
-_PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r);
-_PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r);
-_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r);
-_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r);
-_PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r);
-_PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r);
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r);
-_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r);
-_PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r);
-_PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r);
-_PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r);
-_PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_winreg.c  */
-
-_PUBLIC_ void ndr_print_winreg_AccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enum winreg_Type r);
-_PUBLIC_ enum ndr_err_code ndr_push_winreg_String(struct ndr_push *ndr, int ndr_flags, const struct winreg_String *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_winreg_String(struct ndr_pull *ndr, int ndr_flags, struct winreg_String *r);
-_PUBLIC_ void ndr_print_winreg_String(struct ndr_print *ndr, const char *name, const struct winreg_String *r);
-_PUBLIC_ void ndr_print_KeySecurityData(struct ndr_print *ndr, const char *name, const struct KeySecurityData *r);
-_PUBLIC_ void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, const struct winreg_SecBuf *r);
-_PUBLIC_ void ndr_print_winreg_CreateAction(struct ndr_print *ndr, const char *name, enum winreg_CreateAction r);
-_PUBLIC_ void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name, const struct winreg_StringBuf *r);
-_PUBLIC_ void ndr_print_winreg_ValNameBuf(struct ndr_print *ndr, const char *name, const struct winreg_ValNameBuf *r);
-_PUBLIC_ void ndr_print_KeySecurityAttribute(struct ndr_print *ndr, const char *name, const struct KeySecurityAttribute *r);
-_PUBLIC_ void ndr_print_QueryMultipleValue(struct ndr_print *ndr, const char *name, const struct QueryMultipleValue *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKCR(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCR *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKCU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCU *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKLM(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKLM *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKPD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPD *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKU *r);
-_PUBLIC_ void ndr_print_winreg_CloseKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CloseKey *r);
-_PUBLIC_ void ndr_print_winreg_CreateKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CreateKey *r);
-_PUBLIC_ void ndr_print_winreg_DeleteKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteKey *r);
-_PUBLIC_ void ndr_print_winreg_DeleteValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteValue *r);
-_PUBLIC_ void ndr_print_winreg_EnumKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumKey *r);
-_PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumValue *r);
-_PUBLIC_ void ndr_print_winreg_FlushKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_FlushKey *r);
-_PUBLIC_ void ndr_print_winreg_GetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetKeySecurity *r);
-_PUBLIC_ void ndr_print_winreg_LoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_LoadKey *r);
-_PUBLIC_ void ndr_print_winreg_NotifyChangeKeyValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_NotifyChangeKeyValue *r);
-_PUBLIC_ void ndr_print_winreg_OpenKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenKey *r);
-_PUBLIC_ void ndr_print_winreg_QueryInfoKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryInfoKey *r);
-_PUBLIC_ void ndr_print_winreg_QueryValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryValue *r);
-_PUBLIC_ void ndr_print_winreg_ReplaceKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_ReplaceKey *r);
-_PUBLIC_ void ndr_print_winreg_RestoreKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_RestoreKey *r);
-_PUBLIC_ void ndr_print_winreg_SaveKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKey *r);
-_PUBLIC_ void ndr_print_winreg_SetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetKeySecurity *r);
-_PUBLIC_ void ndr_print_winreg_SetValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetValue *r);
-_PUBLIC_ void ndr_print_winreg_UnLoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_UnLoadKey *r);
-_PUBLIC_ void ndr_print_winreg_InitiateSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdown *r);
-_PUBLIC_ void ndr_print_winreg_AbortSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_AbortSystemShutdown *r);
-_PUBLIC_ void ndr_print_winreg_GetVersion(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetVersion *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKCC(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCC *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKDD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKDD *r);
-_PUBLIC_ void ndr_print_winreg_QueryMultipleValues(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues *r);
-_PUBLIC_ void ndr_print_winreg_InitiateSystemShutdownEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdownEx *r);
-_PUBLIC_ void ndr_print_winreg_SaveKeyEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKeyEx *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKPT(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPT *r);
-_PUBLIC_ void ndr_print_winreg_OpenHKPN(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPN *r);
-_PUBLIC_ void ndr_print_winreg_QueryMultipleValues2(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues2 *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_wkssvc.c  */
-
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo100(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo100 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo101(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo101 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo102(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo102 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo502(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo502 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1010(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1010 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1011(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1011 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1012(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1012 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1013(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1013 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1018(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1018 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1023(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1023 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1027(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1027 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1028(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1028 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1032(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1032 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1033(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1033 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1041(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1041 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1042(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1042 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1043(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1043 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1044(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1044 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1045(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1045 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1046(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1046 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1047(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1047 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1048(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1048 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1049(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1049 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1050(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1050 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1051(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1051 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1052(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1052 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1053(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1053 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1054(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1054 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1055(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1055 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1056(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1056 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1057(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1057 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1058(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1058 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1059(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1059 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1060(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1060 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1061(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1061 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo1062(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaInfo1062 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaInfo(struct ndr_print *ndr, const char *name, const union wkssvc_NetWkstaInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaUserInfo0(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrWkstaUserInfo0 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaEnumUsersCtr0(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaEnumUsersCtr0 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaUserInfo1(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrWkstaUserInfo1 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaEnumUsersCtr1(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaEnumUsersCtr1 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaEnumUsersCtr(struct ndr_print *ndr, const char *name, const union wkssvc_NetWkstaEnumUsersCtr *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaEnumUsersInfo(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaEnumUsersInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaUserInfo1101(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrWkstaUserInfo1101 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaUserInfo(struct ndr_print *ndr, const char *name, const union wkssvc_NetrWkstaUserInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportInfo0(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaTransportInfo0 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportCtr0(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaTransportCtr0 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportCtr(struct ndr_print *ndr, const char *name, const union wkssvc_NetWkstaTransportCtr *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportInfo(struct ndr_print *ndr, const char *name, const struct wkssvc_NetWkstaTransportInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseInfo3(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseInfo3 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseInfo2(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseInfo2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseInfo1(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseInfo1 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseInfo0(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseInfo0 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseGetInfoCtr(struct ndr_print *ndr, const char *name, const union wkssvc_NetrUseGetInfoCtr *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseEnumCtr2(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseEnumCtr2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseEnumCtr1(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseEnumCtr1 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseEnumCtr0(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseEnumCtr0 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseEnumCtr(struct ndr_print *ndr, const char *name, const union wkssvc_NetrUseEnumCtr *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseEnumInfo(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrUseEnumInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWorkstationStatistics(struct ndr_print *ndr, const char *name, const struct wkssvc_NetrWorkstationStatistics *r);
-_PUBLIC_ void ndr_print_wkssvc_renameflags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_wkssvc_NetValidateNameType(struct ndr_print *ndr, const char *name, enum wkssvc_NetValidateNameType r);
-_PUBLIC_ void ndr_print_wkssvc_NetJoinStatus(struct ndr_print *ndr, const char *name, enum wkssvc_NetJoinStatus r);
-_PUBLIC_ void ndr_print_wkssvc_PasswordBuffer(struct ndr_print *ndr, const char *name, const struct wkssvc_PasswordBuffer *r);
-_PUBLIC_ void ndr_print_wkssvc_joinflags(struct ndr_print *ndr, const char *name, uint32_t r);
-_PUBLIC_ void ndr_print_wkssvc_ComputerNameType(struct ndr_print *ndr, const char *name, enum wkssvc_ComputerNameType r);
-_PUBLIC_ void ndr_print_wkssvc_ComputerNamesCtr(struct ndr_print *ndr, const char *name, const struct wkssvc_ComputerNamesCtr *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetWkstaGetInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetWkstaSetInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaEnumUsers(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetWkstaEnumUsers *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaUserGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrWkstaUserGetInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaUserSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrWkstaUserSetInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetWkstaTransportEnum(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetWkstaTransportEnum *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaTransportAdd(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrWkstaTransportAdd *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWkstaTransportDel(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrWkstaTransportDel *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseAdd(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrUseAdd *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrUseGetInfo *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseDel(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrUseDel *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUseEnum(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrUseEnum *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrMessageBufferSend(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrMessageBufferSend *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrWorkstationStatisticsGet(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrWorkstationStatisticsGet *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrLogonDomainNameAdd(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrLogonDomainNameAdd *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrLogonDomainNameDel(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrLogonDomainNameDel *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrJoinDomain(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrJoinDomain *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUnjoinDomain(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrUnjoinDomain *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrRenameMachineInDomain(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrRenameMachineInDomain *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrValidateName(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrValidateName *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrGetJoinInformation(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrGetJoinInformation *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrGetJoinableOus(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrGetJoinableOus *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrJoinDomain2(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrJoinDomain2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrUnjoinDomain2(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrUnjoinDomain2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrRenameMachineInDomain2(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrRenameMachineInDomain2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrValidateName2(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrValidateName2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrGetJoinableOus2(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrGetJoinableOus2 *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrAddAlternateComputerName(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrAddAlternateComputerName *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrRemoveAlternateComputerName(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrRemoveAlternateComputerName *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrSetPrimaryComputername(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrSetPrimaryComputername *r);
-_PUBLIC_ void ndr_print_wkssvc_NetrEnumerateComputerNames(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrEnumerateComputerNames *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_xattr.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattr(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattr *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattr(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattr *r);
-_PUBLIC_ void ndr_print_tdb_xattr(struct ndr_print *ndr, const char *name, const struct tdb_xattr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattrs *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattrs *r);
-_PUBLIC_ void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, const struct tdb_xattrs *r);
-
-/* The following definitions come from librpc/gen_ndr/srv_dfs.c  */
-
-void netdfs_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_netdfs_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_dssetup.c  */
-
-void dssetup_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_dssetup_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_echo.c  */
-
-void rpcecho_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_rpcecho_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_eventlog.c  */
-
-void eventlog_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_eventlog_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_initshutdown.c  */
-
-void initshutdown_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_initshutdown_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_lsa.c  */
-
-void lsarpc_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_lsarpc_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_netlogon.c  */
-
-void netlogon_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_netlogon_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_ntsvcs.c  */
-
-void ntsvcs_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_ntsvcs_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_samr.c  */
-
-void samr_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_samr_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_srvsvc.c  */
-
-void srvsvc_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_srvsvc_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_svcctl.c  */
-
-void svcctl_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_svcctl_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_winreg.c  */
-
-void winreg_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_winreg_init(void);
-
-/* The following definitions come from librpc/gen_ndr/srv_wkssvc.c  */
-
-void wkssvc_get_pipe_fns(struct api_struct **fns, int *n_fns);
-NTSTATUS rpc_wkssvc_init(void);
-
-/* The following definitions come from librpc/ndr/ndr.c  */
-
-_PUBLIC_ size_t ndr_align_size(uint32_t offset, size_t n);
-_PUBLIC_ struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx);
-_PUBLIC_ enum ndr_err_code ndr_pull_advance(struct ndr_pull *ndr, uint32_t size);
-_PUBLIC_ void ndr_pull_save(struct ndr_pull *ndr, struct ndr_pull_save *save);
-_PUBLIC_ void ndr_pull_restore(struct ndr_pull *ndr, struct ndr_pull_save *save);
-_PUBLIC_ struct ndr_push *ndr_push_init_ctx(TALLOC_CTX *mem_ctx);
-_PUBLIC_ DATA_BLOB ndr_push_blob(struct ndr_push *ndr);
-_PUBLIC_ enum ndr_err_code ndr_push_expand(struct ndr_push *ndr, uint32_t extra_size);
-_PUBLIC_ void ndr_print_debug_helper(struct ndr_print *ndr, const char *format, ...) _PRINTF_ATTRIBUTE(2,3);
-_PUBLIC_ void ndr_print_string_helper(struct ndr_print *ndr, const char *format, ...) _PRINTF_ATTRIBUTE(2,3);
-_PUBLIC_ void ndr_print_debug(ndr_print_fn_t fn, const char *name, void *ptr);
-_PUBLIC_ void ndr_print_union_debug(ndr_print_fn_t fn, const char *name, uint32_t level, void *ptr);
-_PUBLIC_ void ndr_print_function_debug(ndr_print_function_t fn, const char *name, int flags, void *ptr);
-_PUBLIC_ char *ndr_print_struct_string(TALLOC_CTX *mem_ctx, ndr_print_fn_t fn, const char *name, void *ptr);
-_PUBLIC_ char *ndr_print_union_string(TALLOC_CTX *mem_ctx, ndr_print_fn_t fn, const char *name, uint32_t level, void *ptr);
-_PUBLIC_ char *ndr_print_function_string(TALLOC_CTX *mem_ctx,
-				ndr_print_function_t fn, const char *name, 
-				int flags, void *ptr);
-_PUBLIC_ void ndr_set_flags(uint32_t *pflags, uint32_t new_flags);
-NTSTATUS ndr_map_error2ntstatus(enum ndr_err_code ndr_err);
-const char *ndr_errstr(enum ndr_err_code err);
-_PUBLIC_ enum ndr_err_code ndr_pull_error(struct ndr_pull *ndr,
-				 enum ndr_err_code ndr_err,
-				 const char *format, ...) _PRINTF_ATTRIBUTE(3,4);
-_PUBLIC_ enum ndr_err_code ndr_push_error(struct ndr_push *ndr,
-				 enum ndr_err_code ndr_err,
-				 const char *format, ...)  _PRINTF_ATTRIBUTE(3,4);
-_PUBLIC_ enum ndr_err_code ndr_pull_subcontext_start(struct ndr_pull *ndr,
-				   struct ndr_pull **_subndr,
-				   size_t header_size,
-				   ssize_t size_is);
-_PUBLIC_ enum ndr_err_code ndr_pull_subcontext_end(struct ndr_pull *ndr,
-				 struct ndr_pull *subndr,
-				 size_t header_size,
-				 ssize_t size_is);
-_PUBLIC_ enum ndr_err_code ndr_push_subcontext_start(struct ndr_push *ndr,
-				   struct ndr_push **_subndr,
-				   size_t header_size,
-				   ssize_t size_is);
-_PUBLIC_ enum ndr_err_code ndr_push_subcontext_end(struct ndr_push *ndr,
-				 struct ndr_push *subndr,
-				 size_t header_size,
-				 ssize_t size_is);
-_PUBLIC_ enum ndr_err_code ndr_token_store(TALLOC_CTX *mem_ctx,
-			 struct ndr_token_list **list, 
-			 const void *key, 
-			 uint32_t value);
-_PUBLIC_ enum ndr_err_code ndr_token_retrieve_cmp_fn(struct ndr_token_list **list, const void *key, uint32_t *v,
-				   comparison_fn_t _cmp_fn, bool _remove_tok);
-_PUBLIC_ enum ndr_err_code ndr_token_retrieve(struct ndr_token_list **list, const void *key, uint32_t *v);
-_PUBLIC_ uint32_t ndr_token_peek(struct ndr_token_list **list, const void *key);
-_PUBLIC_ enum ndr_err_code ndr_pull_array_size(struct ndr_pull *ndr, const void *p);
-_PUBLIC_ uint32_t ndr_get_array_size(struct ndr_pull *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_check_array_size(struct ndr_pull *ndr, void *p, uint32_t size);
-_PUBLIC_ enum ndr_err_code ndr_pull_array_length(struct ndr_pull *ndr, const void *p);
-_PUBLIC_ uint32_t ndr_get_array_length(struct ndr_pull *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_check_array_length(struct ndr_pull *ndr, void *p, uint32_t length);
-_PUBLIC_ enum ndr_err_code ndr_push_set_switch_value(struct ndr_push *ndr, const void *p, uint32_t val);
-_PUBLIC_ enum ndr_err_code ndr_pull_set_switch_value(struct ndr_pull *ndr, const void *p, uint32_t val);
-_PUBLIC_ enum ndr_err_code ndr_print_set_switch_value(struct ndr_print *ndr, const void *p, uint32_t val);
-_PUBLIC_ uint32_t ndr_push_get_switch_value(struct ndr_push *ndr, const void *p);
-_PUBLIC_ uint32_t ndr_pull_get_switch_value(struct ndr_pull *ndr, const void *p);
-_PUBLIC_ uint32_t ndr_print_get_switch_value(struct ndr_print *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_pull_struct_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p,
-			      ndr_pull_flags_fn_t fn);
-_PUBLIC_ enum ndr_err_code ndr_pull_struct_blob_all(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p,
-				  ndr_pull_flags_fn_t fn);
-_PUBLIC_ enum ndr_err_code ndr_pull_union_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p,
-			     uint32_t level, ndr_pull_flags_fn_t fn);
-_PUBLIC_ enum ndr_err_code ndr_pull_union_blob_all(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p,
-			     uint32_t level, ndr_pull_flags_fn_t fn);
-_PUBLIC_ enum ndr_err_code ndr_push_struct_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, const void *p,
-			      ndr_push_flags_fn_t fn);
-_PUBLIC_ enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p,
-			     uint32_t level, ndr_push_flags_fn_t fn);
-_PUBLIC_ size_t ndr_size_struct(const void *p, int flags, ndr_push_flags_fn_t push);
-_PUBLIC_ size_t ndr_size_union(const void *p, int flags, uint32_t level, ndr_push_flags_fn_t push);
-_PUBLIC_ uint32_t ndr_push_get_relative_base_offset(struct ndr_push *ndr);
-_PUBLIC_ void ndr_push_restore_relative_base_offset(struct ndr_push *ndr, uint32_t offset);
-_PUBLIC_ enum ndr_err_code ndr_push_setup_relative_base_offset1(struct ndr_push *ndr, const void *p, uint32_t offset);
-_PUBLIC_ enum ndr_err_code ndr_push_setup_relative_base_offset2(struct ndr_push *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_push_relative_ptr1(struct ndr_push *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2(struct ndr_push *ndr, const void *p);
-_PUBLIC_ uint32_t ndr_pull_get_relative_base_offset(struct ndr_pull *ndr);
-_PUBLIC_ void ndr_pull_restore_relative_base_offset(struct ndr_pull *ndr, uint32_t offset);
-_PUBLIC_ enum ndr_err_code ndr_pull_setup_relative_base_offset1(struct ndr_pull *ndr, const void *p, uint32_t offset);
-_PUBLIC_ enum ndr_err_code ndr_pull_setup_relative_base_offset2(struct ndr_pull *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_pull_relative_ptr1(struct ndr_pull *ndr, const void *p, uint32_t rel_offset);
-_PUBLIC_ enum ndr_err_code ndr_pull_relative_ptr2(struct ndr_pull *ndr, const void *p);
-
-/* The following definitions come from librpc/ndr/ndr_basic.c  */
-
-_PUBLIC_ void ndr_check_padding(struct ndr_pull *ndr, size_t n);
-_PUBLIC_ enum ndr_err_code ndr_pull_int8(struct ndr_pull *ndr, int ndr_flags, int8_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_uint8(struct ndr_pull *ndr, int ndr_flags, uint8_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_int16(struct ndr_pull *ndr, int ndr_flags, int16_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_uint16(struct ndr_pull *ndr, int ndr_flags, uint16_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_int32(struct ndr_pull *ndr, int ndr_flags, int32_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_uint32(struct ndr_pull *ndr, int ndr_flags, uint32_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_generic_ptr(struct ndr_pull *ndr, uint32_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_ref_ptr(struct ndr_pull *ndr, uint32_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_udlong(struct ndr_pull *ndr, int ndr_flags, uint64_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_udlongr(struct ndr_pull *ndr, int ndr_flags, uint64_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_dlong(struct ndr_pull *ndr, int ndr_flags, int64_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_hyper(struct ndr_pull *ndr, int ndr_flags, uint64_t *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_pointer(struct ndr_pull *ndr, int ndr_flags, void* *v);
-_PUBLIC_ enum ndr_err_code ndr_pull_NTSTATUS(struct ndr_pull *ndr, int ndr_flags, NTSTATUS *status);
-_PUBLIC_ enum ndr_err_code ndr_push_NTSTATUS(struct ndr_push *ndr, int ndr_flags, NTSTATUS status);
-_PUBLIC_ void ndr_print_NTSTATUS(struct ndr_print *ndr, const char *name, NTSTATUS r);
-_PUBLIC_ enum ndr_err_code ndr_pull_WERROR(struct ndr_pull *ndr, int ndr_flags, WERROR *status);
-_PUBLIC_ enum ndr_err_code ndr_push_WERROR(struct ndr_push *ndr, int ndr_flags, WERROR status);
-_PUBLIC_ void ndr_print_WERROR(struct ndr_print *ndr, const char *name, WERROR r);
-_PUBLIC_ enum ndr_err_code ndr_pull_bytes(struct ndr_pull *ndr, uint8_t *data, uint32_t n);
-_PUBLIC_ enum ndr_err_code ndr_pull_array_uint8(struct ndr_pull *ndr, int ndr_flags, uint8_t *data, uint32_t n);
-_PUBLIC_ enum ndr_err_code ndr_push_int8(struct ndr_push *ndr, int ndr_flags, int8_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_uint8(struct ndr_push *ndr, int ndr_flags, uint8_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_int16(struct ndr_push *ndr, int ndr_flags, int16_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_uint16(struct ndr_push *ndr, int ndr_flags, uint16_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_int32(struct ndr_push *ndr, int ndr_flags, int32_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_uint32(struct ndr_push *ndr, int ndr_flags, uint32_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_udlong(struct ndr_push *ndr, int ndr_flags, uint64_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_udlongr(struct ndr_push *ndr, int ndr_flags, uint64_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_dlong(struct ndr_push *ndr, int ndr_flags, int64_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_hyper(struct ndr_push *ndr, int ndr_flags, uint64_t v);
-_PUBLIC_ enum ndr_err_code ndr_push_pointer(struct ndr_push *ndr, int ndr_flags, void* v);
-_PUBLIC_ enum ndr_err_code ndr_push_align(struct ndr_push *ndr, size_t size);
-_PUBLIC_ enum ndr_err_code ndr_pull_align(struct ndr_pull *ndr, size_t size);
-_PUBLIC_ enum ndr_err_code ndr_push_bytes(struct ndr_push *ndr, const uint8_t *data, uint32_t n);
-_PUBLIC_ enum ndr_err_code ndr_push_zero(struct ndr_push *ndr, uint32_t n);
-_PUBLIC_ enum ndr_err_code ndr_push_array_uint8(struct ndr_push *ndr, int ndr_flags, const uint8_t *data, uint32_t n);
-_PUBLIC_ void ndr_push_save(struct ndr_push *ndr, struct ndr_push_save *save);
-_PUBLIC_ void ndr_push_restore(struct ndr_push *ndr, struct ndr_push_save *save);
-_PUBLIC_ enum ndr_err_code ndr_push_unique_ptr(struct ndr_push *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_push_full_ptr(struct ndr_push *ndr, const void *p);
-_PUBLIC_ enum ndr_err_code ndr_push_ref_ptr(struct ndr_push *ndr);
-_PUBLIC_ enum ndr_err_code ndr_push_NTTIME(struct ndr_push *ndr, int ndr_flags, NTTIME t);
-_PUBLIC_ enum ndr_err_code ndr_pull_NTTIME(struct ndr_pull *ndr, int ndr_flags, NTTIME *t);
-_PUBLIC_ enum ndr_err_code ndr_push_NTTIME_1sec(struct ndr_push *ndr, int ndr_flags, NTTIME t);
-_PUBLIC_ enum ndr_err_code ndr_pull_NTTIME_1sec(struct ndr_pull *ndr, int ndr_flags, NTTIME *t);
-_PUBLIC_ enum ndr_err_code ndr_pull_NTTIME_hyper(struct ndr_pull *ndr, int ndr_flags, NTTIME *t);
-_PUBLIC_ enum ndr_err_code ndr_push_NTTIME_hyper(struct ndr_push *ndr, int ndr_flags, NTTIME t);
-_PUBLIC_ enum ndr_err_code ndr_push_time_t(struct ndr_push *ndr, int ndr_flags, time_t t);
-_PUBLIC_ enum ndr_err_code ndr_pull_time_t(struct ndr_pull *ndr, int ndr_flags, time_t *t);
-_PUBLIC_ enum ndr_err_code ndr_pull_ipv4address(struct ndr_pull *ndr, int ndr_flags, const char **address);
-_PUBLIC_ enum ndr_err_code ndr_push_ipv4address(struct ndr_push *ndr, int ndr_flags, const char *address);
-_PUBLIC_ void ndr_print_ipv4address(struct ndr_print *ndr, const char *name, 
-			   const char *address);
-_PUBLIC_ void ndr_print_struct(struct ndr_print *ndr, const char *name, const char *type);
-_PUBLIC_ void ndr_print_enum(struct ndr_print *ndr, const char *name, const char *type, 
-		    const char *val, uint32_t value);
-_PUBLIC_ void ndr_print_bitmap_flag(struct ndr_print *ndr, size_t size, const char *flag_name, uint32_t flag, uint32_t value);
-_PUBLIC_ void ndr_print_int8(struct ndr_print *ndr, const char *name, int8_t v);
-_PUBLIC_ void ndr_print_uint8(struct ndr_print *ndr, const char *name, uint8_t v);
-_PUBLIC_ void ndr_print_int16(struct ndr_print *ndr, const char *name, int16_t v);
-_PUBLIC_ void ndr_print_uint16(struct ndr_print *ndr, const char *name, uint16_t v);
-_PUBLIC_ void ndr_print_int32(struct ndr_print *ndr, const char *name, int32_t v);
-_PUBLIC_ void ndr_print_uint32(struct ndr_print *ndr, const char *name, uint32_t v);
-_PUBLIC_ void ndr_print_udlong(struct ndr_print *ndr, const char *name, uint64_t v);
-_PUBLIC_ void ndr_print_udlongr(struct ndr_print *ndr, const char *name, uint64_t v);
-_PUBLIC_ void ndr_print_dlong(struct ndr_print *ndr, const char *name, int64_t v);
-_PUBLIC_ void ndr_print_hyper(struct ndr_print *ndr, const char *name, uint64_t v);
-_PUBLIC_ void ndr_print_pointer(struct ndr_print *ndr, const char *name, void *v);
-_PUBLIC_ void ndr_print_ptr(struct ndr_print *ndr, const char *name, const void *p);
-_PUBLIC_ void ndr_print_NTTIME(struct ndr_print *ndr, const char *name, NTTIME t);
-_PUBLIC_ void ndr_print_NTTIME_1sec(struct ndr_print *ndr, const char *name, NTTIME t);
-_PUBLIC_ void ndr_print_NTTIME_hyper(struct ndr_print *ndr, const char *name, NTTIME t);
-_PUBLIC_ void ndr_print_time_t(struct ndr_print *ndr, const char *name, time_t t);
-_PUBLIC_ void ndr_print_union(struct ndr_print *ndr, const char *name, int level, const char *type);
-_PUBLIC_ void ndr_print_bad_level(struct ndr_print *ndr, const char *name, uint16_t level);
-_PUBLIC_ void ndr_print_array_uint8(struct ndr_print *ndr, const char *name, 
-			   const uint8_t *data, uint32_t count);
-_PUBLIC_ void ndr_print_DATA_BLOB(struct ndr_print *ndr, const char *name, DATA_BLOB r);
-_PUBLIC_ enum ndr_err_code ndr_push_DATA_BLOB(struct ndr_push *ndr, int ndr_flags, DATA_BLOB blob);
-_PUBLIC_ enum ndr_err_code ndr_pull_DATA_BLOB(struct ndr_pull *ndr, int ndr_flags, DATA_BLOB *blob);
-_PUBLIC_ uint32_t ndr_size_DATA_BLOB(int ret, const DATA_BLOB *data, int flags);
-_PUBLIC_ void ndr_print_bool(struct ndr_print *ndr, const char *name, const bool b);
-_PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss);
-
-/* The following definitions come from librpc/ndr/ndr_krb5pac.c  */
-
-enum ndr_err_code ndr_push_PAC_BUFFER(struct ndr_push *ndr, int ndr_flags, const struct PAC_BUFFER *r);
-enum ndr_err_code ndr_pull_PAC_BUFFER(struct ndr_pull *ndr, int ndr_flags, struct PAC_BUFFER *r);
-void ndr_print_PAC_BUFFER(struct ndr_print *ndr, const char *name, const struct PAC_BUFFER *r);
-
-/* The following definitions come from librpc/ndr/ndr_misc.c  */
-
-bool all_zero(const uint8_t *ptr, size_t size);
-void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid);
-bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1,
-			 const struct ndr_syntax_id *i2);
-enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r);
-enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r);
-void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r);
-
-/* The following definitions come from librpc/ndr/ndr_sec_helper.c  */
-
-size_t ndr_size_dom_sid(const struct dom_sid *sid, int flags);
-size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags);
-size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags);
-size_t ndr_size_security_ace(const struct security_ace *ace, int flags);
-size_t ndr_size_security_acl(const struct security_acl *acl, int flags);
-size_t ndr_size_security_descriptor(const struct security_descriptor *sd, int flags);
-void ndr_print_dom_sid(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
-void ndr_print_dom_sid2(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
-void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
-void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
-
-/* The following definitions come from librpc/ndr/ndr_string.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, const char **s);
-_PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags, const char *s);
-_PUBLIC_ size_t ndr_string_array_size(struct ndr_push *ndr, const char *s);
-_PUBLIC_ void ndr_print_string(struct ndr_print *ndr, const char *name, const char *s);
-_PUBLIC_ uint32_t ndr_size_string(int ret, const char * const* string, int flags) ;
-_PUBLIC_ enum ndr_err_code ndr_pull_string_array(struct ndr_pull *ndr, int ndr_flags, const char ***_a);
-_PUBLIC_ enum ndr_err_code ndr_push_string_array(struct ndr_push *ndr, int ndr_flags, const char **a);
-_PUBLIC_ void ndr_print_string_array(struct ndr_print *ndr, const char *name, const char **a);
-_PUBLIC_ uint32_t ndr_string_length(const void *_var, uint32_t element_size);
-_PUBLIC_ enum ndr_err_code ndr_check_string_terminator(struct ndr_pull *ndr, uint32_t count, uint32_t element_size);
-_PUBLIC_ enum ndr_err_code ndr_pull_charset(struct ndr_pull *ndr, int ndr_flags, const char **var, uint32_t length, uint8_t byte_mul, charset_t chset);
-_PUBLIC_ enum ndr_err_code ndr_push_charset(struct ndr_push *ndr, int ndr_flags, const char *var, uint32_t length, uint8_t byte_mul, charset_t chset);
-_PUBLIC_ uint32_t ndr_charset_length(const void *var, charset_t chset);
-
-/* The following definitions come from librpc/ndr/sid.c  */
-
-enum ndr_err_code ndr_push_dom_sid(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *r);
-enum ndr_err_code ndr_pull_dom_sid(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *r);
-char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid);
-enum ndr_err_code ndr_pull_dom_sid2(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
-enum ndr_err_code ndr_push_dom_sid2(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
-enum ndr_err_code ndr_pull_dom_sid28(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
-enum ndr_err_code ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
-enum ndr_err_code ndr_pull_dom_sid0(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
-enum ndr_err_code ndr_push_dom_sid0(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
-
-/* The following definitions come from librpc/ndr/uuid.c  */
-
-_PUBLIC_ NTSTATUS GUID_from_string(const char *s, struct GUID *guid);
-_PUBLIC_ NTSTATUS NS_GUID_from_string(const char *s, struct GUID *guid);
-struct GUID GUID_random(void);
-_PUBLIC_ struct GUID GUID_zero(void);
-_PUBLIC_ bool GUID_all_zero(const struct GUID *u);
-_PUBLIC_ bool GUID_equal(const struct GUID *u1, const struct GUID *u2);
-_PUBLIC_ int GUID_compare(const struct GUID *u1, const struct GUID *u2);
-_PUBLIC_ char *GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid);
-_PUBLIC_ char *GUID_string2(TALLOC_CTX *mem_ctx, const struct GUID *guid);
-_PUBLIC_ char *NS_GUID_string(TALLOC_CTX *mem_ctx, const struct GUID *guid);
-_PUBLIC_ bool policy_handle_empty(struct policy_handle *h) ;
-
-/* The following definitions come from librpc/rpc/binding.c  */
-
-const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
-_PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b);
-_PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out);
-_PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(struct epm_floor *epm_floor, struct ndr_syntax_id *syntax);
-const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
-enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot);
-_PUBLIC_ enum dcerpc_transport_t dcerpc_transport_by_tower(struct epm_tower *tower);
-_PUBLIC_ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, 
-				   struct epm_tower *tower, 
-				   struct dcerpc_binding **b_out);
-_PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, struct dcerpc_binding *binding, struct epm_tower *tower);
-
-/* The following definitions come from librpc/rpc/dcerpc.c  */
-
-struct rpc_request *dcerpc_ndr_request_send(struct dcerpc_pipe *p, const struct GUID *object, 
-					    const struct ndr_interface_table *table, uint32_t opnum, 
-					    TALLOC_CTX *mem_ctx, void *r);
-NTSTATUS dcerpc_ndr_request_recv(struct rpc_request *req);
-_PUBLIC_ NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, struct dcerpc_pipe **pp, 
-				      const char *binding_string, const struct ndr_interface_table *table, 
-				      struct cli_credentials *credentials, struct event_context *ev, 
-				      struct loadparm_context *lp_ctx);
-
-/* The following definitions come from libsmb/asn1.c  */
-
-void asn1_free(ASN1_DATA *data);
-bool asn1_write(ASN1_DATA *data, const void *p, int len);
-bool asn1_write_uint8(ASN1_DATA *data, uint8 v);
-bool asn1_push_tag(ASN1_DATA *data, uint8 tag);
-bool asn1_pop_tag(ASN1_DATA *data);
-bool asn1_write_Integer(ASN1_DATA *data, int i);
-bool asn1_write_OID(ASN1_DATA *data, const char *OID);
-bool asn1_write_OctetString(ASN1_DATA *data, const void *p, size_t length);
-bool asn1_write_GeneralString(ASN1_DATA *data, const char *s);
-bool asn1_write_BOOLEAN(ASN1_DATA *data, bool v);
-bool asn1_write_BOOLEAN2(ASN1_DATA *data, bool v);
-bool asn1_check_BOOLEAN(ASN1_DATA *data, bool v);
-bool asn1_load(ASN1_DATA *data, DATA_BLOB blob);
-bool asn1_read(ASN1_DATA *data, void *p, int len);
-bool asn1_read_uint8(ASN1_DATA *data, uint8 *v);
-bool asn1_check_tag(ASN1_DATA *data, uint8 tag);
-bool asn1_start_tag(ASN1_DATA *data, uint8 tag);
-bool asn1_end_tag(ASN1_DATA *data);
-int asn1_tag_remaining(ASN1_DATA *data);
-bool asn1_read_OID(ASN1_DATA *data, char **OID);
-bool asn1_check_OID(ASN1_DATA *data, const char *OID);
-bool asn1_read_GeneralString(ASN1_DATA *data, char **s);
-bool asn1_read_OctetString(ASN1_DATA *data, DATA_BLOB *blob);
-bool asn1_read_Integer(ASN1_DATA *data, int *i);
-bool asn1_check_enumerated(ASN1_DATA *data, int v);
-bool asn1_write_enumerated(ASN1_DATA *data, uint8 v);
-bool ber_write_OID_String(DATA_BLOB *blob, const char *OID);
-bool ber_read_OID_String(TALLOC_CTX *mem_ctx, DATA_BLOB blob, const char **OID);
-
-/* The following definitions come from libsmb/async_smb.c  */
-
-NTSTATUS cli_pull_error(char *buf);
-void cli_set_error(struct cli_state *cli, NTSTATUS status);
-struct async_req *cli_request_new(TALLOC_CTX *mem_ctx,
-				  struct event_context *ev,
-				  struct cli_state *cli,
-				  uint8_t num_words, size_t num_bytes,
-				  struct cli_request **preq);
-struct cli_request *cli_request_get(struct async_req *req);
-struct cli_tmp_event *cli_tmp_event_ctx(TALLOC_CTX *mem_ctx,
-					struct cli_state *cli);
-NTSTATUS cli_add_event_ctx(struct cli_state *cli,
-			   struct event_context *event_ctx);
-
-/* The following definitions come from libsmb/cliconnect.c  */
-
-ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user, 
-			      const char *pass, const char *user_domain,
-				    const char * dest_realm);
-
-NTSTATUS cli_session_setup(struct cli_state *cli,
-			   const char *user,
-			   const char *pass, int passlen,
-			   const char *ntpass, int ntpasslen,
-			   const char *workgroup);
-bool cli_ulogoff(struct cli_state *cli);
-bool cli_send_tconX(struct cli_state *cli, 
-		    const char *share, const char *dev, const char *pass, int passlen);
-bool cli_tdis(struct cli_state *cli);
-void cli_negprot_send(struct cli_state *cli);
-bool cli_negprot(struct cli_state *cli);
-bool cli_session_request(struct cli_state *cli,
-			 struct nmb_name *calling, struct nmb_name *called);
-NTSTATUS cli_connect(struct cli_state *cli,
-		const char *host,
-		struct sockaddr_storage *dest_ss);
-NTSTATUS cli_start_connection(struct cli_state **output_cli, 
-			      const char *my_name, 
-			      const char *dest_host, 
-			      struct sockaddr_storage *dest_ss, int port,
-			      int signing_state, int flags,
-			      bool *retry) ;
-NTSTATUS cli_full_connection(struct cli_state **output_cli, 
-			     const char *my_name, 
-			     const char *dest_host, 
-			     struct sockaddr_storage *dest_ss, int port,
-			     const char *service, const char *service_type,
-			     const char *user, const char *domain, 
-			     const char *password, int flags,
-			     int signing_state,
-			     bool *retry) ;
-bool attempt_netbios_session_request(struct cli_state **ppcli, const char *srchost, const char *desthost,
-                                     struct sockaddr_storage *pdest_ss);
-NTSTATUS cli_raw_tcon(struct cli_state *cli, 
-		      const char *service, const char *pass, const char *dev,
-		      uint16 *max_xmit, uint16 *tid);
-struct cli_state *get_ipc_connect(char *server,
-				struct sockaddr_storage *server_ss,
-				const struct user_auth_info *user_info);
-struct cli_state *get_ipc_connect_master_ip(TALLOC_CTX *ctx,
-				struct ip_service *mb_ip,
-				const struct user_auth_info *user_info,
-				char **pp_workgroup_out);
-struct cli_state *get_ipc_connect_master_ip_bcast(TALLOC_CTX *ctx,
-					const struct user_auth_info *user_info,
-					char **pp_workgroup_out);
-
-/* The following definitions come from libsmb/clidfs.c  */
-
-NTSTATUS cli_cm_force_encryption(struct cli_state *c,
-			const char *username,
-			const char *password,
-			const char *domain,
-			const char *sharename);
-const char *cli_cm_get_mntpoint(struct cli_state *c);
-struct cli_state *cli_cm_open(TALLOC_CTX *ctx,
-				struct cli_state *referring_cli,
-				const char *server,
-				const char *share,
-				bool show_hdr,
-				bool force_encrypt);
-void cli_cm_shutdown(void);
-void cli_cm_display(void);
-void cli_cm_set_credentials(void);
-void cli_cm_set_port(int port_number);
-void cli_cm_set_dest_name_type(int type);
-void cli_cm_set_signing_state(int state);
-void cli_cm_set_username(const char *username);
-void cli_cm_set_password(const char *newpass);
-void cli_cm_set_use_kerberos(void);
-void cli_cm_set_fallback_after_kerberos(void);
-void cli_cm_set_dest_ss(struct sockaddr_storage *pss);
-bool cli_dfs_get_referral(TALLOC_CTX *ctx,
-			struct cli_state *cli,
-			const char *path,
-			CLIENT_DFS_REFERRAL**refs,
-			size_t *num_refs,
-			uint16 *consumed);
-bool cli_resolve_path(TALLOC_CTX *ctx,
-			const char *mountpt,
-			struct cli_state *rootcli,
-			const char *path,
-			struct cli_state **targetcli,
-			char **pp_targetpath);
-
-/* The following definitions come from libsmb/clidgram.c  */
-
-bool cli_send_mailslot(struct messaging_context *msg_ctx,
-		       bool unique, const char *mailslot,
-		       uint16 priority,
-		       char *buf, int len,
-		       const char *srcname, int src_type,
-		       const char *dstname, int dest_type,
-		       const struct sockaddr_storage *dest_ss);
-bool send_getdc_request(TALLOC_CTX *mem_ctx,
-			struct messaging_context *msg_ctx,
-			struct sockaddr_storage *dc_ss,
-			const char *domain_name,
-			const DOM_SID *sid,
-			uint32_t nt_version);
-bool receive_getdc_response(TALLOC_CTX *mem_ctx,
-			    struct sockaddr_storage *dc_ss,
-			    const char *domain_name,
-			    uint32_t *nt_version,
-			    const char **dc_name,
-			    union nbt_cldap_netlogon **reply);
-
-/* The following definitions come from libsmb/clientgen.c  */
-
-int cli_set_message(char *buf,int num_words,int num_bytes,bool zero);
-unsigned int cli_set_timeout(struct cli_state *cli, unsigned int timeout);
-int cli_set_port(struct cli_state *cli, int port);
-bool cli_receive_smb(struct cli_state *cli);
-ssize_t cli_receive_smb_data(struct cli_state *cli, char *buffer, size_t len);
-bool cli_receive_smb_readX_header(struct cli_state *cli);
-bool cli_send_smb(struct cli_state *cli);
-bool cli_send_smb_direct_writeX(struct cli_state *cli,
-				const char *p,
-				size_t extradata);
-void cli_setup_packet_buf(struct cli_state *cli, char *buf);
-void cli_setup_packet(struct cli_state *cli);
-void cli_setup_bcc(struct cli_state *cli, void *p);
-void cli_init_creds(struct cli_state *cli, const char *username, const char *domain, const char *password);
-void cli_setup_signing_state(struct cli_state *cli, int signing_state);
-struct cli_state *cli_initialise(void);
-void cli_nt_pipes_close(struct cli_state *cli);
-void cli_shutdown(struct cli_state *cli);
-void cli_sockopt(struct cli_state *cli, const char *options);
-uint16 cli_setpid(struct cli_state *cli, uint16 pid);
-bool cli_set_case_sensitive(struct cli_state *cli, bool case_sensitive);
-bool cli_send_keepalive(struct cli_state *cli);
-bool cli_echo(struct cli_state *cli, uint16 num_echos,
-	      unsigned char *data, size_t length);
-
-/* The following definitions come from libsmb/clierror.c  */
-
-const char *cli_errstr(struct cli_state *cli);
-NTSTATUS cli_nt_error(struct cli_state *cli);
-void cli_dos_error(struct cli_state *cli, uint8 *eclass, uint32 *ecode);
-int cli_errno(struct cli_state *cli);
-bool cli_is_error(struct cli_state *cli);
-bool cli_is_nt_error(struct cli_state *cli);
-bool cli_is_dos_error(struct cli_state *cli);
-NTSTATUS cli_get_nt_error(struct cli_state *cli);
-void cli_set_nt_error(struct cli_state *cli, NTSTATUS status);
-void cli_reset_error(struct cli_state *cli);
-
-/* The following definitions come from libsmb/clifile.c  */
-
-uint32 unix_perms_to_wire(mode_t perms);
-mode_t wire_perms_to_unix(uint32 perms);
-bool cli_unix_getfacl(struct cli_state *cli, const char *name, size_t *prb_size, char **retbuf);
-bool cli_unix_stat(struct cli_state *cli, const char *name, SMB_STRUCT_STAT *sbuf);
-bool cli_unix_symlink(struct cli_state *cli, const char *oldname, const char *newname);
-bool cli_unix_hardlink(struct cli_state *cli, const char *oldname, const char *newname);
-bool cli_unix_chmod(struct cli_state *cli, const char *fname, mode_t mode);
-bool cli_unix_chown(struct cli_state *cli, const char *fname, uid_t uid, gid_t gid);
-bool cli_rename(struct cli_state *cli, const char *fname_src, const char *fname_dst);
-bool cli_ntrename(struct cli_state *cli, const char *fname_src, const char *fname_dst);
-bool cli_nt_hardlink(struct cli_state *cli, const char *fname_src, const char *fname_dst);
-bool cli_unlink_full(struct cli_state *cli, const char *fname, uint16 attrs);
-bool cli_unlink(struct cli_state *cli, const char *fname);
-bool cli_mkdir(struct cli_state *cli, const char *dname);
-bool cli_rmdir(struct cli_state *cli, const char *dname);
-int cli_nt_delete_on_close(struct cli_state *cli, int fnum, bool flag);
-int cli_nt_create_full(struct cli_state *cli, const char *fname,
-		 uint32 CreatFlags, uint32 DesiredAccess,
-		 uint32 FileAttributes, uint32 ShareAccess,
-		 uint32 CreateDisposition, uint32 CreateOptions,
-		 uint8 SecuityFlags);
-int cli_nt_create(struct cli_state *cli, const char *fname, uint32 DesiredAccess);
-int cli_open(struct cli_state *cli, const char *fname, int flags, int share_mode);
-bool cli_close(struct cli_state *cli, int fnum);
-bool cli_ftruncate(struct cli_state *cli, int fnum, uint64_t size);
-NTSTATUS cli_locktype(struct cli_state *cli, int fnum,
-		      uint32 offset, uint32 len,
-		      int timeout, unsigned char locktype);
-bool cli_lock(struct cli_state *cli, int fnum,
-	      uint32 offset, uint32 len, int timeout, enum brl_type lock_type);
-bool cli_unlock(struct cli_state *cli, int fnum, uint32 offset, uint32 len);
-bool cli_lock64(struct cli_state *cli, int fnum,
-		SMB_BIG_UINT offset, SMB_BIG_UINT len, int timeout, enum brl_type lock_type);
-bool cli_unlock64(struct cli_state *cli, int fnum, SMB_BIG_UINT offset, SMB_BIG_UINT len);
-bool cli_posix_lock(struct cli_state *cli, int fnum,
-			SMB_BIG_UINT offset, SMB_BIG_UINT len,
-			bool wait_lock, enum brl_type lock_type);
-bool cli_posix_unlock(struct cli_state *cli, int fnum, SMB_BIG_UINT offset, SMB_BIG_UINT len);
-bool cli_posix_getlock(struct cli_state *cli, int fnum, SMB_BIG_UINT *poffset, SMB_BIG_UINT *plen);
-bool cli_getattrE(struct cli_state *cli, int fd,
-		  uint16 *attr, SMB_OFF_T *size,
-		  time_t *change_time,
-                  time_t *access_time,
-                  time_t *write_time);
-bool cli_getatr(struct cli_state *cli, const char *fname,
-		uint16 *attr, SMB_OFF_T *size, time_t *write_time);
-bool cli_setattrE(struct cli_state *cli, int fd,
-		  time_t change_time,
-                  time_t access_time,
-                  time_t write_time);
-bool cli_setatr(struct cli_state *cli, const char *fname, uint16 attr, time_t t);
-bool cli_chkpath(struct cli_state *cli, const char *path);
-bool cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail);
-int cli_ctemp(struct cli_state *cli, const char *path, char **tmp_path);
-NTSTATUS cli_raw_ioctl(struct cli_state *cli, int fnum, uint32 code, DATA_BLOB *blob);
-bool cli_set_ea_path(struct cli_state *cli, const char *path, const char *ea_name, const char *ea_val, size_t ea_len);
-bool cli_set_ea_fnum(struct cli_state *cli, int fnum, const char *ea_name, const char *ea_val, size_t ea_len);
-bool cli_get_ea_list_path(struct cli_state *cli, const char *path,
-		TALLOC_CTX *ctx,
-		size_t *pnum_eas,
-		struct ea_struct **pea_list);
-bool cli_get_ea_list_fnum(struct cli_state *cli, int fnum,
-		TALLOC_CTX *ctx,
-		size_t *pnum_eas,
-		struct ea_struct **pea_list);
-int cli_posix_open(struct cli_state *cli, const char *fname, int flags, mode_t mode);
-int cli_posix_mkdir(struct cli_state *cli, const char *fname, mode_t mode);
-bool cli_posix_unlink(struct cli_state *cli, const char *fname);
-int cli_posix_rmdir(struct cli_state *cli, const char *fname);
-
-/* The following definitions come from libsmb/clifsinfo.c  */
-
-bool cli_unix_extensions_version(struct cli_state *cli, uint16 *pmajor, uint16 *pminor,
-                                        uint32 *pcaplow, uint32 *pcaphigh);
-bool cli_set_unix_extensions_capabilities(struct cli_state *cli, uint16 major, uint16 minor,
-                                        uint32 caplow, uint32 caphigh);
-bool cli_get_fs_attr_info(struct cli_state *cli, uint32 *fs_attr);
-bool cli_get_fs_volume_info_old(struct cli_state *cli, fstring volume_name, uint32 *pserial_number);
-bool cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name, uint32 *pserial_number, time_t *pdate);
-NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli, 
-				const char *user,
-				const char *pass,
-				const char *domain);
-NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli);
-NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli);
-NTSTATUS cli_force_encryption(struct cli_state *c,
-			const char *username,
-			const char *password,
-			const char *domain);
-
-/* The following definitions come from libsmb/clikrb5.c  */
-
-bool unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx, 
-			   DATA_BLOB *edata, 
-			   DATA_BLOB *edata_out);
-bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data);
-int cli_krb5_get_ticket(const char *principal, time_t time_offset, 
-			DATA_BLOB *ticket, DATA_BLOB *session_key_krb5, 
-			uint32 extra_ap_opts, const char *ccname, 
-			time_t *tgs_expire);
-
-/* The following definitions come from libsmb/clilist.c  */
-
-int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
-		 void (*fn)(const char *, file_info *, const char *, void *), void *state);
-int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute,
-		 void (*fn)(const char *, file_info *, const char *, void *), void *state);
-int cli_list(struct cli_state *cli,const char *Mask,uint16 attribute,
-	     void (*fn)(const char *, file_info *, const char *, void *), void *state);
-
-/* The following definitions come from libsmb/climessage.c  */
-
-int cli_message_start_build(struct cli_state *cli, const char *host, const char *username);
-bool cli_message_start(struct cli_state *cli, const char *host, const char *username,
-			      int *grp);
-int cli_message_text_build(struct cli_state *cli, const char *msg, int len, int grp);
-bool cli_message_text(struct cli_state *cli, const char *msg, int len, int grp);
-int cli_message_end_build(struct cli_state *cli, int grp);
-bool cli_message_end(struct cli_state *cli, int grp);
-
-/* The following definitions come from libsmb/clioplock.c  */
-
-bool cli_oplock_ack(struct cli_state *cli, int fnum, unsigned char level);
-void cli_oplock_handler(struct cli_state *cli, 
-			bool (*handler)(struct cli_state *, int, unsigned char));
-
-/* The following definitions come from libsmb/cliprint.c  */
-
-int cli_print_queue(struct cli_state *cli,
-		    void (*fn)(struct print_job_info *));
-int cli_printjob_del(struct cli_state *cli, int job);
-int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int share_mode);
-bool cli_spl_close(struct cli_state *cli, int fnum);
-
-/* The following definitions come from libsmb/cliquota.c  */
-
-bool cli_get_quota_handle(struct cli_state *cli, int *quota_fnum);
-void free_ntquota_list(SMB_NTQUOTA_LIST **qt_list);
-bool cli_get_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt);
-bool cli_set_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt);
-bool cli_list_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_LIST **pqt_list);
-bool cli_get_fs_quota_info(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt);
-bool cli_set_fs_quota_info(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt);
-void dump_ntquota(SMB_NTQUOTA_STRUCT *qt, bool _verbose, bool _numeric, void (*_sidtostring)(fstring str, DOM_SID *sid, bool _numeric));
-void dump_ntquota_list(SMB_NTQUOTA_LIST **qtl, bool _verbose, bool _numeric, void (*_sidtostring)(fstring str, DOM_SID *sid, bool _numeric));
-
-/* The following definitions come from libsmb/clirap.c  */
-
-bool cli_api_pipe(struct cli_state *cli, const char *pipe_name,
-                  uint16 *setup, uint32 setup_count, uint32 max_setup_count,
-                  char *params, uint32 param_count, uint32 max_param_count,
-                  char *data, uint32 data_count, uint32 max_data_count,
-                  char **rparam, uint32 *rparam_count,
-                  char **rdata, uint32 *rdata_count);
-bool cli_api(struct cli_state *cli,
-	     char *param, int prcnt, int mprcnt,
-	     char *data, int drcnt, int mdrcnt,
-	     char **rparam, unsigned int *rprcnt,
-	     char **rdata, unsigned int *rdrcnt);
-bool cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation);
-int cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, const char *, void *), void *state);
-bool cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,
-		       void (*fn)(const char *, uint32, const char *, void *),
-		       void *state);
-bool cli_oem_change_password(struct cli_state *cli, const char *user, const char *new_password,
-                             const char *old_password);
-bool cli_qpathinfo(struct cli_state *cli,
-			const char *fname,
-			time_t *change_time,
-			time_t *access_time,
-			time_t *write_time,
-			SMB_OFF_T *size,
-			uint16 *mode);
-bool cli_setpathinfo(struct cli_state *cli, const char *fname,
-                     time_t create_time,
-                     time_t access_time,
-                     time_t write_time,
-                     time_t change_time,
-                     uint16 mode);
-bool cli_qpathinfo2(struct cli_state *cli, const char *fname,
-		    struct timespec *create_time,
-                    struct timespec *access_time,
-                    struct timespec *write_time,
-		    struct timespec *change_time,
-                    SMB_OFF_T *size, uint16 *mode,
-		    SMB_INO_T *ino);
-bool cli_qpathinfo_streams(struct cli_state *cli, const char *fname,
-			   TALLOC_CTX *mem_ctx,
-			   unsigned int *pnum_streams,
-			   struct stream_struct **pstreams);
-bool cli_qfilename(struct cli_state *cli, int fnum, char *name, size_t namelen);
-bool cli_qfileinfo(struct cli_state *cli, int fnum,
-		   uint16 *mode, SMB_OFF_T *size,
-		   struct timespec *create_time,
-                   struct timespec *access_time,
-                   struct timespec *write_time,
-		   struct timespec *change_time,
-                   SMB_INO_T *ino);
-bool cli_qpathinfo_basic( struct cli_state *cli, const char *name,
-                          SMB_STRUCT_STAT *sbuf, uint32 *attributes );
-bool cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char **poutdata, uint32 *poutlen);
-NTSTATUS cli_qpathinfo_alt_name(struct cli_state *cli, const char *fname, fstring alt_name);
-
-/* The following definitions come from libsmb/clirap2.c  */
-
-int cli_NetGroupDelete(struct cli_state *cli, const char *group_name);
-int cli_NetGroupAdd(struct cli_state *cli, RAP_GROUP_INFO_1 *grinfo);
-int cli_RNetGroupEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
-int cli_RNetGroupEnum0(struct cli_state *cli,
-		       void (*fn)(const char *, void *),
-		       void *state);
-int cli_NetGroupDelUser(struct cli_state * cli, const char *group_name, const char *user_name);
-int cli_NetGroupAddUser(struct cli_state * cli, const char *group_name, const char *user_name);
-int cli_NetGroupGetUsers(struct cli_state * cli, const char *group_name, void (*fn)(const char *, void *), void *state );
-int cli_NetUserGetGroups(struct cli_state * cli, const char *user_name, void (*fn)(const char *, void *), void *state );
-int cli_NetUserDelete(struct cli_state *cli, const char * user_name );
-int cli_NetUserAdd(struct cli_state *cli, RAP_USER_INFO_1 * userinfo );
-int cli_RNetUserEnum(struct cli_state *cli, void (*fn)(const char *, const char *, const char *, const char *, void *), void *state);
-int cli_RNetUserEnum0(struct cli_state *cli,
-		      void (*fn)(const char *, void *),
-		      void *state);
-int cli_NetFileClose(struct cli_state *cli, uint32 file_id );
-int cli_NetFileGetInfo(struct cli_state *cli, uint32 file_id, void (*fn)(const char *, const char *, uint16, uint16, uint32));
-int cli_NetFileEnum(struct cli_state *cli, const char * user,
-		    const char * base_path,
-		    void (*fn)(const char *, const char *, uint16, uint16,
-			       uint32));
-int cli_NetShareAdd(struct cli_state *cli, RAP_SHARE_INFO_2 * sinfo );
-int cli_NetShareDelete(struct cli_state *cli, const char * share_name );
-bool cli_get_pdc_name(struct cli_state *cli, const char *workgroup, char **pdc_name);
-bool cli_get_server_domain(struct cli_state *cli);
-bool cli_get_server_type(struct cli_state *cli, uint32 *pstype);
-bool cli_get_server_name(TALLOC_CTX *mem_ctx, struct cli_state *cli,
-			 char **servername);
-bool cli_ns_check_server_type(struct cli_state *cli, char *workgroup, uint32 stype);
-bool cli_NetWkstaUserLogoff(struct cli_state *cli, const char *user, const char *workstation);
-int cli_NetPrintQEnum(struct cli_state *cli,
-		void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16),
-		void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint,uint,const char*));
-int cli_NetPrintQGetInfo(struct cli_state *cli, const char *printer,
-	void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16),
-	void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint,uint,const char*));
-int cli_RNetServiceEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
-int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16, uint16, uint16, uint, uint, uint, char *));
-int cli_NetSessionGetInfo(struct cli_state *cli, const char *workstation,
-		void (*fn)(const char *, const char *, uint16, uint16, uint16, uint, uint, uint, const char *));
-int cli_NetSessionDel(struct cli_state *cli, const char *workstation);
-int cli_NetConnectionEnum(struct cli_state *cli, const char *qualifier,
-			void (*fn)(uint16_t conid, uint16_t contype,
-				uint16_t numopens, uint16_t numusers,
-				uint32_t contime, const char *username,
-				const char *netname));
-
-/* The following definitions come from libsmb/clireadwrite.c  */
-
-struct async_req *cli_read_andx_send(TALLOC_CTX *mem_ctx,
-				     struct cli_state *cli, int fnum,
-				     off_t offset, size_t size);
-NTSTATUS cli_read_andx_recv(struct async_req *req, ssize_t *received,
-			    uint8_t **rcvbuf);
-struct async_req *cli_pull_send(TALLOC_CTX *mem_ctx, struct cli_state *cli,
-				uint16_t fnum, off_t start_offset,
-				SMB_OFF_T size, size_t window_size,
-				NTSTATUS (*sink)(char *buf, size_t n,
-						 void *priv),
-				void *priv);
-NTSTATUS cli_pull_recv(struct async_req *req, SMB_OFF_T *received);
-NTSTATUS cli_pull(struct cli_state *cli, uint16_t fnum,
-		  off_t start_offset, SMB_OFF_T size, size_t window_size,
-		  NTSTATUS (*sink)(char *buf, size_t n, void *priv),
-		  void *priv, SMB_OFF_T *received);
-ssize_t cli_read(struct cli_state *cli, int fnum, char *buf,
-		 off_t offset, size_t size);
-ssize_t cli_readraw(struct cli_state *cli, int fnum, char *buf, off_t offset, size_t size);
-ssize_t cli_write(struct cli_state *cli,
-    	         int fnum, uint16 write_mode,
-		 const char *buf, off_t offset, size_t size);
-ssize_t cli_smbwrite(struct cli_state *cli,
-		     int fnum, char *buf, off_t offset, size_t size1);
-
-/* The following definitions come from libsmb/clisecdesc.c  */
-
-SEC_DESC *cli_query_secdesc(struct cli_state *cli, int fnum, 
-			    TALLOC_CTX *mem_ctx);
-bool cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd);
-
-/* The following definitions come from libsmb/clispnego.c  */
-
-DATA_BLOB spnego_gen_negTokenInit(char guid[16], 
-				  const char *OIDs[], 
-				  const char *principal);
-DATA_BLOB gen_negTokenInit(const char *OID, DATA_BLOB blob);
-bool spnego_parse_negTokenInit(DATA_BLOB blob,
-			       char *OIDs[ASN1_MAX_OIDS], 
-			       char **principal);
-DATA_BLOB gen_negTokenTarg(const char *OIDs[], DATA_BLOB blob);
-bool parse_negTokenTarg(DATA_BLOB blob, char *OIDs[ASN1_MAX_OIDS], DATA_BLOB *secblob);
-DATA_BLOB spnego_gen_krb5_wrap(const DATA_BLOB ticket, const uint8 tok_id[2]);
-bool spnego_parse_krb5_wrap(DATA_BLOB blob, DATA_BLOB *ticket, uint8 tok_id[2]);
-int spnego_gen_negTokenTarg(const char *principal, int time_offset, 
-			    DATA_BLOB *targ, 
-			    DATA_BLOB *session_key_krb5, uint32 extra_ap_opts,
-			    time_t *expire_time);
-bool spnego_parse_challenge(const DATA_BLOB blob,
-			    DATA_BLOB *chal1, DATA_BLOB *chal2);
-DATA_BLOB spnego_gen_auth(DATA_BLOB blob);
-bool spnego_parse_auth(DATA_BLOB blob, DATA_BLOB *auth);
-DATA_BLOB spnego_gen_auth_response(DATA_BLOB *reply, NTSTATUS nt_status,
-				   const char *mechOID);
-bool spnego_parse_auth_response(DATA_BLOB blob, NTSTATUS nt_status,
-				const char *mechOID,
-				DATA_BLOB *auth);
-
-/* The following definitions come from libsmb/clistr.c  */
-
-size_t clistr_push_fn(const char *function,
-			unsigned int line,
-			struct cli_state *cli,
-			void *dest,
-			const char *src,
-			int dest_len,
-			int flags);
-size_t clistr_pull_fn(const char *function,
-			unsigned int line,
-			struct cli_state *cli,
-			char *dest,
-			const void *src,
-			int dest_len,
-			int src_len,
-			int flags);
-size_t clistr_pull_talloc_fn(const char *function,
-				unsigned int line,
-				TALLOC_CTX *ctx,
-				struct cli_state *cli,
-				char **pp_dest,
-				const void *src,
-				int src_len,
-				int flags);
-size_t clistr_align_out(struct cli_state *cli, const void *p, int flags);
-size_t clistr_align_in(struct cli_state *cli, const void *p, int flags);
-
-/* The following definitions come from libsmb/clitrans.c  */
-
-bool cli_send_trans(struct cli_state *cli, int trans,
-		    const char *pipe_name,
-		    int fid, int flags,
-		    uint16 *setup, unsigned int lsetup, unsigned int msetup,
-		    const char *param, unsigned int lparam, unsigned int mparam,
-		    const char *data, unsigned int ldata, unsigned int mdata);
-bool cli_receive_trans(struct cli_state *cli,int trans,
-                              char **param, unsigned int *param_len,
-                              char **data, unsigned int *data_len);
-bool cli_send_nt_trans(struct cli_state *cli,
-		       int function,
-		       int flags,
-		       uint16 *setup, unsigned int lsetup, unsigned int msetup,
-		       char *param, unsigned int lparam, unsigned int mparam,
-		       char *data, unsigned int ldata, unsigned int mdata);
-bool cli_receive_nt_trans(struct cli_state *cli,
-			  char **param, unsigned int *param_len,
-			  char **data, unsigned int *data_len);
-
-/* The following definitions come from libsmb/conncache.c  */
-
-NTSTATUS check_negative_conn_cache_timeout( const char *domain, const char *server, unsigned int failed_cache_timeout );
-NTSTATUS check_negative_conn_cache( const char *domain, const char *server);
-void add_failed_connection_entry(const char *domain, const char *server, NTSTATUS result) ;
-void delete_negative_conn_cache(const char *domain, const char *server);
-void flush_negative_conn_cache( void );
-void flush_negative_conn_cache_for_domain(const char *domain);
-
-/* The following definitions come from libsmb/credentials.c  */
-
-char *credstr(const unsigned char *cred);
-void creds_server_init(uint32 neg_flags,
-			struct dcinfo *dc,
-			struct netr_Credential *clnt_chal,
-			struct netr_Credential *srv_chal,
-			const unsigned char mach_pw[16],
-			struct netr_Credential *init_chal_out);
-bool netlogon_creds_server_check(const struct dcinfo *dc,
-				 const struct netr_Credential *rcv_cli_chal_in);
-bool netlogon_creds_server_step(struct dcinfo *dc,
-				const struct netr_Authenticator *received_cred,
-				struct netr_Authenticator *cred_out);
-void creds_client_init(uint32 neg_flags,
-			struct dcinfo *dc,
-			struct netr_Credential *clnt_chal,
-			struct netr_Credential *srv_chal,
-			const unsigned char mach_pw[16],
-			struct netr_Credential *init_chal_out);
-bool netlogon_creds_client_check(const struct dcinfo *dc,
-				 const struct netr_Credential *rcv_srv_chal_in);
-void netlogon_creds_client_step(struct dcinfo *dc,
-				struct netr_Authenticator *next_cred_out);
-
-/* The following definitions come from libsmb/dcerpc_err.c  */
-
-const char *dcerpc_errstr(uint32 fault_code);
-
-/* The following definitions come from libsmb/doserr.c  */
-
-const char *dos_errstr(WERROR werror);
-const char *get_friendly_werror_msg(WERROR werror);
-const char *win_errstr(WERROR werror);
-
-/* The following definitions come from libsmb/dsgetdcname.c  */
-
-void debug_dsdcinfo_flags(int lvl, uint32_t flags);
-NTSTATUS dsgetdcname(TALLOC_CTX *mem_ctx,
-		     struct messaging_context *msg_ctx,
-		     const char *domain_name,
-		     struct GUID *domain_guid,
-		     const char *site_name,
-		     uint32_t flags,
-		     struct netr_DsRGetDCNameInfo **info);
-
-/* The following definitions come from libsmb/errormap.c  */
-
-NTSTATUS dos_to_ntstatus(uint8 eclass, uint32 ecode);
-void ntstatus_to_dos(NTSTATUS ntstatus, uint8 *eclass, uint32 *ecode);
-NTSTATUS werror_to_ntstatus(WERROR error);
-WERROR ntstatus_to_werror(NTSTATUS error);
-NTSTATUS map_nt_error_from_gss(uint32 gss_maj, uint32 minor);
-
-/* The following definitions come from libsmb/namecache.c  */
-
-bool namecache_enable(void);
-bool namecache_shutdown(void);
-bool namecache_store(const char *name,
-			int name_type,
-			int num_names,
-			struct ip_service *ip_list);
-bool namecache_fetch(const char *name,
-			int name_type,
-			struct ip_service **ip_list,
-			int *num_names);
-bool namecache_delete(const char *name, int name_type);
-void namecache_flush(void);
-bool namecache_status_store(const char *keyname, int keyname_type,
-		int name_type, const struct sockaddr_storage *keyip,
-		const char *srvname);
-bool namecache_status_fetch(const char *keyname,
-				int keyname_type,
-				int name_type,
-				const struct sockaddr_storage *keyip,
-				char *srvname_out);
-
-/* The following definitions come from libsmb/namequery.c  */
-
-bool saf_store( const char *domain, const char *servername );
-bool saf_delete( const char *domain );
-char *saf_fetch( const char *domain );
-NODE_STATUS_STRUCT *node_status_query(int fd,
-					struct nmb_name *name,
-					const struct sockaddr_storage *to_ss,
-					int *num_names,
-					struct node_status_extra *extra);
-bool name_status_find(const char *q_name,
-			int q_type,
-			int type,
-			const struct sockaddr_storage *to_ss,
-			fstring name);
-int ip_service_compare(struct ip_service *ss1, struct ip_service *ss2);
-struct sockaddr_storage *name_query(int fd,
-			const char *name,
-			int name_type,
-			bool bcast,
-			bool recurse,
-			const struct sockaddr_storage *to_ss,
-			int *count,
-			int *flags,
-			bool *timed_out);
-XFILE *startlmhosts(const char *fname);
-bool getlmhostsent(TALLOC_CTX *ctx, XFILE *fp, char **pp_name, int *name_type,
-		struct sockaddr_storage *pss);
-void endlmhosts(XFILE *fp);
-NTSTATUS name_resolve_bcast(const char *name,
-			int name_type,
-			struct ip_service **return_iplist,
-			int *return_count);
-NTSTATUS resolve_wins(const char *name,
-		int name_type,
-		struct ip_service **return_iplist,
-		int *return_count);
-NTSTATUS internal_resolve_name(const char *name,
-			        int name_type,
-				const char *sitename,
-				struct ip_service **return_iplist,
-				int *return_count,
-				const char *resolve_order);
-bool resolve_name(const char *name,
-		struct sockaddr_storage *return_ss,
-		int name_type);
-NTSTATUS resolve_name_list(TALLOC_CTX *ctx,
-		const char *name,
-		int name_type,
-		struct sockaddr_storage **return_ss_arr,
-		unsigned int *p_num_entries);
-bool find_master_ip(const char *group, struct sockaddr_storage *master_ss);
-bool get_pdc_ip(const char *domain, struct sockaddr_storage *pss);
-NTSTATUS get_sorted_dc_list( const char *domain,
-			const char *sitename,
-			struct ip_service **ip_list,
-			int *count,
-			bool ads_only );
-NTSTATUS get_kdc_list( const char *realm,
-			const char *sitename,
-			struct ip_service **ip_list,
-			int *count);
-
-/* The following definitions come from libsmb/namequery_dc.c  */
-
-bool get_dc_name(const char *domain,
-		const char *realm,
-		fstring srv_name,
-		struct sockaddr_storage *ss_out);
-
-/* The following definitions come from libsmb/nmblib.c  */
-
-void debug_nmb_packet(struct packet_struct *p);
-void put_name(char *dest, const char *name, int pad, unsigned int name_type);
-char *nmb_namestr(const struct nmb_name *n);
-struct packet_struct *copy_packet(struct packet_struct *packet);
-void free_packet(struct packet_struct *packet);
-struct packet_struct *parse_packet(char *buf,int length,
-				   enum packet_type packet_type,
-				   struct in_addr ip,
-				   int port);
-struct packet_struct *read_packet(int fd,enum packet_type packet_type);
-void make_nmb_name( struct nmb_name *n, const char *name, int type);
-bool nmb_name_equal(struct nmb_name *n1, struct nmb_name *n2);
-int build_packet(char *buf, size_t buflen, struct packet_struct *p);
-bool send_packet(struct packet_struct *p);
-struct packet_struct *receive_packet(int fd,enum packet_type type,int t);
-struct packet_struct *receive_nmb_packet(int fd, int t, int trn_id);
-struct packet_struct *receive_dgram_packet(int fd, int t,
-		const char *mailslot_name);
-bool match_mailslot_name(struct packet_struct *p, const char *mailslot_name);
-int matching_len_bits(unsigned char *p1, unsigned char *p2, size_t len);
-void sort_query_replies(char *data, int n, struct in_addr ip);
-int name_mangle( char *In, char *Out, char name_type );
-int name_extract(char *buf,int ofs, fstring name);
-int name_len(char *s1);
-
-/* The following definitions come from libsmb/nterr.c  */
-
-const char *nt_errstr(NTSTATUS nt_code);
-const char *get_friendly_nt_error_msg(NTSTATUS nt_code);
-const char *get_nt_error_c_code(NTSTATUS nt_code);
-NTSTATUS nt_status_string_to_code(char *nt_status_str);
-NTSTATUS nt_status_squash(NTSTATUS nt_status);
-
-/* The following definitions come from libsmb/ntlm_check.c  */
-
-NTSTATUS ntlm_password_check(TALLOC_CTX *mem_ctx,
-			     const DATA_BLOB *challenge,
-			     const DATA_BLOB *lm_response,
-			     const DATA_BLOB *nt_response,
-			     const DATA_BLOB *lm_interactive_pwd,
-			     const DATA_BLOB *nt_interactive_pwd,
-			     const char *username, 
-			     const char *client_username, 
-			     const char *client_domain,
-			     const uint8 *lm_pw, const uint8 *nt_pw, 
-			     DATA_BLOB *user_sess_key, 
-			     DATA_BLOB *lm_sess_key);
-
-/* The following definitions come from libsmb/ntlmssp.c  */
-
-void debug_ntlmssp_flags(uint32 neg_flags);
-NTSTATUS ntlmssp_set_username(NTLMSSP_STATE *ntlmssp_state, const char *user) ;
-NTSTATUS ntlmssp_set_hashes(NTLMSSP_STATE *ntlmssp_state,
-		const unsigned char lm_hash[16],
-		const unsigned char nt_hash[16]) ;
-NTSTATUS ntlmssp_set_password(NTLMSSP_STATE *ntlmssp_state, const char *password) ;
-NTSTATUS ntlmssp_set_domain(NTLMSSP_STATE *ntlmssp_state, const char *domain) ;
-NTSTATUS ntlmssp_set_workstation(NTLMSSP_STATE *ntlmssp_state, const char *workstation) ;
-NTSTATUS ntlmssp_store_response(NTLMSSP_STATE *ntlmssp_state,
-				DATA_BLOB response) ;
-void ntlmssp_want_feature_list(NTLMSSP_STATE *ntlmssp_state, char *feature_list);
-void ntlmssp_want_feature(NTLMSSP_STATE *ntlmssp_state, uint32 feature);
-NTSTATUS ntlmssp_update(NTLMSSP_STATE *ntlmssp_state, 
-			const DATA_BLOB in, DATA_BLOB *out) ;
-void ntlmssp_end(NTLMSSP_STATE **ntlmssp_state);
-DATA_BLOB ntlmssp_weaken_keys(NTLMSSP_STATE *ntlmssp_state, TALLOC_CTX *mem_ctx);
-NTSTATUS ntlmssp_server_start(NTLMSSP_STATE **ntlmssp_state);
-NTSTATUS ntlmssp_client_start(NTLMSSP_STATE **ntlmssp_state);
-
-/* The following definitions come from libsmb/ntlmssp_parse.c  */
-
-bool msrpc_gen(DATA_BLOB *blob,
-	       const char *format, ...);
-bool msrpc_parse(const DATA_BLOB *blob,
-		 const char *format, ...);
-
-/* The following definitions come from libsmb/ntlmssp_sign.c  */
-
-NTSTATUS ntlmssp_sign_packet(NTLMSSP_STATE *ntlmssp_state,
-				    const uchar *data, size_t length, 
-				    const uchar *whole_pdu, size_t pdu_length, 
-				    DATA_BLOB *sig) ;
-NTSTATUS ntlmssp_check_packet(NTLMSSP_STATE *ntlmssp_state,
-				const uchar *data, size_t length, 
-				const uchar *whole_pdu, size_t pdu_length, 
-				const DATA_BLOB *sig) ;
-NTSTATUS ntlmssp_seal_packet(NTLMSSP_STATE *ntlmssp_state,
-			     uchar *data, size_t length,
-			     uchar *whole_pdu, size_t pdu_length,
-			     DATA_BLOB *sig);
-NTSTATUS ntlmssp_unseal_packet(NTLMSSP_STATE *ntlmssp_state,
-				uchar *data, size_t length,
-				uchar *whole_pdu, size_t pdu_length,
-				DATA_BLOB *sig);
-NTSTATUS ntlmssp_sign_init(NTLMSSP_STATE *ntlmssp_state);
-
-/* The following definitions come from libsmb/passchange.c  */
-
-NTSTATUS remote_password_change(const char *remote_machine, const char *user_name, 
-				const char *old_passwd, const char *new_passwd,
-				char **err_str);
-
-/* The following definitions come from libsmb/pwd_cache.c  */
-
-void pwd_set_cleartext(struct pwd_info *pwd, const char *clr);
-void pwd_get_cleartext(struct pwd_info *pwd, fstring clr);
-
-/* The following definitions come from libsmb/samlogon_cache.c  */
-
-bool netsamlogon_cache_init(void);
-bool netsamlogon_cache_shutdown(void);
-void netsamlogon_clear_cached_user(struct netr_SamInfo3 *info3);
-bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3);
-struct netr_SamInfo3 *netsamlogon_cache_get(TALLOC_CTX *mem_ctx, const DOM_SID *user_sid);
-bool netsamlogon_cache_have(const DOM_SID *user_sid);
-
-/* The following definitions come from libsmb/smb_seal.c  */
-
-NTSTATUS get_enc_ctx_num(const uint8_t *buf, uint16 *p_enc_ctx_num);
-bool common_encryption_on(struct smb_trans_enc_state *es);
-NTSTATUS common_ntlm_decrypt_buffer(NTLMSSP_STATE *ntlmssp_state, char *buf);
-NTSTATUS common_ntlm_encrypt_buffer(NTLMSSP_STATE *ntlmssp_state,
-				uint16 enc_ctx_num,
-				char *buf,
-				char **ppbuf_out);
-NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out);
-NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf);
-void common_free_encryption_state(struct smb_trans_enc_state **pp_es);
-void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf);
-bool cli_encryption_on(struct cli_state *cli);
-void cli_free_encryption_context(struct cli_state *cli);
-void cli_free_enc_buffer(struct cli_state *cli, char *buf);
-NTSTATUS cli_decrypt_message(struct cli_state *cli);
-NTSTATUS cli_encrypt_message(struct cli_state *cli, char *buf, char **buf_out);
-
-/* The following definitions come from libsmb/smb_signing.c  */
-
-bool cli_simple_set_signing(struct cli_state *cli,
-			    const DATA_BLOB user_session_key,
-			    const DATA_BLOB response);
-bool cli_null_set_signing(struct cli_state *cli);
-bool cli_temp_set_signing(struct cli_state *cli);
-void cli_free_signing_context(struct cli_state *cli);
-void cli_calculate_sign_mac(struct cli_state *cli, char *buf);
-bool cli_check_sign_mac(struct cli_state *cli, char *buf);
-bool client_set_trans_sign_state_on(struct cli_state *cli, uint16 mid);
-bool client_set_trans_sign_state_off(struct cli_state *cli, uint16 mid);
-bool client_is_signing_on(struct cli_state *cli);
-bool srv_oplock_set_signing(bool onoff);
-bool srv_check_sign_mac(const char *inbuf, bool must_be_ok);
-void srv_calculate_sign_mac(char *outbuf);
-void srv_defer_sign_response(uint16 mid);
-void srv_cancel_sign_response(uint16 mid);
-void srv_set_signing_negotiated(void);
-bool srv_is_signing_active(void);
-bool srv_is_signing_negotiated(void);
-bool srv_signing_started(void);
-void srv_set_signing(const DATA_BLOB user_session_key, const DATA_BLOB response);
-
-/* The following definitions come from libsmb/smbdes.c  */
-
-void des_crypt56(unsigned char *out, const unsigned char *in, const unsigned char *key, int forw);
-void E_P16(const unsigned char *p14,unsigned char *p16);
-void E_P24(const unsigned char *p21, const unsigned char *c8, unsigned char *p24);
-void D_P16(const unsigned char *p14, const unsigned char *in, unsigned char *out);
-void E_old_pw_hash( unsigned char *p14, const unsigned char *in, unsigned char *out);
-void des_crypt128(unsigned char out[8], const unsigned char in[8], const unsigned char key[16]);
-void des_crypt64(unsigned char out[8], const unsigned char in[8], const unsigned char key[8]);
-void des_crypt112(unsigned char out[8], const unsigned char in[8], const unsigned char key[14], int forw);
-void cred_hash3(unsigned char *out, const unsigned char *in, const unsigned char *key, int forw);
-void des_crypt112_16(unsigned char out[16], unsigned char in[16], const unsigned char key[14], int forw);
-void SamOEMhash( unsigned char *data, const unsigned char key[16], size_t len);
-void SamOEMhashBlob( unsigned char *data, size_t len, DATA_BLOB *key);
-void sam_pwd_hash(unsigned int rid, const uchar *in, uchar *out, int forw);
-
-/* The following definitions come from libsmb/smbencrypt.c  */
-
-void SMBencrypt_hash(const uchar lm_hash[16], const uchar *c8, uchar p24[24]);
-bool SMBencrypt(const char *passwd, const uchar *c8, uchar p24[24]);
-void E_md4hash(const char *passwd, uchar p16[16]);
-void E_md5hash(const uchar salt[16], const uchar nthash[16], uchar hash_out[16]);
-bool E_deshash(const char *passwd, uchar p16[16]);
-void nt_lm_owf_gen(const char *pwd, uchar nt_p16[16], uchar p16[16]);
-bool ntv2_owf_gen(const uchar owf[16],
-		  const char *user_in, const char *domain_in,
-		  bool upper_case_domain, /* Transform the domain into UPPER case */
-		  uchar kr_buf[16]);
-void SMBOWFencrypt(const uchar passwd[16], const uchar *c8, uchar p24[24]);
-void NTLMSSPOWFencrypt(const uchar passwd[8], const uchar *ntlmchalresp, uchar p24[24]);
-void SMBNTencrypt_hash(const uchar nt_hash[16], uchar *c8, uchar *p24);
-void SMBNTencrypt(const char *passwd, uchar *c8, uchar *p24);
-void SMBOWFencrypt_ntv2(const uchar kr[16],
-			const DATA_BLOB *srv_chal,
-			const DATA_BLOB *cli_chal,
-			uchar resp_buf[16]);
-void SMBsesskeygen_ntv2(const uchar kr[16],
-			const uchar * nt_resp, uint8 sess_key[16]);
-void SMBsesskeygen_ntv1(const uchar kr[16],
-			const uchar * nt_resp, uint8 sess_key[16]);
-void SMBsesskeygen_lm_sess_key(const uchar lm_hash[16],
-			const uchar lm_resp[24], /* only uses 8 */ 
-			uint8 sess_key[16]);
-DATA_BLOB NTLMv2_generate_names_blob(const char *hostname, 
-				     const char *domain);
-bool SMBNTLMv2encrypt_hash(const char *user, const char *domain, const uchar nt_hash[16], 
-		      const DATA_BLOB *server_chal, 
-		      const DATA_BLOB *names_blob,
-		      DATA_BLOB *lm_response, DATA_BLOB *nt_response, 
-		      DATA_BLOB *user_session_key) ;
-bool SMBNTLMv2encrypt(const char *user, const char *domain, const char *password, 
-		      const DATA_BLOB *server_chal, 
-		      const DATA_BLOB *names_blob,
-		      DATA_BLOB *lm_response, DATA_BLOB *nt_response, 
-		      DATA_BLOB *user_session_key) ;
-bool encode_pw_buffer(uint8 buffer[516], const char *password, int string_flags);
-bool decode_pw_buffer(TALLOC_CTX *ctx,
-			uint8 in_buffer[516],
-			char **pp_new_pwrd,
-			uint32 *new_pw_len,
-			int string_flags);
-void encode_or_decode_arc4_passwd_buffer(unsigned char pw_buf[532], const DATA_BLOB *psession_key);
-void sess_crypt_blob(DATA_BLOB *out, const DATA_BLOB *in, const DATA_BLOB *session_key, int forward);
-char *decrypt_trustdom_secret(uint8_t nt_hash[16], DATA_BLOB *data_in);
-void encode_wkssvc_join_password_buffer(TALLOC_CTX *mem_ctx,
-					const char *pwd,
-					DATA_BLOB *session_key,
-					struct wkssvc_PasswordBuffer **pwd_buf);
-WERROR decode_wkssvc_join_password_buffer(TALLOC_CTX *mem_ctx,
-					  struct wkssvc_PasswordBuffer *pwd_buf,
-					  DATA_BLOB *session_key,
-					  char **pwd);
-DATA_BLOB decrypt_drsuapi_blob(TALLOC_CTX *mem_ctx,
-			       const DATA_BLOB *session_key,
-			       bool rcrypt,
-			       uint32_t rid,
-			       const DATA_BLOB *buffer);
-
-/* The following definitions come from libsmb/smberr.c  */
-
-const char *smb_dos_err_name(uint8 e_class, uint16 num);
-const char *get_dos_error_msg(WERROR result);
-const char *smb_dos_err_class(uint8 e_class);
-char *smb_dos_errstr(char *inbuf);
-WERROR map_werror_from_unix(int error);
-
-/* The following definitions come from libsmb/spnego.c  */
-
-ssize_t read_spnego_data(DATA_BLOB data, SPNEGO_DATA *token);
-ssize_t write_spnego_data(DATA_BLOB *blob, SPNEGO_DATA *spnego);
-bool free_spnego_data(SPNEGO_DATA *spnego);
-
-/* The following definitions come from libsmb/trustdom_cache.c  */
-
-bool trustdom_cache_enable(void);
-bool trustdom_cache_shutdown(void);
-bool trustdom_cache_store(char* name, char* alt_name, const DOM_SID *sid,
-                          time_t timeout);
-bool trustdom_cache_fetch(const char* name, DOM_SID* sid);
-uint32 trustdom_cache_fetch_timestamp( void );
-bool trustdom_cache_store_timestamp( uint32 t, time_t timeout );
-void trustdom_cache_flush(void);
-void update_trustdom_cache( void );
-
-/* The following definitions come from libsmb/trusts_util.c  */
-
-NTSTATUS trust_pw_change_and_store_it(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
-				      const char *domain,
-				      unsigned char orig_trust_passwd_hash[16],
-				      uint32 sec_channel_type);
-NTSTATUS trust_pw_find_change_and_store_it(struct rpc_pipe_client *cli, 
-					   TALLOC_CTX *mem_ctx, 
-					   const char *domain) ;
-bool enumerate_domain_trusts( TALLOC_CTX *mem_ctx, const char *domain,
-                                     char ***domain_names, uint32 *num_domains,
-				     DOM_SID **sids );
-
-/* The following definitions come from libsmb/unexpected.c  */
-
-void unexpected_packet(struct packet_struct *p);
-void clear_unexpected(time_t t);
-struct packet_struct *receive_unexpected(enum packet_type packet_type, int id,
-					 const char *mailslot_name);
-
-/* The following definitions come from locking/brlock.c  */
-
-bool brl_same_context(const struct lock_context *ctx1, 
-			     const struct lock_context *ctx2);
-void brl_init(bool read_only);
-void brl_shutdown(void);
-NTSTATUS brl_lock(struct messaging_context *msg_ctx,
-		struct byte_range_lock *br_lck,
-		uint32 smbpid,
-		struct server_id pid,
-		br_off start,
-		br_off size, 
-		enum brl_type lock_type,
-		enum brl_flavour lock_flav,
-		bool blocking_lock,
-		uint32 *psmbpid);
-bool brl_unlock(struct messaging_context *msg_ctx,
-		struct byte_range_lock *br_lck,
-		uint32 smbpid,
-		struct server_id pid,
-		br_off start,
-		br_off size,
-		enum brl_flavour lock_flav);
-bool brl_locktest(struct byte_range_lock *br_lck,
-		uint32 smbpid,
-		struct server_id pid,
-		br_off start,
-		br_off size, 
-		enum brl_type lock_type,
-		enum brl_flavour lock_flav);
-NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
-		uint32 *psmbpid,
-		struct server_id pid,
-		br_off *pstart,
-		br_off *psize, 
-		enum brl_type *plock_type,
-		enum brl_flavour lock_flav);
-bool brl_lock_cancel(struct byte_range_lock *br_lck,
-		uint32 smbpid,
-		struct server_id pid,
-		br_off start,
-		br_off size,
-		enum brl_flavour lock_flav);
-void brl_close_fnum(struct messaging_context *msg_ctx,
-		    struct byte_range_lock *br_lck);
-int brl_forall(void (*fn)(struct file_id id, struct server_id pid,
-			  enum brl_type lock_type,
-			  enum brl_flavour lock_flav,
-			  br_off start, br_off size,
-			  void *private_data),
-	       void *private_data);
-struct byte_range_lock *brl_get_locks(TALLOC_CTX *mem_ctx,
-					files_struct *fsp);
-struct byte_range_lock *brl_get_locks_readonly(TALLOC_CTX *mem_ctx,
-					files_struct *fsp);
-void brl_register_msgs(struct messaging_context *msg_ctx);
-
-/* The following definitions come from locking/locking.c  */
-
-const char *lock_type_name(enum brl_type lock_type);
-const char *lock_flav_name(enum brl_flavour lock_flav);
-bool is_locked(files_struct *fsp,
-		uint32 smbpid,
-		SMB_BIG_UINT count,
-		SMB_BIG_UINT offset, 
-		enum brl_type lock_type);
-NTSTATUS query_lock(files_struct *fsp,
-			uint32 *psmbpid,
-			SMB_BIG_UINT *pcount,
-			SMB_BIG_UINT *poffset,
-			enum brl_type *plock_type,
-			enum brl_flavour lock_flav);
-struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
-			files_struct *fsp,
-			uint32 lock_pid,
-			SMB_BIG_UINT count,
-			SMB_BIG_UINT offset,
-			enum brl_type lock_type,
-			enum brl_flavour lock_flav,
-			bool blocking_lock,
-			NTSTATUS *perr,
-			uint32 *plock_pid);
-NTSTATUS do_unlock(struct messaging_context *msg_ctx,
-			files_struct *fsp,
-			uint32 lock_pid,
-			SMB_BIG_UINT count,
-			SMB_BIG_UINT offset,
-			enum brl_flavour lock_flav);
-NTSTATUS do_lock_cancel(files_struct *fsp,
-			uint32 lock_pid,
-			SMB_BIG_UINT count,
-			SMB_BIG_UINT offset,
-			enum brl_flavour lock_flav);
-void locking_close_file(struct messaging_context *msg_ctx,
-			files_struct *fsp);
-bool locking_init(void);
-bool locking_init_readonly(void);
-bool locking_end(void);
-char *share_mode_str(TALLOC_CTX *ctx, int num, const struct share_mode_entry *e);
-struct share_mode_lock *get_share_mode_lock(TALLOC_CTX *mem_ctx,
-					    const struct file_id id,
-					    const char *servicepath,
-					    const char *fname,
-					    const struct timespec *old_write_time);
-struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx,
-						  const struct file_id id,
-						  const char *servicepath,
-						  const char *fname);
-bool rename_share_filename(struct messaging_context *msg_ctx,
-			struct share_mode_lock *lck,
-			const char *servicepath,
-			const char *newname);
-void get_file_infos(struct file_id id,
-		    bool *delete_on_close,
-		    struct timespec *write_time);
-bool is_valid_share_mode_entry(const struct share_mode_entry *e);
-bool is_deferred_open_entry(const struct share_mode_entry *e);
-bool is_unused_share_mode_entry(const struct share_mode_entry *e);
-void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
-			uid_t uid, uint16 mid, uint16 op_type, bool initial_delete_on_close_allowed);
-void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
-		       struct timeval request_time,
-		       struct file_id id);
-bool del_share_mode(struct share_mode_lock *lck, files_struct *fsp);
-void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid);
-bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
-bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
-NTSTATUS can_set_delete_on_close(files_struct *fsp, bool delete_on_close,
-				 uint32 dosmode);
-bool can_set_initial_delete_on_close(const struct share_mode_lock *lck);
-void set_delete_on_close_token(struct share_mode_lock *lck, UNIX_USER_TOKEN *tok);
-void set_delete_on_close_lck(struct share_mode_lock *lck, bool delete_on_close, UNIX_USER_TOKEN *tok);
-bool set_delete_on_close(files_struct *fsp, bool delete_on_close, UNIX_USER_TOKEN *tok);
-bool set_allow_initial_delete_on_close(struct share_mode_lock *lck, files_struct *fsp, bool delete_on_close);
-bool set_sticky_write_time(struct file_id fileid, struct timespec write_time);
-bool set_write_time(struct file_id fileid, struct timespec write_time);
-int share_mode_forall(void (*fn)(const struct share_mode_entry *, const char *,
-				 const char *, void *),
-		      void *private_data);
-
-/* The following definitions come from locking/posix.c  */
-
-bool is_posix_locked(files_struct *fsp,
-			SMB_BIG_UINT *pu_offset,
-			SMB_BIG_UINT *pu_count,
-			enum brl_type *plock_type,
-			enum brl_flavour lock_flav);
-bool posix_locking_init(bool read_only);
-bool posix_locking_end(void);
-void reduce_windows_lock_ref_count(files_struct *fsp, unsigned int dcount);
-int fd_close_posix(struct files_struct *fsp);
-bool set_posix_lock_windows_flavour(files_struct *fsp,
-			SMB_BIG_UINT u_offset,
-			SMB_BIG_UINT u_count,
-			enum brl_type lock_type,
-			const struct lock_context *lock_ctx,
-			const struct lock_struct *plocks,
-			int num_locks,
-			int *errno_ret);
-bool release_posix_lock_windows_flavour(files_struct *fsp,
-				SMB_BIG_UINT u_offset,
-				SMB_BIG_UINT u_count,
-				enum brl_type deleted_lock_type,
-				const struct lock_context *lock_ctx,
-				const struct lock_struct *plocks,
-				int num_locks);
-bool set_posix_lock_posix_flavour(files_struct *fsp,
-			SMB_BIG_UINT u_offset,
-			SMB_BIG_UINT u_count,
-			enum brl_type lock_type,
-			int *errno_ret);
-bool release_posix_lock_posix_flavour(files_struct *fsp,
-				SMB_BIG_UINT u_offset,
-				SMB_BIG_UINT u_count,
-				const struct lock_context *lock_ctx,
-				const struct lock_struct *plocks,
-				int num_locks);
-
-/* The following definitions come from modules/vfs_default.c  */
-
-int vfswrap_lstat(vfs_handle_struct *handle,  const char *path, SMB_STRUCT_STAT *sbuf);
-ssize_t vfswrap_llistxattr(struct vfs_handle_struct *handle, const char *path, char *list, size_t size);
-ssize_t vfswrap_flistxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, char *list, size_t size);
-NTSTATUS vfs_default_init(void);
-
-/* The following definitions come from nmbd/asyncdns.c  */
-
-int asyncdns_fd(void);
-void kill_async_dns_child(void);
-void start_async_dns(void);
-void run_dns_queue(void);
-bool queue_dns_query(struct packet_struct *p,struct nmb_name *question);
-bool queue_dns_query(struct packet_struct *p,struct nmb_name *question);
-void kill_async_dns_child(void);
-
-/* The following definitions come from nmbd/nmbd.c  */
-
-struct event_context *nmbd_event_context(void);
-struct messaging_context *nmbd_messaging_context(void);
-
-/* The following definitions come from nmbd/nmbd_become_dmb.c  */
-
-void add_domain_names(time_t t);
-
-/* The following definitions come from nmbd/nmbd_become_lmb.c  */
-
-void insert_permanent_name_into_unicast( struct subnet_record *subrec, 
-                                                struct nmb_name *nmbname, uint16 nb_type );
-void unbecome_local_master_browser(struct subnet_record *subrec, struct work_record *work,
-                                   bool force_new_election);
-void become_local_master_browser(struct subnet_record *subrec, struct work_record *work);
-void set_workgroup_local_master_browser_name( struct work_record *work, const char *newname);
-
-/* The following definitions come from nmbd/nmbd_browserdb.c  */
-
-void update_browser_death_time( struct browse_cache_record *browc );
-struct browse_cache_record *create_browser_in_lmb_cache( const char *work_name, 
-                                                         const char *browser_name, 
-                                                         struct in_addr ip );
-struct browse_cache_record *find_browser_in_lmb_cache( const char *browser_name );
-void expire_lmb_browsers( time_t t );
-
-/* The following definitions come from nmbd/nmbd_browsesync.c  */
-
-void dmb_expire_and_sync_browser_lists(time_t t);
-void announce_and_sync_with_domain_master_browser( struct subnet_record *subrec,
-                                                   struct work_record *work);
-void collect_all_workgroup_names_from_wins_server(time_t t);
-void sync_all_dmbs(time_t t);
-
-/* The following definitions come from nmbd/nmbd_elections.c  */
-
-void check_master_browser_exists(time_t t);
-void run_elections(time_t t);
-void process_election(struct subnet_record *subrec, struct packet_struct *p, char *buf);
-bool check_elections(void);
-void nmbd_message_election(struct messaging_context *msg,
-			   void *private_data,
-			   uint32_t msg_type,
-			   struct server_id server_id,
-			   DATA_BLOB *data);
-
-/* The following definitions come from nmbd/nmbd_incomingdgrams.c  */
-
-void tell_become_backup(void);
-void process_host_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf);
-void process_workgroup_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf);
-void process_local_master_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf);
-void process_master_browser_announce(struct subnet_record *subrec, 
-                                     struct packet_struct *p,char *buf);
-void process_lm_host_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf, int len);
-void process_get_backup_list_request(struct subnet_record *subrec,
-                                     struct packet_struct *p,char *buf);
-void process_reset_browser(struct subnet_record *subrec,
-                                  struct packet_struct *p,char *buf);
-void process_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf);
-void process_lm_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf, int len);
-
-/* The following definitions come from nmbd/nmbd_incomingrequests.c  */
-
-void process_name_release_request(struct subnet_record *subrec, 
-                                  struct packet_struct *p);
-void process_name_refresh_request(struct subnet_record *subrec,
-                                  struct packet_struct *p);
-void process_name_registration_request(struct subnet_record *subrec, 
-                                       struct packet_struct *p);
-void process_node_status_request(struct subnet_record *subrec, struct packet_struct *p);
-void process_name_query_request(struct subnet_record *subrec, struct packet_struct *p);
-
-/* The following definitions come from nmbd/nmbd_lmhosts.c  */
-
-void load_lmhosts_file(const char *fname);
-bool find_name_in_lmhosts(struct nmb_name *nmbname, struct name_record **namerecp);
-
-/* The following definitions come from nmbd/nmbd_logonnames.c  */
-
-void add_logon_names(void);
-
-/* The following definitions come from nmbd/nmbd_mynames.c  */
-
-void register_my_workgroup_one_subnet(struct subnet_record *subrec);
-bool register_my_workgroup_and_names(void);
-void release_wins_names(void);
-void refresh_my_names(time_t t);
-
-/* The following definitions come from nmbd/nmbd_namelistdb.c  */
-
-void set_samba_nb_type(void);
-void remove_name_from_namelist(struct subnet_record *subrec, 
-				struct name_record *namerec );
-struct name_record *find_name_on_subnet(struct subnet_record *subrec,
-				const struct nmb_name *nmbname,
-				bool self_only);
-struct name_record *find_name_for_remote_broadcast_subnet(struct nmb_name *nmbname,
-						bool self_only);
-void update_name_ttl( struct name_record *namerec, int ttl );
-bool add_name_to_subnet( struct subnet_record *subrec,
-			const char *name,
-			int type,
-			uint16 nb_flags,
-			int ttl,
-			enum name_source source,
-			int num_ips,
-			struct in_addr *iplist);
-void standard_success_register(struct subnet_record *subrec, 
-                             struct userdata_struct *userdata,
-                             struct nmb_name *nmbname, uint16 nb_flags, int ttl,
-                             struct in_addr registered_ip);
-void standard_fail_register( struct subnet_record   *subrec,
-                             struct nmb_name        *nmbname );
-bool find_ip_in_name_record( struct name_record *namerec, struct in_addr ip );
-void add_ip_to_name_record( struct name_record *namerec, struct in_addr new_ip );
-void remove_ip_from_name_record( struct name_record *namerec,
-                                 struct in_addr      remove_ip );
-void standard_success_release( struct subnet_record   *subrec,
-                               struct userdata_struct *userdata,
-                               struct nmb_name        *nmbname,
-                               struct in_addr          released_ip );
-void expire_names(time_t t);
-void add_samba_names_to_subnet( struct subnet_record *subrec );
-void dump_name_record( struct name_record *namerec, XFILE *fp);
-void dump_all_namelists(void);
-
-/* The following definitions come from nmbd/nmbd_namequery.c  */
-
-bool query_name(struct subnet_record *subrec, const char *name, int type,
-                   query_name_success_function success_fn,
-                   query_name_fail_function fail_fn, 
-                   struct userdata_struct *userdata);
-bool query_name_from_wins_server(struct in_addr ip_to, 
-                   const char *name, int type,
-                   query_name_success_function success_fn,
-                   query_name_fail_function fail_fn, 
-                   struct userdata_struct *userdata);
-
-/* The following definitions come from nmbd/nmbd_nameregister.c  */
-
-void register_name(struct subnet_record *subrec,
-                   const char *name, int type, uint16 nb_flags,
-                   register_name_success_function success_fn,
-                   register_name_fail_function fail_fn,
-                   struct userdata_struct *userdata);
-void wins_refresh_name(struct name_record *namerec);
-
-/* The following definitions come from nmbd/nmbd_namerelease.c  */
-
-void release_name(struct subnet_record *subrec, struct name_record *namerec,
-		  release_name_success_function success_fn,
-		  release_name_fail_function fail_fn,
-		  struct userdata_struct *userdata);
-
-/* The following definitions come from nmbd/nmbd_nodestatus.c  */
-
-bool node_status(struct subnet_record *subrec, struct nmb_name *nmbname,
-                 struct in_addr send_ip, node_status_success_function success_fn, 
-                 node_status_fail_function fail_fn, struct userdata_struct *userdata);
-
-/* The following definitions come from nmbd/nmbd_packets.c  */
-
-uint16 get_nb_flags(char *buf);
-void set_nb_flags(char *buf, uint16 nb_flags);
-struct response_record *queue_register_name( struct subnet_record *subrec,
-                          response_function resp_fn,
-                          timeout_response_function timeout_fn,
-                          register_name_success_function success_fn,
-                          register_name_fail_function fail_fn,
-                          struct userdata_struct *userdata,
-                          struct nmb_name *nmbname,
-                          uint16 nb_flags);
-void queue_wins_refresh(struct nmb_name *nmbname,
-			response_function resp_fn,
-			timeout_response_function timeout_fn,
-			uint16 nb_flags,
-			struct in_addr refresh_ip,
-			const char *tag);
-struct response_record *queue_register_multihomed_name( struct subnet_record *subrec,
-							response_function resp_fn,
-							timeout_response_function timeout_fn,
-							register_name_success_function success_fn,
-							register_name_fail_function fail_fn,
-							struct userdata_struct *userdata,
-							struct nmb_name *nmbname,
-							uint16 nb_flags,
-							struct in_addr register_ip,
-							struct in_addr wins_ip);
-struct response_record *queue_release_name( struct subnet_record *subrec,
-					    response_function resp_fn,
-					    timeout_response_function timeout_fn,
-					    release_name_success_function success_fn,
-					    release_name_fail_function fail_fn,
-					    struct userdata_struct *userdata,
-					    struct nmb_name *nmbname,
-					    uint16 nb_flags,
-					    struct in_addr release_ip,
-					    struct in_addr dest_ip);
-struct response_record *queue_query_name( struct subnet_record *subrec,
-                          response_function resp_fn,
-                          timeout_response_function timeout_fn,
-                          query_name_success_function success_fn,
-                          query_name_fail_function fail_fn,
-                          struct userdata_struct *userdata,
-                          struct nmb_name *nmbname);
-struct response_record *queue_query_name_from_wins_server( struct in_addr to_ip,
-                          response_function resp_fn,
-                          timeout_response_function timeout_fn,
-                          query_name_success_function success_fn,
-                          query_name_fail_function fail_fn,
-                          struct userdata_struct *userdata,
-                          struct nmb_name *nmbname);
-struct response_record *queue_node_status( struct subnet_record *subrec,
-                          response_function resp_fn,
-                          timeout_response_function timeout_fn,
-                          node_status_success_function success_fn,
-                          node_status_fail_function fail_fn,
-                          struct userdata_struct *userdata,
-                          struct nmb_name *nmbname,
-                          struct in_addr send_ip);
-void reply_netbios_packet(struct packet_struct *orig_packet,
-                          int rcode, enum netbios_reply_type_code rcv_code, int opcode,
-                          int ttl, char *data,int len);
-void queue_packet(struct packet_struct *packet);
-void run_packet_queue(void);
-void retransmit_or_expire_response_records(time_t t);
-bool listen_for_packets(bool run_election);
-bool send_mailslot(bool unique, const char *mailslot,char *buf, size_t len,
-                   const char *srcname, int src_type,
-                   const char *dstname, int dest_type,
-                   struct in_addr dest_ip,struct in_addr src_ip,
-		   int dest_port);
-
-/* The following definitions come from nmbd/nmbd_processlogon.c  */
-
-void process_logon_packet(struct packet_struct *p, char *buf,int len, 
-                          const char *mailslot);
-
-/* The following definitions come from nmbd/nmbd_responserecordsdb.c  */
-
-void remove_response_record(struct subnet_record *subrec,
-				struct response_record *rrec);
-struct response_record *make_response_record( struct subnet_record *subrec,
-					      struct packet_struct *p,
-					      response_function resp_fn,
-					      timeout_response_function timeout_fn,
-					      success_function success_fn,
-					      fail_function fail_fn,
-					      struct userdata_struct *userdata);
-struct response_record *find_response_record(struct subnet_record **ppsubrec,
-				uint16 id);
-bool is_refresh_already_queued(struct subnet_record *subrec, struct name_record *namerec);
-
-/* The following definitions come from nmbd/nmbd_sendannounce.c  */
-
-void send_browser_reset(int reset_type, const char *to_name, int to_type, struct in_addr to_ip);
-void broadcast_announce_request(struct subnet_record *subrec, struct work_record *work);
-void announce_my_server_names(time_t t);
-void announce_my_lm_server_names(time_t t);
-void reset_announce_timer(void);
-void announce_myself_to_domain_master_browser(time_t t);
-void announce_my_servers_removed(void);
-void announce_remote(time_t t);
-void browse_sync_remote(time_t t);
-
-/* The following definitions come from nmbd/nmbd_serverlistdb.c  */
-
-void remove_all_servers(struct work_record *work);
-struct server_record *find_server_in_workgroup(struct work_record *work, const char *name);
-void remove_server_from_workgroup(struct work_record *work, struct server_record *servrec);
-struct server_record *create_server_on_workgroup(struct work_record *work,
-                                                 const char *name,int servertype, 
-                                                 int ttl, const char *comment);
-void update_server_ttl(struct server_record *servrec, int ttl);
-void expire_servers(struct work_record *work, time_t t);
-void write_browse_list_entry(XFILE *fp, const char *name, uint32 rec_type,
-		const char *local_master_browser_name, const char *description);
-void write_browse_list(time_t t, bool force_write);
-
-/* The following definitions come from nmbd/nmbd_subnetdb.c  */
-
-void close_subnet(struct subnet_record *subrec);
-struct subnet_record *make_normal_subnet(const struct interface *iface);
-bool create_subnets(void);
-bool we_are_a_wins_client(void);
-struct subnet_record *get_next_subnet_maybe_unicast(struct subnet_record *subrec);
-struct subnet_record *get_next_subnet_maybe_unicast_or_wins_server(struct subnet_record *subrec);
-
-/* The following definitions come from nmbd/nmbd_synclists.c  */
-
-void sync_browse_lists(struct work_record *work,
-		       char *name, int nm_type, 
-		       struct in_addr ip, bool local, bool servers);
-void sync_check_completion(void);
-
-/* The following definitions come from nmbd/nmbd_winsproxy.c  */
-
-void make_wins_proxy_name_query_request( struct subnet_record *subrec, 
-                                         struct packet_struct *incoming_packet,
-                                         struct nmb_name *question_name);
-
-/* The following definitions come from nmbd/nmbd_winsserver.c  */
-
-struct name_record *find_name_on_wins_subnet(const struct nmb_name *nmbname, bool self_only);
-bool wins_store_changed_namerec(const struct name_record *namerec);
-bool add_name_to_wins_subnet(const struct name_record *namerec);
-bool remove_name_from_wins_namelist(struct name_record *namerec);
-void dump_wins_subnet_namelist(XFILE *fp);
-bool packet_is_for_wins_server(struct packet_struct *packet);
-bool initialise_wins(void);
-void wins_process_name_refresh_request( struct subnet_record *subrec,
-                                        struct packet_struct *p );
-void wins_process_name_registration_request(struct subnet_record *subrec,
-                                            struct packet_struct *p);
-void wins_process_multihomed_name_registration_request( struct subnet_record *subrec,
-                                                        struct packet_struct *p);
-void fetch_all_active_wins_1b_names(void);
-void send_wins_name_query_response(int rcode, struct packet_struct *p, 
-                                          struct name_record *namerec);
-void wins_process_name_query_request(struct subnet_record *subrec, 
-                                     struct packet_struct *p);
-void wins_process_name_release_request(struct subnet_record *subrec,
-                                       struct packet_struct *p);
-void initiate_wins_processing(time_t t);
-void wins_write_name_record(struct name_record *namerec, XFILE *fp);
-void wins_write_database(time_t t, bool background);
-void nmbd_wins_new_entry(struct messaging_context *msg,
-                                       void *private_data,
-                                       uint32_t msg_type,
-                                       struct server_id server_id,
-                                       DATA_BLOB *data);
-
-/* The following definitions come from nmbd/nmbd_workgroupdb.c  */
-
-struct work_record *find_workgroup_on_subnet(struct subnet_record *subrec, 
-                                             const char *name);
-struct work_record *create_workgroup_on_subnet(struct subnet_record *subrec,
-                                               const char *name, int ttl);
-void update_workgroup_ttl(struct work_record *work, int ttl);
-void initiate_myworkgroup_startup(struct subnet_record *subrec, struct work_record *work);
-void dump_workgroups(bool force_write);
-void expire_workgroups_and_servers(time_t t);
-
-/* The following definitions come from param/loadparm.c  */
-
-char *lp_smb_ports(void);
-char *lp_dos_charset(void);
-char *lp_unix_charset(void);
-char *lp_display_charset(void);
-char *lp_logfile(void);
-char *lp_configfile(void);
-char *lp_smb_passwd_file(void);
-char *lp_private_dir(void);
-char *lp_serverstring(void);
-int lp_printcap_cache_time(void);
-char *lp_addport_cmd(void);
-char *lp_enumports_cmd(void);
-char *lp_addprinter_cmd(void);
-char *lp_deleteprinter_cmd(void);
-char *lp_os2_driver_map(void);
-char *lp_lockdir(void);
-char *lp_piddir(void);
-char *lp_mangling_method(void);
-int lp_mangle_prefix(void);
-char *lp_utmpdir(void);
-char *lp_wtmpdir(void);
-bool lp_utmp(void);
-char *lp_rootdir(void);
-char *lp_defaultservice(void);
-char *lp_msg_command(void);
-char *lp_get_quota_command(void);
-char *lp_set_quota_command(void);
-char *lp_auto_services(void);
-char *lp_passwd_program(void);
-char *lp_passwd_chat(void);
-char *lp_passwordserver(void);
-char *lp_name_resolve_order(void);
-char *lp_realm(void);
-const char *lp_afs_username_map(void);
-int lp_afs_token_lifetime(void);
-char *lp_log_nt_token_command(void);
-char *lp_username_map(void);
-const char *lp_logon_script(void);
-const char *lp_logon_path(void);
-const char *lp_logon_drive(void);
-const char *lp_logon_home(void);
-char *lp_remote_announce(void);
-char *lp_remote_browse_sync(void);
-const char **lp_wins_server_list(void);
-const char **lp_interfaces(void);
-char *lp_socket_address(void);
-char *lp_nis_home_map_name(void);
-const char **lp_netbios_aliases(void);
-const char *lp_passdb_backend(void);
-const char **lp_preload_modules(void);
-char *lp_panic_action(void);
-char *lp_adduser_script(void);
-char *lp_renameuser_script(void);
-char *lp_deluser_script(void);
-const char *lp_guestaccount(void);
-char *lp_addgroup_script(void);
-char *lp_delgroup_script(void);
-char *lp_addusertogroup_script(void);
-char *lp_deluserfromgroup_script(void);
-char *lp_setprimarygroup_script(void);
-char *lp_addmachine_script(void);
-char *lp_shutdown_script(void);
-char *lp_abort_shutdown_script(void);
-char *lp_username_map_script(void);
-char *lp_check_password_script(void);
-char *lp_wins_hook(void);
-const char *lp_template_homedir(void);
-const char *lp_template_shell(void);
-const char *lp_winbind_separator(void);
-int lp_acl_compatibility(void);
-bool lp_winbind_enum_users(void);
-bool lp_winbind_enum_groups(void);
-bool lp_winbind_use_default_domain(void);
-bool lp_winbind_trusted_domains_only(void);
-bool lp_winbind_nested_groups(void);
-int lp_winbind_expand_groups(void);
-bool lp_winbind_refresh_tickets(void);
-bool lp_winbind_offline_logon(void);
-bool lp_winbind_normalize_names(void);
-bool lp_winbind_rpc_only(void);
-const char **lp_idmap_domains(void);
-const char *lp_idmap_backend(void);
-char *lp_idmap_alloc_backend(void);
-int lp_idmap_cache_time(void);
-int lp_idmap_negative_cache_time(void);
-int lp_keepalive(void);
-bool lp_passdb_expand_explicit(void);
-char *lp_ldap_suffix(void);
-char *lp_ldap_admin_dn(void);
-int lp_ldap_ssl(void);
-int lp_ldap_passwd_sync(void);
-bool lp_ldap_delete_dn(void);
-int lp_ldap_replication_sleep(void);
-int lp_ldap_timeout(void);
-int lp_ldap_connection_timeout(void);
-int lp_ldap_page_size(void);
-int lp_ldap_debug_level(void);
-int lp_ldap_debug_threshold(void);
-char *lp_add_share_cmd(void);
-char *lp_change_share_cmd(void);
-char *lp_delete_share_cmd(void);
-char *lp_usershare_path(void);
-const char **lp_usershare_prefix_allow_list(void);
-const char **lp_usershare_prefix_deny_list(void);
-const char **lp_eventlog_list(void);
-bool lp_registry_shares(void);
-bool lp_usershare_allow_guests(void);
-bool lp_usershare_owner_only(void);
-bool lp_disable_netbios(void);
-bool lp_reset_on_zero_vc(void);
-bool lp_ms_add_printer_wizard(void);
-bool lp_dns_proxy(void);
-bool lp_wins_support(void);
-bool lp_we_are_a_wins_server(void);
-bool lp_wins_proxy(void);
-bool lp_local_master(void);
-bool lp_domain_logons(void);
-const char **lp_init_logon_delayed_hosts(void);
-int lp_init_logon_delay(void);
-bool lp_load_printers(void);
-bool lp_readraw(void);
-bool lp_large_readwrite(void);
-bool lp_writeraw(void);
-bool lp_null_passwords(void);
-bool lp_obey_pam_restrictions(void);
-bool lp_encrypted_passwords(void);
-bool lp_update_encrypted(void);
-int lp_client_schannel(void);
-int lp_server_schannel(void);
-bool lp_syslog_only(void);
-bool lp_timestamp_logs(void);
-bool lp_debug_prefix_timestamp(void);
-bool lp_debug_hires_timestamp(void);
-bool lp_debug_pid(void);
-bool lp_debug_uid(void);
-bool lp_debug_class(void);
-bool lp_enable_core_files(void);
-bool lp_browse_list(void);
-bool lp_nis_home_map(void);
-bool lp_bind_interfaces_only(void);
-bool lp_pam_password_change(void);
-bool lp_unix_password_sync(void);
-bool lp_passwd_chat_debug(void);
-int lp_passwd_chat_timeout(void);
-bool lp_nt_pipe_support(void);
-bool lp_nt_status_support(void);
-bool lp_stat_cache(void);
-int lp_max_stat_cache_size(void);
-bool lp_allow_trusted_domains(void);
-int lp_restrict_anonymous(void);
-bool lp_lanman_auth(void);
-bool lp_ntlm_auth(void);
-bool lp_client_plaintext_auth(void);
-bool lp_client_lanman_auth(void);
-bool lp_client_ntlmv2_auth(void);
-bool lp_host_msdfs(void);
-bool lp_kernel_oplocks(void);
-bool lp_enhanced_browsing(void);
-bool lp_use_mmap(void);
-bool lp_unix_extensions(void);
-bool lp_use_spnego(void);
-bool lp_client_use_spnego(void);
-bool lp_hostname_lookups(void);
-bool lp_change_notify(const struct share_params *p );
-bool lp_kernel_change_notify(const struct share_params *p );
-bool lp_use_kerberos_keytab(void);
-bool lp_defer_sharing_violations(void);
-bool lp_enable_privileges(void);
-bool lp_enable_asu_support(void);
-int lp_os_level(void);
-int lp_max_ttl(void);
-int lp_max_wins_ttl(void);
-int lp_min_wins_ttl(void);
-int lp_max_log_size(void);
-int lp_max_open_files(void);
-int lp_open_files_db_hash_size(void);
-int lp_maxxmit(void);
-int lp_maxmux(void);
-int lp_passwordlevel(void);
-int lp_usernamelevel(void);
-int lp_deadtime(void);
-bool lp_getwd_cache(void);
-int lp_maxprotocol(void);
-int lp_minprotocol(void);
-int lp_security(void);
-const char **lp_auth_methods(void);
-bool lp_paranoid_server_security(void);
-int lp_maxdisksize(void);
-int lp_lpqcachetime(void);
-int lp_max_smbd_processes(void);
-bool _lp_disable_spoolss(void);
-int lp_syslog(void);
-int lp_lm_announce(void);
-int lp_lm_interval(void);
-int lp_machine_password_timeout(void);
-int lp_map_to_guest(void);
-int lp_oplock_break_wait_time(void);
-int lp_lock_spin_time(void);
-int lp_usershare_max_shares(void);
-const char *lp_socket_options(void);
-int lp_config_backend(void);
-char *lp_preexec(int );
-char *lp_postexec(int );
-char *lp_rootpreexec(int );
-char *lp_rootpostexec(int );
-char *lp_servicename(int );
-const char *lp_const_servicename(int );
-char *lp_pathname(int );
-char *lp_dontdescend(int );
-char *lp_username(int );
-const char **lp_invalid_users(int );
-const char **lp_valid_users(int );
-const char **lp_admin_users(int );
-const char **lp_svcctl_list(void);
-char *lp_cups_options(int );
-char *lp_cups_server(void);
-char *lp_iprint_server(void);
-int lp_cups_connection_timeout(void);
-const char *lp_ctdbd_socket(void);
-const char **lp_cluster_addresses(void);
-bool lp_clustering(void);
-char *lp_printcommand(int );
-char *lp_lpqcommand(int );
-char *lp_lprmcommand(int );
-char *lp_lppausecommand(int );
-char *lp_lpresumecommand(int );
-char *lp_queuepausecommand(int );
-char *lp_queueresumecommand(int );
-const char *lp_printjob_username(int );
-const char **lp_hostsallow(int );
-const char **lp_hostsdeny(int );
-char *lp_magicscript(int );
-char *lp_magicoutput(int );
-char *lp_comment(int );
-char *lp_force_user(int );
-char *lp_force_group(int );
-const char **lp_readlist(int );
-const char **lp_writelist(int );
-const char **lp_printer_admin(int );
-char *lp_fstype(int );
-const char **lp_vfs_objects(int );
-char *lp_msdfs_proxy(int );
-char *lp_veto_files(int );
-char *lp_hide_files(int );
-char *lp_veto_oplocks(int );
-bool lp_msdfs_root(int );
-char *lp_aio_write_behind(int );
-char *lp_dfree_command(int );
-bool lp_autoloaded(int );
-bool lp_preexec_close(int );
-bool lp_rootpreexec_close(int );
-int lp_casesensitive(int );
-bool lp_preservecase(int );
-bool lp_shortpreservecase(int );
-bool lp_hide_dot_files(int );
-bool lp_hide_special_files(int );
-bool lp_hideunreadable(int );
-bool lp_hideunwriteable_files(int );
-bool lp_browseable(int );
-bool lp_readonly(int );
-bool lp_no_set_dir(int );
-bool lp_guest_ok(int );
-bool lp_guest_only(int );
-bool lp_administrative_share(int );
-bool lp_print_ok(int );
-bool lp_map_hidden(int );
-bool lp_map_archive(int );
-bool lp_store_dos_attributes(int );
-bool lp_dmapi_support(int );
-bool lp_locking(const struct share_params *p );
-int lp_strict_locking(const struct share_params *p );
-bool lp_posix_locking(const struct share_params *p );
-bool lp_share_modes(int );
-bool lp_oplocks(int );
-bool lp_level2_oplocks(int );
-bool lp_onlyuser(int );
-bool lp_manglednames(const struct share_params *p );
-bool lp_widelinks(int );
-bool lp_symlinks(int );
-bool lp_syncalways(int );
-bool lp_strict_allocate(int );
-bool lp_strict_sync(int );
-bool lp_map_system(int );
-bool lp_delete_readonly(int );
-bool lp_fake_oplocks(int );
-bool lp_recursive_veto_delete(int );
-bool lp_dos_filemode(int );
-bool lp_dos_filetimes(int );
-bool lp_dos_filetime_resolution(int );
-bool lp_fake_dir_create_times(int );
-bool lp_blocking_locks(int );
-bool lp_inherit_perms(int );
-bool lp_inherit_acls(int );
-bool lp_inherit_owner(int );
-bool lp_use_client_driver(int );
-bool lp_default_devmode(int );
-bool lp_force_printername(int );
-bool lp_nt_acl_support(int );
-bool lp_force_unknown_acl_user(int );
-bool lp_ea_support(int );
-bool _lp_use_sendfile(int );
-bool lp_profile_acls(int );
-bool lp_map_acl_inherit(int );
-bool lp_afs_share(int );
-bool lp_acl_check_permissions(int );
-bool lp_acl_group_control(int );
-bool lp_acl_map_full_control(int );
-int lp_create_mask(int );
-int lp_force_create_mode(int );
-int lp_security_mask(int );
-int lp_force_security_mode(int );
-int lp_dir_mask(int );
-int lp_force_dir_mode(int );
-int lp_dir_security_mask(int );
-int lp_force_dir_security_mode(int );
-int lp_max_connections(int );
-int lp_defaultcase(int );
-int lp_minprintspace(int );
-int lp_printing(int );
-int lp_max_reported_jobs(int );
-int lp_oplock_contention_limit(int );
-int lp_csc_policy(int );
-int lp_write_cache_size(int );
-int lp_block_size(int );
-int lp_dfree_cache_time(int );
-int lp_allocation_roundup_size(int );
-int lp_aio_read_size(int );
-int lp_aio_write_size(int );
-int lp_map_readonly(int );
-int lp_directory_name_cache_size(int );
-int lp_smb_encrypt(int );
-char lp_magicchar(const struct share_params *p );
-int lp_winbind_cache_time(void);
-int lp_winbind_reconnect_delay(void);
-const char **lp_winbind_nss_info(void);
-int lp_algorithmic_rid_base(void);
-int lp_name_cache_timeout(void);
-int lp_client_signing(void);
-int lp_server_signing(void);
-int lp_client_ldap_sasl_wrapping(void);
-char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def);
-const char *lp_parm_const_string(int snum, const char *type, const char *option, const char *def);
-const char **lp_parm_string_list(int snum, const char *type, const char *option, const char **def);
-int lp_parm_int(int snum, const char *type, const char *option, int def);
-unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsigned long def);
-bool lp_parm_bool(int snum, const char *type, const char *option, bool def);
-int lp_parm_enum(int snum, const char *type, const char *option,
-		 const struct enum_list *_enum, int def);
-bool lp_add_home(const char *pszHomename, int iDefaultService,
-		 const char *user, const char *pszHomedir);
-int lp_add_service(const char *pszService, int iDefaultService);
-bool lp_add_printer(const char *pszPrintername, int iDefaultService);
-bool lp_parameter_is_valid(const char *pszParmName);
-bool lp_parameter_is_global(const char *pszParmName);
-bool lp_parameter_is_canonical(const char *parm_name);
-bool lp_canonicalize_parameter(const char *parm_name, const char **canon_parm,
-			       bool *inverse);
-bool lp_canonicalize_parameter_with_value(const char *parm_name,
-					  const char *val,
-					  const char **canon_parm,
-					  const char **canon_val);
-void show_parameter_list(void);
-bool lp_string_is_valid_boolean(const char *parm_value);
-bool lp_invert_boolean(const char *str, const char **inverse_str);
-bool lp_canonicalize_boolean(const char *str, const char**canon_str);
-bool service_ok(int iService);
-bool lp_config_backend_is_registry(void);
-bool lp_config_backend_is_file(void);
-bool lp_file_list_changed(void);
-bool lp_idmap_uid(uid_t *low, uid_t *high);
-bool lp_idmap_gid(gid_t *low, gid_t *high);
-const char *lp_ldap_machine_suffix(void);
-const char *lp_ldap_user_suffix(void);
-const char *lp_ldap_group_suffix(void);
-const char *lp_ldap_idmap_suffix(void);
-void *lp_local_ptr(int snum, void *ptr);
-bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue);
-void init_locals(void);
-bool lp_is_default(int snum, struct parm_struct *parm);
-bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal);
-struct parm_struct *lp_get_parameter(const char *param_name);
-struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters);
-bool lp_snum_ok(int iService);
-void lp_add_one_printer(char *name, char *comment);
-bool lp_loaded(void);
-void lp_killunused(bool (*snumused) (int));
-void lp_kill_all_services(void);
-void lp_killservice(int iServiceIn);
-const char* server_role_str(uint32 role);
-enum usershare_err parse_usershare_file(TALLOC_CTX *ctx,
-			SMB_STRUCT_STAT *psbuf,
-			const char *servicename,
-			int snum,
-			char **lines,
-			int numlines,
-			char **pp_sharepath,
-			char **pp_comment,
-			SEC_DESC **ppsd,
-			bool *pallow_guest);
-int load_usershare_service(const char *servicename);
-int load_usershare_shares(void);
-void gfree_loadparm(void);
-void lp_set_in_client(bool b);
-bool lp_is_in_client(void);
-bool lp_load_ex(const char *pszFname,
-		bool global_only,
-		bool save_defaults,
-		bool add_ipc,
-		bool initialize_globals,
-		bool allow_include_registry,
-		bool allow_registry_shares);
-bool lp_load(const char *pszFname,
-	     bool global_only,
-	     bool save_defaults,
-	     bool add_ipc,
-	     bool initialize_globals);
-bool lp_load_initial_only(const char *pszFname);
-bool lp_load_with_registry_shares(const char *pszFname,
-				  bool global_only,
-				  bool save_defaults,
-				  bool add_ipc,
-				  bool initialize_globals);
-int lp_numservices(void);
-void lp_dump(FILE *f, bool show_defaults, int maxtoprint);
-void lp_dump_one(FILE * f, bool show_defaults, int snum);
-int lp_servicenumber(const char *pszServiceName);
-bool share_defined(const char *service_name);
-struct share_params *get_share_params(TALLOC_CTX *mem_ctx,
-				      const char *sharename);
-struct share_iterator *share_list_all(TALLOC_CTX *mem_ctx);
-struct share_params *next_share(struct share_iterator *list);
-struct share_params *next_printer(struct share_iterator *list);
-struct share_params *snum2params_static(int snum);
-const char *volume_label(int snum);
-int lp_server_role(void);
-bool lp_domain_master(void);
-bool lp_preferred_master(void);
-void lp_remove_service(int snum);
-void lp_copy_service(int snum, const char *new_name);
-int lp_default_server_announce(void);
-int lp_major_announce_version(void);
-int lp_minor_announce_version(void);
-void lp_set_name_resolve_order(const char *new_order);
-const char *lp_printername(int snum);
-void lp_set_logfile(const char *name);
-int lp_maxprintjobs(int snum);
-const char *lp_printcapname(void);
-bool lp_disable_spoolss( void );
-void lp_set_spoolss_state( uint32 state );
-uint32 lp_get_spoolss_state( void );
-bool lp_use_sendfile(int snum);
-void set_use_sendfile(int snum, bool val);
-void set_store_dos_attributes(int snum, bool val);
-void lp_set_mangling_method(const char *new_method);
-bool lp_posix_pathnames(void);
-void lp_set_posix_pathnames(void);
-enum brl_flavour lp_posix_cifsu_locktype(files_struct *fsp);
-void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val);
-int lp_min_receive_file_size(void);
-
-/* The following definitions come from param/params.c  */
-
-bool pm_process( const char *FileName,
-		bool (*sfunc)(const char *, void *),
-		bool (*pfunc)(const char *, const char *, void *),
-		void *userdata);
-
-/* The following definitions come from param/util.c  */
-
-uint32 get_int_param( const char* param );
-char* get_string_param( const char* param );
-
-/* The following definitions come from passdb/login_cache.c  */
-
-bool login_cache_init(void);
-bool login_cache_shutdown(void);
-LOGIN_CACHE * login_cache_read(struct samu *sampass);
-bool login_cache_write(const struct samu *sampass, LOGIN_CACHE entry);
-bool login_cache_delentry(const struct samu *sampass);
-
-/* The following definitions come from passdb/lookup_sid.c  */
-
-bool lookup_name(TALLOC_CTX *mem_ctx,
-		 const char *full_name, int flags,
-		 const char **ret_domain, const char **ret_name,
-		 DOM_SID *ret_sid, enum lsa_SidType *ret_type);
-bool lookup_name_smbconf(TALLOC_CTX *mem_ctx,
-		 const char *full_name, int flags,
-		 const char **ret_domain, const char **ret_name,
-		 DOM_SID *ret_sid, enum lsa_SidType *ret_type);
-NTSTATUS lookup_sids(TALLOC_CTX *mem_ctx, int num_sids,
-		     const DOM_SID **sids, int level,
-		     struct lsa_dom_info **ret_domains,
-		     struct lsa_name_info **ret_names);
-bool lookup_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-		const char **ret_domain, const char **ret_name,
-		enum lsa_SidType *ret_type);
-void store_uid_sid_cache(const DOM_SID *psid, uid_t uid);
-void store_gid_sid_cache(const DOM_SID *psid, gid_t gid);
-void uid_to_sid(DOM_SID *psid, uid_t uid);
-void gid_to_sid(DOM_SID *psid, gid_t gid);
-bool sid_to_uid(const DOM_SID *psid, uid_t *puid);
-bool sid_to_gid(const DOM_SID *psid, gid_t *pgid);
-
-/* The following definitions come from passdb/machine_sid.c  */
-
-DOM_SID *get_global_sam_sid(void);
-void reset_global_sam_sid(void) ;
-bool sid_check_is_domain(const DOM_SID *sid);
-bool sid_check_is_in_our_domain(const DOM_SID *sid);
-
-/* The following definitions come from passdb/passdb.c  */
-
-const char *my_sam_name(void);
-struct samu *samu_new( TALLOC_CTX *ctx );
-NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd);
-NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd);
-char *pdb_encode_acct_ctrl(uint32 acct_ctrl, size_t length);
-uint32 pdb_decode_acct_ctrl(const char *p);
-void pdb_sethexpwd(char p[33], const unsigned char *pwd, uint32 acct_ctrl);
-bool pdb_gethexpwd(const char *p, unsigned char *pwd);
-void pdb_sethexhours(char *p, const unsigned char *hours);
-bool pdb_gethexhours(const char *p, unsigned char *hours);
-int algorithmic_rid_base(void);
-uid_t algorithmic_pdb_user_rid_to_uid(uint32 user_rid);
-uid_t max_algorithmic_uid(void);
-uint32 algorithmic_pdb_uid_to_user_rid(uid_t uid);
-gid_t pdb_group_rid_to_gid(uint32 group_rid);
-gid_t max_algorithmic_gid(void);
-uint32 algorithmic_pdb_gid_to_group_rid(gid_t gid);
-bool algorithmic_pdb_rid_is_user(uint32 rid);
-bool lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
-			    enum lsa_SidType *type);
-NTSTATUS local_password_change(const char *user_name,
-				int local_flags,
-				const char *new_passwd, 
-				char **pp_err_str,
-				char **pp_msg_str);
-bool init_sam_from_buffer_v3(struct samu *sampass, uint8 *buf, uint32 buflen);
-uint32 init_buffer_from_sam_v3 (uint8 **buf, struct samu *sampass, bool size_only);
-bool pdb_copy_sam_account(struct samu *dst, struct samu *src );
-bool pdb_update_bad_password_count(struct samu *sampass, bool *updated);
-bool pdb_update_autolock_flag(struct samu *sampass, bool *updated);
-bool pdb_increment_bad_password_count(struct samu *sampass);
-bool is_dc_trusted_domain_situation(const char *domain_name);
-bool get_trust_pw_clear(const char *domain, char **ret_pwd,
-			const char **account_name, uint32 *channel);
-bool get_trust_pw_hash(const char *domain, uint8 ret_pwd[16],
-		       const char **account_name, uint32 *channel);
-struct samr_LogonHours get_logon_hours_from_pdb(TALLOC_CTX *mem_ctx,
-						struct samu *pw);
-
-/* The following definitions come from passdb/pdb_compat.c  */
-
-uint32 pdb_get_user_rid (const struct samu *sampass);
-uint32 pdb_get_group_rid (struct samu *sampass);
-bool pdb_set_user_sid_from_rid (struct samu *sampass, uint32 rid, enum pdb_value_state flag);
-bool pdb_set_group_sid_from_rid (struct samu *sampass, uint32 grid, enum pdb_value_state flag);
-
-/* The following definitions come from passdb/pdb_get_set.c  */
-
-uint32 pdb_get_acct_ctrl(const struct samu *sampass);
-time_t pdb_get_logon_time(const struct samu *sampass);
-time_t pdb_get_logoff_time(const struct samu *sampass);
-time_t pdb_get_kickoff_time(const struct samu *sampass);
-time_t pdb_get_bad_password_time(const struct samu *sampass);
-time_t pdb_get_pass_last_set_time(const struct samu *sampass);
-time_t pdb_get_pass_can_change_time(const struct samu *sampass);
-time_t pdb_get_pass_can_change_time_noncalc(const struct samu *sampass);
-time_t pdb_get_pass_must_change_time(const struct samu *sampass);
-bool pdb_get_pass_can_change(const struct samu *sampass);
-uint16 pdb_get_logon_divs(const struct samu *sampass);
-uint32 pdb_get_hours_len(const struct samu *sampass);
-const uint8 *pdb_get_hours(const struct samu *sampass);
-const uint8 *pdb_get_nt_passwd(const struct samu *sampass);
-const uint8 *pdb_get_lanman_passwd(const struct samu *sampass);
-const uint8 *pdb_get_pw_history(const struct samu *sampass, uint32 *current_hist_len);
-const char *pdb_get_plaintext_passwd(const struct samu *sampass);
-const DOM_SID *pdb_get_user_sid(const struct samu *sampass);
-const DOM_SID *pdb_get_group_sid(struct samu *sampass);
-enum pdb_value_state pdb_get_init_flags(const struct samu *sampass, enum pdb_elements element);
-const char *pdb_get_username(const struct samu *sampass);
-const char *pdb_get_domain(const struct samu *sampass);
-const char *pdb_get_nt_username(const struct samu *sampass);
-const char *pdb_get_fullname(const struct samu *sampass);
-const char *pdb_get_homedir(const struct samu *sampass);
-const char *pdb_get_dir_drive(const struct samu *sampass);
-const char *pdb_get_logon_script(const struct samu *sampass);
-const char *pdb_get_profile_path(const struct samu *sampass);
-const char *pdb_get_acct_desc(const struct samu *sampass);
-const char *pdb_get_workstations(const struct samu *sampass);
-const char *pdb_get_comment(const struct samu *sampass);
-const char *pdb_get_munged_dial(const struct samu *sampass);
-uint16 pdb_get_bad_password_count(const struct samu *sampass);
-uint16 pdb_get_logon_count(const struct samu *sampass);
-uint32 pdb_get_unknown_6(const struct samu *sampass);
-void *pdb_get_backend_private_data(const struct samu *sampass, const struct pdb_methods *my_methods);
-bool pdb_set_acct_ctrl(struct samu *sampass, uint32 acct_ctrl, enum pdb_value_state flag);
-bool pdb_set_logon_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_logoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_kickoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_bad_password_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_pass_can_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_pass_must_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_pass_last_set_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
-bool pdb_set_hours_len(struct samu *sampass, uint32 len, enum pdb_value_state flag);
-bool pdb_set_logon_divs(struct samu *sampass, uint16 hours, enum pdb_value_state flag);
-bool pdb_set_init_flags(struct samu *sampass, enum pdb_elements element, enum pdb_value_state value_flag);
-bool pdb_set_user_sid(struct samu *sampass, const DOM_SID *u_sid, enum pdb_value_state flag);
-bool pdb_set_user_sid_from_string(struct samu *sampass, fstring u_sid, enum pdb_value_state flag);
-bool pdb_set_group_sid(struct samu *sampass, const DOM_SID *g_sid, enum pdb_value_state flag);
-bool pdb_set_username(struct samu *sampass, const char *username, enum pdb_value_state flag);
-bool pdb_set_domain(struct samu *sampass, const char *domain, enum pdb_value_state flag);
-bool pdb_set_nt_username(struct samu *sampass, const char *nt_username, enum pdb_value_state flag);
-bool pdb_set_fullname(struct samu *sampass, const char *full_name, enum pdb_value_state flag);
-bool pdb_set_logon_script(struct samu *sampass, const char *logon_script, enum pdb_value_state flag);
-bool pdb_set_profile_path(struct samu *sampass, const char *profile_path, enum pdb_value_state flag);
-bool pdb_set_dir_drive(struct samu *sampass, const char *dir_drive, enum pdb_value_state flag);
-bool pdb_set_homedir(struct samu *sampass, const char *home_dir, enum pdb_value_state flag);
-bool pdb_set_acct_desc(struct samu *sampass, const char *acct_desc, enum pdb_value_state flag);
-bool pdb_set_workstations(struct samu *sampass, const char *workstations, enum pdb_value_state flag);
-bool pdb_set_comment(struct samu *sampass, const char *comment, enum pdb_value_state flag);
-bool pdb_set_munged_dial(struct samu *sampass, const char *munged_dial, enum pdb_value_state flag);
-bool pdb_set_nt_passwd(struct samu *sampass, const uint8 pwd[NT_HASH_LEN], enum pdb_value_state flag);
-bool pdb_set_lanman_passwd(struct samu *sampass, const uint8 pwd[LM_HASH_LEN], enum pdb_value_state flag);
-bool pdb_set_pw_history(struct samu *sampass, const uint8 *pwd, uint32 historyLen, enum pdb_value_state flag);
-bool pdb_set_plaintext_pw_only(struct samu *sampass, const char *password, enum pdb_value_state flag);
-bool pdb_set_bad_password_count(struct samu *sampass, uint16 bad_password_count, enum pdb_value_state flag);
-bool pdb_set_logon_count(struct samu *sampass, uint16 logon_count, enum pdb_value_state flag);
-bool pdb_set_unknown_6(struct samu *sampass, uint32 unkn, enum pdb_value_state flag);
-bool pdb_set_hours(struct samu *sampass, const uint8 *hours, enum pdb_value_state flag);
-bool pdb_set_backend_private_data(struct samu *sampass, void *private_data, 
-				   void (*free_fn)(void **), 
-				   const struct pdb_methods *my_methods, 
-				   enum pdb_value_state flag);
-bool pdb_set_pass_can_change(struct samu *sampass, bool canchange);
-bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext);
-uint32 pdb_build_fields_present(struct samu *sampass);
-
-/* The following definitions come from passdb/pdb_interface.c  */
-
-NTSTATUS smb_register_passdb(int version, const char *name, pdb_init_function init) ;
-struct pdb_init_function_entry *pdb_find_backend_entry(const char *name);
-struct event_context *pdb_get_event_context(void);
-NTSTATUS make_pdb_method_name(struct pdb_methods **methods, const char *selected);
-bool pdb_getsampwnam(struct samu *sam_acct, const char *username) ;
-bool guest_user_info( struct samu *user );
-bool pdb_getsampwsid(struct samu *sam_acct, const DOM_SID *sid) ;
-NTSTATUS pdb_create_user(TALLOC_CTX *mem_ctx, const char *name, uint32 flags,
-			 uint32 *rid);
-NTSTATUS pdb_delete_user(TALLOC_CTX *mem_ctx, struct samu *sam_acct);
-NTSTATUS pdb_add_sam_account(struct samu *sam_acct) ;
-NTSTATUS pdb_update_sam_account(struct samu *sam_acct) ;
-NTSTATUS pdb_delete_sam_account(struct samu *sam_acct) ;
-NTSTATUS pdb_rename_sam_account(struct samu *oldname, const char *newname);
-NTSTATUS pdb_update_login_attempts(struct samu *sam_acct, bool success);
-bool pdb_getgrsid(GROUP_MAP *map, DOM_SID sid);
-bool pdb_getgrgid(GROUP_MAP *map, gid_t gid);
-bool pdb_getgrnam(GROUP_MAP *map, const char *name);
-NTSTATUS pdb_create_dom_group(TALLOC_CTX *mem_ctx, const char *name,
-			      uint32 *rid);
-NTSTATUS pdb_delete_dom_group(TALLOC_CTX *mem_ctx, uint32 rid);
-NTSTATUS pdb_add_group_mapping_entry(GROUP_MAP *map);
-NTSTATUS pdb_update_group_mapping_entry(GROUP_MAP *map);
-NTSTATUS pdb_delete_group_mapping_entry(DOM_SID sid);
-bool pdb_enum_group_mapping(const DOM_SID *sid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
-			    size_t *p_num_entries, bool unix_only);
-NTSTATUS pdb_enum_group_members(TALLOC_CTX *mem_ctx,
-				const DOM_SID *sid,
-				uint32 **pp_member_rids,
-				size_t *p_num_members);
-NTSTATUS pdb_enum_group_memberships(TALLOC_CTX *mem_ctx, struct samu *user,
-				    DOM_SID **pp_sids, gid_t **pp_gids,
-				    size_t *p_num_groups);
-NTSTATUS pdb_set_unix_primary_group(TALLOC_CTX *mem_ctx, struct samu *user);
-NTSTATUS pdb_add_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid,
-			  uint32 member_rid);
-NTSTATUS pdb_del_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid,
-			  uint32 member_rid);
-NTSTATUS pdb_create_alias(const char *name, uint32 *rid);
-NTSTATUS pdb_delete_alias(const DOM_SID *sid);
-NTSTATUS pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info);
-NTSTATUS pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info);
-NTSTATUS pdb_add_aliasmem(const DOM_SID *alias, const DOM_SID *member);
-NTSTATUS pdb_del_aliasmem(const DOM_SID *alias, const DOM_SID *member);
-NTSTATUS pdb_enum_aliasmem(const DOM_SID *alias,
-			   DOM_SID **pp_members, size_t *p_num_members);
-NTSTATUS pdb_enum_alias_memberships(TALLOC_CTX *mem_ctx,
-				    const DOM_SID *domain_sid,
-				    const DOM_SID *members, size_t num_members,
-				    uint32 **pp_alias_rids,
-				    size_t *p_num_alias_rids);
-NTSTATUS pdb_lookup_rids(const DOM_SID *domain_sid,
-			 int num_rids,
-			 uint32 *rids,
-			 const char **names,
-			 enum lsa_SidType *attrs);
-NTSTATUS pdb_lookup_names(const DOM_SID *domain_sid,
-			  int num_names,
-			  const char **names,
-			  uint32 *rids,
-			  enum lsa_SidType *attrs);
-bool pdb_get_account_policy(int policy_index, uint32 *value);
-bool pdb_set_account_policy(int policy_index, uint32 value);
-bool pdb_get_seq_num(time_t *seq_num);
-bool pdb_uid_to_rid(uid_t uid, uint32 *rid);
-bool pdb_uid_to_sid(uid_t uid, DOM_SID *sid);
-bool pdb_gid_to_sid(gid_t gid, DOM_SID *sid);
-bool pdb_sid_to_id(const DOM_SID *sid, union unid_t *id,
-		   enum lsa_SidType *type);
-bool pdb_rid_algorithm(void);
-bool pdb_new_rid(uint32 *rid);
-bool initialize_password_db(bool reload, struct event_context *event_ctx);
-struct pdb_search *pdb_search_init(enum pdb_search_type type);
-struct pdb_search *pdb_search_users(uint32 acct_flags);
-struct pdb_search *pdb_search_groups(void);
-struct pdb_search *pdb_search_aliases(const DOM_SID *sid);
-uint32 pdb_search_entries(struct pdb_search *search,
-			  uint32 start_idx, uint32 max_entries,
-			  struct samr_displayentry **result);
-void pdb_search_destroy(struct pdb_search *search);
-bool pdb_get_trusteddom_pw(const char *domain, char** pwd, DOM_SID *sid, 
-			   time_t *pass_last_set_time);
-bool pdb_set_trusteddom_pw(const char* domain, const char* pwd,
-			   const DOM_SID *sid);
-bool pdb_del_trusteddom_pw(const char *domain);
-NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32 *num_domains,
-			      struct trustdom_info ***domains);
-NTSTATUS make_pdb_method( struct pdb_methods **methods ) ;
-
-/* The following definitions come from passdb/pdb_ldap.c  */
-
-const char** get_userattr_list( TALLOC_CTX *mem_ctx, int schema_ver );
-int ldapsam_search_suffix_by_name(struct ldapsam_privates *ldap_state,
-					  const char *user,
-					  LDAPMessage ** result,
-					  const char **attr);
-const char **talloc_attrs(TALLOC_CTX *mem_ctx, ...);
-NTSTATUS pdb_init_ldapsam_compat(struct pdb_methods **pdb_method, const char *location);
-NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location);
-NTSTATUS pdb_ldap_init(void);
-
-/* The following definitions come from passdb/pdb_nds.c  */
-
-int pdb_nds_get_password(
-	struct smbldap_state *ldap_state,
-	char *object_dn,
-	size_t *pwd_len,
-	char *pwd );
-int pdb_nds_set_password(
-	struct smbldap_state *ldap_state,
-	char *object_dn,
-	const char *pwd );
-NTSTATUS pdb_nds_init(void);
-
-/* The following definitions come from passdb/pdb_smbpasswd.c  */
-
-NTSTATUS pdb_smbpasswd_init(void) ;
-
-/* The following definitions come from passdb/pdb_tdb.c  */
-
-bool init_sam_from_buffer_v2(struct samu *sampass, uint8 *buf, uint32 buflen);
-NTSTATUS pdb_tdbsam_init(void);
-
-/* The following definitions come from passdb/secrets.c  */
-
-bool secrets_init(void);
-struct db_context *secrets_db_ctx(void);
-void secrets_shutdown(void);
-void *secrets_fetch(const char *key, size_t *size);
-bool secrets_store(const char *key, const void *data, size_t size);
-bool secrets_delete(const char *key);
-bool secrets_store_domain_sid(const char *domain, const DOM_SID *sid);
-bool secrets_fetch_domain_sid(const char *domain, DOM_SID *sid);
-bool secrets_store_domain_guid(const char *domain, struct GUID *guid);
-bool secrets_fetch_domain_guid(const char *domain, struct GUID *guid);
-void *secrets_get_trust_account_lock(TALLOC_CTX *mem_ctx, const char *domain);
-uint32 get_default_sec_channel(void);
-bool secrets_fetch_trust_account_password_legacy(const char *domain,
-						 uint8 ret_pwd[16],
-						 time_t *pass_last_set_time,
-						 uint32 *channel);
-bool secrets_fetch_trust_account_password(const char *domain, uint8 ret_pwd[16],
-					  time_t *pass_last_set_time,
-					  uint32 *channel);
-bool secrets_fetch_trusted_domain_password(const char *domain, char** pwd,
-                                           DOM_SID *sid, time_t *pass_last_set_time);
-bool secrets_store_trusted_domain_password(const char* domain, const char* pwd,
-                                           const DOM_SID *sid);
-bool secrets_delete_machine_password(const char *domain);
-bool secrets_delete_machine_password_ex(const char *domain);
-bool secrets_delete_domain_sid(const char *domain);
-bool secrets_store_machine_password(const char *pass, const char *domain, uint32 sec_channel);
-char *secrets_fetch_machine_password(const char *domain,
-				     time_t *pass_last_set_time,
-				     uint32 *channel);
-bool trusted_domain_password_delete(const char *domain);
-bool secrets_store_ldap_pw(const char* dn, char* pw);
-bool fetch_ldap_pw(char **dn, char** pw);
-NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains,
-				 struct trustdom_info ***domains);
-bool secrets_store_afs_keyfile(const char *cell, const struct afs_keyfile *keyfile);
-bool secrets_fetch_afs_key(const char *cell, struct afs_key *result);
-void secrets_fetch_ipc_userpass(char **username, char **domain, char **password);
-bool secrets_store_schannel_session_info(TALLOC_CTX *mem_ctx,
-				const char *remote_machine,
-				const struct dcinfo *pdc);
-bool secrets_restore_schannel_session_info(TALLOC_CTX *mem_ctx,
-				const char *remote_machine,
-				struct dcinfo **ppdc);
-bool secrets_store_generic(const char *owner, const char *key, const char *secret);
-char *secrets_fetch_generic(const char *owner, const char *key);
-
-/* The following definitions come from passdb/util_builtin.c  */
-
-bool lookup_builtin_rid(TALLOC_CTX *mem_ctx, uint32 rid, const char **name);
-bool lookup_builtin_name(const char *name, uint32 *rid);
-const char *builtin_domain_name(void);
-bool sid_check_is_builtin(const DOM_SID *sid);
-bool sid_check_is_in_builtin(const DOM_SID *sid);
-
-/* The following definitions come from passdb/util_unixsids.c  */
-
-bool sid_check_is_unix_users(const DOM_SID *sid);
-bool sid_check_is_in_unix_users(const DOM_SID *sid);
-bool uid_to_unix_users_sid(uid_t uid, DOM_SID *sid);
-bool gid_to_unix_groups_sid(gid_t gid, DOM_SID *sid);
-const char *unix_users_domain_name(void);
-bool lookup_unix_user_name(const char *name, DOM_SID *sid);
-bool sid_check_is_unix_groups(const DOM_SID *sid);
-bool sid_check_is_in_unix_groups(const DOM_SID *sid);
-const char *unix_groups_domain_name(void);
-bool lookup_unix_group_name(const char *name, DOM_SID *sid);
-
-/* The following definitions come from passdb/util_wellknown.c  */
-
-bool sid_check_is_wellknown_domain(const DOM_SID *sid, const char **name);
-bool sid_check_is_in_wellknown_domain(const DOM_SID *sid);
-bool lookup_wellknown_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-			  const char **domain, const char **name);
-bool lookup_wellknown_name(TALLOC_CTX *mem_ctx, const char *name,
-			   DOM_SID *sid, const char **domain);
-
-/* The following definitions come from printing/load.c  */
-
-void load_printers(void);
-
-/* The following definitions come from printing/lpq_parse.c  */
-
-bool parse_lpq_entry(enum printing_types printing_type,char *line,
-		     print_queue_struct *buf,
-		     print_status_struct *status,bool first);
-
-/* The following definitions come from printing/notify.c  */
-
-int print_queue_snum(const char *qname);
-bool print_notify_messages_pending(void);
-void print_notify_send_messages(struct messaging_context *msg_ctx,
-				unsigned int timeout);
-void notify_printer_status_byname(const char *sharename, uint32 status);
-void notify_printer_status(int snum, uint32 status);
-void notify_job_status_byname(const char *sharename, uint32 jobid, uint32 status,
-			      uint32 flags);
-void notify_job_status(const char *sharename, uint32 jobid, uint32 status);
-void notify_job_total_bytes(const char *sharename, uint32 jobid,
-			    uint32 size);
-void notify_job_total_pages(const char *sharename, uint32 jobid,
-			    uint32 pages);
-void notify_job_username(const char *sharename, uint32 jobid, char *name);
-void notify_job_name(const char *sharename, uint32 jobid, char *name);
-void notify_job_submitted(const char *sharename, uint32 jobid,
-			  time_t submitted);
-void notify_printer_driver(int snum, char *driver_name);
-void notify_printer_comment(int snum, char *comment);
-void notify_printer_sharename(int snum, char *share_name);
-void notify_printer_printername(int snum, char *printername);
-void notify_printer_port(int snum, char *port_name);
-void notify_printer_location(int snum, char *location);
-void notify_printer_byname( const char *printername, uint32 change, const char *value );
-bool print_notify_pid_list(const char *printername, TALLOC_CTX *mem_ctx, size_t *p_num_pids, pid_t **pp_pid_list);
-
-/* The following definitions come from printing/nt_printing.c  */
-
-bool nt_printing_init(struct messaging_context *msg_ctx);
-uint32 update_c_setprinter(bool initialize);
-uint32 get_c_setprinter(void);
-int get_builtin_ntforms(nt_forms_struct **list);
-bool get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form);
-int get_ntforms(nt_forms_struct **list);
-int write_ntforms(nt_forms_struct **list, int number);
-bool add_a_form(nt_forms_struct **list, const FORM *form, int *count);
-bool delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR *ret);
-void update_a_form(nt_forms_struct **list, const FORM *form, int count);
-int get_ntdrivers(fstring **list, const char *architecture, uint32 version);
-const char *get_short_archi(const char *long_archi);
-WERROR clean_up_driver_struct(NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract,
-							  uint32 level, struct current_user *user);
-WERROR move_driver_to_download_area(NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract, uint32 level, 
-				  struct current_user *user, WERROR *perr);
-int pack_devicemode(NT_DEVICEMODE *nt_devmode, uint8 *buf, int buflen);
-uint32 del_a_printer(const char *sharename);
-NT_DEVICEMODE *construct_nt_devicemode(const fstring default_devicename);
-NT_DEVICEMODE *dup_nt_devicemode(NT_DEVICEMODE *nt_devicemode);
-void free_nt_devicemode(NT_DEVICEMODE **devmode_ptr);
-int unpack_devicemode(NT_DEVICEMODE **nt_devmode, const uint8 *buf, int buflen);
-int add_new_printer_key( NT_PRINTER_DATA *data, const char *name );
-int delete_printer_key( NT_PRINTER_DATA *data, const char *name );
-int lookup_printerkey( NT_PRINTER_DATA *data, const char *name );
-int get_printer_subkeys( NT_PRINTER_DATA *data, const char* key, fstring **subkeys );
-WERROR nt_printer_publish(Printer_entry *print_hnd, int snum, int action);
-WERROR check_published_printers(void);
-bool is_printer_published(Printer_entry *print_hnd, int snum, 
-			  struct GUID *guid);
-WERROR nt_printer_publish(Printer_entry *print_hnd, int snum, int action);
-WERROR check_published_printers(void);
-bool is_printer_published(Printer_entry *print_hnd, int snum, 
-			  struct GUID *guid);
-WERROR delete_all_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key );
-WERROR delete_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value );
-WERROR add_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value, 
-                           uint32 type, uint8 *data, int real_len );
-REGISTRY_VALUE* get_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value );
-WERROR mod_a_printer(NT_PRINTER_INFO_LEVEL *printer, uint32 level);
-bool set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level);
-bool del_driver_init(char *drivername);
-WERROR save_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level, uint8 *data, uint32 data_len);
-WERROR get_a_printer( Printer_entry *print_hnd,
-			NT_PRINTER_INFO_LEVEL **pp_printer,
-			uint32 level,
-			const char *sharename);
-WERROR get_a_printer_search( Printer_entry *print_hnd,
-			NT_PRINTER_INFO_LEVEL **pp_printer,
-			uint32 level,
-			const char *sharename);
-uint32 free_a_printer(NT_PRINTER_INFO_LEVEL **pp_printer, uint32 level);
-uint32 add_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level);
-WERROR get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
-                            fstring drivername, const char *architecture, uint32 version);
-uint32 free_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level);
-bool printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3 );
-bool printer_driver_files_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info );
-WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct current_user *user,
-                              uint32 version, bool delete_files );
-WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr);
-bool nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **secdesc_ctr);
-void map_printer_permissions(SEC_DESC *sd);
-void map_job_permissions(SEC_DESC *sd);
-bool print_access_check(struct auth_serversupplied_info *server_info, int snum,
-			int access_type);
-bool print_time_access_check(const char *servicename);
-char* get_server_name( Printer_entry *printer );
-
-/* The following definitions come from printing/pcap.c  */
-
-bool pcap_cache_add(const char *name, const char *comment);
-bool pcap_cache_loaded(void);
-void pcap_cache_reload(void);
-bool pcap_printername_ok(const char *printername);
-void pcap_printer_fn(void (*fn)(char *, char *));
-
-/* The following definitions come from printing/print_aix.c  */
-
-bool aix_cache_reload(void);
-
-/* The following definitions come from printing/print_cups.c  */
-
-bool cups_cache_reload(void);
-bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer);
-
-/* The following definitions come from printing/print_generic.c  */
-
-
-/* The following definitions come from printing/print_iprint.c  */
-
-bool iprint_cache_reload(void);
-
-/* The following definitions come from printing/print_svid.c  */
-
-bool sysv_cache_reload(void);
-
-/* The following definitions come from printing/printfsp.c  */
-
-NTSTATUS print_fsp_open(connection_struct *conn, const char *fname,
-			uint16_t current_vuid, files_struct **result);
-void print_fsp_end(files_struct *fsp, enum file_close_type close_type);
-
-/* The following definitions come from printing/printing.c  */
-
-uint16 pjobid_to_rap(const char* sharename, uint32 jobid);
-bool rap_to_pjobid(uint16 rap_jobid, fstring sharename, uint32 *pjobid);
-bool print_backend_init(struct messaging_context *msg_ctx);
-void printing_end(void);
-int unpack_pjob( uint8 *buf, int buflen, struct printjob *pjob );
-uint32 sysjob_to_jobid(int unix_jobid);
-void pjob_delete(const char* sharename, uint32 jobid);
-void start_background_queue(void);
-bool print_notify_register_pid(int snum);
-bool print_notify_deregister_pid(int snum);
-bool print_job_exists(const char* sharename, uint32 jobid);
-int print_job_fd(const char* sharename, uint32 jobid);
-char *print_job_fname(const char* sharename, uint32 jobid);
-NT_DEVICEMODE *print_job_devmode(const char* sharename, uint32 jobid);
-bool print_job_set_place(const char *sharename, uint32 jobid, int place);
-bool print_job_set_name(const char *sharename, uint32 jobid, char *name);
-bool print_job_delete(struct auth_serversupplied_info *server_info, int snum,
-		      uint32 jobid, WERROR *errcode);
-bool print_job_pause(struct auth_serversupplied_info *server_info, int snum,
-		     uint32 jobid, WERROR *errcode);
-bool print_job_resume(struct auth_serversupplied_info *server_info, int snum,
-		      uint32 jobid, WERROR *errcode);
-ssize_t print_job_write(int snum, uint32 jobid, const char *buf, SMB_OFF_T pos, size_t size);
-int print_queue_length(int snum, print_status_struct *pstatus);
-uint32 print_job_start(struct auth_serversupplied_info *server_info, int snum,
-		       char *jobname, NT_DEVICEMODE *nt_devmode );
-void print_job_endpage(int snum, uint32 jobid);
-bool print_job_end(int snum, uint32 jobid, enum file_close_type close_type);
-int print_queue_status(int snum, 
-		       print_queue_struct **ppqueue,
-		       print_status_struct *status);
-bool print_queue_pause(struct auth_serversupplied_info *server_info, int snum,
-		       WERROR *errcode);
-bool print_queue_resume(struct auth_serversupplied_info *server_info, int snum,
-			WERROR *errcode);
-bool print_queue_purge(struct auth_serversupplied_info *server_info, int snum,
-		       WERROR *errcode);
-
-/* The following definitions come from printing/printing_db.c  */
-
-struct tdb_print_db *get_print_db_byname(const char *printername);
-void release_print_db( struct tdb_print_db *pdb);
-void close_all_print_db(void);
-TDB_DATA get_printer_notify_pid_list(TDB_CONTEXT *tdb, const char *printer_name, bool cleanlist);
-
-/* The following definitions come from profile/profile.c  */
-
-void set_profile_level(int level, struct server_id src);
-bool profile_setup(struct messaging_context *msg_ctx, bool rdonly);
-
-/* The following definitions come from registry/reg_api.c  */
-
-WERROR reg_openhive(TALLOC_CTX *mem_ctx, const char *hive,
-		    uint32 desired_access,
-		    const struct nt_user_token *token,
-		    struct registry_key **pkey);
-WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent,
-		   const char *name, uint32 desired_access,
-		   struct registry_key **pkey);
-WERROR reg_enumkey(TALLOC_CTX *mem_ctx, struct registry_key *key,
-		   uint32 idx, char **name, NTTIME *last_write_time);
-WERROR reg_enumvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
-		     uint32 idx, char **pname, struct registry_value **pval);
-WERROR reg_queryvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
-		      const char *name, struct registry_value **pval);
-WERROR reg_queryinfokey(struct registry_key *key, uint32_t *num_subkeys,
-			uint32_t *max_subkeylen, uint32_t *max_subkeysize, 
-			uint32_t *num_values, uint32_t *max_valnamelen, 
-			uint32_t *max_valbufsize, uint32_t *secdescsize,
-			NTTIME *last_changed_time);
-WERROR reg_createkey(TALLOC_CTX *ctx, struct registry_key *parent,
-		     const char *subkeypath, uint32 desired_access,
-		     struct registry_key **pkey,
-		     enum winreg_CreateAction *paction);
-WERROR reg_deletekey(struct registry_key *parent, const char *path);
-WERROR reg_setvalue(struct registry_key *key, const char *name,
-		    const struct registry_value *val);
-WERROR reg_deletevalue(struct registry_key *key, const char *name);
-WERROR reg_getkeysecurity(TALLOC_CTX *mem_ctx, struct registry_key *key,
-			  struct security_descriptor **psecdesc);
-WERROR reg_setkeysecurity(struct registry_key *key,
-			  struct security_descriptor *psecdesc);
-WERROR reg_getversion(uint32_t *version);
-WERROR reg_restorekey(struct registry_key *key, const char *fname);
-WERROR reg_savekey(struct registry_key *key, const char *fname);
-WERROR reg_deleteallvalues(struct registry_key *key);
-WERROR reg_open_path(TALLOC_CTX *mem_ctx, const char *orig_path,
-		     uint32 desired_access, const struct nt_user_token *token,
-		     struct registry_key **pkey);
-WERROR reg_deletekey_recursive(TALLOC_CTX *ctx,
-			       struct registry_key *parent,
-			       const char *path);
-WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx,
-				   struct registry_key *parent,
-				   const char *path);
-WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path,
-		       uint32 desired_access,
-		       const struct nt_user_token *token,
-		       enum winreg_CreateAction *paction,
-		       struct registry_key **pkey);
-WERROR reg_delete_path(const struct nt_user_token *token,
-		       const char *orig_path);
-
-/* The following definitions come from registry/reg_backend_current_version.c  */
-
-
-/* The following definitions come from registry/reg_backend_db.c  */
-
-WERROR init_registry_key(const char *add_path);
-WERROR init_registry_data(void);
-WERROR regdb_init(void);
-WERROR regdb_open( void );
-int regdb_close( void );
-int regdb_get_seqnum(void);
-bool regdb_store_keys(const char *key, REGSUBKEY_CTR *ctr);
-int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr);
-int regdb_fetch_values( const char* key, REGVAL_CTR *values );
-bool regdb_store_values( const char *key, REGVAL_CTR *values );
-bool regdb_subkeys_need_update(REGSUBKEY_CTR *subkeys);
-bool regdb_values_need_update(REGVAL_CTR *values);
-
-/* The following definitions come from registry/reg_backend_hkpt_params.c  */
-
-
-/* The following definitions come from registry/reg_backend_netlogon_params.c  */
-
-
-/* The following definitions come from registry/reg_backend_perflib.c  */
-
-
-/* The following definitions come from registry/reg_backend_printing.c  */
-
-
-/* The following definitions come from registry/reg_backend_prod_options.c  */
-
-
-/* The following definitions come from registry/reg_backend_shares.c  */
-
-
-/* The following definitions come from registry/reg_backend_smbconf.c  */
-
-
-/* The following definitions come from registry/reg_backend_tcpip_params.c  */
-
-
-/* The following definitions come from registry/reg_cachehook.c  */
-
-WERROR reghook_cache_init(void);
-WERROR reghook_cache_add(const char *keyname, REGISTRY_OPS *ops);
-REGISTRY_OPS *reghook_cache_find(const char *keyname);
-void reghook_dump_cache( int debuglevel );
-
-/* The following definitions come from registry/reg_dispatcher.c  */
-
-bool store_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkeys );
-bool store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val );
-int fetch_reg_keys( REGISTRY_KEY *key, REGSUBKEY_CTR *subkey_ctr );
-int fetch_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val );
-bool regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted,
-			  const struct nt_user_token *token );
-WERROR regkey_get_secdesc(TALLOC_CTX *mem_ctx, REGISTRY_KEY *key,
-			  struct security_descriptor **psecdesc);
-WERROR regkey_set_secdesc(REGISTRY_KEY *key,
-			  struct security_descriptor *psecdesc);
-bool reg_subkeys_need_update(REGISTRY_KEY *key, REGSUBKEY_CTR *subkeys);
-bool reg_values_need_update(REGISTRY_KEY *key, REGVAL_CTR *values);
-
-/* The following definitions come from registry/reg_eventlog.c  */
-
-bool eventlog_init_keys(void);
-bool eventlog_add_source( const char *eventlog, const char *sourcename,
-			  const char *messagefile );
-
-/* The following definitions come from registry/reg_init_basic.c  */
-
-WERROR registry_init_common(void);
-WERROR registry_init_basic(void);
-
-/* The following definitions come from registry/reg_init_full.c  */
-
-WERROR registry_init_full(void);
-
-/* The following definitions come from registry/reg_init_smbconf.c  */
-
-NTSTATUS registry_create_admin_token(TALLOC_CTX *mem_ctx,
-				     NT_USER_TOKEN **ptoken);
-WERROR registry_init_smbconf(const char *keyname);
-
-/* The following definitions come from registry/reg_objects.c  */
-
-WERROR regsubkey_ctr_addkey( REGSUBKEY_CTR *ctr, const char *keyname );
-int regsubkey_ctr_delkey( REGSUBKEY_CTR *ctr, const char *keyname );
-bool regsubkey_ctr_key_exists( REGSUBKEY_CTR *ctr, const char *keyname );
-int regsubkey_ctr_numkeys( REGSUBKEY_CTR *ctr );
-char* regsubkey_ctr_specific_key( REGSUBKEY_CTR *ctr, uint32 key_index );
-int regval_ctr_numvals( REGVAL_CTR *ctr );
-REGISTRY_VALUE* dup_registry_value( REGISTRY_VALUE *val );
-void free_registry_value( REGISTRY_VALUE *val );
-uint8* regval_data_p( REGISTRY_VALUE *val );
-uint32 regval_size( REGISTRY_VALUE *val );
-char* regval_name( REGISTRY_VALUE *val );
-uint32 regval_type( REGISTRY_VALUE *val );
-REGISTRY_VALUE* regval_ctr_specific_value( REGVAL_CTR *ctr, uint32 idx );
-bool regval_ctr_key_exists( REGVAL_CTR *ctr, const char *value );
-REGISTRY_VALUE *regval_compose(TALLOC_CTX *ctx, const char *name, uint16 type,
-			       const char *data_p, size_t size);
-int regval_ctr_addvalue( REGVAL_CTR *ctr, const char *name, uint16 type,
-                         const char *data_p, size_t size );
-int regval_ctr_copyvalue( REGVAL_CTR *ctr, REGISTRY_VALUE *val );
-int regval_ctr_delvalue( REGVAL_CTR *ctr, const char *name );
-REGISTRY_VALUE* regval_ctr_getvalue( REGVAL_CTR *ctr, const char *name );
-uint32 regval_dword( REGISTRY_VALUE *val );
-char *regval_sz(REGISTRY_VALUE *val);
-
-/* The following definitions come from registry/reg_perfcount.c  */
-
-void perfcount_init_keys( void );
-uint32 reg_perfcount_get_base_index(void);
-uint32 reg_perfcount_get_last_counter(uint32 base_index);
-uint32 reg_perfcount_get_last_help(uint32 last_counter);
-uint32 reg_perfcount_get_counter_help(uint32 base_index, char **retbuf);
-uint32 reg_perfcount_get_counter_names(uint32 base_index, char **retbuf);
-bool _reg_perfcount_get_counter_data(TDB_DATA key, TDB_DATA *data);
-bool _reg_perfcount_get_instance_info(PERF_INSTANCE_DEFINITION *inst,
-				      prs_struct *ps,
-				      int instId,
-				      PERF_OBJECT_TYPE *obj,
-				      TDB_CONTEXT *names);
-bool _reg_perfcount_add_instance(PERF_OBJECT_TYPE *obj,
-				 prs_struct *ps,
-				 int instInd,
-				 TDB_CONTEXT *names);
-uint32 reg_perfcount_get_perf_data_block(uint32 base_index, 
-					 prs_struct *ps, 
-					 PERF_DATA_BLOCK *block,
-					 const char *object_ids);
-WERROR reg_perfcount_get_hkpd(prs_struct *ps, uint32 max_buf_size, uint32 *outbuf_len, const char *object_ids);
-
-/* The following definitions come from registry/reg_util.c  */
-
-bool reg_split_path(char *path, char **base, char **new_path);
-bool reg_split_key(char *path, char **base, char **key);
-char *normalize_reg_path(TALLOC_CTX *ctx, const char *keyname );
-void normalize_dbkey(char *key);
-char *reg_remaining_path(TALLOC_CTX *ctx, const char *key);
-int regval_convert_multi_sz( uint16 *multi_string, size_t byte_len, char ***values );
-size_t regval_build_multi_sz( char **values, uint16 **buffer );
-
-/* The following definitions come from registry/reg_util_legacy.c  */
-
-WERROR regkey_open_internal( TALLOC_CTX *ctx, REGISTRY_KEY **regkey,
-			     const char *path,
-                             const struct nt_user_token *token,
-			     uint32 access_desired );
-
-/* The following definitions come from registry/regfio.c  */
-
-
-/* The following definitions come from rpc_client/cli_lsarpc.c  */
-
-NTSTATUS rpccli_lsa_open_policy(struct rpc_pipe_client *cli,
-				TALLOC_CTX *mem_ctx,
-				bool sec_qos, uint32 des_access,
-				POLICY_HND *pol);
-NTSTATUS rpccli_lsa_open_policy2(struct rpc_pipe_client *cli,
-				 TALLOC_CTX *mem_ctx, bool sec_qos,
-				 uint32 des_access, POLICY_HND *pol);
-NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli,
-				TALLOC_CTX *mem_ctx,
-				POLICY_HND *pol,
-				int num_sids,
-				const DOM_SID *sids,
-				char ***pdomains,
-				char ***pnames,
-				enum lsa_SidType **ptypes);
-NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli,
-				 TALLOC_CTX *mem_ctx,
-				 POLICY_HND *pol, int num_names,
-				 const char **names,
-				 const char ***dom_names,
-				 int level,
-				 DOM_SID **sids,
-				 enum lsa_SidType **types);
-bool fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid);
-
-/* The following definitions come from rpc_client/cli_netlogon.c  */
-
-NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli,
-				     const char *server_name,
-				     const char *domain,
-				     const char *clnt_name,
-				     const char *machine_account,
-				     const unsigned char machine_pwd[16],
-				     enum netr_SchannelType sec_chan_type,
-				     uint32_t *neg_flags_inout);
-NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
-				   TALLOC_CTX *mem_ctx,
-				   uint32 logon_parameters,
-				   const char *domain,
-				   const char *username,
-				   const char *password,
-				   const char *workstation,
-				   int logon_type);
-NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli,
-					   TALLOC_CTX *mem_ctx,
-					   uint32 logon_parameters,
-					   const char *server,
-					   const char *username,
-					   const char *domain,
-					   const char *workstation,
-					   const uint8 chal[8],
-					   DATA_BLOB lm_response,
-					   DATA_BLOB nt_response,
-					   struct netr_SamInfo3 **info3);
-NTSTATUS rpccli_netlogon_sam_network_logon_ex(struct rpc_pipe_client *cli,
-					      TALLOC_CTX *mem_ctx,
-					      uint32 logon_parameters,
-					      const char *server,
-					      const char *username,
-					      const char *domain,
-					      const char *workstation,
-					      const uint8 chal[8],
-					      DATA_BLOB lm_response,
-					      DATA_BLOB nt_response,
-					      struct netr_SamInfo3 **info3);
-
-/* The following definitions come from rpc_client/cli_pipe.c  */
-
-NTSTATUS rpc_api_pipe_req(struct rpc_pipe_client *cli,
-			uint8 op_num,
-			prs_struct *in_data,
-			prs_struct *out_data);
-NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
-		       struct cli_pipe_auth_data *auth);
-unsigned int rpccli_set_timeout(struct rpc_pipe_client *cli,
-				unsigned int timeout);
-bool rpccli_get_pwd_hash(struct rpc_pipe_client *cli, uint8_t nt_hash[16]);
-struct cli_state *rpc_pipe_np_smb_conn(struct rpc_pipe_client *p);
-NTSTATUS rpccli_anon_bind_data(TALLOC_CTX *mem_ctx,
-			       struct cli_pipe_auth_data **presult);
-NTSTATUS rpccli_ntlmssp_bind_data(TALLOC_CTX *mem_ctx,
-				  enum pipe_auth_type auth_type,
-				  enum pipe_auth_level auth_level,
-				  const char *domain,
-				  const char *username,
-				  const char *password,
-				  struct cli_pipe_auth_data **presult);
-NTSTATUS rpccli_schannel_bind_data(TALLOC_CTX *mem_ctx, const char *domain,
-				   enum pipe_auth_level auth_level,
-				   const uint8_t sess_key[16],
-				   struct cli_pipe_auth_data **presult);
-NTSTATUS rpccli_kerberos_bind_data(TALLOC_CTX *mem_ctx,
-				   enum pipe_auth_level auth_level,
-				   const char *service_princ,
-				   const char *username,
-				   const char *password,
-				   struct cli_pipe_auth_data **presult);
-NTSTATUS rpc_pipe_open_tcp(TALLOC_CTX *mem_ctx, const char *host,
-			   const struct ndr_syntax_id *abstract_syntax,
-			   struct rpc_pipe_client **presult);
-NTSTATUS rpc_pipe_open_ncalrpc(TALLOC_CTX *mem_ctx, const char *socket_path,
-			       const struct ndr_syntax_id *abstract_syntax,
-			       struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli,
-				  const struct ndr_syntax_id *interface,
-				  struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli,
-				   const struct ndr_syntax_id *interface,
-				   enum pipe_auth_level auth_level,
-				   const char *domain,
-				   const char *username,
-				   const char *password,
-				   struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli,
-					  const struct ndr_syntax_id *interface,
-					  enum pipe_auth_level auth_level,
-					  const char *domain,
-					  const char *username,
-					  const char *password,
-					  struct rpc_pipe_client **presult);
-NTSTATUS get_schannel_session_key(struct cli_state *cli,
-				  const char *domain,
-				  uint32 *pneg_flags,
-				  struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
-					     const struct ndr_syntax_id *interface,
-					     enum pipe_auth_level auth_level,
-					     const char *domain,
-					     const struct dcinfo *pdc,
-					     struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli,
-						 const struct ndr_syntax_id *interface,
-						 enum pipe_auth_level auth_level,
-						 const char *domain,
-						 const char *username,
-						 const char *password,
-						 struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_schannel(struct cli_state *cli,
-				    const struct ndr_syntax_id *interface,
-				    enum pipe_auth_level auth_level,
-				    const char *domain,
-				    struct rpc_pipe_client **presult);
-NTSTATUS cli_rpc_pipe_open_krb5(struct cli_state *cli,
-				const struct ndr_syntax_id *interface,
-				enum pipe_auth_level auth_level,
-				const char *service_princ,
-				const char *username,
-				const char *password,
-				struct rpc_pipe_client **presult);
-NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
-			     struct rpc_pipe_client *cli,
-			     DATA_BLOB *session_key);
-
-
-/* The following definitions come from rpc_client/cli_reg.c  */
-
-NTSTATUS rpccli_winreg_Connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-                         uint32 reg_type, uint32 access_mask,
-                         POLICY_HND *reg_hnd);
-uint32 reg_init_regval_buffer( REGVAL_BUFFER *buf2, REGISTRY_VALUE *val );
-
-/* The following definitions come from rpc_client/cli_samr.c  */
-
-NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    struct policy_handle *user_handle,
-				    const char *newpassword,
-				    const char *oldpassword);
-NTSTATUS rpccli_samr_chgpasswd_user2(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     const char *username,
-				     const char *newpassword,
-				     const char *oldpassword);
-NTSTATUS rpccli_samr_chng_pswd_auth_crap(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 const char *username,
-					 DATA_BLOB new_nt_password_blob,
-					 DATA_BLOB old_nt_hash_enc_blob,
-					 DATA_BLOB new_lm_password_blob,
-					 DATA_BLOB old_lm_hash_enc_blob);
-NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     const char *username,
-				     const char *newpassword,
-				     const char *oldpassword,
-				     struct samr_DomInfo1 **dominfo1,
-				     struct samr_ChangeReject **reject);
-void get_query_dispinfo_params(int loop_count, uint32 *max_entries,
-			       uint32 *max_size);
-NTSTATUS rpccli_try_samr_connects(struct rpc_pipe_client *cli,
-				  TALLOC_CTX *mem_ctx,
-				  uint32_t access_mask,
-				  POLICY_HND *connect_pol);
-
-/* The following definitions come from rpc_client/cli_spoolss.c  */
-
-WERROR rpccli_spoolss_open_printer_ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				const char *printername, const char *datatype, uint32 access_required,
-				const char *station, const char *username, POLICY_HND *pol);
-WERROR rpccli_spoolss_close_printer(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				 POLICY_HND *pol);
-WERROR rpccli_spoolss_enum_printers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				 char *name, uint32 flags, uint32 level,
-				 uint32 *num_printers, PRINTER_INFO_CTR *ctr);
-WERROR rpccli_spoolss_enum_ports(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      uint32 level, uint32 *num_ports, PORT_INFO_CTR *ctr);
-WERROR rpccli_spoolss_getprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      POLICY_HND *pol, uint32 level, 
-			      PRINTER_INFO_CTR *ctr);
-WERROR rpccli_spoolss_setprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      POLICY_HND *pol, uint32 level, 
-			      PRINTER_INFO_CTR *ctr, uint32 command);
-WERROR rpccli_spoolss_getprinterdriver(struct rpc_pipe_client *cli, 
-				    TALLOC_CTX *mem_ctx, 
-				    POLICY_HND *pol, uint32 level, 
-				    const char *env, int version, PRINTER_DRIVER_CTR *ctr);
-WERROR rpccli_spoolss_enumprinterdrivers (struct rpc_pipe_client *cli, 
-				       TALLOC_CTX *mem_ctx,
-				       uint32 level, const char *env,
-				       uint32 *num_drivers,
-				       PRINTER_DRIVER_CTR *ctr);
-WERROR rpccli_spoolss_getprinterdriverdir (struct rpc_pipe_client *cli, 
-					TALLOC_CTX *mem_ctx,
-					uint32 level, char *env,
-					DRIVER_DIRECTORY_CTR *ctr);
-WERROR rpccli_spoolss_addprinterdriver (struct rpc_pipe_client *cli, 
-				     TALLOC_CTX *mem_ctx, uint32 level,
-				     PRINTER_DRIVER_CTR *ctr);
-WERROR rpccli_spoolss_addprinterex (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				 uint32 level, PRINTER_INFO_CTR*ctr);
-WERROR rpccli_spoolss_deleteprinterdriverex(struct rpc_pipe_client *cli, 
-                                         TALLOC_CTX *mem_ctx, const char *arch,
-                                         const char *driver, int version);
-WERROR rpccli_spoolss_deleteprinterdriver (struct rpc_pipe_client *cli, 
-					TALLOC_CTX *mem_ctx, const char *arch,
-					const char *driver);
-WERROR rpccli_spoolss_getprintprocessordirectory(struct rpc_pipe_client *cli,
-					      TALLOC_CTX *mem_ctx,
-					      char *name, char *environment,
-					      fstring procdir);
-WERROR rpccli_spoolss_addform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			   POLICY_HND *handle, uint32 level, FORM *form);
-WERROR rpccli_spoolss_setform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			   POLICY_HND *handle, uint32 level, 
-			   const char *form_name, FORM *form);
-WERROR rpccli_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			   POLICY_HND *handle, const char *formname, 
-			   uint32 level, FORM_1 *form);
-WERROR rpccli_spoolss_deleteform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      POLICY_HND *handle, const char *form_name);
-WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			     POLICY_HND *handle, int level, uint32 *num_forms,
-			     FORM_1 **forms);
-WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			    POLICY_HND *hnd, uint32 level, uint32 firstjob, 
-			    uint32 num_jobs, uint32 *returned, JOB_INFO_CTR *ctr);
-WERROR rpccli_spoolss_setjob(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			  POLICY_HND *hnd, uint32 jobid, uint32 level, 
-			  uint32 command);
-WERROR rpccli_spoolss_getjob(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			  POLICY_HND *hnd, uint32 jobid, uint32 level,
-			  JOB_INFO_CTR *ctr);
-WERROR rpccli_spoolss_startpageprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				    POLICY_HND *hnd);
-WERROR rpccli_spoolss_endpageprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd);
-WERROR rpccli_spoolss_startdocprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				   POLICY_HND *hnd, char *docname, 
-				   char *outputfile, char *datatype, 
-				   uint32 *jobid);
-WERROR rpccli_spoolss_enddocprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd);
-WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd, const char *valuename, 
-				  REGISTRY_VALUE *value);
-WERROR rpccli_spoolss_getprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				    POLICY_HND *hnd, const char *keyname, 
-				    const char *valuename, 
-				    REGISTRY_VALUE *value);
-WERROR rpccli_spoolss_setprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd, REGISTRY_VALUE *value);
-WERROR rpccli_spoolss_setprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				    POLICY_HND *hnd, char *keyname, 
-				    REGISTRY_VALUE *value);
-WERROR rpccli_spoolss_enumprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				   POLICY_HND *hnd, uint32 ndx,
-				   uint32 value_offered, uint32 data_offered,
-				   uint32 *value_needed, uint32 *data_needed,
-				   REGISTRY_VALUE *value);
-WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				     POLICY_HND *hnd, const char *keyname, 
-				     REGVAL_CTR *ctr);
-WERROR rpccli_spoolss_writeprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				POLICY_HND *hnd, uint32 data_size, char *data,
-				uint32 *num_written);
-WERROR rpccli_spoolss_deleteprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				     POLICY_HND *hnd, char *valuename);
-WERROR rpccli_spoolss_deleteprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				       POLICY_HND *hnd, char *keyname, 
-				       char *valuename);
-WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd, const char *keyname,
-				  uint16 **keylist, uint32 *len);
-WERROR rpccli_spoolss_deleteprinterkey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				    POLICY_HND *hnd, char *keyname);
-
-/* The following definitions come from rpc_client/cli_spoolss_notify.c  */
-
-WERROR rpccli_spoolss_reply_open_printer(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
-				      const char *printer, uint32 printerlocal, uint32 type, 
-				      POLICY_HND *handle);
-WERROR rpccli_spoolss_reply_close_printer(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
-				       POLICY_HND *handle);
-WERROR rpccli_spoolss_routerreplyprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				      POLICY_HND *pol, uint32 condition, uint32 change_id);
-WERROR rpccli_spoolss_rrpcn(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
-			 POLICY_HND *pol, uint32 notify_data_len,
-			 SPOOL_NOTIFY_INFO_DATA *notify_data,
-			 uint32 change_low, uint32 change_high);
-WERROR rpccli_spoolss_rffpcnex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			    POLICY_HND *pol, uint32 flags, uint32 options,
-			    const char *localmachine, uint32 printerlocal,
-			    SPOOL_NOTIFY_OPTION *option);
-
-/* The following definitions come from rpc_client/cli_svcctl.c  */
-
-WERROR rpccli_svcctl_enumerate_services( struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-                                      POLICY_HND *hSCM, uint32 type, uint32 state, 
-				      uint32 *returned, ENUM_SERVICES_STATUS **service_array  );
-WERROR rpccli_svcctl_query_config(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-                                POLICY_HND *hService, SERVICE_CONFIG *config );
-
-/* The following definitions come from rpc_client/init_lsa.c  */
-
-void init_lsa_String(struct lsa_String *name, const char *s);
-void init_lsa_StringLarge(struct lsa_StringLarge *name, const char *s);
-void init_lsa_AsciiString(struct lsa_AsciiString *name, const char *s);
-void init_lsa_AsciiStringLarge(struct lsa_AsciiStringLarge *name, const char *s);
-void init_lsa_sec_qos(struct lsa_QosInfo *r,
-		      uint32_t len,
-		      uint16_t impersonation_level,
-		      uint8_t context_mode,
-		      uint8_t effective_only);
-void init_lsa_obj_attr(struct lsa_ObjectAttribute *r,
-		       uint32_t len,
-		       uint8_t *root_dir,
-		       const char *object_name,
-		       uint32_t attributes,
-		       struct security_descriptor *sec_desc,
-		       struct lsa_QosInfo *sec_qos);
-void init_lsa_translated_sid(struct lsa_TranslatedSid *r,
-			     enum lsa_SidType sid_type,
-			     uint32_t rid,
-			     uint32_t sid_index);
-void init_lsa_translated_name2(struct lsa_TranslatedName2 *r,
-			       enum lsa_SidType sid_type,
-			       const char *name,
-			       uint32_t sid_index,
-			       uint32_t unknown);
-
-/* The following definitions come from rpc_client/init_netlogon.c  */
-
-void init_netr_SamBaseInfo(struct netr_SamBaseInfo *r,
-			   NTTIME last_logon,
-			   NTTIME last_logoff,
-			   NTTIME acct_expiry,
-			   NTTIME last_password_change,
-			   NTTIME allow_password_change,
-			   NTTIME force_password_change,
-			   const char *account_name,
-			   const char *full_name,
-			   const char *logon_script,
-			   const char *profile_path,
-			   const char *home_directory,
-			   const char *home_drive,
-			   uint16_t logon_count,
-			   uint16_t bad_password_count,
-			   uint32_t rid,
-			   uint32_t primary_gid,
-			   struct samr_RidWithAttributeArray groups,
-			   uint32_t user_flags,
-			   struct netr_UserSessionKey key,
-			   const char *logon_server,
-			   const char *domain,
-			   struct dom_sid2 *domain_sid,
-			   struct netr_LMSessionKey LMSessKey,
-			   uint32_t acct_flags);
-void init_netr_SamInfo3(struct netr_SamInfo3 *r,
-			NTTIME last_logon,
-			NTTIME last_logoff,
-			NTTIME acct_expiry,
-			NTTIME last_password_change,
-			NTTIME allow_password_change,
-			NTTIME force_password_change,
-			const char *account_name,
-			const char *full_name,
-			const char *logon_script,
-			const char *profile_path,
-			const char *home_directory,
-			const char *home_drive,
-			uint16_t logon_count,
-			uint16_t bad_password_count,
-			uint32_t rid,
-			uint32_t primary_gid,
-			struct samr_RidWithAttributeArray groups,
-			uint32_t user_flags,
-			struct netr_UserSessionKey key,
-			const char *logon_server,
-			const char *domain,
-			struct dom_sid2 *domain_sid,
-			struct netr_LMSessionKey LMSessKey,
-			uint32_t acct_flags,
-			uint32_t sidcount,
-			struct netr_SidAttr *sids);
-NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info,
-				uint8_t pipe_session_key[16],
-				struct netr_SamInfo3 *sam3);
-void init_netr_IdentityInfo(struct netr_IdentityInfo *r,
-			    const char *domain_name,
-			    uint32_t parameter_control,
-			    uint32_t logon_id_low,
-			    uint32_t logon_id_high,
-			    const char *account_name,
-			    const char *workstation);
-void init_netr_NetworkInfo(struct netr_NetworkInfo *r,
-			   const char *domain_name,
-			   uint32_t parameter_control,
-			   uint32_t logon_id_low,
-			   uint32_t logon_id_high,
-			   const char *account_name,
-			   const char *workstation,
-			   uint8_t challenge[8],
-			   struct netr_ChallengeResponse nt,
-			   struct netr_ChallengeResponse lm);
-void init_netr_PasswordInfo(struct netr_PasswordInfo *r,
-			    const char *domain_name,
-			    uint32_t parameter_control,
-			    uint32_t logon_id_low,
-			    uint32_t logon_id_high,
-			    const char *account_name,
-			    const char *workstation,
-			    struct samr_Password lmpassword,
-			    struct samr_Password ntpassword);
-
-/* The following definitions come from rpc_client/init_samr.c  */
-
-void init_samr_DomInfo1(struct samr_DomInfo1 *r,
-			uint16_t min_password_length,
-			uint16_t password_history_length,
-			uint32_t password_properties,
-			int64_t max_password_age,
-			int64_t min_password_age);
-void init_samr_DomInfo2(struct samr_DomInfo2 *r,
-			NTTIME force_logoff_time,
-			const char *comment,
-			const char *domain_name,
-			const char *primary,
-			uint64_t sequence_num,
-			uint32_t unknown2,
-			enum samr_Role role,
-			uint32_t unknown3,
-			uint32_t num_users,
-			uint32_t num_groups,
-			uint32_t num_aliases);
-void init_samr_DomInfo3(struct samr_DomInfo3 *r,
-			NTTIME force_logoff_time);
-void init_samr_DomInfo4(struct samr_DomInfo4 *r,
-			const char *comment);
-void init_samr_DomInfo5(struct samr_DomInfo5 *r,
-			const char *domain_name);
-void init_samr_DomInfo6(struct samr_DomInfo6 *r,
-			const char *primary);
-void init_samr_DomInfo7(struct samr_DomInfo7 *r,
-			enum samr_Role role);
-void init_samr_DomInfo8(struct samr_DomInfo8 *r,
-			uint64_t sequence_num,
-			NTTIME domain_create_time);
-void init_samr_DomInfo9(struct samr_DomInfo9 *r,
-			uint32_t unknown);
-void init_samr_DomInfo12(struct samr_DomInfo12 *r,
-			 uint64_t lockout_duration,
-			 uint64_t lockout_window,
-			 uint16_t lockout_threshold);
-void init_samr_group_info1(struct samr_GroupInfoAll *r,
-			   const char *name,
-			   uint32_t attributes,
-			   uint32_t num_members,
-			   const char *description);
-void init_samr_group_info2(struct lsa_String *r, const char *group_name);
-void init_samr_group_info3(struct samr_GroupInfoAttributes *r,
-			   uint32_t attributes);
-void init_samr_group_info4(struct lsa_String *r, const char *description);
-void init_samr_group_info5(struct samr_GroupInfoAll *r,
-			   const char *name,
-			   uint32_t attributes,
-			   uint32_t num_members,
-			   const char *description);
-void init_samr_alias_info1(struct samr_AliasInfoAll *r,
-			   const char *name,
-			   uint32_t num_members,
-			   const char *description);
-void init_samr_alias_info3(struct lsa_String *r,
-			   const char *description);
-void init_samr_user_info7(struct samr_UserInfo7 *r,
-			  const char *account_name);
-void init_samr_user_info9(struct samr_UserInfo9 *r,
-			  uint32_t primary_gid);
-void init_samr_user_info16(struct samr_UserInfo16 *r,
-			   uint32_t acct_flags);
-void init_samr_user_info18(struct samr_UserInfo18 *r,
-			   const uint8 lm_pwd[16],
-			   const uint8 nt_pwd[16]);
-void init_samr_user_info20(struct samr_UserInfo20 *r,
-			   struct lsa_BinaryString *parameters);
-void init_samr_user_info21(struct samr_UserInfo21 *r,
-			   NTTIME last_logon,
-			   NTTIME last_logoff,
-			   NTTIME last_password_change,
-			   NTTIME acct_expiry,
-			   NTTIME allow_password_change,
-			   NTTIME force_password_change,
-			   const char *account_name,
-			   const char *full_name,
-			   const char *home_directory,
-			   const char *home_drive,
-			   const char *logon_script,
-			   const char *profile_path,
-			   const char *description,
-			   const char *workstations,
-			   const char *comment,
-			   struct lsa_BinaryString *parameters,
-			   uint32_t rid,
-			   uint32_t primary_gid,
-			   uint32_t acct_flags,
-			   uint32_t fields_present,
-			   struct samr_LogonHours logon_hours,
-			   uint16_t bad_password_count,
-			   uint16_t logon_count,
-			   uint16_t country_code,
-			   uint16_t code_page,
-			   uint8_t nt_password_set,
-			   uint8_t lm_password_set,
-			   uint8_t password_expired);
-void init_samr_user_info23(struct samr_UserInfo23 *r,
-			   NTTIME last_logon,
-			   NTTIME last_logoff,
-			   NTTIME last_password_change,
-			   NTTIME acct_expiry,
-			   NTTIME allow_password_change,
-			   NTTIME force_password_change,
-			   const char *account_name,
-			   const char *full_name,
-			   const char *home_directory,
-			   const char *home_drive,
-			   const char *logon_script,
-			   const char *profile_path,
-			   const char *description,
-			   const char *workstations,
-			   const char *comment,
-			   struct lsa_BinaryString *parameters,
-			   uint32_t rid,
-			   uint32_t primary_gid,
-			   uint32_t acct_flags,
-			   uint32_t fields_present,
-			   struct samr_LogonHours logon_hours,
-			   uint16_t bad_password_count,
-			   uint16_t logon_count,
-			   uint16_t country_code,
-			   uint16_t code_page,
-			   uint8_t nt_password_set,
-			   uint8_t lm_password_set,
-			   uint8_t password_expired,
-			   uint8_t data[516],
-			   uint8_t pw_len);
-void init_samr_user_info24(struct samr_UserInfo24 *r,
-			   uint8_t data[516],
-			   uint8_t pw_len);
-void init_samr_CryptPasswordEx(const char *pwd,
-			       DATA_BLOB *session_key,
-			       struct samr_CryptPasswordEx *pwd_buf);
-void init_samr_CryptPassword(const char *pwd,
-			     DATA_BLOB *session_key,
-			     struct samr_CryptPassword *pwd_buf);
-
-/* The following definitions come from rpc_client/init_srvsvc.c  */
-
-void init_srvsvc_NetSrvInfo102(struct srvsvc_NetSrvInfo102 *r,
-			       enum srvsvc_PlatformId platform_id,
-			       const char *server_name,
-			       uint32_t version_major,
-			       uint32_t version_minor,
-			       uint32_t server_type,
-			       const char *comment,
-			       uint32_t users,
-			       uint32_t disc,
-			       uint32_t hidden,
-			       uint32_t announce,
-			       uint32_t anndelta,
-			       uint32_t licenses,
-			       const char *userpath);
-void init_srvsvc_NetSrvInfo101(struct srvsvc_NetSrvInfo101 *r,
-			       enum srvsvc_PlatformId platform_id,
-			       const char *server_name,
-			       uint32_t version_major,
-			       uint32_t version_minor,
-			       uint32_t server_type,
-			       const char *comment);
-void init_srvsvc_NetSrvInfo100(struct srvsvc_NetSrvInfo100 *r,
-			       enum srvsvc_PlatformId platform_id,
-			       const char *server_name);
-void init_srvsvc_NetShareInfo0(struct srvsvc_NetShareInfo0 *r,
-			       const char *name);
-void init_srvsvc_NetShareInfo1(struct srvsvc_NetShareInfo1 *r,
-			       const char *name,
-			       enum srvsvc_ShareType type,
-			       const char *comment);
-void init_srvsvc_NetShareInfo2(struct srvsvc_NetShareInfo2 *r,
-			       const char *name,
-			       enum srvsvc_ShareType type,
-			       const char *comment,
-			       uint32_t permissions,
-			       uint32_t max_users,
-			       uint32_t current_users,
-			       const char *path,
-			       const char *password);
-void init_srvsvc_NetShareInfo501(struct srvsvc_NetShareInfo501 *r,
-				 const char *name,
-				 enum srvsvc_ShareType type,
-				 const char *comment,
-				 uint32_t csc_policy);
-void init_srvsvc_NetShareInfo502(struct srvsvc_NetShareInfo502 *r,
-				 const char *name,
-				 enum srvsvc_ShareType type,
-				 const char *comment,
-				 uint32_t permissions,
-				 uint32_t max_users,
-				 uint32_t current_users,
-				 const char *path,
-				 const char *password,
-				 struct sec_desc_buf *sd_buf);
-void init_srvsvc_NetShareInfo1004(struct srvsvc_NetShareInfo1004 *r,
-				  const char *comment);
-void init_srvsvc_NetShareInfo1005(struct srvsvc_NetShareInfo1005 *r,
-				  uint32_t dfs_flags);
-void init_srvsvc_NetShareInfo1006(struct srvsvc_NetShareInfo1006 *r,
-				  uint32_t max_users);
-void init_srvsvc_NetShareInfo1007(struct srvsvc_NetShareInfo1007 *r,
-				  uint32_t flags,
-				  const char *alternate_directory_name);
-void init_srvsvc_NetRemoteTODInfo(struct srvsvc_NetRemoteTODInfo *r,
-				  uint32_t elapsed,
-				  uint32_t msecs,
-				  uint32_t hours,
-				  uint32_t mins,
-				  uint32_t secs,
-				  uint32_t hunds,
-				  int32_t ttimezone,
-				  uint32_t tinterval,
-				  uint32_t day,
-				  uint32_t month,
-				  uint32_t year,
-				  uint32_t weekday);
-void init_srvsvc_NetSessInfo0(struct srvsvc_NetSessInfo0 *r,
-			      const char *client);
-void init_srvsvc_NetSessInfo1(struct srvsvc_NetSessInfo1 *r,
-			      const char *client,
-			      const char *user,
-			      uint32_t num_open,
-			      uint32_t _time,
-			      uint32_t idle_time,
-			      uint32_t user_flags);
-void init_srvsvc_NetSessInfo2(struct srvsvc_NetSessInfo2 *r,
-			      const char *client,
-			      const char *user,
-			      uint32_t num_open,
-			      uint32_t _time,
-			      uint32_t idle_time,
-			      uint32_t user_flags,
-			      const char *client_type);
-void init_srvsvc_NetSessInfo10(struct srvsvc_NetSessInfo10 *r,
-			       const char *client,
-			       const char *user,
-			       uint32_t _time,
-			       uint32_t idle_time);
-void init_srvsvc_NetSessInfo502(struct srvsvc_NetSessInfo502 *r,
-			       const char *client,
-			       const char *user,
-			       uint32_t num_open,
-			       uint32_t _time,
-			       uint32_t idle_time,
-			       uint32_t user_flags,
-			       const char *client_type,
-			       const char *transport);
-void init_srvsvc_NetFileInfo2(struct srvsvc_NetFileInfo2 *r,
-			      uint32_t fid);
-void init_srvsvc_NetFileInfo3(struct srvsvc_NetFileInfo3 *r,
-			      uint32_t fid,
-			      uint32_t permissions,
-			      uint32_t num_locks,
-			      const char *path,
-			      const char *user);
-void init_srvsvc_NetConnInfo0(struct srvsvc_NetConnInfo0 *r,
-			      uint32_t conn_id);
-void init_srvsvc_NetConnInfo1(struct srvsvc_NetConnInfo1 *r,
-			      uint32_t conn_id,
-			      uint32_t conn_type,
-			      uint32_t num_open,
-			      uint32_t num_users,
-			      uint32_t conn_time,
-			      const char *user,
-			      const char *share);
-
-/* The following definitions come from rpc_client/ndr.c  */
-
-NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli,
-			TALLOC_CTX *mem_ctx,
-			const struct ndr_interface_table *table,
-			uint32 opnum, void *r);
-
-/* The following definitions come from rpc_parse/parse_buffer.c  */
-
-void rpcbuf_init(RPC_BUFFER *buffer, uint32 size, TALLOC_CTX *ctx);
-bool prs_rpcbuffer(const char *desc, prs_struct *ps, int depth, RPC_BUFFER *buffer);
-bool prs_rpcbuffer_p(const char *desc, prs_struct *ps, int depth, RPC_BUFFER **buffer);
-bool rpcbuf_alloc_size(RPC_BUFFER *buffer, uint32 buffer_size);
-void rpcbuf_move(RPC_BUFFER *src, RPC_BUFFER **dest);
-uint32 rpcbuf_get_size(RPC_BUFFER *buffer);
-bool smb_io_relstr(const char *desc, RPC_BUFFER *buffer, int depth, UNISTR *string);
-bool smb_io_relarraystr(const char *desc, RPC_BUFFER *buffer, int depth, uint16 **string);
-bool smb_io_relsecdesc(const char *desc, RPC_BUFFER *buffer, int depth, SEC_DESC **secdesc);
-uint32 size_of_relative_string(UNISTR *string);
-
-/* The following definitions come from rpc_parse/parse_eventlog.c  */
-
-bool eventlog_io_q_read_eventlog(const char *desc, EVENTLOG_Q_READ_EVENTLOG *q_u,
-				 prs_struct *ps, int depth);
-bool eventlog_io_r_read_eventlog(const char *desc,
-				 EVENTLOG_Q_READ_EVENTLOG *q_u,
-				 EVENTLOG_R_READ_EVENTLOG *r_u,
-				 prs_struct *ps,
-				 int depth);
-
-/* The following definitions come from rpc_parse/parse_misc.c  */
-
-bool smb_io_time(const char *desc, NTTIME *nttime, prs_struct *ps, int depth);
-bool smb_io_nttime(const char *desc, prs_struct *ps, int depth, NTTIME *nttime);
-uint32 get_enum_hnd(ENUM_HND *enh);
-void init_enum_hnd(ENUM_HND *enh, uint32 hnd);
-bool smb_io_enum_hnd(const char *desc, ENUM_HND *hnd, prs_struct *ps, int depth);
-bool smb_io_dom_sid(const char *desc, DOM_SID *sid, prs_struct *ps, int depth);
-void init_dom_sid2(DOM_SID2 *sid2, const DOM_SID *sid);
-bool smb_io_dom_sid2_p(const char *desc, prs_struct *ps, int depth, DOM_SID2 **sid2);
-bool smb_io_dom_sid2(const char *desc, DOM_SID2 *sid, prs_struct *ps, int depth);
-bool smb_io_uuid(const char *desc, struct GUID *uuid, 
-		 prs_struct *ps, int depth);
-void init_str_hdr(STRHDR *hdr, int max_len, int len, uint32 buffer);
-bool smb_io_strhdr(const char *desc,  STRHDR *hdr, prs_struct *ps, int depth);
-void init_uni_hdr(UNIHDR *hdr, UNISTR2 *str2);
-bool smb_io_unihdr(const char *desc, UNIHDR *hdr, prs_struct *ps, int depth);
-void init_buf_hdr(BUFHDR *hdr, int max_len, int len);
-bool smb_io_hdrbuf_pre(const char *desc, BUFHDR *hdr, prs_struct *ps, int depth, uint32 *offset);
-bool smb_io_hdrbuf_post(const char *desc, BUFHDR *hdr, prs_struct *ps, int depth, 
-				uint32 ptr_hdrbuf, uint32 max_len, uint32 len);
-bool smb_io_hdrbuf(const char *desc, BUFHDR *hdr, prs_struct *ps, int depth);
-void init_unistr(UNISTR *str, const char *buf);
-bool smb_io_unistr(const char *desc, UNISTR *uni, prs_struct *ps, int depth);
-void init_rpc_blob_uint32(RPC_DATA_BLOB *str, uint32 val);
-void init_rpc_blob_str(RPC_DATA_BLOB *str, const char *buf, int len);
-void init_rpc_blob_hex(RPC_DATA_BLOB *str, const char *buf);
-void init_rpc_blob_bytes(RPC_DATA_BLOB *str, uint8 *buf, size_t len);
-bool smb_io_buffer5(const char *desc, BUFFER5 *buf5, prs_struct *ps, int depth);
-void init_regval_buffer(REGVAL_BUFFER *str, const uint8 *buf, size_t len);
-bool smb_io_regval_buffer(const char *desc, prs_struct *ps, int depth, REGVAL_BUFFER *buf2);
-void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf);
-void copy_unistr2(UNISTR2 *str, const UNISTR2 *from);
-void init_string2(STRING2 *str, const char *buf, size_t max_len, size_t str_len);
-bool smb_io_string2(const char *desc, STRING2 *str2, uint32 buffer, prs_struct *ps, int depth);
-void init_unistr2(UNISTR2 *str, const char *buf, enum unistr2_term_codes flags);
-void init_unistr4(UNISTR4 *uni4, const char *buf, enum unistr2_term_codes flags);
-void init_unistr4_w( TALLOC_CTX *ctx, UNISTR4 *uni4, const smb_ucs2_t *buf );
-void init_unistr2_w(TALLOC_CTX *ctx, UNISTR2 *str, const smb_ucs2_t *buf);
-void init_unistr2_from_unistr(TALLOC_CTX *ctx, UNISTR2 *to, const UNISTR *from);
-void init_unistr2_from_datablob(UNISTR2 *str, DATA_BLOB *blob) ;
-bool prs_io_unistr2_p(const char *desc, prs_struct *ps, int depth, UNISTR2 **uni2);
-bool prs_io_unistr2(const char *desc, prs_struct *ps, int depth, UNISTR2 *uni2 );
-bool smb_io_unistr2(const char *desc, UNISTR2 *uni2, uint32 buffer, prs_struct *ps, int depth);
-bool prs_unistr4(const char *desc, prs_struct *ps, int depth, UNISTR4 *uni4);
-bool prs_unistr4_hdr(const char *desc, prs_struct *ps, int depth, UNISTR4 *uni4);
-bool prs_unistr4_str(const char *desc, prs_struct *ps, int depth, UNISTR4 *uni4);
-bool prs_unistr4_array(const char *desc, prs_struct *ps, int depth, UNISTR4_ARRAY *array );
-bool init_unistr4_array( UNISTR4_ARRAY *array, uint32 count, const char **strings );
-void init_dom_rid(DOM_RID *prid, uint32 rid, uint16 type, uint32 idx);
-bool smb_io_dom_rid(const char *desc, DOM_RID *rid, prs_struct *ps, int depth);
-bool smb_io_dom_rid2(const char *desc, DOM_RID2 *rid, prs_struct *ps, int depth);
-void init_dom_rid3(DOM_RID3 *rid3, uint32 rid, uint8 type);
-bool smb_io_dom_rid3(const char *desc, DOM_RID3 *rid3, prs_struct *ps, int depth);
-void init_dom_rid4(DOM_RID4 *rid4, uint16 unknown, uint16 attr, uint32 rid);
-void init_clnt_srv(DOM_CLNT_SRV *logcln, const char *logon_srv,
-		   const char *comp_name);
-bool smb_io_clnt_srv(const char *desc, DOM_CLNT_SRV *logcln, prs_struct *ps, int depth);
-void init_log_info(DOM_LOG_INFO *loginfo, const char *logon_srv, const char *acct_name,
-		uint16 sec_chan, const char *comp_name);
-bool smb_io_log_info(const char *desc, DOM_LOG_INFO *loginfo, prs_struct *ps, int depth);
-bool smb_io_chal(const char *desc, DOM_CHAL *chal, prs_struct *ps, int depth);
-bool smb_io_cred(const char *desc,  DOM_CRED *cred, prs_struct *ps, int depth);
-void init_clnt_info2(DOM_CLNT_INFO2 *clnt,
-				const char *logon_srv, const char *comp_name,
-				const DOM_CRED *clnt_cred);
-bool smb_io_clnt_info2(const char *desc, DOM_CLNT_INFO2 *clnt, prs_struct *ps, int depth);
-void init_clnt_info(DOM_CLNT_INFO *clnt,
-		const char *logon_srv, const char *acct_name,
-		uint16 sec_chan, const char *comp_name,
-		const DOM_CRED *cred);
-bool smb_io_clnt_info(const char *desc,  DOM_CLNT_INFO *clnt, prs_struct *ps, int depth);
-void init_logon_id(DOM_LOGON_ID *logonid, uint32 log_id_low, uint32 log_id_high);
-bool smb_io_logon_id(const char *desc, DOM_LOGON_ID *logonid, prs_struct *ps, int depth);
-void init_owf_info(OWF_INFO *hash, const uint8 data[16]);
-bool smb_io_owf_info(const char *desc, OWF_INFO *hash, prs_struct *ps, int depth);
-bool smb_io_gid(const char *desc,  DOM_GID *gid, prs_struct *ps, int depth);
-bool smb_io_pol_hnd(const char *desc, POLICY_HND *pol, prs_struct *ps, int depth);
-void init_unistr3(UNISTR3 *str, const char *buf);
-bool smb_io_unistr3(const char *desc, UNISTR3 *name, prs_struct *ps, int depth);
-bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64);
-bool smb_io_bufhdr2(const char *desc, BUFHDR2 *hdr, prs_struct *ps, int depth);
-bool smb_io_bufhdr4(const char *desc, BUFHDR4 *hdr, prs_struct *ps, int depth);
-bool smb_io_rpc_blob(const char *desc, RPC_DATA_BLOB *blob, prs_struct *ps, int depth);
-bool make_uni_hdr(UNIHDR *hdr, int len);
-bool make_bufhdr2(BUFHDR2 *hdr, uint32 info_level, uint32 length, uint32 buffer);
-uint32 str_len_uni(UNISTR *source);
-bool policy_handle_is_valid(const POLICY_HND *hnd);
-
-/* The following definitions come from rpc_parse/parse_ntsvcs.c  */
-
-bool ntsvcs_io_q_get_device_list(const char *desc, NTSVCS_Q_GET_DEVICE_LIST *q_u, prs_struct *ps, int depth);
-bool ntsvcs_io_r_get_device_list(const char *desc, NTSVCS_R_GET_DEVICE_LIST *r_u, prs_struct *ps, int depth);
-bool ntsvcs_io_q_get_device_reg_property(const char *desc, NTSVCS_Q_GET_DEVICE_REG_PROPERTY *q_u, prs_struct *ps, int depth);
-bool ntsvcs_io_r_get_device_reg_property(const char *desc, NTSVCS_R_GET_DEVICE_REG_PROPERTY *r_u, prs_struct *ps, int depth);
-
-/* The following definitions come from rpc_parse/parse_prs.c  */
-
-void prs_dump(const char *name, int v, prs_struct *ps);
-void prs_dump_before(const char *name, int v, prs_struct *ps);
-void prs_dump_region(const char *name, int v, prs_struct *ps,
-		     int from_off, int to_off);
-void prs_debug(prs_struct *ps, int depth, const char *desc, const char *fn_name);
-bool prs_init(prs_struct *ps, uint32 size, TALLOC_CTX *ctx, bool io);
-void prs_mem_free(prs_struct *ps);
-void prs_mem_clear(prs_struct *ps);
-char *prs_alloc_mem_(prs_struct *ps, size_t size, unsigned int count);
-char *prs_alloc_mem(prs_struct *ps, size_t size, unsigned int count);
-TALLOC_CTX *prs_get_mem_context(prs_struct *ps);
-void prs_give_memory(prs_struct *ps, char *buf, uint32 size, bool is_dynamic);
-char *prs_take_memory(prs_struct *ps, uint32 *psize);
-bool prs_set_buffer_size(prs_struct *ps, uint32 newsize);
-bool prs_grow(prs_struct *ps, uint32 extra_space);
-bool prs_force_grow(prs_struct *ps, uint32 extra_space);
-char *prs_data_p(prs_struct *ps);
-uint32 prs_data_size(prs_struct *ps);
-uint32 prs_offset(prs_struct *ps);
-bool prs_set_offset(prs_struct *ps, uint32 offset);
-bool prs_append_prs_data(prs_struct *dst, prs_struct *src);
-bool prs_append_some_prs_data(prs_struct *dst, prs_struct *src, int32 start, uint32 len);
-bool prs_copy_data_in(prs_struct *dst, const char *src, uint32 len);
-bool prs_copy_data_out(char *dst, prs_struct *src, uint32 len);
-bool prs_copy_all_data_out(char *dst, prs_struct *src);
-void prs_set_endian_data(prs_struct *ps, bool endian);
-bool prs_align(prs_struct *ps);
-bool prs_align_uint16(prs_struct *ps);
-bool prs_align_uint64(prs_struct *ps);
-bool prs_align_custom(prs_struct *ps, uint8 boundary);
-bool prs_align_needed(prs_struct *ps, uint32 needed);
-char *prs_mem_get(prs_struct *ps, uint32 extra_size);
-void prs_switch_type(prs_struct *ps, bool io);
-void prs_force_dynamic(prs_struct *ps);
-void prs_set_session_key(prs_struct *ps, const char sess_key[16]);
-bool prs_uint8(const char *name, prs_struct *ps, int depth, uint8 *data8);
-bool prs_pointer( const char *name, prs_struct *ps, int depth, 
-                 void *dta, size_t data_size,
-                 bool (*prs_fn)(const char*, prs_struct*, int, void*) );
-bool prs_uint16(const char *name, prs_struct *ps, int depth, uint16 *data16);
-bool prs_uint32(const char *name, prs_struct *ps, int depth, uint32 *data32);
-bool prs_int32(const char *name, prs_struct *ps, int depth, int32 *data32);
-bool prs_ntstatus(const char *name, prs_struct *ps, int depth, NTSTATUS *status);
-bool prs_dcerpc_status(const char *name, prs_struct *ps, int depth, NTSTATUS *status);
-bool prs_werror(const char *name, prs_struct *ps, int depth, WERROR *status);
-bool prs_uint8s(bool charmode, const char *name, prs_struct *ps, int depth, uint8 *data8s, int len);
-bool prs_uint16s(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
-bool prs_uint16uni(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
-bool prs_uint32s(bool charmode, const char *name, prs_struct *ps, int depth, uint32 *data32s, int len);
-bool prs_buffer5(bool charmode, const char *name, prs_struct *ps, int depth, BUFFER5 *str);
-bool prs_regval_buffer(bool charmode, const char *name, prs_struct *ps, int depth, REGVAL_BUFFER *buf);
-bool prs_string2(bool charmode, const char *name, prs_struct *ps, int depth, STRING2 *str);
-bool prs_unistr2(bool charmode, const char *name, prs_struct *ps, int depth, UNISTR2 *str);
-bool prs_unistr3(bool charmode, const char *name, UNISTR3 *str, prs_struct *ps, int depth);
-bool prs_unistr(const char *name, prs_struct *ps, int depth, UNISTR *str);
-bool prs_string(const char *name, prs_struct *ps, int depth, char *str, int max_buf_size);
-bool prs_string_alloc(const char *name, prs_struct *ps, int depth, const char **str);
-bool prs_uint16_pre(const char *name, prs_struct *ps, int depth, uint16 *data16, uint32 *offset);
-bool prs_uint16_post(const char *name, prs_struct *ps, int depth, uint16 *data16,
-				uint32 ptr_uint16, uint32 start_offset);
-bool prs_uint32_pre(const char *name, prs_struct *ps, int depth, uint32 *data32, uint32 *offset);
-bool prs_uint32_post(const char *name, prs_struct *ps, int depth, uint32 *data32,
-				uint32 ptr_uint32, uint32 data_size);
-int tdb_prs_store(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps);
-int tdb_prs_fetch(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps, TALLOC_CTX *mem_ctx);
-bool prs_hash1(prs_struct *ps, uint32 offset, int len);
-void schannel_encode(struct schannel_auth_struct *a, enum pipe_auth_level auth_level,
-		   enum schannel_direction direction,
-		   RPC_AUTH_SCHANNEL_CHK * verf,
-		   char *data, size_t data_len);
-bool schannel_decode(struct schannel_auth_struct *a, enum pipe_auth_level auth_level,
-		   enum schannel_direction direction, 
-		   RPC_AUTH_SCHANNEL_CHK * verf, char *data, size_t data_len);
-bool prs_init_data_blob(prs_struct *prs, DATA_BLOB *blob, TALLOC_CTX *mem_ctx);
-bool prs_data_blob(prs_struct *prs, DATA_BLOB *blob, TALLOC_CTX *mem_ctx);
-
-/* The following definitions come from rpc_parse/parse_rpc.c  */
-
-const char *cli_get_pipe_name_from_iface(TALLOC_CTX *mem_ctx,
-					 struct cli_state *cli,
-					 const struct ndr_syntax_id *interface);
-void init_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type, uint8 flags,
-				uint32 call_id, int data_len, int auth_len);
-bool smb_io_rpc_hdr(const char *desc,  RPC_HDR *rpc, prs_struct *ps, int depth);
-void init_rpc_context(RPC_CONTEXT *rpc_ctx, uint16 context_id,
-		      const RPC_IFACE *abstract, const RPC_IFACE *transfer);
-void init_rpc_hdr_rb(RPC_HDR_RB *rpc, 
-				uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
-				RPC_CONTEXT *context);
-bool smb_io_rpc_context(const char *desc, RPC_CONTEXT *rpc_ctx, prs_struct *ps, int depth);
-bool smb_io_rpc_hdr_rb(const char *desc, RPC_HDR_RB *rpc, prs_struct *ps, int depth);
-void init_rpc_hdr_ba(RPC_HDR_BA *rpc, 
-				uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
-				const char *pipe_addr,
-				uint8 num_results, uint16 result, uint16 reason,
-				RPC_IFACE *transfer);
-bool smb_io_rpc_hdr_ba(const char *desc, RPC_HDR_BA *rpc, prs_struct *ps, int depth);
-void init_rpc_hdr_req(RPC_HDR_REQ *hdr, uint32 alloc_hint, uint16 opnum);
-bool smb_io_rpc_hdr_req(const char *desc, RPC_HDR_REQ *rpc, prs_struct *ps, int depth);
-bool smb_io_rpc_hdr_resp(const char *desc, RPC_HDR_RESP *rpc, prs_struct *ps, int depth);
-bool smb_io_rpc_hdr_fault(const char *desc, RPC_HDR_FAULT *rpc, prs_struct *ps, int depth);
-void init_rpc_hdr_auth(RPC_HDR_AUTH *rai,
-				uint8 auth_type, uint8 auth_level,
-				uint8 auth_pad_len,
-				uint32 auth_context_id);
-bool smb_io_rpc_hdr_auth(const char *desc, RPC_HDR_AUTH *rai, prs_struct *ps, int depth);
-bool rpc_auth_verifier_chk(RPC_AUTH_VERIFIER *rav,
-				const char *signature, uint32 msg_type);
-void init_rpc_auth_verifier(RPC_AUTH_VERIFIER *rav,
-				const char *signature, uint32 msg_type);
-bool smb_io_rpc_auth_verifier(const char *desc, RPC_AUTH_VERIFIER *rav, prs_struct *ps, int depth);
-bool smb_io_rpc_schannel_verifier(const char *desc, RPC_AUTH_VERIFIER *rav, prs_struct *ps, int depth);
-void init_rpc_auth_schannel_neg(RPC_AUTH_SCHANNEL_NEG *neg,
-			      const char *domain, const char *myname);
-bool smb_io_rpc_auth_schannel_neg(const char *desc, RPC_AUTH_SCHANNEL_NEG *neg,
-				prs_struct *ps, int depth);
-bool smb_io_rpc_auth_schannel_chk(const char *desc, int auth_len, 
-                                RPC_AUTH_SCHANNEL_CHK * chk,
-				prs_struct *ps, int depth);
-
-/* The following definitions come from rpc_parse/parse_sec.c  */
-
-bool sec_io_desc(const char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth);
-bool sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int depth);
-
-/* The following definitions come from rpc_parse/parse_spoolss.c  */
-
-bool spoolss_io_system_time(const char *desc, prs_struct *ps, int depth, SYSTEMTIME *systime);
-bool make_systemtime(SYSTEMTIME *systime, struct tm *unixtime);
-bool smb_io_notify_info_data_strings(const char *desc,SPOOL_NOTIFY_INFO_DATA *data,
-                                     prs_struct *ps, int depth);
-bool spool_io_user_level_1( const char *desc, prs_struct *ps, int depth, SPOOL_USER_1 *q_u );
-bool spoolss_io_devmode(const char *desc, prs_struct *ps, int depth, DEVICEMODE *devmode);
-bool make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u,
-		const fstring printername, 
-		const fstring datatype, 
-		uint32 access_required,
-		const fstring clientname,
-		const fstring user_name);
-bool make_spoolss_q_addprinterex( TALLOC_CTX *mem_ctx, SPOOL_Q_ADDPRINTEREX *q_u, 
-	const char *srv_name, const char* clientname, const char* user_name,
-	uint32 level, PRINTER_INFO_CTR *ctr);
-bool make_spoolss_printer_info_2(TALLOC_CTX *ctx, SPOOL_PRINTER_INFO_LEVEL_2 **spool_info2, 
-				PRINTER_INFO_2 *info);
-bool make_spoolss_printer_info_3(TALLOC_CTX *mem_ctx, SPOOL_PRINTER_INFO_LEVEL_3 **spool_info3, 
-				PRINTER_INFO_3 *info);
-bool make_spoolss_printer_info_7(TALLOC_CTX *mem_ctx, SPOOL_PRINTER_INFO_LEVEL_7 **spool_info7, 
-				PRINTER_INFO_7 *info);
-bool spoolss_io_q_open_printer(const char *desc, SPOOL_Q_OPEN_PRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_open_printer(const char *desc, SPOOL_R_OPEN_PRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_open_printer_ex(const char *desc, SPOOL_Q_OPEN_PRINTER_EX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_open_printer_ex(const char *desc, SPOOL_R_OPEN_PRINTER_EX *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_deleteprinterdriverex( TALLOC_CTX *mem_ctx,
-                                           SPOOL_Q_DELETEPRINTERDRIVEREX *q_u, 
-                                           const char *server,
-                                           const char* arch, 
-                                           const char* driver,
-                                           int version);
-bool make_spoolss_q_deleteprinterdriver(
-	TALLOC_CTX *mem_ctx,
-	SPOOL_Q_DELETEPRINTERDRIVER *q_u, 
-	const char *server,
-	const char* arch, 
-	const char* driver 
-);
-bool make_spoolss_q_getprinterdata(SPOOL_Q_GETPRINTERDATA *q_u,
-				   const POLICY_HND *handle,
-				   const char *valuename, uint32 size);
-bool make_spoolss_q_getprinterdataex(SPOOL_Q_GETPRINTERDATAEX *q_u,
-				     const POLICY_HND *handle,
-				     const char *keyname, 
-				     const char *valuename, uint32 size);
-bool spoolss_io_q_getprinterdata(const char *desc, SPOOL_Q_GETPRINTERDATA *q_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteprinterdata(const char *desc, SPOOL_Q_DELETEPRINTERDATA *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteprinterdata(const char *desc, SPOOL_R_DELETEPRINTERDATA *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteprinterdataex(const char *desc, SPOOL_Q_DELETEPRINTERDATAEX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteprinterdataex(const char *desc, SPOOL_R_DELETEPRINTERDATAEX *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprinterdata(const char *desc, SPOOL_R_GETPRINTERDATA *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_closeprinter(SPOOL_Q_CLOSEPRINTER *q_u, POLICY_HND *hnd);
-bool spoolss_io_q_abortprinter(const char *desc, SPOOL_Q_ABORTPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_abortprinter(const char *desc, SPOOL_R_ABORTPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteprinter(const char *desc, SPOOL_Q_DELETEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteprinter(const char *desc, SPOOL_R_DELETEPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteprinterdriver(const char *desc, SPOOL_Q_DELETEPRINTERDRIVER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteprinterdriver(const char *desc, SPOOL_R_DELETEPRINTERDRIVER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteprinterdriverex(const char *desc, SPOOL_Q_DELETEPRINTERDRIVEREX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteprinterdriverex(const char *desc, SPOOL_R_DELETEPRINTERDRIVEREX *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_closeprinter(const char *desc, SPOOL_Q_CLOSEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_closeprinter(const char *desc, SPOOL_R_CLOSEPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_startdocprinter(const char *desc, SPOOL_Q_STARTDOCPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_startdocprinter(const char *desc, SPOOL_R_STARTDOCPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enddocprinter(const char *desc, SPOOL_Q_ENDDOCPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enddocprinter(const char *desc, SPOOL_R_ENDDOCPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_startpageprinter(const char *desc, SPOOL_Q_STARTPAGEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_startpageprinter(const char *desc, SPOOL_R_STARTPAGEPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_endpageprinter(const char *desc, SPOOL_Q_ENDPAGEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_endpageprinter(const char *desc, SPOOL_R_ENDPAGEPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_writeprinter(const char *desc, SPOOL_Q_WRITEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_writeprinter(const char *desc, SPOOL_R_WRITEPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_rffpcnex(const char *desc, SPOOL_Q_RFFPCNEX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_rffpcnex(const char *desc, SPOOL_R_RFFPCNEX *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_rfnpcnex(const char *desc, SPOOL_Q_RFNPCNEX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_rfnpcnex(const char *desc, SPOOL_R_RFNPCNEX *r_u, prs_struct *ps, int depth);
-bool smb_io_printer_info_0(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_0 *info, int depth);
-bool smb_io_printer_info_1(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_1 *info, int depth);
-bool smb_io_printer_info_2(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_2 *info, int depth);
-bool smb_io_printer_info_3(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_3 *info, int depth);
-bool smb_io_printer_info_4(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_4 *info, int depth);
-bool smb_io_printer_info_5(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_5 *info, int depth);
-bool smb_io_printer_info_6(const char *desc, RPC_BUFFER *buffer,
-			   PRINTER_INFO_6 *info, int depth);
-bool smb_io_printer_info_7(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_7 *info, int depth);
-bool smb_io_port_info_1(const char *desc, RPC_BUFFER *buffer, PORT_INFO_1 *info, int depth);
-bool smb_io_port_info_2(const char *desc, RPC_BUFFER *buffer, PORT_INFO_2 *info, int depth);
-bool smb_io_printer_driver_info_1(const char *desc, RPC_BUFFER *buffer, DRIVER_INFO_1 *info, int depth) ;
-bool smb_io_printer_driver_info_2(const char *desc, RPC_BUFFER *buffer, DRIVER_INFO_2 *info, int depth) ;
-bool smb_io_printer_driver_info_3(const char *desc, RPC_BUFFER *buffer, DRIVER_INFO_3 *info, int depth);
-bool smb_io_printer_driver_info_6(const char *desc, RPC_BUFFER *buffer, DRIVER_INFO_6 *info, int depth);
-bool smb_io_job_info_1(const char *desc, RPC_BUFFER *buffer, JOB_INFO_1 *info, int depth);
-bool smb_io_job_info_2(const char *desc, RPC_BUFFER *buffer, JOB_INFO_2 *info, int depth);
-bool smb_io_form_1(const char *desc, RPC_BUFFER *buffer, FORM_1 *info, int depth);
-bool smb_io_driverdir_1(const char *desc, RPC_BUFFER *buffer, DRIVER_DIRECTORY_1 *info, int depth);
-bool smb_io_port_1(const char *desc, RPC_BUFFER *buffer, PORT_INFO_1 *info, int depth);
-bool smb_io_port_2(const char *desc, RPC_BUFFER *buffer, PORT_INFO_2 *info, int depth);
-bool smb_io_printprocessor_info_1(const char *desc, RPC_BUFFER *buffer, PRINTPROCESSOR_1 *info, int depth);
-bool smb_io_printprocdatatype_info_1(const char *desc, RPC_BUFFER *buffer, PRINTPROCDATATYPE_1 *info, int depth);
-bool smb_io_printmonitor_info_1(const char *desc, RPC_BUFFER *buffer, PRINTMONITOR_1 *info, int depth);
-bool smb_io_printmonitor_info_2(const char *desc, RPC_BUFFER *buffer, PRINTMONITOR_2 *info, int depth);
-uint32 spoolss_size_printer_info_0(PRINTER_INFO_0 *info);
-uint32 spoolss_size_printer_info_1(PRINTER_INFO_1 *info);
-uint32 spoolss_size_printer_info_2(PRINTER_INFO_2 *info);
-uint32 spoolss_size_printer_info_4(PRINTER_INFO_4 *info);
-uint32 spoolss_size_printer_info_5(PRINTER_INFO_5 *info);
-uint32 spoolss_size_printer_info_6(PRINTER_INFO_6 *info);
-uint32 spoolss_size_printer_info_3(PRINTER_INFO_3 *info);
-uint32 spoolss_size_printer_info_7(PRINTER_INFO_7 *info);
-uint32 spoolss_size_printer_driver_info_1(DRIVER_INFO_1 *info);
-uint32 spoolss_size_printer_driver_info_2(DRIVER_INFO_2 *info);
-uint32 spoolss_size_string_array(uint16 *string);
-uint32 spoolss_size_printer_driver_info_3(DRIVER_INFO_3 *info);
-uint32 spoolss_size_printer_driver_info_6(DRIVER_INFO_6 *info);
-uint32 spoolss_size_job_info_1(JOB_INFO_1 *info);
-uint32 spoolss_size_job_info_2(JOB_INFO_2 *info);
-uint32 spoolss_size_form_1(FORM_1 *info);
-uint32 spoolss_size_port_info_1(PORT_INFO_1 *info);
-uint32 spoolss_size_driverdir_info_1(DRIVER_DIRECTORY_1 *info);
-uint32 spoolss_size_printprocessordirectory_info_1(PRINTPROCESSOR_DIRECTORY_1 *info);
-uint32 spoolss_size_port_info_2(PORT_INFO_2 *info);
-uint32 spoolss_size_printprocessor_info_1(PRINTPROCESSOR_1 *info);
-uint32 spoolss_size_printprocdatatype_info_1(PRINTPROCDATATYPE_1 *info);
-uint32 spoolss_size_printer_enum_values(PRINTER_ENUM_VALUES *p);
-uint32 spoolss_size_printmonitor_info_1(PRINTMONITOR_1 *info);
-uint32 spoolss_size_printmonitor_info_2(PRINTMONITOR_2 *info);
-bool make_spoolss_q_getprinterdriver2(SPOOL_Q_GETPRINTERDRIVER2 *q_u, 
-			       const POLICY_HND *hnd,
-			       const fstring architecture,
-			       uint32 level, uint32 clientmajor, uint32 clientminor,
-			       RPC_BUFFER *buffer, uint32 offered);
-bool spoolss_io_q_getprinterdriver2(const char *desc, SPOOL_Q_GETPRINTERDRIVER2 *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprinterdriver2(const char *desc, SPOOL_R_GETPRINTERDRIVER2 *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_enumprinters(
-	SPOOL_Q_ENUMPRINTERS *q_u, 
-	uint32 flags, 
-	char *servername, 
-	uint32 level, 
-	RPC_BUFFER *buffer, 
-	uint32 offered
-);
-bool make_spoolss_q_enumports(SPOOL_Q_ENUMPORTS *q_u, 
-				fstring servername, uint32 level, 
-				RPC_BUFFER *buffer, uint32 offered);
-bool spoolss_io_q_enumprinters(const char *desc, SPOOL_Q_ENUMPRINTERS *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprinters(const char *desc, SPOOL_R_ENUMPRINTERS *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprinter(const char *desc, SPOOL_R_GETPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_getprinter(const char *desc, SPOOL_Q_GETPRINTER *q_u, prs_struct *ps, int depth);
-bool make_spoolss_q_getprinter(
-	TALLOC_CTX *mem_ctx,
-	SPOOL_Q_GETPRINTER *q_u, 
-	const POLICY_HND *hnd, 
-	uint32 level, 
-	RPC_BUFFER *buffer, 
-	uint32 offered
-);
-bool make_spoolss_q_setprinter(TALLOC_CTX *mem_ctx, SPOOL_Q_SETPRINTER *q_u, 
-				const POLICY_HND *hnd, uint32 level, PRINTER_INFO_CTR *info, 
-				uint32 command);
-bool spoolss_io_r_setprinter(const char *desc, SPOOL_R_SETPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_setprinter(const char *desc, SPOOL_Q_SETPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_fcpn(const char *desc, SPOOL_R_FCPN *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_fcpn(const char *desc, SPOOL_Q_FCPN *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_addjob(const char *desc, SPOOL_R_ADDJOB *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_addjob(const char *desc, SPOOL_Q_ADDJOB *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumjobs(const char *desc, SPOOL_R_ENUMJOBS *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_enumjobs(SPOOL_Q_ENUMJOBS *q_u, const POLICY_HND *hnd,
-				uint32 firstjob,
-				uint32 numofjobs,
-				uint32 level,
-				RPC_BUFFER *buffer,
-				uint32 offered);
-bool spoolss_io_q_enumjobs(const char *desc, SPOOL_Q_ENUMJOBS *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_schedulejob(const char *desc, SPOOL_R_SCHEDULEJOB *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_schedulejob(const char *desc, SPOOL_Q_SCHEDULEJOB *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_setjob(const char *desc, SPOOL_R_SETJOB *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_setjob(const char *desc, SPOOL_Q_SETJOB *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprinterdrivers(const char *desc, SPOOL_R_ENUMPRINTERDRIVERS *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_enumprinterdrivers(SPOOL_Q_ENUMPRINTERDRIVERS *q_u,
-                                const char *name,
-                                const char *environment,
-                                uint32 level,
-                                RPC_BUFFER *buffer, uint32 offered);
-bool spoolss_io_q_enumprinterdrivers(const char *desc, SPOOL_Q_ENUMPRINTERDRIVERS *q_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumforms(const char *desc, SPOOL_Q_ENUMFORMS *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumforms(const char *desc, SPOOL_R_ENUMFORMS *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_getform(const char *desc, SPOOL_Q_GETFORM *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getform(const char *desc, SPOOL_R_GETFORM *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumports(const char *desc, SPOOL_R_ENUMPORTS *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumports(const char *desc, SPOOL_Q_ENUMPORTS *q_u, prs_struct *ps, int depth);
-bool spool_io_printer_info_level_1(const char *desc, SPOOL_PRINTER_INFO_LEVEL_1 *il, prs_struct *ps, int depth);
-bool spool_io_printer_info_level_3(const char *desc, SPOOL_PRINTER_INFO_LEVEL_3 *il, prs_struct *ps, int depth);
-bool spool_io_printer_info_level_2(const char *desc, SPOOL_PRINTER_INFO_LEVEL_2 *il, prs_struct *ps, int depth);
-bool spool_io_printer_info_level_7(const char *desc, SPOOL_PRINTER_INFO_LEVEL_7 *il, prs_struct *ps, int depth);
-bool spool_io_printer_info_level(const char *desc, SPOOL_PRINTER_INFO_LEVEL *il, prs_struct *ps, int depth);
-bool spoolss_io_q_addprinterex(const char *desc, SPOOL_Q_ADDPRINTEREX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_addprinterex(const char *desc, SPOOL_R_ADDPRINTEREX *r_u, 
-			       prs_struct *ps, int depth);
-bool spool_io_printer_driver_info_level_3(const char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 **q_u, 
-                                          prs_struct *ps, int depth);
-bool spool_io_printer_driver_info_level_6(const char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 **q_u, 
-                                          prs_struct *ps, int depth);
-bool smb_io_unibuffer(const char *desc, UNISTR2 *buffer, prs_struct *ps, int depth);
-bool spool_io_printer_driver_info_level(const char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL *il, prs_struct *ps, int depth);
-bool make_spoolss_q_addprinterdriver(TALLOC_CTX *mem_ctx,
-				SPOOL_Q_ADDPRINTERDRIVER *q_u, const char* srv_name, 
-				uint32 level, PRINTER_DRIVER_CTR *info);
-bool make_spoolss_driver_info_3(TALLOC_CTX *mem_ctx,
-	SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 **spool_drv_info,
-				DRIVER_INFO_3 *info3);
-bool make_spoolss_buffer5(TALLOC_CTX *mem_ctx, BUFFER5 *buf5, uint32 len, uint16 *src);
-bool spoolss_io_q_addprinterdriver(const char *desc, SPOOL_Q_ADDPRINTERDRIVER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_addprinterdriver(const char *desc, SPOOL_R_ADDPRINTERDRIVER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_q_addprinterdriverex(const char *desc, SPOOL_Q_ADDPRINTERDRIVEREX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_addprinterdriverex(const char *desc, SPOOL_R_ADDPRINTERDRIVEREX *q_u, prs_struct *ps, int depth);
-bool uni_2_asc_printer_driver_3(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *uni,
-                                NT_PRINTER_DRIVER_INFO_LEVEL_3 **asc);
-bool uni_2_asc_printer_driver_6(SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *uni,
-                                NT_PRINTER_DRIVER_INFO_LEVEL_6 **asc);
-bool uni_2_asc_printer_info_2(const SPOOL_PRINTER_INFO_LEVEL_2 *uni,
-                              NT_PRINTER_INFO_LEVEL_2  *d);
-bool make_spoolss_q_getprinterdriverdir(SPOOL_Q_GETPRINTERDRIVERDIR *q_u,
-                                fstring servername, fstring env_name, uint32 level,
-                                RPC_BUFFER *buffer, uint32 offered);
-bool spoolss_io_q_getprinterdriverdir(const char *desc, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprinterdriverdir(const char *desc, SPOOL_R_GETPRINTERDRIVERDIR *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprintprocessors(const char *desc, SPOOL_R_ENUMPRINTPROCESSORS *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumprintprocessors(const char *desc, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, prs_struct *ps, int depth);
-bool spoolss_io_q_addprintprocessor(const char *desc, SPOOL_Q_ADDPRINTPROCESSOR *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_addprintprocessor(const char *desc, SPOOL_R_ADDPRINTPROCESSOR *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprintprocdatatypes(const char *desc, SPOOL_R_ENUMPRINTPROCDATATYPES *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumprintprocdatatypes(const char *desc, SPOOL_Q_ENUMPRINTPROCDATATYPES *q_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumprintmonitors(const char *desc, SPOOL_Q_ENUMPRINTMONITORS *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprintmonitors(const char *desc, SPOOL_R_ENUMPRINTMONITORS *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprinterdata(const char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumprinterdata(const char *desc, SPOOL_Q_ENUMPRINTERDATA *q_u, prs_struct *ps, int depth);
-bool make_spoolss_q_enumprinterdata(SPOOL_Q_ENUMPRINTERDATA *q_u,
-		const POLICY_HND *hnd,
-		uint32 idx, uint32 valuelen, uint32 datalen);
-bool make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u,
-				      const POLICY_HND *hnd, const char *key,
-				      uint32 size);
-bool make_spoolss_q_setprinterdata(SPOOL_Q_SETPRINTERDATA *q_u, const POLICY_HND *hnd,
-				   char* value, uint32 data_type, char* data, uint32 data_size);
-bool make_spoolss_q_setprinterdataex(SPOOL_Q_SETPRINTERDATAEX *q_u, const POLICY_HND *hnd,
-				     char *key, char* value, uint32 data_type, char* data, 
-				     uint32 data_size);
-bool spoolss_io_q_setprinterdata(const char *desc, SPOOL_Q_SETPRINTERDATA *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_setprinterdata(const char *desc, SPOOL_R_SETPRINTERDATA *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_resetprinter(const char *desc, SPOOL_Q_RESETPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_resetprinter(const char *desc, SPOOL_R_RESETPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteform(const char *desc, SPOOL_Q_DELETEFORM *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteform(const char *desc, SPOOL_R_DELETEFORM *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_addform(const char *desc, SPOOL_Q_ADDFORM *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_addform(const char *desc, SPOOL_R_ADDFORM *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_setform(const char *desc, SPOOL_Q_SETFORM *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_setform(const char *desc, SPOOL_R_SETFORM *r_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getjob(const char *desc, SPOOL_R_GETJOB *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_getjob(const char *desc, SPOOL_Q_GETJOB *q_u, prs_struct *ps, int depth);
-void free_devmode(DEVICEMODE *devmode);
-void free_printer_info_1(PRINTER_INFO_1 *printer);
-void free_printer_info_2(PRINTER_INFO_2 *printer);
-void free_printer_info_3(PRINTER_INFO_3 *printer);
-void free_printer_info_4(PRINTER_INFO_4 *printer);
-void free_printer_info_5(PRINTER_INFO_5 *printer);
-void free_printer_info_6(PRINTER_INFO_6 *printer);
-void free_printer_info_7(PRINTER_INFO_7 *printer);
-void free_job_info_2(JOB_INFO_2 *job);
-bool make_spoolss_q_replyopenprinter(SPOOL_Q_REPLYOPENPRINTER *q_u, 
-			       const fstring string, uint32 printer, uint32 type);
-bool spoolss_io_q_replyopenprinter(const char *desc, SPOOL_Q_REPLYOPENPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_replyopenprinter(const char *desc, SPOOL_R_REPLYOPENPRINTER *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_routerreplyprinter(SPOOL_Q_ROUTERREPLYPRINTER *q_u, POLICY_HND *hnd, 
-					uint32 condition, uint32 change_id);
-bool spoolss_io_q_routerreplyprinter (const char *desc, SPOOL_Q_ROUTERREPLYPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_routerreplyprinter (const char *desc, SPOOL_R_ROUTERREPLYPRINTER *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_reply_closeprinter(SPOOL_Q_REPLYCLOSEPRINTER *q_u, POLICY_HND *hnd);
-bool spoolss_io_q_replycloseprinter(const char *desc, SPOOL_Q_REPLYCLOSEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_replycloseprinter(const char *desc, SPOOL_R_REPLYCLOSEPRINTER *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_reply_rrpcn(SPOOL_Q_REPLY_RRPCN *q_u, POLICY_HND *hnd,
-			        uint32 change_low, uint32 change_high,
-				SPOOL_NOTIFY_INFO *info);
-bool spoolss_io_q_reply_rrpcn(const char *desc, SPOOL_Q_REPLY_RRPCN *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_reply_rrpcn(const char *desc, SPOOL_R_REPLY_RRPCN *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_getprinterdataex(const char *desc, SPOOL_Q_GETPRINTERDATAEX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprinterdataex(const char *desc, SPOOL_R_GETPRINTERDATAEX *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_setprinterdataex(const char *desc, SPOOL_Q_SETPRINTERDATAEX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_setprinterdataex(const char *desc, SPOOL_R_SETPRINTERDATAEX *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_enumprinterkey(SPOOL_Q_ENUMPRINTERKEY *q_u, 
-				   POLICY_HND *hnd, const char *key, 
-				   uint32 size);
-bool spoolss_io_q_enumprinterkey(const char *desc, SPOOL_Q_ENUMPRINTERKEY *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprinterkey(const char *desc, SPOOL_R_ENUMPRINTERKEY *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_deleteprinterkey(SPOOL_Q_DELETEPRINTERKEY *q_u, 
-				     POLICY_HND *hnd, char *keyname);
-bool spoolss_io_q_deleteprinterkey(const char *desc, SPOOL_Q_DELETEPRINTERKEY *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteprinterkey(const char *desc, SPOOL_R_DELETEPRINTERKEY *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumprinterdataex(const char *desc, SPOOL_Q_ENUMPRINTERDATAEX *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_enumprinterdataex(const char *desc, SPOOL_R_ENUMPRINTERDATAEX *r_u, prs_struct *ps, int depth);
-bool make_spoolss_q_getprintprocessordirectory(SPOOL_Q_GETPRINTPROCESSORDIRECTORY *q_u, const char *name, char *environment, int level, RPC_BUFFER *buffer, uint32 offered);
-bool spoolss_io_q_getprintprocessordirectory(const char *desc, SPOOL_Q_GETPRINTPROCESSORDIRECTORY *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprintprocessordirectory(const char *desc, SPOOL_R_GETPRINTPROCESSORDIRECTORY *r_u, prs_struct *ps, int depth);
-bool smb_io_printprocessordirectory_1(const char *desc, RPC_BUFFER *buffer, PRINTPROCESSOR_DIRECTORY_1 *info, int depth);
-bool make_spoolss_q_addform(SPOOL_Q_ADDFORM *q_u, POLICY_HND *handle, 
-			    int level, FORM *form);
-bool make_spoolss_q_setform(SPOOL_Q_SETFORM *q_u, POLICY_HND *handle, 
-			    int level, const char *form_name, FORM *form);
-bool make_spoolss_q_deleteform(SPOOL_Q_DELETEFORM *q_u, POLICY_HND *handle, 
-			       const char *form);
-bool make_spoolss_q_getform(SPOOL_Q_GETFORM *q_u, POLICY_HND *handle, 
-                            const char *formname, uint32 level, 
-			    RPC_BUFFER *buffer, uint32 offered);
-bool make_spoolss_q_enumforms(SPOOL_Q_ENUMFORMS *q_u, POLICY_HND *handle, 
-			      uint32 level, RPC_BUFFER *buffer,
-			      uint32 offered);
-bool make_spoolss_q_setjob(SPOOL_Q_SETJOB *q_u, POLICY_HND *handle, 
-			   uint32 jobid, uint32 level, uint32 command);
-bool make_spoolss_q_getjob(SPOOL_Q_GETJOB *q_u, POLICY_HND *handle, 
-			   uint32 jobid, uint32 level, RPC_BUFFER *buffer,
-			   uint32 offered);
-bool make_spoolss_q_startpageprinter(SPOOL_Q_STARTPAGEPRINTER *q_u, 
-				     POLICY_HND *handle);
-bool make_spoolss_q_endpageprinter(SPOOL_Q_ENDPAGEPRINTER *q_u, 
-				   POLICY_HND *handle);
-bool make_spoolss_q_startdocprinter(SPOOL_Q_STARTDOCPRINTER *q_u, 
-				    POLICY_HND *handle, uint32 level,
-				    char *docname, char *outputfile,
-				    char *datatype);
-bool make_spoolss_q_enddocprinter(SPOOL_Q_ENDDOCPRINTER *q_u, 
-				  POLICY_HND *handle);
-bool make_spoolss_q_writeprinter(SPOOL_Q_WRITEPRINTER *q_u, 
-				 POLICY_HND *handle, uint32 data_size,
-				 char *data);
-bool make_spoolss_q_deleteprinterdata(SPOOL_Q_DELETEPRINTERDATA *q_u, 
-				 POLICY_HND *handle, char *valuename);
-bool make_spoolss_q_deleteprinterdataex(SPOOL_Q_DELETEPRINTERDATAEX *q_u, 
-					POLICY_HND *handle, char *key,
-					char *value);
-bool make_spoolss_q_rffpcnex(SPOOL_Q_RFFPCNEX *q_u, POLICY_HND *handle,
-			     uint32 flags, uint32 options, const char *localmachine,
-			     uint32 printerlocal, SPOOL_NOTIFY_OPTION *option);
-bool spoolss_io_q_xcvdataport(const char *desc, SPOOL_Q_XCVDATAPORT *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_xcvdataport(const char *desc, SPOOL_R_XCVDATAPORT *r_u, prs_struct *ps, int depth);
-bool make_monitorui_buf( RPC_BUFFER *buf, const char *dllname );
-bool convert_port_data_1( NT_PORT_DATA_1 *port1, RPC_BUFFER *buf ) ;
-
-/* The following definitions come from rpc_parse/parse_svcctl.c  */
-
-bool svcctl_io_enum_services_status( const char *desc, ENUM_SERVICES_STATUS *enum_status, RPC_BUFFER *buffer, int depth );
-bool svcctl_io_service_status_process( const char *desc, SERVICE_STATUS_PROCESS *status, RPC_BUFFER *buffer, int depth );
-uint32 svcctl_sizeof_enum_services_status( ENUM_SERVICES_STATUS *status );
-uint32 svcctl_sizeof_service_config( SERVICE_CONFIG *config );
-bool svcctl_io_q_enum_services_status(const char *desc, SVCCTL_Q_ENUM_SERVICES_STATUS *q_u, prs_struct *ps, int depth);
-bool svcctl_io_r_enum_services_status(const char *desc, SVCCTL_R_ENUM_SERVICES_STATUS *r_u, prs_struct *ps, int depth);
-bool svcctl_io_q_query_service_config(const char *desc, SVCCTL_Q_QUERY_SERVICE_CONFIG *q_u, prs_struct *ps, int depth);
-bool svcctl_io_r_query_service_config(const char *desc, SVCCTL_R_QUERY_SERVICE_CONFIG *r_u, prs_struct *ps, int depth);
-bool svcctl_io_q_query_service_config2(const char *desc, SVCCTL_Q_QUERY_SERVICE_CONFIG2 *q_u, prs_struct *ps, int depth);
-void init_service_description_buffer(SERVICE_DESCRIPTION *desc, const char *service_desc );
-bool svcctl_io_service_description( const char *desc, SERVICE_DESCRIPTION *description, RPC_BUFFER *buffer, int depth );
-uint32 svcctl_sizeof_service_description( SERVICE_DESCRIPTION *desc );
-bool svcctl_io_service_fa( const char *desc, SERVICE_FAILURE_ACTIONS *fa, RPC_BUFFER *buffer, int depth );
-uint32 svcctl_sizeof_service_fa( SERVICE_FAILURE_ACTIONS *fa);
-bool svcctl_io_r_query_service_config2(const char *desc, SVCCTL_R_QUERY_SERVICE_CONFIG2 *r_u, prs_struct *ps, int depth);
-bool svcctl_io_q_query_service_status_ex(const char *desc, SVCCTL_Q_QUERY_SERVICE_STATUSEX *q_u, prs_struct *ps, int depth);
-bool svcctl_io_r_query_service_status_ex(const char *desc, SVCCTL_R_QUERY_SERVICE_STATUSEX *r_u, prs_struct *ps, int depth);
-
-/* The following definitions come from rpc_server/srv_dfs_nt.c  */
-
-void _dfs_GetManagerVersion(pipes_struct *p, struct dfs_GetManagerVersion *r);
-WERROR _dfs_Add(pipes_struct *p, struct dfs_Add *r);
-WERROR _dfs_Remove(pipes_struct *p, struct dfs_Remove *r);
-WERROR _dfs_Enum(pipes_struct *p, struct dfs_Enum *r);
-WERROR _dfs_GetInfo(pipes_struct *p, struct dfs_GetInfo *r);
-WERROR _dfs_SetInfo(pipes_struct *p, struct dfs_SetInfo *r);
-WERROR _dfs_Rename(pipes_struct *p, struct dfs_Rename *r);
-WERROR _dfs_Move(pipes_struct *p, struct dfs_Move *r);
-WERROR _dfs_ManagerGetConfigInfo(pipes_struct *p, struct dfs_ManagerGetConfigInfo *r);
-WERROR _dfs_ManagerSendSiteInfo(pipes_struct *p, struct dfs_ManagerSendSiteInfo *r);
-WERROR _dfs_AddFtRoot(pipes_struct *p, struct dfs_AddFtRoot *r);
-WERROR _dfs_RemoveFtRoot(pipes_struct *p, struct dfs_RemoveFtRoot *r);
-WERROR _dfs_AddStdRoot(pipes_struct *p, struct dfs_AddStdRoot *r);
-WERROR _dfs_RemoveStdRoot(pipes_struct *p, struct dfs_RemoveStdRoot *r);
-WERROR _dfs_ManagerInitialize(pipes_struct *p, struct dfs_ManagerInitialize *r);
-WERROR _dfs_AddStdRootForced(pipes_struct *p, struct dfs_AddStdRootForced *r);
-WERROR _dfs_GetDcAddress(pipes_struct *p, struct dfs_GetDcAddress *r);
-WERROR _dfs_SetDcAddress(pipes_struct *p, struct dfs_SetDcAddress *r);
-WERROR _dfs_FlushFtTable(pipes_struct *p, struct dfs_FlushFtTable *r);
-WERROR _dfs_Add2(pipes_struct *p, struct dfs_Add2 *r);
-WERROR _dfs_Remove2(pipes_struct *p, struct dfs_Remove2 *r);
-WERROR _dfs_EnumEx(pipes_struct *p, struct dfs_EnumEx *r);
-WERROR _dfs_SetInfo2(pipes_struct *p, struct dfs_SetInfo2 *r);
-
-/* The following definitions come from rpc_server/srv_dssetup_nt.c  */
-
-WERROR _dssetup_DsRoleGetPrimaryDomainInformation(pipes_struct *p,
-						  struct dssetup_DsRoleGetPrimaryDomainInformation *r);
-WERROR _dssetup_DsRoleDnsNameToFlatName(pipes_struct *p,
-					struct dssetup_DsRoleDnsNameToFlatName *r);
-WERROR _dssetup_DsRoleDcAsDc(pipes_struct *p,
-			     struct dssetup_DsRoleDcAsDc *r);
-WERROR _dssetup_DsRoleDcAsReplica(pipes_struct *p,
-				  struct dssetup_DsRoleDcAsReplica *r);
-WERROR _dssetup_DsRoleDemoteDc(pipes_struct *p,
-			       struct dssetup_DsRoleDemoteDc *r);
-WERROR _dssetup_DsRoleGetDcOperationProgress(pipes_struct *p,
-					     struct dssetup_DsRoleGetDcOperationProgress *r);
-WERROR _dssetup_DsRoleGetDcOperationResults(pipes_struct *p,
-					    struct dssetup_DsRoleGetDcOperationResults *r);
-WERROR _dssetup_DsRoleCancel(pipes_struct *p,
-			     struct dssetup_DsRoleCancel *r);
-WERROR _dssetup_DsRoleServerSaveStateForUpgrade(pipes_struct *p,
-						struct dssetup_DsRoleServerSaveStateForUpgrade *r);
-WERROR _dssetup_DsRoleUpgradeDownlevelServer(pipes_struct *p,
-					     struct dssetup_DsRoleUpgradeDownlevelServer *r);
-WERROR _dssetup_DsRoleAbortDownlevelServerUpgrade(pipes_struct *p,
-						  struct dssetup_DsRoleAbortDownlevelServerUpgrade *r);
-
-/* The following definitions come from rpc_server/srv_echo_nt.c  */
-
-void _echo_AddOne(pipes_struct *p, struct echo_AddOne *r );
-void _echo_EchoData(pipes_struct *p, struct echo_EchoData *r);
-void _echo_SinkData(pipes_struct *p, struct echo_SinkData *r);
-void _echo_SourceData(pipes_struct *p, struct echo_SourceData *r);
-void _echo_TestCall(pipes_struct *p, struct echo_TestCall *r);
-NTSTATUS _echo_TestCall2(pipes_struct *p, struct echo_TestCall2 *r);
-uint32 _echo_TestSleep(pipes_struct *p, struct echo_TestSleep *r);
-void _echo_TestEnum(pipes_struct *p, struct echo_TestEnum *r);
-void _echo_TestSurrounding(pipes_struct *p, struct echo_TestSurrounding *r);
-uint16 _echo_TestDoublePointer(pipes_struct *p, struct echo_TestDoublePointer *r);
-
-/* The following definitions come from rpc_server/srv_eventlog.c  */
-
-NTSTATUS rpc_eventlog2_init(void);
-void eventlog2_get_pipe_fns(struct api_struct **fns, int *n_fns);
-
-/* The following definitions come from rpc_server/srv_eventlog_lib.c  */
-
-TDB_CONTEXT *elog_init_tdb( char *tdbfilename );
-char *elog_tdbname(TALLOC_CTX *ctx, const char *name );
-int elog_tdb_size( TDB_CONTEXT * tdb, int *MaxSize, int *Retention );
-bool prune_eventlog( TDB_CONTEXT * tdb );
-bool can_write_to_eventlog( TDB_CONTEXT * tdb, int32 needed );
-ELOG_TDB *elog_open_tdb( char *logname, bool force_clear );
-int elog_close_tdb( ELOG_TDB *etdb, bool force_close );
-int write_eventlog_tdb( TDB_CONTEXT * the_tdb, Eventlog_entry * ee );
-void fixup_eventlog_entry( Eventlog_entry * ee );
-bool parse_logentry( char *line, Eventlog_entry * entry, bool * eor );
-
-/* The following definitions come from rpc_server/srv_eventlog_nt.c  */
-
-NTSTATUS _eventlog_OpenEventLogW(pipes_struct *p,
-				 struct eventlog_OpenEventLogW *r);
-NTSTATUS _eventlog_ClearEventLogW(pipes_struct *p,
-				  struct eventlog_ClearEventLogW *r);
-NTSTATUS _eventlog_CloseEventLog( pipes_struct * p, struct eventlog_CloseEventLog *r );
-NTSTATUS _eventlog_read_eventlog( pipes_struct * p,
-				EVENTLOG_Q_READ_EVENTLOG * q_u,
-				EVENTLOG_R_READ_EVENTLOG * r_u );
-NTSTATUS _eventlog_GetOldestRecord(pipes_struct *p,
-				   struct eventlog_GetOldestRecord *r);
-NTSTATUS _eventlog_GetNumRecords(pipes_struct *p,
-				 struct eventlog_GetNumRecords *r);
-NTSTATUS _eventlog_BackupEventLogW(pipes_struct *p, struct eventlog_BackupEventLogW *r);
-NTSTATUS _eventlog_DeregisterEventSource(pipes_struct *p, struct eventlog_DeregisterEventSource *r);
-NTSTATUS _eventlog_ChangeNotify(pipes_struct *p, struct eventlog_ChangeNotify *r);
-NTSTATUS _eventlog_RegisterEventSourceW(pipes_struct *p, struct eventlog_RegisterEventSourceW *r);
-NTSTATUS _eventlog_OpenBackupEventLogW(pipes_struct *p, struct eventlog_OpenBackupEventLogW *r);
-NTSTATUS _eventlog_ReadEventLogW(pipes_struct *p, struct eventlog_ReadEventLogW *r);
-NTSTATUS _eventlog_ReportEventW(pipes_struct *p, struct eventlog_ReportEventW *r);
-NTSTATUS _eventlog_ClearEventLogA(pipes_struct *p, struct eventlog_ClearEventLogA *r);
-NTSTATUS _eventlog_BackupEventLogA(pipes_struct *p, struct eventlog_BackupEventLogA *r);
-NTSTATUS _eventlog_OpenEventLogA(pipes_struct *p, struct eventlog_OpenEventLogA *r);
-NTSTATUS _eventlog_RegisterEventSourceA(pipes_struct *p, struct eventlog_RegisterEventSourceA *r);
-NTSTATUS _eventlog_OpenBackupEventLogA(pipes_struct *p, struct eventlog_OpenBackupEventLogA *r);
-NTSTATUS _eventlog_ReadEventLogA(pipes_struct *p, struct eventlog_ReadEventLogA *r);
-NTSTATUS _eventlog_ReportEventA(pipes_struct *p, struct eventlog_ReportEventA *r);
-NTSTATUS _eventlog_RegisterClusterSvc(pipes_struct *p, struct eventlog_RegisterClusterSvc *r);
-NTSTATUS _eventlog_DeregisterClusterSvc(pipes_struct *p, struct eventlog_DeregisterClusterSvc *r);
-NTSTATUS _eventlog_WriteClusterEvents(pipes_struct *p, struct eventlog_WriteClusterEvents *r);
-NTSTATUS _eventlog_GetLogIntormation(pipes_struct *p, struct eventlog_GetLogIntormation *r);
-NTSTATUS _eventlog_FlushEventLog(pipes_struct *p, struct eventlog_FlushEventLog *r);
-
-/* The following definitions come from rpc_server/srv_initshutdown_nt.c  */
-
-WERROR _initshutdown_Init(pipes_struct *p, struct initshutdown_Init *r);
-WERROR _initshutdown_InitEx(pipes_struct *p, struct initshutdown_InitEx *r);
-WERROR _initshutdown_Abort(pipes_struct *p, struct initshutdown_Abort *r);
-
-/* The following definitions come from rpc_server/srv_lsa_hnd.c  */
-
-bool init_pipe_handle_list(pipes_struct *p, const char *pipe_name);
-bool create_policy_hnd(pipes_struct *p, POLICY_HND *hnd, void (*free_fn)(void *), void *data_ptr);
-bool find_policy_by_hnd(pipes_struct *p, POLICY_HND *hnd, void **data_p);
-bool close_policy_hnd(pipes_struct *p, POLICY_HND *hnd);
-void close_policy_by_pipe(pipes_struct *p);
-bool pipe_access_check(pipes_struct *p);
-
-/* The following definitions come from rpc_server/srv_lsa_nt.c  */
-
-NTSTATUS _lsa_OpenPolicy2(pipes_struct *p,
-			  struct lsa_OpenPolicy2 *r);
-NTSTATUS _lsa_OpenPolicy(pipes_struct *p,
-			 struct lsa_OpenPolicy *r);
-NTSTATUS _lsa_EnumTrustDom(pipes_struct *p,
-			   struct lsa_EnumTrustDom *r);
-NTSTATUS _lsa_QueryInfoPolicy(pipes_struct *p,
-			      struct lsa_QueryInfoPolicy *r);
-NTSTATUS _lsa_LookupSids(pipes_struct *p,
-			 struct lsa_LookupSids *r);
-NTSTATUS _lsa_LookupSids2(pipes_struct *p,
-			  struct lsa_LookupSids2 *r);
-NTSTATUS _lsa_LookupSids3(pipes_struct *p,
-			  struct lsa_LookupSids3 *r);
-NTSTATUS _lsa_LookupNames(pipes_struct *p,
-			  struct lsa_LookupNames *r);
-NTSTATUS _lsa_LookupNames2(pipes_struct *p,
-			   struct lsa_LookupNames2 *r);
-NTSTATUS _lsa_LookupNames3(pipes_struct *p,
-			   struct lsa_LookupNames3 *r);
-NTSTATUS _lsa_LookupNames4(pipes_struct *p,
-			   struct lsa_LookupNames4 *r);
-NTSTATUS _lsa_Close(pipes_struct *p, struct lsa_Close *r);
-NTSTATUS _lsa_OpenSecret(pipes_struct *p, struct lsa_OpenSecret *r);
-NTSTATUS _lsa_OpenTrustedDomain(pipes_struct *p, struct lsa_OpenTrustedDomain *r);
-NTSTATUS _lsa_CreateTrustedDomain(pipes_struct *p, struct lsa_CreateTrustedDomain *r);
-NTSTATUS _lsa_CreateSecret(pipes_struct *p, struct lsa_CreateSecret *r);
-NTSTATUS _lsa_SetSecret(pipes_struct *p, struct lsa_SetSecret *r);
-NTSTATUS _lsa_DeleteObject(pipes_struct *p,
-			   struct lsa_DeleteObject *r);
-NTSTATUS _lsa_EnumPrivs(pipes_struct *p,
-			struct lsa_EnumPrivs *r);
-NTSTATUS _lsa_LookupPrivDisplayName(pipes_struct *p,
-				    struct lsa_LookupPrivDisplayName *r);
-NTSTATUS _lsa_EnumAccounts(pipes_struct *p,
-			   struct lsa_EnumAccounts *r);
-NTSTATUS _lsa_GetUserName(pipes_struct *p,
-			  struct lsa_GetUserName *r);
-NTSTATUS _lsa_CreateAccount(pipes_struct *p,
-			    struct lsa_CreateAccount *r);
-NTSTATUS _lsa_OpenAccount(pipes_struct *p,
-			  struct lsa_OpenAccount *r);
-NTSTATUS _lsa_EnumPrivsAccount(pipes_struct *p,
-			       struct lsa_EnumPrivsAccount *r);
-NTSTATUS _lsa_GetSystemAccessAccount(pipes_struct *p,
-				     struct lsa_GetSystemAccessAccount *r);
-NTSTATUS _lsa_SetSystemAccessAccount(pipes_struct *p,
-				     struct lsa_SetSystemAccessAccount *r);
-NTSTATUS _lsa_AddPrivilegesToAccount(pipes_struct *p,
-				     struct lsa_AddPrivilegesToAccount *r);
-NTSTATUS _lsa_RemovePrivilegesFromAccount(pipes_struct *p,
-					  struct lsa_RemovePrivilegesFromAccount *r);
-NTSTATUS _lsa_QuerySecurity(pipes_struct *p,
-			    struct lsa_QuerySecurity *r);
-NTSTATUS _lsa_AddAccountRights(pipes_struct *p,
-			       struct lsa_AddAccountRights *r);
-NTSTATUS _lsa_RemoveAccountRights(pipes_struct *p,
-				  struct lsa_RemoveAccountRights *r);
-NTSTATUS _lsa_EnumAccountRights(pipes_struct *p,
-				struct lsa_EnumAccountRights *r);
-NTSTATUS _lsa_LookupPrivValue(pipes_struct *p,
-			      struct lsa_LookupPrivValue *r);
-NTSTATUS _lsa_Delete(pipes_struct *p, struct lsa_Delete *r);
-NTSTATUS _lsa_SetSecObj(pipes_struct *p, struct lsa_SetSecObj *r);
-NTSTATUS _lsa_ChangePassword(pipes_struct *p, struct lsa_ChangePassword *r);
-NTSTATUS _lsa_SetInfoPolicy(pipes_struct *p, struct lsa_SetInfoPolicy *r);
-NTSTATUS _lsa_ClearAuditLog(pipes_struct *p, struct lsa_ClearAuditLog *r);
-NTSTATUS _lsa_GetQuotasForAccount(pipes_struct *p, struct lsa_GetQuotasForAccount *r);
-NTSTATUS _lsa_SetQuotasForAccount(pipes_struct *p, struct lsa_SetQuotasForAccount *r);
-NTSTATUS _lsa_QueryTrustedDomainInfo(pipes_struct *p, struct lsa_QueryTrustedDomainInfo *r);
-NTSTATUS _lsa_SetInformationTrustedDomain(pipes_struct *p, struct lsa_SetInformationTrustedDomain *r);
-NTSTATUS _lsa_QuerySecret(pipes_struct *p, struct lsa_QuerySecret *r);
-NTSTATUS _lsa_LookupPrivName(pipes_struct *p, struct lsa_LookupPrivName *r);
-NTSTATUS _lsa_EnumAccountsWithUserRight(pipes_struct *p, struct lsa_EnumAccountsWithUserRight *r);
-NTSTATUS _lsa_QueryTrustedDomainInfoBySid(pipes_struct *p, struct lsa_QueryTrustedDomainInfoBySid *r);
-NTSTATUS _lsa_SetTrustedDomainInfo(pipes_struct *p, struct lsa_SetTrustedDomainInfo *r);
-NTSTATUS _lsa_DeleteTrustedDomain(pipes_struct *p, struct lsa_DeleteTrustedDomain *r);
-NTSTATUS _lsa_StorePrivateData(pipes_struct *p, struct lsa_StorePrivateData *r);
-NTSTATUS _lsa_RetrievePrivateData(pipes_struct *p, struct lsa_RetrievePrivateData *r);
-NTSTATUS _lsa_QueryInfoPolicy2(pipes_struct *p, struct lsa_QueryInfoPolicy2 *r);
-NTSTATUS _lsa_SetInfoPolicy2(pipes_struct *p, struct lsa_SetInfoPolicy2 *r);
-NTSTATUS _lsa_QueryTrustedDomainInfoByName(pipes_struct *p, struct lsa_QueryTrustedDomainInfoByName *r);
-NTSTATUS _lsa_SetTrustedDomainInfoByName(pipes_struct *p, struct lsa_SetTrustedDomainInfoByName *r);
-NTSTATUS _lsa_EnumTrustedDomainsEx(pipes_struct *p, struct lsa_EnumTrustedDomainsEx *r);
-NTSTATUS _lsa_CreateTrustedDomainEx(pipes_struct *p, struct lsa_CreateTrustedDomainEx *r);
-NTSTATUS _lsa_CloseTrustedDomainEx(pipes_struct *p, struct lsa_CloseTrustedDomainEx *r);
-NTSTATUS _lsa_QueryDomainInformationPolicy(pipes_struct *p, struct lsa_QueryDomainInformationPolicy *r);
-NTSTATUS _lsa_SetDomainInformationPolicy(pipes_struct *p, struct lsa_SetDomainInformationPolicy *r);
-NTSTATUS _lsa_OpenTrustedDomainByName(pipes_struct *p, struct lsa_OpenTrustedDomainByName *r);
-NTSTATUS _lsa_TestCall(pipes_struct *p, struct lsa_TestCall *r);
-NTSTATUS _lsa_CreateTrustedDomainEx2(pipes_struct *p, struct lsa_CreateTrustedDomainEx2 *r);
-NTSTATUS _lsa_CREDRWRITE(pipes_struct *p, struct lsa_CREDRWRITE *r);
-NTSTATUS _lsa_CREDRREAD(pipes_struct *p, struct lsa_CREDRREAD *r);
-NTSTATUS _lsa_CREDRENUMERATE(pipes_struct *p, struct lsa_CREDRENUMERATE *r);
-NTSTATUS _lsa_CREDRWRITEDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRWRITEDOMAINCREDENTIALS *r);
-NTSTATUS _lsa_CREDRREADDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRREADDOMAINCREDENTIALS *r);
-NTSTATUS _lsa_CREDRDELETE(pipes_struct *p, struct lsa_CREDRDELETE *r);
-NTSTATUS _lsa_CREDRGETTARGETINFO(pipes_struct *p, struct lsa_CREDRGETTARGETINFO *r);
-NTSTATUS _lsa_CREDRPROFILELOADED(pipes_struct *p, struct lsa_CREDRPROFILELOADED *r);
-NTSTATUS _lsa_CREDRGETSESSIONTYPES(pipes_struct *p, struct lsa_CREDRGETSESSIONTYPES *r);
-NTSTATUS _lsa_LSARREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARREGISTERAUDITEVENT *r);
-NTSTATUS _lsa_LSARGENAUDITEVENT(pipes_struct *p, struct lsa_LSARGENAUDITEVENT *r);
-NTSTATUS _lsa_LSARUNREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARUNREGISTERAUDITEVENT *r);
-NTSTATUS _lsa_lsaRQueryForestTrustInformation(pipes_struct *p, struct lsa_lsaRQueryForestTrustInformation *r);
-NTSTATUS _lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p, struct lsa_LSARSETFORESTTRUSTINFORMATION *r);
-NTSTATUS _lsa_CREDRRENAME(pipes_struct *p, struct lsa_CREDRRENAME *r);
-NTSTATUS _lsa_LSAROPENPOLICYSCE(pipes_struct *p, struct lsa_LSAROPENPOLICYSCE *r);
-NTSTATUS _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r);
-NTSTATUS _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r);
-NTSTATUS _lsa_LSARADTREPORTSECURITYEVENT(pipes_struct *p, struct lsa_LSARADTREPORTSECURITYEVENT *r);
-
-/* The following definitions come from rpc_server/srv_netlog_nt.c  */
-
-WERROR _netr_LogonControl(pipes_struct *p,
-			  struct netr_LogonControl *r);
-WERROR _netr_LogonControl2(pipes_struct *p,
-			   struct netr_LogonControl2 *r);
-WERROR _netr_NetrEnumerateTrustedDomains(pipes_struct *p,
-					 struct netr_NetrEnumerateTrustedDomains *r);
-NTSTATUS _netr_ServerReqChallenge(pipes_struct *p,
-				  struct netr_ServerReqChallenge *r);
-NTSTATUS _netr_ServerAuthenticate(pipes_struct *p,
-				  struct netr_ServerAuthenticate *r);
-NTSTATUS _netr_ServerAuthenticate2(pipes_struct *p,
-				   struct netr_ServerAuthenticate2 *r);
-NTSTATUS _netr_ServerPasswordSet(pipes_struct *p,
-				 struct netr_ServerPasswordSet *r);
-NTSTATUS _netr_LogonSamLogoff(pipes_struct *p,
-			      struct netr_LogonSamLogoff *r);
-NTSTATUS _netr_LogonSamLogon(pipes_struct *p,
-			     struct netr_LogonSamLogon *r);
-NTSTATUS _netr_LogonSamLogonEx(pipes_struct *p,
-			       struct netr_LogonSamLogonEx *r);
-WERROR _netr_LogonUasLogon(pipes_struct *p,
-			   struct netr_LogonUasLogon *r);
-WERROR _netr_LogonUasLogoff(pipes_struct *p,
-			    struct netr_LogonUasLogoff *r);
-NTSTATUS _netr_DatabaseDeltas(pipes_struct *p,
-			      struct netr_DatabaseDeltas *r);
-NTSTATUS _netr_DatabaseSync(pipes_struct *p,
-			    struct netr_DatabaseSync *r);
-NTSTATUS _netr_AccountDeltas(pipes_struct *p,
-			     struct netr_AccountDeltas *r);
-NTSTATUS _netr_AccountSync(pipes_struct *p,
-			   struct netr_AccountSync *r);
-WERROR _netr_GetDcName(pipes_struct *p,
-		       struct netr_GetDcName *r);
-WERROR _netr_GetAnyDCName(pipes_struct *p,
-			  struct netr_GetAnyDCName *r);
-NTSTATUS _netr_DatabaseSync2(pipes_struct *p,
-			     struct netr_DatabaseSync2 *r);
-NTSTATUS _netr_DatabaseRedo(pipes_struct *p,
-			    struct netr_DatabaseRedo *r);
-WERROR _netr_LogonControl2Ex(pipes_struct *p,
-			     struct netr_LogonControl2Ex *r);
-WERROR _netr_DsRGetDCName(pipes_struct *p,
-			  struct netr_DsRGetDCName *r);
-WERROR _netr_NETRLOGONDUMMYROUTINE1(pipes_struct *p,
-				    struct netr_NETRLOGONDUMMYROUTINE1 *r);
-WERROR _netr_NETRLOGONSETSERVICEBITS(pipes_struct *p,
-				     struct netr_NETRLOGONSETSERVICEBITS *r);
-WERROR _netr_LogonGetTrustRid(pipes_struct *p,
-			      struct netr_LogonGetTrustRid *r);
-WERROR _netr_NETRLOGONCOMPUTESERVERDIGEST(pipes_struct *p,
-					  struct netr_NETRLOGONCOMPUTESERVERDIGEST *r);
-WERROR _netr_NETRLOGONCOMPUTECLIENTDIGEST(pipes_struct *p,
-					  struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r);
-NTSTATUS _netr_ServerAuthenticate3(pipes_struct *p,
-				   struct netr_ServerAuthenticate3 *r);
-WERROR _netr_DsRGetDCNameEx(pipes_struct *p,
-			    struct netr_DsRGetDCNameEx *r);
-WERROR _netr_DsRGetSiteName(pipes_struct *p,
-			    struct netr_DsRGetSiteName *r);
-NTSTATUS _netr_LogonGetDomainInfo(pipes_struct *p,
-				  struct netr_LogonGetDomainInfo *r);
-NTSTATUS _netr_ServerPasswordSet2(pipes_struct *p,
-				  struct netr_ServerPasswordSet2 *r);
-WERROR _netr_ServerPasswordGet(pipes_struct *p,
-			       struct netr_ServerPasswordGet *r);
-WERROR _netr_NETRLOGONSENDTOSAM(pipes_struct *p,
-				struct netr_NETRLOGONSENDTOSAM *r);
-WERROR _netr_DsRAddressToSitenamesW(pipes_struct *p,
-				    struct netr_DsRAddressToSitenamesW *r);
-WERROR _netr_DsRGetDCNameEx2(pipes_struct *p,
-			     struct netr_DsRGetDCNameEx2 *r);
-WERROR _netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(pipes_struct *p,
-						 struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r);
-WERROR _netr_NetrEnumerateTrustedDomainsEx(pipes_struct *p,
-					   struct netr_NetrEnumerateTrustedDomainsEx *r);
-WERROR _netr_DsRAddressToSitenamesExW(pipes_struct *p,
-				      struct netr_DsRAddressToSitenamesExW *r);
-WERROR _netr_DsrGetDcSiteCoverageW(pipes_struct *p,
-				   struct netr_DsrGetDcSiteCoverageW *r);
-WERROR _netr_DsrEnumerateDomainTrusts(pipes_struct *p,
-				      struct netr_DsrEnumerateDomainTrusts *r);
-WERROR _netr_DsrDeregisterDNSHostRecords(pipes_struct *p,
-					 struct netr_DsrDeregisterDNSHostRecords *r);
-NTSTATUS _netr_ServerTrustPasswordsGet(pipes_struct *p,
-				       struct netr_ServerTrustPasswordsGet *r);
-WERROR _netr_DsRGetForestTrustInformation(pipes_struct *p,
-					  struct netr_DsRGetForestTrustInformation *r);
-WERROR _netr_GetForestTrustInformation(pipes_struct *p,
-				       struct netr_GetForestTrustInformation *r);
-NTSTATUS _netr_LogonSamLogonWithFlags(pipes_struct *p,
-				      struct netr_LogonSamLogonWithFlags *r);
-WERROR _netr_NETRSERVERGETTRUSTINFO(pipes_struct *p,
-				    struct netr_NETRSERVERGETTRUSTINFO *r);
-
-/* The following definitions come from rpc_server/srv_ntsvcs.c  */
-
-void ntsvcs2_get_pipe_fns( struct api_struct **fns, int *n_fns );
-NTSTATUS rpc_ntsvcs2_init(void);
-
-/* The following definitions come from rpc_server/srv_ntsvcs_nt.c  */
-
-WERROR _PNP_GetVersion(pipes_struct *p,
-		       struct PNP_GetVersion *r);
-WERROR _PNP_GetDeviceListSize(pipes_struct *p,
-			      struct PNP_GetDeviceListSize *r);
-WERROR _ntsvcs_get_device_list( pipes_struct *p, NTSVCS_Q_GET_DEVICE_LIST *q_u, NTSVCS_R_GET_DEVICE_LIST *r_u );
-WERROR _ntsvcs_get_device_reg_property( pipes_struct *p, NTSVCS_Q_GET_DEVICE_REG_PROPERTY *q_u, NTSVCS_R_GET_DEVICE_REG_PROPERTY *r_u );
-WERROR _PNP_ValidateDeviceInstance(pipes_struct *p,
-				   struct PNP_ValidateDeviceInstance *r);
-WERROR _PNP_GetHwProfInfo(pipes_struct *p,
-			  struct PNP_GetHwProfInfo *r);
-WERROR _PNP_HwProfFlags(pipes_struct *p,
-			struct PNP_HwProfFlags *r);
-WERROR _PNP_Disconnect(pipes_struct *p,
-		       struct PNP_Disconnect *r);
-WERROR _PNP_Connect(pipes_struct *p,
-		    struct PNP_Connect *r);
-WERROR _PNP_GetGlobalState(pipes_struct *p,
-			   struct PNP_GetGlobalState *r);
-WERROR _PNP_InitDetection(pipes_struct *p,
-			  struct PNP_InitDetection *r);
-WERROR _PNP_ReportLogOn(pipes_struct *p,
-			struct PNP_ReportLogOn *r);
-WERROR _PNP_GetRootDeviceInstance(pipes_struct *p,
-				  struct PNP_GetRootDeviceInstance *r);
-WERROR _PNP_GetRelatedDeviceInstance(pipes_struct *p,
-				     struct PNP_GetRelatedDeviceInstance *r);
-WERROR _PNP_EnumerateSubKeys(pipes_struct *p,
-			     struct PNP_EnumerateSubKeys *r);
-WERROR _PNP_GetDeviceList(pipes_struct *p,
-			  struct PNP_GetDeviceList *r);
-WERROR _PNP_GetDepth(pipes_struct *p,
-		     struct PNP_GetDepth *r);
-WERROR _PNP_GetDeviceRegProp(pipes_struct *p,
-			     struct PNP_GetDeviceRegProp *r);
-WERROR _PNP_SetDeviceRegProp(pipes_struct *p,
-			     struct PNP_SetDeviceRegProp *r);
-WERROR _PNP_GetClassInstance(pipes_struct *p,
-			     struct PNP_GetClassInstance *r);
-WERROR _PNP_CreateKey(pipes_struct *p,
-		      struct PNP_CreateKey *r);
-WERROR _PNP_DeleteRegistryKey(pipes_struct *p,
-			      struct PNP_DeleteRegistryKey *r);
-WERROR _PNP_GetClassCount(pipes_struct *p,
-			  struct PNP_GetClassCount *r);
-WERROR _PNP_GetClassName(pipes_struct *p,
-			 struct PNP_GetClassName *r);
-WERROR _PNP_DeleteClassKey(pipes_struct *p,
-			   struct PNP_DeleteClassKey *r);
-WERROR _PNP_GetInterfaceDeviceAlias(pipes_struct *p,
-				    struct PNP_GetInterfaceDeviceAlias *r);
-WERROR _PNP_GetInterfaceDeviceList(pipes_struct *p,
-				   struct PNP_GetInterfaceDeviceList *r);
-WERROR _PNP_GetInterfaceDeviceListSize(pipes_struct *p,
-				       struct PNP_GetInterfaceDeviceListSize *r);
-WERROR _PNP_RegisterDeviceClassAssociation(pipes_struct *p,
-					   struct PNP_RegisterDeviceClassAssociation *r);
-WERROR _PNP_UnregisterDeviceClassAssociation(pipes_struct *p,
-					     struct PNP_UnregisterDeviceClassAssociation *r);
-WERROR _PNP_GetClassRegProp(pipes_struct *p,
-			    struct PNP_GetClassRegProp *r);
-WERROR _PNP_SetClassRegProp(pipes_struct *p,
-			    struct PNP_SetClassRegProp *r);
-WERROR _PNP_CreateDevInst(pipes_struct *p,
-			  struct PNP_CreateDevInst *r);
-WERROR _PNP_DeviceInstanceAction(pipes_struct *p,
-				 struct PNP_DeviceInstanceAction *r);
-WERROR _PNP_GetDeviceStatus(pipes_struct *p,
-			    struct PNP_GetDeviceStatus *r);
-WERROR _PNP_SetDeviceProblem(pipes_struct *p,
-			     struct PNP_SetDeviceProblem *r);
-WERROR _PNP_DisableDevInst(pipes_struct *p,
-			   struct PNP_DisableDevInst *r);
-WERROR _PNP_UninstallDevInst(pipes_struct *p,
-			     struct PNP_UninstallDevInst *r);
-WERROR _PNP_AddID(pipes_struct *p,
-		  struct PNP_AddID *r);
-WERROR _PNP_RegisterDriver(pipes_struct *p,
-			   struct PNP_RegisterDriver *r);
-WERROR _PNP_QueryRemove(pipes_struct *p,
-			struct PNP_QueryRemove *r);
-WERROR _PNP_RequestDeviceEject(pipes_struct *p,
-			       struct PNP_RequestDeviceEject *r);
-WERROR _PNP_IsDockStationPresent(pipes_struct *p,
-				 struct PNP_IsDockStationPresent *r);
-WERROR _PNP_RequestEjectPC(pipes_struct *p,
-			   struct PNP_RequestEjectPC *r);
-WERROR _PNP_AddEmptyLogConf(pipes_struct *p,
-			    struct PNP_AddEmptyLogConf *r);
-WERROR _PNP_FreeLogConf(pipes_struct *p,
-			struct PNP_FreeLogConf *r);
-WERROR _PNP_GetFirstLogConf(pipes_struct *p,
-			    struct PNP_GetFirstLogConf *r);
-WERROR _PNP_GetNextLogConf(pipes_struct *p,
-			   struct PNP_GetNextLogConf *r);
-WERROR _PNP_GetLogConfPriority(pipes_struct *p,
-			       struct PNP_GetLogConfPriority *r);
-WERROR _PNP_AddResDes(pipes_struct *p,
-		      struct PNP_AddResDes *r);
-WERROR _PNP_FreeResDes(pipes_struct *p,
-		       struct PNP_FreeResDes *r);
-WERROR _PNP_GetNextResDes(pipes_struct *p,
-			  struct PNP_GetNextResDes *r);
-WERROR _PNP_GetResDesData(pipes_struct *p,
-			  struct PNP_GetResDesData *r);
-WERROR _PNP_GetResDesDataSize(pipes_struct *p,
-			      struct PNP_GetResDesDataSize *r);
-WERROR _PNP_ModifyResDes(pipes_struct *p,
-			 struct PNP_ModifyResDes *r);
-WERROR _PNP_DetectResourceLimit(pipes_struct *p,
-				struct PNP_DetectResourceLimit *r);
-WERROR _PNP_QueryResConfList(pipes_struct *p,
-			     struct PNP_QueryResConfList *r);
-WERROR _PNP_SetHwProf(pipes_struct *p,
-		      struct PNP_SetHwProf *r);
-WERROR _PNP_QueryArbitratorFreeData(pipes_struct *p,
-				    struct PNP_QueryArbitratorFreeData *r);
-WERROR _PNP_QueryArbitratorFreeSize(pipes_struct *p,
-				    struct PNP_QueryArbitratorFreeSize *r);
-WERROR _PNP_RunDetection(pipes_struct *p,
-			 struct PNP_RunDetection *r);
-WERROR _PNP_RegisterNotification(pipes_struct *p,
-				 struct PNP_RegisterNotification *r);
-WERROR _PNP_UnregisterNotification(pipes_struct *p,
-				   struct PNP_UnregisterNotification *r);
-WERROR _PNP_GetCustomDevProp(pipes_struct *p,
-			     struct PNP_GetCustomDevProp *r);
-WERROR _PNP_GetVersionInternal(pipes_struct *p,
-			       struct PNP_GetVersionInternal *r);
-WERROR _PNP_GetBlockedDriverInfo(pipes_struct *p,
-				 struct PNP_GetBlockedDriverInfo *r);
-WERROR _PNP_GetServerSideDeviceInstallFlags(pipes_struct *p,
-					    struct PNP_GetServerSideDeviceInstallFlags *r);
-
-/* The following definitions come from rpc_server/srv_pipe.c  */
-
-bool create_next_pdu(pipes_struct *p);
-bool api_pipe_bind_auth3(pipes_struct *p, prs_struct *rpc_in_p);
-bool setup_fault_pdu(pipes_struct *p, NTSTATUS status);
-bool setup_cancel_ack_reply(pipes_struct *p, prs_struct *rpc_in_p);
-bool check_bind_req(struct pipes_struct *p, RPC_IFACE* abstract,
-                    RPC_IFACE* transfer, uint32 context_id);
-NTSTATUS rpc_pipe_register_commands(int version, const char *clnt,
-				    const char *srv,
-				    const struct ndr_syntax_id *interface,
-				    const struct api_struct *cmds, int size);
-bool is_known_pipename(const char *cli_filename);
-bool api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p);
-bool api_pipe_alter_context(pipes_struct *p, prs_struct *rpc_in_p);
-bool api_pipe_ntlmssp_auth_process(pipes_struct *p, prs_struct *rpc_in,
-					uint32 *p_ss_padding_len, NTSTATUS *pstatus);
-bool api_pipe_schannel_process(pipes_struct *p, prs_struct *rpc_in, uint32 *p_ss_padding_len);
-struct current_user *get_current_user(struct current_user *user, pipes_struct *p);
-void free_pipe_rpc_context( PIPE_RPC_FNS *list );
-bool api_pipe_request(pipes_struct *p);
-
-/* The following definitions come from rpc_server/srv_pipe_hnd.c  */
-
-pipes_struct *get_first_internal_pipe(void);
-pipes_struct *get_next_internal_pipe(pipes_struct *p);
-void set_pipe_handle_offset(int max_open_files);
-void reset_chain_p(void);
-void init_rpc_pipe_hnd(void);
-smb_np_struct *open_rpc_pipe_p(const char *pipe_name, 
-			      connection_struct *conn, uint16 vuid);
-ssize_t write_to_pipe(smb_np_struct *p, char *data, size_t n);
-ssize_t read_from_pipe(smb_np_struct *p, char *data, size_t n,
-		bool *is_data_outstanding);
-bool wait_rpc_pipe_hnd_state(smb_np_struct *p, uint16 priority);
-bool set_rpc_pipe_hnd_state(smb_np_struct *p, uint16 device_state);
-bool close_rpc_pipe_hnd(smb_np_struct *p);
-void pipe_close_conn(connection_struct *conn);
-smb_np_struct *get_rpc_pipe_p(uint16 pnum);
-smb_np_struct *get_rpc_pipe(int pnum);
-struct pipes_struct *make_internal_rpc_pipe_p(const char *pipe_name,
-					      const char *client_address,
-					      struct auth_serversupplied_info *server_info,
-					      uint16_t vuid);
-ssize_t read_from_internal_pipe(struct pipes_struct *p, char *data, size_t n,
-				bool *is_data_outstanding);
-ssize_t write_to_internal_pipe(struct pipes_struct *p, char *data, size_t n);
-
-/* The following definitions come from rpc_server/srv_samr_nt.c  */
-
-NTSTATUS _samr_Close(pipes_struct *p, struct samr_Close *r);
-NTSTATUS _samr_OpenDomain(pipes_struct *p,
-			  struct samr_OpenDomain *r);
-NTSTATUS _samr_GetUserPwInfo(pipes_struct *p,
-			     struct samr_GetUserPwInfo *r);
-NTSTATUS _samr_SetSecurity(pipes_struct *p,
-			   struct samr_SetSecurity *r);
-NTSTATUS _samr_QuerySecurity(pipes_struct *p,
-			     struct samr_QuerySecurity *r);
-NTSTATUS _samr_EnumDomainUsers(pipes_struct *p,
-			       struct samr_EnumDomainUsers *r);
-NTSTATUS _samr_EnumDomainGroups(pipes_struct *p,
-				struct samr_EnumDomainGroups *r);
-NTSTATUS _samr_EnumDomainAliases(pipes_struct *p,
-				 struct samr_EnumDomainAliases *r);
-NTSTATUS _samr_QueryDisplayInfo(pipes_struct *p,
-				struct samr_QueryDisplayInfo *r);
-NTSTATUS _samr_QueryDisplayInfo2(pipes_struct *p,
-				 struct samr_QueryDisplayInfo2 *r);
-NTSTATUS _samr_QueryDisplayInfo3(pipes_struct *p,
-				 struct samr_QueryDisplayInfo3 *r);
-NTSTATUS _samr_QueryAliasInfo(pipes_struct *p,
-			      struct samr_QueryAliasInfo *r);
-NTSTATUS _samr_LookupNames(pipes_struct *p,
-			   struct samr_LookupNames *r);
-NTSTATUS _samr_ChangePasswordUser2(pipes_struct *p,
-				   struct samr_ChangePasswordUser2 *r);
-NTSTATUS _samr_ChangePasswordUser3(pipes_struct *p,
-				   struct samr_ChangePasswordUser3 *r);
-NTSTATUS _samr_LookupRids(pipes_struct *p,
-			  struct samr_LookupRids *r);
-NTSTATUS _samr_OpenUser(pipes_struct *p,
-			struct samr_OpenUser *r);
-NTSTATUS _samr_QueryUserInfo(pipes_struct *p,
-			     struct samr_QueryUserInfo *r);
-NTSTATUS _samr_GetGroupsForUser(pipes_struct *p,
-				struct samr_GetGroupsForUser *r);
-NTSTATUS _samr_QueryDomainInfo(pipes_struct *p,
-			       struct samr_QueryDomainInfo *r);
-NTSTATUS _samr_CreateUser2(pipes_struct *p,
-			   struct samr_CreateUser2 *r);
-NTSTATUS _samr_Connect(pipes_struct *p,
-		       struct samr_Connect *r);
-NTSTATUS _samr_Connect2(pipes_struct *p,
-			struct samr_Connect2 *r);
-NTSTATUS _samr_Connect4(pipes_struct *p,
-			struct samr_Connect4 *r);
-NTSTATUS _samr_Connect5(pipes_struct *p,
-			struct samr_Connect5 *r);
-NTSTATUS _samr_LookupDomain(pipes_struct *p,
-			    struct samr_LookupDomain *r);
-NTSTATUS _samr_EnumDomains(pipes_struct *p,
-			   struct samr_EnumDomains *r);
-NTSTATUS _samr_OpenAlias(pipes_struct *p,
-			 struct samr_OpenAlias *r);
-NTSTATUS _samr_SetUserInfo(pipes_struct *p,
-			   struct samr_SetUserInfo *r);
-NTSTATUS _samr_SetUserInfo2(pipes_struct *p,
-			    struct samr_SetUserInfo2 *r);
-NTSTATUS _samr_GetAliasMembership(pipes_struct *p,
-				  struct samr_GetAliasMembership *r);
-NTSTATUS _samr_GetMembersInAlias(pipes_struct *p,
-				 struct samr_GetMembersInAlias *r);
-NTSTATUS _samr_QueryGroupMember(pipes_struct *p,
-				struct samr_QueryGroupMember *r);
-NTSTATUS _samr_AddAliasMember(pipes_struct *p,
-			      struct samr_AddAliasMember *r);
-NTSTATUS _samr_DeleteAliasMember(pipes_struct *p,
-				 struct samr_DeleteAliasMember *r);
-NTSTATUS _samr_AddGroupMember(pipes_struct *p,
-			      struct samr_AddGroupMember *r);
-NTSTATUS _samr_DeleteGroupMember(pipes_struct *p,
-				 struct samr_DeleteGroupMember *r);
-NTSTATUS _samr_DeleteUser(pipes_struct *p,
-			  struct samr_DeleteUser *r);
-NTSTATUS _samr_DeleteDomainGroup(pipes_struct *p,
-				 struct samr_DeleteDomainGroup *r);
-NTSTATUS _samr_DeleteDomAlias(pipes_struct *p,
-			      struct samr_DeleteDomAlias *r);
-NTSTATUS _samr_CreateDomainGroup(pipes_struct *p,
-				 struct samr_CreateDomainGroup *r);
-NTSTATUS _samr_CreateDomAlias(pipes_struct *p,
-			      struct samr_CreateDomAlias *r);
-NTSTATUS _samr_QueryGroupInfo(pipes_struct *p,
-			      struct samr_QueryGroupInfo *r);
-NTSTATUS _samr_SetGroupInfo(pipes_struct *p,
-			    struct samr_SetGroupInfo *r);
-NTSTATUS _samr_SetAliasInfo(pipes_struct *p,
-			    struct samr_SetAliasInfo *r);
-NTSTATUS _samr_GetDomPwInfo(pipes_struct *p,
-			    struct samr_GetDomPwInfo *r);
-NTSTATUS _samr_OpenGroup(pipes_struct *p,
-			 struct samr_OpenGroup *r);
-NTSTATUS _samr_RemoveMemberFromForeignDomain(pipes_struct *p,
-					     struct samr_RemoveMemberFromForeignDomain *r);
-NTSTATUS _samr_QueryDomainInfo2(pipes_struct *p,
-				struct samr_QueryDomainInfo2 *r);
-NTSTATUS _samr_SetDomainInfo(pipes_struct *p,
-			     struct samr_SetDomainInfo *r);
-NTSTATUS _samr_GetDisplayEnumerationIndex(pipes_struct *p,
-					  struct samr_GetDisplayEnumerationIndex *r);
-NTSTATUS _samr_GetDisplayEnumerationIndex2(pipes_struct *p,
-					   struct samr_GetDisplayEnumerationIndex2 *r);
-NTSTATUS _samr_Shutdown(pipes_struct *p,
-			struct samr_Shutdown *r);
-NTSTATUS _samr_CreateUser(pipes_struct *p,
-			  struct samr_CreateUser *r);
-NTSTATUS _samr_SetMemberAttributesOfGroup(pipes_struct *p,
-					  struct samr_SetMemberAttributesOfGroup *r);
-NTSTATUS _samr_ChangePasswordUser(pipes_struct *p,
-				  struct samr_ChangePasswordUser *r);
-NTSTATUS _samr_TestPrivateFunctionsDomain(pipes_struct *p,
-					  struct samr_TestPrivateFunctionsDomain *r);
-NTSTATUS _samr_TestPrivateFunctionsUser(pipes_struct *p,
-					struct samr_TestPrivateFunctionsUser *r);
-NTSTATUS _samr_QueryUserInfo2(pipes_struct *p,
-			      struct samr_QueryUserInfo2 *r);
-NTSTATUS _samr_AddMultipleMembersToAlias(pipes_struct *p,
-					 struct samr_AddMultipleMembersToAlias *r);
-NTSTATUS _samr_RemoveMultipleMembersFromAlias(pipes_struct *p,
-					      struct samr_RemoveMultipleMembersFromAlias *r);
-NTSTATUS _samr_OemChangePasswordUser2(pipes_struct *p,
-				      struct samr_OemChangePasswordUser2 *r);
-NTSTATUS _samr_SetBootKeyInformation(pipes_struct *p,
-				     struct samr_SetBootKeyInformation *r);
-NTSTATUS _samr_GetBootKeyInformation(pipes_struct *p,
-				     struct samr_GetBootKeyInformation *r);
-NTSTATUS _samr_Connect3(pipes_struct *p,
-			struct samr_Connect3 *r);
-NTSTATUS _samr_RidToSid(pipes_struct *p,
-			struct samr_RidToSid *r);
-NTSTATUS _samr_SetDsrmPassword(pipes_struct *p,
-			       struct samr_SetDsrmPassword *r);
-NTSTATUS _samr_ValidatePassword(pipes_struct *p,
-				struct samr_ValidatePassword *r);
-
-/* The following definitions come from rpc_server/srv_samr_util.c  */
-
-void copy_id20_to_sam_passwd(struct samu *to,
-			     struct samr_UserInfo20 *from);
-void copy_id21_to_sam_passwd(const char *log_prefix,
-			     struct samu *to,
-			     struct samr_UserInfo21 *from);
-void copy_id23_to_sam_passwd(struct samu *to,
-			     struct samr_UserInfo23 *from);
-void copy_id25_to_sam_passwd(struct samu *to,
-			     struct samr_UserInfo25 *from);
-
-/* The following definitions come from rpc_server/srv_spoolss.c  */
-
-void spoolss_get_pipe_fns( struct api_struct **fns, int *n_fns );
-NTSTATUS rpc_spoolss_init(void);
-
-/* The following definitions come from rpc_server/srv_spoolss_nt.c  */
-
-WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, const char *sharename );
-void do_drv_upgrade_printer(struct messaging_context *msg,
-			    void *private_data,
-			    uint32_t msg_type,
-			    struct server_id server_id,
-			    DATA_BLOB *data);
-void update_monitored_printq_cache( void );
-void reset_all_printerdata(struct messaging_context *msg,
-			   void *private_data,
-			   uint32_t msg_type,
-			   struct server_id server_id,
-			   DATA_BLOB *data);
-WERROR _spoolss_open_printer(pipes_struct *p, SPOOL_Q_OPEN_PRINTER *q_u, SPOOL_R_OPEN_PRINTER *r_u);
-WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u, SPOOL_R_OPEN_PRINTER_EX *r_u);
-bool convert_devicemode(const char *printername, const DEVICEMODE *devmode,
-				NT_DEVICEMODE **pp_nt_devmode);
-WERROR _spoolss_closeprinter(pipes_struct *p, SPOOL_Q_CLOSEPRINTER *q_u, SPOOL_R_CLOSEPRINTER *r_u);
-WERROR _spoolss_deleteprinter(pipes_struct *p, SPOOL_Q_DELETEPRINTER *q_u, SPOOL_R_DELETEPRINTER *r_u);
-WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER *q_u, SPOOL_R_DELETEPRINTERDRIVER *r_u);
-WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVEREX *q_u, SPOOL_R_DELETEPRINTERDRIVEREX *r_u);
-WERROR set_printer_dataex( NT_PRINTER_INFO_LEVEL *printer, const char *key, const char *value,
-                                  uint32 type, uint8 *data, int real_len  );
-WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPOOL_R_GETPRINTERDATA *r_u);
-WERROR _spoolss_rffpcnex(pipes_struct *p, SPOOL_Q_RFFPCNEX *q_u, SPOOL_R_RFFPCNEX *r_u);
-void spoolss_notify_server_name(int snum,
-				       SPOOL_NOTIFY_INFO_DATA *data,
-				       print_queue_struct *queue,
-				       NT_PRINTER_INFO_LEVEL *printer,
-				       TALLOC_CTX *mem_ctx);
-void spoolss_notify_printer_name(int snum,
-					SPOOL_NOTIFY_INFO_DATA *data,
-					print_queue_struct *queue,
-					NT_PRINTER_INFO_LEVEL *printer,
-					TALLOC_CTX *mem_ctx);
-void spoolss_notify_share_name(int snum,
-				      SPOOL_NOTIFY_INFO_DATA *data,
-				      print_queue_struct *queue,
-				      NT_PRINTER_INFO_LEVEL *printer,
-				      TALLOC_CTX *mem_ctx);
-void spoolss_notify_port_name(int snum,
-				     SPOOL_NOTIFY_INFO_DATA *data,
-				     print_queue_struct *queue,
-				     NT_PRINTER_INFO_LEVEL *printer,
-				     TALLOC_CTX *mem_ctx);
-void spoolss_notify_driver_name(int snum,
-				       SPOOL_NOTIFY_INFO_DATA *data,
-				       print_queue_struct *queue,
-				       NT_PRINTER_INFO_LEVEL *printer,
-				       TALLOC_CTX *mem_ctx);
-void spoolss_notify_comment(int snum,
-				   SPOOL_NOTIFY_INFO_DATA *data,
-				   print_queue_struct *queue,
-				   NT_PRINTER_INFO_LEVEL *printer,
-				   TALLOC_CTX *mem_ctx);
-void spoolss_notify_location(int snum,
-				    SPOOL_NOTIFY_INFO_DATA *data,
-				    print_queue_struct *queue,
-				    NT_PRINTER_INFO_LEVEL *printer,
-				    TALLOC_CTX *mem_ctx);
-void spoolss_notify_sepfile(int snum,
-				   SPOOL_NOTIFY_INFO_DATA *data,
-				   print_queue_struct *queue,
-				   NT_PRINTER_INFO_LEVEL *printer,
-				   TALLOC_CTX *mem_ctx);
-void spoolss_notify_print_processor(int snum,
-					   SPOOL_NOTIFY_INFO_DATA *data,
-					   print_queue_struct *queue,
-					   NT_PRINTER_INFO_LEVEL *printer,
-					   TALLOC_CTX *mem_ctx);
-void spoolss_notify_parameters(int snum,
-				      SPOOL_NOTIFY_INFO_DATA *data,
-				      print_queue_struct *queue,
-				      NT_PRINTER_INFO_LEVEL *printer,
-				      TALLOC_CTX *mem_ctx);
-void spoolss_notify_datatype(int snum,
-				    SPOOL_NOTIFY_INFO_DATA *data,
-				    print_queue_struct *queue,
-				    NT_PRINTER_INFO_LEVEL *printer,
-				    TALLOC_CTX *mem_ctx);
-void spoolss_notify_attributes(int snum,
-				      SPOOL_NOTIFY_INFO_DATA *data,
-				      print_queue_struct *queue,
-				      NT_PRINTER_INFO_LEVEL *printer,
-				      TALLOC_CTX *mem_ctx);
-void spoolss_notify_cjobs(int snum,
-				 SPOOL_NOTIFY_INFO_DATA *data,
-				 print_queue_struct *queue,
-				 NT_PRINTER_INFO_LEVEL *printer,
-				 TALLOC_CTX *mem_ctx);
-void construct_info_data(SPOOL_NOTIFY_INFO_DATA *info_data, uint16 type, uint16 field, int id);
-WERROR _spoolss_rfnpcnex( pipes_struct *p, SPOOL_Q_RFNPCNEX *q_u, SPOOL_R_RFNPCNEX *r_u);
-DEVICEMODE *construct_dev_mode(const char *servicename);
-WERROR _spoolss_enumprinters( pipes_struct *p, SPOOL_Q_ENUMPRINTERS *q_u, SPOOL_R_ENUMPRINTERS *r_u);
-WERROR _spoolss_getprinter(pipes_struct *p, SPOOL_Q_GETPRINTER *q_u, SPOOL_R_GETPRINTER *r_u);
-WERROR _spoolss_getprinterdriver2(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVER2 *q_u, SPOOL_R_GETPRINTERDRIVER2 *r_u);
-WERROR _spoolss_startpageprinter(pipes_struct *p, SPOOL_Q_STARTPAGEPRINTER *q_u, SPOOL_R_STARTPAGEPRINTER *r_u);
-WERROR _spoolss_endpageprinter(pipes_struct *p, SPOOL_Q_ENDPAGEPRINTER *q_u, SPOOL_R_ENDPAGEPRINTER *r_u);
-WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, SPOOL_R_STARTDOCPRINTER *r_u);
-WERROR _spoolss_enddocprinter(pipes_struct *p, SPOOL_Q_ENDDOCPRINTER *q_u, SPOOL_R_ENDDOCPRINTER *r_u);
-WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R_WRITEPRINTER *r_u);
-WERROR _spoolss_abortprinter(pipes_struct *p, SPOOL_Q_ABORTPRINTER *q_u, SPOOL_R_ABORTPRINTER *r_u);
-WERROR add_port_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, const char *portname, const char *uri );
-bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, NT_PRINTER_INFO_LEVEL *printer);
-WERROR _spoolss_setprinter(pipes_struct *p, SPOOL_Q_SETPRINTER *q_u, SPOOL_R_SETPRINTER *r_u);
-WERROR _spoolss_fcpn(pipes_struct *p, SPOOL_Q_FCPN *q_u, SPOOL_R_FCPN *r_u);
-WERROR _spoolss_addjob(pipes_struct *p, SPOOL_Q_ADDJOB *q_u, SPOOL_R_ADDJOB *r_u);
-WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJOBS *r_u);
-WERROR _spoolss_schedulejob( pipes_struct *p, SPOOL_Q_SCHEDULEJOB *q_u, SPOOL_R_SCHEDULEJOB *r_u);
-WERROR _spoolss_setjob(pipes_struct *p, SPOOL_Q_SETJOB *q_u, SPOOL_R_SETJOB *r_u);
-WERROR _spoolss_enumprinterdrivers( pipes_struct *p, SPOOL_Q_ENUMPRINTERDRIVERS *q_u, SPOOL_R_ENUMPRINTERDRIVERS *r_u);
-WERROR _spoolss_enumforms(pipes_struct *p, SPOOL_Q_ENUMFORMS *q_u, SPOOL_R_ENUMFORMS *r_u);
-WERROR _spoolss_getform(pipes_struct *p, SPOOL_Q_GETFORM *q_u, SPOOL_R_GETFORM *r_u);
-WERROR enumports_hook(TALLOC_CTX *ctx, int *count, char ***lines );
-WERROR _spoolss_enumports( pipes_struct *p, SPOOL_Q_ENUMPORTS *q_u, SPOOL_R_ENUMPORTS *r_u);
-WERROR _spoolss_addprinterex( pipes_struct *p, SPOOL_Q_ADDPRINTEREX *q_u, SPOOL_R_ADDPRINTEREX *r_u);
-WERROR _spoolss_addprinterdriver(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVER *q_u, SPOOL_R_ADDPRINTERDRIVER *r_u);
-WERROR _spoolss_addprinterdriverex(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVEREX *q_u, SPOOL_R_ADDPRINTERDRIVEREX *r_u);
-WERROR _spoolss_getprinterdriverdirectory(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, SPOOL_R_GETPRINTERDRIVERDIR *r_u);
-WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, SPOOL_R_ENUMPRINTERDATA *r_u);
-WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SPOOL_R_SETPRINTERDATA *r_u);
-WERROR _spoolss_resetprinter(pipes_struct *p, SPOOL_Q_RESETPRINTER *q_u, SPOOL_R_RESETPRINTER *r_u);
-WERROR _spoolss_deleteprinterdata(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATA *q_u, SPOOL_R_DELETEPRINTERDATA *r_u);
-WERROR _spoolss_addform( pipes_struct *p, SPOOL_Q_ADDFORM *q_u, SPOOL_R_ADDFORM *r_u);
-WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DELETEFORM *r_u);
-WERROR _spoolss_setform(pipes_struct *p, SPOOL_Q_SETFORM *q_u, SPOOL_R_SETFORM *r_u);
-WERROR _spoolss_enumprintprocessors(pipes_struct *p, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, SPOOL_R_ENUMPRINTPROCESSORS *r_u);
-WERROR _spoolss_enumprintprocdatatypes(pipes_struct *p, SPOOL_Q_ENUMPRINTPROCDATATYPES *q_u, SPOOL_R_ENUMPRINTPROCDATATYPES *r_u);
-WERROR _spoolss_enumprintmonitors(pipes_struct *p, SPOOL_Q_ENUMPRINTMONITORS *q_u, SPOOL_R_ENUMPRINTMONITORS *r_u);
-WERROR _spoolss_getjob( pipes_struct *p, SPOOL_Q_GETJOB *q_u, SPOOL_R_GETJOB *r_u);
-WERROR _spoolss_getprinterdataex(pipes_struct *p, SPOOL_Q_GETPRINTERDATAEX *q_u, SPOOL_R_GETPRINTERDATAEX *r_u);
-WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u, SPOOL_R_SETPRINTERDATAEX *r_u);
-WERROR _spoolss_deleteprinterdataex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATAEX *q_u, SPOOL_R_DELETEPRINTERDATAEX *r_u);
-WERROR _spoolss_enumprinterkey(pipes_struct *p, SPOOL_Q_ENUMPRINTERKEY *q_u, SPOOL_R_ENUMPRINTERKEY *r_u);
-WERROR _spoolss_deleteprinterkey(pipes_struct *p, SPOOL_Q_DELETEPRINTERKEY *q_u, SPOOL_R_DELETEPRINTERKEY *r_u);
-WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_u, SPOOL_R_ENUMPRINTERDATAEX *r_u);
-WERROR _spoolss_getprintprocessordirectory(pipes_struct *p, SPOOL_Q_GETPRINTPROCESSORDIRECTORY *q_u, SPOOL_R_GETPRINTPROCESSORDIRECTORY *r_u);
-WERROR _spoolss_xcvdataport(pipes_struct *p, SPOOL_Q_XCVDATAPORT *q_u, SPOOL_R_XCVDATAPORT *r_u);
-
-/* The following definitions come from rpc_server/srv_srvsvc_nt.c  */
-
-WERROR _srvsvc_NetFileEnum(pipes_struct *p,
-			   struct srvsvc_NetFileEnum *r);
-WERROR _srvsvc_NetSrvGetInfo(pipes_struct *p,
-			     struct srvsvc_NetSrvGetInfo *r);
-WERROR _srvsvc_NetSrvSetInfo(pipes_struct *p,
-			     struct srvsvc_NetSrvSetInfo *r);
-WERROR _srvsvc_NetConnEnum(pipes_struct *p,
-			   struct srvsvc_NetConnEnum *r);
-WERROR _srvsvc_NetSessEnum(pipes_struct *p,
-			   struct srvsvc_NetSessEnum *r);
-WERROR _srvsvc_NetSessDel(pipes_struct *p,
-			  struct srvsvc_NetSessDel *r);
-WERROR _srvsvc_NetShareEnumAll(pipes_struct *p,
-			       struct srvsvc_NetShareEnumAll *r);
-WERROR _srvsvc_NetShareEnum(pipes_struct *p,
-			    struct srvsvc_NetShareEnum *r);
-WERROR _srvsvc_NetShareGetInfo(pipes_struct *p,
-			       struct srvsvc_NetShareGetInfo *r);
-char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname);
-WERROR _srvsvc_NetShareSetInfo(pipes_struct *p,
-			       struct srvsvc_NetShareSetInfo *r);
-WERROR _srvsvc_NetShareAdd(pipes_struct *p,
-			   struct srvsvc_NetShareAdd *r);
-WERROR _srvsvc_NetShareDel(pipes_struct *p,
-			   struct srvsvc_NetShareDel *r);
-WERROR _srvsvc_NetShareDelSticky(pipes_struct *p,
-				 struct srvsvc_NetShareDelSticky *r);
-WERROR _srvsvc_NetRemoteTOD(pipes_struct *p,
-			    struct srvsvc_NetRemoteTOD *r);
-WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p,
-				  struct srvsvc_NetGetFileSecurity *r);
-WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p,
-				  struct srvsvc_NetSetFileSecurity *r);
-WERROR _srvsvc_NetDiskEnum(pipes_struct *p,
-			   struct srvsvc_NetDiskEnum *r);
-WERROR _srvsvc_NetNameValidate(pipes_struct *p,
-			       struct srvsvc_NetNameValidate *r);
-WERROR _srvsvc_NetFileClose(pipes_struct *p, struct srvsvc_NetFileClose *r);
-WERROR _srvsvc_NetCharDevEnum(pipes_struct *p, struct srvsvc_NetCharDevEnum *r);
-WERROR _srvsvc_NetCharDevGetInfo(pipes_struct *p, struct srvsvc_NetCharDevGetInfo *r);
-WERROR _srvsvc_NetCharDevControl(pipes_struct *p, struct srvsvc_NetCharDevControl *r);
-WERROR _srvsvc_NetCharDevQEnum(pipes_struct *p, struct srvsvc_NetCharDevQEnum *r);
-WERROR _srvsvc_NetCharDevQGetInfo(pipes_struct *p, struct srvsvc_NetCharDevQGetInfo *r);
-WERROR _srvsvc_NetCharDevQSetInfo(pipes_struct *p, struct srvsvc_NetCharDevQSetInfo *r);
-WERROR _srvsvc_NetCharDevQPurge(pipes_struct *p, struct srvsvc_NetCharDevQPurge *r);
-WERROR _srvsvc_NetCharDevQPurgeSelf(pipes_struct *p, struct srvsvc_NetCharDevQPurgeSelf *r);
-WERROR _srvsvc_NetFileGetInfo(pipes_struct *p, struct srvsvc_NetFileGetInfo *r);
-WERROR _srvsvc_NetShareCheck(pipes_struct *p, struct srvsvc_NetShareCheck *r);
-WERROR _srvsvc_NetServerStatisticsGet(pipes_struct *p, struct srvsvc_NetServerStatisticsGet *r);
-WERROR _srvsvc_NetTransportAdd(pipes_struct *p, struct srvsvc_NetTransportAdd *r);
-WERROR _srvsvc_NetTransportEnum(pipes_struct *p, struct srvsvc_NetTransportEnum *r);
-WERROR _srvsvc_NetTransportDel(pipes_struct *p, struct srvsvc_NetTransportDel *r);
-WERROR _srvsvc_NetSetServiceBits(pipes_struct *p, struct srvsvc_NetSetServiceBits *r);
-WERROR _srvsvc_NetPathType(pipes_struct *p, struct srvsvc_NetPathType *r);
-WERROR _srvsvc_NetPathCanonicalize(pipes_struct *p, struct srvsvc_NetPathCanonicalize *r);
-WERROR _srvsvc_NetPathCompare(pipes_struct *p, struct srvsvc_NetPathCompare *r);
-WERROR _srvsvc_NETRPRNAMECANONICALIZE(pipes_struct *p, struct srvsvc_NETRPRNAMECANONICALIZE *r);
-WERROR _srvsvc_NetPRNameCompare(pipes_struct *p, struct srvsvc_NetPRNameCompare *r);
-WERROR _srvsvc_NetShareDelStart(pipes_struct *p, struct srvsvc_NetShareDelStart *r);
-WERROR _srvsvc_NetShareDelCommit(pipes_struct *p, struct srvsvc_NetShareDelCommit *r);
-WERROR _srvsvc_NetServerTransportAddEx(pipes_struct *p, struct srvsvc_NetServerTransportAddEx *r);
-WERROR _srvsvc_NetServerSetServiceBitsEx(pipes_struct *p, struct srvsvc_NetServerSetServiceBitsEx *r);
-WERROR _srvsvc_NETRDFSGETVERSION(pipes_struct *p, struct srvsvc_NETRDFSGETVERSION *r);
-WERROR _srvsvc_NETRDFSCREATELOCALPARTITION(pipes_struct *p, struct srvsvc_NETRDFSCREATELOCALPARTITION *r);
-WERROR _srvsvc_NETRDFSDELETELOCALPARTITION(pipes_struct *p, struct srvsvc_NETRDFSDELETELOCALPARTITION *r);
-WERROR _srvsvc_NETRDFSSETLOCALVOLUMESTATE(pipes_struct *p, struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r);
-WERROR _srvsvc_NETRDFSSETSERVERINFO(pipes_struct *p, struct srvsvc_NETRDFSSETSERVERINFO *r);
-WERROR _srvsvc_NETRDFSCREATEEXITPOINT(pipes_struct *p, struct srvsvc_NETRDFSCREATEEXITPOINT *r);
-WERROR _srvsvc_NETRDFSDELETEEXITPOINT(pipes_struct *p, struct srvsvc_NETRDFSDELETEEXITPOINT *r);
-WERROR _srvsvc_NETRDFSMODIFYPREFIX(pipes_struct *p, struct srvsvc_NETRDFSMODIFYPREFIX *r);
-WERROR _srvsvc_NETRDFSFIXLOCALVOLUME(pipes_struct *p, struct srvsvc_NETRDFSFIXLOCALVOLUME *r);
-WERROR _srvsvc_NETRDFSMANAGERREPORTSITEINFO(pipes_struct *p, struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r);
-WERROR _srvsvc_NETRSERVERTRANSPORTDELEX(pipes_struct *p, struct srvsvc_NETRSERVERTRANSPORTDELEX *r);
-
-/* The following definitions come from rpc_server/srv_svcctl.c  */
-
-void svcctl2_get_pipe_fns( struct api_struct **fns, int *n_fns );
-NTSTATUS rpc_svcctl2_init(void);
-
-/* The following definitions come from rpc_server/srv_svcctl_nt.c  */
-
-bool init_service_op_table( void );
-WERROR _svcctl_OpenSCManagerW(pipes_struct *p,
-			      struct svcctl_OpenSCManagerW *r);
-WERROR _svcctl_OpenServiceW(pipes_struct *p,
-			    struct svcctl_OpenServiceW *r);
-WERROR _svcctl_CloseServiceHandle(pipes_struct *p, struct svcctl_CloseServiceHandle *r);
-WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p,
-				      struct svcctl_GetServiceDisplayNameW *r);
-WERROR _svcctl_QueryServiceStatus(pipes_struct *p,
-				  struct svcctl_QueryServiceStatus *r);
-WERROR _svcctl_enum_services_status(pipes_struct *p, SVCCTL_Q_ENUM_SERVICES_STATUS *q_u, SVCCTL_R_ENUM_SERVICES_STATUS *r_u);
-WERROR _svcctl_StartServiceW(pipes_struct *p,
-			     struct svcctl_StartServiceW *r);
-WERROR _svcctl_ControlService(pipes_struct *p,
-			      struct svcctl_ControlService *r);
-WERROR _svcctl_EnumDependentServicesW(pipes_struct *p,
-				      struct svcctl_EnumDependentServicesW *r);
-WERROR _svcctl_query_service_status_ex( pipes_struct *p, SVCCTL_Q_QUERY_SERVICE_STATUSEX *q_u, SVCCTL_R_QUERY_SERVICE_STATUSEX *r_u );
-WERROR _svcctl_query_service_config( pipes_struct *p, SVCCTL_Q_QUERY_SERVICE_CONFIG *q_u, SVCCTL_R_QUERY_SERVICE_CONFIG *r_u );
-WERROR _svcctl_query_service_config2( pipes_struct *p, SVCCTL_Q_QUERY_SERVICE_CONFIG2 *q_u, SVCCTL_R_QUERY_SERVICE_CONFIG2 *r_u );
-WERROR _svcctl_LockServiceDatabase(pipes_struct *p,
-				   struct svcctl_LockServiceDatabase *r);
-WERROR _svcctl_UnlockServiceDatabase(pipes_struct *p,
-				     struct svcctl_UnlockServiceDatabase *r);
-WERROR _svcctl_QueryServiceObjectSecurity(pipes_struct *p,
-					  struct svcctl_QueryServiceObjectSecurity *r);
-WERROR _svcctl_SetServiceObjectSecurity(pipes_struct *p,
-					struct svcctl_SetServiceObjectSecurity *r);
-WERROR _svcctl_DeleteService(pipes_struct *p, struct svcctl_DeleteService *r);
-WERROR _svcctl_SetServiceStatus(pipes_struct *p, struct svcctl_SetServiceStatus *r);
-WERROR _svcctl_NotifyBootConfigStatus(pipes_struct *p, struct svcctl_NotifyBootConfigStatus *r);
-WERROR _svcctl_SCSetServiceBitsW(pipes_struct *p, struct svcctl_SCSetServiceBitsW *r);
-WERROR _svcctl_ChangeServiceConfigW(pipes_struct *p, struct svcctl_ChangeServiceConfigW *r);
-WERROR _svcctl_CreateServiceW(pipes_struct *p, struct svcctl_CreateServiceW *r);
-WERROR _svcctl_EnumServicesStatusW(pipes_struct *p, struct svcctl_EnumServicesStatusW *r);
-WERROR _svcctl_QueryServiceConfigW(pipes_struct *p, struct svcctl_QueryServiceConfigW *r);
-WERROR _svcctl_QueryServiceLockStatusW(pipes_struct *p, struct svcctl_QueryServiceLockStatusW *r);
-WERROR _svcctl_GetServiceKeyNameW(pipes_struct *p, struct svcctl_GetServiceKeyNameW *r);
-WERROR _svcctl_SCSetServiceBitsA(pipes_struct *p, struct svcctl_SCSetServiceBitsA *r);
-WERROR _svcctl_ChangeServiceConfigA(pipes_struct *p, struct svcctl_ChangeServiceConfigA *r);
-WERROR _svcctl_CreateServiceA(pipes_struct *p, struct svcctl_CreateServiceA *r);
-WERROR _svcctl_EnumDependentServicesA(pipes_struct *p, struct svcctl_EnumDependentServicesA *r);
-WERROR _svcctl_EnumServicesStatusA(pipes_struct *p, struct svcctl_EnumServicesStatusA *r);
-WERROR _svcctl_OpenSCManagerA(pipes_struct *p, struct svcctl_OpenSCManagerA *r);
-WERROR _svcctl_OpenServiceA(pipes_struct *p, struct svcctl_OpenServiceA *r);
-WERROR _svcctl_QueryServiceConfigA(pipes_struct *p, struct svcctl_QueryServiceConfigA *r);
-WERROR _svcctl_QueryServiceLockStatusA(pipes_struct *p, struct svcctl_QueryServiceLockStatusA *r);
-WERROR _svcctl_StartServiceA(pipes_struct *p, struct svcctl_StartServiceA *r);
-WERROR _svcctl_GetServiceDisplayNameA(pipes_struct *p, struct svcctl_GetServiceDisplayNameA *r);
-WERROR _svcctl_GetServiceKeyNameA(pipes_struct *p, struct svcctl_GetServiceKeyNameA *r);
-WERROR _svcctl_GetCurrentGroupeStateW(pipes_struct *p, struct svcctl_GetCurrentGroupeStateW *r);
-WERROR _svcctl_EnumServiceGroupW(pipes_struct *p, struct svcctl_EnumServiceGroupW *r);
-WERROR _svcctl_ChangeServiceConfig2A(pipes_struct *p, struct svcctl_ChangeServiceConfig2A *r);
-WERROR _svcctl_ChangeServiceConfig2W(pipes_struct *p, struct svcctl_ChangeServiceConfig2W *r);
-WERROR _svcctl_QueryServiceConfig2A(pipes_struct *p, struct svcctl_QueryServiceConfig2A *r);
-WERROR _svcctl_QueryServiceConfig2W(pipes_struct *p, struct svcctl_QueryServiceConfig2W *r);
-WERROR _svcctl_QueryServiceStatusEx(pipes_struct *p, struct svcctl_QueryServiceStatusEx *r);
-WERROR _EnumServicesStatusExA(pipes_struct *p, struct EnumServicesStatusExA *r);
-WERROR _EnumServicesStatusExW(pipes_struct *p, struct EnumServicesStatusExW *r);
-WERROR _svcctl_SCSendTSMessage(pipes_struct *p, struct svcctl_SCSendTSMessage *r);
-
-/* The following definitions come from rpc_server/srv_winreg_nt.c  */
-
-WERROR _winreg_CloseKey(pipes_struct *p, struct winreg_CloseKey *r);
-WERROR _winreg_OpenHKLM(pipes_struct *p, struct winreg_OpenHKLM *r);
-WERROR _winreg_OpenHKPD(pipes_struct *p, struct winreg_OpenHKPD *r);
-WERROR _winreg_OpenHKPT(pipes_struct *p, struct winreg_OpenHKPT *r);
-WERROR _winreg_OpenHKCR(pipes_struct *p, struct winreg_OpenHKCR *r);
-WERROR _winreg_OpenHKU(pipes_struct *p, struct winreg_OpenHKU *r);
-WERROR _winreg_OpenHKCU(pipes_struct *p, struct winreg_OpenHKCU *r);
-WERROR _winreg_OpenHKCC(pipes_struct *p, struct winreg_OpenHKCC *r);
-WERROR _winreg_OpenHKDD(pipes_struct *p, struct winreg_OpenHKDD *r);
-WERROR _winreg_OpenHKPN(pipes_struct *p, struct winreg_OpenHKPN *r);
-WERROR _winreg_OpenKey(pipes_struct *p, struct winreg_OpenKey *r);
-WERROR _winreg_QueryValue(pipes_struct *p, struct winreg_QueryValue *r);
-WERROR _winreg_QueryInfoKey(pipes_struct *p, struct winreg_QueryInfoKey *r);
-WERROR _winreg_GetVersion(pipes_struct *p, struct winreg_GetVersion *r);
-WERROR _winreg_EnumKey(pipes_struct *p, struct winreg_EnumKey *r);
-WERROR _winreg_EnumValue(pipes_struct *p, struct winreg_EnumValue *r);
-WERROR _winreg_InitiateSystemShutdown(pipes_struct *p, struct winreg_InitiateSystemShutdown *r);
-WERROR _winreg_InitiateSystemShutdownEx(pipes_struct *p, struct winreg_InitiateSystemShutdownEx *r);
-WERROR _winreg_AbortSystemShutdown(pipes_struct *p, struct winreg_AbortSystemShutdown *r);
-WERROR _winreg_RestoreKey(pipes_struct *p, struct winreg_RestoreKey *r);
-WERROR _winreg_SaveKey(pipes_struct *p, struct winreg_SaveKey *r);
-WERROR _winreg_SaveKeyEx(pipes_struct *p, struct winreg_SaveKeyEx *r);
-WERROR _winreg_CreateKey( pipes_struct *p, struct winreg_CreateKey *r);
-WERROR _winreg_SetValue(pipes_struct *p, struct winreg_SetValue *r);
-WERROR _winreg_DeleteKey(pipes_struct *p, struct winreg_DeleteKey *r);
-WERROR _winreg_DeleteValue(pipes_struct *p, struct winreg_DeleteValue *r);
-WERROR _winreg_GetKeySecurity(pipes_struct *p, struct winreg_GetKeySecurity *r);
-WERROR _winreg_SetKeySecurity(pipes_struct *p, struct winreg_SetKeySecurity *r);
-WERROR _winreg_FlushKey(pipes_struct *p, struct winreg_FlushKey *r);
-WERROR _winreg_UnLoadKey(pipes_struct *p, struct winreg_UnLoadKey *r);
-WERROR _winreg_ReplaceKey(pipes_struct *p, struct winreg_ReplaceKey *r);
-WERROR _winreg_LoadKey(pipes_struct *p, struct winreg_LoadKey *r);
-WERROR _winreg_NotifyChangeKeyValue(pipes_struct *p, struct winreg_NotifyChangeKeyValue *r);
-WERROR _winreg_QueryMultipleValues(pipes_struct *p, struct winreg_QueryMultipleValues *r);
-WERROR _winreg_QueryMultipleValues2(pipes_struct *p, struct winreg_QueryMultipleValues2 *r);
-
-/* The following definitions come from rpc_server/srv_wkssvc_nt.c  */
-
-WERROR _wkssvc_NetWkstaGetInfo(pipes_struct *p, struct wkssvc_NetWkstaGetInfo *r);
-WERROR _wkssvc_NetWkstaSetInfo(pipes_struct *p, struct wkssvc_NetWkstaSetInfo *r);
-WERROR _wkssvc_NetWkstaEnumUsers(pipes_struct *p, struct wkssvc_NetWkstaEnumUsers *r);
-WERROR _wkssvc_NetrWkstaUserGetInfo(pipes_struct *p, struct wkssvc_NetrWkstaUserGetInfo *r);
-WERROR _wkssvc_NetrWkstaUserSetInfo(pipes_struct *p, struct wkssvc_NetrWkstaUserSetInfo *r);
-WERROR _wkssvc_NetWkstaTransportEnum(pipes_struct *p, struct wkssvc_NetWkstaTransportEnum *r);
-WERROR _wkssvc_NetrWkstaTransportAdd(pipes_struct *p, struct wkssvc_NetrWkstaTransportAdd *r);
-WERROR _wkssvc_NetrWkstaTransportDel(pipes_struct *p, struct wkssvc_NetrWkstaTransportDel *r);
-WERROR _wkssvc_NetrUseAdd(pipes_struct *p, struct wkssvc_NetrUseAdd *r);
-WERROR _wkssvc_NetrUseGetInfo(pipes_struct *p, struct wkssvc_NetrUseGetInfo *r);
-WERROR _wkssvc_NetrUseDel(pipes_struct *p, struct wkssvc_NetrUseDel *r);
-WERROR _wkssvc_NetrUseEnum(pipes_struct *p, struct wkssvc_NetrUseEnum *r);
-WERROR _wkssvc_NetrMessageBufferSend(pipes_struct *p, struct wkssvc_NetrMessageBufferSend *r);
-WERROR _wkssvc_NetrWorkstationStatisticsGet(pipes_struct *p, struct wkssvc_NetrWorkstationStatisticsGet *r) ;
-WERROR _wkssvc_NetrLogonDomainNameAdd(pipes_struct *p, struct wkssvc_NetrLogonDomainNameAdd *r);
-WERROR _wkssvc_NetrLogonDomainNameDel(pipes_struct *p, struct wkssvc_NetrLogonDomainNameDel *r);
-WERROR _wkssvc_NetrJoinDomain(pipes_struct *p, struct wkssvc_NetrJoinDomain *r);
-WERROR _wkssvc_NetrUnjoinDomain(pipes_struct *p, struct wkssvc_NetrUnjoinDomain *r);
-WERROR _wkssvc_NetrRenameMachineInDomain(pipes_struct *p, struct wkssvc_NetrRenameMachineInDomain *r);
-WERROR _wkssvc_NetrValidateName(pipes_struct *p, struct wkssvc_NetrValidateName *r);
-WERROR _wkssvc_NetrGetJoinInformation(pipes_struct *p, struct wkssvc_NetrGetJoinInformation *r);
-WERROR _wkssvc_NetrGetJoinableOus(pipes_struct *p, struct wkssvc_NetrGetJoinableOus *r);
-WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p,
-			       struct wkssvc_NetrJoinDomain2 *r);
-WERROR _wkssvc_NetrUnjoinDomain2(pipes_struct *p,
-				 struct wkssvc_NetrUnjoinDomain2 *r);
-WERROR _wkssvc_NetrRenameMachineInDomain2(pipes_struct *p, struct wkssvc_NetrRenameMachineInDomain2 *r);
-WERROR _wkssvc_NetrValidateName2(pipes_struct *p, struct wkssvc_NetrValidateName2 *r);
-WERROR _wkssvc_NetrGetJoinableOus2(pipes_struct *p, struct wkssvc_NetrGetJoinableOus2 *r);
-WERROR _wkssvc_NetrAddAlternateComputerName(pipes_struct *p, struct wkssvc_NetrAddAlternateComputerName *r);
-WERROR _wkssvc_NetrRemoveAlternateComputerName(pipes_struct *p, struct wkssvc_NetrRemoveAlternateComputerName *r);
-WERROR _wkssvc_NetrSetPrimaryComputername(pipes_struct *p, struct wkssvc_NetrSetPrimaryComputername *r);
-WERROR _wkssvc_NetrEnumerateComputerNames(pipes_struct *p, struct wkssvc_NetrEnumerateComputerNames *r);
-
-/* The following definitions come from rpcclient/cmd_dfs.c  */
-
-
-/* The following definitions come from rpcclient/cmd_dssetup.c  */
-
-
-/* The following definitions come from rpcclient/cmd_echo.c  */
-
-
-/* The following definitions come from rpcclient/cmd_lsarpc.c  */
-
-
-/* The following definitions come from rpcclient/cmd_netlogon.c  */
-
-
-/* The following definitions come from rpcclient/cmd_ntsvcs.c  */
-
-
-/* The following definitions come from rpcclient/cmd_samr.c  */
-
-
-/* The following definitions come from rpcclient/cmd_shutdown.c  */
-
-
-/* The following definitions come from rpcclient/cmd_spoolss.c  */
-
-void set_drv_info_3_env (DRIVER_INFO_3 *info, const char *arch);
-
-/* The following definitions come from rpcclient/cmd_srvsvc.c  */
-
-
-/* The following definitions come from rpcclient/cmd_test.c  */
-
-
-/* The following definitions come from rpcclient/cmd_wkssvc.c  */
-
-
-/* The following definitions come from rpcclient/rpcclient.c  */
-
-
-/* The following definitions come from services/services_db.c  */
-
-void svcctl_init_keys( void );
-SEC_DESC *svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token );
-bool svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc, NT_USER_TOKEN *token );
-const char *svcctl_lookup_dispname(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token );
-const char *svcctl_lookup_description(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token );
-REGVAL_CTR *svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token );
-
-/* The following definitions come from services/svc_netlogon.c  */
-
-
-/* The following definitions come from services/svc_rcinit.c  */
-
-
-/* The following definitions come from services/svc_spoolss.c  */
-
-
-/* The following definitions come from services/svc_winreg.c  */
-
-
-/* The following definitions come from services/svc_wins.c  */
-
-
-/* The following definitions come from smbd/aio.c  */
-
-void aio_request_done(uint16_t mid);
-bool aio_finished(void);
-void initialize_async_io_handler(void);
-bool schedule_aio_read_and_X(connection_struct *conn,
-			     struct smb_request *req,
-			     files_struct *fsp, SMB_OFF_T startpos,
-			     size_t smb_maxcnt);
-bool schedule_aio_write_and_X(connection_struct *conn,
-			      struct smb_request *req,
-			      files_struct *fsp, char *data,
-			      SMB_OFF_T startpos,
-			      size_t numtowrite);
-int process_aio_queue(void);
-int wait_for_aio_completion(files_struct *fsp);
-void cancel_aio_by_fsp(files_struct *fsp);
-bool aio_finished(void);
-void initialize_async_io_handler(void);
-int process_aio_queue(void);
-bool schedule_aio_read_and_X(connection_struct *conn,
-			     struct smb_request *req,
-			     files_struct *fsp, SMB_OFF_T startpos,
-			     size_t smb_maxcnt);
-bool schedule_aio_write_and_X(connection_struct *conn,
-			      struct smb_request *req,
-			      files_struct *fsp, char *data,
-			      SMB_OFF_T startpos,
-			      size_t numtowrite);
-void cancel_aio_by_fsp(files_struct *fsp);
-int wait_for_aio_completion(files_struct *fsp);
-
-/* The following definitions come from smbd/blocking.c  */
-
-bool push_blocking_lock_request( struct byte_range_lock *br_lck,
-		const struct smb_request *req,
-		files_struct *fsp,
-		int lock_timeout,
-		int lock_num,
-		uint32 lock_pid,
-		enum brl_type lock_type,
-		enum brl_flavour lock_flav,
-		SMB_BIG_UINT offset,
-		SMB_BIG_UINT count,
-		uint32 blocking_pid);
-void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lock *br_lck);
-void remove_pending_lock_requests_by_mid(int mid);
-bool blocking_lock_was_deferred(int mid);
-bool blocking_lock_cancel(files_struct *fsp,
-			uint32 lock_pid,
-			SMB_BIG_UINT offset,
-			SMB_BIG_UINT count,
-			enum brl_flavour lock_flav,
-			unsigned char locktype,
-                        NTSTATUS err);
-
-/* The following definitions come from smbd/change_trust_pw.c  */
-
-NTSTATUS change_trust_account_password( const char *domain, const char *remote_machine);
-
-/* The following definitions come from smbd/chgpasswd.c  */
-
-bool chgpasswd(const char *name, const struct passwd *pass,
-	       const char *oldpass, const char *newpass, bool as_root);
-bool chgpasswd(const char *name, const struct passwd *pass, 
-	       const char *oldpass, const char *newpass, bool as_root);
-bool check_lanman_password(char *user, uchar * pass1,
-			   uchar * pass2, struct samu **hnd);
-bool change_lanman_password(struct samu *sampass, uchar *pass2);
-NTSTATUS pass_oem_change(char *user,
-			 uchar password_encrypted_with_lm_hash[516],
-			 const uchar old_lm_hash_encrypted[16],
-			 uchar password_encrypted_with_nt_hash[516],
-			 const uchar old_nt_hash_encrypted[16],
-			 uint32 *reject_reason);
-NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passwd, bool as_root, uint32 *samr_reject_reason);
-
-/* The following definitions come from smbd/close.c  */
-
-void set_close_write_time(struct files_struct *fsp, struct timespec ts);
-NTSTATUS close_file(files_struct *fsp, enum file_close_type close_type);
-void msg_close_file(struct messaging_context *msg_ctx,
-		    void *private_data,
-		    uint32_t msg_type,
-		    struct server_id server_id,
-		    DATA_BLOB *data);
-
-/* The following definitions come from smbd/conn.c  */
-
-void conn_init(void);
-int conn_num_open(void);
-bool conn_snum_used(int snum);
-connection_struct *conn_find(unsigned cnum);
-connection_struct *conn_new(void);
-bool conn_close_all(void);
-bool conn_idle_all(time_t t);
-void conn_clear_vuid_caches(uint16 vuid);
-void conn_free_internal(connection_struct *conn);
-void conn_free(connection_struct *conn);
-void msg_force_tdis(struct messaging_context *msg,
-		    void *private_data,
-		    uint32_t msg_type,
-		    struct server_id server_id,
-		    DATA_BLOB *data);
-
-/* The following definitions come from smbd/connection.c  */
-
-bool yield_connection(connection_struct *conn, const char *name);
-int count_current_connections( const char *sharename, bool clear  );
-int count_all_current_connections(void);
-bool claim_connection(connection_struct *conn, const char *name,
-		      uint32 msg_flags);
-bool register_message_flags(bool doreg, uint32 msg_flags);
-bool store_pipe_opendb( smb_np_struct *p );
-bool delete_pipe_opendb( smb_np_struct *p );
-
-/* The following definitions come from smbd/dfree.c  */
-
-SMB_BIG_UINT sys_disk_free(connection_struct *conn, const char *path, bool small_query, 
-                              SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize);
-SMB_BIG_UINT get_dfree_info(connection_struct *conn,
-			const char *path,
-			bool small_query,
-			SMB_BIG_UINT *bsize,
-			SMB_BIG_UINT *dfree,
-			SMB_BIG_UINT *dsize);
-
-/* The following definitions come from smbd/dir.c  */
-
-bool make_dir_struct(TALLOC_CTX *ctx,
-			char *buf,
-			const char *mask,
-			const char *fname,
-			SMB_OFF_T size,
-			uint32 mode,
-			time_t date,
-			bool uc);
-void init_dptrs(void);
-char *dptr_path(int key);
-char *dptr_wcard(int key);
-uint16 dptr_attr(int key);
-void dptr_close(int *key);
-void dptr_closecnum(connection_struct *conn);
-void dptr_idlecnum(connection_struct *conn);
-void dptr_closepath(char *path,uint16 spid);
-NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, bool expect_close,uint16 spid,
-		const char *wcard, bool wcard_has_wild, uint32 attr, struct dptr_struct **dptr_ret);
-int dptr_CloseDir(struct dptr_struct *dptr);
-void dptr_SeekDir(struct dptr_struct *dptr, long offset);
-long dptr_TellDir(struct dptr_struct *dptr);
-bool dptr_has_wild(struct dptr_struct *dptr);
-int dptr_dnum(struct dptr_struct *dptr);
-const char *dptr_ReadDirName(TALLOC_CTX *ctx,
-			struct dptr_struct *dptr,
-			long *poffset,
-			SMB_STRUCT_STAT *pst);
-bool dptr_SearchDir(struct dptr_struct *dptr, const char *name, long *poffset, SMB_STRUCT_STAT *pst);
-void dptr_DirCacheAdd(struct dptr_struct *dptr, const char *name, long offset);
-bool dptr_fill(char *buf1,unsigned int key);
-struct dptr_struct *dptr_fetch(char *buf,int *num);
-struct dptr_struct *dptr_fetch_lanman2(int dptr_num);
-bool dir_check_ftype(connection_struct *conn, uint32 mode, uint32 dirtype);
-bool get_dir_entry(TALLOC_CTX *ctx,
-		connection_struct *conn,
-		const char *mask,
-		uint32 dirtype,
-		char **pp_fname_out,
-		SMB_OFF_T *size,
-		uint32 *mode,
-		time_t *date,
-		bool check_descend,
-		bool ask_sharemode);
-bool is_visible_file(connection_struct *conn, const char *dir_path, const char *name, SMB_STRUCT_STAT *pst, bool use_veto);
-struct smb_Dir *OpenDir(TALLOC_CTX *mem_ctx, connection_struct *conn,
-			const char *name, const char *mask, uint32 attr);
-const char *ReadDirName(struct smb_Dir *dirp, long *poffset);
-void RewindDir(struct smb_Dir *dirp, long *poffset);
-void SeekDir(struct smb_Dir *dirp, long offset);
-long TellDir(struct smb_Dir *dirp);
-void DirCacheAdd(struct smb_Dir *dirp, const char *name, long offset);
-bool SearchDir(struct smb_Dir *dirp, const char *name, long *poffset);
-NTSTATUS can_delete_directory(struct connection_struct *conn,
-				const char *dirname);
-
-/* The following definitions come from smbd/dmapi.c  */
-
-const void *dmapi_get_current_session(void);
-bool dmapi_have_session(void);
-bool dmapi_new_session(void);
-bool dmapi_destroy_session(void);
-uint32 dmapi_file_flags(const char * const path);
-
-/* The following definitions come from smbd/dnsregister.c  */
-
-void dns_register_close(struct dns_reg_state **dns_state_ptr);
-void dns_register_smbd(struct dns_reg_state ** dns_state_ptr,
-		unsigned port,
-		int *maxfd,
-		fd_set *listen_set,
-		struct timeval *timeout);
-bool dns_register_smbd_reply(struct dns_reg_state *dns_state,
-		fd_set *lfds, struct timeval *timeout);
-
-/* The following definitions come from smbd/dosmode.c  */
-
-mode_t unix_mode(connection_struct *conn, int dosmode, const char *fname,
-		 const char *inherit_from_dir);
-uint32 dos_mode_msdfs(connection_struct *conn, const char *path,SMB_STRUCT_STAT *sbuf);
-uint32 dos_mode(connection_struct *conn, const char *path,SMB_STRUCT_STAT *sbuf);
-int file_set_dosmode(connection_struct *conn, const char *fname,
-		     uint32 dosmode, SMB_STRUCT_STAT *st,
-		     const char *parent_dir,
-		     bool newfile);
-int file_ntimes(connection_struct *conn, const char *fname, const struct timespec ts[2]);
-bool set_sticky_write_time_path(connection_struct *conn, const char *fname,
-			 struct file_id fileid, const struct timespec mtime);
-bool set_sticky_write_time_fsp(struct files_struct *fsp, const struct timespec mtime);
-bool update_write_time(struct files_struct *fsp);
-
-/* The following definitions come from smbd/error.c  */
-
-bool use_nt_status(void);
-void error_packet_set(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file);
-int error_packet(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file);
-void reply_nt_error(struct smb_request *req, NTSTATUS ntstatus,
-		    int line, const char *file);
-void reply_force_nt_error(struct smb_request *req, NTSTATUS ntstatus,
-			  int line, const char *file);
-void reply_dos_error(struct smb_request *req, uint8 eclass, uint32 ecode,
-		    int line, const char *file);
-void reply_both_error(struct smb_request *req, uint8 eclass, uint32 ecode,
-		      NTSTATUS status, int line, const char *file);
-void reply_openerror(struct smb_request *req, NTSTATUS status);
-void reply_unix_error(struct smb_request *req, uint8 defclass, uint32 defcode,
-			NTSTATUS defstatus, int line, const char *file);
-
-/* The following definitions come from smbd/fake_file.c  */
-
-enum FAKE_FILE_TYPE is_fake_file(const char *fname);
-NTSTATUS open_fake_file(connection_struct *conn,
-				uint16_t current_vuid,
-				enum FAKE_FILE_TYPE fake_file_type,
-				const char *fname,
-				uint32 access_mask,
-				files_struct **result);
-void destroy_fake_file_handle(struct fake_file_handle **fh);
-NTSTATUS close_fake_file(files_struct *fsp);
-
-/* The following definitions come from smbd/file_access.c  */
-
-bool can_access_file_acl(struct connection_struct *conn,
-				const char * fname,
-				uint32_t access_mask);
-bool can_delete_file_in_directory(connection_struct *conn, const char *fname);
-bool can_access_file_data(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, uint32 access_mask);
-bool can_write_to_file(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf);
-bool directory_has_default_acl(connection_struct *conn, const char *fname);
-
-/* The following definitions come from smbd/fileio.c  */
-
-ssize_t read_file(files_struct *fsp,char *data,SMB_OFF_T pos,size_t n);
-void trigger_write_time_update(struct files_struct *fsp);
-void trigger_write_time_update_immediate(struct files_struct *fsp);
-ssize_t write_file(struct smb_request *req,
-			files_struct *fsp,
-			const char *data,
-			SMB_OFF_T pos,
-			size_t n);
-void delete_write_cache(files_struct *fsp);
-void set_filelen_write_cache(files_struct *fsp, SMB_OFF_T file_size);
-ssize_t flush_write_cache(files_struct *fsp, enum flush_reason_enum reason);
-NTSTATUS sync_file(connection_struct *conn, files_struct *fsp, bool write_through);
-int fsp_stat(files_struct *fsp, SMB_STRUCT_STAT *pst);
-
-/* The following definitions come from smbd/filename.c  */
-
-NTSTATUS unix_convert(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			const char *orig_path,
-			bool allow_wcard_last_component,
-			char **pp_conv_path,
-			char **pp_saved_last_component,
-			SMB_STRUCT_STAT *pst);
-NTSTATUS check_name(connection_struct *conn, const char *name);
-
-/* The following definitions come from smbd/files.c  */
-
-NTSTATUS file_new(connection_struct *conn, files_struct **result);
-void file_close_conn(connection_struct *conn);
-void file_close_pid(uint16 smbpid, int vuid);
-void file_init(void);
-void file_close_user(int vuid);
-void file_dump_open_table(void);
-files_struct *file_find_fd(int fd);
-files_struct *file_find_dif(struct file_id id, unsigned long gen_id);
-files_struct *file_find_fsp(files_struct *orig_fsp);
-files_struct *file_find_di_first(struct file_id id);
-files_struct *file_find_di_next(files_struct *start_fsp);
-files_struct *file_find_print(void);
-void file_sync_all(connection_struct *conn);
-void file_free(files_struct *fsp);
-files_struct *file_fnum(uint16 fnum);
-files_struct *file_fsp(uint16 fid);
-void file_chain_reset(void);
-NTSTATUS dup_file_fsp(files_struct *fsp,
-				uint32 access_mask,
-				uint32 share_access,
-				uint32 create_options,
-		      		files_struct **result);
-
-/* The following definitions come from smbd/ipc.c  */
-
-void send_trans_reply(connection_struct *conn,
-		      const uint8_t *inbuf,
-		      char *rparam, int rparam_len,
-		      char *rdata, int rdata_len,
-		      bool buffer_too_large);
-void reply_trans(struct smb_request *req);
-void reply_transs(struct smb_request *req);
-
-/* The following definitions come from smbd/lanman.c  */
-
-void api_reply(connection_struct *conn, uint16 vuid,
-	       struct smb_request *req,
-	       char *data, char *params,
-	       int tdscnt, int tpscnt,
-	       int mdrcnt, int mprcnt);
-
-/* The following definitions come from smbd/mangle.c  */
-
-void mangle_reset_cache(void);
-void mangle_change_to_posix(void);
-bool mangle_is_mangled(const char *s, const struct share_params *p);
-bool mangle_is_8_3(const char *fname, bool check_case,
-		   const struct share_params *p);
-bool mangle_is_8_3_wildcards(const char *fname, bool check_case,
-			     const struct share_params *p);
-bool mangle_must_mangle(const char *fname,
-		   const struct share_params *p);
-bool mangle_lookup_name_from_8_3(TALLOC_CTX *ctx,
-			const char *in,
-			char **out, /* talloced on the given context. */
-			const struct share_params *p);
-bool name_to_8_3(const char *in,
-		char out[13],
-		bool cache83,
-		const struct share_params *p);
-
-/* The following definitions come from smbd/mangle_hash.c  */
-
-struct mangle_fns *mangle_hash_init(void);
-
-/* The following definitions come from smbd/mangle_hash2.c  */
-
-struct mangle_fns *mangle_hash2_init(void);
-struct mangle_fns *posix_mangle_init(void);
-
-/* The following definitions come from smbd/map_username.c  */
-
-bool map_username(fstring user);
-
-/* The following definitions come from smbd/message.c  */
-
-void reply_sends(struct smb_request *req);
-void reply_sendstrt(struct smb_request *req);
-void reply_sendtxt(struct smb_request *req);
-void reply_sendend(struct smb_request *req);
-
-/* The following definitions come from smbd/msdfs.c  */
-
-bool is_msdfs_link(connection_struct *conn,
-		const char *path,
-		SMB_STRUCT_STAT *sbufp);
-NTSTATUS get_referred_path(TALLOC_CTX *ctx,
-			const char *dfs_path,
-			struct junction_map *jucn,
-			int *consumedcntp,
-			bool *self_referralp);
-int setup_dfs_referral(connection_struct *orig_conn,
-			const char *dfs_path,
-			int max_referral_level,
-			char **ppdata, NTSTATUS *pstatus);
-bool create_junction(TALLOC_CTX *ctx,
-		const char *dfs_path,
-		struct junction_map *jucn);
-bool create_msdfs_link(const struct junction_map *jucn);
-bool remove_msdfs_link(const struct junction_map *jucn);
-struct junction_map *enum_msdfs_links(TALLOC_CTX *ctx, size_t *p_num_jn);
-NTSTATUS resolve_dfspath(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			bool dfs_pathnames,
-			const char *name_in,
-			char **pp_name_out);
-NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
-				connection_struct *conn,
-				bool dfs_pathnames,
-				const char *name_in,
-				char **pp_name_out,
-				bool *ppath_contains_wcard);
-NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
-				connection_struct **pconn,
-				int snum,
-				const char *path,
-			    char **poldcwd);
-
-/* The following definitions come from smbd/negprot.c  */
-
-void reply_negprot(struct smb_request *req);
-
-/* The following definitions come from smbd/notify.c  */
-
-void change_notify_reply(connection_struct *conn,
-			const uint8 *request_buf, uint32 max_param,
-			 struct notify_change_buf *notify_buf);
-NTSTATUS change_notify_create(struct files_struct *fsp, uint32 filter,
-			      bool recursive);
-NTSTATUS change_notify_add_request(const struct smb_request *req,
-				uint32 max_param,
-				uint32 filter, bool recursive,
-				struct files_struct *fsp);
-void remove_pending_change_notify_requests_by_mid(uint16 mid);
-void remove_pending_change_notify_requests_by_fid(files_struct *fsp,
-						  NTSTATUS status);
-void notify_fname(connection_struct *conn, uint32 action, uint32 filter,
-		  const char *path);
-char *notify_filter_string(TALLOC_CTX *mem_ctx, uint32 filter);
-struct sys_notify_context *sys_notify_context_create(connection_struct *conn,
-						     TALLOC_CTX *mem_ctx, 
-						     struct event_context *ev);
-NTSTATUS sys_notify_watch(struct sys_notify_context *ctx,
-			  struct notify_entry *e,
-			  void (*callback)(struct sys_notify_context *ctx, 
-					   void *private_data,
-					   struct notify_event *ev),
-			  void *private_data, void *handle);
-
-/* The following definitions come from smbd/notify_inotify.c  */
-
-NTSTATUS inotify_watch(struct sys_notify_context *ctx,
-		       struct notify_entry *e,
-		       void (*callback)(struct sys_notify_context *ctx, 
-					void *private_data,
-					struct notify_event *ev),
-		       void *private_data, 
-		       void *handle_p);
-
-/* The following definitions come from smbd/notify_internal.c  */
-
-struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server, 
-				   struct messaging_context *messaging_ctx,
-				   struct event_context *ev,
-				   connection_struct *conn);
-NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0,
-		    void (*callback)(void *, const struct notify_event *), 
-		    void *private_data);
-NTSTATUS notify_remove(struct notify_context *notify, void *private_data);
-void notify_trigger(struct notify_context *notify,
-		    uint32_t action, uint32_t filter, const char *path);
-
-/* The following definitions come from smbd/ntquotas.c  */
-
-int vfs_get_ntquota(files_struct *fsp, enum SMB_QUOTA_TYPE qtype, DOM_SID *psid, SMB_NTQUOTA_STRUCT *qt);
-int vfs_set_ntquota(files_struct *fsp, enum SMB_QUOTA_TYPE qtype, DOM_SID *psid, SMB_NTQUOTA_STRUCT *qt);
-int vfs_get_user_ntquota_list(files_struct *fsp, SMB_NTQUOTA_LIST **qt_list);
-void *init_quota_handle(TALLOC_CTX *mem_ctx);
-
-/* The following definitions come from smbd/nttrans.c  */
-
-void send_nt_replies(connection_struct *conn,
-			struct smb_request *req, NTSTATUS nt_error,
-		     char *params, int paramsize,
-		     char *pdata, int datasize);
-bool is_ntfs_stream_name(const char *fname);
-void reply_ntcreate_and_X(struct smb_request *req);
-void reply_ntcancel(struct smb_request *req);
-void reply_ntrename(struct smb_request *req);
-void reply_nttrans(struct smb_request *req);
-void reply_nttranss(struct smb_request *req);
-
-/* The following definitions come from smbd/open.c  */
-
-NTSTATUS fd_close(files_struct *fsp);
-bool map_open_params_to_ntcreate(const char *fname, int deny_mode, int open_func,
-				 uint32 *paccess_mask,
-				 uint32 *pshare_mode,
-				 uint32 *pcreate_disposition,
-				 uint32 *pcreate_options);
-NTSTATUS open_file_ntcreate(connection_struct *conn,
-			    struct smb_request *req,
-			    const char *fname,
-			    SMB_STRUCT_STAT *psbuf,
-			    uint32 access_mask,		/* access bits (FILE_READ_DATA etc.) */
-			    uint32 share_access,	/* share constants (FILE_SHARE_READ etc) */
-			    uint32 create_disposition,	/* FILE_OPEN_IF etc. */
-			    uint32 create_options,	/* options such as delete on close. */
-			    uint32 new_dos_attributes,	/* attributes used for new file. */
-			    int oplock_request, 	/* internal Samba oplock codes. */
-				 			/* Information (FILE_EXISTS etc.) */
-			    int *pinfo,
-			    files_struct **result);
-NTSTATUS open_file_fchmod(connection_struct *conn, const char *fname,
-			  SMB_STRUCT_STAT *psbuf, files_struct **result);
-NTSTATUS close_file_fchmod(files_struct *fsp);
-NTSTATUS open_directory(connection_struct *conn,
-			struct smb_request *req,
-			const char *fname,
-			SMB_STRUCT_STAT *psbuf,
-			uint32 access_mask,
-			uint32 share_access,
-			uint32 create_disposition,
-			uint32 create_options,
-			uint32 file_attributes,
-			int *pinfo,
-			files_struct **result);
-NTSTATUS create_directory(connection_struct *conn, struct smb_request *req, const char *directory);
-void msg_file_was_renamed(struct messaging_context *msg,
-			  void *private_data,
-			  uint32_t msg_type,
-			  struct server_id server_id,
-			  DATA_BLOB *data);
-NTSTATUS create_file_unixpath(connection_struct *conn,
-			      struct smb_request *req,
-			      const char *fname,
-			      uint32_t access_mask,
-			      uint32_t share_access,
-			      uint32_t create_disposition,
-			      uint32_t create_options,
-			      uint32_t file_attributes,
-			      uint32_t oplock_request,
-			      SMB_BIG_UINT allocation_size,
-			      struct security_descriptor *sd,
-			      struct ea_list *ea_list,
-
-			      files_struct **result,
-			      int *pinfo,
-			      SMB_STRUCT_STAT *psbuf);
-NTSTATUS create_file(connection_struct *conn,
-		     struct smb_request *req,
-		     uint16_t root_dir_fid,
-		     const char *fname,
-		     uint32_t access_mask,
-		     uint32_t share_access,
-		     uint32_t create_disposition,
-		     uint32_t create_options,
-		     uint32_t file_attributes,
-		     uint32_t oplock_request,
-		     SMB_BIG_UINT allocation_size,
-		     struct security_descriptor *sd,
-		     struct ea_list *ea_list,
-
-		     files_struct **result,
-		     int *pinfo,
-		     SMB_STRUCT_STAT *psbuf);
-
-/* The following definitions come from smbd/oplock.c  */
-
-int32 get_number_of_exclusive_open_oplocks(void);
-bool oplock_message_waiting(fd_set *fds);
-void process_kernel_oplocks(struct messaging_context *msg_ctx, fd_set *pfds);
-bool set_file_oplock(files_struct *fsp, int oplock_type);
-void release_file_oplock(files_struct *fsp);
-bool remove_oplock(files_struct *fsp);
-bool downgrade_oplock(files_struct *fsp);
-int oplock_notify_fd(void);
-void reply_to_oplock_break_requests(files_struct *fsp);
-void release_level_2_oplocks_on_change(files_struct *fsp);
-void share_mode_entry_to_message(char *msg, const struct share_mode_entry *e);
-void message_to_share_mode_entry(struct share_mode_entry *e, char *msg);
-bool init_oplocks(struct messaging_context *msg_ctx);
-
-/* The following definitions come from smbd/oplock_irix.c  */
-
-struct kernel_oplocks *irix_init_kernel_oplocks(void) ;
-
-/* The following definitions come from smbd/oplock_linux.c  */
-
-void linux_set_lease_capability(void);
-int linux_set_lease_sighandler(int fd);
-int linux_setlease(int fd, int leasetype);
-struct kernel_oplocks *linux_init_kernel_oplocks(void) ;
-
-/* The following definitions come from smbd/password.c  */
-
-user_struct *get_valid_user_struct(uint16 vuid);
-bool is_partial_auth_vuid(uint16 vuid);
-user_struct *get_partial_auth_user_struct(uint16 vuid);
-void invalidate_vuid(uint16 vuid);
-void invalidate_all_vuids(void);
-int register_initial_vuid(void);
-int register_existing_vuid(uint16 vuid,
-			auth_serversupplied_info *server_info,
-			DATA_BLOB response_blob,
-			const char *smb_name);
-void add_session_user(const char *user);
-void add_session_workgroup(const char *workgroup);
-const char *get_session_workgroup(void);
-bool user_in_netgroup(const char *user, const char *ngname);
-bool user_in_list(const char *user,const char **list);
-bool authorise_login(int snum, fstring user, DATA_BLOB password,
-		     bool *guest);
-
-/* The following definitions come from smbd/pipes.c  */
-
-void reply_open_pipe_and_X(connection_struct *conn, struct smb_request *req);
-void reply_pipe_write(struct smb_request *req);
-void reply_pipe_write_and_X(struct smb_request *req);
-void reply_pipe_read_and_X(struct smb_request *req);
-void reply_pipe_close(connection_struct *conn, struct smb_request *req);
-
-/* The following definitions come from smbd/posix_acls.c  */
-
-NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, SEC_DESC *psd);
-SMB_ACL_T free_empty_sys_acl(connection_struct *conn, SMB_ACL_T the_acl);
-NTSTATUS posix_fget_nt_acl(struct files_struct *fsp, uint32_t security_info,
-			   SEC_DESC **ppdesc);
-NTSTATUS posix_get_nt_acl(struct connection_struct *conn, const char *name,
-			  uint32_t security_info, SEC_DESC **ppdesc);
-int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid);
-NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd);
-int get_acl_group_bits( connection_struct *conn, const char *fname, mode_t *mode );
-int chmod_acl(connection_struct *conn, const char *name, mode_t mode);
-int inherit_access_posix_acl(connection_struct *conn, const char *inherit_from_dir,
-		       const char *name, mode_t mode);
-int fchmod_acl(files_struct *fsp, mode_t mode);
-bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf,
-				uint16 num_def_acls, const char *pdata);
-bool set_unix_posix_acl(connection_struct *conn, files_struct *fsp, const char *fname, uint16 num_acls, const char *pdata);
-SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname);
-
-/* The following definitions come from smbd/process.c  */
-
-bool srv_send_smb(int fd, char *buffer, bool do_encrypt);
-int srv_set_message(char *buf,
-                        int num_words,
-                        int num_bytes,
-                        bool zero);
-void init_smb_request(struct smb_request *req,
-			const uint8 *inbuf,
-			size_t unread_bytes,
-			bool encrypted);
-void remove_deferred_open_smb_message(uint16 mid);
-void schedule_deferred_open_smb_message(uint16 mid);
-bool open_was_deferred(uint16 mid);
-struct pending_message_list *get_open_deferred_message(uint16 mid);
-bool push_deferred_smb_message(struct smb_request *req,
-			       struct timeval request_time,
-			       struct timeval timeout,
-			       char *private_data, size_t priv_len);
-struct idle_event *event_add_idle(struct event_context *event_ctx,
-				  TALLOC_CTX *mem_ctx,
-				  struct timeval interval,
-				  const char *name,
-				  bool (*handler)(const struct timeval *now,
-						  void *private_data),
-				  void *private_data);
-NTSTATUS allow_new_trans(struct trans_state *list, int mid);
-void respond_to_all_remaining_local_messages(void);
-bool create_outbuf(TALLOC_CTX *mem_ctx, const char *inbuf, char **outbuf,
-		   uint8_t num_words, uint32_t num_bytes);
-void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes);
-const char *smb_fn_name(int type);
-void add_to_common_flags2(uint32 v);
-void remove_from_common_flags2(uint32 v);
-void construct_reply_common(const char *inbuf, char *outbuf);
-void chain_reply(struct smb_request *req);
-void check_reload(time_t t);
-void smbd_process(void);
-
-/* The following definitions come from smbd/quotas.c  */
-
-bool disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path,
-		SMB_BIG_UINT *bsize,
-		SMB_BIG_UINT *dfree,
-		SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-bool disk_quotas_vxfs(const char *name, char *path, SMB_BIG_UINT *bsize, SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path,SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize);
-bool disk_quotas(const char *path,SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize);
-
-/* The following definitions come from smbd/reply.c  */
-
-NTSTATUS check_path_syntax(char *path);
-NTSTATUS check_path_syntax_wcard(char *path, bool *p_contains_wcard);
-NTSTATUS check_path_syntax_posix(char *path);
-size_t srvstr_get_path_wcard(TALLOC_CTX *ctx,
-			const char *inbuf,
-			uint16 smb_flags2,
-			char **pp_dest,
-			const char *src,
-			size_t src_len,
-			int flags,
-			NTSTATUS *err,
-			bool *contains_wcard);
-size_t srvstr_get_path(TALLOC_CTX *ctx,
-			const char *inbuf,
-			uint16 smb_flags2,
-			char **pp_dest,
-			const char *src,
-			size_t src_len,
-			int flags,
-			NTSTATUS *err);
-bool check_fsp_open(connection_struct *conn, struct smb_request *req,
-		    files_struct *fsp);
-bool check_fsp(connection_struct *conn, struct smb_request *req,
-	       files_struct *fsp);
-bool check_fsp_ntquota_handle(connection_struct *conn, struct smb_request *req,
-			      files_struct *fsp);
-bool fsp_belongs_conn(connection_struct *conn, struct smb_request *req,
-		      files_struct *fsp);
-void reply_special(char *inbuf);
-void reply_tcon(struct smb_request *req);
-void reply_tcon_and_X(struct smb_request *req);
-void reply_unknown_new(struct smb_request *req, uint8 type);
-void reply_ioctl(struct smb_request *req);
-void reply_checkpath(struct smb_request *req);
-void reply_getatr(struct smb_request *req);
-void reply_setatr(struct smb_request *req);
-void reply_dskattr(struct smb_request *req);
-void reply_search(struct smb_request *req);
-void reply_fclose(struct smb_request *req);
-void reply_open(struct smb_request *req);
-void reply_open_and_X(struct smb_request *req);
-void reply_ulogoffX(struct smb_request *req);
-void reply_mknew(struct smb_request *req);
-void reply_ctemp(struct smb_request *req);
-NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req,
-			  uint32 dirtype, const char *name_in, bool has_wild);
-void reply_unlink(struct smb_request *req);
-void send_file_readbraw(connection_struct *conn,
-			files_struct *fsp,
-			SMB_OFF_T startpos,
-			size_t nread,
-			ssize_t mincount);
-void reply_readbraw(struct smb_request *req);
-void reply_lockread(struct smb_request *req);
-void reply_read(struct smb_request *req);
-void reply_read_and_X(struct smb_request *req);
-void error_to_writebrawerr(struct smb_request *req);
-void reply_writebraw(struct smb_request *req);
-void reply_writeunlock(struct smb_request *req);
-void reply_write(struct smb_request *req);
-bool is_valid_writeX_buffer(const uint8_t *inbuf);
-void reply_write_and_X(struct smb_request *req);
-void reply_lseek(struct smb_request *req);
-void reply_flush(struct smb_request *req);
-void reply_exit(struct smb_request *req);
-void reply_close(struct smb_request *req);
-void reply_writeclose(struct smb_request *req);
-void reply_lock(struct smb_request *req);
-void reply_unlock(struct smb_request *req);
-void reply_tdis(struct smb_request *req);
-void reply_echo(struct smb_request *req);
-void reply_printopen(struct smb_request *req);
-void reply_printclose(struct smb_request *req);
-void reply_printqueue(struct smb_request *req);
-void reply_printwrite(struct smb_request *req);
-void reply_mkdir(struct smb_request *req);
-NTSTATUS rmdir_internals(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			const char *directory);
-void reply_rmdir(struct smb_request *req);
-NTSTATUS rename_internals_fsp(connection_struct *conn,
-			files_struct *fsp,
-			char *newname,
-			const char *newname_last_component,
-			uint32 attrs,
-			bool replace_if_exists);
-NTSTATUS rename_internals(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			struct smb_request *req,
-			const char *name_in,
-			const char *newname_in,
-			uint32 attrs,
-			bool replace_if_exists,
-			bool src_has_wild,
-			bool dest_has_wild,
-			uint32_t access_mask);
-void reply_mv(struct smb_request *req);
-NTSTATUS copy_file(TALLOC_CTX *ctx,
-			connection_struct *conn,
-			const char *src,
-			const char *dest1,
-			int ofun,
-			int count,
-			bool target_is_directory);
-void reply_copy(struct smb_request *req);
-uint32 get_lock_pid( char *data, int data_offset, bool large_file_format);
-SMB_BIG_UINT get_lock_count( char *data, int data_offset, bool large_file_format);
-SMB_BIG_UINT get_lock_offset( char *data, int data_offset, bool large_file_format, bool *err);
-void reply_lockingX(struct smb_request *req);
-void reply_readbmpx(struct smb_request *req);
-void reply_readbs(struct smb_request *req);
-void reply_setattrE(struct smb_request *req);
-void reply_writebmpx(struct smb_request *req);
-void reply_writebs(struct smb_request *req);
-void reply_getattrE(struct smb_request *req);
-
-/* The following definitions come from smbd/seal.c  */
-
-uint16_t srv_enc_ctx(void);
-bool is_encrypted_packet(const uint8_t *inbuf);
-void srv_free_enc_buffer(char *buf);
-NTSTATUS srv_decrypt_buffer(char *buf);
-NTSTATUS srv_encrypt_buffer(char *buf, char **buf_out);
-NTSTATUS srv_request_encryption_setup(connection_struct *conn,
-					unsigned char **ppdata,
-					size_t *p_data_size,
-					unsigned char **pparam,
-					size_t *p_param_size);
-NTSTATUS srv_encryption_start(connection_struct *conn);
-void server_encryption_shutdown(void);
-
-/* The following definitions come from smbd/sec_ctx.c  */
-
-bool unix_token_equal(const UNIX_USER_TOKEN *t1, const UNIX_USER_TOKEN *t2);
-bool push_sec_ctx(void);
-void set_sec_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups, NT_USER_TOKEN *token);
-void set_root_sec_ctx(void);
-bool pop_sec_ctx(void);
-void init_sec_ctx(void);
-
-/* The following definitions come from smbd/server.c  */
-
-int smbd_server_fd(void);
-int get_client_fd(void);
-int client_get_tcp_info(struct sockaddr_in *server, struct sockaddr_in *client);
-struct event_context *smbd_event_context(void);
-struct messaging_context *smbd_messaging_context(void);
-struct memcache *smbd_memcache(void);
-void reload_printers(void);
-bool reload_services(bool test);
-void exit_server(const char *const explanation);
-void exit_server_cleanly(const char *const explanation);
-void exit_server_fault(void);
-
-/* The following definitions come from smbd/service.c  */
-
-bool set_conn_connectpath(connection_struct *conn, const char *connectpath);
-bool set_current_service(connection_struct *conn, uint16 flags, bool do_chdir);
-void load_registry_shares(void);
-int add_home_service(const char *service, const char *username, const char *homedir);
-int find_service(fstring service);
-connection_struct *make_connection_with_chdir(const char *service_in,
-					      DATA_BLOB password, 
-					      const char *dev, uint16 vuid,
-					      NTSTATUS *status);
-connection_struct *make_connection(const char *service_in, DATA_BLOB password, 
-				   const char *pdev, uint16 vuid,
-				   NTSTATUS *status);
-void close_cnum(connection_struct *conn, uint16 vuid);
-
-/* The following definitions come from smbd/session.c  */
-
-bool session_init(void);
-bool session_claim(user_struct *vuser);
-void session_yield(user_struct *vuser);
-int list_sessions(TALLOC_CTX *mem_ctx, struct sessionid **session_list);
-
-/* The following definitions come from smbd/sesssetup.c  */
-
-NTSTATUS parse_spnego_mechanisms(DATA_BLOB blob_in,
-		DATA_BLOB *pblob_out,
-		char **kerb_mechOID);
-void reply_sesssetup_and_X(struct smb_request *req);
-
-/* The following definitions come from smbd/share_access.c  */
-
-bool token_contains_name_in_list(const char *username,
-				 const char *domain,
-				 const char *sharename,
-				 const struct nt_user_token *token,
-				 const char **list);
-bool user_ok_token(const char *username, const char *domain,
-		   struct nt_user_token *token, int snum);
-bool is_share_read_only_for_token(const char *username,
-				  const char *domain,
-				  struct nt_user_token *token, int snum);
-
-/* The following definitions come from smbd/srvstr.c  */
-
-size_t srvstr_push_fn(const char *function, unsigned int line,
-		      const char *base_ptr, uint16 smb_flags2, void *dest,
-		      const char *src, int dest_len, int flags);
-ssize_t message_push_string(uint8 **outbuf, const char *str, int flags);
-
-/* The following definitions come from smbd/statcache.c  */
-
-void stat_cache_add( const char *full_orig_name,
-		char *translated_path,
-		bool case_sensitive);
-bool stat_cache_lookup(connection_struct *conn,
-			char **pp_name,
-			char **pp_dirpath,
-			char **pp_start,
-			SMB_STRUCT_STAT *pst);
-void send_stat_cache_delete_message(const char *name);
-void stat_cache_delete(const char *name);
-unsigned int fast_string_hash(TDB_DATA *key);
-bool reset_stat_cache( void );
-
-/* The following definitions come from smbd/statvfs.c  */
-
-int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf);
-
-/* The following definitions come from smbd/trans2.c  */
-
-SMB_BIG_UINT smb_roundup(connection_struct *conn, SMB_BIG_UINT val);
-SMB_BIG_UINT get_allocation_size(connection_struct *conn, files_struct *fsp, const SMB_STRUCT_STAT *sbuf);
-NTSTATUS get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn,
-		      files_struct *fsp, const char *fname,
-		      const char *ea_name, struct ea_struct *pea);
-NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
-				files_struct *fsp, const char *fname,
-				char ***pnames, size_t *pnum_names);
-NTSTATUS set_ea(connection_struct *conn, files_struct *fsp, const char *fname, struct ea_list *ea_list);
-struct ea_list *read_ea_list_entry(TALLOC_CTX *ctx, const char *pdata, size_t data_size, size_t *pbytes_used);
-void send_trans2_replies(connection_struct *conn,
-			struct smb_request *req,
-			 const char *params,
-			 int paramsize,
-			 const char *pdata,
-			 int datasize,
-			 int max_data_bytes);
-unsigned char *create_volume_objectid(connection_struct *conn, unsigned char objid[16]);
-NTSTATUS hardlink_internals(TALLOC_CTX *ctx,
-		connection_struct *conn,
-		const char *oldname_in,
-		const char *newname_in);
-NTSTATUS smb_set_file_time(connection_struct *conn,
-			   files_struct *fsp,
-			   const char *fname,
-			   const SMB_STRUCT_STAT *psbuf,
-			   struct timespec ts[2],
-			   bool setting_write_time);
-void reply_findclose(struct smb_request *req);
-void reply_findnclose(struct smb_request *req);
-void reply_trans2(struct smb_request *req);
-void reply_transs2(struct smb_request *req);
-
-/* The following definitions come from smbd/uid.c  */
-
-bool change_to_guest(void);
-void conn_clear_vuid_cache(connection_struct *conn, uint16_t vuid);
-bool change_to_user(connection_struct *conn, uint16 vuid);
-bool change_to_root_user(void);
-bool become_authenticated_pipe_user(pipes_struct *p);
-bool unbecome_authenticated_pipe_user(void);
-void become_root(void);
-void unbecome_root(void);
-bool become_user(connection_struct *conn, uint16 vuid);
-bool unbecome_user(void);
-
-/* The following definitions come from smbd/utmp.c  */
-
-void sys_utmp_claim(const char *username, const char *hostname,
-			const char *ip_addr_str,
-			const char *id_str, int id_num);
-void sys_utmp_yield(const char *username, const char *hostname,
-			const char *ip_addr_str,
-			const char *id_str, int id_num);
-void sys_utmp_yield(const char *username, const char *hostname,
-			const char *ip_addr_str,
-			const char *id_str, int id_num);
-void sys_utmp_claim(const char *username, const char *hostname,
-			const char *ip_addr_str,
-			const char *id_str, int id_num);
-
-/* The following definitions come from smbd/vfs.c  */
-
-NTSTATUS smb_register_vfs(int version, const char *name, const vfs_op_tuple *vfs_op_tuples);
-bool vfs_init_custom(connection_struct *conn, const char *vfs_object);
-void *vfs_add_fsp_extension_notype(vfs_handle_struct *handle, files_struct *fsp, size_t ext_size);
-void vfs_remove_fsp_extension(vfs_handle_struct *handle, files_struct *fsp);
-void *vfs_memctx_fsp_extension(vfs_handle_struct *handle, files_struct *fsp);
-void *vfs_fetch_fsp_extension(vfs_handle_struct *handle, files_struct *fsp);
-bool smbd_vfs_init(connection_struct *conn);
-bool vfs_directory_exist(connection_struct *conn, const char *dname, SMB_STRUCT_STAT *st);
-bool vfs_object_exist(connection_struct *conn,const char *fname,SMB_STRUCT_STAT *sbuf);
-bool vfs_file_exist(connection_struct *conn, const char *fname,SMB_STRUCT_STAT *sbuf);
-ssize_t vfs_read_data(files_struct *fsp, char *buf, size_t byte_count);
-ssize_t vfs_pread_data(files_struct *fsp, char *buf,
-                size_t byte_count, SMB_OFF_T offset);
-ssize_t vfs_write_data(struct smb_request *req,
-			files_struct *fsp,
-			const char *buffer,
-			size_t N);
-ssize_t vfs_pwrite_data(struct smb_request *req,
-			files_struct *fsp,
-			const char *buffer,
-			size_t N,
-			SMB_OFF_T offset);
-int vfs_allocate_file_space(files_struct *fsp, SMB_BIG_UINT len);
-int vfs_set_filelen(files_struct *fsp, SMB_OFF_T len);
-int vfs_fill_sparse(files_struct *fsp, SMB_OFF_T len);
-SMB_OFF_T vfs_transfer_file(files_struct *in, files_struct *out, SMB_OFF_T n);
-char *vfs_readdirname(connection_struct *conn, void *p);
-int vfs_ChDir(connection_struct *conn, const char *path);
-char *vfs_GetWd(TALLOC_CTX *ctx, connection_struct *conn);
-NTSTATUS check_reduced_name(connection_struct *conn, const char *fname);
-
-/* The following definitions come from torture/denytest.c  */
-
-bool torture_denytest1(int dummy);
-bool torture_denytest2(int dummy);
-
-/* The following definitions come from torture/mangle_test.c  */
-
-bool torture_mangle(int dummy);
-
-/* The following definitions come from torture/nbio.c  */
-
-double nbio_total(void);
-void nb_alarm(int ignore);
-void nbio_shmem(int n);
-void nb_setup(struct cli_state *cli);
-void nb_unlink(const char *fname);
-void nb_createx(const char *fname, 
-		unsigned create_options, unsigned create_disposition, int handle);
-void nb_writex(int handle, int offset, int size, int ret_size);
-void nb_readx(int handle, int offset, int size, int ret_size);
-void nb_close(int handle);
-void nb_rmdir(const char *fname);
-void nb_rename(const char *oldname, const char *newname);
-void nb_qpathinfo(const char *fname);
-void nb_qfileinfo(int fnum);
-void nb_qfsinfo(int level);
-void nb_findfirst(const char *mask);
-void nb_flush(int fnum);
-void nb_deltree(const char *dname);
-void nb_cleanup(void);
-
-/* The following definitions come from torture/scanner.c  */
-
-bool torture_trans2_scan(int dummy);
-bool torture_nttrans_scan(int dummy);
-
-/* The following definitions come from torture/torture.c  */
-
-void start_timer(void);
-double end_timer(void);
-void *shm_setup(int size);
-bool smbcli_parse_unc(const char *unc_name, TALLOC_CTX *mem_ctx,
-		      char **hostname, char **sharename);
-void torture_open_connection_free_unclist(char **unc_list);
-bool torture_open_connection(struct cli_state **c, int conn_index);
-bool torture_cli_session_setup2(struct cli_state *cli, uint16 *new_vuid);
-bool torture_close_connection(struct cli_state *c);
-bool torture_ioctl_test(int dummy);
-bool torture_chkpath_test(int dummy);
-
-/* The following definitions come from torture/utable.c  */
-
-bool torture_utable(int dummy);
-bool torture_casetable(int dummy);
-
-/* The following definitions come from utils/passwd_util.c  */
-
-char *stdin_new_passwd( void);
-char *get_pass( const char *prompt, bool stdin_get);
-
-/* The following definitions come from winbindd/idmap.c  */
-
-bool idmap_is_offline(void);
-bool idmap_is_online(void);
-NTSTATUS smb_register_idmap(int version, const char *name,
-			    struct idmap_methods *methods);
-NTSTATUS smb_register_idmap_alloc(int version, const char *name,
-				  struct idmap_alloc_methods *methods);
-void idmap_close(void);
-NTSTATUS idmap_init_cache(void);
-NTSTATUS idmap_allocate_uid(struct unixid *id);
-NTSTATUS idmap_allocate_gid(struct unixid *id);
-NTSTATUS idmap_set_uid_hwm(struct unixid *id);
-NTSTATUS idmap_set_gid_hwm(struct unixid *id);
-NTSTATUS idmap_backends_unixid_to_sid(const char *domname,
-				      struct id_map *id);
-NTSTATUS idmap_backends_sid_to_unixid(const char *domname,
-				      struct id_map *id);
-NTSTATUS idmap_new_mapping(const struct dom_sid *psid, enum id_type type,
-			   struct unixid *pxid);
-NTSTATUS idmap_set_mapping(const struct id_map *map);
-
-/* The following definitions come from winbindd/idmap_cache.c  */
-
-bool idmap_cache_find_sid2uid(const struct dom_sid *sid, uid_t *puid,
-			      bool *expired);
-bool idmap_cache_find_uid2sid(uid_t uid, struct dom_sid *sid, bool *expired);
-void idmap_cache_set_sid2uid(const struct dom_sid *sid, uid_t uid);
-bool idmap_cache_find_sid2gid(const struct dom_sid *sid, gid_t *pgid,
-			      bool *expired);
-bool idmap_cache_find_gid2sid(gid_t gid, struct dom_sid *sid, bool *expired);
-void idmap_cache_set_sid2gid(const struct dom_sid *sid, gid_t gid);
-
-
-/* The following definitions come from winbindd/idmap_nss.c  */
-
-NTSTATUS idmap_nss_init(void);
-
-/* The following definitions come from winbindd/idmap_passdb.c  */
-
-NTSTATUS idmap_passdb_init(void);
-
-/* The following definitions come from winbindd/idmap_tdb.c  */
-
-bool idmap_tdb_tdb_close(TDB_CONTEXT *tdbctx);
-NTSTATUS idmap_alloc_tdb_init(void);
-NTSTATUS idmap_tdb_init(void);
-
-/* The following definitions come from winbindd/idmap_util.c  */
-
-NTSTATUS idmap_uid_to_sid(const char *domname, DOM_SID *sid, uid_t uid);
-NTSTATUS idmap_gid_to_sid(const char *domname, DOM_SID *sid, gid_t gid);
-NTSTATUS idmap_sid_to_uid(const char *dom_name, DOM_SID *sid, uid_t *uid);
-NTSTATUS idmap_sid_to_gid(const char *domname, DOM_SID *sid, gid_t *gid);
-
-/* The following definitions come from winbindd/nss_info.c  */
-
-
-/* The following definitions come from winbindd/nss_info_template.c  */
-
-NTSTATUS nss_info_template_init( void );
-
-#endif /*  _PROTO_H_  */

Modified: branches/samba/upstream/source/include/reg_objects.h
===================================================================
--- branches/samba/upstream/source/include/reg_objects.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/reg_objects.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -105,16 +105,9 @@
 #define KEY_CURRENT_VERSION	"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"
 #define KEY_PERFLIB		"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib"
 #define KEY_PERFLIB_009		"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009"
-#define KEY_GROUP_POLICY	"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Group Policy"
-#define KEY_WINLOGON		"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"
 #define KEY_SMBCONF		"HKLM\\SOFTWARE\\Samba\\smbconf"
-#define KEY_SAMBA_GROUP_POLICY	"HKLM\\SOFTWARE\\Samba\\Group Policy"
 #define KEY_TREE_ROOT		""
 
-#define KEY_GP_MACHINE_POLICY		"HKLM\\Software\\Policies"
-#define KEY_GP_MACHINE_WIN_POLICY	"HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies"
-#define KEY_GP_USER_POLICY		"HKCU\\Software\\Policies"
-#define KEY_GP_USER_WIN_POLICY		"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies"
 /*
  * Registry key types
  *	Most keys are going to be GENERIC -- may need a better name?

Modified: branches/samba/upstream/source/include/rpc_client.h
===================================================================
--- branches/samba/upstream/source/include/rpc_client.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/rpc_client.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -35,17 +35,15 @@
 #include "librpc/gen_ndr/cli_netlogon.h"
 #include "librpc/gen_ndr/cli_dssetup.h"
 #include "librpc/gen_ndr/cli_ntsvcs.h"
-#include "librpc/gen_ndr/cli_epmapper.h"
-#include "librpc/gen_ndr/cli_drsuapi.h"
 
 #define prs_init_empty( _ps_, _ctx_, _io_ ) (void) prs_init((_ps_), 0, (_ctx_), (_io_))
 
 /* macro to expand cookie-cutter code in cli_xxx() using rpc_api_pipe_req() */
 
-#define CLI_DO_RPC_INTERNAL( pcli, ctx, interface, opnum, q_in, r_out, \
+#define CLI_DO_RPC_INTERNAL( pcli, ctx, p_idx, opnum, q_in, r_out, \
                              q_ps, r_ps, q_io_fn, r_io_fn, default_error, copy_sess_key ) \
 {\
-	SMB_ASSERT(ndr_syntax_id_equal(&pcli->abstract_syntax, interface)); \
+	SMB_ASSERT(pcli->pipe_idx == p_idx); \
 	if (!prs_init( &q_ps, RPC_MAX_PDU_FRAG_LEN, ctx, MARSHALL )) { \
 		return NT_STATUS_NO_MEMORY;\
 	}\
@@ -90,10 +88,10 @@
 
 /* Arrrgg. Same but with WERRORS. Needed for registry code. */
 
-#define CLI_DO_RPC_WERR( pcli, ctx, interface, opnum, q_in, r_out, \
+#define CLI_DO_RPC_WERR( pcli, ctx, p_idx, opnum, q_in, r_out, \
                              q_ps, r_ps, q_io_fn, r_io_fn, default_error ) \
 {\
-	SMB_ASSERT(ndr_syntax_id_equal(&pcli->abstract_syntax, interface)); \
+	SMB_ASSERT(pcli->pipe_idx == p_idx); \
 	if (!prs_init( &q_ps, RPC_MAX_PDU_FRAG_LEN, ctx, MARSHALL )) { \
 		return WERR_NOMEM;\
 	}\

Modified: branches/samba/upstream/source/include/rpc_dce.h
===================================================================
--- branches/samba/upstream/source/include/rpc_dce.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/rpc_dce.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -157,12 +157,23 @@
 #define RPC_MAX_PDU_FRAG_LEN 0x10b8			/* this is what w2k sets */
 
 /* RPC_IFACE */
-typedef struct ndr_syntax_id RPC_IFACE;
+typedef struct rpc_iface_info {
+	struct GUID uuid;  /* 16 bytes of rpc interface identification */
+	uint32 version;    /* the interface version number */
+} RPC_IFACE;
 
-extern const struct ndr_syntax_id syntax_spoolss;
-
 #define RPC_IFACE_LEN (UUID_SIZE + 4)
 
+struct pipe_id_info {
+	/* the names appear not to matter: the syntaxes _do_ matter */
+
+	const char *client_pipe;
+	RPC_IFACE abstr_syntax; /* this one is the abstract syntax id */
+
+	const char *server_pipe;  /* this one is the secondary syntax name */
+	RPC_IFACE trans_syntax; /* this one is the primary syntax id */
+};
+
 /* RPC_HDR - dce rpc header */
 typedef struct rpc_hdr_info {
 	uint8  major; /* 5 - RPC major version */

Modified: branches/samba/upstream/source/include/rpc_ntsvcs.h
===================================================================
--- branches/samba/upstream/source/include/rpc_ntsvcs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/rpc_ntsvcs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -49,6 +49,8 @@
 
 /**************************/
 
+#define DEV_REGPROP_DESC	1
+
 typedef struct {
 	UNISTR2 devicepath;
 	uint32 property;

Modified: branches/samba/upstream/source/include/rpc_secdes.h
===================================================================
--- branches/samba/upstream/source/include/rpc_secdes.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/rpc_secdes.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -394,7 +394,6 @@
 
 /* Service Control Manager Bits */ 
 
-#if 0
 #define SC_RIGHT_MGR_CONNECT			0x0001
 #define SC_RIGHT_MGR_CREATE_SERVICE		0x0002
 #define SC_RIGHT_MGR_ENUMERATE_SERVICE		0x0004
@@ -402,8 +401,6 @@
 #define SC_RIGHT_MGR_QUERY_LOCK_STATUS		0x0010
 #define SC_RIGHT_MGR_MODIFY_BOOT_CONFIG		0x0020
 
-#endif
-
 #define SC_MANAGER_READ_ACCESS \
 	( STANDARD_RIGHTS_READ_ACCESS		| \
 	  SC_RIGHT_MGR_CONNECT			| \
@@ -421,9 +418,8 @@
 
 #define SC_MANAGER_ALL_ACCESS SC_MANAGER_WRITE_ACCESS
 
-/* Service Object Bits */
+/* Service Object Bits */ 
 
-#if 0
 #define SC_RIGHT_SVC_QUERY_CONFIG		0x0001
 #define SC_RIGHT_SVC_CHANGE_CONFIG		0x0002
 #define SC_RIGHT_SVC_QUERY_STATUS		0x0004
@@ -434,8 +430,6 @@
 #define SC_RIGHT_SVC_INTERROGATE		0x0080
 #define SC_RIGHT_SVC_USER_DEFINED_CONTROL	0x0100
 
-#endif
-
 #define SERVICE_READ_ACCESS \
 	( STANDARD_RIGHTS_READ_ACCESS		| \
 	  SC_RIGHT_SVC_ENUMERATE_DEPENDENTS	| \
@@ -458,6 +452,8 @@
 
 #define SERVICE_ALL_ACCESS SERVICE_WRITE_ACCESS
 
+	   
+
 /*
  * Access Bits for registry ACLS
  */

Modified: branches/samba/upstream/source/include/rpc_svcctl.h
===================================================================
--- branches/samba/upstream/source/include/rpc_svcctl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/rpc_svcctl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -216,7 +216,23 @@
 
 typedef struct {
 	POLICY_HND handle;
+	uint32 state;
 	uint32 buffer_size;
+} SVCCTL_Q_ENUM_DEPENDENT_SERVICES;
+
+typedef struct {
+	RPC_BUFFER buffer;
+	uint32 needed;
+	uint32 returned;
+	WERROR status;
+} SVCCTL_R_ENUM_DEPENDENT_SERVICES;
+
+
+/**************************/
+
+typedef struct {
+	POLICY_HND handle;
+	uint32 buffer_size;
 } SVCCTL_Q_QUERY_SERVICE_CONFIG;
 
 typedef struct {

Modified: branches/samba/upstream/source/include/smb.h
===================================================================
--- branches/samba/upstream/source/include/smb.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/smb.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -173,7 +173,41 @@
 
 /* pipe string names */
 #define PIPE_LANMAN   "\\PIPE\\LANMAN"
+#define PIPE_SRVSVC   "\\PIPE\\srvsvc"
+#define PIPE_SAMR     "\\PIPE\\samr"
+#define PIPE_WINREG   "\\PIPE\\winreg"
+#define PIPE_WKSSVC   "\\PIPE\\wkssvc"
+#define PIPE_NETLOGON "\\PIPE\\NETLOGON"
+#define PIPE_NTLSA    "\\PIPE\\ntlsa"
+#define PIPE_NTSVCS   "\\PIPE\\ntsvcs"
+#define PIPE_LSASS    "\\PIPE\\lsass"
+#define PIPE_LSARPC   "\\PIPE\\lsarpc"
+#define PIPE_SPOOLSS  "\\PIPE\\spoolss"
+#define PIPE_NETDFS   "\\PIPE\\netdfs"
+#define PIPE_ECHO     "\\PIPE\\rpcecho"
+#define PIPE_SHUTDOWN "\\PIPE\\initshutdown"
+#define PIPE_EPM      "\\PIPE\\epmapper"
+#define PIPE_SVCCTL   "\\PIPE\\svcctl"
+#define PIPE_EVENTLOG "\\PIPE\\eventlog"
 
+#define PIPE_NETLOGON_PLAIN "\\NETLOGON"
+
+#define PI_LSARPC		0
+#define PI_DSSETUP		1
+#define PI_SAMR			2
+#define PI_NETLOGON		3
+#define PI_SRVSVC		4
+#define PI_WKSSVC		5
+#define PI_WINREG		6
+#define PI_SPOOLSS		7
+#define PI_NETDFS		8
+#define PI_RPCECHO 		9
+#define PI_INITSHUTDOWN		10
+#define PI_SVCCTL		11
+#define PI_EVENTLOG 		12
+#define PI_NTSVCS		13
+#define PI_MAX_PIPES		14
+
 /* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
 typedef uint64_t NTTIME;
 
@@ -273,13 +307,10 @@
 #include "librpc/gen_ndr/netlogon.h"
 #include "librpc/gen_ndr/samr.h"
 #include "librpc/gen_ndr/dssetup.h"
-#include "librpc/gen_ndr/epmapper.h"
 #include "librpc/gen_ndr/libnet_join.h"
 #include "librpc/gen_ndr/krb5pac.h"
 #include "librpc/gen_ndr/ntsvcs.h"
 #include "librpc/gen_ndr/nbt.h"
-#include "librpc/gen_ndr/drsuapi.h"
-#include "librpc/gen_ndr/drsblobs.h"
 
 struct lsa_dom_info {
 	bool valid;
@@ -341,10 +372,10 @@
 	SE_PRIV privileges;
 } NT_USER_TOKEN;
 
-typedef struct unix_user_token {
+typedef struct _unix_token {
 	uid_t uid;
 	gid_t gid;
-	size_t ngroups;
+	int ngroups;
 	gid_t *groups;
 } UNIX_USER_TOKEN;
 
@@ -477,6 +508,7 @@
 	bool print_file;
 	bool modified;
 	bool is_directory;
+	bool is_stat;
 	bool aio_write_behind;
 	bool lockdb_clean;
 	bool initial_delete_on_close; /* Only set at NTCreateX if file was created. */
@@ -484,7 +516,7 @@
 	char *fsp_name;
 
 	struct vfs_fsp_data *vfs_extension;
-	struct fake_file_handle *fake_file_handle;
+ 	FAKE_FILE_HANDLE *fake_file_handle;
 
 	struct notify_change_buf *notify;
 
@@ -494,15 +526,24 @@
 #include "ntquotas.h"
 #include "sysquotas.h"
 
+/*
+ * Structure used to keep directory state information around.
+ * Used in NT change-notify code.
+ */
+
+typedef struct {
+	time_t modify_time;
+	time_t status_time;
+} dir_status_struct;
+
 struct vuid_cache_entry {
-	struct auth_serversupplied_info *server_info;
-	uint16_t vuid;
+	uint16 vuid;
 	bool read_only;
 	bool admin_user;
 };
 
 struct vuid_cache {
-	unsigned int next_entry;
+	unsigned int entries;
 	struct vuid_cache_entry array[VUID_CACHE_SIZE];
 };
 
@@ -576,9 +617,11 @@
 
 typedef struct connection_struct {
 	struct connection_struct *next, *prev;
+	TALLOC_CTX *mem_ctx; /* long-lived memory context for things hanging off this struct. */
 	unsigned cnum; /* an index passed over the wire */
 	struct share_params *params;
 	bool force_user;
+	bool force_group;
 	struct vuid_cache vuid_cache;
 	struct dptr_struct *dirptr;
 	bool printer;
@@ -593,16 +636,20 @@
 	struct vfs_ops vfs_opaque;			/* OPAQUE Filesystem operations */
 	struct vfs_handle_struct *vfs_handles;		/* for the new plugins */
 
-	/*
-	 * This represents the user information on this connection. Depending
-	 * on the vuid using this tid, this might change per SMB request.
-	 */
-	struct auth_serversupplied_info *server_info;
-
+	char *user; /* name of user who *opened* this connection */
+	uid_t uid; /* uid of user who *opened* this connection */
+	gid_t gid; /* gid of user who *opened* this connection */
 	char client_address[INET6_ADDRSTRLEN]; /* String version of client IP address. */
 
 	uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
 
+	/* following groups stuff added by ih */
+
+	/* This groups info is valid for the user that *opened* the connection */
+	size_t ngroups;
+	gid_t *groups;
+	NT_USER_TOKEN *nt_user_token;
+	
 	time_t lastused;
 	time_t lastused_count;
 	bool used;
@@ -1740,7 +1787,25 @@
 typedef struct user_struct {
 	struct user_struct *next, *prev;
 	uint16 vuid; /* Tag for this entry. */
+	uid_t uid; /* uid of a validated user */
+	gid_t gid; /* gid of a validated user */
 
+	userdom_struct user;
+	const char *homedir;
+	const char *unix_homedir;
+	const char *logon_script;
+	
+	bool guest;
+
+	/* following groups stuff added by ih */
+	/* This groups info is needed for when we become_user() for this uid */
+	int n_groups;
+	gid_t *groups;
+
+	NT_USER_TOKEN *nt_user_token;
+
+	DATA_BLOB session_key;
+
 	char *session_keystr; /* used by utmp and pam session code.  
 				 TDB key string */
 	int homes_snum;
@@ -1817,7 +1882,6 @@
 #ifndef LDAP_PORT
 #define LDAP_PORT	389
 #endif
-#define LDAP_GC_PORT    3268
 
 /* used by the IP comparison function */
 struct ip_service {

Modified: branches/samba/upstream/source/include/smb_macros.h
===================================================================
--- branches/samba/upstream/source/include/smb_macros.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/smb_macros.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -75,6 +75,8 @@
 				return ERROR_NT(NT_STATUS_INVALID_HANDLE); \
 			} while(0)
 
+#define FNUM_OK(fsp,c) ((fsp) && !(fsp)->is_directory && (c)==(fsp)->conn && current_user.vuid==(fsp)->vuid)
+
 /* you must add the following extern declaration to files using this macro
  * (do not add it to the macro as that causes nested extern declaration warnings)
  * extern struct current_user current_user;

Modified: branches/samba/upstream/source/include/smbldap.h
===================================================================
--- branches/samba/upstream/source/include/smbldap.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/smbldap.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -218,13 +218,6 @@
 			      LDAPMessage *entry);
 
 
-#else
-#define LDAP void
-#define LDAPMod void
-#define LDAP_CONST const
-#define LDAPControl void
-struct berval;
-struct ldapsam_privates;
 #endif 	/* HAVE_LDAP */
 
 #define LDAP_DEFAULT_TIMEOUT   15

Modified: branches/samba/upstream/source/include/smbprofile.h
===================================================================
--- branches/samba/upstream/source/include/smbprofile.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/smbprofile.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -631,6 +631,10 @@
 #define fget_nt_acl_count __profile_stats_value(PR_VALUE_FGET_NT_ACL, count)
 #define fget_nt_acl_time __profile_stats_value(PR_VALUE_FGET_NT_ACL, time)
 
+	PR_VALUE_SET_NT_ACL,
+#define set_nt_acl_count __profile_stats_value(PR_VALUE_SET_NT_ACL, count)
+#define set_nt_acl_time __profile_stats_value(PR_VALUE_SET_NT_ACL, time)
+
 	PR_VALUE_FSET_NT_ACL,
 #define fset_nt_acl_count __profile_stats_value(PR_VALUE_FSET_NT_ACL, count)
 #define fset_nt_acl_time __profile_stats_value(PR_VALUE_FSET_NT_ACL, time)

Modified: branches/samba/upstream/source/include/version.h
===================================================================
--- branches/samba/upstream/source/include/version.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/version.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,7 +1,6 @@
 /* Autogenerated by script/mkversion.sh */
 #define SAMBA_VERSION_MAJOR 3
-#define SAMBA_VERSION_MINOR 3
-#define SAMBA_VERSION_RELEASE 0
-#define SAMBA_VERSION_PRE_RELEASE 2
-#define SAMBA_VERSION_OFFICIAL_STRING "3.3.0pre2"
+#define SAMBA_VERSION_MINOR 2
+#define SAMBA_VERSION_RELEASE 4
+#define SAMBA_VERSION_OFFICIAL_STRING "3.2.4"
 #define SAMBA_VERSION_STRING samba_version_string()

Modified: branches/samba/upstream/source/include/vfs.h
===================================================================
--- branches/samba/upstream/source/include/vfs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/vfs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -106,10 +106,8 @@
 /* Leave at 22 - not yet released. Additional change: add operations for offline files -- ab */
 /* Leave at 22 - not yet released. Add the streaminfo call. -- jpeach, vl */
 /* Leave at 22 - not yet released. Remove parameter fd from close_fn. - obnox */
-/* Changed to version 23 - remove set_nt_acl call. This can only be done via an
-   open handle. JRA. */
 
-#define SMB_VFS_INTERFACE_VERSION 23
+#define SMB_VFS_INTERFACE_VERSION 22
 
 
 /* to bug old modules which are trying to compile with the old functions */
@@ -210,6 +208,7 @@
 	SMB_VFS_OP_FGET_NT_ACL,
 	SMB_VFS_OP_GET_NT_ACL,
 	SMB_VFS_OP_FSET_NT_ACL,
+	SMB_VFS_OP_SET_NT_ACL,
 
 	/* POSIX ACL operations. */
 
@@ -366,6 +365,11 @@
 					struct files_struct *fsp,
 					uint32 security_info_sent,
 					struct security_descriptor *psd);
+		NTSTATUS (*set_nt_acl)(struct vfs_handle_struct *handle,
+				       struct files_struct *fsp,
+				       const char *name,
+				       uint32 security_info_sent,
+				       struct security_descriptor *psd);
 
 		/* POSIX ACL operations. */
 
@@ -492,6 +496,7 @@
 		struct vfs_handle_struct *fget_nt_acl;
 		struct vfs_handle_struct *get_nt_acl;
 		struct vfs_handle_struct *fset_nt_acl;
+		struct vfs_handle_struct *set_nt_acl;
 
 		/* POSIX ACL operations. */
 

Modified: branches/samba/upstream/source/include/vfs_macros.h
===================================================================
--- branches/samba/upstream/source/include/vfs_macros.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/include/vfs_macros.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -89,6 +89,7 @@
 #define SMB_VFS_FGET_NT_ACL(fsp, security_info, ppdesc) ((fsp)->conn->vfs.ops.fget_nt_acl((fsp)->conn->vfs.handles.fget_nt_acl, (fsp), (security_info), (ppdesc)))
 #define SMB_VFS_GET_NT_ACL(conn, name, security_info, ppdesc) ((conn)->vfs.ops.get_nt_acl((conn)->vfs.handles.get_nt_acl, (name), (security_info), (ppdesc)))
 #define SMB_VFS_FSET_NT_ACL(fsp, security_info_sent, psd) ((fsp)->conn->vfs.ops.fset_nt_acl((fsp)->conn->vfs.handles.fset_nt_acl, (fsp), (security_info_sent), (psd)))
+#define SMB_VFS_SET_NT_ACL(fsp, name, security_info_sent, psd) ((fsp)->conn->vfs.ops.set_nt_acl((fsp)->conn->vfs.handles.set_nt_acl, (fsp), (name), (security_info_sent), (psd)))
 
 /* POSIX ACL operations. */
 #define SMB_VFS_CHMOD_ACL(conn, name, mode) ((conn)->vfs.ops.chmod_acl((conn)->vfs.handles.chmod_acl, (name), (mode)))
@@ -214,6 +215,7 @@
 #define SMB_VFS_OPAQUE_FGET_NT_ACL(fsp, security_info, ppdesc) ((fsp)->conn->vfs_opaque.ops.fget_nt_acl((fsp)->conn->vfs_opaque.handles.fget_nt_acl, (fsp), (security_info), (ppdesc)))
 #define SMB_VFS_OPAQUE_GET_NT_ACL(conn, name, security_info, ppdesc) ((conn)->vfs_opaque.ops.get_nt_acl((conn)->vfs_opaque.handles.get_nt_acl, (name), (security_info), (ppdesc)))
 #define SMB_VFS_OPAQUE_FSET_NT_ACL(fsp, security_info_sent, psd) ((fsp)->conn->vfs_opaque.ops.fset_nt_acl((fsp)->conn->vfs_opaque.handles.fset_nt_acl, (fsp), (security_info_sent), (psd)))
+#define SMB_VFS_OPAQUE_SET_NT_ACL(fsp, name, security_info_sent, psd) ((fsp)->conn->vfs_opaque.ops.set_nt_acl((fsp)->conn->vfs_opaque.handles.set_nt_acl, (fsp), (name), (security_info_sent), (psd)))
 
 /* POSIX ACL operations. */
 #define SMB_VFS_OPAQUE_CHMOD_ACL(conn, name, mode) ((conn)->vfs_opaque.ops.chmod_acl((conn)->vfs_opaque.handles.chmod_acl, (name), (mode)))
@@ -340,6 +342,7 @@
 #define SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, ppdesc) ((handle)->vfs_next.ops.fget_nt_acl((handle)->vfs_next.handles.fget_nt_acl, (fsp), (security_info), (ppdesc)))
 #define SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info, ppdesc) ((handle)->vfs_next.ops.get_nt_acl((handle)->vfs_next.handles.get_nt_acl, (name), (security_info), (ppdesc)))
 #define SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, security_info_sent, psd) ((handle)->vfs_next.ops.fset_nt_acl((handle)->vfs_next.handles.fset_nt_acl, (fsp), (security_info_sent), (psd)))
+#define SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent, psd) ((handle)->vfs_next.ops.set_nt_acl((handle)->vfs_next.handles.set_nt_acl, (fsp), (name), (security_info_sent), (psd)))
 
 /* POSIX ACL operations. */
 #define SMB_VFS_NEXT_CHMOD_ACL(handle, name, mode) ((handle)->vfs_next.ops.chmod_acl((handle)->vfs_next.handles.chmod_acl, (name), (mode)))

Modified: branches/samba/upstream/source/lib/access.c
===================================================================
--- branches/samba/upstream/source/lib/access.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/access.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -175,7 +175,7 @@
 }
 
 /* client_match - match host name and address against token */
-bool client_match(const char *tok, const void *item)
+static bool client_match(const char *tok, const void *item)
 {
 	const char **client = (const char **)item;
 
@@ -211,7 +211,7 @@
 }
 
 /* list_match - match an item against a list of tokens with exceptions */
-bool list_match(const char **list,const void *item,
+static bool list_match(const char **list,const void *item,
 		bool (*match_fn)(const char *, const void *))
 {
 	bool match = false;

Modified: branches/samba/upstream/source/lib/account_pol.c
===================================================================
--- branches/samba/upstream/source/lib/account_pol.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/account_pol.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -212,12 +212,12 @@
 		return True;
 	}
 
-	db = db_open(NULL, state_path("account_policy.tdb"), 0, TDB_DEFAULT,
+	db = db_open_trans(NULL, state_path("account_policy.tdb"), 0, TDB_DEFAULT,
 		     O_RDWR, 0600);
 
 	if (db == NULL) { /* the account policies files does not exist or open
 			   * failed, try to create a new one */
-		db = db_open(NULL, state_path("account_policy.tdb"), 0,
+		db = db_open_trans(NULL, state_path("account_policy.tdb"), 0,
 			     TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 		if (db == NULL) {
 			DEBUG(0,("Failed to open account policy database\n"));
@@ -283,8 +283,7 @@
 
 	if (db->transaction_commit(db) != 0) {
 		DEBUG(0, ("transaction_commit failed\n"));
-		TALLOC_FREE(db);
-		return false;
+		goto cancel;
 	}
 
 	return True;

Modified: branches/samba/upstream/source/lib/afs.c
===================================================================
--- branches/samba/upstream/source/lib/afs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/afs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -213,6 +213,8 @@
 
 bool afs_login(connection_struct *conn)
 {
+	extern userdom_struct current_user_info;
+	extern struct current_user current_user;
 	DATA_BLOB ticket;
 	char *afs_username = NULL;
 	char *cell = NULL;
@@ -232,14 +234,14 @@
 	afs_username = talloc_sub_advanced(ctx,
 				SNUM(conn), conn->user,
 				conn->connectpath, conn->gid,
-				conn->server_info->sanitized_username,
-				pdb_get_domain(conn->server_info->sam_account),
+				get_current_username(),
+				current_user_info.domain,
 				afs_username);
 	if (!afs_username) {
 		return false;
 	}
 
-	user_sid = &conn->server_info->ptok->user_sids[0];
+	user_sid = &current_user.nt_user_token->user_sids[0];
 	afs_username = talloc_string_sub(talloc_tos(),
 					afs_username,
 					"%s",
@@ -292,7 +294,7 @@
 
 char *afs_createtoken_str(const char *username, const char *cell)
 {
-	return NULL;
+	return False;
 }
 
 #endif /* WITH_FAKE_KASERVER */

Modified: branches/samba/upstream/source/lib/async_req.c
===================================================================
--- branches/samba/upstream/source/lib/async_req.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/async_req.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -19,20 +19,6 @@
 
 #include "includes.h"
 
-/**
- * @brief Print an async_req structure
- * @param[in] mem_ctx	The memory context for the result
- * @param[in] req	The request to be printed
- * @retval		Text representation of req
- *
- * This is a default print function for async requests. Implementations should
- * override this with more specific information.
- *
- * This function should not be used by async API users, this is non-static
- * only to allow implementations to easily provide default information in
- * their specific functions.
- */
-
 char *async_req_print(TALLOC_CTX *mem_ctx, struct async_req *req)
 {
 	return talloc_asprintf(mem_ctx, "async_req: state=%d, status=%s, "
@@ -40,15 +26,6 @@
 			       talloc_get_name(req->private_data));
 }
 
-/**
- * @brief Create an async request
- * @param[in] mem_ctx	The memory context for the result
- * @param[in] ev	The event context this async request will be driven by
- * @retval		A new async request
- *
- * The new async request will be initialized in state ASYNC_REQ_IN_PROGRESS
- */
-
 struct async_req *async_req_new(TALLOC_CTX *mem_ctx, struct event_context *ev)
 {
 	struct async_req *result;
@@ -63,15 +40,6 @@
 	return result;
 }
 
-/**
- * @brief An async request has successfully finished
- * @param[in] req	The finished request
- *
- * async_req_done is to be used by implementors of async requests. When a
- * request is successfully finished, this function calls the user's completion
- * function.
- */
-
 void async_req_done(struct async_req *req)
 {
 	req->status = NT_STATUS_OK;
@@ -81,16 +49,6 @@
 	}
 }
 
-/**
- * @brief An async request has seen an error
- * @param[in] req	The request with an error
- * @param[in] status	The error code
- *
- * async_req_done is to be used by implementors of async requests. When a
- * request can not successfully completed, the implementation should call this
- * function with the appropriate status code.
- */
-
 void async_req_error(struct async_req *req, NTSTATUS status)
 {
 	req->status = status;
@@ -100,14 +58,6 @@
 	}
 }
 
-/**
- * @brief Timed event callback
- * @param[in] ev	Event context
- * @param[in] te	The timed event
- * @param[in] now	current time
- * @param[in] priv	The async request to be finished
- */
-
 static void async_trigger(struct event_context *ev, struct timed_event *te,
 			  const struct timeval *now, void *priv)
 {
@@ -122,21 +72,12 @@
 	}
 }
 
-/**
- * @brief Finish a request before it started processing
- * @param[in] req	The finished request
- * @param[in] status	The success code
- *
- * An implementation of an async request might find that it can either finish
- * the request without waiting for an external event, or it can't even start
- * the engine. To present the illusion of a callback to the user of the API,
- * the implementation can call this helper function which triggers an
- * immediate timed event. This way the caller can use the same calling
- * conventions, independent of whether the request was actually deferred.
- */
-
 bool async_post_status(struct async_req *req, NTSTATUS status)
 {
+	/*
+	 * Used if a request is finished before it even started
+	 */
+
 	req->status = status;
 
 	if (event_add_timed(req->event_ctx, req, timeval_zero(),
@@ -147,23 +88,6 @@
 	return true;
 }
 
-/**
- * @brief Helper function for nomem check
- * @param[in] p		The pointer to be checked
- * @param[in] req	The request being processed
- *
- * Convenience helper to easily check alloc failure within a callback
- * implementing the next step of an async request.
- *
- * Call pattern would be
- * \code
- * p = talloc(mem_ctx, bla);
- * if (async_req_nomem(p, req)) {
- *	return;
- * }
- * \endcode
- */
-
 bool async_req_nomem(const void *p, struct async_req *req)
 {
 	if (p != NULL) {

Deleted: branches/samba/upstream/source/lib/async_sock.c
===================================================================
--- branches/samba/upstream/source/lib/async_sock.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/async_sock.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,674 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   async socket syscalls
-   Copyright (C) Volker Lendecke 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-
-/**
- * Discriminator for async_syscall_state
- */
-enum async_syscall_type {
-	ASYNC_SYSCALL_SEND,
-	ASYNC_SYSCALL_SENDALL,
-	ASYNC_SYSCALL_RECV,
-	ASYNC_SYSCALL_RECVALL,
-	ASYNC_SYSCALL_CONNECT
-};
-
-/**
- * Holder for syscall arguments and the result
- */
-
-struct async_syscall_state {
-	enum async_syscall_type syscall_type;
-	struct fd_event *fde;
-
-	union {
-		struct param_send {
-			int fd;
-			const void *buffer;
-			size_t length;
-			int flags;
-		} param_send;
-		struct param_sendall {
-			int fd;
-			const void *buffer;
-			size_t length;
-			int flags;
-			size_t sent;
-		} param_sendall;
-		struct param_recv {
-			int fd;
-			void *buffer;
-			size_t length;
-			int flags;
-		} param_recv;
-		struct param_recvall {
-			int fd;
-			void *buffer;
-			size_t length;
-			int flags;
-			size_t received;
-		} param_recvall;
-		struct param_connect {
-			/**
-			 * connect needs to be done on a nonblocking
-			 * socket. Keep the old flags around
-			 */
-			long old_sockflags;
-			int fd;
-			const struct sockaddr *address;
-			socklen_t address_len;
-		} param_connect;
-	} param;
-
-	union {
-		ssize_t result_ssize_t;
-		size_t result_size_t;
-		int result_int;
-	} result;
-	int sys_errno;
-};
-
-/**
- * @brief Create a new async syscall req
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] type	Which syscall will this be
- * @param[in] pstate	Where to put the newly created private_data state
- * @retval The new request
- *
- * This is a helper function to prepare a new struct async_req with an
- * associated struct async_syscall_state. The async_syscall_state will be put
- * into the async_req as private_data.
- */
-
-static struct async_req *async_syscall_new(TALLOC_CTX *mem_ctx,
-					   struct event_context *ev,
-					   enum async_syscall_type type,
-					   struct async_syscall_state **pstate)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-
-	result = async_req_new(mem_ctx, ev);
-	if (result == NULL) {
-		return NULL;
-	}
-
-	state = talloc(result, struct async_syscall_state);
-	if (state == NULL) {
-		TALLOC_FREE(result);
-		return NULL;
-	}
-
-	state->syscall_type = type;
-
-	result->private_data = state;
-
-	*pstate = state;
-
-	return result;
-}
-
-/**
- * @brief Create a new async syscall req based on a fd
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] type	Which syscall will this be
- * @param[in] fd	The file descriptor we work on
- * @param[in] fde_flags EVENT_FD_READ/WRITE -- what are we interested in?
- * @param[in] fde_cb	The callback function for the file descriptor event
- * @param[in] pstate	Where to put the newly created private_data state
- * @retval The new request
- *
- * This is a helper function to prepare a new struct async_req with an
- * associated struct async_syscall_state and an associated file descriptor
- * event.
- */
-
-static struct async_req *async_fde_syscall_new(
-	TALLOC_CTX *mem_ctx,
-	struct event_context *ev,
-	enum async_syscall_type type,
-	int fd,
-	uint16_t fde_flags,
-	void (*fde_cb)(struct event_context *ev,
-		       struct fd_event *fde, uint16_t flags,
-		       void *priv),
-	struct async_syscall_state **pstate)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-
-	result = async_syscall_new(mem_ctx, ev, type, &state);
-	if (result == NULL) {
-		return NULL;
-	}
-
-	state->fde = event_add_fd(ev, state, fd, fde_flags, fde_cb, result);
-	if (state->fde == NULL) {
-		TALLOC_FREE(result);
-		return NULL;
-	}
-	*pstate = state;
-	return result;
-}
-
-/**
- * Retrieve a ssize_t typed result from an async syscall
- * @param[in] req	The syscall that has just finished
- * @param[out] perrno	Where to put the syscall's errno
- * @retval The return value from the asynchronously called syscall
- */
-
-ssize_t async_syscall_result_ssize_t(struct async_req **req, int *perrno)
-{
-	struct async_syscall_state *state = talloc_get_type_abort(
-		(*req)->private_data, struct async_syscall_state);
-
-	int sys_errno = state->sys_errno;
-	ssize_t result = state->result.result_ssize_t;
-
-	TALLOC_FREE(*req);
-
-	*perrno = sys_errno;
-	return result;
-}
-
-/**
- * Retrieve a size_t typed result from an async syscall
- * @param[in] req	The syscall that has just finished
- * @param[out] perrno	Where to put the syscall's errno
- * @retval The return value from the asynchronously called syscall
- */
-
-size_t async_syscall_result_size_t(struct async_req **req, int *perrno)
-{
-	struct async_syscall_state *state = talloc_get_type_abort(
-		(*req)->private_data, struct async_syscall_state);
-
-	int sys_errno = state->sys_errno;
-	size_t result = state->result.result_ssize_t;
-
-	TALLOC_FREE(*req);
-
-	*perrno = sys_errno;
-	return result;
-}
-
-/**
- * Retrieve a int typed result from an async syscall
- * @param[in] req	The syscall that has just finished
- * @param[out] perrno	Where to put the syscall's errno
- * @retval The return value from the asynchronously called syscall
- */
-
-ssize_t async_syscall_result_int(struct async_req **req, int *perrno)
-{
-	struct async_syscall_state *state = talloc_get_type_abort(
-		(*req)->private_data, struct async_syscall_state);
-
-	int sys_errno = state->sys_errno;
-	int result = state->result.result_ssize_t;
-
-	TALLOC_FREE(*req);
-
-	*perrno = sys_errno;
-	return result;
-}
-
-/**
- * fde event handler for the "send" syscall
- * @param[in] ev	The event context that sent us here
- * @param[in] fde	The file descriptor event associated with the send
- * @param[in] flags	Can only be EVENT_FD_WRITE here
- * @param[in] priv	private data, "struct async_req *" in this case
- */
-
-static void async_send_callback(struct event_context *ev,
-				struct fd_event *fde, uint16_t flags,
-				void *priv)
-{
-	struct async_req *req = talloc_get_type_abort(
-		priv, struct async_req);
-	struct async_syscall_state *state = talloc_get_type_abort(
-		req->private_data, struct async_syscall_state);
-	struct param_send *p = &state->param.param_send;
-
-	SMB_ASSERT(state->syscall_type == ASYNC_SYSCALL_SEND);
-
-	state->result.result_ssize_t = send(p->fd, p->buffer, p->length,
-					    p->flags);
-	state->sys_errno = errno;
-
-	TALLOC_FREE(state->fde);
-
-	async_req_done(req);
-}
-
-/**
- * Async version of send(2)
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] fd	The socket to send to
- * @param[in] buffer	The buffer to send
- * @param[in] length	How many bytes to send
- * @param[in] flags	flags passed to send(2)
- *
- * This function is a direct counterpart of send(2)
- */
-
-struct async_req *async_send(TALLOC_CTX *mem_ctx, struct event_context *ev,
-			     int fd, const void *buffer, size_t length,
-			     int flags)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-
-	result = async_fde_syscall_new(
-		mem_ctx, ev, ASYNC_SYSCALL_SEND,
-		fd, EVENT_FD_WRITE, async_send_callback,
-		&state);
-	if (result == NULL) {
-		return NULL;
-	}
-
-	state->param.param_send.fd = fd;
-	state->param.param_send.buffer = buffer;
-	state->param.param_send.length = length;
-	state->param.param_send.flags = flags;
-
-	return result;
-}
-
-/**
- * fde event handler for the "sendall" syscall group
- * @param[in] ev	The event context that sent us here
- * @param[in] fde	The file descriptor event associated with the send
- * @param[in] flags	Can only be EVENT_FD_WRITE here
- * @param[in] priv	private data, "struct async_req *" in this case
- */
-
-static void async_sendall_callback(struct event_context *ev,
-				   struct fd_event *fde, uint16_t flags,
-				   void *priv)
-{
-	struct async_req *req = talloc_get_type_abort(
-		priv, struct async_req);
-	struct async_syscall_state *state = talloc_get_type_abort(
-		req->private_data, struct async_syscall_state);
-	struct param_sendall *p = &state->param.param_sendall;
-
-	SMB_ASSERT(state->syscall_type == ASYNC_SYSCALL_SENDALL);
-
-	state->result.result_ssize_t = send(p->fd, (char *)p->buffer + p->sent,
-					    p->length - p->sent, p->flags);
-	state->sys_errno = errno;
-
-	if (state->result.result_ssize_t == -1) {
-		async_req_error(req, map_nt_error_from_unix(state->sys_errno));
-		return;
-	}
-
-	if (state->result.result_ssize_t == 0) {
-		async_req_error(req, NT_STATUS_END_OF_FILE);
-		return;
-	}
-
-	p->sent += state->result.result_ssize_t;
-	SMB_ASSERT(p->sent <= p->length);
-
-	if (p->sent == p->length) {
-		TALLOC_FREE(state->fde);
-		async_req_done(req);
-	}
-}
-
-/**
- * @brief Send all bytes to a socket
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] fd	The socket to send to
- * @param[in] buffer	The buffer to send
- * @param[in] length	How many bytes to send
- * @param[in] flags	flags passed to send(2)
- *
- * async_sendall calls send(2) as long as it is necessary to send all of the
- * "length" bytes
- */
-
-struct async_req *async_sendall(TALLOC_CTX *mem_ctx, struct event_context *ev,
-				int fd, const void *buffer, size_t length,
-				int flags)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-
-	result = async_fde_syscall_new(
-		mem_ctx, ev, ASYNC_SYSCALL_SENDALL,
-		fd, EVENT_FD_WRITE, async_sendall_callback,
-		&state);
-	if (result == NULL) {
-		return NULL;
-	}
-
-	state->param.param_sendall.fd = fd;
-	state->param.param_sendall.buffer = buffer;
-	state->param.param_sendall.length = length;
-	state->param.param_sendall.flags = flags;
-	state->param.param_sendall.sent = 0;
-
-	return result;
-}
-
-/**
- * fde event handler for the "recv" syscall
- * @param[in] ev	The event context that sent us here
- * @param[in] fde	The file descriptor event associated with the recv
- * @param[in] flags	Can only be EVENT_FD_READ here
- * @param[in] priv	private data, "struct async_req *" in this case
- */
-
-static void async_recv_callback(struct event_context *ev,
-				struct fd_event *fde, uint16_t flags,
-				void *priv)
-{
-	struct async_req *req = talloc_get_type_abort(
-		priv, struct async_req);
-	struct async_syscall_state *state = talloc_get_type_abort(
-		req->private_data, struct async_syscall_state);
-	struct param_recv *p = &state->param.param_recv;
-
-	SMB_ASSERT(state->syscall_type == ASYNC_SYSCALL_RECV);
-
-	state->result.result_ssize_t = recv(p->fd, p->buffer, p->length,
-					    p->flags);
-	state->sys_errno = errno;
-
-	TALLOC_FREE(state->fde);
-
-	async_req_done(req);
-}
-
-/**
- * Async version of recv(2)
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] fd	The socket to recv from
- * @param[in] buffer	The buffer to recv into
- * @param[in] length	How many bytes to recv
- * @param[in] flags	flags passed to recv(2)
- *
- * This function is a direct counterpart of recv(2)
- */
-
-struct async_req *async_recv(TALLOC_CTX *mem_ctx, struct event_context *ev,
-			     int fd, void *buffer, size_t length,
-			     int flags)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-
-	result = async_fde_syscall_new(
-		mem_ctx, ev, ASYNC_SYSCALL_RECV,
-		fd, EVENT_FD_READ, async_recv_callback,
-		&state);
-
-	if (result == NULL) {
-		return NULL;
-	}
-
-	state->param.param_recv.fd = fd;
-	state->param.param_recv.buffer = buffer;
-	state->param.param_recv.length = length;
-	state->param.param_recv.flags = flags;
-
-	return result;
-}
-
-/**
- * fde event handler for the "recvall" syscall group
- * @param[in] ev	The event context that sent us here
- * @param[in] fde	The file descriptor event associated with the recv
- * @param[in] flags	Can only be EVENT_FD_READ here
- * @param[in] priv	private data, "struct async_req *" in this case
- */
-
-static void async_recvall_callback(struct event_context *ev,
-				   struct fd_event *fde, uint16_t flags,
-				   void *priv)
-{
-	struct async_req *req = talloc_get_type_abort(
-		priv, struct async_req);
-	struct async_syscall_state *state = talloc_get_type_abort(
-		req->private_data, struct async_syscall_state);
-	struct param_recvall *p = &state->param.param_recvall;
-
-	SMB_ASSERT(state->syscall_type == ASYNC_SYSCALL_RECVALL);
-
-	state->result.result_ssize_t = recv(p->fd,
-					    (char *)p->buffer + p->received,
-					    p->length - p->received, p->flags);
-	state->sys_errno = errno;
-
-	if (state->result.result_ssize_t == -1) {
-		async_req_error(req, map_nt_error_from_unix(state->sys_errno));
-		return;
-	}
-
-	if (state->result.result_ssize_t == 0) {
-		async_req_error(req, NT_STATUS_END_OF_FILE);
-		return;
-	}
-
-	p->received += state->result.result_ssize_t;
-	SMB_ASSERT(p->received <= p->length);
-
-	if (p->received == p->length) {
-		TALLOC_FREE(state->fde);
-		async_req_done(req);
-	}
-}
-
-/**
- * Receive a specified number of bytes from a socket
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] fd	The socket to recv from
- * @param[in] buffer	The buffer to recv into
- * @param[in] length	How many bytes to recv
- * @param[in] flags	flags passed to recv(2)
- *
- * async_recvall will call recv(2) until "length" bytes are received
- */
-
-struct async_req *async_recvall(TALLOC_CTX *mem_ctx, struct event_context *ev,
-				int fd, void *buffer, size_t length,
-				int flags)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-
-	result = async_fde_syscall_new(
-		mem_ctx, ev, ASYNC_SYSCALL_RECVALL,
-		fd, EVENT_FD_READ, async_recvall_callback,
-		&state);
-	if (result == NULL) {
-		return NULL;
-	}
-
-	state->param.param_recvall.fd = fd;
-	state->param.param_recvall.buffer = buffer;
-	state->param.param_recvall.length = length;
-	state->param.param_recvall.flags = flags;
-	state->param.param_recvall.received = 0;
-
-	return result;
-}
-
-/**
- * fde event handler for connect(2)
- * @param[in] ev	The event context that sent us here
- * @param[in] fde	The file descriptor event associated with the connect
- * @param[in] flags	Indicate read/writeability of the socket
- * @param[in] priv	private data, "struct async_req *" in this case
- */
-
-static void async_connect_callback(struct event_context *ev,
-				   struct fd_event *fde, uint16_t flags,
-				   void *priv)
-{
-	struct async_req *req = talloc_get_type_abort(
-		priv, struct async_req);
-	struct async_syscall_state *state = talloc_get_type_abort(
-		req->private_data, struct async_syscall_state);
-	struct param_connect *p = &state->param.param_connect;
-
-	SMB_ASSERT(state->syscall_type == ASYNC_SYSCALL_CONNECT);
-
-	TALLOC_FREE(state->fde);
-
-	/*
-	 * Stevens, Network Programming says that if there's a
-	 * successful connect, the socket is only writable. Upon an
-	 * error, it's both readable and writable.
-	 */
-	if ((flags & (EVENT_FD_READ|EVENT_FD_WRITE))
-	    == (EVENT_FD_READ|EVENT_FD_WRITE)) {
-		int sockerr;
-		socklen_t err_len = sizeof(sockerr);
-
-		if (getsockopt(p->fd, SOL_SOCKET, SO_ERROR,
-			       (void *)&sockerr, &err_len) == 0) {
-			errno = sockerr;
-		}
-
-		state->sys_errno = errno;
-
-		DEBUG(10, ("connect returned %s\n", strerror(errno)));
-
-		sys_fcntl_long(p->fd, F_SETFL, p->old_sockflags);
-
-		async_req_error(req, map_nt_error_from_unix(state->sys_errno));
-		return;
-	}
-
-	sys_fcntl_long(p->fd, F_SETFL, p->old_sockflags);
-
-	state->result.result_int = 0;
-	state->sys_errno = 0;
-
-	async_req_done(req);
-}
-
-/**
- * @brief async version of connect(2)
- * @param[in] mem_ctx	The memory context to hang the result off
- * @param[in] ev	The event context to work from
- * @param[in] fd	The socket to recv from
- * @param[in] address	Where to connect?
- * @param[in] address_len Length of *address
- * @retval The async request
- *
- * This function sets the socket into non-blocking state to be able to call
- * connect in an async state. This will be reset when the request is finished.
- */
-
-struct async_req *async_connect(TALLOC_CTX *mem_ctx, struct event_context *ev,
-				int fd, const struct sockaddr *address,
-				socklen_t address_len)
-{
-	struct async_req *result;
-	struct async_syscall_state *state;
-	struct param_connect *p;
-
-	result = async_syscall_new(mem_ctx, ev, ASYNC_SYSCALL_CONNECT, &state);
-	if (result == NULL) {
-		return NULL;
-	}
-	p = &state->param.param_connect;
-
-	/**
-	 * We have to set the socket to nonblocking for async connect(2). Keep
-	 * the old sockflags around.
-	 */
-
-	p->old_sockflags = sys_fcntl_long(fd, F_GETFL, 0);
-
-	if (p->old_sockflags == -1) {
-		if (async_post_status(result, map_nt_error_from_unix(errno))) {
-			return result;
-		}
-		TALLOC_FREE(result);
-		return NULL;
-	}
-
-	set_blocking(fd, true);
-
-	state->result.result_int = connect(fd, address, address_len);
-
-	if (state->result.result_int == 0) {
-		state->sys_errno = 0;
-		if (async_post_status(result, NT_STATUS_OK)) {
-			return result;
-		}
-		sys_fcntl_long(fd, F_SETFL, p->old_sockflags);
-		TALLOC_FREE(result);
-		return NULL;
-	}
-
-	/**
-	 * A number of error messages show that something good is progressing
-	 * and that we have to wait for readability.
-	 *
-	 * If none of them are present, bail out.
-	 */
-
-	if (!(errno == EINPROGRESS || errno == EALREADY ||
-#ifdef EISCONN
-	      errno == EISCONN ||
-#endif
-	      errno == EAGAIN || errno == EINTR)) {
-
-		state->sys_errno = errno;
-
-		if (async_post_status(result, map_nt_error_from_unix(errno))) {
-			return result;
-		}
-		sys_fcntl_long(fd, F_SETFL, p->old_sockflags);
-		TALLOC_FREE(result);
-		return NULL;
-	}
-
-	state->fde = event_add_fd(ev, state, fd,
-				  EVENT_FD_READ | EVENT_FD_WRITE,
-				  async_connect_callback, state);
-	if (state->fde == NULL) {
-		sys_fcntl_long(fd, F_SETFL, p->old_sockflags);
-		TALLOC_FREE(result);
-		return NULL;
-	}
-
-	state->param.param_connect.fd = fd;
-	state->param.param_connect.address = address;
-	state->param.param_connect.address_len = address_len;
-
-	return result;
-}
-

Modified: branches/samba/upstream/source/lib/charcnv.c
===================================================================
--- branches/samba/upstream/source/lib/charcnv.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/charcnv.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -515,7 +515,7 @@
  * true
  * @note -1 is not accepted for srclen.
  *
- * @return true if new buffer was correctly allocated, and string was
+ * @return True if new buffer was correctly allocated, and string was
  * converted.
  *
  * Ensure the srclen contains the terminating zero.
@@ -749,22 +749,24 @@
  *
  * @param srclen length of source buffer.
  * @param dest always set at least to NULL
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  * @note -1 is not accepted for srclen.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
- */
-bool convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to,
-			   void const *src, size_t srclen, void *dst,
-			   size_t *converted_size, bool allow_bad_conv)
+ * @returns Size in bytes of the converted string; or -1 in case of error.
+ **/
+size_t convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to,
+			     void const *src, size_t srclen, void *dst,
+			     bool allow_bad_conv)
 {
 	void **dest = (void **)dst;
+	size_t dest_len;
 
 	*dest = NULL;
-	return convert_string_allocate(ctx, from, to, src, srclen, dest,
-				       converted_size, allow_bad_conv);
+	if (!convert_string_allocate(ctx, from, to, src, srclen, dest,
+		&dest_len, allow_bad_conv))
+		return (size_t)-1;
+	if (*dest == NULL)
+		return (size_t)-1;
+	return dest_len;
 }
 
 size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen)
@@ -772,10 +774,10 @@
 	size_t size;
 	smb_ucs2_t *buffer;
 
-	if (!push_ucs2_allocate(&buffer, src, &size)) {
+	size = push_ucs2_allocate(&buffer, src);
+	if (size == (size_t)-1) {
 		return (size_t)-1;
 	}
-
 	if (!strupper_w(buffer) && (dest == src)) {
 		free(buffer);
 		return srclen;
@@ -814,25 +816,20 @@
 
 	if (*p) {
 		/* MB case. */
-		size_t converted_size, converted_size2;
+		size_t size, size2;
 		smb_ucs2_t *buffer = NULL;
 
 		SAFE_FREE(out_buffer);
 		if (!convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, s,
-					     strlen(s) + 1,
-					     (void **)(void *)&buffer,
-					     &converted_size, True))
-		{
+			strlen(s) + 1, (void **)(void *)&buffer, &size,
+			True)) {
 			return NULL;
 		}
 
 		strupper_w(buffer);
 
 		if (!convert_string_allocate(NULL, CH_UTF16LE, CH_UNIX, buffer,
-					     converted_size,
-					     (void **)(void *)&out_buffer,
-					     &converted_size2, True))
-		{
+			size, (void **)(void *)&out_buffer, &size2, True)) {
 			TALLOC_FREE(buffer);
 			return NULL;
 		}
@@ -874,33 +871,36 @@
 
 	if (*p) {
 		/* MB case. */
-		size_t converted_size, converted_size2;
+		size_t size;
 		smb_ucs2_t *ubuf = NULL;
 
 		/* We're not using the ascii buffer above. */
 		TALLOC_FREE(out_buffer);
 
-		if (!convert_string_talloc(ctx, CH_UNIX, CH_UTF16LE, s,
-					   strlen(s)+1, (void *)&ubuf,
-					   &converted_size, True))
-		{
+		size = convert_string_talloc(ctx, CH_UNIX, CH_UTF16LE,
+				s, strlen(s)+1,
+				(void *)&ubuf,
+				True);
+		if (size == (size_t)-1) {
 			return NULL;
 		}
 
 		strupper_w(ubuf);
 
-		if (!convert_string_talloc(ctx, CH_UTF16LE, CH_UNIX, ubuf,
-					   converted_size, (void *)&out_buffer,
-					   &converted_size2, True))
-		{
-			TALLOC_FREE(ubuf);
-			return NULL;
-		}
+		size = convert_string_talloc(ctx, CH_UTF16LE, CH_UNIX,
+				ubuf, size,
+				(void *)&out_buffer,
+				True);
 
 		/* Don't need the intermediate buffer
  		 * anymore.
  		 */
+
 		TALLOC_FREE(ubuf);
+
+		if (size == (size_t)-1) {
+			return NULL;
+		}
 	}
 
 	return out_buffer;
@@ -912,9 +912,7 @@
 	smb_ucs2_t *buffer = NULL;
 
 	if (!convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, src, srclen,
-				     (void **)(void *)&buffer, &size,
-				     True))
-	{
+		(void **)(void *)&buffer, &size, True)) {
 		smb_panic("failed to create UCS2 buffer");
 	}
 	if (!strlower_w(buffer) && (dest == src)) {
@@ -932,45 +930,49 @@
 
 char *strdup_lower(const char *s)
 {
-	size_t converted_size;
+	size_t size;
 	smb_ucs2_t *buffer = NULL;
 	char *out_buffer;
 
-	if (!push_ucs2_allocate(&buffer, s, &converted_size)) {
+	size = push_ucs2_allocate(&buffer, s);
+	if (size == -1 || !buffer) {
 		return NULL;
 	}
 
 	strlower_w(buffer);
 
-	if (!pull_ucs2_allocate(&out_buffer, buffer, &converted_size)) {
-		SAFE_FREE(buffer);
+	size = pull_ucs2_allocate(&out_buffer, buffer);
+	SAFE_FREE(buffer);
+
+	if (size == (size_t)-1) {
 		return NULL;
 	}
 
-	SAFE_FREE(buffer);
-
 	return out_buffer;
 }
 
 char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s)
 {
-	size_t converted_size;
+	size_t size;
 	smb_ucs2_t *buffer = NULL;
 	char *out_buffer;
 
-	if (!push_ucs2_talloc(ctx, &buffer, s, &converted_size)) {
+	size = push_ucs2_talloc(ctx, &buffer, s);
+	if (size == -1 || !buffer) {
+		TALLOC_FREE(buffer);
 		return NULL;
 	}
 
 	strlower_w(buffer);
 
-	if (!pull_ucs2_talloc(ctx, &out_buffer, buffer, &converted_size)) {
-		TALLOC_FREE(buffer);
+	size = pull_ucs2_talloc(ctx, &out_buffer, buffer);
+	TALLOC_FREE(buffer);
+
+	if (size == (size_t)-1) {
+		TALLOC_FREE(out_buffer);
 		return NULL;
 	}
 
-	TALLOC_FREE(buffer);
-
 	return out_buffer;
 }
 
@@ -1047,7 +1049,8 @@
 	smb_ucs2_t *buffer;
 
 	conv_silent = True;
-	if (!push_ucs2_allocate(&buffer, src, &buffer_len)) {
+	buffer_len = push_ucs2_allocate(&buffer, src);
+	if (buffer_len == (size_t)-1) {
 		smb_panic("failed to create UCS2 buffer");
 	}
 
@@ -1078,13 +1081,16 @@
  Push and malloc an ascii string. src and dest null terminated.
 ********************************************************************/
 
-bool push_ascii_allocate(char **dest, const char *src, size_t *converted_size)
+size_t push_ascii_allocate(char **dest, const char *src)
 {
-	size_t src_len = strlen(src)+1;
+	size_t dest_len, src_len = strlen(src)+1;
 
 	*dest = NULL;
-	return convert_string_allocate(NULL, CH_UNIX, CH_DOS, src, src_len,
-				       (void **)dest, converted_size, True);
+	if (!convert_string_allocate(NULL, CH_UNIX, CH_DOS, src, src_len,
+		(void **)dest, &dest_len, True))
+		return (size_t)-1;
+	else
+		return dest_len;
 }
 
 /**
@@ -1166,7 +1172,7 @@
 					int flags)
 {
 	char *dest = NULL;
-	size_t converted_size;
+	size_t dest_len = 0;
 
 #ifdef DEVELOPER
 	/* Ensure we never use the braindead "malloc" varient. */
@@ -1197,15 +1203,13 @@
 	}
 
 	if (!convert_string_allocate(ctx, CH_DOS, CH_UNIX, src, src_len, &dest,
-				     &converted_size, True))
-	{
-		converted_size = 0;
-	}
+		&dest_len, True))
+		dest_len = 0;
 
-	if (converted_size && dest) {
+	if (dest_len && dest) {
 		/* Did we already process the terminating zero ? */
-		if (dest[converted_size - 1] != 0) {
-			dest[converted_size - 1] = 0;
+		if (dest[dest_len-1] != 0) {
+			dest[dest_len-1] = 0;
 		}
 	} else if (dest) {
 		dest[0] = 0;
@@ -1307,20 +1311,16 @@
  * allocating a buffer using talloc().
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
+ *         or -1 in case of error.
  **/
-bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src,
-		      size_t *converted_size)
+size_t push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src)
 {
 	size_t src_len = strlen(src)+1;
 
 	*dest = NULL;
-	return convert_string_talloc(ctx, CH_UNIX, CH_UTF16LE, src, src_len,
-				     (void **)dest, converted_size, True);
+	return convert_string_talloc(ctx, CH_UNIX, CH_UTF16LE, src, src_len, (void **)dest, True);
 }
 
 
@@ -1328,21 +1328,21 @@
  * Copy a string from a unix char* src to a UCS2 destination, allocating a buffer
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
+ *         or -1 in case of error.
  **/
 
-bool push_ucs2_allocate(smb_ucs2_t **dest, const char *src,
-			size_t *converted_size)
+size_t push_ucs2_allocate(smb_ucs2_t **dest, const char *src)
 {
-	size_t src_len = strlen(src)+1;
+	size_t dest_len, src_len = strlen(src)+1;
 
 	*dest = NULL;
-	return convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, src, src_len,
-				       (void **)dest, converted_size, True);
+	if (!convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, src, src_len,
+		(void **)dest, &dest_len, True))
+		return (size_t)-1;
+	else
+		return dest_len;
 }
 
 /**
@@ -1394,41 +1394,36 @@
  * Copy a string from a unix char* src to a UTF-8 destination, allocating a buffer using talloc
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
-		      size_t *converted_size)
+size_t push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src)
 {
 	size_t src_len = strlen(src)+1;
 
 	*dest = NULL;
-	return convert_string_talloc(ctx, CH_UNIX, CH_UTF8, src, src_len,
-				     (void**)dest, converted_size, True);
+	return convert_string_talloc(ctx, CH_UNIX, CH_UTF8, src, src_len, (void**)dest, True);
 }
 
 /**
  * Copy a string from a unix char* src to a UTF-8 destination, allocating a buffer
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool push_utf8_allocate(char **dest, const char *src, size_t *converted_size)
+size_t push_utf8_allocate(char **dest, const char *src)
 {
-	size_t src_len = strlen(src)+1;
+	size_t dest_len, src_len = strlen(src)+1;
 
 	*dest = NULL;
-	return convert_string_allocate(NULL, CH_UNIX, CH_UTF8, src, src_len,
-				       (void **)dest, converted_size, True);
+	if (!convert_string_allocate(NULL, CH_UNIX, CH_UTF8, src, src_len,
+		(void **)dest, &dest_len, True))
+		return (size_t)-1;
+	else
+		return dest_len;
 }
 
 /**
@@ -1569,8 +1564,14 @@
 		src_len &= ~1;
 	}
 
-	if (!convert_string_talloc(ctx, CH_UTF16LE, CH_UNIX, src, src_len,
-				   (void *)&dest, &dest_len, True)) {
+	dest_len = convert_string_talloc(ctx,
+					CH_UTF16LE,
+					CH_UNIX,
+					src,
+					src_len,
+					(void *)&dest,
+					True);
+	if (dest_len == (size_t)-1) {
 		dest_len = 0;
 	}
 
@@ -1613,103 +1614,83 @@
  * Copy a string from a UCS2 src to a unix char * destination, allocating a buffer using talloc
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool pull_ucs2_talloc(TALLOC_CTX *ctx, char **dest, const smb_ucs2_t *src,
-		      size_t *converted_size)
+size_t pull_ucs2_talloc(TALLOC_CTX *ctx, char **dest, const smb_ucs2_t *src)
 {
 	size_t src_len = (strlen_w(src)+1) * sizeof(smb_ucs2_t);
-
 	*dest = NULL;
-	return convert_string_talloc(ctx, CH_UTF16LE, CH_UNIX, src, src_len,
-				     (void **)dest, converted_size, True);
+	return convert_string_talloc(ctx, CH_UTF16LE, CH_UNIX, src, src_len, (void **)dest, True);
 }
 
 /**
  * Copy a string from a UCS2 src to a unix char * destination, allocating a buffer
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ *
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool pull_ucs2_allocate(char **dest, const smb_ucs2_t *src,
-			size_t *converted_size)
+size_t pull_ucs2_allocate(char **dest, const smb_ucs2_t *src)
 {
-	size_t src_len = (strlen_w(src)+1) * sizeof(smb_ucs2_t);
-
+	size_t dest_len, src_len = (strlen_w(src)+1) * sizeof(smb_ucs2_t);
 	*dest = NULL;
-	return convert_string_allocate(NULL, CH_UTF16LE, CH_UNIX, src, src_len,
-				       (void **)dest, converted_size, True);
+	if (!convert_string_allocate(NULL, CH_UTF16LE, CH_UNIX, src, src_len,
+		(void **)dest, &dest_len, True))
+		return (size_t)-1;
+	else
+		return dest_len;
 }
 
 /**
  * Copy a string from a UTF-8 src to a unix char * destination, allocating a buffer using talloc
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool pull_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
-		      size_t *converted_size)
+size_t pull_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src)
 {
 	size_t src_len = strlen(src)+1;
-
 	*dest = NULL;
-	return convert_string_talloc(ctx, CH_UTF8, CH_UNIX, src, src_len,
-				     (void **)dest, converted_size, True);
+	return convert_string_talloc(ctx, CH_UTF8, CH_UNIX, src, src_len, (void **)dest, True);
 }
 
 /**
  * Copy a string from a UTF-8 src to a unix char * destination, allocating a buffer
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool pull_utf8_allocate(char **dest, const char *src, size_t *converted_size)
+size_t pull_utf8_allocate(char **dest, const char *src)
 {
-	size_t src_len = strlen(src)+1;
-
+	size_t dest_len, src_len = strlen(src)+1;
 	*dest = NULL;
-	return convert_string_allocate(NULL, CH_UTF8, CH_UNIX, src, src_len,
-				       (void **)dest, converted_size, True);
+	if (!convert_string_allocate(NULL, CH_UTF8, CH_UNIX, src, src_len,
+		(void **)dest, &dest_len, True))
+		return (size_t)-1;
+	else
+		return dest_len;
 }
  
 /**
  * Copy a string from a DOS src to a unix char * destination, allocating a buffer using talloc
  *
  * @param dest always set at least to NULL 
- * @parm converted_size set to the number of bytes occupied by the string in
- * the destination on success.
  *
- * @return true if new buffer was correctly allocated, and string was
- * converted.
+ * @returns The number of bytes occupied by the string in the destination
  **/
 
-bool pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
-		       size_t *converted_size)
+size_t pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src)
 {
 	size_t src_len = strlen(src)+1;
-
 	*dest = NULL;
-	return convert_string_talloc(ctx, CH_DOS, CH_UNIX, src, src_len,
-				     (void **)dest, converted_size, True);
+	return convert_string_talloc(ctx, CH_DOS, CH_UNIX, src, src_len, (void **)dest, True);
 }
 
 /**

Modified: branches/samba/upstream/source/lib/ctdbd_conn.c
===================================================================
--- branches/samba/upstream/source/lib/ctdbd_conn.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/ctdbd_conn.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -43,7 +43,7 @@
 
 static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
 			      uint32_t vnn, uint32 opcode, 
-			      uint64_t srvid, uint32_t flags, TDB_DATA data, 
+			      uint64_t srvid, TDB_DATA data, 
 			      TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
 			      int *cstatus);
 
@@ -83,7 +83,7 @@
 
 	int cstatus;
 	return ctdbd_control(conn, CTDB_CURRENT_NODE,
-			     CTDB_CONTROL_REGISTER_SRVID, srvid, 0,
+			     CTDB_CONTROL_REGISTER_SRVID, srvid,
 			     tdb_null, NULL, NULL, &cstatus);
 }
 
@@ -95,7 +95,7 @@
 	int32_t cstatus=-1;
 	NTSTATUS status;
 	status = ctdbd_control(conn,
-			       CTDB_CURRENT_NODE, CTDB_CONTROL_GET_PNN, 0, 0,
+			       CTDB_CURRENT_NODE, CTDB_CONTROL_GET_PNN, 0,
 			       tdb_null, NULL, NULL, &cstatus);
 	if (!NT_STATUS_IS_OK(status)) {
 		cluster_fatal("ctdbd_control failed\n");
@@ -136,7 +136,7 @@
 	strncpy(addr.sun_path, sockname, sizeof(addr.sun_path));
 
 	if (sys_connect(fd, (struct sockaddr *)&addr) == -1) {
-		DEBUG(1, ("connect(%s) failed: %s\n", sockname,
+		DEBUG(0, ("connect(%s) failed: %s\n", sockname,
 			  strerror(errno)));
 		close(fd);
 		return map_nt_error_from_unix(errno);
@@ -353,14 +353,6 @@
 			goto next_pkt;
 		}
 
-		if (msg->srvid == CTDB_SRVID_RECONFIGURE) {
-			DEBUG(0,("Got cluster reconfigure message in ctdb_read_req\n"));
-			messaging_send(conn->msg_ctx, procid_self(),
-				       MSG_SMB_BRL_VALIDATE, &data_blob_null);
-			TALLOC_FREE(hdr);
-			goto next_pkt;
-		}
-
 		if (!(msg_state = TALLOC_P(NULL, struct deferred_msg_state))) {
 			DEBUG(0, ("talloc failed\n"));
 			TALLOC_FREE(hdr);
@@ -688,8 +680,7 @@
  */
 static NTSTATUS ctdbd_control(struct ctdbd_connection *conn,
 			      uint32_t vnn, uint32 opcode, 
-			      uint64_t srvid, uint32_t flags, 
-			      TDB_DATA data, 
+			      uint64_t srvid, TDB_DATA data, 
 			      TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
 			      int *cstatus)
 {
@@ -698,9 +689,6 @@
 	struct ctdbd_connection *new_conn = NULL;
 	NTSTATUS status;
 
-	/* the samba3 ctdb code can't handle NOREPLY yet */
-	flags &= ~CTDB_CTRL_FLAG_NOREPLY;
-
 	if (conn == NULL) {
 		status = ctdbd_init_connection(NULL, &new_conn);
 
@@ -744,11 +732,6 @@
 		cluster_fatal("cluster dispatch daemon control write error\n");
 	}
 
-	if (flags & CTDB_CTRL_FLAG_NOREPLY) {
-		TALLOC_FREE(new_conn);
-		return NT_STATUS_OK;
-	}
-
 	status = ctdb_read_req(conn, req.hdr.reqid, NULL, (void *)&reply);
 
 	if (!NT_STATUS_IS_OK(status)) {
@@ -793,7 +776,7 @@
 	data.dptr = (uint8_t*)&pid;
 	data.dsize = sizeof(pid);
 
-	status = ctdbd_control(conn, vnn, CTDB_CONTROL_PROCESS_EXISTS, 0, 0,
+	status = ctdbd_control(conn, vnn, CTDB_CONTROL_PROCESS_EXISTS, 0,
 			       data, NULL, NULL, &cstatus);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0, (__location__ " ctdb_control for process_exists "
@@ -818,7 +801,7 @@
 	data.dsize = sizeof(db_id);
 
 	status = ctdbd_control(conn, CTDB_CURRENT_NODE,
-			       CTDB_CONTROL_GETDBPATH, 0, 0, data, 
+			       CTDB_CONTROL_GETDBPATH, 0, data, 
 			       mem_ctx, &data, &cstatus);
 	if (!NT_STATUS_IS_OK(status) || cstatus != 0) {
 		DEBUG(0,(__location__ " ctdb_control for getdbpath failed\n"));
@@ -846,7 +829,7 @@
 			       persistent
 			       ? CTDB_CONTROL_DB_ATTACH_PERSISTENT
 			       : CTDB_CONTROL_DB_ATTACH,
-			       0, 0, data, NULL, &data, &cstatus);
+			       0, data, NULL, &data, &cstatus);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0, (__location__ " ctdb_control for db_attach "
 			  "failed: %s\n", nt_errstr(status)));
@@ -869,7 +852,7 @@
 	data.dsize = sizeof(*db_id);
 
 	status = ctdbd_control(conn, CTDB_CURRENT_NODE,
-			       CTDB_CONTROL_ENABLE_SEQNUM, 0, 0, data, 
+			       CTDB_CONTROL_ENABLE_SEQNUM, 0, data, 
 			       NULL, NULL, &cstatus);
 	if (!NT_STATUS_IS_OK(status) || cstatus != 0) {
 		DEBUG(0,(__location__ " ctdb_control for enable seqnum "
@@ -1104,7 +1087,7 @@
 	data.dsize = sizeof(t);
 
 	status = ctdbd_control(conn, CTDB_CURRENT_NODE,
-			       CTDB_CONTROL_TRAVERSE_START, conn->rand_srvid, 0,
+			       CTDB_CONTROL_TRAVERSE_START, conn->rand_srvid,
 			       data, NULL, NULL, &cstatus);
 
 	if (!NT_STATUS_IS_OK(status) || (cstatus != 0)) {
@@ -1190,8 +1173,6 @@
 	 */
 	SMB_ASSERT(conn->release_ip_handler == NULL);
 
-	conn->release_ip_handler = release_ip_handler;
-
 	/*
 	 * We want to be told about IP releases
 	 */
@@ -1213,7 +1194,7 @@
 	data.dsize = sizeof(p);
 
 	return ctdbd_control(conn, CTDB_CURRENT_NODE, 
-			     CTDB_CONTROL_TCP_CLIENT, 0,
+			     CTDB_CONTROL_TCP_CLIENT, 
 			     CTDB_CTRL_FLAG_NOREPLY, data, NULL, NULL, NULL);
 }
 
@@ -1226,16 +1207,41 @@
 }
 
 /*
-  call a control on the local node
+  persstent store. Used when we update a record in a persistent database
  */
-NTSTATUS ctdbd_control_local(struct ctdbd_connection *conn, uint32 opcode, 
-			     uint64_t srvid, uint32_t flags, TDB_DATA data, 
-			     TALLOC_CTX *mem_ctx, TDB_DATA *outdata,
-			     int *cstatus)
+NTSTATUS ctdbd_persistent_store(struct ctdbd_connection *conn, uint32_t db_id, TDB_DATA key, TDB_DATA data)
 {
-	return ctdbd_control(conn, CTDB_CURRENT_NODE, opcode, srvid, flags, data, mem_ctx, outdata, cstatus);
+       int cstatus=0;
+       struct ctdb_rec_data *rec;
+       TDB_DATA recdata;
+       size_t length;
+       NTSTATUS status;
+
+       length = offsetof(struct ctdb_rec_data, data) + key.dsize + data.dsize;
+
+       rec = (struct ctdb_rec_data *)talloc_size(conn, length);
+       NT_STATUS_HAVE_NO_MEMORY(rec);
+
+       rec->length = length;
+       rec->reqid  = db_id;
+       rec->keylen = key.dsize;
+       rec->datalen= data.dsize;
+       memcpy(&rec->data[0], key.dptr, key.dsize);
+       memcpy(&rec->data[key.dsize], data.dptr, data.dsize);
+
+       recdata.dptr  = (uint8_t *)rec;
+       recdata.dsize = length;
+
+       status = ctdbd_control(conn, CTDB_CURRENT_NODE, 
+                              CTDB_CONTROL_PERSISTENT_STORE, 
+                              0, recdata, NULL, NULL, &cstatus);
+       if (cstatus != 0) {
+               return NT_STATUS_INTERNAL_DB_CORRUPTION;
+       }
+       return status;
 }
 
+
 #else
 
 NTSTATUS ctdbd_init_connection(TALLOC_CTX *mem_ctx,

Modified: branches/samba/upstream/source/lib/data_blob.c
===================================================================
--- branches/samba/upstream/source/lib/data_blob.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/data_blob.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -156,25 +156,3 @@
 	data_blob_clear(&blob);
 	return blob;
 }
-
-/**
-print the data_blob as hex string
-**/
-_PUBLIC_ char *data_blob_hex_string(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob)
-{
-	int i;
-	char *hex_string;
-
-	hex_string = talloc_array(mem_ctx, char, (blob->length*2)+1);
-	if (!hex_string) {
-		return NULL;
-	}
-
-	for (i = 0; i < blob->length; i++)
-		slprintf(&hex_string[i*2], 3, "%02X", blob->data[i]);
-
-	hex_string[(blob->length*2)] = '\0';
-	return hex_string;
-}
-
-

Modified: branches/samba/upstream/source/lib/dbwrap.c
===================================================================
--- branches/samba/upstream/source/lib/dbwrap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/dbwrap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -43,7 +43,7 @@
 }
 
 /**
- * open a database
+ * If you need transaction support use db_open_trans()
  */
 struct db_context *db_open(TALLOC_CTX *mem_ctx,
 			   const char *name,
@@ -60,15 +60,8 @@
 		sockname = CTDB_PATH;
 	}
 
-	if (lp_clustering()) {
+	if (lp_clustering() && socket_exist(sockname)) {
 		const char *partname;
-
-		if (!socket_exist(sockname)) {
-			DEBUG(1, ("ctdb socket does not exist - is ctdb not "
-				  "running?\n"));
-			return NULL;
-		}
-
 		/* ctdb only wants the file part of the name */
 		partname = strrchr(name, '/');
 		if (partname) {
@@ -83,10 +76,8 @@
 			if (result == NULL) {
 				DEBUG(0,("failed to attach to ctdb %s\n",
 					 partname));
-				if (errno == 0) {
-					errno = EIO;
-				}
-				return NULL;
+				smb_panic("failed to attach to a ctdb "
+					  "database");
 			}
 		}
 	}
@@ -105,6 +96,75 @@
 	return result;
 }
 
+/**
+ * If you use this you can only modify with a transaction
+ */
+struct db_context *db_open_trans(TALLOC_CTX *mem_ctx,
+				 const char *name,
+				 int hash_size, int tdb_flags,
+				 int open_flags, mode_t mode)
+{
+	bool use_tdb2 = lp_parm_bool(-1, "dbwrap", "use_tdb2", false);
+#ifdef CLUSTER_SUPPORT
+	const char *sockname = lp_ctdbd_socket();
+#endif
+
+	if (tdb_flags & TDB_CLEAR_IF_FIRST) {
+		DEBUG(0,("db_open_trans: called with TDB_CLEAR_IF_FIRST: %s\n",
+			 name));
+		smb_panic("db_open_trans: called with TDB_CLEAR_IF_FIRST");
+	}
+
+#ifdef CLUSTER_SUPPORT
+	if(!sockname || !*sockname) {
+		sockname = CTDB_PATH;
+	}
+
+	if (lp_clustering() && socket_exist(sockname)) {
+		const char *partname;
+		/* ctdb only wants the file part of the name */
+		partname = strrchr(name, '/');
+		if (partname) {
+			partname++;
+		} else {
+			partname = name;
+		}
+		/* allow ctdb for individual databases to be disabled */
+		if (lp_parm_bool(-1, "ctdb", partname, true)) {
+			struct db_context *result = NULL;
+			result = db_open_ctdb(mem_ctx, partname, hash_size,
+					      tdb_flags, open_flags, mode);
+			if (result == NULL) {
+				DEBUG(0,("failed to attach to ctdb %s\n",
+					 partname));
+				smb_panic("failed to attach to a ctdb "
+					  "database");
+			}
+			return result;
+		}
+	}
+#endif
+
+	if (use_tdb2) {
+		const char *partname;
+		/* tdb2 only wants the file part of the name */
+		partname = strrchr(name, '/');
+		if (partname) {
+			partname++;
+		} else {
+			partname = name;
+		}
+		/* allow ctdb for individual databases to be disabled */
+		if (lp_parm_bool(-1, "tdb2", partname, true)) {
+			return db_open_tdb2(mem_ctx, partname, hash_size,
+					    tdb_flags, open_flags, mode);
+		}
+	}
+
+	return db_open_tdb(mem_ctx, name, hash_size,
+			   tdb_flags, open_flags, mode);
+}
+
 NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key)
 {
 	struct db_record *rec;

Modified: branches/samba/upstream/source/lib/dbwrap_ctdb.c
===================================================================
--- branches/samba/upstream/source/lib/dbwrap_ctdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/dbwrap_ctdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,23 +23,9 @@
 #include "ctdb_private.h"
 #include "ctdbd_conn.h"
 
-struct db_ctdb_transaction_handle {
-	struct db_ctdb_ctx *ctx;
-	bool in_replay;
-	/* we store the reads and writes done under a transaction one
-	   list stores both reads and writes, the other just writes
-	*/
-	struct ctdb_marshall_buffer *m_all;
-	struct ctdb_marshall_buffer *m_write;
-	uint32_t nesting;
-	bool nested_cancel;
-};
-
 struct db_ctdb_ctx {
-	struct db_context *db;
 	struct tdb_wrap *wtdb;
 	uint32 db_id;
-	struct db_ctdb_transaction_handle *transaction;
 };
 
 struct db_ctdb_rec {
@@ -47,734 +33,40 @@
 	struct ctdb_ltdb_header header;
 };
 
-static struct db_record *fetch_locked_internal(struct db_ctdb_ctx *ctx,
-					       TALLOC_CTX *mem_ctx,
-					       TDB_DATA key,
-					       bool persistent);
-
-static NTSTATUS tdb_error_to_ntstatus(struct tdb_context *tdb)
+static NTSTATUS db_ctdb_store(struct db_record *rec, TDB_DATA data, int flag)
 {
-	NTSTATUS status;
-	enum TDB_ERROR tret = tdb_error(tdb);
-
-	switch (tret) {
-	case TDB_ERR_EXISTS:
-		status = NT_STATUS_OBJECT_NAME_COLLISION;
-		break;
-	case TDB_ERR_NOEXIST:
-		status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
-		break;
-	default:
-		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
-		break;
-	}
-
-	return status;
-}
-
-
-
-/*
-  form a ctdb_rec_data record from a key/data pair
-  
-  note that header may be NULL. If not NULL then it is included in the data portion
-  of the record
- */
-static struct ctdb_rec_data *db_ctdb_marshall_record(TALLOC_CTX *mem_ctx, uint32_t reqid,	
-						  TDB_DATA key, 
-						  struct ctdb_ltdb_header *header,
-						  TDB_DATA data)
-{
-	size_t length;
-	struct ctdb_rec_data *d;
-
-	length = offsetof(struct ctdb_rec_data, data) + key.dsize + 
-		data.dsize + (header?sizeof(*header):0);
-	d = (struct ctdb_rec_data *)talloc_size(mem_ctx, length);
-	if (d == NULL) {
-		return NULL;
-	}
-	d->length = length;
-	d->reqid = reqid;
-	d->keylen = key.dsize;
-	memcpy(&d->data[0], key.dptr, key.dsize);
-	if (header) {
-		d->datalen = data.dsize + sizeof(*header);
-		memcpy(&d->data[key.dsize], header, sizeof(*header));
-		memcpy(&d->data[key.dsize+sizeof(*header)], data.dptr, data.dsize);
-	} else {
-		d->datalen = data.dsize;
-		memcpy(&d->data[key.dsize], data.dptr, data.dsize);
-	}
-	return d;
-}
-
-
-/* helper function for marshalling multiple records */
-static struct ctdb_marshall_buffer *db_ctdb_marshall_add(TALLOC_CTX *mem_ctx, 
-					       struct ctdb_marshall_buffer *m,
-					       uint64_t db_id,
-					       uint32_t reqid,
-					       TDB_DATA key,
-					       struct ctdb_ltdb_header *header,
-					       TDB_DATA data)
-{
-	struct ctdb_rec_data *r;
-	size_t m_size, r_size;
-	struct ctdb_marshall_buffer *m2;
-
-	r = db_ctdb_marshall_record(mem_ctx, reqid, key, header, data);
-	if (r == NULL) {
-		talloc_free(m);
-		return NULL;
-	}
-
-	if (m == NULL) {
-		m = talloc_zero_size(mem_ctx, offsetof(struct ctdb_marshall_buffer, data));
-		if (m == NULL) {
-			return NULL;
-		}
-		m->db_id = db_id;
-	}
-
-	m_size = talloc_get_size(m);
-	r_size = talloc_get_size(r);
-
-	m2 = talloc_realloc_size(mem_ctx, m,  m_size + r_size);
-	if (m2 == NULL) {
-		talloc_free(m);
-		return NULL;
-	}
-
-	memcpy(m_size + (uint8_t *)m2, r, r_size);
-
-	talloc_free(r);
-
-	m2->count++;
-
-	return m2;
-}
-
-/* we've finished marshalling, return a data blob with the marshalled records */
-static TDB_DATA db_ctdb_marshall_finish(struct ctdb_marshall_buffer *m)
-{
-	TDB_DATA data;
-	data.dptr = (uint8_t *)m;
-	data.dsize = talloc_get_size(m);
-	return data;
-}
-
-/* 
-   loop over a marshalling buffer 
-   
-     - pass r==NULL to start
-     - loop the number of times indicated by m->count
-*/
-static struct ctdb_rec_data *db_ctdb_marshall_loop_next(struct ctdb_marshall_buffer *m, struct ctdb_rec_data *r,
-						     uint32_t *reqid,
-						     struct ctdb_ltdb_header *header,
-						     TDB_DATA *key, TDB_DATA *data)
-{
-	if (r == NULL) {
-		r = (struct ctdb_rec_data *)&m->data[0];
-	} else {
-		r = (struct ctdb_rec_data *)(r->length + (uint8_t *)r);
-	}
-
-	if (reqid != NULL) {
-		*reqid = r->reqid;
-	}
-	
-	if (key != NULL) {
-		key->dptr   = &r->data[0];
-		key->dsize  = r->keylen;
-	}
-	if (data != NULL) {
-		data->dptr  = &r->data[r->keylen];
-		data->dsize = r->datalen;
-		if (header != NULL) {
-			data->dptr += sizeof(*header);
-			data->dsize -= sizeof(*header);
-		}
-	}
-
-	if (header != NULL) {
-		if (r->datalen < sizeof(*header)) {
-			return NULL;
-		}
-		*header = *(struct ctdb_ltdb_header *)&r->data[r->keylen];
-	}
-
-	return r;
-}
-
-
-
-/* start a transaction on a database */
-static int db_ctdb_transaction_destructor(struct db_ctdb_transaction_handle *h)
-{
-	tdb_transaction_cancel(h->ctx->wtdb->tdb);
-	return 0;
-}
-
-/* start a transaction on a database */
-static int db_ctdb_transaction_fetch_start(struct db_ctdb_transaction_handle *h)
-{
-	struct db_record *rh;
-	TDB_DATA key;
-	TALLOC_CTX *tmp_ctx;
-	const char *keyname = CTDB_TRANSACTION_LOCK_KEY;
+	struct db_ctdb_rec *crec = talloc_get_type_abort(
+		rec->private_data, struct db_ctdb_rec);
+	TDB_DATA cdata;
 	int ret;
-	struct db_ctdb_ctx *ctx = h->ctx;
-	TDB_DATA data;
 
-	key.dptr = discard_const(keyname);
-	key.dsize = strlen(keyname);
+	cdata.dsize = sizeof(crec->header) + data.dsize;
 
-again:
-	tmp_ctx = talloc_new(h);
-
-	rh = fetch_locked_internal(ctx, tmp_ctx, key, true);
-	if (rh == NULL) {
-		DEBUG(0,(__location__ " Failed to fetch_lock database\n"));		
-		talloc_free(tmp_ctx);
-		return -1;
+	if (!(cdata.dptr = SMB_MALLOC_ARRAY(uint8, cdata.dsize))) {
+		return NT_STATUS_NO_MEMORY;
 	}
-	talloc_free(rh);
 
-	ret = tdb_transaction_start(ctx->wtdb->tdb);
-	if (ret != 0) {
-		DEBUG(0,(__location__ " Failed to start tdb transaction\n"));
-		talloc_free(tmp_ctx);
-		return -1;
-	}
+	memcpy(cdata.dptr, &crec->header, sizeof(crec->header));
+	memcpy(cdata.dptr + sizeof(crec->header), data.dptr, data.dsize);
 
-	data = tdb_fetch(ctx->wtdb->tdb, key);
-	if ((data.dptr == NULL) ||
-	    (data.dsize < sizeof(struct ctdb_ltdb_header)) ||
-	    ((struct ctdb_ltdb_header *)data.dptr)->dmaster != get_my_vnn()) {
-		SAFE_FREE(data.dptr);
-		tdb_transaction_cancel(ctx->wtdb->tdb);
-		talloc_free(tmp_ctx);
-		goto again;
-	}
+	ret = tdb_store(crec->ctdb_ctx->wtdb->tdb, rec->key, cdata, TDB_REPLACE);
 
-	SAFE_FREE(data.dptr);
-	talloc_free(tmp_ctx);
+	SAFE_FREE(cdata.dptr);
 
-	return 0;
+	return (ret == 0) ? NT_STATUS_OK : NT_STATUS_INTERNAL_DB_CORRUPTION;
 }
 
 
-/* start a transaction on a database */
-static int db_ctdb_transaction_start(struct db_context *db)
+/* for persistent databases the store is a bit different. We have to
+   ask the ctdb daemon to push the record to all nodes after the
+   store */
+static NTSTATUS db_ctdb_store_persistent(struct db_record *rec, TDB_DATA data, int flag)
 {
-	struct db_ctdb_transaction_handle *h;
-	int ret;
-	struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
-							struct db_ctdb_ctx);
-
-	if (!db->persistent) {
-		DEBUG(0,("transactions not supported on non-persistent database 0x%08x\n", 
-			 ctx->db_id));
-		return -1;
-	}
-
-	if (ctx->transaction) {
-		ctx->transaction->nesting++;
-		return 0;
-	}
-
-	h = talloc_zero(db, struct db_ctdb_transaction_handle);
-	if (h == NULL) {
-		DEBUG(0,(__location__ " oom for transaction handle\n"));		
-		return -1;
-	}
-
-	h->ctx = ctx;
-
-	ret = db_ctdb_transaction_fetch_start(h);
-	if (ret != 0) {
-		talloc_free(h);
-		return -1;
-	}
-
-	talloc_set_destructor(h, db_ctdb_transaction_destructor);
-
-	ctx->transaction = h;
-
-	DEBUG(5,(__location__ " Started transaction on db 0x%08x\n", ctx->db_id));
-
-	return 0;
-}
-
-
-
-/*
-  fetch a record inside a transaction
- */
-static int db_ctdb_transaction_fetch(struct db_ctdb_ctx *db, 
-				     TALLOC_CTX *mem_ctx, 
-				     TDB_DATA key, TDB_DATA *data)
-{
-	struct db_ctdb_transaction_handle *h = db->transaction;
-
-	*data = tdb_fetch(h->ctx->wtdb->tdb, key);
-
-	if (data->dptr != NULL) {
-		uint8_t *oldptr = (uint8_t *)data->dptr;
-		data->dsize -= sizeof(struct ctdb_ltdb_header);
-		if (data->dsize == 0) {
-			data->dptr = NULL;
-		} else {
-			data->dptr = (uint8 *)
-				talloc_memdup(
-					mem_ctx, data->dptr+sizeof(struct ctdb_ltdb_header),
-					data->dsize);
-		}
-		SAFE_FREE(oldptr);
-		if (data->dptr == NULL && data->dsize != 0) {
-			return -1;
-		}
-	}
-
-	if (!h->in_replay) {
-		h->m_all = db_ctdb_marshall_add(h, h->m_all, h->ctx->db_id, 1, key, NULL, *data);
-		if (h->m_all == NULL) {
-			DEBUG(0,(__location__ " Failed to add to marshalling record\n"));
-			data->dsize = 0;
-			talloc_free(data->dptr);
-			return -1;
-		}
-	}
-
-	return 0;
-}
-
-
-static NTSTATUS db_ctdb_store_transaction(struct db_record *rec, TDB_DATA data, int flag);
-static NTSTATUS db_ctdb_delete_transaction(struct db_record *rec);
-
-static struct db_record *db_ctdb_fetch_locked_transaction(struct db_ctdb_ctx *ctx,
-							  TALLOC_CTX *mem_ctx,
-							  TDB_DATA key)
-{
-	struct db_record *result;
-	TDB_DATA ctdb_data;
-
-	if (!(result = talloc(mem_ctx, struct db_record))) {
-		DEBUG(0, ("talloc failed\n"));
-		return NULL;
-	}
-
-	result->private_data = ctx->transaction;
-
-	result->key.dsize = key.dsize;
-	result->key.dptr = (uint8 *)talloc_memdup(result, key.dptr, key.dsize);
-	if (result->key.dptr == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		TALLOC_FREE(result);
-		return NULL;
-	}
-
-	result->store = db_ctdb_store_transaction;
-	result->delete_rec = db_ctdb_delete_transaction;
-
-	ctdb_data = tdb_fetch(ctx->wtdb->tdb, key);
-	if (ctdb_data.dptr == NULL) {
-		/* create the record */
-		result->value = tdb_null;
-		return result;
-	}
-
-	result->value.dsize = ctdb_data.dsize - sizeof(struct ctdb_ltdb_header);
-	result->value.dptr = NULL;
-
-	if ((result->value.dsize != 0)
-	    && !(result->value.dptr = (uint8 *)talloc_memdup(
-			 result, ctdb_data.dptr + sizeof(struct ctdb_ltdb_header),
-			 result->value.dsize))) {
-		DEBUG(0, ("talloc failed\n"));
-		TALLOC_FREE(result);
-	}
-
-	SAFE_FREE(ctdb_data.dptr);
-
-	return result;
-}
-
-static int db_ctdb_record_destructor(struct db_record **recp)
-{
-	struct db_record *rec = talloc_get_type_abort(*recp, struct db_record);
-	struct db_ctdb_transaction_handle *h = talloc_get_type_abort(
-		rec->private_data, struct db_ctdb_transaction_handle);
-	int ret = h->ctx->db->transaction_commit(h->ctx->db);
-	if (ret != 0) {
-		DEBUG(0,(__location__ " transaction_commit failed\n"));
-	}
-	return 0;
-}
-
-/*
-  auto-create a transaction for persistent databases
- */
-static struct db_record *db_ctdb_fetch_locked_persistent(struct db_ctdb_ctx *ctx,
-							 TALLOC_CTX *mem_ctx,
-							 TDB_DATA key)
-{
-	int res;
-	struct db_record *rec, **recp;
-
-	res = db_ctdb_transaction_start(ctx->db);
-	if (res == -1) {
-		return NULL;
-	}
-
-	rec = db_ctdb_fetch_locked_transaction(ctx, mem_ctx, key);
-	if (rec == NULL) {
-		ctx->db->transaction_cancel(ctx->db);		
-		return NULL;
-	}
-
-	/* destroy this transaction when we release the lock */
-	recp = talloc(rec, struct db_record *);
-	if (recp == NULL) {
-		ctx->db->transaction_cancel(ctx->db);
-		talloc_free(rec);
-		return NULL;
-	}
-	*recp = rec;
-	talloc_set_destructor(recp, db_ctdb_record_destructor);
-	return rec;
-}
-
-
-/*
-  stores a record inside a transaction
- */
-static int db_ctdb_transaction_store(struct db_ctdb_transaction_handle *h, 
-				     TDB_DATA key, TDB_DATA data)
-{
-	TALLOC_CTX *tmp_ctx = talloc_new(h);
-	int ret;
-	TDB_DATA rec;
-	struct ctdb_ltdb_header header;
-
-	/* we need the header so we can update the RSN */
-	rec = tdb_fetch(h->ctx->wtdb->tdb, key);
-	if (rec.dptr == NULL) {
-		/* the record doesn't exist - create one with us as dmaster.
-		   This is only safe because we are in a transaction and this
-		   is a persistent database */
-		ZERO_STRUCT(header);
-		header.dmaster = get_my_vnn();
-	} else {
-		memcpy(&header, rec.dptr, sizeof(struct ctdb_ltdb_header));
-		rec.dsize -= sizeof(struct ctdb_ltdb_header);
-		/* a special case, we are writing the same data that is there now */
-		if (data.dsize == rec.dsize &&
-		    memcmp(data.dptr, rec.dptr + sizeof(struct ctdb_ltdb_header), data.dsize) == 0) {
-			SAFE_FREE(rec.dptr);
-			talloc_free(tmp_ctx);
-			return 0;
-		}
-		SAFE_FREE(rec.dptr);
-	}
-
-	header.rsn++;
-
-	if (!h->in_replay) {
-		h->m_all = db_ctdb_marshall_add(h, h->m_all, h->ctx->db_id, 0, key, NULL, data);
-		if (h->m_all == NULL) {
-			DEBUG(0,(__location__ " Failed to add to marshalling record\n"));
-			talloc_free(tmp_ctx);
-			return -1;
-		}
-	}
-		
-	h->m_write = db_ctdb_marshall_add(h, h->m_write, h->ctx->db_id, 0, key, &header, data);
-	if (h->m_write == NULL) {
-		DEBUG(0,(__location__ " Failed to add to marshalling record\n"));
-		talloc_free(tmp_ctx);
-		return -1;
-	}
-	
-	rec.dsize = data.dsize + sizeof(struct ctdb_ltdb_header);
-	rec.dptr = talloc_size(tmp_ctx, rec.dsize);
-	if (rec.dptr == NULL) {
-		DEBUG(0,(__location__ " Failed to alloc record\n"));
-		talloc_free(tmp_ctx);
-		return -1;
-	}
-	memcpy(rec.dptr, &header, sizeof(struct ctdb_ltdb_header));
-	memcpy(sizeof(struct ctdb_ltdb_header) + (uint8_t *)rec.dptr, data.dptr, data.dsize);
-
-	ret = tdb_store(h->ctx->wtdb->tdb, key, rec, TDB_REPLACE);
-
-	talloc_free(tmp_ctx);
-	
-	return ret;
-}
-
-
-/* 
-   a record store inside a transaction
- */
-static NTSTATUS db_ctdb_store_transaction(struct db_record *rec, TDB_DATA data, int flag)
-{
-	struct db_ctdb_transaction_handle *h = talloc_get_type_abort(
-		rec->private_data, struct db_ctdb_transaction_handle);
-	int ret;
-
-	ret = db_ctdb_transaction_store(h, rec->key, data);
-	if (ret != 0) {
-		return tdb_error_to_ntstatus(h->ctx->wtdb->tdb);
-	}
-	return NT_STATUS_OK;
-}
-
-/* 
-   a record delete inside a transaction
- */
-static NTSTATUS db_ctdb_delete_transaction(struct db_record *rec)
-{
-	struct db_ctdb_transaction_handle *h = talloc_get_type_abort(
-		rec->private_data, struct db_ctdb_transaction_handle);
-	int ret;
-
-	ret = db_ctdb_transaction_store(h, rec->key, tdb_null);
-	if (ret != 0) {
-		return tdb_error_to_ntstatus(h->ctx->wtdb->tdb);
-	}
-	return NT_STATUS_OK;
-}
-
-
-/*
-  replay a transaction
- */
-static int ctdb_replay_transaction(struct db_ctdb_transaction_handle *h)
-{
-	int ret, i;
-	struct ctdb_rec_data *rec = NULL;
-
-	h->in_replay = true;
-	talloc_free(h->m_write);
-	h->m_write = NULL;
-
-	ret = db_ctdb_transaction_fetch_start(h);
-	if (ret != 0) {
-		return ret;
-	}
-
-	for (i=0;i<h->m_all->count;i++) {
-		TDB_DATA key, data;
-
-		rec = db_ctdb_marshall_loop_next(h->m_all, rec, NULL, NULL, &key, &data);
-		if (rec == NULL) {
-			DEBUG(0, (__location__ " Out of records in ctdb_replay_transaction?\n"));
-			goto failed;
-		}
-
-		if (rec->reqid == 0) {
-			/* its a store */
-			if (db_ctdb_transaction_store(h, key, data) != 0) {
-				goto failed;
-			}
-		} else {
-			TDB_DATA data2;
-			TALLOC_CTX *tmp_ctx = talloc_new(h);
-
-			if (db_ctdb_transaction_fetch(h->ctx, tmp_ctx, key, &data2) != 0) {
-				talloc_free(tmp_ctx);
-				goto failed;
-			}
-			if (data2.dsize != data.dsize ||
-			    memcmp(data2.dptr, data.dptr, data.dsize) != 0) {
-				/* the record has changed on us - we have to give up */
-				talloc_free(tmp_ctx);
-				goto failed;
-			}
-			talloc_free(tmp_ctx);
-		}
-	}
-	
-	return 0;
-
-failed:
-	tdb_transaction_cancel(h->ctx->wtdb->tdb);
-	return -1;
-}
-
-
-/*
-  commit a transaction
- */
-static int db_ctdb_transaction_commit(struct db_context *db)
-{
-	struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
-							struct db_ctdb_ctx);
-	NTSTATUS rets;
-	int ret;
-	int status;
-	int retries = 0;
-	struct db_ctdb_transaction_handle *h = ctx->transaction;
-	enum ctdb_controls failure_control = CTDB_CONTROL_TRANS2_ERROR;
-
-	if (h == NULL) {
-		DEBUG(0,(__location__ " transaction commit with no open transaction on db 0x%08x\n", ctx->db_id));
-		return -1;
-	}
-
-	if (h->nested_cancel) {
-		db->transaction_cancel(db);
-		DEBUG(5,(__location__ " Failed transaction commit after nested cancel\n"));
-		return -1;
-	}
-
-	if (h->nesting != 0) {
-		h->nesting--;
-		return 0;
-	}
-
-	DEBUG(5,(__location__ " Commit transaction on db 0x%08x\n", ctx->db_id));
-
-	talloc_set_destructor(h, NULL);
-
-	/* our commit strategy is quite complex.
-
-	   - we first try to commit the changes to all other nodes
-
-	   - if that works, then we commit locally and we are done
-
-	   - if a commit on another node fails, then we need to cancel
-	     the transaction, then restart the transaction (thus
-	     opening a window of time for a pending recovery to
-	     complete), then replay the transaction, checking all the
-	     reads and writes (checking that reads give the same data,
-	     and writes succeed). Then we retry the transaction to the
-	     other nodes
-	*/
-
-again:
-	if (h->m_write == NULL) {
-		/* no changes were made, potentially after a retry */
-		tdb_transaction_cancel(h->ctx->wtdb->tdb);
-		talloc_free(h);
-		ctx->transaction = NULL;
-		return 0;
-	}
-
-	/* tell ctdbd to commit to the other nodes */
-	rets = ctdbd_control_local(messaging_ctdbd_connection(), 
-				   retries==0?CTDB_CONTROL_TRANS2_COMMIT:CTDB_CONTROL_TRANS2_COMMIT_RETRY, 
-				   h->ctx->db_id, 0,
-				   db_ctdb_marshall_finish(h->m_write), NULL, NULL, &status);
-	if (!NT_STATUS_IS_OK(rets) || status != 0) {
-		tdb_transaction_cancel(h->ctx->wtdb->tdb);
-		sleep(1);
-
-		if (!NT_STATUS_IS_OK(rets)) {
-			failure_control = CTDB_CONTROL_TRANS2_ERROR;			
-		} else {
-			/* work out what error code we will give if we 
-			   have to fail the operation */
-			switch ((enum ctdb_trans2_commit_error)status) {
-			case CTDB_TRANS2_COMMIT_SUCCESS:
-			case CTDB_TRANS2_COMMIT_SOMEFAIL:
-			case CTDB_TRANS2_COMMIT_TIMEOUT:
-				failure_control = CTDB_CONTROL_TRANS2_ERROR;
-				break;
-			case CTDB_TRANS2_COMMIT_ALLFAIL:
-				failure_control = CTDB_CONTROL_TRANS2_FINISHED;
-				break;
-			}
-		}
-
-		if (++retries == 5) {
-			DEBUG(0,(__location__ " Giving up transaction on db 0x%08x after %d retries failure_control=%u\n", 
-				 h->ctx->db_id, retries, (unsigned)failure_control));
-			ctdbd_control_local(messaging_ctdbd_connection(), failure_control,
-					    h->ctx->db_id, CTDB_CTRL_FLAG_NOREPLY, 
-					    tdb_null, NULL, NULL, NULL);
-			h->ctx->transaction = NULL;
-			talloc_free(h);
-			ctx->transaction = NULL;
-			return -1;			
-		}
-
-		if (ctdb_replay_transaction(h) != 0) {
-			DEBUG(0,(__location__ " Failed to replay transaction failure_control=%u\n",
-				 (unsigned)failure_control));
-			ctdbd_control_local(messaging_ctdbd_connection(), failure_control,
-					    h->ctx->db_id, CTDB_CTRL_FLAG_NOREPLY, 
-					    tdb_null, NULL, NULL, NULL);
-			h->ctx->transaction = NULL;
-			talloc_free(h);
-			ctx->transaction = NULL;
-			return -1;
-		}
-		goto again;
-	} else {
-		failure_control = CTDB_CONTROL_TRANS2_ERROR;
-	}
-
-	/* do the real commit locally */
-	ret = tdb_transaction_commit(h->ctx->wtdb->tdb);
-	if (ret != 0) {
-		DEBUG(0,(__location__ " Failed to commit transaction failure_control=%u\n",
-			 (unsigned)failure_control));
-		ctdbd_control_local(messaging_ctdbd_connection(), failure_control, h->ctx->db_id, 
-				    CTDB_CTRL_FLAG_NOREPLY, tdb_null, NULL, NULL, NULL);
-		h->ctx->transaction = NULL;
-		talloc_free(h);
-		return ret;
-	}
-
-	/* tell ctdbd that we are finished with our local commit */
-	ctdbd_control_local(messaging_ctdbd_connection(), CTDB_CONTROL_TRANS2_FINISHED, 
-			    h->ctx->db_id, CTDB_CTRL_FLAG_NOREPLY, 
-			    tdb_null, NULL, NULL, NULL);
-	h->ctx->transaction = NULL;
-	talloc_free(h);
-	return 0;
-}
-
-
-/*
-  cancel a transaction
- */
-static int db_ctdb_transaction_cancel(struct db_context *db)
-{
-	struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
-							struct db_ctdb_ctx);
-	struct db_ctdb_transaction_handle *h = ctx->transaction;
-
-	if (h == NULL) {
-		DEBUG(0,(__location__ " transaction cancel with no open transaction on db 0x%08x\n", ctx->db_id));
-		return -1;
-	}
-
-	if (h->nesting != 0) {
-		h->nesting--;
-		h->nested_cancel = true;
-		return 0;
-	}
-
-	DEBUG(5,(__location__ " Cancel transaction on db 0x%08x\n", ctx->db_id));
-
-	ctx->transaction = NULL;
-	talloc_free(h);
-	return 0;
-}
-
-
-static NTSTATUS db_ctdb_store(struct db_record *rec, TDB_DATA data, int flag)
-{
 	struct db_ctdb_rec *crec = talloc_get_type_abort(
 		rec->private_data, struct db_ctdb_rec);
 	TDB_DATA cdata;
 	int ret;
+	NTSTATUS status;
 
 	cdata.dsize = sizeof(crec->header) + data.dsize;
 
@@ -782,32 +74,42 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
+	crec->header.rsn++;
+
 	memcpy(cdata.dptr, &crec->header, sizeof(crec->header));
 	memcpy(cdata.dptr + sizeof(crec->header), data.dptr, data.dsize);
 
 	ret = tdb_store(crec->ctdb_ctx->wtdb->tdb, rec->key, cdata, TDB_REPLACE);
+	status = (ret == 0) ? NT_STATUS_OK : NT_STATUS_INTERNAL_DB_CORRUPTION;
+	
+	/* now tell ctdbd to update this record on all other nodes */
+	if (NT_STATUS_IS_OK(status)) {
+		status = ctdbd_persistent_store(messaging_ctdbd_connection(), crec->ctdb_ctx->db_id, rec->key, cdata);
+	}
 
 	SAFE_FREE(cdata.dptr);
 
-	return (ret == 0) ? NT_STATUS_OK
-			  : tdb_error_to_ntstatus(crec->ctdb_ctx->wtdb->tdb);
+	return status;
 }
 
-
-
 static NTSTATUS db_ctdb_delete(struct db_record *rec)
 {
+	struct db_ctdb_rec *crec = talloc_get_type_abort(
+		rec->private_data, struct db_ctdb_rec);
 	TDB_DATA data;
+	int ret;
 
 	/*
 	 * We have to store the header with empty data. TODO: Fix the
 	 * tdb-level cleanup
 	 */
 
-	ZERO_STRUCT(data);
+	data.dptr = (uint8 *)&crec->header;
+	data.dsize = sizeof(crec->header);
 
-	return db_ctdb_store(rec, data, 0);
+	ret = tdb_store(crec->ctdb_ctx->wtdb->tdb, rec->key, data, TDB_REPLACE);
 
+	return (ret == 0) ? NT_STATUS_OK : NT_STATUS_INTERNAL_DB_CORRUPTION;
 }
 
 static int db_ctdb_record_destr(struct db_record* data)
@@ -830,11 +132,12 @@
 	return 0;
 }
 
-static struct db_record *fetch_locked_internal(struct db_ctdb_ctx *ctx,
-					       TALLOC_CTX *mem_ctx,
-					       TDB_DATA key,
-					       bool persistent)
+static struct db_record *db_ctdb_fetch_locked(struct db_context *db,
+					      TALLOC_CTX *mem_ctx,
+					      TDB_DATA key)
 {
+	struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
+							struct db_ctdb_ctx);
 	struct db_record *result;
 	struct db_ctdb_rec *crec;
 	NTSTATUS status;
@@ -883,7 +186,11 @@
 		return NULL;
 	}
 
-	result->store = db_ctdb_store;
+	if (db->persistent) {
+		result->store = db_ctdb_store_persistent;
+	} else {
+		result->store = db_ctdb_store;
+	}
 	result->delete_rec = db_ctdb_delete;
 	talloc_set_destructor(result, db_ctdb_record_destr);
 
@@ -946,24 +253,6 @@
 	return result;
 }
 
-static struct db_record *db_ctdb_fetch_locked(struct db_context *db,
-					      TALLOC_CTX *mem_ctx,
-					      TDB_DATA key)
-{
-	struct db_ctdb_ctx *ctx = talloc_get_type_abort(db->private_data,
-							struct db_ctdb_ctx);
-
-	if (ctx->transaction != NULL) {
-		return db_ctdb_fetch_locked_transaction(ctx, mem_ctx, key);
-	}
-
-	if (db->persistent) {
-		return db_ctdb_fetch_locked_persistent(ctx, mem_ctx, key);
-	}
-
-	return fetch_locked_internal(ctx, mem_ctx, key, db->persistent);
-}
-
 /*
   fetch (unlocked, no migration) operation on ctdb
  */
@@ -975,10 +264,6 @@
 	NTSTATUS status;
 	TDB_DATA ctdb_data;
 
-	if (ctx->transaction) {
-		return db_ctdb_transaction_fetch(ctx, mem_ctx, key, data);
-	}
-
 	/* try a direct fetch */
 	ctdb_data = tdb_fetch(ctx->wtdb->tdb, key);
 
@@ -1156,6 +441,14 @@
 	return tdb_get_seqnum(ctx->wtdb->tdb);
 }
 
+static int db_ctdb_trans_dummy(struct db_context *db)
+{
+	/*
+	 * Not implemented yet, just return ok
+	 */
+	return 0;
+}
+
 struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
 				const char *name,
 				int hash_size, int tdb_flags,
@@ -1182,9 +475,6 @@
 		return NULL;
 	}
 
-	db_ctdb->transaction = NULL;
-	db_ctdb->db = result;
-
 	if (!NT_STATUS_IS_OK(ctdbd_db_attach(messaging_ctdbd_connection(),name, &db_ctdb->db_id, tdb_flags))) {
 		DEBUG(0, ("ctdbd_db_attach failed for %s\n", name));
 		TALLOC_FREE(result);
@@ -1217,9 +507,9 @@
 	result->traverse = db_ctdb_traverse;
 	result->traverse_read = db_ctdb_traverse_read;
 	result->get_seqnum = db_ctdb_get_seqnum;
-	result->transaction_start = db_ctdb_transaction_start;
-	result->transaction_commit = db_ctdb_transaction_commit;
-	result->transaction_cancel = db_ctdb_transaction_cancel;
+	result->transaction_start = db_ctdb_trans_dummy;
+	result->transaction_commit = db_ctdb_trans_dummy;
+	result->transaction_cancel = db_ctdb_trans_dummy;
 
 	DEBUG(3,("db_open_ctdb: opened database '%s' with dbid 0x%x\n",
 		 name, db_ctdb->db_id));

Copied: branches/samba/upstream/source/lib/dbwrap_tdb2.c (from rev 2163, branches/samba/upstream/source/lib/dbwrap_tdb2.c)
===================================================================
--- branches/samba/upstream/source/lib/dbwrap_tdb2.c	                        (rev 0)
+++ branches/samba/upstream/source/lib/dbwrap_tdb2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,1265 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   Database interface wrapper around tdb/ctdb
+
+   Copyright (C) Volker Lendecke 2005-2007
+   Copyright (C) Stefan Metzmacher 2008
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "librpc/gen_ndr/ndr_messaging.h"
+
+struct db_tdb2_ctx {
+	struct db_context *db;
+	const char *name;
+	struct tdb_wrap *mtdb;
+	const char *mtdb_path;
+	bool master_transaction;
+	struct {
+		int hash_size;
+		int tdb_flags;
+		int open_flags;
+		mode_t mode;
+	} open;
+	struct tdb_wrap *ltdb;
+	const char *ltdb_path;
+	bool local_transaction;
+	int transaction;
+	bool out_of_sync;
+	uint32_t lseqnum;
+	uint32_t mseqnum;
+#define DB_TDB2_MASTER_SEQNUM_KEYSTR "DB_TDB2_MASTER_SEQNUM_KEYSTR"
+	TDB_DATA mseqkey;
+	uint32_t max_buffer_size;
+	uint32_t current_buffer_size;
+	struct dbwrap_tdb2_changes changes;
+};
+
+
+static NTSTATUS db_tdb2_store(struct db_record *rec, TDB_DATA data, int flag);
+static NTSTATUS db_tdb2_delete(struct db_record *rec);
+
+static void db_tdb2_queue_change(struct db_tdb2_ctx *db_ctx, const TDB_DATA key);
+static void db_tdb2_send_notify(struct db_tdb2_ctx *db_ctx);
+
+static struct db_context *db_open_tdb2_ex(TALLOC_CTX *mem_ctx,
+					  const char *name,
+					  int hash_size, int tdb_flags,
+					  int open_flags, mode_t mode,
+					  const struct dbwrap_tdb2_changes *chgs);
+
+static int db_tdb2_sync_from_master(struct db_tdb2_ctx *db_ctx,
+				    const struct dbwrap_tdb2_changes *changes);
+
+static int db_tdb2_open_master(struct db_tdb2_ctx *db_ctx, bool transaction,
+			       const struct dbwrap_tdb2_changes *changes);
+static int db_tdb2_commit_local(struct db_tdb2_ctx *db_ctx, uint32_t mseqnum);
+static int db_tdb2_close_master(struct db_tdb2_ctx *db_ctx);
+static int db_tdb2_transaction_cancel(struct db_context *db);
+
+static void db_tdb2_receive_changes(struct messaging_context *msg,
+				    void *private_data,
+				    uint32_t msg_type,
+				    struct server_id server_id,
+				    DATA_BLOB *data);
+
+static struct messaging_context *global_tdb2_msg_ctx;
+static bool global_tdb2_msg_ctx_initialized;
+
+void db_tdb2_setup_messaging(struct messaging_context *msg_ctx, bool server)
+{
+	global_tdb2_msg_ctx = msg_ctx;
+
+	global_tdb2_msg_ctx_initialized = true;
+
+	if (!server) {
+		return;
+	}
+
+	if (!lp_parm_bool(-1, "dbwrap", "use_tdb2", false)) {
+		return;
+	}
+
+	messaging_register(msg_ctx, NULL, MSG_DBWRAP_TDB2_CHANGES,
+			   db_tdb2_receive_changes);
+}
+
+static struct messaging_context *db_tdb2_get_global_messaging_context(void)
+{
+	struct messaging_context *msg_ctx;
+
+	if (global_tdb2_msg_ctx_initialized) {
+		return global_tdb2_msg_ctx;
+	}
+
+	msg_ctx = messaging_init(NULL, procid_self(),
+				 event_context_init(NULL));
+
+	db_tdb2_setup_messaging(msg_ctx, false);
+
+	return global_tdb2_msg_ctx;
+}
+
+struct tdb_fetch_locked_state {
+	TALLOC_CTX *mem_ctx;
+	struct db_record *result;
+};
+
+static int db_tdb2_fetchlock_parse(TDB_DATA key, TDB_DATA data,
+				  void *private_data)
+{
+	struct tdb_fetch_locked_state *state =
+		(struct tdb_fetch_locked_state *)private_data;
+
+	state->result = (struct db_record *)talloc_size(
+		state->mem_ctx,
+		sizeof(struct db_record) + key.dsize + data.dsize);
+
+	if (state->result == NULL) {
+		return 0;
+	}
+
+	state->result->key.dsize = key.dsize;
+	state->result->key.dptr = ((uint8 *)state->result)
+		+ sizeof(struct db_record);
+	memcpy(state->result->key.dptr, key.dptr, key.dsize);
+
+	state->result->value.dsize = data.dsize;
+
+	if (data.dsize > 0) {
+		state->result->value.dptr = state->result->key.dptr+key.dsize;
+		memcpy(state->result->value.dptr, data.dptr, data.dsize);
+	}
+	else {
+		state->result->value.dptr = NULL;
+	}
+
+	return 0;
+}
+
+static struct db_record *db_tdb2_fetch_locked(struct db_context *db,
+					      TALLOC_CTX *mem_ctx, TDB_DATA key)
+{
+	struct db_tdb2_ctx *ctx = talloc_get_type_abort(db->private_data,
+							struct db_tdb2_ctx);
+	struct tdb_fetch_locked_state state;
+
+	/* Do not accidently allocate/deallocate w/o need when debug level is lower than needed */
+	if(DEBUGLEVEL >= 10) {
+		char *keystr = hex_encode(NULL, (unsigned char*)key.dptr, key.dsize);
+		DEBUG(10, (DEBUGLEVEL > 10
+			   ? "Locking key %s\n" : "Locking key %.20s\n",
+			   keystr));
+		TALLOC_FREE(keystr);
+	}
+
+	/*
+	 * we only support modifications within a
+	 * started transaction.
+	 */
+	if (ctx->transaction == 0) {
+		DEBUG(0, ("db_tdb2_fetch_locked[%s]: no transaction started\n",
+			  ctx->name));
+		smb_panic("no transaction");
+		return NULL;
+	}
+
+	state.mem_ctx = mem_ctx;
+	state.result = NULL;
+
+	tdb_parse_record(ctx->mtdb->tdb, key, db_tdb2_fetchlock_parse, &state);
+
+	if (state.result == NULL) {
+		db_tdb2_fetchlock_parse(key, tdb_null, &state);
+	}
+
+	if (state.result == NULL) {
+		return NULL;
+	}
+
+	state.result->private_data = talloc_reference(state.result, ctx);
+	state.result->store = db_tdb2_store;
+	state.result->delete_rec = db_tdb2_delete;
+
+	DEBUG(10, ("Allocated locked data 0x%p\n", state.result));
+
+	return state.result;
+}
+
+struct tdb_fetch_state {
+	TALLOC_CTX *mem_ctx;
+	int result;
+	TDB_DATA data;
+};
+
+static int db_tdb2_fetch_parse(TDB_DATA key, TDB_DATA data,
+			       void *private_data)
+{
+	struct tdb_fetch_state *state =
+		(struct tdb_fetch_state *)private_data;
+
+	state->data.dptr = (uint8 *)talloc_memdup(state->mem_ctx, data.dptr,
+						  data.dsize);
+	if (state->data.dptr == NULL) {
+		state->result = -1;
+		return 0;
+	}
+
+	state->data.dsize = data.dsize;
+	return 0;
+}
+
+static void db_tdb2_resync_before_read(struct db_tdb2_ctx *db_ctx, TDB_DATA *kbuf)
+{
+	if (db_ctx->mtdb) {
+		return;
+	}
+
+	if (!db_ctx->out_of_sync) {
+		return;
+	}
+
+	/*
+	 * this function operates on the local copy,
+	 * so hide the DB_TDB2_MASTER_SEQNUM_KEYSTR from the caller.
+	 */
+	if (kbuf && (db_ctx->mseqkey.dsize == kbuf->dsize) &&
+	    (memcmp(db_ctx->mseqkey.dptr, kbuf->dptr, kbuf->dsize) == 0)) {
+		return;
+	}
+
+	DEBUG(0,("resync_before_read[%s/%s]\n",
+		 db_ctx->mtdb_path, db_ctx->ltdb_path));
+
+	db_tdb2_open_master(db_ctx, false, NULL);
+	db_tdb2_close_master(db_ctx);
+}
+
+static int db_tdb2_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
+			 TDB_DATA key, TDB_DATA *pdata)
+{
+	struct db_tdb2_ctx *ctx = talloc_get_type_abort(
+		db->private_data, struct db_tdb2_ctx);
+
+	struct tdb_fetch_state state;
+
+	db_tdb2_resync_before_read(ctx, &key);
+
+	if (ctx->out_of_sync) {
+		DEBUG(0,("out of sync[%s] failing fetch\n",
+			 ctx->ltdb_path));
+		errno = EIO;
+		return -1;
+	}
+
+	state.mem_ctx = mem_ctx;
+	state.result = 0;
+	state.data = tdb_null;
+
+	tdb_parse_record(ctx->ltdb->tdb, key, db_tdb2_fetch_parse, &state);
+
+	if (state.result == -1) {
+		return -1;
+	}
+
+	*pdata = state.data;
+	return 0;
+}
+
+static NTSTATUS db_tdb2_store(struct db_record *rec, TDB_DATA data, int flag)
+{
+	struct db_tdb2_ctx *ctx = talloc_get_type_abort(rec->private_data,
+						       struct db_tdb2_ctx);
+	int ret;
+
+	/*
+	 * This has a bug: We need to replace rec->value for correct
+	 * operation, but right now brlock and locking don't use the value
+	 * anymore after it was stored.
+	 */
+
+	/* first store it to the master copy */
+	ret = tdb_store(ctx->mtdb->tdb, rec->key, data, flag);
+	if (ret != 0) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	/* then store it to the local copy */
+	ret = tdb_store(ctx->ltdb->tdb, rec->key, data, flag);
+	if (ret != 0) {
+		/* try to restore the old value in the master copy */
+		if (rec->value.dptr) {
+			tdb_store(ctx->mtdb->tdb, rec->key,
+				  rec->value, TDB_REPLACE);
+		} else {
+			tdb_delete(ctx->mtdb->tdb, rec->key);
+		}
+		return NT_STATUS_INTERNAL_DB_CORRUPTION;
+	}
+
+	db_tdb2_queue_change(ctx, rec->key);
+
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS db_tdb2_delete(struct db_record *rec)
+{
+	struct db_tdb2_ctx *ctx = talloc_get_type_abort(rec->private_data,
+						       struct db_tdb2_ctx);
+	int ret;
+
+	ret = tdb_delete(ctx->mtdb->tdb, rec->key);
+	if (ret != 0) {
+		if (tdb_error(ctx->mtdb->tdb) == TDB_ERR_NOEXIST) {
+			return NT_STATUS_NOT_FOUND;
+		}
+
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	ret = tdb_delete(ctx->ltdb->tdb, rec->key);
+	if (ret != 0) {
+		/* try to restore the value in the master copy */
+		tdb_store(ctx->mtdb->tdb, rec->key,
+			  rec->value, TDB_REPLACE);
+		return NT_STATUS_INTERNAL_DB_CORRUPTION;
+	}
+
+	db_tdb2_queue_change(ctx, rec->key);
+
+	return NT_STATUS_OK;
+}
+
+struct db_tdb2_traverse_ctx {
+	struct db_tdb2_ctx *db_ctx;
+	int (*f)(struct db_record *rec, void *private_data);
+	void *private_data;
+};
+
+static int db_tdb2_traverse_func(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
+				void *private_data)
+{
+	struct db_tdb2_traverse_ctx *ctx =
+		(struct db_tdb2_traverse_ctx *)private_data;
+	struct db_record rec;
+
+	/* this function operates on the master copy */
+
+	rec.key = kbuf;
+	rec.value = dbuf;
+	rec.store = db_tdb2_store;
+	rec.delete_rec = db_tdb2_delete;
+	rec.private_data = ctx->db_ctx;
+
+	return ctx->f(&rec, ctx->private_data);
+}
+
+static int db_tdb2_traverse(struct db_context *db,
+			   int (*f)(struct db_record *rec, void *private_data),
+			   void *private_data)
+{
+	struct db_tdb2_ctx *db_ctx =
+		talloc_get_type_abort(db->private_data, struct db_tdb2_ctx);
+	struct db_tdb2_traverse_ctx ctx;
+
+	/*
+	 * we only support modifications within a
+	 * started transaction.
+	 */
+	if (db_ctx->transaction == 0) {
+		DEBUG(0, ("db_tdb2_traverse[%s]: no transaction started\n",
+			  db_ctx->name));
+		smb_panic("no transaction");
+		return -1;
+	}
+
+	/* here we traverse the master copy */
+	ctx.db_ctx = db_ctx;
+	ctx.f = f;
+	ctx.private_data = private_data;
+	return tdb_traverse(db_ctx->mtdb->tdb, db_tdb2_traverse_func, &ctx);
+}
+
+static NTSTATUS db_tdb2_store_deny(struct db_record *rec, TDB_DATA data, int flag)
+{
+	return NT_STATUS_MEDIA_WRITE_PROTECTED;
+}
+
+static NTSTATUS db_tdb2_delete_deny(struct db_record *rec)
+{
+	return NT_STATUS_MEDIA_WRITE_PROTECTED;
+}
+
+static int db_tdb2_traverse_read_func(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
+				void *private_data)
+{
+	struct db_tdb2_traverse_ctx *ctx =
+		(struct db_tdb2_traverse_ctx *)private_data;
+	struct db_record rec;
+
+	/*
+	 * this function operates on the local copy,
+	 * so hide the DB_TDB2_MASTER_SEQNUM_KEYSTR from the caller.
+	 */
+	if ((ctx->db_ctx->mseqkey.dsize == kbuf.dsize) &&
+	    (memcmp(ctx->db_ctx->mseqkey.dptr, kbuf.dptr, kbuf.dsize) == 0)) {
+		return 0;
+	}
+
+	rec.key = kbuf;
+	rec.value = dbuf;
+	rec.store = db_tdb2_store_deny;
+	rec.delete_rec = db_tdb2_delete_deny;
+	rec.private_data = ctx->db_ctx;
+
+	return ctx->f(&rec, ctx->private_data);
+}
+
+static int db_tdb2_traverse_read(struct db_context *db,
+			   int (*f)(struct db_record *rec, void *private_data),
+			   void *private_data)
+{
+	struct db_tdb2_ctx *db_ctx =
+		talloc_get_type_abort(db->private_data, struct db_tdb2_ctx);
+	struct db_tdb2_traverse_ctx ctx;
+	int ret;
+
+	db_tdb2_resync_before_read(db_ctx, NULL);
+
+	if (db_ctx->out_of_sync) {
+		DEBUG(0,("out of sync[%s] failing traverse_read\n",
+			 db_ctx->ltdb_path));
+		errno = EIO;
+		return -1;
+	}
+
+	/* here we traverse the local copy */
+	ctx.db_ctx = db_ctx;
+	ctx.f = f;
+	ctx.private_data = private_data;
+	ret = tdb_traverse_read(db_ctx->ltdb->tdb, db_tdb2_traverse_read_func, &ctx);
+	if (ret > 0) {
+		/* we have filtered one entry */
+		ret--;
+	}
+
+	return ret;
+}
+
+static int db_tdb2_get_seqnum(struct db_context *db)
+
+{
+	struct db_tdb2_ctx *db_ctx =
+		talloc_get_type_abort(db->private_data, struct db_tdb2_ctx);
+	uint32_t nlseq;
+	uint32_t nmseq;
+	bool ok;
+
+	nlseq = tdb_get_seqnum(db_ctx->ltdb->tdb);
+
+	if (nlseq == db_ctx->lseqnum) {
+		return db_ctx->mseqnum;
+	}
+
+	ok = tdb_fetch_uint32_byblob(db_ctx->ltdb->tdb,
+				     db_ctx->mseqkey,
+				     &nmseq);
+	if (!ok) {
+		/* TODO: what should we do here? */
+		return db_ctx->mseqnum;
+	}
+
+	db_ctx->lseqnum = nlseq;
+	db_ctx->mseqnum = nmseq;
+
+	return db_ctx->mseqnum;
+}
+
+static int db_tdb2_transaction_start(struct db_context *db)
+{
+	struct db_tdb2_ctx *db_ctx =
+		talloc_get_type_abort(db->private_data, struct db_tdb2_ctx);
+	int ret;
+
+	if (db_ctx->transaction) {
+		db_ctx->transaction++;
+		return 0;
+	}
+
+	/* we need to open the master tdb in order to */
+	ret = db_tdb2_open_master(db_ctx, true, NULL);
+	if (ret != 0) {
+		return ret;
+	}
+
+	ret = tdb_transaction_start(db_ctx->ltdb->tdb);
+	if (ret != 0) {
+		db_tdb2_close_master(db_ctx);
+		return ret;
+	}
+
+	db_ctx->local_transaction = true;
+	db_ctx->transaction = 1;
+
+	return 0;
+}
+
+static void db_tdb2_queue_change(struct db_tdb2_ctx *db_ctx, const TDB_DATA key)
+{
+	size_t size_needed = 4 + key.dsize;
+	size_t size_new = db_ctx->current_buffer_size + size_needed;
+	uint32_t i;
+	DATA_BLOB *keys;
+
+	db_ctx->changes.num_changes++;
+
+	if (db_ctx->changes.num_changes > 1 &&
+	    db_ctx->changes.keys == NULL) {
+		/*
+		 * this means we already overflowed
+		 */
+		return;
+	}
+
+	if (db_ctx->changes.num_changes == 1) {
+		db_ctx->changes.old_seqnum = db_ctx->mseqnum;
+	}
+
+	for (i=0; i < db_ctx->changes.num_keys; i++) {
+		int ret;
+
+		if (key.dsize != db_ctx->changes.keys[i].length) {
+			continue;
+		}
+		ret = memcmp(key.dptr, db_ctx->changes.keys[i].data, key.dsize);
+		if (ret != 0) {
+			continue;
+		}
+
+		/*
+		 * the key is already in the list
+		 * so we're done
+		 */
+		return;
+	}
+
+	if (db_ctx->max_buffer_size < size_new) {
+		goto overflow;
+	}
+
+	keys = TALLOC_REALLOC_ARRAY(db_ctx, db_ctx->changes.keys,
+				    DATA_BLOB,
+				    db_ctx->changes.num_keys + 1);
+	if (!keys) {
+		goto overflow;
+	}
+	db_ctx->changes.keys = keys;
+
+	keys[db_ctx->changes.num_keys].data = (uint8_t *)talloc_memdup(keys,
+								key.dptr,
+								key.dsize);
+	if (!keys[db_ctx->changes.num_keys].data) {
+		goto overflow;
+	}
+	keys[db_ctx->changes.num_keys].length = key.dsize;
+	db_ctx->changes.num_keys++;
+	db_ctx->current_buffer_size = size_new;
+
+	return;
+
+overflow:
+	/*
+	 * on overflow discard the buffer and let
+	 * the others reload the whole tdb
+	 */
+	db_ctx->current_buffer_size = 0;
+	db_ctx->changes.num_keys = 0;
+	TALLOC_FREE(db_ctx->changes.keys);
+	return;
+}
+
+static void db_tdb2_send_notify(struct db_tdb2_ctx *db_ctx)
+{
+	enum ndr_err_code ndr_err;
+	bool ok;
+	DATA_BLOB blob;
+	struct messaging_context *msg_ctx;
+	int num_msgs = 0;
+	struct server_id self = procid_self();
+
+	msg_ctx = db_tdb2_get_global_messaging_context();
+
+	db_ctx->changes.name = db_ctx->name;
+
+	DEBUG(10,("%s[%s] size[%u/%u] changes[%u] keys[%u] seqnum[%u=>%u]\n",
+		 __FUNCTION__,
+		 db_ctx->changes.name,
+		 db_ctx->current_buffer_size,
+		 db_ctx->max_buffer_size,
+		 db_ctx->changes.num_changes,
+		 db_ctx->changes.num_keys,
+		 db_ctx->changes.old_seqnum,
+		 db_ctx->changes.new_seqnum));
+
+	if (db_ctx->changes.num_changes == 0) {
+		DEBUG(10,("db_tdb2_send_notify[%s]: no changes\n",
+			db_ctx->changes.name));
+		goto done;
+	}
+
+	if (!msg_ctx) {
+		DEBUG(1,("db_tdb2_send_notify[%s]: skipped (no msg ctx)\n",
+			db_ctx->changes.name));
+		goto done;
+	}
+
+	ndr_err = ndr_push_struct_blob(
+		&blob, talloc_tos(), &db_ctx->changes,
+		(ndr_push_flags_fn_t)ndr_push_dbwrap_tdb2_changes);
+	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		DEBUG(0,("db_tdb2_send_notify[%s]: failed to push changes: %s\n",
+			db_ctx->changes.name,
+			nt_errstr(ndr_map_error2ntstatus(ndr_err))));
+		goto done;
+	}
+
+	ok = message_send_all(msg_ctx, MSG_DBWRAP_TDB2_CHANGES,
+			      blob.data, blob.length, &num_msgs);
+	if (!ok) {
+		DEBUG(0,("db_tdb2_send_notify[%s]: failed to send changes\n",
+			db_ctx->changes.name));
+		goto done;
+	}
+
+	DEBUG(10,("db_tdb2_send_notify[%s]: pid %s send %u messages\n",
+		db_ctx->name, procid_str_static(&self), num_msgs));
+
+done:
+	TALLOC_FREE(db_ctx->changes.keys);
+	ZERO_STRUCT(db_ctx->changes);
+
+	return;
+}
+
+static void db_tdb2_receive_changes(struct messaging_context *msg,
+				    void *private_data,
+				    uint32_t msg_type,
+				    struct server_id server_id,
+				    DATA_BLOB *data)
+{
+	enum ndr_err_code ndr_err;
+	struct dbwrap_tdb2_changes changes;
+	struct db_context *db;
+	struct server_id self;
+
+	if (procid_is_me(&server_id)) {
+		DEBUG(0,("db_tdb2_receive_changes: ignore selfpacket\n"));
+		return;
+	}
+
+	self = procid_self();
+
+	DEBUG(10,("db_tdb2_receive_changes: from %s to %s\n",
+		procid_str(debug_ctx(), &server_id),
+		procid_str(debug_ctx(), &self)));
+
+	ndr_err = ndr_pull_struct_blob_all(
+		data, talloc_tos(), &changes,
+		(ndr_pull_flags_fn_t)ndr_pull_dbwrap_tdb2_changes);
+	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		DEBUG(0,("db_tdb2_receive_changes: failed to pull changes: %s\n",
+			nt_errstr(ndr_map_error2ntstatus(ndr_err))));
+		goto done;
+	}
+
+	if(DEBUGLEVEL >= 10) {
+		NDR_PRINT_DEBUG(dbwrap_tdb2_changes, &changes);
+	}
+
+	/* open the db, this will sync it */
+	db = db_open_tdb2_ex(talloc_tos(), changes.name, 0,
+			     0, O_RDWR, 0600, &changes);
+	TALLOC_FREE(db);
+done:
+	return;
+}
+
+static int db_tdb2_transaction_commit(struct db_context *db)
+{
+	struct db_tdb2_ctx *db_ctx =
+		talloc_get_type_abort(db->private_data, struct db_tdb2_ctx);
+	int ret;
+	uint32_t mseqnum;
+
+	if (db_ctx->transaction == 0) {
+		return -1;
+	} else if (db_ctx->transaction > 1) {
+		db_ctx->transaction--;
+		return 0;
+	}
+
+	mseqnum = tdb_get_seqnum(db_ctx->mtdb->tdb);
+	db_ctx->changes.new_seqnum = mseqnum;
+
+	/* first commit to the master copy */
+	ret = tdb_transaction_commit(db_ctx->mtdb->tdb);
+	db_ctx->master_transaction = false;
+	if (ret != 0) {
+		int saved_errno = errno;
+		db_tdb2_transaction_cancel(db);
+		errno = saved_errno;
+		return ret;
+	}
+
+	/*
+	 * Note: as we've already commited the changes to the master copy
+	 * 	 so we ignore errors in the following functions
+	 */
+	ret = db_tdb2_commit_local(db_ctx, mseqnum);
+	if (ret == 0) {
+		db_ctx->out_of_sync = false;
+	} else {
+		db_ctx->out_of_sync = true;
+	}
+
+	db_ctx->transaction = 0;
+
+	db_tdb2_close_master(db_ctx);
+
+	db_tdb2_send_notify(db_ctx);
+
+	return 0;
+}
+
+static int db_tdb2_transaction_cancel(struct db_context *db)
+{
+	struct db_tdb2_ctx *db_ctx =
+		talloc_get_type_abort(db->private_data, struct db_tdb2_ctx);
+	int saved_errno;
+	int ret;
+
+	if (db_ctx->transaction == 0) {
+		return -1;
+	}
+	if (db_ctx->transaction > 1) {
+		db_ctx->transaction--;
+		return 0;
+	}
+
+	/* cancel the transaction and close the master copy */
+	ret = db_tdb2_close_master(db_ctx);
+	saved_errno = errno;
+
+	/* now cancel on the local copy and ignore any error */
+	tdb_transaction_cancel(db_ctx->ltdb->tdb);
+	db_ctx->local_transaction = false;
+
+	db_ctx->transaction = 0;
+
+	errno = saved_errno;
+	return ret;
+}
+
+static int db_tdb2_open_master(struct db_tdb2_ctx *db_ctx, bool transaction,
+			       const struct dbwrap_tdb2_changes *changes)
+{
+	int ret;
+
+	db_ctx->mtdb = tdb_wrap_open(db_ctx,
+				     db_ctx->mtdb_path,
+				     db_ctx->open.hash_size,
+				     db_ctx->open.tdb_flags|TDB_NOMMAP|TDB_SEQNUM,
+				     db_ctx->open.open_flags,
+				     db_ctx->open.mode);
+	if (db_ctx->mtdb == NULL) {
+		DEBUG(0, ("Could not open master tdb[%s]: %s\n",
+			  db_ctx->mtdb_path,
+			  strerror(errno)));
+		return -1;
+	}
+	DEBUG(10,("open_master[%s]\n", db_ctx->mtdb_path));
+
+	if (!db_ctx->ltdb) {
+		struct stat st;
+
+		if (fstat(tdb_fd(db_ctx->mtdb->tdb), &st) == 0) {
+			db_ctx->open.mode = st.st_mode;
+		}
+
+		/* make sure the local one uses the same hash size as the master one */
+		db_ctx->open.hash_size = tdb_hash_size(db_ctx->mtdb->tdb);
+
+		db_ctx->ltdb = tdb_wrap_open(db_ctx,
+					     db_ctx->ltdb_path,
+					     db_ctx->open.hash_size,
+					     db_ctx->open.tdb_flags|TDB_SEQNUM,
+					     db_ctx->open.open_flags|O_CREAT,
+					     db_ctx->open.mode);
+		if (db_ctx->ltdb == NULL) {
+			DEBUG(0, ("Could not open local tdb[%s]: %s\n",
+				  db_ctx->ltdb_path,
+				  strerror(errno)));
+			TALLOC_FREE(db_ctx->mtdb);
+			return -1;
+		}
+		DEBUG(10,("open_local[%s]\n", db_ctx->ltdb_path));
+	}
+
+	if (transaction) {
+		ret = tdb_transaction_start(db_ctx->mtdb->tdb);
+		if (ret != 0) {
+			DEBUG(0,("open failed to start transaction[%s]\n",
+				 db_ctx->mtdb_path));
+			db_tdb2_close_master(db_ctx);
+			return ret;
+		}
+		db_ctx->master_transaction = true;
+	}
+
+	ret = db_tdb2_sync_from_master(db_ctx, changes);
+	if (ret != 0) {
+		DEBUG(0,("open failed to sync from master[%s]\n",
+			 db_ctx->ltdb_path));
+		db_tdb2_close_master(db_ctx);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int db_tdb2_commit_local(struct db_tdb2_ctx *db_ctx, uint32_t mseqnum)
+{
+	bool ok;
+	int ret;
+
+	/* first fetch the master seqnum */
+	db_ctx->mseqnum = mseqnum;
+
+	/* now we try to store the master seqnum in the local tdb */
+	ok = tdb_store_uint32_byblob(db_ctx->ltdb->tdb,
+				     db_ctx->mseqkey,
+				     db_ctx->mseqnum);
+	if (!ok) {
+		tdb_transaction_cancel(db_ctx->ltdb->tdb);
+		db_ctx->local_transaction = false;
+		DEBUG(0,("local failed[%s] store mseq[%u]\n",
+			 db_ctx->ltdb_path, db_ctx->mseqnum));
+		return -1;
+	}
+
+	/* now commit all changes to the local tdb */
+	ret = tdb_transaction_commit(db_ctx->ltdb->tdb);
+	db_ctx->local_transaction = false;
+	if (ret != 0) {
+		DEBUG(0,("local failed[%s] commit mseq[%u]\n",
+			 db_ctx->ltdb_path, db_ctx->mseqnum));
+		return ret;
+	}
+
+	/*
+	 * and update the cached local seqnum this is needed to
+	 * let us cache the master seqnum.
+	 */
+	db_ctx->lseqnum = tdb_get_seqnum(db_ctx->ltdb->tdb);
+	DEBUG(10,("local updated[%s] mseq[%u]\n",
+		  db_ctx->ltdb_path, db_ctx->mseqnum));
+
+	return 0;
+}
+
+static int db_tdb2_close_master(struct db_tdb2_ctx *db_ctx)
+{
+	if (db_ctx->master_transaction) {
+		tdb_transaction_cancel(db_ctx->mtdb->tdb);
+	}
+	db_ctx->master_transaction = false;
+	/* now we can close the master handle */
+	TALLOC_FREE(db_ctx->mtdb);
+
+	DEBUG(10,("close_master[%s] ok\n", db_ctx->mtdb_path));
+	return 0;
+}
+
+static int db_tdb2_traverse_sync_all_func(TDB_CONTEXT *tdb,
+					  TDB_DATA kbuf, TDB_DATA dbuf,
+					  void *private_data)
+{
+	struct db_tdb2_traverse_ctx *ctx =
+		(struct db_tdb2_traverse_ctx *)private_data;
+	uint32_t *seqnum = (uint32_t *)ctx->private_data;
+	int ret;
+
+	DEBUG(10,("sync_entry[%s]\n", ctx->db_ctx->mtdb_path));
+
+	/* Do not accidently allocate/deallocate w/o need when debug level is lower than needed */
+	if(DEBUGLEVEL >= 10) {
+		char *keystr = hex_encode(NULL, (unsigned char*)kbuf.dptr, kbuf.dsize);
+		DEBUG(10, (DEBUGLEVEL > 10
+			   ? "Locking key %s\n" : "Locking key %.20s\n",
+			   keystr));
+		TALLOC_FREE(keystr);
+	}
+
+	ret = tdb_store(ctx->db_ctx->ltdb->tdb, kbuf, dbuf, TDB_INSERT);
+	if (ret != 0) {
+		DEBUG(0,("sync_entry[%s] %d: %s\n",
+			ctx->db_ctx->ltdb_path, ret,
+			tdb_errorstr(ctx->db_ctx->ltdb->tdb)));
+		return ret;
+	}
+
+	*seqnum = tdb_get_seqnum(ctx->db_ctx->mtdb->tdb);
+
+	return 0;
+}
+
+static int db_tdb2_sync_all(struct db_tdb2_ctx *db_ctx, uint32_t *seqnum)
+{
+	struct db_tdb2_traverse_ctx ctx;
+	int ret;
+
+	ret = tdb_wipe_all(db_ctx->ltdb->tdb);
+	if (ret != 0) {
+		DEBUG(0,("tdb_wipe_all[%s] failed %d: %s\n",
+			 db_ctx->ltdb_path, ret,
+			 tdb_errorstr(db_ctx->ltdb->tdb)));
+		return ret;
+	}
+
+	ctx.db_ctx = db_ctx;
+	ctx.f = NULL;
+	ctx.private_data = seqnum;
+	ret = tdb_traverse_read(db_ctx->mtdb->tdb,
+				db_tdb2_traverse_sync_all_func,
+				&ctx);
+	DEBUG(10,("db_tdb2_sync_all[%s] count[%d]\n",
+		  db_ctx->mtdb_path, ret));
+	if (ret < 0) {
+		return ret;
+	}
+
+	return 0;
+}
+
+static int db_tdb2_sync_changes(struct db_tdb2_ctx *db_ctx,
+				const struct dbwrap_tdb2_changes *changes,
+				uint32_t *seqnum)
+{
+	uint32_t cseqnum;
+	uint32_t mseqnum;
+	uint32_t i;
+	int ret;
+	bool need_full_sync = false;
+
+	DEBUG(10,("db_tdb2_sync_changes[%s] changes[%u]\n",
+		  changes->name, changes->num_changes));
+	if(DEBUGLEVEL >= 10) {
+		NDR_PRINT_DEBUG(dbwrap_tdb2_changes, discard_const(changes));
+	}
+
+	/* for the master tdb for reading */
+	ret = tdb_lockall_read(db_ctx->mtdb->tdb);
+	if (ret != 0) {
+		DEBUG(0,("tdb_lockall_read[%s] %d\n", db_ctx->mtdb_path, ret));
+		return ret;
+	}
+
+	/* first fetch seqnum we know about */
+	cseqnum = db_tdb2_get_seqnum(db_ctx->db);
+
+	/* then fetch the master seqnum */
+	mseqnum = tdb_get_seqnum(db_ctx->mtdb->tdb);
+
+	if (cseqnum == mseqnum) {
+		DEBUG(10,("db_tdb2_sync_changes[%s] uptodate[%u]\n",
+			  db_ctx->mtdb_path, mseqnum));
+		/* we hit a race before and now noticed we're uptodate */
+		goto done;
+	}
+
+	/* now see if the changes describe what we need */
+	if (changes->old_seqnum != cseqnum) {
+		need_full_sync = true;
+	}
+
+	if (changes->new_seqnum != mseqnum) {
+		need_full_sync = true;
+	}
+
+	/* this was the overflow case */
+	if (changes->num_keys == 0) {
+		need_full_sync = true;
+	}
+
+	if (need_full_sync) {
+		tdb_unlockall_read(db_ctx->mtdb->tdb);
+		DEBUG(0,("fallback to full sync[%s] seq[%u=>%u] keys[%u]\n",
+			db_ctx->ltdb_path, cseqnum, mseqnum,
+			changes->num_keys));
+		return db_tdb2_sync_all(db_ctx, &mseqnum);
+	}
+
+	for (i=0; i < changes->num_keys; i++) {
+		const char *op = NULL;
+		bool del = false;
+		TDB_DATA key;
+		TDB_DATA val;
+
+		key.dsize = changes->keys[i].length;
+		key.dptr = changes->keys[i].data;
+
+		val = tdb_fetch(db_ctx->mtdb->tdb, key);
+		ret = tdb_error(db_ctx->mtdb->tdb);
+		if (ret == TDB_ERR_NOEXIST) {
+			del = true;
+		} else if (ret != 0) {
+			DEBUG(0,("sync_changes[%s] failure %d\n",
+				 db_ctx->mtdb_path, ret));
+			goto failed;
+		}
+
+		if (del) {
+			op = "delete";
+			ret = tdb_delete(db_ctx->ltdb->tdb, key);
+			DEBUG(10,("sync_changes[%s] delete key[%u] %d\n",
+				  db_ctx->mtdb_path, i, ret));
+		} else {
+			op = "store";
+			ret = tdb_store(db_ctx->ltdb->tdb, key,
+					val, TDB_REPLACE);
+			DEBUG(10,("sync_changes[%s] store key[%u] %d\n",
+				  db_ctx->mtdb_path, i, ret));
+		}
+		SAFE_FREE(val.dptr);
+		if (ret != 0) {
+			DEBUG(0,("sync_changes[%s] %s key[%u] failed %d\n",
+				 db_ctx->mtdb_path, op, i, ret));
+			goto failed;
+		}
+	}
+
+done:
+	tdb_unlockall_read(db_ctx->mtdb->tdb);
+
+	*seqnum = mseqnum;
+	return 0;
+failed:
+	tdb_unlockall_read(db_ctx->mtdb->tdb);
+	return ret;
+}
+
+static int db_tdb2_sync_from_master(struct db_tdb2_ctx *db_ctx,
+				    const struct dbwrap_tdb2_changes *changes)
+{
+	int ret;
+	uint32_t cseqnum;
+	uint32_t mseqnum;
+	bool force = false;
+
+	/* first fetch seqnum we know about */
+	cseqnum = db_tdb2_get_seqnum(db_ctx->db);
+
+	/* then fetch the master seqnum */
+	mseqnum = tdb_get_seqnum(db_ctx->mtdb->tdb);
+
+	if (db_ctx->lseqnum == 0) {
+		force = true;
+	}
+
+	if (!force && cseqnum == mseqnum) {
+		DEBUG(10,("uptodate[%s] mseq[%u]\n",
+			  db_ctx->ltdb_path, mseqnum));
+		/* the local copy is uptodate, close the master db */
+		return 0;
+	}
+	DEBUG(10,("not uptodate[%s] seq[%u=>%u]\n",
+		  db_ctx->ltdb_path, cseqnum, mseqnum));
+
+	ret = tdb_transaction_start(db_ctx->ltdb->tdb);
+	if (ret != 0) {
+		DEBUG(0,("failed to start transaction[%s] %d: %s\n",
+			 db_ctx->ltdb_path, ret,
+			 tdb_errorstr(db_ctx->ltdb->tdb)));
+		db_ctx->out_of_sync = true;
+		return ret;
+	}
+	db_ctx->local_transaction = true;
+
+	if (changes && !force) {
+		ret = db_tdb2_sync_changes(db_ctx, changes, &mseqnum);
+		if (ret != 0) {
+			db_ctx->out_of_sync = true;
+			tdb_transaction_cancel(db_ctx->ltdb->tdb);
+			db_ctx->local_transaction = false;
+			return ret;
+		}
+	} else {
+		ret = db_tdb2_sync_all(db_ctx, &mseqnum);
+		if (ret != 0) {
+			db_ctx->out_of_sync = true;
+			tdb_transaction_cancel(db_ctx->ltdb->tdb);
+			db_ctx->local_transaction = false;
+			return ret;
+		}
+	}
+
+	ret = db_tdb2_commit_local(db_ctx, mseqnum);
+	if (ret != 0) {
+		db_ctx->out_of_sync = true;
+		return ret;
+	}
+
+	db_ctx->out_of_sync = false;
+
+	return 0;
+}
+
+static int db_tdb2_ctx_destructor(struct db_tdb2_ctx *db_tdb2)
+{
+	db_tdb2_close_master(db_tdb2);
+	if (db_tdb2->local_transaction) {
+		tdb_transaction_cancel(db_tdb2->ltdb->tdb);
+	}
+	db_tdb2->local_transaction = false;
+	TALLOC_FREE(db_tdb2->ltdb);
+	return 0;
+}
+
+static struct db_context *db_open_tdb2_ex(TALLOC_CTX *mem_ctx,
+					  const char *name,
+					  int hash_size, int tdb_flags,
+					  int open_flags, mode_t mode,
+					  const struct dbwrap_tdb2_changes *chgs)
+{
+	struct db_context *result = NULL;
+	struct db_tdb2_ctx *db_tdb2;
+	int ret;
+	const char *md;
+	const char *ld;
+	const char *bn;
+
+	bn = strrchr_m(name, '/');
+	if (bn) {
+		bn++;
+		DEBUG(3,("db_open_tdb2: use basename[%s] of abspath[%s]:\n",
+			bn, name));
+	} else {
+		bn = name;
+	}
+
+	md = lp_parm_const_string(-1, "dbwrap_tdb2", "master directory", NULL);
+	if (!md) {
+		DEBUG(0,("'dbwrap_tdb2:master directory' empty\n"));
+		goto fail;
+	}
+
+	ld = lp_parm_const_string(-1, "dbwrap_tdb2", "local directory", NULL);
+	if (!ld) {
+		DEBUG(0,("'dbwrap_tdb2:local directory' empty\n"));
+		goto fail;
+	}
+
+	result = TALLOC_ZERO_P(mem_ctx, struct db_context);
+	if (result == NULL) {
+		DEBUG(0, ("talloc failed\n"));
+		goto fail;
+	}
+
+	result->private_data = db_tdb2 = TALLOC_ZERO_P(result, struct db_tdb2_ctx);
+	if (db_tdb2 == NULL) {
+		DEBUG(0, ("talloc failed\n"));
+		goto fail;
+	}
+
+	db_tdb2->db = result;
+
+	db_tdb2->open.hash_size	= hash_size;
+	db_tdb2->open.tdb_flags	= tdb_flags;
+	db_tdb2->open.open_flags= open_flags;
+	db_tdb2->open.mode	= mode;
+
+	db_tdb2->max_buffer_size = lp_parm_ulong(-1, "dbwrap_tdb2",
+						 "notify buffer size", 512);
+
+	db_tdb2->name = talloc_strdup(db_tdb2, bn);
+	if (db_tdb2->name == NULL) {
+		DEBUG(0, ("talloc_strdup failed\n"));
+		goto fail;
+	}
+
+	db_tdb2->mtdb_path = talloc_asprintf(db_tdb2, "%s/%s",
+					     md, bn);
+	if (db_tdb2->mtdb_path == NULL) {
+		DEBUG(0, ("talloc_asprintf failed\n"));
+		goto fail;
+	}
+
+	db_tdb2->ltdb_path = talloc_asprintf(db_tdb2, "%s/%s.tdb2",
+					     ld, bn);
+	if (db_tdb2->ltdb_path == NULL) {
+		DEBUG(0, ("talloc_asprintf failed\n"));
+		goto fail;
+	}
+
+	db_tdb2->mseqkey = string_term_tdb_data(DB_TDB2_MASTER_SEQNUM_KEYSTR);
+
+	/*
+	 * this implicit opens the local one if as it's not yet open
+	 * it syncs the local copy.
+	 */
+	ret = db_tdb2_open_master(db_tdb2, false, chgs);
+	if (ret != 0) {
+		goto fail;
+	}
+
+	ret = db_tdb2_close_master(db_tdb2);
+	if (ret != 0) {
+		goto fail;
+	}
+
+	DEBUG(10,("db_open_tdb2[%s] opened with mseq[%u]\n",
+		  db_tdb2->name, db_tdb2->mseqnum));
+
+	result->fetch_locked = db_tdb2_fetch_locked;
+	result->fetch = db_tdb2_fetch;
+	result->traverse = db_tdb2_traverse;
+	result->traverse_read = db_tdb2_traverse_read;
+	result->get_seqnum = db_tdb2_get_seqnum;
+	result->persistent = ((tdb_flags & TDB_CLEAR_IF_FIRST) == 0);
+	result->transaction_start = db_tdb2_transaction_start;
+	result->transaction_commit = db_tdb2_transaction_commit;
+	result->transaction_cancel = db_tdb2_transaction_cancel;
+
+	talloc_set_destructor(db_tdb2, db_tdb2_ctx_destructor);
+
+	return result;
+
+ fail:
+	if (result != NULL) {
+		TALLOC_FREE(result);
+	}
+	return NULL;
+}
+
+struct db_context *db_open_tdb2(TALLOC_CTX *mem_ctx,
+				const char *name,
+				int hash_size, int tdb_flags,
+				int open_flags, mode_t mode)
+{
+	return db_open_tdb2_ex(mem_ctx, name, hash_size,
+			       tdb_flags, open_flags, mode, NULL);
+}

Modified: branches/samba/upstream/source/lib/dbwrap_util.c
===================================================================
--- branches/samba/upstream/source/lib/dbwrap_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/dbwrap_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -210,8 +210,7 @@
 	if (res != 0) {
 		DEBUG(5, ("tdb_transaction_commit failed\n"));
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
-		TALLOC_FREE(rec);
-		return status;
+		goto cancel;
 	}
 
 	return NT_STATUS_OK;
@@ -256,8 +255,7 @@
 	if (res != 0) {
 		DEBUG(5, ("tdb_transaction_commit failed\n"));
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
-		TALLOC_FREE(rec);
-		return status;		
+		goto cancel;
 	}
 
 	return NT_STATUS_OK;

Modified: branches/samba/upstream/source/lib/events.c
===================================================================
--- branches/samba/upstream/source/lib/events.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/events.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -63,9 +63,7 @@
 {
 	DEBUG(10, ("Destroying timed event %lx \"%s\"\n", (unsigned long)te,
 		te->event_name));
-	if (te->event_ctx != NULL) {
-		DLIST_REMOVE(te->event_ctx->timed_events, te);
-	}
+	DLIST_REMOVE(te->event_ctx->timed_events, te);
 	return 0;
 }
 
@@ -133,9 +131,9 @@
 
 static int fd_event_destructor(struct fd_event *fde)
 {
-	if (fde->event_ctx != NULL) {
-		DLIST_REMOVE(fde->event_ctx->fd_events, fde);
-	}
+	struct event_context *event_ctx = fde->event_ctx;
+
+	DLIST_REMOVE(event_ctx->fd_events, fde);
 	return 0;
 }
 
@@ -294,7 +292,7 @@
 		if (FD_ISSET(fde->fd, read_fds)) flags |= EVENT_FD_READ;
 		if (FD_ISSET(fde->fd, write_fds)) flags |= EVENT_FD_WRITE;
 
-		if (flags & fde->flags) {
+		if (flags) {
 			fde->handler(event_ctx, fde, flags, fde->private_data);
 			fired = True;
 		}
@@ -356,30 +354,9 @@
 	return 0;
 }
 
-static int event_context_destructor(struct event_context *ev)
-{
-	while (ev->fd_events != NULL) {
-		ev->fd_events->event_ctx = NULL;
-		DLIST_REMOVE(ev->fd_events, ev->fd_events);
-	}
-	while (ev->timed_events != NULL) {
-		ev->timed_events->event_ctx = NULL;
-		DLIST_REMOVE(ev->timed_events, ev->timed_events);
-	}
-	return 0;
-}
-
 struct event_context *event_context_init(TALLOC_CTX *mem_ctx)
 {
-	struct event_context *result;
-
-	result = TALLOC_ZERO_P(mem_ctx, struct event_context);
-	if (result == NULL) {
-		return NULL;
-	}
-
-	talloc_set_destructor(result, event_context_destructor);
-	return result;
+	return TALLOC_ZERO_P(NULL, struct event_context);
 }
 
 int set_event_dispatch_time(struct event_context *event_ctx,

Modified: branches/samba/upstream/source/lib/fault.c
===================================================================
--- branches/samba/upstream/source/lib/fault.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/fault.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -188,11 +188,6 @@
 		become_root();
 	}
 
-	if (corepath == NULL) {
-		DEBUG(0, ("Can not dump core: corepath not set up\n"));
-		exit(1);
-	}
-
 	if (*corepath != '\0') {
 		/* The chdir might fail if we dump core before we finish
 		 * processing the config file.

Modified: branches/samba/upstream/source/lib/fsusage.c
===================================================================
--- branches/samba/upstream/source/lib/fsusage.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/fsusage.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -122,13 +122,8 @@
 #endif /* STAT_STATFS4 */
 
 #if defined(STAT_STATVFS) || defined(STAT_STATVFS64)		/* SVR4 */
-#if defined HAVE_FRSIZE
 # define CONVERT_BLOCKS(B) \
 	adjust_blocks ((SMB_BIG_UINT)(B), fsd.f_frsize ? (SMB_BIG_UINT)fsd.f_frsize : (SMB_BIG_UINT)fsd.f_bsize, (SMB_BIG_UINT)512)
-#else
-# define CONVERT_BLOCKS(B) \
-	adjust_blocks ((SMB_BIG_UINT)(B), (SMB_BIG_UINT)fsd.f_bsize, (SMB_BIG_UINT)512)
-#endif
 
 #ifdef STAT_STATVFS64
 	struct statvfs64 fsd;

Modified: branches/samba/upstream/source/lib/iconv.c
===================================================================
--- branches/samba/upstream/source/lib/iconv.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/iconv.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -136,7 +136,7 @@
 			char **outbuf, size_t *outbytesleft)
 {
 	size_t ret = iconv((iconv_t)cd, 
-			   (void *)inbuf, inbytesleft,
+			   (char **)inbuf, inbytesleft, 
 			   outbuf, outbytesleft);
 	if (ret == (size_t)-1) {
 		int saved_errno = errno;

Deleted: branches/samba/upstream/source/lib/idmap_cache.c
===================================================================
--- branches/samba/upstream/source/lib/idmap_cache.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/idmap_cache.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,260 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   ID Mapping Cache
-
-   Copyright (C) Volker Lendecke	2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.*/
-
-#include "includes.h"
-
-/**
- * Find a sid2uid mapping
- * @param[in] sid		the sid to map
- * @param[out] puid		where to put the result
- * @param[out] expired		is the cache entry expired?
- * @retval Was anything in the cache at all?
- *
- * If *puid == -1 this was a negative mapping.
- */
-
-bool idmap_cache_find_sid2uid(const struct dom_sid *sid, uid_t *puid,
-			      bool *expired)
-{
-	fstring sidstr;
-	char *key;
-	char *value;
-	char *endptr;
-	time_t timeout;
-	uid_t uid;
-	bool ret;
-
-	key = talloc_asprintf(talloc_tos(), "IDMAP/SID2UID/%s",
-			      sid_to_fstring(sidstr, sid));
-	if (key == NULL) {
-		return false;
-	}
-	ret = gencache_get(key, &value, &timeout);
-	TALLOC_FREE(key);
-	if (!ret) {
-		return false;
-	}
-	uid = strtol(value, &endptr, 10);
-	ret = (*endptr == '\0');
-	SAFE_FREE(value);
-	if (ret) {
-		*puid = uid;
-		*expired = (timeout <= time(NULL));
-	}
-	return ret;
-}
-
-/**
- * Find a uid2sid mapping
- * @param[in] uid		the uid to map
- * @param[out] sid		where to put the result
- * @param[out] expired		is the cache entry expired?
- * @retval Was anything in the cache at all?
- *
- * If "is_null_sid(sid)", this was a negative mapping.
- */
-
-bool idmap_cache_find_uid2sid(uid_t uid, struct dom_sid *sid, bool *expired)
-{
-	char *key;
-	char *value;
-	time_t timeout;
-	bool ret = true;
-
-	key = talloc_asprintf(talloc_tos(), "IDMAP/UID2SID/%d", (int)uid);
-	if (key == NULL) {
-		return false;
-	}
-	ret = gencache_get(key, &value, &timeout);
-	TALLOC_FREE(key);
-	if (!ret) {
-		return false;
-	}
-	ZERO_STRUCTP(sid);
-	if (value[0] != '-') {
-		ret = string_to_sid(sid, value);
-	}
-	SAFE_FREE(value);
-	if (ret) {
-		*expired = (timeout <= time(NULL));
-	}
-	return ret;
-}
-
-/**
- * Store a mapping in the idmap cache
- * @param[in] sid		the sid to map
- * @param[in] uid		the uid to map
- *
- * If both parameters are valid values, then a positive mapping in both
- * directions is stored. If "is_null_sid(sid)" is true, then this will be a
- * negative mapping of uid, we want to cache that for this uid we could not
- * find anything. Likewise if "uid==-1", then we want to cache that we did not
- * find a mapping for the sid passed here.
- */
-
-void idmap_cache_set_sid2uid(const struct dom_sid *sid, uid_t uid)
-{
-	time_t now = time(NULL);
-	time_t timeout;
-	fstring sidstr, key, value;
-
-	if (!is_null_sid(sid)) {
-		fstr_sprintf(key, "IDMAP/SID2UID/%s",
-			     sid_to_fstring(sidstr, sid));
-		fstr_sprintf(value, "%d", (int)uid);
-		timeout = (uid == -1)
-			? lp_idmap_negative_cache_time()
-			: lp_idmap_cache_time();
-		gencache_set(key, value, now + timeout);
-	}
-	if (uid != -1) {
-		fstr_sprintf(key, "IDMAP/UID2SID/%d", (int)uid);
-		if (is_null_sid(sid)) {
-			/* negative uid mapping */
-			fstrcpy(value, "-");
-			timeout = lp_idmap_negative_cache_time();
-		}
-		else {
-			sid_to_fstring(value, sid);
-			timeout = lp_idmap_cache_time();
-		}
-		gencache_set(key, value, now + timeout);
-	}
-}
-
-/**
- * Find a sid2gid mapping
- * @param[in] sid		the sid to map
- * @param[out] pgid		where to put the result
- * @param[out] expired		is the cache entry expired?
- * @retval Was anything in the cache at all?
- *
- * If *pgid == -1 this was a negative mapping.
- */
-
-bool idmap_cache_find_sid2gid(const struct dom_sid *sid, gid_t *pgid,
-			      bool *expired)
-{
-	fstring sidstr;
-	char *key;
-	char *value;
-	char *endptr;
-	time_t timeout;
-	gid_t gid;
-	bool ret;
-
-	key = talloc_asprintf(talloc_tos(), "IDMAP/SID2GID/%s",
-			      sid_to_fstring(sidstr, sid));
-	if (key == NULL) {
-		return false;
-	}
-	ret = gencache_get(key, &value, &timeout);
-	TALLOC_FREE(key);
-	if (!ret) {
-		return false;
-	}
-	gid = strtol(value, &endptr, 10);
-	ret = (*endptr == '\0');
-	SAFE_FREE(value);
-	if (ret) {
-		*pgid = gid;
-		*expired = (timeout <= time(NULL));
-	}
-	return ret;
-}
-
-/**
- * Find a gid2sid mapping
- * @param[in] gid		the gid to map
- * @param[out] sid		where to put the result
- * @param[out] expired		is the cache entry expired?
- * @retval Was anything in the cache at all?
- *
- * If "is_null_sid(sid)", this was a negative mapping.
- */
-
-bool idmap_cache_find_gid2sid(gid_t gid, struct dom_sid *sid, bool *expired)
-{
-	char *key;
-	char *value;
-	time_t timeout;
-	bool ret = true;
-
-	key = talloc_asprintf(talloc_tos(), "IDMAP/GID2SID/%d", (int)gid);
-	if (key == NULL) {
-		return false;
-	}
-	ret = gencache_get(key, &value, &timeout);
-	TALLOC_FREE(key);
-	if (!ret) {
-		return false;
-	}
-	ZERO_STRUCTP(sid);
-	if (value[0] != '-') {
-		ret = string_to_sid(sid, value);
-	}
-	SAFE_FREE(value);
-	if (ret) {
-		*expired = (timeout <= time(NULL));
-	}
-	return ret;
-}
-
-/**
- * Store a mapping in the idmap cache
- * @param[in] sid		the sid to map
- * @param[in] gid		the gid to map
- *
- * If both parameters are valid values, then a positive mapping in both
- * directions is stored. If "is_null_sid(sid)" is true, then this will be a
- * negative mapping of gid, we want to cache that for this gid we could not
- * find anything. Likewise if "gid==-1", then we want to cache that we did not
- * find a mapping for the sid passed here.
- */
-
-void idmap_cache_set_sid2gid(const struct dom_sid *sid, gid_t gid)
-{
-	time_t now = time(NULL);
-	time_t timeout;
-	fstring sidstr, key, value;
-
-	if (!is_null_sid(sid)) {
-		fstr_sprintf(key, "IDMAP/SID2GID/%s",
-			     sid_to_fstring(sidstr, sid));
-		fstr_sprintf(value, "%d", (int)gid);
-		timeout = (gid == -1)
-			? lp_idmap_negative_cache_time()
-			: lp_idmap_cache_time();
-		gencache_set(key, value, now + timeout);
-	}
-	if (gid != -1) {
-		fstr_sprintf(key, "IDMAP/GID2SID/%d", (int)gid);
-		if (is_null_sid(sid)) {
-			/* negative gid mapping */
-			fstrcpy(value, "-");
-			timeout = lp_idmap_negative_cache_time();
-		}
-		else {
-			sid_to_fstring(value, sid);
-			timeout = lp_idmap_cache_time();
-		}
-		gencache_set(key, value, now + timeout);
-	}
-}

Modified: branches/samba/upstream/source/lib/ldb/common/ldb.c
===================================================================
--- branches/samba/upstream/source/lib/ldb/common/ldb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/ldb/common/ldb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -787,7 +787,6 @@
 done:
 	if (ret != LDB_SUCCESS) {
 		talloc_free(res);
-		res = NULL;
 	}
 
 	*_res = res;

Modified: branches/samba/upstream/source/lib/ldb/web/index.html
===================================================================
--- branches/samba/upstream/source/lib/ldb/web/index.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/ldb/web/index.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -41,9 +41,9 @@
 Currently ldb is completely lacking in programmer or user
 documentation. This is your opportunity to make a contribution! Start
 with the public functions declared in <a
-href="http://samba.org/ftp/unpacked/ldb/include/ldb.h">ldb.h</a>
+href="http://samba.org/ftp/unpacked/samba4/source/lib/ldb/include/ldb.h">ldb.h</a>
 and the example code in the <a
-href="http://samba.org/ftp/unpacked/ldb/tools/">tools
+href="http://samba.org/ftp/unpacked/samba4/source/lib/ldb/tools/">tools
 directory</a>. Documentation in the same docbook format used by Samba
 would be preferred.
 
@@ -52,17 +52,21 @@
 ldb does not currently have its own mailing list or bug tracking
 system. For now, please use the <a
 href="https://lists.samba.org/mailman/listinfo/samba-technical">samba-technical</a>
-mailing list or the <a href="https://lists.samba.org/mailman/listinfo/ldb">ldb</a>
-mailing list, and the <a href="http://bugzilla.samba.org/">Samba bugzilla</a> bug tracking system.
+mailing list, and the <a href="http://bugzilla.samba.org/">Samba
+bugzilla</a> bug tracking system.
 
 <h2>Download</h2>
 
-You can download the latest release either via rsync or thtough git.<br>
-<br>
-To fetch via git see the following guide:<br>
-<a href="http://wiki.samba.org/index.php/Using_Git_for_Samba_Development">Using Git for Samba Development</a><br>
-Once you have cloned the tree switch to the v4-0-test branch and cd into the source/lib/ldb directory.<br>
-<br>
+You can download the latest release either via rsync or anonymous
+svn. To fetch via svn use the following commands:
+
+<pre>
+  svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/ldb ldb
+  svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/tdb tdb
+  svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/talloc talloc
+  svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/replace libreplace
+</pre>
+
 To fetch via rsync use these commands:
 
 <pre>

Modified: branches/samba/upstream/source/lib/messages.c
===================================================================
--- branches/samba/upstream/source/lib/messages.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/messages.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -211,7 +211,7 @@
 		status = messaging_ctdbd_init(ctx, ctx, &ctx->remote);
 
 		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(1, ("messaging_ctdb_init failed: %s\n",
+			DEBUG(0, ("messaging_ctdb_init failed: %s\n",
 				  nt_errstr(status)));
 			TALLOC_FREE(ctx);
 			return NULL;
@@ -246,7 +246,7 @@
 					      &msg_ctx->remote);
 
 		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(1, ("messaging_ctdb_init failed: %s\n",
+			DEBUG(0, ("messaging_ctdb_init failed: %s\n",
 				  nt_errstr(status)));
 			return status;
 		}

Modified: branches/samba/upstream/source/lib/messages_ctdbd.c
===================================================================
--- branches/samba/upstream/source/lib/messages_ctdbd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/messages_ctdbd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -53,8 +53,9 @@
 		msg = messaging_init(NULL, procid_self(), ev);
 		if (!msg) {
 			DEBUG(0,("messaging_init failed\n"));
-			return NULL;
 		}
+
+		db_tdb2_setup_messaging(msg, false);
 	}
 
 	if (global_ctdb_connection_pid != getpid()) {

Modified: branches/samba/upstream/source/lib/messages_local.c
===================================================================
--- branches/samba/upstream/source/lib/messages_local.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/messages_local.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -65,8 +65,8 @@
 
 static int messaging_tdb_destructor(struct messaging_backend *tdb_ctx)
 {
-	struct tdb_wrap *tdb = (struct tdb_wrap *)tdb_ctx->private_data;
-	TALLOC_FREE(tdb);
+	TDB_CONTEXT *tdb = (TDB_CONTEXT *)tdb_ctx->private_data;
+	tdb_close(tdb);
 	return 0;
 }
 
@@ -79,16 +79,16 @@
 			    struct messaging_backend **presult)
 {
 	struct messaging_backend *result;
-	struct tdb_wrap *tdb;
+	TDB_CONTEXT *tdb;
 
 	if (!(result = TALLOC_P(mem_ctx, struct messaging_backend))) {
 		DEBUG(0, ("talloc failed\n"));
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	tdb = tdb_wrap_open(result, lock_path("messages.tdb"), 
-			    0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT, 
-			    O_RDWR|O_CREAT,0600);
+	tdb = tdb_open_log(lock_path("messages.tdb"), 
+			   0, TDB_CLEAR_IF_FIRST|TDB_DEFAULT, 
+			   O_RDWR|O_CREAT,0600);
 
 	if (!tdb) {
 		NTSTATUS status = map_nt_error_from_unix(errno);
@@ -101,7 +101,7 @@
 	sec_init();
 
 	/* Activate the per-hashchain freelist */
-	tdb_set_max_dead(tdb->tdb, 5);
+	tdb_set_max_dead(tdb, 5);
 
 	CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
 
@@ -293,7 +293,7 @@
 	struct messaging_rec *rec;
 	NTSTATUS status;
 	TDB_DATA key;
-	struct tdb_wrap *tdb = (struct tdb_wrap *)backend->private_data;
+	TDB_CONTEXT *tdb = (TDB_CONTEXT *)backend->private_data;
 	TALLOC_CTX *frame = talloc_stackframe();
 
 	/* NULL pointer means implicit length zero. */
@@ -310,12 +310,12 @@
 
 	key = message_key_pid(frame, pid);
 
-	if (tdb_chainlock(tdb->tdb, key) == -1) {
+	if (tdb_chainlock(tdb, key) == -1) {
 		TALLOC_FREE(frame);
 		return NT_STATUS_LOCK_NOT_GRANTED;
 	}
 
-	status = messaging_tdb_fetch(tdb->tdb, key, talloc_tos(), &msg_array);
+	status = messaging_tdb_fetch(tdb, key, talloc_tos(), &msg_array);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
@@ -345,7 +345,7 @@
 	msg_array->messages = rec;
 	msg_array->num_messages += 1;
 
-	status = messaging_tdb_store(tdb->tdb, key, msg_array);
+	status = messaging_tdb_store(tdb, key, msg_array);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
@@ -356,11 +356,11 @@
 	if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_HANDLE)) {
 		DEBUG(2, ("pid %s doesn't exist - deleting messages record\n",
 			  procid_str_static(&pid)));
-		tdb_delete(tdb->tdb, message_key_pid(talloc_tos(), pid));
+		tdb_delete(tdb, message_key_pid(talloc_tos(), pid));
 	}
 
  done:
-	tdb_chainunlock(tdb->tdb, key);
+	tdb_chainunlock(tdb, key);
 	TALLOC_FREE(frame);
 	return status;
 }
@@ -409,8 +409,7 @@
 void message_dispatch(struct messaging_context *msg_ctx)
 {
 	struct messaging_array *msg_array = NULL;
-	struct tdb_wrap *tdb = (struct tdb_wrap *)
-		(msg_ctx->local->private_data);
+	TDB_CONTEXT *tdb = (TDB_CONTEXT *)(msg_ctx->local->private_data);
 	uint32 i;
 
 	if (!received_signal)
@@ -421,8 +420,7 @@
 
 	received_signal = 0;
 
-	if (!NT_STATUS_IS_OK(retrieve_all_messages(tdb->tdb, NULL,
-						   &msg_array))) {
+	if (!NT_STATUS_IS_OK(retrieve_all_messages(tdb, NULL, &msg_array))) {
 		return;
 	}
 

Modified: branches/samba/upstream/source/lib/module.c
===================================================================
--- branches/samba/upstream/source/lib/module.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/module.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -118,7 +118,7 @@
 
 	full_path = talloc_asprintf(ctx,
 			"%s/%s.%s",
-			modules_path(subsystem),
+			lib_path(subsystem),
 			module,
 			shlib_ext());
 	if (!full_path) {

Modified: branches/samba/upstream/source/lib/ms_fnmatch.c
===================================================================
--- branches/samba/upstream/source/lib/ms_fnmatch.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/ms_fnmatch.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -154,7 +154,6 @@
 	struct max_n *max_n = NULL;
 	struct max_n *max_n_free = NULL;
 	struct max_n one_max_n;
-	size_t converted_size;
 
 	if (ISDOTDOT(string)) {
 		string = ".";
@@ -170,11 +169,11 @@
 		}
 	}
 
-	if (!push_ucs2_allocate(&p, pattern, &converted_size)) {
+	if (push_ucs2_allocate(&p, pattern) == (size_t)-1) {
 		return -1;
 	}
 
-	if (!push_ucs2_allocate(&s, string, &converted_size)) {
+	if (push_ucs2_allocate(&s, string) == (size_t)-1) {
 		SAFE_FREE(p);
 		return -1;
 	}

Modified: branches/samba/upstream/source/lib/netapi/cm.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/cm.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/cm.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,9 +25,9 @@
 /********************************************************************
 ********************************************************************/
 
-static WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
-					    const char *server_name,
-					    struct cli_state **cli)
+WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
+				     const char *server_name,
+				     struct cli_state **cli)
 {
 	struct cli_state *cli_ipc = NULL;
 
@@ -91,107 +91,98 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS pipe_cm_find(struct cli_state *cli,
-			     const struct ndr_syntax_id *interface,
-			     struct rpc_pipe_client **presult)
+static struct rpc_pipe_client *pipe_cm_find(struct cli_state *cli,
+					    int pipe_idx,
+					    NTSTATUS *status)
 {
 	struct client_pipe_connection *p;
 
 	for (p = pipe_connections; p; p = p->next) {
 
-		if (!rpc_pipe_np_smb_conn(p->pipe)) {
-			return NT_STATUS_PIPE_EMPTY;
+		if (!p->pipe->cli) {
+			*status = NT_STATUS_PIPE_EMPTY;
+			return NULL;
 		}
 
-		if (strequal(cli->desthost, p->pipe->desthost)
-		    && ndr_syntax_id_equal(&p->pipe->abstract_syntax,
-					   interface)) {
-			*presult = p->pipe;
-			return NT_STATUS_OK;
+		if (strequal(cli->desthost, p->pipe->cli->desthost) &&
+		    pipe_idx == p->pipe->pipe_idx) {
+			*status = NT_STATUS_OK;
+			return p->pipe;
 		}
 	}
 
-	return NT_STATUS_PIPE_NOT_AVAILABLE;
+	*status = NT_STATUS_PIPE_NOT_AVAILABLE;
+
+	return NULL;
 }
 
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS pipe_cm_connect(TALLOC_CTX *mem_ctx,
-				struct cli_state *cli,
-				const struct ndr_syntax_id *interface,
-				struct rpc_pipe_client **presult)
+static struct rpc_pipe_client *pipe_cm_connect(TALLOC_CTX *mem_ctx,
+					       struct cli_state *cli,
+					       int pipe_idx,
+					       NTSTATUS *status)
 {
 	struct client_pipe_connection *p;
-	NTSTATUS status;
 
 	p = TALLOC_ZERO_ARRAY(mem_ctx, struct client_pipe_connection, 1);
 	if (!p) {
-		return NT_STATUS_NO_MEMORY;
+		*status = NT_STATUS_NO_MEMORY;
+		return NULL;
 	}
 
-	status = cli_rpc_pipe_open_noauth(cli, interface, &p->pipe);
-	if (!NT_STATUS_IS_OK(status)) {
+	p->pipe = cli_rpc_pipe_open_noauth(cli, pipe_idx, status);
+	if (!p->pipe) {
 		TALLOC_FREE(p);
-		return status;
+		return NULL;
 	}
 
 	DLIST_ADD(pipe_connections, p);
 
-	*presult = p->pipe;
-	return NT_STATUS_OK;
+	return p->pipe;
 }
 
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS pipe_cm_open(TALLOC_CTX *ctx,
-			     struct cli_state *cli,
-			     const struct ndr_syntax_id *interface,
-			     struct rpc_pipe_client **presult)
+static struct rpc_pipe_client *pipe_cm_open(TALLOC_CTX *ctx,
+					    struct cli_state *cli,
+					    int pipe_idx,
+					    NTSTATUS *status)
 {
-	if (NT_STATUS_IS_OK(pipe_cm_find(cli, interface, presult))) {
-		return NT_STATUS_OK;
+	struct rpc_pipe_client *p;
+
+	p = pipe_cm_find(cli, pipe_idx, status);
+	if (!p) {
+		p = pipe_cm_connect(ctx, cli, pipe_idx, status);
 	}
 
-	return pipe_cm_connect(ctx, cli, interface, presult);
+	return p;
 }
 
 /********************************************************************
 ********************************************************************/
 
 WERROR libnetapi_open_pipe(struct libnetapi_ctx *ctx,
-			   const char *server_name,
-			   const struct ndr_syntax_id *interface,
-			   struct cli_state **pcli,
-			   struct rpc_pipe_client **presult)
+			   struct cli_state *cli,
+			   int pipe_idx,
+			   struct rpc_pipe_client **pipe_cli)
 {
-	struct rpc_pipe_client *result = NULL;
 	NTSTATUS status;
-	WERROR werr;
-	struct cli_state *cli = NULL;
 
-	if (!presult) {
+	if (!cli || !pipe_cli) {
 		return WERR_INVALID_PARAM;
 	}
 
-	werr = libnetapi_open_ipc_connection(ctx, server_name, &cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	status = pipe_cm_open(ctx, cli, interface, &result);
-	if (!NT_STATUS_IS_OK(status)) {
+	*pipe_cli = pipe_cm_open(ctx, cli, pipe_idx, &status);
+	if (!*pipe_cli) {
 		libnetapi_set_error_string(ctx, "failed to open PIPE %s: %s",
-			cli_get_pipe_name_from_iface(debug_ctx(), cli,
-						     interface),
+			cli_get_pipe_name(pipe_idx),
 			get_friendly_nt_error_msg(status));
 		return WERR_DEST_NOT_FOUND;
 	}
 
-	*presult = result;
-	*pcli = cli;
-
 	return WERR_OK;
 }
 

Modified: branches/samba/upstream/source/lib/netapi/examples/Makefile.in
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/Makefile.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/Makefile.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,47 +22,10 @@
 	bin/netdomjoin at EXEEXT@ \
 	bin/netdomjoin-gui at EXEEXT@ \
 	bin/getjoinableous at EXEEXT@ \
-	bin/rename_machine at EXEEXT@ \
 	bin/user_add at EXEEXT@ \
 	bin/user_del at EXEEXT@ \
 	bin/user_enum at EXEEXT@ \
-	bin/user_dispinfo at EXEEXT@ \
-	bin/user_chgpwd at EXEEXT@ \
-	bin/user_getinfo at EXEEXT@ \
-	bin/user_setinfo at EXEEXT@ \
-	bin/user_modalsget at EXEEXT@ \
-	bin/user_modalsset at EXEEXT@ \
-	bin/user_getgroups at EXEEXT@ \
-	bin/user_setgroups at EXEEXT@ \
-	bin/user_getlocalgroups at EXEEXT@ \
-	bin/group_add at EXEEXT@ \
-	bin/group_del at EXEEXT@ \
-	bin/group_enum at EXEEXT@ \
-	bin/group_setinfo at EXEEXT@ \
-	bin/group_getinfo at EXEEXT@ \
-	bin/group_adduser at EXEEXT@ \
-	bin/group_deluser at EXEEXT@ \
-	bin/group_getusers at EXEEXT@ \
-	bin/group_setusers at EXEEXT@ \
-	bin/localgroup_add at EXEEXT@ \
-	bin/localgroup_del at EXEEXT@ \
-	bin/localgroup_getinfo at EXEEXT@ \
-	bin/localgroup_setinfo at EXEEXT@ \
-	bin/localgroup_enum at EXEEXT@ \
-	bin/localgroup_addmembers at EXEEXT@ \
-	bin/localgroup_delmembers at EXEEXT@ \
-	bin/localgroup_setmembers at EXEEXT@ \
-	bin/localgroup_getmembers at EXEEXT@ \
-	bin/remote_tod at EXEEXT@ \
-	bin/server_getinfo at EXEEXT@ \
-	bin/share_add at EXEEXT@ \
-	bin/share_del at EXEEXT@ \
-	bin/share_enum at EXEEXT@ \
-	bin/share_getinfo at EXEEXT@ \
-	bin/share_setinfo at EXEEXT@ \
-	bin/file_close at EXEEXT@ \
-	bin/file_getinfo at EXEEXT@ \
-	bin/file_enum at EXEEXT@
+	bin/user_dispinfo at EXEEXT@
 
 all: $(PROGS)
 
@@ -93,50 +56,13 @@
 CMDLINE_OBJ = common.o
 GETDC_OBJ = getdc/getdc.o $(CMDLINE_OBJ)
 DSGETDC_OBJ = dsgetdc/dsgetdc.o $(CMDLINE_OBJ)
-NETDOMJOIN_OBJ = join/netdomjoin.o $(CMDLINE_OBJ)
+NETDOMJOIN_OBJ = netdomjoin/netdomjoin.o $(CMDLINE_OBJ)
 NETDOMJOIN_GUI_OBJ = netdomjoin-gui/netdomjoin-gui.o
-GETJOINABLEOUS_OBJ = join/getjoinableous.o $(CMDLINE_OBJ)
-RENAMEMACHINE_OBJ = join/rename_machine.o $(CMDLINE_OBJ)
+GETJOINABLEOUS_OBJ = getjoinableous/getjoinableous.o $(CMDLINE_OBJ)
 USERADD_OBJ = user/user_add.o $(CMDLINE_OBJ)
 USERDEL_OBJ = user/user_del.o $(CMDLINE_OBJ)
 USERENUM_OBJ = user/user_enum.o $(CMDLINE_OBJ)
 USERDISPINFO_OBJ = user/user_dispinfo.o $(CMDLINE_OBJ)
-USERCHGPWD_OBJ = user/user_chgpwd.o $(CMDLINE_OBJ)
-USERGETINFO_OBJ = user/user_getinfo.o $(CMDLINE_OBJ)
-USERSETINFO_OBJ = user/user_setinfo.o $(CMDLINE_OBJ)
-USERMODALSGET_OBJ = user/user_modalsget.o $(CMDLINE_OBJ)
-USERMODALSSET_OBJ = user/user_modalsset.o $(CMDLINE_OBJ)
-USERGETGROUPS_OBJ = user/user_getgroups.o $(CMDLINE_OBJ)
-USERSETGROUPS_OBJ = user/user_setgroups.o $(CMDLINE_OBJ)
-USERGETLOCALGROUPS_OBJ = user/user_getlocalgroups.o $(CMDLINE_OBJ)
-GROUPADD_OBJ = group/group_add.o $(CMDLINE_OBJ)
-GROUPDEL_OBJ = group/group_del.o $(CMDLINE_OBJ)
-GROUPENUM_OBJ = group/group_enum.o $(CMDLINE_OBJ)
-GROUPSETINFO_OBJ = group/group_setinfo.o $(CMDLINE_OBJ)
-GROUPGETINFO_OBJ = group/group_getinfo.o $(CMDLINE_OBJ)
-GROUPADDUSER_OBJ = group/group_adduser.o $(CMDLINE_OBJ)
-GROUPDELUSER_OBJ = group/group_deluser.o $(CMDLINE_OBJ)
-GROUPGETUSERS_OBJ = group/group_getusers.o $(CMDLINE_OBJ)
-GROUPSETUSERS_OBJ = group/group_setusers.o $(CMDLINE_OBJ)
-LOCALGROUPADD_OBJ = localgroup/localgroup_add.o $(CMDLINE_OBJ)
-LOCALGROUPDEL_OBJ = localgroup/localgroup_del.o $(CMDLINE_OBJ)
-LOCALGROUPGETINFO_OBJ = localgroup/localgroup_getinfo.o $(CMDLINE_OBJ)
-LOCALGROUPSETINFO_OBJ = localgroup/localgroup_setinfo.o $(CMDLINE_OBJ)
-LOCALGROUPENUM_OBJ = localgroup/localgroup_enum.o $(CMDLINE_OBJ)
-LOCALGROUPADDMEMBERS_OBJ = localgroup/localgroup_addmembers.o $(CMDLINE_OBJ)
-LOCALGROUPDELMEMBERS_OBJ = localgroup/localgroup_delmembers.o $(CMDLINE_OBJ)
-LOCALGROUPSETMEMBERS_OBJ = localgroup/localgroup_setmembers.o $(CMDLINE_OBJ)
-LOCALGROUPGETMEMBERS_OBJ = localgroup/localgroup_getmembers.o $(CMDLINE_OBJ)
-REMOTETOD_OBJ = server/remote_tod.o $(CMDLINE_OBJ)
-SERVERGETINFO_OBJ = server/server_getinfo.o $(CMDLINE_OBJ)
-SHAREADD_OBJ = share/share_add.o $(CMDLINE_OBJ)
-SHAREDEL_OBJ = share/share_del.o $(CMDLINE_OBJ)
-SHAREENUM_OBJ = share/share_enum.o $(CMDLINE_OBJ)
-SHAREGETINFO_OBJ = share/share_getinfo.o $(CMDLINE_OBJ)
-SHARESETINFO_OBJ = share/share_setinfo.o $(CMDLINE_OBJ)
-FILECLOSE_OBJ = file/file_close.o $(CMDLINE_OBJ)
-FILEGETINFO_OBJ = file/file_getinfo.o $(CMDLINE_OBJ)
-FILEENUM_OBJ = file/file_enum.o $(CMDLINE_OBJ)
 
 bin/getdc at EXEEXT@: $(BINARY_PREREQS) $(GETDC_OBJ)
 	@echo Linking $@
@@ -150,10 +76,6 @@
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(GETJOINABLEOUS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
 
-bin/rename_machine at EXEEXT@: $(BINARY_PREREQS) $(RENAMEMACHINE_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(RENAMEMACHINE_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
 bin/netdomjoin at EXEEXT@: $(BINARY_PREREQS) $(NETDOMJOIN_OBJ)
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(NETDOMJOIN_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
@@ -178,150 +100,6 @@
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(USERDISPINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
 
-bin/user_chgpwd at EXEEXT@: $(BINARY_PREREQS) $(USERCHGPWD_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERCHGPWD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_getinfo at EXEEXT@: $(BINARY_PREREQS) $(USERGETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_setinfo at EXEEXT@: $(BINARY_PREREQS) $(USERSETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERSETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_modalsget at EXEEXT@: $(BINARY_PREREQS) $(USERMODALSGET_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERMODALSGET_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_modalsset at EXEEXT@: $(BINARY_PREREQS) $(USERMODALSSET_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERMODALSSET_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_getgroups at EXEEXT@: $(BINARY_PREREQS) $(USERGETGROUPS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERGETGROUPS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_setgroups at EXEEXT@: $(BINARY_PREREQS) $(USERSETGROUPS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERSETGROUPS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/user_getlocalgroups at EXEEXT@: $(BINARY_PREREQS) $(USERGETLOCALGROUPS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(USERGETLOCALGROUPS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_add at EXEEXT@: $(BINARY_PREREQS) $(GROUPADD_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPADD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_del at EXEEXT@: $(BINARY_PREREQS) $(GROUPDEL_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPDEL_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_enum at EXEEXT@: $(BINARY_PREREQS) $(GROUPENUM_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPENUM_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_setinfo at EXEEXT@: $(BINARY_PREREQS) $(GROUPSETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPSETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_getinfo at EXEEXT@: $(BINARY_PREREQS) $(GROUPGETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_adduser at EXEEXT@: $(BINARY_PREREQS) $(GROUPADDUSER_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPADDUSER_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_deluser at EXEEXT@: $(BINARY_PREREQS) $(GROUPDELUSER_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPDELUSER_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_getusers at EXEEXT@: $(BINARY_PREREQS) $(GROUPGETUSERS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPGETUSERS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/group_setusers at EXEEXT@: $(BINARY_PREREQS) $(GROUPSETUSERS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(GROUPSETUSERS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_add at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPADD_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPADD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_del at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPDEL_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPDEL_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_getinfo at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPGETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_setinfo at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPSETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPSETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_enum at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPENUM_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPENUM_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_addmembers at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPADDMEMBERS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPADDMEMBERS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_delmembers at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPDELMEMBERS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPDELMEMBERS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_setmembers at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPSETMEMBERS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPSETMEMBERS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/localgroup_getmembers at EXEEXT@: $(BINARY_PREREQS) $(LOCALGROUPGETMEMBERS_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(LOCALGROUPGETMEMBERS_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/remote_tod at EXEEXT@: $(BINARY_PREREQS) $(REMOTETOD_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(REMOTETOD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/server_getinfo at EXEEXT@: $(BINARY_PREREQS) $(SERVERGETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(SERVERGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/share_add at EXEEXT@: $(BINARY_PREREQS) $(SHAREADD_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(SHAREADD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/share_del at EXEEXT@: $(BINARY_PREREQS) $(SHAREDEL_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(SHAREDEL_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/share_enum at EXEEXT@: $(BINARY_PREREQS) $(SHAREENUM_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(SHAREENUM_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/share_getinfo at EXEEXT@: $(BINARY_PREREQS) $(SHAREGETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(SHAREGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/share_setinfo at EXEEXT@: $(BINARY_PREREQS) $(SHARESETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(SHARESETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/file_close at EXEEXT@: $(BINARY_PREREQS) $(FILECLOSE_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(FILECLOSE_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/file_getinfo at EXEEXT@: $(BINARY_PREREQS) $(FILEGETINFO_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(FILEGETINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
-bin/file_enum at EXEEXT@: $(BINARY_PREREQS) $(FILEENUM_OBJ)
-	@echo Linking $@
-	@$(CC) $(FLAGS) -o $@ $(FILEENUM_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
-
 clean:
 	-rm -f $(PROGS)
 	-rm -f core */*~ *~ \

Copied: branches/samba/upstream/source/lib/netapi/examples/getjoinableous (from rev 2163, branches/samba/upstream/source/lib/netapi/examples/getjoinableous)

Copied: branches/samba/upstream/source/lib/netapi/examples/netdomjoin (from rev 2163, branches/samba/upstream/source/lib/netapi/examples/netdomjoin)

Modified: branches/samba/upstream/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -38,6 +38,14 @@
 #define SAMBA_IMAGE_PATH "/usr/share/pixmaps/samba/logo.png"
 #define SAMBA_IMAGE_PATH_SMALL "/usr/share/pixmaps/samba/logo-small.png"
 
+#define WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED ( 0x00000020 )
+#define WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE ( 0x00000004 )
+#define WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE ( 0x00000002 )
+#define WKSSVC_JOIN_FLAGS_JOIN_TYPE ( 0x00000001 )
+
+#define NetSetupWorkgroupName ( 2 )
+#define NetSetupDomainName ( 3 )
+
 #define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
 
 static gboolean verbose = FALSE;
@@ -77,7 +85,6 @@
 	gboolean settings_changed;
 	gboolean hostname_changed;
 	uint32_t stored_num_ous;
-	char *target_hostname;
 } join_state;
 
 static void debug(const char *format, ...)
@@ -101,26 +108,17 @@
 	return FALSE;
 }
 
-static void callback_do_close_data(GtkWidget *widget,
-				   gpointer data)
+static void callback_do_close(GtkWidget *widget,
+			      gpointer data)
 {
-	debug("callback_do_close_data called\n");
+	debug("callback_do_close called\n");
 
 	if (data) {
 		gtk_widget_destroy(GTK_WIDGET(data));
+		data = NULL;
 	}
 }
 
-static void callback_do_close_widget(GtkWidget *widget,
-				     gpointer data)
-{
-	debug("callback_do_close_widget called\n");
-
-	if (widget) {
-		gtk_widget_destroy(widget);
-	}
-}
-
 static void callback_do_freeauth(GtkWidget *widget,
 				 gpointer data)
 {
@@ -187,10 +185,7 @@
 
 	info1005.sv1005_comment = state->comment_new;
 
-	status = NetServerSetInfo(state->target_hostname,
-				  1005,
-				  (uint8_t *)&info1005,
-				  &parm_err);
+	status = NetServerSetInfo(NULL, 1005, (uint8_t *)&info1005, &parm_err); 
 	if (status) {
 		debug("NetServerSetInfo failed with: %s\n",
 			libnetapi_errstr(status));
@@ -201,7 +196,6 @@
 						"Failed to change computer description: %s.",
 						libnetapi_get_error_string(state->ctx, status));
 		gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-		gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_main));
 
 		g_signal_connect_swapped(dialog, "response",
 					 G_CALLBACK(gtk_widget_destroy),
@@ -273,7 +267,6 @@
 					GTK_BUTTONS_OK,
 					"You must restart this computer for the changes to take effect.");
 	gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-	gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_do_change));
 #if 0
 	g_signal_connect_swapped(dialog, "response",
 				 G_CALLBACK(gtk_widget_destroy),
@@ -297,9 +290,7 @@
 		const char *buffer;
 		uint16_t type;
 
-		status = NetGetJoinInformation(state->target_hostname,
-					       &buffer,
-					       &type);
+		status = NetGetJoinInformation(NULL, &buffer, &type);
 		if (status != 0) {
 			g_print("failed to query status\n");
 			return;
@@ -475,7 +466,6 @@
 					str);
 
 	gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-	gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_main));
 	g_signal_connect_swapped(dialog, "response",
 				 G_CALLBACK(gtk_widget_destroy),
 				 dialog);
@@ -505,11 +495,9 @@
 	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
 	gtk_widget_set_size_request(GTK_WIDGET(window), 380, 280);
 	gtk_window_set_icon_from_file(GTK_WINDOW(window), SAMBA_ICON_PATH, NULL);
-	gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(state->window_do_change));
-	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
 
 	g_signal_connect(G_OBJECT(window), "delete_event",
-			 G_CALLBACK(callback_do_close_widget), NULL);
+			 G_CALLBACK(callback_do_close), window);
 
 	state->window_creds_prompt = window;
 	gtk_container_set_border_width(GTK_CONTAINER(window), 10);
@@ -643,9 +631,9 @@
 	if (state->name_type_new == NetSetupDomainName) {
 		domain_join = TRUE;
 		join_creds_required = TRUE;
-		join_flags = NETSETUP_JOIN_DOMAIN |
-			     NETSETUP_ACCT_CREATE |
-			     NETSETUP_DOMAIN_JOIN_IF_JOINED; /* for testing */
+		join_flags = WKSSVC_JOIN_FLAGS_JOIN_TYPE |
+			     WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE |
+			     WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED; /* for testing */
 	}
 
 	if ((state->name_type_initial == NetSetupDomainName) &&
@@ -653,8 +641,8 @@
 		try_unjoin = TRUE;
 		unjoin_creds_required = TRUE;
 		join_creds_required = FALSE;
-		unjoin_flags = NETSETUP_JOIN_DOMAIN |
-			       NETSETUP_ACCT_DELETE;
+		unjoin_flags = WKSSVC_JOIN_FLAGS_JOIN_TYPE |
+			       WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE;
 	}
 
 	if (try_unjoin) {
@@ -675,7 +663,7 @@
 			}
 		}
 
-		status = NetUnjoinDomain(state->target_hostname,
+		status = NetUnjoinDomain(NULL,
 					 state->account,
 					 state->password,
 					 unjoin_flags);
@@ -729,7 +717,6 @@
 							err_str);
 
 			gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-			gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_do_change));
 			g_signal_connect_swapped(dialog, "response",
 						 G_CALLBACK(gtk_widget_destroy),
 						 dialog);
@@ -766,7 +753,7 @@
 	}
 	debug("\n");
 
-	status = NetJoinDomain(state->target_hostname,
+	status = NetJoinDomain(NULL,
 			       state->name_buffer_new,
 			       account_ou,
 			       state->account,
@@ -787,7 +774,6 @@
 						err_str);
 
 		gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-		gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_do_change));
 		g_signal_connect_swapped(dialog, "response",
 					 G_CALLBACK(gtk_widget_destroy),
 					 dialog);
@@ -810,7 +796,6 @@
 					new_workgroup_type);
 
 	gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-	gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_do_change));
 	gtk_dialog_run(GTK_DIALOG(dialog));
 	gtk_widget_destroy(dialog);
 
@@ -834,19 +819,13 @@
 	if (strcasecmp(state->my_hostname, entry_text) == 0) {
 		state->hostname_changed = FALSE;
 		gtk_widget_set_sensitive(GTK_WIDGET(state->button_ok), FALSE);
-		/* return; */
-	} else {
-		state->hostname_changed = TRUE;
+		return;
 	}
-
+	state->hostname_changed = TRUE;
 	if (state->name_type_initial == NetSetupDomainName) {
-		if (asprintf(&str, "%s.%s", entry_text, state->my_dnsdomain) == -1) {
-			return;
-		}
+		asprintf(&str, "%s.%s", entry_text, state->my_dnsdomain);
 	} else {
-		if (asprintf(&str, "%s.", entry_text) == -1) {
-			return;
-		}
+		asprintf(&str, "%s.", entry_text);
 	}
 	gtk_label_set_text(GTK_LABEL(state->label_full_computer_name), str);
 	free(str);
@@ -861,7 +840,7 @@
 {
 	const gchar *entry_text = NULL;
 	struct join_state *state = (struct join_state *)data;
-	int string_unchanged = FALSE;
+	int string_unchanged = 0;
 
 	entry_text = gtk_entry_get_text(GTK_ENTRY(widget));
 	debug("callback_enter_computer_description_and_unlock: %s\n",
@@ -874,8 +853,8 @@
 		return;
 	}
 #endif
-	if (entry_text && state->comment && strcasecmp(state->comment, entry_text) == 0) {
-		string_unchanged = TRUE;
+	if (entry_text && strcasecmp(state->comment, entry_text) == 0) {
+		string_unchanged = 1;
 		gtk_widget_set_sensitive(GTK_WIDGET(state->button_apply),
 					 FALSE);
 		return;
@@ -1004,7 +983,6 @@
 						err_str);
 
 		gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-		gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_do_change));
 		g_signal_connect_swapped(dialog, "response",
 					 G_CALLBACK(gtk_widget_destroy),
 					 dialog);
@@ -1026,8 +1004,7 @@
 		return;
 	}
 
-	status = NetGetJoinableOUs(state->target_hostname,
-				   domain,
+	status = NetGetJoinableOUs(NULL, domain,
 				   state->account,
 				   state->password,
 				   &num_ous, &ous);
@@ -1042,7 +1019,6 @@
 						"Failed to query joinable OUs: %s",
 						libnetapi_get_error_string(state->ctx, status));
 		gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
-		gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(state->window_do_change));
 		gtk_dialog_run(GTK_DIALOG(dialog));
 		gtk_widget_destroy(dialog);
 		return;
@@ -1108,11 +1084,9 @@
 	gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
 	gtk_widget_set_size_request(GTK_WIDGET(window), 480, 650);
 	gtk_window_set_icon_from_file(GTK_WINDOW(window), SAMBA_ICON_PATH, NULL);
-	gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(state->window_main));
-	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
 
 	g_signal_connect(G_OBJECT(window), "delete_event",
-			 G_CALLBACK(callback_do_close_widget), NULL);
+			 G_CALLBACK(callback_do_close), window);
 
 	gtk_container_set_border_width(GTK_CONTAINER(window), 10);
 
@@ -1158,14 +1132,10 @@
 		char *str = NULL;
 		entry_text = gtk_entry_get_text(GTK_ENTRY(entry));
 		if (state->name_type_initial == NetSetupDomainName) {
-			if (asprintf(&str, "%s.%s", entry_text,
-				 state->my_dnsdomain) == -1) {
-				return;
-			}
+			asprintf(&str, "%s.%s", entry_text,
+				 state->my_dnsdomain);
 		} else {
-			if (asprintf(&str, "%s.", entry_text) == -1) {
-				return;
-			}
+			asprintf(&str, "%s.", entry_text);
 		}
 		gtk_label_set_text(GTK_LABEL(state->label_full_computer_name),
 				   str);
@@ -1310,8 +1280,6 @@
 	GError    *error = NULL;
 	GtkWidget *about;
 
-	struct join_state *state = (struct join_state *)data;
-
 	debug("callback_do_about called\n");
 
 	logo = gdk_pixbuf_new_from_file(SAMBA_IMAGE_PATH,
@@ -1335,7 +1303,6 @@
 	}
 	gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), "Samba gtk domain join utility");
 	gtk_window_set_modal(GTK_WINDOW(about), TRUE);
-	gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(state->window_main));
 	g_signal_connect_swapped(about, "response",
 				 G_CALLBACK(gtk_widget_destroy),
 				 about);
@@ -1382,7 +1349,6 @@
 	gtk_widget_set_size_request(GTK_WIDGET(window), 600, 600);
 	gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
 	gtk_window_set_icon_from_file(GTK_WINDOW(window), SAMBA_ICON_PATH, NULL);
-	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
 
 	g_signal_connect(G_OBJECT(window), "delete_event",
 			 G_CALLBACK(callback_delete_event), NULL);
@@ -1470,14 +1436,10 @@
 		/* Label */
 		char *str = NULL;
 		if (state->name_type_initial == NetSetupDomainName) {
-			if (asprintf(&str, "%s.%s", state->my_hostname,
-				 state->my_dnsdomain) == -1) {
-				return -1;
-			}
+			asprintf(&str, "%s.%s", state->my_hostname,
+				 state->my_dnsdomain);
 		} else {
-			if (asprintf(&str, "%s.", state->my_hostname) == -1) {
-				return -1;
-			}
+			asprintf(&str, "%s.", state->my_hostname);
 		}
 
 		label = gtk_label_new(str);
@@ -1577,7 +1539,7 @@
 		gtk_container_add(GTK_CONTAINER(bbox2), button2);
 		g_signal_connect(G_OBJECT(button2), "clicked",
 				 G_CALLBACK(callback_do_about),
-				 state);
+				 window);
 #if 0
 		button2 = gtk_button_new_from_stock(GTK_STOCK_HELP);
 		gtk_container_add(GTK_CONTAINER(bbox2), button2);
@@ -1609,55 +1571,8 @@
 	return 0;
 }
 
-static NET_API_STATUS get_server_comment(struct join_state *state)
-{
-	struct SERVER_INFO_101 *info101 = NULL;
-	struct SERVER_INFO_1005 *info1005 = NULL;
-	NET_API_STATUS status;
-
-	status = NetServerGetInfo(state->target_hostname,
-				  101,
-				  (uint8_t **)&info101);
-	if (status == 0) {
-		state->comment = strdup(info101->sv101_comment);
-		if (!state->comment) {
-			return -1;
-		}
-		NetApiBufferFree(info101);
-		return NET_API_STATUS_SUCCESS;
-	}
-
-	switch (status) {
-		case 124: /* WERR_UNKNOWN_LEVEL */
-		case 50: /* WERR_NOT_SUPPORTED */
-			break;
-		default:
-			goto failed;
-	}
-
-	status = NetServerGetInfo(state->target_hostname,
-				  1005,
-				  (uint8_t **)&info1005);
-	if (status == 0) {
-		state->comment = strdup(info1005->sv1005_comment);
-		if (!state->comment) {
-			return -1;
-		}
-		NetApiBufferFree(info1005);
-		return NET_API_STATUS_SUCCESS;
-	}
-
- failed:
-	printf("NetServerGetInfo failed with: %s\n",
-		libnetapi_get_error_string(state->ctx, status));
-
-	return status;
-}
-
 static int initialize_join_state(struct join_state *state,
-				 const char *debug_level,
-				 const char *target_hostname,
-				 const char *target_username)
+				 const char *debug_level)
 {
 	struct libnetapi_ctx *ctx = NULL;
 	NET_API_STATUS status = 0;
@@ -1671,30 +1586,6 @@
 		libnetapi_set_debuglevel(ctx, debug_level);
 	}
 
-	if (target_hostname) {
-		state->target_hostname = strdup(target_hostname);
-		if (!state->target_hostname) {
-			return -1;
-		}
-	}
-
-	if (target_username) {
-		char *puser = strdup(target_username);
-		char *p = NULL;
-
-		if ((p = strchr(puser,'%'))) {
-			size_t len;
-			*p = 0;
-			libnetapi_set_username(ctx, puser);
-			libnetapi_set_password(ctx, p+1);
-			len = strlen(p+1);
-			memset(strchr(target_username,'%')+1,'X',len);
-		} else {
-			libnetapi_set_username(ctx, puser);
-		}
-		free(puser);
-	}
-
 	{
 		char my_hostname[HOST_NAME_MAX];
 		const char *p = NULL;
@@ -1741,9 +1632,7 @@
 	{
 		const char *buffer = NULL;
 		uint16_t type = 0;
-		status = NetGetJoinInformation(state->target_hostname,
-					       &buffer,
-					       &type);
+		status = NetGetJoinInformation(NULL, &buffer, &type);
 		if (status != 0) {
 			printf("NetGetJoinInformation failed with: %s\n",
 				libnetapi_get_error_string(state->ctx, status));
@@ -1758,11 +1647,44 @@
 		NetApiBufferFree((void *)buffer);
 	}
 
-	status = get_server_comment(state);
-	if (status != 0) {
-		return -1;
+	{
+		struct SERVER_INFO_1005 *info1005 = NULL;
+		uint8_t *buffer = NULL;
+
+		status = NetServerGetInfo(NULL, 1005, &buffer);
+		if (status != 0) {
+			printf("NetServerGetInfo failed with: %s\n",
+				libnetapi_get_error_string(state->ctx, status));
+			return status;
+		}
+
+		info1005 = (struct SERVER_INFO_1005 *)buffer;
+
+		state->comment = strdup(info1005->sv1005_comment);
+		if (!state->comment) {
+			return -1;
+		}
+		NetApiBufferFree(buffer);
 	}
+#if 0
+	{
+		struct srvsvc_NetSrvInfo100 *info100 = NULL;
+		uint8_t *buffer = NULL;
 
+		status = NetServerGetInfo(NULL, 100, &buffer);
+		if (status) {
+			return status;
+		}
+
+		info100 = (struct srvsvc_NetSrvInfo100 *)buffer;
+
+		state->comment = strdup(info100->comment);
+		if (!state->comment) {
+			return -1;
+		}
+	}
+#endif
+
 	state->ctx = ctx;
 
 	return 0;
@@ -1772,8 +1694,6 @@
 {
 	GOptionContext *context = NULL;
 	static const char *debug_level = NULL;
-	static const char *target_hostname = NULL;
-	static const char *target_username = NULL;
 	struct join_state *state = NULL;
 	GError *error = NULL;
 	int ret = 0;
@@ -1781,8 +1701,6 @@
 	static GOptionEntry entries[] = {
 		{ "debug", 'd', 0, G_OPTION_ARG_STRING, &debug_level, "Debug level (for samba)", "N" },
 		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Verbose output", 0 },
-		{ "target", 'S', 0, G_OPTION_ARG_STRING, &target_hostname, "Target hostname", 0 },
-		{ "username", 'U', 0, G_OPTION_ARG_STRING, &target_username, "Target hostname", 0 },
 		{ NULL }
 	};
 
@@ -1800,9 +1718,7 @@
 		return ret;
 	}
 
-	ret = initialize_join_state(state, debug_level,
-				    target_hostname,
-				    target_username);
+	ret = initialize_join_state(state, debug_level);
 	if (ret) {
 		return ret;
 	}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_chgpwd.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_chgpwd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_chgpwd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,99 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserChangePassword query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	const char *username = NULL;
-	const char *old_password = NULL;
-	const char *new_password = NULL;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_chgpwd", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname username old_password new_password");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	username = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	old_password = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	new_password = poptGetArg(pc);
-
-	/* NetUserChangePassword */
-
-	status = NetUserChangePassword(hostname,
-				       username,
-				       old_password,
-				       new_password);
-	if (status != 0) {
-		printf("NetUserChangePassword failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Modified: branches/samba/upstream/source/lib/netapi/examples/user/user_dispinfo.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_dispinfo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_dispinfo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -78,13 +78,11 @@
 		if (status == 0 || status == ERROR_MORE_DATA) {
 			user = (struct NET_DISPLAY_USER *)buffer;
 			for (i=0; i<entries_read; i++) {
-				printf("user %d: %s\n", i + idx,
-				       user->usri1_name);
+				printf("user %d: %s\n", i, user->usri1_name);
 				user++;
 			}
 			NetApiBufferFree(buffer);
 		}
-		idx += entries_read;
 	} while (status == ERROR_MORE_DATA);
 
 	if (status != 0) {

Modified: branches/samba/upstream/source/lib/netapi/examples/user/user_enum.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_enum.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_enum.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -32,18 +32,13 @@
 	NET_API_STATUS status;
 	struct libnetapi_ctx *ctx = NULL;
 	const char *hostname = NULL;
-	uint32_t level = 0;
 	uint8_t *buffer = NULL;
 	uint32_t entries_read = 0;
 	uint32_t total_entries = 0;
 	uint32_t resume_handle = 0;
-	char *sid_str = NULL;
 	int i;
 
-	struct USER_INFO_0 *info0 = NULL;
-	struct USER_INFO_10 *info10 = NULL;
-	struct USER_INFO_20 *info20 = NULL;
-	struct USER_INFO_23 *info23 = NULL;
+	struct USER_INFO_0 *info0;
 
 	poptContext pc;
 	int opt;
@@ -61,7 +56,7 @@
 
 	pc = poptGetContext("user_enum", argc, argv, long_options, 0);
 
-	poptSetOtherOptionHelp(pc, "hostname level");
+	poptSetOtherOptionHelp(pc, "hostname");
 	while((opt = poptGetNextOpt(pc)) != -1) {
 	}
 
@@ -71,74 +66,22 @@
 	}
 	hostname = poptGetArg(pc);
 
-	if (poptPeekArg(pc)) {
-		level = atoi(poptGetArg(pc));
-	}
-
 	/* NetUserEnum */
 
 	do {
 		status = NetUserEnum(hostname,
-				     level,
-				     FILTER_NORMAL_ACCOUNT,
+				     0,
+				     0,
 				     &buffer,
 				     (uint32_t)-1,
 				     &entries_read,
 				     &total_entries,
 				     &resume_handle);
 		if (status == 0 || status == ERROR_MORE_DATA) {
-
-			switch (level) {
-				case 0:
-					info0 = (struct USER_INFO_0 *)buffer;
-					break;
-				case 10:
-					info10 = (struct USER_INFO_10 *)buffer;
-					break;
-				case 20:
-					info20 = (struct USER_INFO_20 *)buffer;
-					break;
-				case 23:
-					info23 = (struct USER_INFO_23 *)buffer;
-					break;
-				default:
-					break;
-			}
-
+			info0 = (struct USER_INFO_0 *)buffer;
 			for (i=0; i<entries_read; i++) {
-				switch (level) {
-					case 0:
-						printf("#%d user: %s\n", i, info0->usri0_name);
-						info0++;
-						break;
-					case 10:
-						printf("#%d user: %s\n", i, info10->usri10_name);
-						printf("#%d comment: %s\n", i, info10->usri10_comment);
-						printf("#%d usr_comment: %s\n", i, info10->usri10_usr_comment);
-						printf("#%d full_name: %s\n", i, info10->usri10_full_name);
-						info10++;
-						break;
-					case 20:
-						printf("#%d user: %s\n", i, info20->usri20_name);
-						printf("#%d comment: %s\n", i, info20->usri20_comment);
-						printf("#%d flags: 0x%08x\n", i, info20->usri20_flags);
-						printf("#%d rid: %d\n", i, info20->usri20_user_id);
-						info20++;
-						break;
-					case 23:
-						printf("#%d user: %s\n", i, info23->usri23_name);
-						printf("#%d comment: %s\n", i, info23->usri23_comment);
-						printf("#%d flags: 0x%08x\n", i, info23->usri23_flags);
-						if (ConvertSidToStringSid(info23->usri23_user_sid,
-									  &sid_str)) {
-							printf("#%d sid: %s\n", i, sid_str);
-							free(sid_str);
-						}
-						info23++;
-						break;
-					default:
-						break;
-				}
+				printf("user %d: %s\n", i, info0->usri0_name);
+				info0++;
 			}
 			NetApiBufferFree(buffer);
 		}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_getgroups.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_getgroups.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_getgroups.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,133 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserGetGroups query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	const char *username = NULL;
-	uint32_t level = 0;
-	uint8_t *buffer = NULL;
-	uint32_t entries_read = 0;
-	uint32_t total_entries = 0;
-	int i;
-
-	struct GROUP_USERS_INFO_0 *info0 = NULL;
-	struct GROUP_USERS_INFO_1 *info1 = NULL;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_getgroups", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname username level");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	username = poptGetArg(pc);
-
-	if (poptPeekArg(pc)) {
-		level = atoi(poptGetArg(pc));
-	}
-
-	/* NetUserGetGroups */
-
-	do {
-		status = NetUserGetGroups(hostname,
-					  username,
-					  level,
-					  &buffer,
-					  (uint32_t)-1,
-					  &entries_read,
-					  &total_entries);
-		if (status == 0 || status == ERROR_MORE_DATA) {
-
-			switch (level) {
-				case 0:
-					info0 = (struct GROUP_USERS_INFO_0 *)buffer;
-					break;
-				case 1:
-					info1 = (struct GROUP_USERS_INFO_1 *)buffer;
-					break;
-				default:
-					break;
-			}
-
-			for (i=0; i<entries_read; i++) {
-				switch (level) {
-					case 0:
-						printf("#%d group: %s\n", i, info0->grui0_name);
-						info0++;
-						break;
-					case 1:
-						printf("#%d group: %s\n", i, info1->grui1_name);
-						printf("#%d attributes: %d\n", i, info1->grui1_attributes);
-						info1++;
-						break;
-					default:
-						break;
-				}
-			}
-			NetApiBufferFree(buffer);
-		}
-	} while (status == ERROR_MORE_DATA);
-
-	if (status != 0) {
-		printf("NetUserGetGroups failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_getinfo.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_getinfo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_getinfo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,293 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserGetInfo query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	const char *username = NULL;
-	uint8_t *buffer = NULL;
-	uint32_t level = 0;
-	char *sid_str = NULL;
-	int i;
-
-	struct USER_INFO_0 *u0;
-	struct USER_INFO_1 *u1;
-	struct USER_INFO_2 *u2;
-	struct USER_INFO_3 *u3;
-	struct USER_INFO_4 *u4;
-	struct USER_INFO_10 *u10;
-	struct USER_INFO_11 *u11;
-	struct USER_INFO_20 *u20;
-	struct USER_INFO_23 *u23;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_getinfo", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname username level");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	username = poptGetArg(pc);
-
-	if (poptPeekArg(pc)) {
-		level = atoi(poptGetArg(pc));
-	}
-
-	/* NetUserGetInfo */
-
-	status = NetUserGetInfo(hostname,
-				username,
-				level,
-				&buffer);
-	if (status != 0) {
-		printf("NetUserGetInfo failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-		goto out;
-	}
-
-	switch (level) {
-		case 0:
-			u0 = (struct USER_INFO_0 *)buffer;
-			printf("name: %s\n", u0->usri0_name);
-			break;
-		case 1:
-			u1 = (struct USER_INFO_1 *)buffer;
-			printf("name: %s\n", u1->usri1_name);
-			printf("password: %s\n", u1->usri1_password);
-			printf("password_age: %d\n", u1->usri1_password_age);
-			printf("priv: %d\n", u1->usri1_priv);
-			printf("homedir: %s\n", u1->usri1_home_dir);
-			printf("comment: %s\n", u1->usri1_comment);
-			printf("flags: 0x%08x\n", u1->usri1_flags);
-			printf("script: %s\n", u1->usri1_script_path);
-			break;
-		case 2:
-			u2 = (struct USER_INFO_2 *)buffer;
-			printf("name: %s\n", u2->usri2_name);
-			printf("password: %s\n", u2->usri2_password);
-			printf("password_age: %d\n", u2->usri2_password_age);
-			printf("priv: %d\n", u2->usri2_priv);
-			printf("homedir: %s\n", u2->usri2_home_dir);
-			printf("comment: %s\n", u2->usri2_comment);
-			printf("flags: 0x%08x\n", u2->usri2_flags);
-			printf("script: %s\n", u2->usri2_script_path);
-			printf("auth flags: 0x%08x\n", u2->usri2_auth_flags);
-			printf("full name: %s\n", u2->usri2_full_name);
-			printf("user comment: %s\n", u2->usri2_usr_comment);
-			printf("user parameters: %s\n", u2->usri2_parms);
-			printf("workstations: %s\n", u2->usri2_workstations);
-			printf("last logon (seconds since jan. 1, 1970 GMT): %d\n",
-				u2->usri2_last_logon);
-			printf("last logoff (seconds since jan. 1, 1970 GMT): %d\n",
-				u2->usri2_last_logoff);
-			printf("account expires (seconds since jan. 1, 1970 GMT): %d\n",
-				u2->usri2_acct_expires);
-			printf("max storage: %d\n", u2->usri2_max_storage);
-			printf("units per week: %d\n", u2->usri2_units_per_week);
-			printf("logon hours:");
-			for (i=0; i<21; i++) {
-				printf(" %x", (uint8_t)u2->usri2_logon_hours[i]);
-			}
-			printf("\n");
-			printf("bad password count: %d\n", u2->usri2_bad_pw_count);
-			printf("logon count: %d\n", u2->usri2_num_logons);
-			printf("logon server: %s\n", u2->usri2_logon_server);
-			printf("country code: %d\n", u2->usri2_country_code);
-			printf("code page: %d\n", u2->usri2_code_page);
-			break;
-		case 3:
-			u3 = (struct USER_INFO_3 *)buffer;
-			printf("name: %s\n", u3->usri3_name);
-			printf("password_age: %d\n", u3->usri3_password_age);
-			printf("priv: %d\n", u3->usri3_priv);
-			printf("homedir: %s\n", u3->usri3_home_dir);
-			printf("comment: %s\n", u3->usri3_comment);
-			printf("flags: 0x%08x\n", u3->usri3_flags);
-			printf("script: %s\n", u3->usri3_script_path);
-			printf("auth flags: 0x%08x\n", u3->usri3_auth_flags);
-			printf("full name: %s\n", u3->usri3_full_name);
-			printf("user comment: %s\n", u3->usri3_usr_comment);
-			printf("user parameters: %s\n", u3->usri3_parms);
-			printf("workstations: %s\n", u3->usri3_workstations);
-			printf("last logon (seconds since jan. 1, 1970 GMT): %d\n",
-				u3->usri3_last_logon);
-			printf("last logoff (seconds since jan. 1, 1970 GMT): %d\n",
-				u3->usri3_last_logoff);
-			printf("account expires (seconds since jan. 1, 1970 GMT): %d\n",
-				u3->usri3_acct_expires);
-			printf("max storage: %d\n", u3->usri3_max_storage);
-			printf("units per week: %d\n", u3->usri3_units_per_week);
-			printf("logon hours:");
-			for (i=0; i<21; i++) {
-				printf(" %x", (uint8_t)u3->usri3_logon_hours[i]);
-			}
-			printf("\n");
-			printf("bad password count: %d\n", u3->usri3_bad_pw_count);
-			printf("logon count: %d\n", u3->usri3_num_logons);
-			printf("logon server: %s\n", u3->usri3_logon_server);
-			printf("country code: %d\n", u3->usri3_country_code);
-			printf("code page: %d\n", u3->usri3_code_page);
-			printf("user id: %d\n", u3->usri3_user_id);
-			printf("primary group id: %d\n", u3->usri3_primary_group_id);
-			printf("profile: %s\n", u3->usri3_profile);
-			printf("home dir drive: %s\n", u3->usri3_home_dir_drive);
-			printf("password expired: %d\n", u3->usri3_password_expired);
-			break;
-		case 4:
-			u4 = (struct USER_INFO_4 *)buffer;
-			printf("name: %s\n", u4->usri4_name);
-			printf("password: %s\n", u4->usri4_password);
-			printf("password_age: %d\n", u4->usri4_password_age);
-			printf("priv: %d\n", u4->usri4_priv);
-			printf("homedir: %s\n", u4->usri4_home_dir);
-			printf("comment: %s\n", u4->usri4_comment);
-			printf("flags: 0x%08x\n", u4->usri4_flags);
-			printf("script: %s\n", u4->usri4_script_path);
-			printf("auth flags: 0x%08x\n", u4->usri4_auth_flags);
-			printf("full name: %s\n", u4->usri4_full_name);
-			printf("user comment: %s\n", u4->usri4_usr_comment);
-			printf("user parameters: %s\n", u4->usri4_parms);
-			printf("workstations: %s\n", u4->usri4_workstations);
-			printf("last logon (seconds since jan. 1, 1970 GMT): %d\n",
-				u4->usri4_last_logon);
-			printf("last logoff (seconds since jan. 1, 1970 GMT): %d\n",
-				u4->usri4_last_logoff);
-			printf("account expires (seconds since jan. 1, 1970 GMT): %d\n",
-				u4->usri4_acct_expires);
-			printf("max storage: %d\n", u4->usri4_max_storage);
-			printf("units per week: %d\n", u4->usri4_units_per_week);
-			printf("logon hours:");
-			for (i=0; i<21; i++) {
-				printf(" %x", (uint8_t)u4->usri4_logon_hours[i]);
-			}
-			printf("\n");
-			printf("bad password count: %d\n", u4->usri4_bad_pw_count);
-			printf("logon count: %d\n", u4->usri4_num_logons);
-			printf("logon server: %s\n", u4->usri4_logon_server);
-			printf("country code: %d\n", u4->usri4_country_code);
-			printf("code page: %d\n", u4->usri4_code_page);
-			if (ConvertSidToStringSid(u4->usri4_user_sid,
-						  &sid_str)) {
-				printf("user_sid: %s\n", sid_str);
-				free(sid_str);
-			}
-			printf("primary group id: %d\n", u4->usri4_primary_group_id);
-			printf("profile: %s\n", u4->usri4_profile);
-			printf("home dir drive: %s\n", u4->usri4_home_dir_drive);
-			printf("password expired: %d\n", u4->usri4_password_expired);
-			break;
-		case 10:
-			u10 = (struct USER_INFO_10 *)buffer;
-			printf("name: %s\n", u10->usri10_name);
-			printf("comment: %s\n", u10->usri10_comment);
-			printf("usr_comment: %s\n", u10->usri10_usr_comment);
-			printf("full_name: %s\n", u10->usri10_full_name);
-			break;
-		case 11:
-			u11 = (struct USER_INFO_11 *)buffer;
-			printf("name: %s\n", u11->usri11_name);
-			printf("comment: %s\n", u11->usri11_comment);
-			printf("user comment: %s\n", u11->usri11_usr_comment);
-			printf("full name: %s\n", u11->usri11_full_name);
-			printf("priv: %d\n", u11->usri11_priv);
-			printf("auth flags: 0x%08x\n", u11->usri11_auth_flags);
-			printf("password_age: %d\n", u11->usri11_password_age);
-			printf("homedir: %s\n", u11->usri11_home_dir);
-			printf("user parameters: %s\n", u11->usri11_parms);
-			printf("last logon (seconds since jan. 1, 1970 GMT): %d\n",
-				u11->usri11_last_logon);
-			printf("last logoff (seconds since jan. 1, 1970 GMT): %d\n",
-				u11->usri11_last_logoff);
-			printf("bad password count: %d\n", u11->usri11_bad_pw_count);
-			printf("logon count: %d\n", u11->usri11_num_logons);
-			printf("logon server: %s\n", u11->usri11_logon_server);
-			printf("country code: %d\n", u11->usri11_country_code);
-			printf("workstations: %s\n", u11->usri11_workstations);
-			printf("max storage: %d\n", u11->usri11_max_storage);
-			printf("units per week: %d\n", u11->usri11_units_per_week);
-			printf("logon hours:");
-			for (i=0; i<21; i++) {
-				printf(" %x", (uint8_t)u11->usri11_logon_hours[i]);
-			}
-			printf("\n");
-			printf("code page: %d\n", u11->usri11_code_page);
-			break;
-		case 20:
-			u20 = (struct USER_INFO_20 *)buffer;
-			printf("name: %s\n", u20->usri20_name);
-			printf("comment: %s\n", u20->usri20_comment);
-			printf("flags: 0x%08x\n", u20->usri20_flags);
-			printf("rid: %d\n", u20->usri20_user_id);
-			break;
-		case 23:
-			u23 = (struct USER_INFO_23 *)buffer;
-			printf("name: %s\n", u23->usri23_name);
-			printf("comment: %s\n", u23->usri23_comment);
-			printf("flags: 0x%08x\n", u23->usri23_flags);
-			if (ConvertSidToStringSid(u23->usri23_user_sid,
-						  &sid_str)) {
-				printf("user_sid: %s\n", sid_str);
-				free(sid_str);
-			}
-			break;
-		default:
-			break;
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_getlocalgroups.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_getlocalgroups.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_getlocalgroups.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,122 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserGetLocalGroups query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	const char *username = NULL;
-	uint32_t level = 0;
-	uint8_t *buffer = NULL;
-	uint32_t entries_read = 0;
-	uint32_t total_entries = 0;
-	uint32_t flags = 0;
-	int i;
-
-	struct LOCALGROUP_USERS_INFO_0 *info0 = NULL;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_getlocalgroups", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname username");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	username = poptGetArg(pc);
-
-	/* NetUserGetLocalGroups */
-
-	do {
-		status = NetUserGetLocalGroups(hostname,
-					       username,
-					       level,
-					       flags,
-					       &buffer,
-					       (uint32_t)-1,
-					       &entries_read,
-					       &total_entries);
-		if (status == 0 || status == ERROR_MORE_DATA) {
-
-			switch (level) {
-				case 0:
-					info0 = (struct LOCALGROUP_USERS_INFO_0 *)buffer;
-					break;
-				default:
-					break;
-			}
-
-			for (i=0; i<entries_read; i++) {
-				switch (level) {
-					case 0:
-						printf("#%d group: %s\n", i, info0->lgrui0_name);
-						info0++;
-						break;
-					default:
-						break;
-				}
-			}
-			NetApiBufferFree(buffer);
-		}
-	} while (status == ERROR_MORE_DATA);
-
-	if (status != 0) {
-		printf("NetUserGetLocalGroups failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_modalsget.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_modalsget.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_modalsget.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,131 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserModalsGet query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	uint8_t *buffer = NULL;
-	uint32_t level = 0;
-	char *sid_str = NULL;
-
-	struct USER_MODALS_INFO_0 *u0;
-	struct USER_MODALS_INFO_1 *u1;
-	struct USER_MODALS_INFO_2 *u2;
-	struct USER_MODALS_INFO_3 *u3;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_modalsget", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname level");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (poptPeekArg(pc)) {
-		level = atoi(poptGetArg(pc));
-	}
-
-	/* NetUserModalsGet */
-
-	status = NetUserModalsGet(hostname,
-				  level,
-				  &buffer);
-	if (status != 0) {
-		printf("NetUserModalsGet failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-		goto out;
-	}
-
-	switch (level) {
-		case 0:
-			u0 = (struct USER_MODALS_INFO_0 *)buffer;
-			printf("min passwd len: %d character\n",
-				u0->usrmod0_min_passwd_len);
-			printf("max passwd age: %d (days)\n",
-				u0->usrmod0_max_passwd_age/86400);
-			printf("min passwd age: %d (days)\n",
-				u0->usrmod0_min_passwd_age/86400);
-			printf("force logoff: %d (seconds)\n",
-				u0->usrmod0_force_logoff);
-			printf("password history length: %d entries\n",
-				u0->usrmod0_password_hist_len);
-			break;
-		case 1:
-			u1 = (struct USER_MODALS_INFO_1 *)buffer;
-			printf("role: %d\n", u1->usrmod1_role);
-			printf("primary: %s\n", u1->usrmod1_primary);
-			break;
-		case 2:
-			u2 = (struct USER_MODALS_INFO_2 *)buffer;
-			printf("domain name: %s\n", u2->usrmod2_domain_name);
-			if (ConvertSidToStringSid(u2->usrmod2_domain_id,
-						  &sid_str)) {
-				printf("domain sid: %s\n", sid_str);
-				free(sid_str);
-			}
-			break;
-		case 3:
-			u3 = (struct USER_MODALS_INFO_3 *)buffer;
-			printf("lockout duration: %d (seconds)\n",
-				u3->usrmod3_lockout_duration);
-			printf("lockout observation window: %d (seconds)\n",
-				u3->usrmod3_lockout_observation_window);
-			printf("lockout threshold: %d entries\n",
-				u3->usrmod3_lockout_threshold);
-			break;
-		default:
-			break;
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_modalsset.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_modalsset.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_modalsset.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,141 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserModalsSet query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	uint8_t *buffer = NULL;
-	uint32_t level = 0;
-	uint32_t value = 0;
-	uint32_t parm_err = 0;
-
-	struct USER_MODALS_INFO_0 u0;
-	struct USER_MODALS_INFO_1 u1;
-	struct USER_MODALS_INFO_2 u2;
-	struct USER_MODALS_INFO_3 u3;
-	struct USER_MODALS_INFO_1001 u1001;
-	struct USER_MODALS_INFO_1002 u1002;
-	struct USER_MODALS_INFO_1003 u1003;
-	struct USER_MODALS_INFO_1004 u1004;
-	struct USER_MODALS_INFO_1005 u1005;
-	struct USER_MODALS_INFO_1006 u1006;
-	struct USER_MODALS_INFO_1007 u1007;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_modalsset", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname level value");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (poptPeekArg(pc)) {
-		level = atoi(poptGetArg(pc));
-	}
-
-	if (poptPeekArg(pc)) {
-		value = atoi(poptGetArg(pc));
-	}
-
-	switch (level) {
-		case 0:
-			u0.usrmod0_min_passwd_len = 0;
-			u0.usrmod0_max_passwd_age = (86400 * 30); /* once a month */
-			u0.usrmod0_min_passwd_age = 0;
-			u0.usrmod0_force_logoff = TIMEQ_FOREVER;
-			u0.usrmod0_password_hist_len = 0;
-			buffer = (uint8_t *)&u0;
-			break;
-		case 1:
-		case 2:
-		case 3:
-		case 1001:
-			u1001.usrmod1001_min_passwd_len = 0;
-			buffer = (uint8_t *)&u1001;
-			break;
-		case 1002:
-			u1002.usrmod1002_max_passwd_age = 0;
-			buffer = (uint8_t *)&u1002;
-			break;
-		case 1003:
-			u1003.usrmod1003_min_passwd_age = (86400 * 30); /* once a month */
-			buffer = (uint8_t *)&u1003;
-			break;
-		case 1004:
-			u1004.usrmod1004_force_logoff = TIMEQ_FOREVER;
-			buffer = (uint8_t *)&u1004;
-			break;
-		case 1005:
-			u1005.usrmod1005_password_hist_len = 0;
-			buffer = (uint8_t *)&u1005;
-			break;
-		case 1006:
-		case 1007:
-		default:
-			break;
-	}
-
-	/* NetUserModalsSet */
-
-	status = NetUserModalsSet(hostname,
-				  level,
-				  buffer,
-				  &parm_err);
-	if (status != 0) {
-		printf("NetUserModalsSet failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-		goto out;
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_setgroups.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_setgroups.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_setgroups.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,144 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserSetGroups query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	const char *username = NULL;
-	uint32_t level = 0;
-	uint8_t *buffer = NULL;
-	uint32_t num_entries = 0;
-	const char **names = NULL;
-	int i = 0;
-	size_t buf_size = 0;
-
-	struct GROUP_USERS_INFO_0 *g0 = NULL;
-	struct GROUP_USERS_INFO_1 *g1 = NULL;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_setgroups", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname username group1 group2 ...");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	username = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-
-	names = poptGetArgs(pc);
-	for (i=0; names[i] != NULL; i++) {
-		num_entries++;
-	}
-
-	switch (level) {
-		case 0:
-			buf_size = sizeof(struct GROUP_USERS_INFO_0) * num_entries;
-
-			status = NetApiBufferAllocate(buf_size, (void **)&g0);
-			if (status) {
-				printf("NetApiBufferAllocate failed with: %s\n",
-					libnetapi_get_error_string(ctx, status));
-				goto out;
-			}
-
-			for (i=0; i<num_entries; i++) {
-				g0[i].grui0_name = names[i];
-			}
-
-			buffer = (uint8_t *)g0;
-			break;
-		case 1:
-			buf_size = sizeof(struct GROUP_USERS_INFO_1) * num_entries;
-
-			status = NetApiBufferAllocate(buf_size, (void **)&g1);
-			if (status) {
-				printf("NetApiBufferAllocate failed with: %s\n",
-					libnetapi_get_error_string(ctx, status));
-				goto out;
-			}
-
-			for (i=0; i<num_entries; i++) {
-				g1[i].grui1_name = names[i];
-				g1[i].grui1_attributes = 0; /* ? */
-			}
-
-			buffer = (uint8_t *)g1;
-			break;
-		default:
-			break;
-	}
-
-	/* NetUserSetGroups */
-
-	status = NetUserSetGroups(hostname,
-				  username,
-				  level,
-				  buffer,
-				  num_entries);
-	if (status != 0) {
-		printf("NetUserSetGroups failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-	}
-
- out:
-	NetApiBufferFree(buffer);
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/examples/user/user_setinfo.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/examples/user/user_setinfo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/examples/user/user_setinfo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,207 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetUserSetInfo query
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <netapi.h>
-
-#include "common.h"
-
-int main(int argc, const char **argv)
-{
-	NET_API_STATUS status;
-	struct libnetapi_ctx *ctx = NULL;
-	const char *hostname = NULL;
-	const char *username = NULL;
-	uint32_t level = 0;
-	uint32_t parm_err = 0;
-	uint8_t *buffer = NULL;
-	const char *val = NULL;
-
-	struct USER_INFO_0 u0;
-	struct USER_INFO_1 u1;
-	struct USER_INFO_2 u2;
-	struct USER_INFO_3 u3;
-	struct USER_INFO_4 u4;
-	struct USER_INFO_21 u21;
-	struct USER_INFO_22 u22;
-	struct USER_INFO_1003 u1003;
-	struct USER_INFO_1005 u1005;
-	struct USER_INFO_1006 u1006;
-	struct USER_INFO_1007 u1007;
-	struct USER_INFO_1008 u1008;
-	struct USER_INFO_1009 u1009;
-	struct USER_INFO_1010 u1010;
-	struct USER_INFO_1011 u1011;
-	struct USER_INFO_1012 u1012;
-	struct USER_INFO_1014 u1014;
-	struct USER_INFO_1017 u1017;
-	struct USER_INFO_1020 u1020;
-	struct USER_INFO_1024 u1024;
-	struct USER_INFO_1051 u1051;
-	struct USER_INFO_1052 u1052;
-	struct USER_INFO_1053 u1053;
-
-	poptContext pc;
-	int opt;
-
-	struct poptOption long_options[] = {
-		POPT_AUTOHELP
-		POPT_COMMON_LIBNETAPI_EXAMPLES
-		POPT_TABLEEND
-	};
-
-	status = libnetapi_init(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	pc = poptGetContext("user_setinfo", argc, argv, long_options, 0);
-
-	poptSetOtherOptionHelp(pc, "hostname username level");
-	while((opt = poptGetNextOpt(pc)) != -1) {
-	}
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	hostname = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	username = poptGetArg(pc);
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	level = atoi(poptGetArg(pc));
-
-	if (!poptPeekArg(pc)) {
-		poptPrintHelp(pc, stderr, 0);
-		goto out;
-	}
-	val = poptGetArg(pc);
-
-	/* NetUserSetInfo */
-
-	switch (level) {
-		case 0:
-			u0.usri0_name = val;
-			buffer = (uint8_t *)&u0;
-			break;
-		case 1:
-		case 2:
-		case 3:
-		case 4:
-			break;
-		case 21:
-			break;
-		case 22:
-			break;
-		case 1003:
-			u1003.usri1003_password = val;
-			buffer = (uint8_t *)&u1003;
-			break;
-		case 1005:
-			u1005.usri1005_priv = atoi(val);
-			buffer = (uint8_t *)&u1005;
-			break;
-		case 1006:
-			u1006.usri1006_home_dir = val;
-			buffer = (uint8_t *)&u1006;
-			break;
-		case 1007:
-			u1007.usri1007_comment = val;
-			buffer = (uint8_t *)&u1007;
-			break;
-		case 1008:
-			u1008.usri1008_flags = atoi(val);
-			buffer = (uint8_t *)&u1008;
-			break;
-		case 1009:
-			u1009.usri1009_script_path = val;
-			buffer = (uint8_t *)&u1009;
-			break;
-		case 1010:
-			u1010.usri1010_auth_flags = atoi(val);
-			buffer = (uint8_t *)&u1010;
-			break;
-		case 1011:
-			u1011.usri1011_full_name = val;
-			buffer = (uint8_t *)&u1011;
-			break;
-		case 1012:
-			u1012.usri1012_usr_comment = val;
-			buffer = (uint8_t *)&u1012;
-			break;
-		case 1014:
-			u1014.usri1014_workstations = val;
-			buffer = (uint8_t *)&u1014;
-			break;
-		case 1017:
-			u1017.usri1017_acct_expires = atoi(val);
-			buffer = (uint8_t *)&u1017;
-			break;
-		case 1020:
-			break;
-		case 1024:
-			u1024.usri1024_country_code = atoi(val);
-			buffer = (uint8_t *)&u1024;
-			break;
-		case 1051:
-			u1051.usri1051_primary_group_id = atoi(val);
-			buffer = (uint8_t *)&u1051;
-			break;
-		case 1052:
-			u1052.usri1052_profile = val;
-			buffer = (uint8_t *)&u1052;
-			break;
-		case 1053:
-			u1053.usri1053_home_dir_drive = val;
-			buffer = (uint8_t *)&u1053;
-			break;
-		default:
-			break;
-	}
-
-	status = NetUserSetInfo(hostname,
-				username,
-				level,
-				buffer,
-				&parm_err);
-	if (status != 0) {
-		printf("NetUserSetInfo failed with: %s\n",
-			libnetapi_get_error_string(ctx, status));
-		goto out;
-	}
-
- out:
-	libnetapi_free(ctx);
-	poptFreeContext(pc);
-
-	return status;
-}

Deleted: branches/samba/upstream/source/lib/netapi/file.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/file.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/file.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,289 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetApi File Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#include "librpc/gen_ndr/libnetapi.h"
-#include "lib/netapi/netapi.h"
-#include "lib/netapi/netapi_private.h"
-#include "lib/netapi/libnetapi.h"
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetFileClose_r(struct libnetapi_ctx *ctx,
-		      struct NetFileClose *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetFileClose(pipe_cli, ctx,
-					    r->in.server_name,
-					    r->in.fileid,
-					    &werr);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetFileClose_l(struct libnetapi_ctx *ctx,
-		      struct NetFileClose *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetFileClose);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS map_srvsvc_FileInfo_to_FILE_INFO_buffer(TALLOC_CTX *mem_ctx,
-							uint32_t level,
-							union srvsvc_NetFileInfo *info,
-							uint8_t **buffer,
-							uint32_t *num_entries)
-{
-	struct FILE_INFO_2 i2;
-	struct FILE_INFO_3 i3;
-
-	switch (level) {
-		case 2:
-			i2.fi2_id		= info->info2->fid;
-
-			ADD_TO_ARRAY(mem_ctx, struct FILE_INFO_2, i2,
-				     (struct FILE_INFO_2 **)buffer,
-				     num_entries);
-			break;
-		case 3:
-			i3.fi3_id		= info->info3->fid;
-			i3.fi3_permissions	= info->info3->permissions;
-			i3.fi3_num_locks	= info->info3->num_locks;
-			i3.fi3_pathname		= talloc_strdup(mem_ctx, info->info3->path);
-			i3.fi3_username		= talloc_strdup(mem_ctx, info->info3->user);
-
-			NT_STATUS_HAVE_NO_MEMORY(i3.fi3_pathname);
-			NT_STATUS_HAVE_NO_MEMORY(i3.fi3_username);
-
-			ADD_TO_ARRAY(mem_ctx, struct FILE_INFO_3, i3,
-				     (struct FILE_INFO_3 **)buffer,
-				     num_entries);
-			break;
-		default:
-			return NT_STATUS_INVALID_INFO_CLASS;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetFileGetInfo_r(struct libnetapi_ctx *ctx,
-			struct NetFileGetInfo *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	union srvsvc_NetFileInfo info;
-	uint32_t num_entries = 0;
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 2:
-		case 3:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetFileGetInfo(pipe_cli, ctx,
-					      r->in.server_name,
-					      r->in.fileid,
-					      r->in.level,
-					      &info,
-					      &werr);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = map_srvsvc_FileInfo_to_FILE_INFO_buffer(ctx,
-							 r->in.level,
-							 &info,
-							 r->out.buffer,
-							 &num_entries);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetFileGetInfo_l(struct libnetapi_ctx *ctx,
-			struct NetFileGetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetFileGetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetFileEnum_r(struct libnetapi_ctx *ctx,
-		     struct NetFileEnum *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct srvsvc_NetFileInfoCtr info_ctr;
-	struct srvsvc_NetFileCtr2 ctr2;
-	struct srvsvc_NetFileCtr3 ctr3;
-	uint32_t num_entries = 0;
-	uint32_t i;
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 2:
-		case 3:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	ZERO_STRUCT(info_ctr);
-
-	info_ctr.level = r->in.level;
-	switch (r->in.level) {
-		case 2:
-			ZERO_STRUCT(ctr2);
-			info_ctr.ctr.ctr2 = &ctr2;
-			break;
-		case 3:
-			ZERO_STRUCT(ctr3);
-			info_ctr.ctr.ctr3 = &ctr3;
-			break;
-	}
-
-	status = rpccli_srvsvc_NetFileEnum(pipe_cli, ctx,
-					   r->in.server_name,
-					   r->in.base_path,
-					   r->in.user_name,
-					   &info_ctr,
-					   r->in.prefmaxlen,
-					   r->out.total_entries,
-					   r->out.resume_handle,
-					   &werr);
-	if (NT_STATUS_IS_ERR(status)) {
-		goto done;
-	}
-
-	for (i=0; i < info_ctr.ctr.ctr2->count; i++) {
-		union srvsvc_NetFileInfo _i;
-		switch (r->in.level) {
-			case 2:
-				_i.info2 = &info_ctr.ctr.ctr2->array[i];
-				break;
-			case 3:
-				_i.info3 = &info_ctr.ctr.ctr3->array[i];
-				break;
-		}
-
-		status = map_srvsvc_FileInfo_to_FILE_INFO_buffer(ctx,
-								 r->in.level,
-								 &_i,
-								 r->out.buffer,
-								 &num_entries);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	if (r->out.entries_read) {
-		*r->out.entries_read = num_entries;
-	}
-
-	if (r->out.total_entries) {
-		*r->out.total_entries = num_entries;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetFileEnum_l(struct libnetapi_ctx *ctx,
-		     struct NetFileEnum *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetFileEnum);
-}

Modified: branches/samba/upstream/source/lib/netapi/getdc.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/getdc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/getdc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -31,7 +31,7 @@
 WERROR NetGetDCName_l(struct libnetapi_ctx *ctx,
 		      struct NetGetDCName *r)
 {
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGetDCName);
+	return WERR_NOT_SUPPORTED;
 }
 
 /********************************************************************
@@ -45,14 +45,16 @@
 	NTSTATUS status;
 	WERROR werr;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_netlogon.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_NETLOGON, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	status = rpccli_netr_GetDcName(pipe_cli, ctx,
 				       r->in.server_name,
 				       r->in.domain_name,
@@ -69,7 +71,7 @@
 WERROR NetGetAnyDCName_l(struct libnetapi_ctx *ctx,
 			 struct NetGetAnyDCName *r)
 {
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGetAnyDCName);
+	return WERR_NOT_SUPPORTED;
 }
 
 /********************************************************************
@@ -83,14 +85,16 @@
 	NTSTATUS status;
 	WERROR werr;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_netlogon.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_NETLOGON, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	status = rpccli_netr_GetAnyDCName(pipe_cli, ctx,
 					  r->in.server_name,
 					  r->in.domain_name,
@@ -140,14 +144,16 @@
 	struct cli_state *cli = NULL;
 	struct rpc_pipe_client *pipe_cli = NULL;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_netlogon.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_NETLOGON, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	status = rpccli_netr_DsRGetDCName(pipe_cli,
 					  ctx,
 					  r->in.server_name,

Deleted: branches/samba/upstream/source/lib/netapi/group.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/group.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/group.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1691 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetApi Group Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#include "librpc/gen_ndr/libnetapi.h"
-#include "lib/netapi/netapi.h"
-#include "lib/netapi/netapi_private.h"
-#include "lib/netapi/libnetapi.h"
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
-		     struct NetGroupAdd *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	POLICY_HND connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_group_name;
-	struct dom_sid2 *domain_sid = NULL;
-	uint32_t rid = 0;
-
-	struct GROUP_INFO_0 *info0 = NULL;
-	struct GROUP_INFO_1 *info1 = NULL;
-	struct GROUP_INFO_2 *info2 = NULL;
-	struct GROUP_INFO_3 *info3 = NULL;
-	union samr_GroupInfo info;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(group_handle);
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			info0 = (struct GROUP_INFO_0 *)r->in.buffer;
-			break;
-		case 1:
-			info1 = (struct GROUP_INFO_1 *)r->in.buffer;
-			break;
-		case 2:
-			info2 = (struct GROUP_INFO_2 *)r->in.buffer;
-			break;
-		case 3:
-			info3 = (struct GROUP_INFO_3 *)r->in.buffer;
-			break;
-		default:
-			werr = WERR_UNKNOWN_LEVEL;
-			goto done;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_CREATE_GROUP |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			init_lsa_String(&lsa_group_name, info0->grpi0_name);
-			break;
-		case 1:
-			init_lsa_String(&lsa_group_name, info1->grpi1_name);
-			break;
-		case 2:
-			init_lsa_String(&lsa_group_name, info2->grpi2_name);
-			break;
-		case 3:
-			init_lsa_String(&lsa_group_name, info3->grpi3_name);
-			break;
-	}
-
-	status = rpccli_samr_CreateDomainGroup(pipe_cli, ctx,
-					       &domain_handle,
-					       &lsa_group_name,
-					       SEC_STD_DELETE |
-					       SAMR_GROUP_ACCESS_SET_INFO,
-					       &group_handle,
-					       &rid);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	switch (r->in.level) {
-		case 1:
-			if (info1->grpi1_comment) {
-				init_lsa_String(&info.description,
-						info1->grpi1_comment);
-
-				status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-								  &group_handle,
-								  GROUPINFODESCRIPTION,
-								  &info);
-			}
-			break;
-		case 2:
-			if (info2->grpi2_comment) {
-				init_lsa_String(&info.description,
-						info2->grpi2_comment);
-
-				status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-								  &group_handle,
-								  GROUPINFODESCRIPTION,
-								  &info);
-				if (!NT_STATUS_IS_OK(status)) {
-					werr = ntstatus_to_werror(status);
-					goto failed;
-				}
-			}
-
-			if (info2->grpi2_attributes != 0) {
-				info.attributes.attributes = info2->grpi2_attributes;
-				status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-								  &group_handle,
-								  GROUPINFOATTRIBUTES,
-								  &info);
-
-			}
-			break;
-		case 3:
-			if (info3->grpi3_comment) {
-				init_lsa_String(&info.description,
-						info3->grpi3_comment);
-
-				status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-								  &group_handle,
-								  GROUPINFODESCRIPTION,
-								  &info);
-				if (!NT_STATUS_IS_OK(status)) {
-					werr = ntstatus_to_werror(status);
-					goto failed;
-				}
-			}
-
-			if (info3->grpi3_attributes != 0) {
-				info.attributes.attributes = info3->grpi3_attributes;
-				status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-								  &group_handle,
-								  GROUPINFOATTRIBUTES,
-								  &info);
-			}
-			break;
-		default:
-			break;
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto failed;
-	}
-
-	werr = WERR_OK;
-	goto done;
-
- failed:
-	rpccli_samr_DeleteDomainGroup(pipe_cli, ctx,
-				      &group_handle);
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupAdd_l(struct libnetapi_ctx *ctx,
-		     struct NetGroupAdd *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupAdd);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
-		     struct NetGroupDel *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	POLICY_HND connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_group_name;
-	struct dom_sid2 *domain_sid = NULL;
-	int i = 0;
-
-	struct samr_Ids rids;
-	struct samr_Ids types;
-	union samr_GroupInfo *info = NULL;
-	struct samr_RidTypeArray *rid_array = NULL;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(group_handle);
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_group_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_group_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_DOM_GRP) {
-		werr = WERR_INVALID_DATATYPE;
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SEC_STD_DELETE |
-				       SAMR_GROUP_ACCESS_GET_MEMBERS |
-				       SAMR_GROUP_ACCESS_REMOVE_MEMBER |
-				       SAMR_GROUP_ACCESS_ADD_MEMBER |
-				       SAMR_GROUP_ACCESS_LOOKUP_INFO,
-				       rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
-					    &group_handle,
-					    GROUPINFOATTRIBUTES,
-					    &info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-#if 0
-	/* breaks against NT4 */
-	if (!(info->attributes.attributes & SE_GROUP_ENABLED)) {
-		werr = WERR_ACCESS_DENIED;
-		goto done;
-	}
-#endif
-	status = rpccli_samr_QueryGroupMember(pipe_cli, ctx,
-					      &group_handle,
-					      &rid_array);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	{
-	struct lsa_Strings names;
-	struct samr_Ids member_types;
-
-	status = rpccli_samr_LookupRids(pipe_cli, ctx,
-					&domain_handle,
-					rid_array->count,
-					rid_array->rids,
-					&names,
-					&member_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-	}
-
-	for (i=0; i < rid_array->count; i++) {
-
-		status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
-						       &group_handle,
-						       rid_array->rids[i]);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	status = rpccli_samr_DeleteDomainGroup(pipe_cli, ctx,
-					       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	ZERO_STRUCT(group_handle);
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupDel_l(struct libnetapi_ctx *ctx,
-		     struct NetGroupDel *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupDel);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupSetInfo *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	POLICY_HND connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_group_name;
-	struct dom_sid2 *domain_sid = NULL;
-
-	struct samr_Ids rids;
-	struct samr_Ids types;
-	union samr_GroupInfo info;
-	struct GROUP_INFO_0 *g0;
-	struct GROUP_INFO_1 *g1;
-	struct GROUP_INFO_2 *g2;
-	struct GROUP_INFO_3 *g3;
-	struct GROUP_INFO_1002 *g1002;
-	struct GROUP_INFO_1005 *g1005;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(group_handle);
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_group_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_group_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_DOM_GRP) {
-		werr = WERR_INVALID_DATATYPE;
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SAMR_GROUP_ACCESS_SET_INFO |
-				       SAMR_GROUP_ACCESS_LOOKUP_INFO,
-				       rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			g0 = (struct GROUP_INFO_0 *)r->in.buffer;
-			init_lsa_String(&info.name, g0->grpi0_name);
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFONAME,
-							  &info);
-			break;
-		case 1:
-			g1 = (struct GROUP_INFO_1 *)r->in.buffer;
-			init_lsa_String(&info.description, g1->grpi1_comment);
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFODESCRIPTION,
-							  &info);
-			break;
-		case 2:
-			g2 = (struct GROUP_INFO_2 *)r->in.buffer;
-			init_lsa_String(&info.description, g2->grpi2_comment);
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFODESCRIPTION,
-							  &info);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-			info.attributes.attributes = g2->grpi2_attributes;
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFOATTRIBUTES,
-							  &info);
-			break;
-		case 3:
-			g3 = (struct GROUP_INFO_3 *)r->in.buffer;
-			init_lsa_String(&info.description, g3->grpi3_comment);
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFODESCRIPTION,
-							  &info);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-			info.attributes.attributes = g3->grpi3_attributes;
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFOATTRIBUTES,
-							  &info);
-			break;
-		case 1002:
-			g1002 = (struct GROUP_INFO_1002 *)r->in.buffer;
-			init_lsa_String(&info.description, g1002->grpi1002_comment);
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFODESCRIPTION,
-							  &info);
-			break;
-		case 1005:
-			g1005 = (struct GROUP_INFO_1005 *)r->in.buffer;
-			info.attributes.attributes = g1005->grpi1005_attributes;
-			status = rpccli_samr_SetGroupInfo(pipe_cli, ctx,
-							  &group_handle,
-							  GROUPINFOATTRIBUTES,
-							  &info);
-			break;
-		default:
-			status = NT_STATUS_INVALID_LEVEL;
-			break;
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupSetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupSetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupSetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR map_group_info_to_buffer(TALLOC_CTX *mem_ctx,
-				       uint32_t level,
-				       struct samr_GroupInfoAll *info,
-				       struct dom_sid2 *domain_sid,
-				       uint32_t rid,
-				       uint8_t **buffer)
-{
-	struct GROUP_INFO_0 info0;
-	struct GROUP_INFO_1 info1;
-	struct GROUP_INFO_2 info2;
-	struct GROUP_INFO_3 info3;
-	struct dom_sid sid;
-
-	switch (level) {
-		case 0:
-			info0.grpi0_name	= info->name.string;
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info0, sizeof(info0));
-
-			break;
-		case 1:
-			info1.grpi1_name	= info->name.string;
-			info1.grpi1_comment	= info->description.string;
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info1, sizeof(info1));
-
-			break;
-		case 2:
-			info2.grpi2_name	= info->name.string;
-			info2.grpi2_comment	= info->description.string;
-			info2.grpi2_group_id	= rid;
-			info2.grpi2_attributes	= info->attributes;
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info2, sizeof(info2));
-
-			break;
-		case 3:
-			if (!sid_compose(&sid, domain_sid, rid)) {
-				return WERR_NOMEM;
-			}
-
-			info3.grpi3_name	= info->name.string;
-			info3.grpi3_comment	= info->description.string;
-			info3.grpi3_attributes	= info->attributes;
-			info3.grpi3_group_sid	= (struct domsid *)sid_dup_talloc(mem_ctx, &sid);
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info3, sizeof(info3));
-
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	W_ERROR_HAVE_NO_MEMORY(*buffer);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupGetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupGetInfo *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	POLICY_HND connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_group_name;
-	struct dom_sid2 *domain_sid = NULL;
-
-	struct samr_Ids rids;
-	struct samr_Ids types;
-	union samr_GroupInfo *info = NULL;
-	bool group_info_all = false;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(group_handle);
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_group_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_group_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_DOM_GRP) {
-		werr = WERR_INVALID_DATATYPE;
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SAMR_GROUP_ACCESS_LOOKUP_INFO,
-				       rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
-					    &group_handle,
-					    GROUPINFOALL2,
-					    &info);
-	if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_INFO_CLASS)) {
-		status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
-						    &group_handle,
-						    GROUPINFOALL,
-						    &info);
-		group_info_all = true;
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = map_group_info_to_buffer(ctx, r->in.level,
-					group_info_all ? &info->all : &info->all2,
-					domain_sid, rids.ids[0],
-					r->out.buffer);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupGetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupGetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupGetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupAddUser_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupAddUser *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	POLICY_HND connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_group_name, lsa_user_name;
-	struct dom_sid2 *domain_sid = NULL;
-
-	struct samr_Ids rids;
-	struct samr_Ids types;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(group_handle);
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_group_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_group_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = WERR_GROUP_NOT_FOUND;
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_DOM_GRP) {
-		werr = WERR_GROUP_NOT_FOUND;
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SAMR_GROUP_ACCESS_ADD_MEMBER,
-				       rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	init_lsa_String(&lsa_user_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_user_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = WERR_USER_NOT_FOUND;
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_USER) {
-		werr = WERR_USER_NOT_FOUND;
-		goto done;
-	}
-
-	status = rpccli_samr_AddGroupMember(pipe_cli, ctx,
-					    &group_handle,
-					    rids.ids[0],
-					    7); /* why ? */
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupAddUser_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupAddUser *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupAddUser);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupDelUser_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupDelUser *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	POLICY_HND connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_group_name, lsa_user_name;
-	struct dom_sid2 *domain_sid = NULL;
-
-	struct samr_Ids rids;
-	struct samr_Ids types;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(group_handle);
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_group_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_group_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = WERR_GROUP_NOT_FOUND;
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_DOM_GRP) {
-		werr = WERR_GROUP_NOT_FOUND;
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SAMR_GROUP_ACCESS_REMOVE_MEMBER,
-				       rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	init_lsa_String(&lsa_user_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_user_name,
-					 &rids,
-					 &types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = WERR_USER_NOT_FOUND;
-		goto done;
-	}
-
-	if (types.ids[0] != SID_NAME_USER) {
-		werr = WERR_USER_NOT_FOUND;
-		goto done;
-	}
-
-	status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
-					       &group_handle,
-					       rids.ids[0]);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupDelUser_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupDelUser *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupDelUser);
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR convert_samr_disp_groups_to_GROUP_INFO_0_buffer(TALLOC_CTX *mem_ctx,
-							      struct samr_DispInfoFullGroups *groups,
-							      uint8_t **buffer)
-{
-	struct GROUP_INFO_0 *g0;
-	int i;
-
-	g0 = TALLOC_ZERO_ARRAY(mem_ctx, struct GROUP_INFO_0, groups->count);
-	W_ERROR_HAVE_NO_MEMORY(g0);
-
-	for (i=0; i<groups->count; i++) {
-		g0[i].grpi0_name = talloc_strdup(mem_ctx,
-			groups->entries[i].account_name.string);
-		W_ERROR_HAVE_NO_MEMORY(g0[i].grpi0_name);
-	}
-
-	*buffer = (uint8_t *)talloc_memdup(mem_ctx, g0,
-					   sizeof(struct GROUP_INFO_0) * groups->count);
-	W_ERROR_HAVE_NO_MEMORY(*buffer);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR convert_samr_disp_groups_to_GROUP_INFO_1_buffer(TALLOC_CTX *mem_ctx,
-							      struct samr_DispInfoFullGroups *groups,
-							      uint8_t **buffer)
-{
-	struct GROUP_INFO_1 *g1;
-	int i;
-
-	g1 = TALLOC_ZERO_ARRAY(mem_ctx, struct GROUP_INFO_1, groups->count);
-	W_ERROR_HAVE_NO_MEMORY(g1);
-
-	for (i=0; i<groups->count; i++) {
-		g1[i].grpi1_name = talloc_strdup(mem_ctx,
-			groups->entries[i].account_name.string);
-		g1[i].grpi1_comment = talloc_strdup(mem_ctx,
-			groups->entries[i].description.string);
-		W_ERROR_HAVE_NO_MEMORY(g1[i].grpi1_name);
-	}
-
-	*buffer = (uint8_t *)talloc_memdup(mem_ctx, g1,
-					   sizeof(struct GROUP_INFO_1) * groups->count);
-	W_ERROR_HAVE_NO_MEMORY(*buffer);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR convert_samr_disp_groups_to_GROUP_INFO_2_buffer(TALLOC_CTX *mem_ctx,
-							      struct samr_DispInfoFullGroups *groups,
-							      uint8_t **buffer)
-{
-	struct GROUP_INFO_2 *g2;
-	int i;
-
-	g2 = TALLOC_ZERO_ARRAY(mem_ctx, struct GROUP_INFO_2, groups->count);
-	W_ERROR_HAVE_NO_MEMORY(g2);
-
-	for (i=0; i<groups->count; i++) {
-		g2[i].grpi2_name = talloc_strdup(mem_ctx,
-			groups->entries[i].account_name.string);
-		g2[i].grpi2_comment = talloc_strdup(mem_ctx,
-			groups->entries[i].description.string);
-		g2[i].grpi2_group_id = groups->entries[i].rid;
-		g2[i].grpi2_attributes = groups->entries[i].acct_flags;
-		W_ERROR_HAVE_NO_MEMORY(g2[i].grpi2_name);
-	}
-
-	*buffer = (uint8_t *)talloc_memdup(mem_ctx, g2,
-					   sizeof(struct GROUP_INFO_2) * groups->count);
-	W_ERROR_HAVE_NO_MEMORY(*buffer);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR convert_samr_disp_groups_to_GROUP_INFO_3_buffer(TALLOC_CTX *mem_ctx,
-							      struct samr_DispInfoFullGroups *groups,
-							      const struct dom_sid *domain_sid,
-							      uint8_t **buffer)
-{
-	struct GROUP_INFO_3 *g3;
-	int i;
-
-	g3 = TALLOC_ZERO_ARRAY(mem_ctx, struct GROUP_INFO_3, groups->count);
-	W_ERROR_HAVE_NO_MEMORY(g3);
-
-	for (i=0; i<groups->count; i++) {
-
-		struct dom_sid sid;
-
-		if (!sid_compose(&sid, domain_sid, groups->entries[i].rid)) {
-			return WERR_NOMEM;
-		}
-
-		g3[i].grpi3_name = talloc_strdup(mem_ctx,
-			groups->entries[i].account_name.string);
-		g3[i].grpi3_comment = talloc_strdup(mem_ctx,
-			groups->entries[i].description.string);
-		g3[i].grpi3_group_sid = (struct domsid *)sid_dup_talloc(mem_ctx, &sid);
-		g3[i].grpi3_attributes = groups->entries[i].acct_flags;
-		W_ERROR_HAVE_NO_MEMORY(g3[i].grpi3_name);
-	}
-
-	*buffer = (uint8_t *)talloc_memdup(mem_ctx, g3,
-					   sizeof(struct GROUP_INFO_3) * groups->count);
-	W_ERROR_HAVE_NO_MEMORY(*buffer);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR convert_samr_disp_groups_to_GROUP_INFO_buffer(TALLOC_CTX *mem_ctx,
-							    uint32_t level,
-							    struct samr_DispInfoFullGroups *groups,
-							    const struct dom_sid *domain_sid,
-							    uint32_t *entries_read,
-							    uint8_t **buffer)
-{
-	if (entries_read) {
-		*entries_read = groups->count;
-	}
-
-	switch (level) {
-		case 0:
-			return convert_samr_disp_groups_to_GROUP_INFO_0_buffer(mem_ctx, groups, buffer);
-		case 1:
-			return convert_samr_disp_groups_to_GROUP_INFO_1_buffer(mem_ctx, groups, buffer);
-		case 2:
-			return convert_samr_disp_groups_to_GROUP_INFO_2_buffer(mem_ctx, groups, buffer);
-		case 3:
-			return convert_samr_disp_groups_to_GROUP_INFO_3_buffer(mem_ctx, groups, domain_sid, buffer);
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupEnum_r(struct libnetapi_ctx *ctx,
-		      struct NetGroupEnum *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct policy_handle connect_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	struct policy_handle domain_handle;
-	union samr_DispInfo info;
-	union samr_DomainInfo *domain_info = NULL;
-
-	uint32_t total_size = 0;
-	uint32_t returned_size = 0;
-
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr, tmp_werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-		case 2:
-		case 3:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-					  SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_samr_QueryDomainInfo(pipe_cli, ctx,
-					     &domain_handle,
-					     2,
-					     &domain_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (r->out.total_entries) {
-		*r->out.total_entries = domain_info->info2.num_groups;
-	}
-
-	status = rpccli_samr_QueryDisplayInfo2(pipe_cli,
-					       ctx,
-					       &domain_handle,
-					       3,
-					       r->in.resume_handle ?
-					       *r->in.resume_handle : 0,
-					       (uint32_t)-1,
-					       r->in.prefmaxlen,
-					       &total_size,
-					       &returned_size,
-					       &info);
-	werr = ntstatus_to_werror(status);
-	if (NT_STATUS_IS_ERR(status)) {
-		goto done;
-	}
-
-	if (r->out.resume_handle) {
-		*r->out.resume_handle =
-			info.info3.entries[info.info3.count-1].idx;
-	}
-
-	tmp_werr = convert_samr_disp_groups_to_GROUP_INFO_buffer(ctx,
-								 r->in.level,
-								 &info.info3,
-								 domain_sid,
-								 r->out.entries_read,
-								 r->out.buffer);
-	if (!W_ERROR_IS_OK(tmp_werr)) {
-		werr = tmp_werr;
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	/* if last query */
-	if (NT_STATUS_IS_OK(status) ||
-	    NT_STATUS_IS_ERR(status)) {
-
-		if (ctx->disable_policy_handle_cache) {
-			libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-			libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-		}
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupEnum_l(struct libnetapi_ctx *ctx,
-		      struct NetGroupEnum *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupEnum);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupGetUsers_r(struct libnetapi_ctx *ctx,
-			  struct NetGroupGetUsers *r)
-{
-	/* FIXME: this call needs to cope with large replies */
-
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct policy_handle connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	struct samr_Ids group_rids, name_types;
-	struct samr_RidTypeArray *rid_array = NULL;
-	struct lsa_Strings names;
-	struct samr_Ids member_types;
-
-	int i;
-	uint32_t entries_read = 0;
-
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	*r->out.buffer = NULL;
-	*r->out.entries_read = 0;
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &group_rids,
-					 &name_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SAMR_GROUP_ACCESS_GET_MEMBERS,
-				       group_rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_QueryGroupMember(pipe_cli, ctx,
-					      &group_handle,
-					      &rid_array);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_LookupRids(pipe_cli, ctx,
-					&domain_handle,
-					rid_array->count,
-					rid_array->rids,
-					&names,
-					&member_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i < names.count; i++) {
-
-		if (member_types.ids[i] != SID_NAME_USER) {
-			continue;
-		}
-
-		status = add_GROUP_USERS_INFO_X_buffer(ctx,
-						       r->in.level,
-						       names.names[i].string,
-						       7,
-						       r->out.buffer,
-						       &entries_read);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	if (r->out.entries_read) {
-		*r->out.entries_read = entries_read;
-	}
-
-	if (r->out.total_entries) {
-		*r->out.total_entries = entries_read;
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupGetUsers_l(struct libnetapi_ctx *ctx,
-			  struct NetGroupGetUsers *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupGetUsers);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupSetUsers_r(struct libnetapi_ctx *ctx,
-			  struct NetGroupSetUsers *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct policy_handle connect_handle, domain_handle, group_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	union samr_GroupInfo *group_info = NULL;
-	struct samr_Ids user_rids, name_types;
-	struct samr_Ids group_rids, group_types;
-	struct samr_RidTypeArray *rid_array = NULL;
-	struct lsa_String *lsa_names = NULL;
-
-	uint32_t *add_rids = NULL;
-	uint32_t *del_rids = NULL;
-	size_t num_add_rids = 0;
-	size_t num_del_rids = 0;
-
-	uint32_t *member_rids = NULL;
-	size_t num_member_rids = 0;
-
-	struct GROUP_USERS_INFO_0 *i0 = NULL;
-	struct GROUP_USERS_INFO_1 *i1 = NULL;
-
-	int i, k;
-
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &group_rids,
-					 &group_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-				       &domain_handle,
-				       SAMR_GROUP_ACCESS_GET_MEMBERS |
-				       SAMR_GROUP_ACCESS_ADD_MEMBER |
-				       SAMR_GROUP_ACCESS_REMOVE_MEMBER |
-				       SAMR_GROUP_ACCESS_LOOKUP_INFO,
-				       group_rids.ids[0],
-				       &group_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
-					    &group_handle,
-					    GROUPINFOATTRIBUTES,
-					    &group_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			i0 = (struct GROUP_USERS_INFO_0 *)r->in.buffer;
-			break;
-		case 1:
-			i1 = (struct GROUP_USERS_INFO_1 *)r->in.buffer;
-			break;
-	}
-
-	lsa_names = talloc_array(ctx, struct lsa_String, r->in.num_entries);
-	if (!lsa_names) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	for (i=0; i < r->in.num_entries; i++) {
-
-		switch (r->in.level) {
-			case 0:
-				init_lsa_String(&lsa_names[i], i0->grui0_name);
-				i0++;
-				break;
-			case 1:
-				init_lsa_String(&lsa_names[i], i1->grui1_name);
-				i1++;
-				break;
-		}
-	}
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 r->in.num_entries,
-					 lsa_names,
-					 &user_rids,
-					 &name_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	member_rids = user_rids.ids;
-	num_member_rids = user_rids.count;
-
-	status = rpccli_samr_QueryGroupMember(pipe_cli, ctx,
-					      &group_handle,
-					      &rid_array);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	/* add list */
-
-	for (i=0; i < r->in.num_entries; i++) {
-		bool already_member = false;
-		for (k=0; k < rid_array->count; k++) {
-			if (member_rids[i] == rid_array->rids[k]) {
-				already_member = true;
-				break;
-			}
-		}
-		if (!already_member) {
-			if (!add_rid_to_array_unique(ctx,
-						     member_rids[i],
-						     &add_rids, &num_add_rids)) {
-				werr = WERR_GENERAL_FAILURE;
-				goto done;
-			}
-		}
-	}
-
-	/* del list */
-
-	for (k=0; k < rid_array->count; k++) {
-		bool keep_member = false;
-		for (i=0; i < r->in.num_entries; i++) {
-			if (member_rids[i] == rid_array->rids[k]) {
-				keep_member = true;
-				break;
-			}
-		}
-		if (!keep_member) {
-			if (!add_rid_to_array_unique(ctx,
-						     rid_array->rids[k],
-						     &del_rids, &num_del_rids)) {
-				werr = WERR_GENERAL_FAILURE;
-				goto done;
-			}
-		}
-	}
-
-	/* add list */
-
-	for (i=0; i < num_add_rids; i++) {
-		status = rpccli_samr_AddGroupMember(pipe_cli, ctx,
-						    &group_handle,
-						    add_rids[i],
-						    7 /* ? */);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	/* del list */
-
-	for (i=0; i < num_del_rids; i++) {
-		status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
-						       &group_handle,
-						       del_rids[i]);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetGroupSetUsers_l(struct libnetapi_ctx *ctx,
-			  struct NetGroupSetUsers *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetGroupSetUsers);
-}

Modified: branches/samba/upstream/source/lib/netapi/joindomain.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/joindomain.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/joindomain.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -105,14 +105,16 @@
 	WERROR werr;
 	unsigned int old_timeout = 0;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server,
-				   &ndr_table_wkssvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_WKSSVC, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	if (r->in.password) {
 		encode_wkssvc_join_password_buffer(ctx,
 						   r->in.password,
@@ -234,14 +236,16 @@
 	WERROR werr;
 	unsigned int old_timeout = 0;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_wkssvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_WKSSVC, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	if (r->in.password) {
 		encode_wkssvc_join_password_buffer(ctx,
 						   r->in.password,
@@ -284,14 +288,16 @@
 	WERROR werr;
 	const char *buffer = NULL;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_wkssvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_WKSSVC, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	status = rpccli_wkssvc_NetrGetJoinInformation(pipe_cli, ctx,
 						      r->in.server_name,
 						      &buffer,
@@ -364,7 +370,7 @@
 
 	dc = strip_hostname(info->dc_unc);
 
-	ads = ads_init(info->domain_name, info->domain_name, dc);
+	ads = ads_init(r->in.domain, r->in.domain, dc);
 	if (!ads) {
 		return WERR_GENERAL_FAILURE;
 	}
@@ -383,7 +389,7 @@
 		ads->auth.password = SMB_STRDUP(ctx->password);
 	}
 
-	ads_status = ads_connect_user_creds(ads);
+	ads_status = ads_connect(ads);
 	if (!ADS_ERR_OK(ads_status)) {
 		ads_destroy(&ads);
 		return WERR_DEFAULT_JOIN_REQUIRED;
@@ -416,14 +422,16 @@
 	NTSTATUS status;
 	WERROR werr;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_wkssvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_WKSSVC, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	if (r->in.password) {
 		encode_wkssvc_join_password_buffer(ctx,
 						   r->in.password,
@@ -445,57 +453,9 @@
 	}
 
  done:
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetRenameMachineInDomain_r(struct libnetapi_ctx *ctx,
-				  struct NetRenameMachineInDomain *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct wkssvc_PasswordBuffer *encrypted_password = NULL;
-	NTSTATUS status;
-	WERROR werr;
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_wkssvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
+	if (cli) {
+		cli_shutdown(cli);
 	}
 
-	if (r->in.password) {
-		encode_wkssvc_join_password_buffer(ctx,
-						   r->in.password,
-						   &cli->user_session_key,
-						   &encrypted_password);
-	}
-
-	status = rpccli_wkssvc_NetrRenameMachineInDomain2(pipe_cli, ctx,
-							  r->in.server_name,
-							  r->in.new_machine_name,
-							  r->in.account,
-							  encrypted_password,
-							  r->in.rename_options,
-							  &werr);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
- done:
 	return werr;
 }
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetRenameMachineInDomain_l(struct libnetapi_ctx *ctx,
-				  struct NetRenameMachineInDomain *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetRenameMachineInDomain);
-}

Modified: branches/samba/upstream/source/lib/netapi/libnetapi.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/libnetapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/libnetapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,7 +21,7 @@
 #include "librpc/gen_ndr/libnetapi.h"
 #include "lib/netapi/netapi.h"
 #include "lib/netapi/netapi_private.h"
-#include "lib/netapi/libnetapi.h"
+#include "libnetapi.h"
 #include "librpc/gen_ndr/ndr_libnetapi.h"
 
 /****************************************************************
@@ -215,54 +215,6 @@
 }
 
 /****************************************************************
- NetRenameMachineInDomain
-****************************************************************/
-
-NET_API_STATUS NetRenameMachineInDomain(const char * server_name /* [in] */,
-					const char * new_machine_name /* [in] */,
-					const char * account /* [in] */,
-					const char * password /* [in] */,
-					uint32_t rename_options /* [in] */)
-{
-	struct NetRenameMachineInDomain r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.new_machine_name = new_machine_name;
-	r.in.account = account;
-	r.in.password = password;
-	r.in.rename_options = rename_options;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetRenameMachineInDomain, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetRenameMachineInDomain_l(ctx, &r);
-	} else {
-		werr = NetRenameMachineInDomain_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetRenameMachineInDomain, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
  NetServerGetInfo
 ****************************************************************/
 
@@ -634,390 +586,6 @@
 }
 
 /****************************************************************
- NetUserChangePassword
-****************************************************************/
-
-NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
-				     const char * user_name /* [in] */,
-				     const char * old_password /* [in] */,
-				     const char * new_password /* [in] */)
-{
-	struct NetUserChangePassword r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.domain_name = domain_name;
-	r.in.user_name = user_name;
-	r.in.old_password = old_password;
-	r.in.new_password = new_password;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserChangePassword, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(domain_name)) {
-		werr = NetUserChangePassword_l(ctx, &r);
-	} else {
-		werr = NetUserChangePassword_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserChangePassword, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserGetInfo
-****************************************************************/
-
-NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
-			      const char * user_name /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetUserGetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.user_name = user_name;
-	r.in.level = level;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserGetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserGetInfo_l(ctx, &r);
-	} else {
-		werr = NetUserGetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserGetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserSetInfo
-****************************************************************/
-
-NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
-			      const char * user_name /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t *buffer /* [in] [ref] */,
-			      uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetUserSetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.user_name = user_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserSetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserSetInfo_l(ctx, &r);
-	} else {
-		werr = NetUserSetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserSetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserGetGroups
-****************************************************************/
-
-NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
-				const char * user_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */,
-				uint32_t prefmaxlen /* [in] */,
-				uint32_t *entries_read /* [out] [ref] */,
-				uint32_t *total_entries /* [out] [ref] */)
-{
-	struct NetUserGetGroups r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.user_name = user_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserGetGroups, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserGetGroups_l(ctx, &r);
-	} else {
-		werr = NetUserGetGroups_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserGetGroups, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserSetGroups
-****************************************************************/
-
-NET_API_STATUS NetUserSetGroups(const char * server_name /* [in] */,
-				const char * user_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t num_entries /* [in] */)
-{
-	struct NetUserSetGroups r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.user_name = user_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-	r.in.num_entries = num_entries;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserSetGroups, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserSetGroups_l(ctx, &r);
-	} else {
-		werr = NetUserSetGroups_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserSetGroups, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserGetLocalGroups
-****************************************************************/
-
-NET_API_STATUS NetUserGetLocalGroups(const char * server_name /* [in] */,
-				     const char * user_name /* [in] */,
-				     uint32_t level /* [in] */,
-				     uint32_t flags /* [in] */,
-				     uint8_t **buffer /* [out] [ref] */,
-				     uint32_t prefmaxlen /* [in] */,
-				     uint32_t *entries_read /* [out] [ref] */,
-				     uint32_t *total_entries /* [out] [ref] */)
-{
-	struct NetUserGetLocalGroups r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.user_name = user_name;
-	r.in.level = level;
-	r.in.flags = flags;
-	r.in.prefmaxlen = prefmaxlen;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserGetLocalGroups, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserGetLocalGroups_l(ctx, &r);
-	} else {
-		werr = NetUserGetLocalGroups_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserGetLocalGroups, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserModalsGet
-****************************************************************/
-
-NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetUserModalsGet r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserModalsGet, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserModalsGet_l(ctx, &r);
-	} else {
-		werr = NetUserModalsGet_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserModalsGet, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetUserModalsSet
-****************************************************************/
-
-NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetUserModalsSet r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetUserModalsSet, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetUserModalsSet_l(ctx, &r);
-	} else {
-		werr = NetUserModalsSet_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetUserModalsSet, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
  NetQueryDisplayInformation
 ****************************************************************/
 
@@ -1069,1287 +637,3 @@
 	return r.out.result;
 }
 
-/****************************************************************
- NetGroupAdd
-****************************************************************/
-
-NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t *buffer /* [in] [ref] */,
-			   uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetGroupAdd r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupAdd, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupAdd_l(ctx, &r);
-	} else {
-		werr = NetGroupAdd_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupAdd, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupDel
-****************************************************************/
-
-NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
-			   const char * group_name /* [in] */)
-{
-	struct NetGroupDel r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupDel, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupDel_l(ctx, &r);
-	} else {
-		werr = NetGroupDel_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupDel, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupEnum
-****************************************************************/
-
-NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
-			    uint32_t level /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */,
-			    uint32_t prefmaxlen /* [in] */,
-			    uint32_t *entries_read /* [out] [ref] */,
-			    uint32_t *total_entries /* [out] [ref] */,
-			    uint32_t *resume_handle /* [in,out] [ref] */)
-{
-	struct NetGroupEnum r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-	r.in.resume_handle = resume_handle;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-	r.out.resume_handle = resume_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupEnum, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupEnum_l(ctx, &r);
-	} else {
-		werr = NetGroupEnum_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupEnum, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupSetInfo
-****************************************************************/
-
-NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t *buffer /* [in] [ref] */,
-			       uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetGroupSetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupSetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupSetInfo_l(ctx, &r);
-	} else {
-		werr = NetGroupSetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupSetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupGetInfo
-****************************************************************/
-
-NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetGroupGetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupGetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupGetInfo_l(ctx, &r);
-	} else {
-		werr = NetGroupGetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupGetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupAddUser
-****************************************************************/
-
-NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       const char * user_name /* [in] */)
-{
-	struct NetGroupAddUser r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.user_name = user_name;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupAddUser, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupAddUser_l(ctx, &r);
-	} else {
-		werr = NetGroupAddUser_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupAddUser, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupDelUser
-****************************************************************/
-
-NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       const char * user_name /* [in] */)
-{
-	struct NetGroupDelUser r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.user_name = user_name;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupDelUser, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupDelUser_l(ctx, &r);
-	} else {
-		werr = NetGroupDelUser_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupDelUser, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupGetUsers
-****************************************************************/
-
-NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
-				const char * group_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */,
-				uint32_t prefmaxlen /* [in] */,
-				uint32_t *entries_read /* [out] [ref] */,
-				uint32_t *total_entries /* [out] [ref] */,
-				uint32_t *resume_handle /* [in,out] [ref] */)
-{
-	struct NetGroupGetUsers r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-	r.in.resume_handle = resume_handle;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-	r.out.resume_handle = resume_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupGetUsers, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupGetUsers_l(ctx, &r);
-	} else {
-		werr = NetGroupGetUsers_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupGetUsers, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetGroupSetUsers
-****************************************************************/
-
-NET_API_STATUS NetGroupSetUsers(const char * server_name /* [in] */,
-				const char * group_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t num_entries /* [in] */)
-{
-	struct NetGroupSetUsers r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-	r.in.num_entries = num_entries;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetGroupSetUsers, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetGroupSetUsers_l(ctx, &r);
-	} else {
-		werr = NetGroupSetUsers_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetGroupSetUsers, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupAdd
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetLocalGroupAdd r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupAdd, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupAdd_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupAdd_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupAdd, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupDel
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
-				const char * group_name /* [in] */)
-{
-	struct NetLocalGroupDel r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupDel, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupDel_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupDel_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupDel, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupGetInfo
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
-				    const char * group_name /* [in] */,
-				    uint32_t level /* [in] */,
-				    uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetLocalGroupGetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupGetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupGetInfo_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupGetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupGetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupSetInfo
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
-				    const char * group_name /* [in] */,
-				    uint32_t level /* [in] */,
-				    uint8_t *buffer /* [in] [ref] */,
-				    uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetLocalGroupSetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupSetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupSetInfo_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupSetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupSetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupEnum
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
-				 uint32_t level /* [in] */,
-				 uint8_t **buffer /* [out] [ref] */,
-				 uint32_t prefmaxlen /* [in] */,
-				 uint32_t *entries_read /* [out] [ref] */,
-				 uint32_t *total_entries /* [out] [ref] */,
-				 uint32_t *resume_handle /* [in,out] [ref] */)
-{
-	struct NetLocalGroupEnum r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-	r.in.resume_handle = resume_handle;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-	r.out.resume_handle = resume_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupEnum, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupEnum_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupEnum_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupEnum, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupAddMembers
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */)
-{
-	struct NetLocalGroupAddMembers r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-	r.in.total_entries = total_entries;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupAddMembers, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupAddMembers_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupAddMembers_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupAddMembers, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupDelMembers
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */)
-{
-	struct NetLocalGroupDelMembers r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-	r.in.total_entries = total_entries;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupDelMembers, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupDelMembers_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupDelMembers_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupDelMembers, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupGetMembers
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
-				       const char * local_group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t **buffer /* [out] [ref] */,
-				       uint32_t prefmaxlen /* [in] */,
-				       uint32_t *entries_read /* [out] [ref] */,
-				       uint32_t *total_entries /* [out] [ref] */,
-				       uint32_t *resume_handle /* [in,out] [ref] */)
-{
-	struct NetLocalGroupGetMembers r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.local_group_name = local_group_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-	r.in.resume_handle = resume_handle;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-	r.out.resume_handle = resume_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupGetMembers, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupGetMembers_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupGetMembers_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupGetMembers, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetLocalGroupSetMembers
-****************************************************************/
-
-NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */)
-{
-	struct NetLocalGroupSetMembers r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.group_name = group_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-	r.in.total_entries = total_entries;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetLocalGroupSetMembers, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetLocalGroupSetMembers_l(ctx, &r);
-	} else {
-		werr = NetLocalGroupSetMembers_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetLocalGroupSetMembers, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetRemoteTOD
-****************************************************************/
-
-NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetRemoteTOD r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetRemoteTOD, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetRemoteTOD_l(ctx, &r);
-	} else {
-		werr = NetRemoteTOD_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetRemoteTOD, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetShareAdd
-****************************************************************/
-
-NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t *buffer /* [in] [ref] */,
-			   uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetShareAdd r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetShareAdd, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetShareAdd_l(ctx, &r);
-	} else {
-		werr = NetShareAdd_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetShareAdd, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetShareDel
-****************************************************************/
-
-NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
-			   const char * net_name /* [in] */,
-			   uint32_t reserved /* [in] */)
-{
-	struct NetShareDel r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.net_name = net_name;
-	r.in.reserved = reserved;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetShareDel, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetShareDel_l(ctx, &r);
-	} else {
-		werr = NetShareDel_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetShareDel, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetShareEnum
-****************************************************************/
-
-NET_API_STATUS NetShareEnum(const char * server_name /* [in] */,
-			    uint32_t level /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */,
-			    uint32_t prefmaxlen /* [in] */,
-			    uint32_t *entries_read /* [out] [ref] */,
-			    uint32_t *total_entries /* [out] [ref] */,
-			    uint32_t *resume_handle /* [in,out] [ref] */)
-{
-	struct NetShareEnum r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-	r.in.resume_handle = resume_handle;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-	r.out.resume_handle = resume_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetShareEnum, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetShareEnum_l(ctx, &r);
-	} else {
-		werr = NetShareEnum_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetShareEnum, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetShareGetInfo
-****************************************************************/
-
-NET_API_STATUS NetShareGetInfo(const char * server_name /* [in] */,
-			       const char * net_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetShareGetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.net_name = net_name;
-	r.in.level = level;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetShareGetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetShareGetInfo_l(ctx, &r);
-	} else {
-		werr = NetShareGetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetShareGetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetShareSetInfo
-****************************************************************/
-
-NET_API_STATUS NetShareSetInfo(const char * server_name /* [in] */,
-			       const char * net_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t *buffer /* [in] [ref] */,
-			       uint32_t *parm_err /* [out] [ref] */)
-{
-	struct NetShareSetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.net_name = net_name;
-	r.in.level = level;
-	r.in.buffer = buffer;
-
-	/* Out parameters */
-	r.out.parm_err = parm_err;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetShareSetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetShareSetInfo_l(ctx, &r);
-	} else {
-		werr = NetShareSetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetShareSetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetFileClose
-****************************************************************/
-
-NET_API_STATUS NetFileClose(const char * server_name /* [in] */,
-			    uint32_t fileid /* [in] */)
-{
-	struct NetFileClose r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.fileid = fileid;
-
-	/* Out parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetFileClose, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetFileClose_l(ctx, &r);
-	} else {
-		werr = NetFileClose_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetFileClose, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetFileGetInfo
-****************************************************************/
-
-NET_API_STATUS NetFileGetInfo(const char * server_name /* [in] */,
-			      uint32_t fileid /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t **buffer /* [out] [ref] */)
-{
-	struct NetFileGetInfo r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.fileid = fileid;
-	r.in.level = level;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetFileGetInfo, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetFileGetInfo_l(ctx, &r);
-	} else {
-		werr = NetFileGetInfo_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetFileGetInfo, &r);
-	}
-
-	return r.out.result;
-}
-
-/****************************************************************
- NetFileEnum
-****************************************************************/
-
-NET_API_STATUS NetFileEnum(const char * server_name /* [in] */,
-			   const char * base_path /* [in] */,
-			   const char * user_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t **buffer /* [out] [ref] */,
-			   uint32_t prefmaxlen /* [in] */,
-			   uint32_t *entries_read /* [out] [ref] */,
-			   uint32_t *total_entries /* [out] [ref] */,
-			   uint32_t *resume_handle /* [in,out] [ref] */)
-{
-	struct NetFileEnum r;
-	struct libnetapi_ctx *ctx = NULL;
-	NET_API_STATUS status;
-	WERROR werr;
-
-	status = libnetapi_getctx(&ctx);
-	if (status != 0) {
-		return status;
-	}
-
-	/* In parameters */
-	r.in.server_name = server_name;
-	r.in.base_path = base_path;
-	r.in.user_name = user_name;
-	r.in.level = level;
-	r.in.prefmaxlen = prefmaxlen;
-	r.in.resume_handle = resume_handle;
-
-	/* Out parameters */
-	r.out.buffer = buffer;
-	r.out.entries_read = entries_read;
-	r.out.total_entries = total_entries;
-	r.out.resume_handle = resume_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(NetFileEnum, &r);
-	}
-
-	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
-		werr = NetFileEnum_l(ctx, &r);
-	} else {
-		werr = NetFileEnum_r(ctx, &r);
-	}
-
-	r.out.result = W_ERROR_V(werr);
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(NetFileEnum, &r);
-	}
-
-	return r.out.result;
-}
-

Modified: branches/samba/upstream/source/lib/netapi/libnetapi.h
===================================================================
--- branches/samba/upstream/source/lib/netapi/libnetapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/libnetapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -35,15 +35,6 @@
 			   struct NetGetJoinableOUs *r);
 WERROR NetGetJoinableOUs_l(struct libnetapi_ctx *ctx,
 			   struct NetGetJoinableOUs *r);
-NET_API_STATUS NetRenameMachineInDomain(const char * server_name /* [in] */,
-					const char * new_machine_name /* [in] */,
-					const char * account /* [in] */,
-					const char * password /* [in] */,
-					uint32_t rename_options /* [in] */);
-WERROR NetRenameMachineInDomain_r(struct libnetapi_ctx *ctx,
-				  struct NetRenameMachineInDomain *r);
-WERROR NetRenameMachineInDomain_l(struct libnetapi_ctx *ctx,
-				  struct NetRenameMachineInDomain *r);
 NET_API_STATUS NetServerGetInfo(const char * server_name /* [in] [unique] */,
 				uint32_t level /* [in] */,
 				uint8_t **buffer /* [out] [ref] */);
@@ -109,78 +100,6 @@
 		     struct NetUserEnum *r);
 WERROR NetUserEnum_l(struct libnetapi_ctx *ctx,
 		     struct NetUserEnum *r);
-NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
-				     const char * user_name /* [in] */,
-				     const char * old_password /* [in] */,
-				     const char * new_password /* [in] */);
-WERROR NetUserChangePassword_r(struct libnetapi_ctx *ctx,
-			       struct NetUserChangePassword *r);
-WERROR NetUserChangePassword_l(struct libnetapi_ctx *ctx,
-			       struct NetUserChangePassword *r);
-NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
-			      const char * user_name /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t **buffer /* [out] [ref] */);
-WERROR NetUserGetInfo_r(struct libnetapi_ctx *ctx,
-			struct NetUserGetInfo *r);
-WERROR NetUserGetInfo_l(struct libnetapi_ctx *ctx,
-			struct NetUserGetInfo *r);
-NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
-			      const char * user_name /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t *buffer /* [in] [ref] */,
-			      uint32_t *parm_err /* [out] [ref] */);
-WERROR NetUserSetInfo_r(struct libnetapi_ctx *ctx,
-			struct NetUserSetInfo *r);
-WERROR NetUserSetInfo_l(struct libnetapi_ctx *ctx,
-			struct NetUserSetInfo *r);
-NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
-				const char * user_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */,
-				uint32_t prefmaxlen /* [in] */,
-				uint32_t *entries_read /* [out] [ref] */,
-				uint32_t *total_entries /* [out] [ref] */);
-WERROR NetUserGetGroups_r(struct libnetapi_ctx *ctx,
-			  struct NetUserGetGroups *r);
-WERROR NetUserGetGroups_l(struct libnetapi_ctx *ctx,
-			  struct NetUserGetGroups *r);
-NET_API_STATUS NetUserSetGroups(const char * server_name /* [in] */,
-				const char * user_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t num_entries /* [in] */);
-WERROR NetUserSetGroups_r(struct libnetapi_ctx *ctx,
-			  struct NetUserSetGroups *r);
-WERROR NetUserSetGroups_l(struct libnetapi_ctx *ctx,
-			  struct NetUserSetGroups *r);
-NET_API_STATUS NetUserGetLocalGroups(const char * server_name /* [in] */,
-				     const char * user_name /* [in] */,
-				     uint32_t level /* [in] */,
-				     uint32_t flags /* [in] */,
-				     uint8_t **buffer /* [out] [ref] */,
-				     uint32_t prefmaxlen /* [in] */,
-				     uint32_t *entries_read /* [out] [ref] */,
-				     uint32_t *total_entries /* [out] [ref] */);
-WERROR NetUserGetLocalGroups_r(struct libnetapi_ctx *ctx,
-			       struct NetUserGetLocalGroups *r);
-WERROR NetUserGetLocalGroups_l(struct libnetapi_ctx *ctx,
-			       struct NetUserGetLocalGroups *r);
-NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */);
-WERROR NetUserModalsGet_r(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsGet *r);
-WERROR NetUserModalsGet_l(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsGet *r);
-NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t *parm_err /* [out] [ref] */);
-WERROR NetUserModalsSet_r(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsSet *r);
-WERROR NetUserModalsSet_l(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsSet *r);
 NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
 					  uint32_t level /* [in] */,
 					  uint32_t idx /* [in] */,
@@ -192,238 +111,4 @@
 				    struct NetQueryDisplayInformation *r);
 WERROR NetQueryDisplayInformation_l(struct libnetapi_ctx *ctx,
 				    struct NetQueryDisplayInformation *r);
-NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t *buffer /* [in] [ref] */,
-			   uint32_t *parm_err /* [out] [ref] */);
-WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
-		     struct NetGroupAdd *r);
-WERROR NetGroupAdd_l(struct libnetapi_ctx *ctx,
-		     struct NetGroupAdd *r);
-NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
-			   const char * group_name /* [in] */);
-WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
-		     struct NetGroupDel *r);
-WERROR NetGroupDel_l(struct libnetapi_ctx *ctx,
-		     struct NetGroupDel *r);
-NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
-			    uint32_t level /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */,
-			    uint32_t prefmaxlen /* [in] */,
-			    uint32_t *entries_read /* [out] [ref] */,
-			    uint32_t *total_entries /* [out] [ref] */,
-			    uint32_t *resume_handle /* [in,out] [ref] */);
-WERROR NetGroupEnum_r(struct libnetapi_ctx *ctx,
-		      struct NetGroupEnum *r);
-WERROR NetGroupEnum_l(struct libnetapi_ctx *ctx,
-		      struct NetGroupEnum *r);
-NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t *buffer /* [in] [ref] */,
-			       uint32_t *parm_err /* [out] [ref] */);
-WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupSetInfo *r);
-WERROR NetGroupSetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupSetInfo *r);
-NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t **buffer /* [out] [ref] */);
-WERROR NetGroupGetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupGetInfo *r);
-WERROR NetGroupGetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupGetInfo *r);
-NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       const char * user_name /* [in] */);
-WERROR NetGroupAddUser_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupAddUser *r);
-WERROR NetGroupAddUser_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupAddUser *r);
-NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       const char * user_name /* [in] */);
-WERROR NetGroupDelUser_r(struct libnetapi_ctx *ctx,
-			 struct NetGroupDelUser *r);
-WERROR NetGroupDelUser_l(struct libnetapi_ctx *ctx,
-			 struct NetGroupDelUser *r);
-NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
-				const char * group_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */,
-				uint32_t prefmaxlen /* [in] */,
-				uint32_t *entries_read /* [out] [ref] */,
-				uint32_t *total_entries /* [out] [ref] */,
-				uint32_t *resume_handle /* [in,out] [ref] */);
-WERROR NetGroupGetUsers_r(struct libnetapi_ctx *ctx,
-			  struct NetGroupGetUsers *r);
-WERROR NetGroupGetUsers_l(struct libnetapi_ctx *ctx,
-			  struct NetGroupGetUsers *r);
-NET_API_STATUS NetGroupSetUsers(const char * server_name /* [in] */,
-				const char * group_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t num_entries /* [in] */);
-WERROR NetGroupSetUsers_r(struct libnetapi_ctx *ctx,
-			  struct NetGroupSetUsers *r);
-WERROR NetGroupSetUsers_l(struct libnetapi_ctx *ctx,
-			  struct NetGroupSetUsers *r);
-NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t *parm_err /* [out] [ref] */);
-WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupAdd *r);
-WERROR NetLocalGroupAdd_l(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupAdd *r);
-NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
-				const char * group_name /* [in] */);
-WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupDel *r);
-WERROR NetLocalGroupDel_l(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupDel *r);
-NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
-				    const char * group_name /* [in] */,
-				    uint32_t level /* [in] */,
-				    uint8_t **buffer /* [out] [ref] */);
-WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupGetInfo *r);
-WERROR NetLocalGroupGetInfo_l(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupGetInfo *r);
-NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
-				    const char * group_name /* [in] */,
-				    uint32_t level /* [in] */,
-				    uint8_t *buffer /* [in] [ref] */,
-				    uint32_t *parm_err /* [out] [ref] */);
-WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupSetInfo *r);
-WERROR NetLocalGroupSetInfo_l(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupSetInfo *r);
-NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
-				 uint32_t level /* [in] */,
-				 uint8_t **buffer /* [out] [ref] */,
-				 uint32_t prefmaxlen /* [in] */,
-				 uint32_t *entries_read /* [out] [ref] */,
-				 uint32_t *total_entries /* [out] [ref] */,
-				 uint32_t *resume_handle /* [in,out] [ref] */);
-WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx,
-			   struct NetLocalGroupEnum *r);
-WERROR NetLocalGroupEnum_l(struct libnetapi_ctx *ctx,
-			   struct NetLocalGroupEnum *r);
-NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */);
-WERROR NetLocalGroupAddMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupAddMembers *r);
-WERROR NetLocalGroupAddMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupAddMembers *r);
-NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */);
-WERROR NetLocalGroupDelMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupDelMembers *r);
-WERROR NetLocalGroupDelMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupDelMembers *r);
-NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
-				       const char * local_group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t **buffer /* [out] [ref] */,
-				       uint32_t prefmaxlen /* [in] */,
-				       uint32_t *entries_read /* [out] [ref] */,
-				       uint32_t *total_entries /* [out] [ref] */,
-				       uint32_t *resume_handle /* [in,out] [ref] */);
-WERROR NetLocalGroupGetMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupGetMembers *r);
-WERROR NetLocalGroupGetMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupGetMembers *r);
-NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */);
-WERROR NetLocalGroupSetMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupSetMembers *r);
-WERROR NetLocalGroupSetMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupSetMembers *r);
-NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */);
-WERROR NetRemoteTOD_r(struct libnetapi_ctx *ctx,
-		      struct NetRemoteTOD *r);
-WERROR NetRemoteTOD_l(struct libnetapi_ctx *ctx,
-		      struct NetRemoteTOD *r);
-NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t *buffer /* [in] [ref] */,
-			   uint32_t *parm_err /* [out] [ref] */);
-WERROR NetShareAdd_r(struct libnetapi_ctx *ctx,
-		     struct NetShareAdd *r);
-WERROR NetShareAdd_l(struct libnetapi_ctx *ctx,
-		     struct NetShareAdd *r);
-NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
-			   const char * net_name /* [in] */,
-			   uint32_t reserved /* [in] */);
-WERROR NetShareDel_r(struct libnetapi_ctx *ctx,
-		     struct NetShareDel *r);
-WERROR NetShareDel_l(struct libnetapi_ctx *ctx,
-		     struct NetShareDel *r);
-NET_API_STATUS NetShareEnum(const char * server_name /* [in] */,
-			    uint32_t level /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */,
-			    uint32_t prefmaxlen /* [in] */,
-			    uint32_t *entries_read /* [out] [ref] */,
-			    uint32_t *total_entries /* [out] [ref] */,
-			    uint32_t *resume_handle /* [in,out] [ref] */);
-WERROR NetShareEnum_r(struct libnetapi_ctx *ctx,
-		      struct NetShareEnum *r);
-WERROR NetShareEnum_l(struct libnetapi_ctx *ctx,
-		      struct NetShareEnum *r);
-NET_API_STATUS NetShareGetInfo(const char * server_name /* [in] */,
-			       const char * net_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t **buffer /* [out] [ref] */);
-WERROR NetShareGetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetShareGetInfo *r);
-WERROR NetShareGetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetShareGetInfo *r);
-NET_API_STATUS NetShareSetInfo(const char * server_name /* [in] */,
-			       const char * net_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t *buffer /* [in] [ref] */,
-			       uint32_t *parm_err /* [out] [ref] */);
-WERROR NetShareSetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetShareSetInfo *r);
-WERROR NetShareSetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetShareSetInfo *r);
-NET_API_STATUS NetFileClose(const char * server_name /* [in] */,
-			    uint32_t fileid /* [in] */);
-WERROR NetFileClose_r(struct libnetapi_ctx *ctx,
-		      struct NetFileClose *r);
-WERROR NetFileClose_l(struct libnetapi_ctx *ctx,
-		      struct NetFileClose *r);
-NET_API_STATUS NetFileGetInfo(const char * server_name /* [in] */,
-			      uint32_t fileid /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t **buffer /* [out] [ref] */);
-WERROR NetFileGetInfo_r(struct libnetapi_ctx *ctx,
-			struct NetFileGetInfo *r);
-WERROR NetFileGetInfo_l(struct libnetapi_ctx *ctx,
-			struct NetFileGetInfo *r);
-NET_API_STATUS NetFileEnum(const char * server_name /* [in] */,
-			   const char * base_path /* [in] */,
-			   const char * user_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t **buffer /* [out] [ref] */,
-			   uint32_t prefmaxlen /* [in] */,
-			   uint32_t *entries_read /* [out] [ref] */,
-			   uint32_t *total_entries /* [out] [ref] */,
-			   uint32_t *resume_handle /* [in,out] [ref] */);
-WERROR NetFileEnum_r(struct libnetapi_ctx *ctx,
-		     struct NetFileEnum *r);
-WERROR NetFileEnum_l(struct libnetapi_ctx *ctx,
-		     struct NetFileEnum *r);
 #endif /* __LIBNETAPI_LIBNETAPI__ */

Deleted: branches/samba/upstream/source/lib/netapi/localgroup.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/localgroup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/localgroup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1358 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetApi LocalGroup Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#include "librpc/gen_ndr/libnetapi.h"
-#include "lib/netapi/netapi.h"
-#include "lib/netapi/netapi_private.h"
-#include "lib/netapi/libnetapi.h"
-
-static NTSTATUS libnetapi_samr_lookup_and_open_alias(TALLOC_CTX *mem_ctx,
-						     struct rpc_pipe_client *pipe_cli,
-						     struct policy_handle *domain_handle,
-						     const char *group_name,
-						     uint32_t access_rights,
-						     struct policy_handle *alias_handle)
-{
-	NTSTATUS status;
-
-	struct lsa_String lsa_account_name;
-	struct samr_Ids user_rids, name_types;
-
-	init_lsa_String(&lsa_account_name, group_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, mem_ctx,
-					 domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &user_rids,
-					 &name_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	switch (name_types.ids[0]) {
-		case SID_NAME_ALIAS:
-		case SID_NAME_WKN_GRP:
-			break;
-		default:
-			return NT_STATUS_INVALID_SID;
-	}
-
-	return rpccli_samr_OpenAlias(pipe_cli, mem_ctx,
-				     domain_handle,
-				     access_rights,
-				     user_rids.ids[0],
-				     alias_handle);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnetapi_samr_open_alias_queryinfo(TALLOC_CTX *mem_ctx,
-						    struct rpc_pipe_client *pipe_cli,
-						    struct policy_handle *handle,
-						    uint32_t rid,
-						    uint32_t access_rights,
-						    enum samr_AliasInfoEnum level,
-						    union samr_AliasInfo **alias_info)
-{
-	NTSTATUS status;
-	struct policy_handle alias_handle;
-	union samr_AliasInfo *_alias_info = NULL;
-
-	ZERO_STRUCT(alias_handle);
-
-	status = rpccli_samr_OpenAlias(pipe_cli, mem_ctx,
-				       handle,
-				       access_rights,
-				       rid,
-				       &alias_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	status = rpccli_samr_QueryAliasInfo(pipe_cli, mem_ctx,
-					    &alias_handle,
-					    level,
-					    &_alias_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	*alias_info = _alias_info;
-
- done:
-	if (is_valid_policy_hnd(&alias_handle)) {
-		rpccli_samr_Close(pipe_cli, mem_ctx, &alias_handle);
-	}
-
-	return status;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupAdd_r(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupAdd *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct lsa_String lsa_account_name;
-	struct policy_handle connect_handle, domain_handle, builtin_handle, alias_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	uint32_t rid;
-
-	struct LOCALGROUP_INFO_0 *info0 = NULL;
-	struct LOCALGROUP_INFO_1 *info1 = NULL;
-
-	const char *alias_name = NULL;
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			info0 = (struct LOCALGROUP_INFO_0 *)r->in.buffer;
-			alias_name = info0->lgrpi0_name;
-			break;
-		case 1:
-			info1 = (struct LOCALGROUP_INFO_1 *)r->in.buffer;
-			alias_name = info1->lgrpi1_name;
-			break;
-		default:
-			werr = WERR_UNKNOWN_LEVEL;
-			goto done;
-	}
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(alias_handle);
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_OPEN_DOMAIN |
-						  SAMR_ACCESS_ENUM_DOMAINS,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &builtin_handle,
-						      alias_name,
-						      SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-						      &alias_handle);
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-	}
-
-	if (NT_STATUS_IS_OK(status)) {
-		werr = WERR_ALIAS_EXISTS;
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_CREATE_ALIAS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, alias_name);
-
-	status = rpccli_samr_CreateDomAlias(pipe_cli, ctx,
-					    &domain_handle,
-					    &lsa_account_name,
-					    SEC_STD_DELETE |
-					    SAMR_ALIAS_ACCESS_SET_INFO,
-					    &alias_handle,
-					    &rid);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (r->in.level == 1 && info1->lgrpi1_comment) {
-
-		union samr_AliasInfo alias_info;
-
-		init_lsa_String(&alias_info.description, info1->lgrpi1_comment);
-
-		status = rpccli_samr_SetAliasInfo(pipe_cli, ctx,
-						  &alias_handle,
-						  ALIASINFODESCRIPTION,
-						  &alias_info);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&alias_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupAdd_l(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupAdd *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupAdd);
-}
-
-/****************************************************************
-****************************************************************/
-
-
-WERROR NetLocalGroupDel_r(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupDel *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct policy_handle connect_handle, domain_handle, builtin_handle, alias_handle;
-	struct dom_sid2 *domain_sid = NULL;
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(alias_handle);
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_OPEN_DOMAIN |
-						  SAMR_ACCESS_ENUM_DOMAINS,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &builtin_handle,
-						      r->in.group_name,
-						      SEC_STD_DELETE,
-						      &alias_handle);
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-	}
-
-	if (NT_STATUS_IS_OK(status)) {
-		goto delete_alias;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_CREATE_ALIAS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &domain_handle,
-						      r->in.group_name,
-						      SEC_STD_DELETE,
-						      &alias_handle);
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-
- delete_alias:
-	status = rpccli_samr_DeleteDomAlias(pipe_cli, ctx,
-					    &alias_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	ZERO_STRUCT(alias_handle);
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&alias_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupDel_l(struct libnetapi_ctx *ctx,
-			  struct NetLocalGroupDel *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupDel);
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR map_alias_info_to_buffer(TALLOC_CTX *mem_ctx,
-				       const char *alias_name,
-				       struct samr_AliasInfoAll *info,
-				       uint32_t level,
-				       uint32_t *entries_read,
-				       uint8_t **buffer)
-{
-	struct LOCALGROUP_INFO_0 g0;
-	struct LOCALGROUP_INFO_1 g1;
-	struct LOCALGROUP_INFO_1002 g1002;
-
-	switch (level) {
-		case 0:
-			g0.lgrpi0_name		= talloc_strdup(mem_ctx, alias_name);
-			W_ERROR_HAVE_NO_MEMORY(g0.lgrpi0_name);
-
-			ADD_TO_ARRAY(mem_ctx, struct LOCALGROUP_INFO_0, g0,
-				     (struct LOCALGROUP_INFO_0 **)buffer, entries_read);
-
-			break;
-		case 1:
-			g1.lgrpi1_name		= talloc_strdup(mem_ctx, alias_name);
-			g1.lgrpi1_comment	= talloc_strdup(mem_ctx, info->description.string);
-			W_ERROR_HAVE_NO_MEMORY(g1.lgrpi1_name);
-
-			ADD_TO_ARRAY(mem_ctx, struct LOCALGROUP_INFO_1, g1,
-				     (struct LOCALGROUP_INFO_1 **)buffer, entries_read);
-
-			break;
-		case 1002:
-			g1002.lgrpi1002_comment	= talloc_strdup(mem_ctx, info->description.string);
-
-			ADD_TO_ARRAY(mem_ctx, struct LOCALGROUP_INFO_1002, g1002,
-				     (struct LOCALGROUP_INFO_1002 **)buffer, entries_read);
-
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupGetInfo_r(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupGetInfo *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct policy_handle connect_handle, domain_handle, builtin_handle, alias_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	union samr_AliasInfo *alias_info = NULL;
-	uint32_t entries_read = 0;
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-		case 1002:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(alias_handle);
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_OPEN_DOMAIN |
-						  SAMR_ACCESS_ENUM_DOMAINS,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &builtin_handle,
-						      r->in.group_name,
-						      SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-						      &alias_handle);
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-	}
-
-	if (NT_STATUS_IS_OK(status)) {
-		goto query_alias;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_CREATE_ALIAS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &domain_handle,
-						      r->in.group_name,
-						      SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-						      &alias_handle);
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-	}
-
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
- query_alias:
-	status = rpccli_samr_QueryAliasInfo(pipe_cli, ctx,
-					    &alias_handle,
-					    ALIASINFOALL,
-					    &alias_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = map_alias_info_to_buffer(ctx,
-					r->in.group_name,
-					&alias_info->all,
-					r->in.level, &entries_read,
-					r->out.buffer);
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&alias_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupGetInfo_l(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupGetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupGetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR map_buffer_to_alias_info(TALLOC_CTX *mem_ctx,
-				       uint32_t level,
-				       uint8_t *buffer,
-				       enum samr_AliasInfoEnum *alias_level,
-				       union samr_AliasInfo **alias_info)
-{
-	struct LOCALGROUP_INFO_0 *info0;
-	struct LOCALGROUP_INFO_1 *info1;
-	struct LOCALGROUP_INFO_1002 *info1002;
-	union samr_AliasInfo *info = NULL;
-
-	info = TALLOC_ZERO_P(mem_ctx, union samr_AliasInfo);
-	W_ERROR_HAVE_NO_MEMORY(info);
-
-	switch (level) {
-		case 0:
-			info0 = (struct LOCALGROUP_INFO_0 *)buffer;
-			init_lsa_String(&info->name, info0->lgrpi0_name);
-			*alias_level = ALIASINFONAME;
-			break;
-		case 1:
-			info1 = (struct LOCALGROUP_INFO_1 *)buffer;
-			/* group name will be ignored */
-			init_lsa_String(&info->description, info1->lgrpi1_comment);
-			*alias_level = ALIASINFODESCRIPTION;
-			break;
-		case 1002:
-			info1002 = (struct LOCALGROUP_INFO_1002 *)buffer;
-			init_lsa_String(&info->description, info1002->lgrpi1002_comment);
-			*alias_level = ALIASINFODESCRIPTION;
-			break;
-	}
-
-	*alias_info = info;
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupSetInfo_r(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupSetInfo *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct lsa_String lsa_account_name;
-	struct policy_handle connect_handle, domain_handle, builtin_handle, alias_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	enum samr_AliasInfoEnum alias_level = 0;
-	union samr_AliasInfo *alias_info = NULL;
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-		case 1002:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(alias_handle);
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_OPEN_DOMAIN |
-						  SAMR_ACCESS_ENUM_DOMAINS,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.group_name);
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &builtin_handle,
-						      r->in.group_name,
-						      SAMR_ALIAS_ACCESS_SET_INFO,
-						      &alias_handle);
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-	}
-
-	if (NT_STATUS_IS_OK(status)) {
-		goto set_alias;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &domain_handle,
-						      r->in.group_name,
-						      SAMR_ALIAS_ACCESS_SET_INFO,
-						      &alias_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-	}
-
- set_alias:
-
-	werr = map_buffer_to_alias_info(ctx, r->in.level, r->in.buffer,
-					&alias_level, &alias_info);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_samr_SetAliasInfo(pipe_cli, ctx,
-					  &alias_handle,
-					  alias_level,
-					  alias_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&alias_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupSetInfo_l(struct libnetapi_ctx *ctx,
-			      struct NetLocalGroupSetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupSetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupEnum_r(struct libnetapi_ctx *ctx,
-			   struct NetLocalGroupEnum *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct policy_handle connect_handle, domain_handle, builtin_handle, alias_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	uint32_t entries_read = 0;
-	union samr_DomainInfo *domain_info = NULL;
-	union samr_DomainInfo *builtin_info = NULL;
-	struct samr_SamArray *domain_sam_array = NULL;
-	struct samr_SamArray *builtin_sam_array = NULL;
-	int i;
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	if (r->out.total_entries) {
-		*r->out.total_entries = 0;
-	}
-	if (r->out.entries_read) {
-		*r->out.entries_read = 0;
-	}
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(alias_handle);
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_OPEN_DOMAIN |
-						  SAMR_ACCESS_ENUM_DOMAINS,
-						  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-						  SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_OPEN_DOMAIN |
-					  SAMR_ACCESS_ENUM_DOMAINS,
-					  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-					  SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_samr_QueryDomainInfo(pipe_cli, ctx,
-					     &builtin_handle,
-					     2,
-					     &builtin_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (r->out.total_entries) {
-		*r->out.total_entries += builtin_info->info2.num_aliases;
-	}
-
-	status = rpccli_samr_QueryDomainInfo(pipe_cli, ctx,
-					     &domain_handle,
-					     2,
-					     &domain_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (r->out.total_entries) {
-		*r->out.total_entries += domain_info->info2.num_aliases;
-	}
-
-	status = rpccli_samr_EnumDomainAliases(pipe_cli, ctx,
-					       &builtin_handle,
-					       r->in.resume_handle,
-					       &builtin_sam_array,
-					       r->in.prefmaxlen,
-					       &entries_read);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i<builtin_sam_array->count; i++) {
-		union samr_AliasInfo *alias_info = NULL;
-
-		if (r->in.level == 1) {
-
-			status = libnetapi_samr_open_alias_queryinfo(ctx, pipe_cli,
-								     &builtin_handle,
-								     builtin_sam_array->entries[i].idx,
-								     SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-								     ALIASINFOALL,
-								     &alias_info);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-		}
-
-		werr = map_alias_info_to_buffer(ctx,
-						builtin_sam_array->entries[i].name.string,
-						alias_info ? &alias_info->all : NULL,
-						r->in.level,
-						r->out.entries_read,
-						r->out.buffer);
-	}
-
-	status = rpccli_samr_EnumDomainAliases(pipe_cli, ctx,
-					       &domain_handle,
-					       r->in.resume_handle,
-					       &domain_sam_array,
-					       r->in.prefmaxlen,
-					       &entries_read);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i<domain_sam_array->count; i++) {
-
-		union samr_AliasInfo *alias_info = NULL;
-
-		if (r->in.level == 1) {
-			status = libnetapi_samr_open_alias_queryinfo(ctx, pipe_cli,
-								     &domain_handle,
-								     domain_sam_array->entries[i].idx,
-								     SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-								     ALIASINFOALL,
-								     &alias_info);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-		}
-
-		werr = map_alias_info_to_buffer(ctx,
-						domain_sam_array->entries[i].name.string,
-						alias_info ? &alias_info->all : NULL,
-						r->in.level,
-						r->out.entries_read,
-						r->out.buffer);
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupEnum_l(struct libnetapi_ctx *ctx,
-			   struct NetLocalGroupEnum *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupEnum);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnetapi_lsa_lookup_names3(TALLOC_CTX *mem_ctx,
-					    struct rpc_pipe_client *lsa_pipe,
-					    const char *name,
-					    struct dom_sid *sid)
-{
-	NTSTATUS status;
-	struct policy_handle lsa_handle;
-
-	struct lsa_RefDomainList *domains = NULL;
-	struct lsa_TransSidArray3 sids;
-	uint32_t count = 0;
-
-	struct lsa_String names;
-	uint32_t num_names = 1;
-
-	if (!sid || !name) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	ZERO_STRUCT(sids);
-
-	init_lsa_String(&names, name);
-
-	status = rpccli_lsa_open_policy2(lsa_pipe, mem_ctx,
-					 false,
-					 STD_RIGHT_READ_CONTROL_ACCESS |
-					 LSA_POLICY_VIEW_LOCAL_INFORMATION |
-					 LSA_POLICY_LOOKUP_NAMES,
-					 &lsa_handle);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	status = rpccli_lsa_LookupNames3(lsa_pipe, mem_ctx,
-					 &lsa_handle,
-					 num_names,
-					 &names,
-					 &domains,
-					 &sids,
-					 LSA_LOOKUP_NAMES_ALL, /* sure ? */
-					 &count,
-					 0, 0);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	if (count != 1 || sids.count != 1) {
-		return NT_STATUS_NONE_MAPPED;
-	}
-
-	sid_copy(sid, sids.sids[0].sid);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR NetLocalGroupModifyMembers_r(struct libnetapi_ctx *ctx,
-					   struct NetLocalGroupAddMembers *add,
-					   struct NetLocalGroupDelMembers *del,
-					   struct NetLocalGroupSetMembers *set)
-{
-	struct NetLocalGroupAddMembers *r = NULL;
-
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct rpc_pipe_client *lsa_pipe = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct lsa_String lsa_account_name;
-	struct policy_handle connect_handle, domain_handle, builtin_handle, alias_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	struct dom_sid *member_sids = NULL;
-	int i = 0, k = 0;
-
-	struct LOCALGROUP_MEMBERS_INFO_0 *info0 = NULL;
-	struct LOCALGROUP_MEMBERS_INFO_3 *info3 = NULL;
-
-	struct dom_sid *add_sids = NULL;
-	struct dom_sid *del_sids = NULL;
-	size_t num_add_sids = 0;
-	size_t num_del_sids = 0;
-
-	if ((!add && !del && !set) || (add && del && set)) {
-		return WERR_INVALID_PARAM;
-	}
-
-	if (add) {
-		r = add;
-	}
-
-	if (del) {
-		r = (struct NetLocalGroupAddMembers *)del;
-	}
-
-	if (set) {
-		r = (struct NetLocalGroupAddMembers *)set;
-	}
-
-	if (!r->in.group_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 3:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	if (r->in.total_entries == 0 || !r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(alias_handle);
-
-	member_sids = TALLOC_ZERO_ARRAY(ctx, struct dom_sid,
-					r->in.total_entries);
-	W_ERROR_HAVE_NO_MEMORY(member_sids);
-
-	switch (r->in.level) {
-		case 0:
-			info0 = (struct LOCALGROUP_MEMBERS_INFO_0 *)r->in.buffer;
-			for (i=0; i < r->in.total_entries; i++) {
-				sid_copy(&member_sids[i], (struct dom_sid *)info0[i].lgrmi0_sid);
-			}
-			break;
-		case 3:
-			info3 = (struct LOCALGROUP_MEMBERS_INFO_3 *)r->in.buffer;
-			break;
-		default:
-			break;
-	}
-
-	if (r->in.level == 3) {
-		werr = libnetapi_open_pipe(ctx, r->in.server_name,
-					   &ndr_table_lsarpc.syntax_id,
-					   &cli,
-					   &lsa_pipe);
-		if (!W_ERROR_IS_OK(werr)) {
-			goto done;
-		}
-
-		for (i=0; i < r->in.total_entries; i++) {
-			status = libnetapi_lsa_lookup_names3(ctx, lsa_pipe,
-							     info3[i].lgrmi3_domainandname,
-							     &member_sids[i]);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-		}
-		TALLOC_FREE(lsa_pipe);
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_OPEN_DOMAIN |
-						  SAMR_ACCESS_ENUM_DOMAINS,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.group_name);
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &builtin_handle,
-						      r->in.group_name,
-						      SAMR_ALIAS_ACCESS_ADD_MEMBER |
-						      SAMR_ALIAS_ACCESS_REMOVE_MEMBER |
-						      SAMR_ALIAS_ACCESS_GET_MEMBERS |
-						      SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-						      &alias_handle);
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-	}
-
-	if (NT_STATUS_IS_OK(status)) {
-		goto modify_membership;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_and_open_alias(ctx, pipe_cli,
-						      &domain_handle,
-						      r->in.group_name,
-						      SAMR_ALIAS_ACCESS_ADD_MEMBER |
-						      SAMR_ALIAS_ACCESS_REMOVE_MEMBER |
-						      SAMR_ALIAS_ACCESS_GET_MEMBERS |
-						      SAMR_ALIAS_ACCESS_LOOKUP_INFO,
-						      &alias_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-	}
-
- modify_membership:
-
-	if (add) {
-		for (i=0; i < r->in.total_entries; i++) {
-			status = add_sid_to_array_unique(ctx, &member_sids[i],
-							 &add_sids,
-							 &num_add_sids);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-		}
-	}
-
-	if (del) {
-		for (i=0; i < r->in.total_entries; i++) {
-			status = add_sid_to_array_unique(ctx, &member_sids[i],
-							 &del_sids,
-							 &num_del_sids);
-			if (!NT_STATUS_IS_OK(status)) {
-				werr = ntstatus_to_werror(status);
-				goto done;
-			}
-		}
-	}
-
-	if (set) {
-
-		struct lsa_SidArray current_sids;
-
-		status = rpccli_samr_GetMembersInAlias(pipe_cli, ctx,
-						       &alias_handle,
-						       &current_sids);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-
-		/* add list */
-
-		for (i=0; i < r->in.total_entries; i++) {
-			bool already_member = false;
-			for (k=0; k < current_sids.num_sids; k++) {
-				if (sid_equal(&member_sids[i],
-					      current_sids.sids[k].sid)) {
-					already_member = true;
-					break;
-				}
-			}
-			if (!already_member) {
-				status = add_sid_to_array_unique(ctx,
-					&member_sids[i],
-					&add_sids, &num_add_sids);
-				if (!NT_STATUS_IS_OK(status)) {
-					werr = ntstatus_to_werror(status);
-					goto done;
-				}
-			}
-		}
-
-		/* del list */
-
-		for (k=0; k < current_sids.num_sids; k++) {
-			bool keep_member = false;
-			for (i=0; i < r->in.total_entries; i++) {
-				if (sid_equal(&member_sids[i],
-					      current_sids.sids[k].sid)) {
-					keep_member = true;
-					break;
-				}
-			}
-			if (!keep_member) {
-				status = add_sid_to_array_unique(ctx,
-						current_sids.sids[k].sid,
-						&del_sids, &num_del_sids);
-				if (!NT_STATUS_IS_OK(status)) {
-					werr = ntstatus_to_werror(status);
-					goto done;
-				}
-			}
-		}
-	}
-
-	/* add list */
-
-	for (i=0; i < num_add_sids; i++) {
-		status = rpccli_samr_AddAliasMember(pipe_cli, ctx,
-						    &alias_handle,
-						    &add_sids[i]);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	/* del list */
-
-	for (i=0; i < num_del_sids; i++) {
-		status = rpccli_samr_DeleteAliasMember(pipe_cli, ctx,
-						       &alias_handle,
-						       &del_sids[i]);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&alias_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &alias_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupAddMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupAddMembers *r)
-{
-	return NetLocalGroupModifyMembers_r(ctx, r, NULL, NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupAddMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupAddMembers *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupAddMembers);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupDelMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupDelMembers *r)
-{
-	return NetLocalGroupModifyMembers_r(ctx, NULL, r, NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupDelMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupDelMembers *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupDelMembers);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupGetMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupGetMembers *r)
-{
-	return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupGetMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupGetMembers *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupGetMembers);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupSetMembers_r(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupSetMembers *r)
-{
-	return NetLocalGroupModifyMembers_r(ctx, NULL, NULL, r);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetLocalGroupSetMembers_l(struct libnetapi_ctx *ctx,
-				 struct NetLocalGroupSetMembers *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetLocalGroupSetMembers);
-}
-

Modified: branches/samba/upstream/source/lib/netapi/netapi.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/netapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/netapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -30,30 +30,8 @@
 /****************************************************************
 ****************************************************************/
 
-static NET_API_STATUS libnetapi_init_private_context(struct libnetapi_ctx *ctx)
-{
-	struct libnetapi_private_ctx *priv;
-
-	if (!ctx) {
-		return W_ERROR_V(WERR_INVALID_PARAM);
-	}
-
-	priv = TALLOC_ZERO_P(ctx, struct libnetapi_private_ctx);
-	if (!priv) {
-		return W_ERROR_V(WERR_NOMEM);
-	}
-
-	ctx->private_data = priv;
-
-	return NET_API_STATUS_SUCCESS;
-}
-
-/****************************************************************
-****************************************************************/
-
 NET_API_STATUS libnetapi_init(struct libnetapi_ctx **context)
 {
-	NET_API_STATUS status;
 	struct libnetapi_ctx *ctx = NULL;
 	char *krb5_cc_env = NULL;
 
@@ -118,12 +96,6 @@
 		return W_ERROR_V(WERR_NOMEM);
 	}
 
-	status = libnetapi_init_private_context(ctx);
-	if (status != 0) {
-		TALLOC_FREE(frame);
-		return status;
-	}
-
 	libnetapi_initialized = true;
 
 	*context = stat_ctx = ctx;
@@ -153,8 +125,6 @@
 		return NET_API_STATUS_SUCCESS;
 	}
 
-	libnetapi_samr_free(ctx);
-
 	libnetapi_shutdown_cm(ctx);
 
 	if (ctx->krb5_cc_env) {
@@ -309,33 +279,6 @@
 /****************************************************************
 ****************************************************************/
 
-NET_API_STATUS NetApiBufferAllocate(uint32_t byte_count,
-				    void **buffer)
-{
-	void *buf = NULL;
-
-	if (!buffer) {
-		return W_ERROR_V(WERR_INSUFFICIENT_BUFFER);
-	}
-
-	if (byte_count == 0) {
-		goto done;
-	}
-
-	buf = talloc_size(NULL, byte_count);
-	if (!buf) {
-		return W_ERROR_V(WERR_NOMEM);
-	}
-
- done:
-	*buffer = buf;
-
-	return NET_API_STATUS_SUCCESS;
-}
-
-/****************************************************************
-****************************************************************/
-
 NET_API_STATUS NetApiBufferFree(void *buffer)
 {
 	if (!buffer) {

Modified: branches/samba/upstream/source/lib/netapi/netapi.h
===================================================================
--- branches/samba/upstream/source/lib/netapi/netapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/netapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -33,8 +33,6 @@
 
 #define ERROR_MORE_DATA	( 234L )
 
-#define ENCRYPTED_PWLEN	( 16 )
-
 /****************************************************************
 ****************************************************************/
 
@@ -52,17 +50,6 @@
 
 #ifndef _HEADER_libnetapi
 
-#ifndef MAXSUBAUTHS
-#define MAXSUBAUTHS 15 /* max sub authorities in a SID */
-#endif
-
-struct domsid {
-	uint8_t   sid_rev_num;
-	uint8_t   num_auths;
-	uint8_t   id_auth[6];
-	uint32_t  sub_auths[MAXSUBAUTHS];
-};
-
 struct DOMAIN_CONTROLLER_INFO {
 	const char * domain_controller_name;
 	const char * domain_controller_address;
@@ -75,66 +62,6 @@
 	const char * client_site_name;
 };
 
-/* bitmap NetJoinFlags */
-#define NETSETUP_JOIN_DOMAIN ( 0x00000001 )
-#define NETSETUP_ACCT_CREATE ( 0x00000002 )
-#define NETSETUP_ACCT_DELETE ( 0x00000004 )
-#define NETSETUP_WIN9X_UPGRADE ( 0x00000010 )
-#define NETSETUP_DOMAIN_JOIN_IF_JOINED ( 0x00000020 )
-#define NETSETUP_JOIN_UNSECURE ( 0x00000040 )
-#define NETSETUP_MACHINE_PWD_PASSED ( 0x00000080 )
-#define NETSETUP_DEFER_SPN_SET ( 0x00000100 )
-#define NETSETUP_JOIN_DC_ACCOUNT ( 0x00000200 )
-#define NETSETUP_JOIN_WITH_NEW_NAME ( 0x00000400 )
-#define NETSETUP_INSTALL_INVOCATION ( 0x00040000 )
-#define NETSETUP_IGNORE_UNSUPPORTED_FLAGS ( 0x10000000 )
-
-#define FILTER_TEMP_DUPLICATE_ACCOUNT	( 0x0001 )
-#define FILTER_NORMAL_ACCOUNT	( 0x0002 )
-#define FILTER_INTERDOMAIN_TRUST_ACCOUNT	( 0x0008 )
-#define FILTER_WORKSTATION_TRUST_ACCOUNT	( 0x0010 )
-#define FILTER_SERVER_TRUST_ACCOUNT	( 0x0020 )
-
-#define TIMEQ_FOREVER  ( (uint32_t)-1L )
-
-enum NETSETUP_JOIN_STATUS {
-	NetSetupUnknownStatus=0,
-	NetSetupUnjoined=1,
-	NetSetupWorkgroupName=2,
-	NetSetupDomainName=3
-};
-
-struct SERVER_INFO_100 {
-	uint32_t sv100_platform_id;
-	const char * sv100_name;
-};
-
-struct SERVER_INFO_101 {
-	uint32_t sv101_platform_id;
-	const char * sv101_name;
-	uint32_t sv101_version_major;
-	uint32_t sv101_version_minor;
-	uint32_t sv101_type;
-	const char * sv101_comment;
-};
-
-struct SERVER_INFO_102 {
-	uint32_t sv102_platform_id;
-	const char * sv102_name;
-	uint32_t sv102_version_major;
-	uint32_t sv102_version_minor;
-	uint32_t sv102_type;
-	const char * sv102_comment;
-	uint32_t sv102_users;
-	uint32_t sv102_disc;
-	uint8_t sv102_hidden;
-	uint32_t sv102_announce;
-	uint32_t sv102_anndelta;
-	uint32_t sv102_licenses;
-	const char * sv102_userpath;
-};
-
-
 struct SERVER_INFO_1005 {
 	const char * sv1005_comment;
 };
@@ -143,10 +70,6 @@
 	const char * usri0_name;
 };
 
-#define USER_PRIV_GUEST	( 0 )
-#define USER_PRIV_USER	( 1 )
-#define USER_PRIV_ADMIN	( 2 )
-
 struct USER_INFO_1 {
 	const char * usri1_name;
 	const char * usri1_password;
@@ -158,311 +81,6 @@
 	const char * usri1_script_path;
 };
 
-#define AF_OP_PRINT	( 0x1 )
-#define AF_OP_COMM	( 0x2 )
-#define AF_OP_SERVER	( 0x4 )
-#define AF_OP_ACCOUNTS	( 0x8 )
-
-struct USER_INFO_2 {
-	const char * usri2_name;
-	const char * usri2_password;
-	uint32_t usri2_password_age;
-	uint32_t usri2_priv;
-	const char * usri2_home_dir;
-	const char * usri2_comment;
-	uint32_t usri2_flags;
-	const char * usri2_script_path;
-	uint32_t usri2_auth_flags;
-	const char * usri2_full_name;
-	const char * usri2_usr_comment;
-	const char * usri2_parms;
-	const char * usri2_workstations;
-	uint32_t usri2_last_logon;
-	uint32_t usri2_last_logoff;
-	uint32_t usri2_acct_expires;
-	uint32_t usri2_max_storage;
-	uint32_t usri2_units_per_week;
-	uint8_t *usri2_logon_hours;/* [unique] */
-	uint32_t usri2_bad_pw_count;
-	uint32_t usri2_num_logons;
-	const char * usri2_logon_server;
-	uint32_t usri2_country_code;
-	uint32_t usri2_code_page;
-};
-
-struct USER_INFO_3 {
-	const char * usri3_name;
-	uint32_t usri3_password_age;
-	uint32_t usri3_priv;
-	const char * usri3_home_dir;
-	const char * usri3_comment;
-	uint32_t usri3_flags;
-	const char * usri3_script_path;
-	uint32_t usri3_auth_flags;
-	const char * usri3_full_name;
-	const char * usri3_usr_comment;
-	const char * usri3_parms;
-	const char * usri3_workstations;
-	uint32_t usri3_last_logon;
-	uint32_t usri3_last_logoff;
-	uint32_t usri3_acct_expires;
-	uint32_t usri3_max_storage;
-	uint32_t usri3_units_per_week;
-	uint8_t *usri3_logon_hours;/* [unique] */
-	uint32_t usri3_bad_pw_count;
-	uint32_t usri3_num_logons;
-	const char * usri3_logon_server;
-	uint32_t usri3_country_code;
-	uint32_t usri3_code_page;
-	uint32_t usri3_user_id;
-	uint32_t usri3_primary_group_id;
-	const char * usri3_profile;
-	const char * usri3_home_dir_drive;
-	uint32_t usri3_password_expired;
-};
-
-struct USER_INFO_4 {
-	const char * usri4_name;
-	const char * usri4_password;
-	uint32_t usri4_password_age;
-	uint32_t usri4_priv;
-	const char * usri4_home_dir;
-	const char * usri4_comment;
-	uint32_t usri4_flags;
-	const char * usri4_script_path;
-	uint32_t usri4_auth_flags;
-	const char * usri4_full_name;
-	const char * usri4_usr_comment;
-	const char * usri4_parms;
-	const char * usri4_workstations;
-	uint32_t usri4_last_logon;
-	uint32_t usri4_last_logoff;
-	uint32_t usri4_acct_expires;
-	uint32_t usri4_max_storage;
-	uint32_t usri4_units_per_week;
-	uint8_t *usri4_logon_hours;/* [unique] */
-	uint32_t usri4_bad_pw_count;
-	uint32_t usri4_num_logons;
-	const char * usri4_logon_server;
-	uint32_t usri4_country_code;
-	uint32_t usri4_code_page;
-	struct domsid *usri4_user_sid;/* [unique] */
-	uint32_t usri4_primary_group_id;
-	const char * usri4_profile;
-	const char * usri4_home_dir_drive;
-	uint32_t usri4_password_expired;
-};
-
-struct USER_INFO_10 {
-	const char * usri10_name;
-	const char * usri10_comment;
-	const char * usri10_usr_comment;
-	const char * usri10_full_name;
-};
-
-struct USER_INFO_11 {
-	const char * usri11_name;
-	const char * usri11_comment;
-	const char * usri11_usr_comment;
-	const char * usri11_full_name;
-	uint32_t usri11_priv;
-	uint32_t usri11_auth_flags;
-	uint32_t usri11_password_age;
-	const char * usri11_home_dir;
-	const char * usri11_parms;
-	uint32_t usri11_last_logon;
-	uint32_t usri11_last_logoff;
-	uint32_t usri11_bad_pw_count;
-	uint32_t usri11_num_logons;
-	const char * usri11_logon_server;
-	uint32_t usri11_country_code;
-	const char * usri11_workstations;
-	uint32_t usri11_max_storage;
-	uint32_t usri11_units_per_week;
-	uint8_t *usri11_logon_hours;/* [unique] */
-	uint32_t usri11_code_page;
-};
-
-struct USER_INFO_20 {
-	const char * usri20_name;
-	const char * usri20_full_name;
-	const char * usri20_comment;
-	uint32_t usri20_flags;
-	uint32_t usri20_user_id;
-};
-
-struct USER_INFO_21 {
-	uint8_t *usri21_password;
-};
-
-struct USER_INFO_22 {
-	const char * usri22_name;
-	uint8_t *usri22_password;
-	uint32_t usri22_password_age;
-	uint32_t usri22_priv;
-	const char * usri22_home_dir;
-	const char * usri22_comment;
-	uint32_t usri22_flags;
-	uint32_t usri22_script_path;
-	uint32_t usri22_auth_flags;
-	const char * usri22_full_name;
-	const char * usri22_usr_comment;
-	const char * usri22_parms;
-	const char * usri22_workstations;
-	uint32_t usri22_last_logon;
-	uint32_t usri22_last_logoff;
-	uint32_t usri22_acct_expires;
-	uint32_t usri22_max_storage;
-	uint32_t usri22_units_per_week;
-	uint8_t *usri22_logon_hours;/* [unique] */
-	uint32_t usri22_bad_pw_count;
-	uint32_t usri22_num_logons;
-	const char * usri22_logon_server;
-	uint32_t usri22_country_code;
-	uint32_t usri22_code_page;
-};
-
-struct USER_INFO_23 {
-	const char * usri23_name;
-	const char * usri23_full_name;
-	const char * usri23_comment;
-	uint32_t usri23_flags;
-	struct domsid *usri23_user_sid;/* [unique] */
-};
-
-struct USER_INFO_1003 {
-	const char * usri1003_password;
-};
-
-struct USER_INFO_1005 {
-	uint32_t usri1005_priv;
-};
-
-struct USER_INFO_1006 {
-	const char * usri1006_home_dir;
-};
-
-struct USER_INFO_1007 {
-	const char * usri1007_comment;
-};
-
-struct USER_INFO_1008 {
-	uint32_t usri1008_flags;
-};
-
-struct USER_INFO_1009 {
-	const char * usri1009_script_path;
-};
-
-struct USER_INFO_1010 {
-	uint32_t usri1010_auth_flags;
-};
-
-struct USER_INFO_1011 {
-	const char * usri1011_full_name;
-};
-
-struct USER_INFO_1012 {
-	const char * usri1012_usr_comment;
-};
-
-struct USER_INFO_1013 {
-	const char * usri1013_parms;
-};
-
-struct USER_INFO_1014 {
-	const char * usri1014_workstations;
-};
-
-struct USER_INFO_1017 {
-	uint32_t usri1017_acct_expires;
-};
-
-struct USER_INFO_1018 {
-	uint32_t usri1018_max_storage;
-};
-
-struct USER_INFO_1020 {
-	uint32_t usri1020_units_per_week;
-	uint8_t *usri1020_logon_hours;/* [unique] */
-};
-
-struct USER_INFO_1023 {
-	const char * usri1023_logon_server;
-};
-
-struct USER_INFO_1024 {
-	uint32_t usri1024_country_code;
-};
-
-struct USER_INFO_1025 {
-	uint32_t usri1025_code_page;
-};
-
-struct USER_INFO_1051 {
-	uint32_t usri1051_primary_group_id;
-};
-
-struct USER_INFO_1052 {
-	const char * usri1052_profile;
-};
-
-struct USER_INFO_1053 {
-	const char * usri1053_home_dir_drive;
-};
-
-struct USER_MODALS_INFO_0 {
-	uint32_t usrmod0_min_passwd_len;
-	uint32_t usrmod0_max_passwd_age;
-	uint32_t usrmod0_min_passwd_age;
-	uint32_t usrmod0_force_logoff;
-	uint32_t usrmod0_password_hist_len;
-};
-
-struct USER_MODALS_INFO_1 {
-	uint32_t usrmod1_role;
-	const char * usrmod1_primary;
-};
-
-struct USER_MODALS_INFO_2 {
-	const char * usrmod2_domain_name;
-	struct domsid *usrmod2_domain_id;/* [unique] */
-};
-
-struct USER_MODALS_INFO_3 {
-	uint32_t usrmod3_lockout_duration;
-	uint32_t usrmod3_lockout_observation_window;
-	uint32_t usrmod3_lockout_threshold;
-};
-
-struct USER_MODALS_INFO_1001 {
-	uint32_t usrmod1001_min_passwd_len;
-};
-
-struct USER_MODALS_INFO_1002 {
-	uint32_t usrmod1002_max_passwd_age;
-};
-
-struct USER_MODALS_INFO_1003 {
-	uint32_t usrmod1003_min_passwd_age;
-};
-
-struct USER_MODALS_INFO_1004 {
-	uint32_t usrmod1004_force_logoff;
-};
-
-struct USER_MODALS_INFO_1005 {
-	uint32_t usrmod1005_password_hist_len;
-};
-
-struct USER_MODALS_INFO_1006 {
-	uint32_t usrmod1006_role;
-};
-
-struct USER_MODALS_INFO_1007 {
-	const char * usrmod1007_primary;
-};
-
 struct NET_DISPLAY_USER {
 	const char * usri1_name;
 	const char * usri1_comment;
@@ -488,163 +106,6 @@
 	uint32_t grpi3_next_index;
 };
 
-struct GROUP_INFO_0 {
-	const char * grpi0_name;
-};
-
-struct GROUP_INFO_1 {
-	const char * grpi1_name;
-	const char * grpi1_comment;
-};
-
-struct GROUP_INFO_2 {
-	const char * grpi2_name;
-	const char * grpi2_comment;
-	uint32_t grpi2_group_id;
-	uint32_t grpi2_attributes;
-};
-
-struct GROUP_INFO_3 {
-	const char * grpi3_name;
-	const char * grpi3_comment;
-	struct domsid * grpi3_group_sid;
-	uint32_t grpi3_attributes;
-};
-
-struct GROUP_INFO_1002 {
-	const char * grpi1002_comment;
-};
-
-struct GROUP_INFO_1005 {
-	uint32_t grpi1005_attributes;
-};
-
-struct GROUP_USERS_INFO_0 {
-	const char * grui0_name;
-};
-
-struct GROUP_USERS_INFO_1 {
-	const char * grui1_name;
-	uint32_t grui1_attributes;
-};
-
-struct LOCALGROUP_INFO_0 {
-	const char * lgrpi0_name;
-};
-
-struct LOCALGROUP_INFO_1 {
-	const char * lgrpi1_name;
-	const char * lgrpi1_comment;
-};
-
-struct LOCALGROUP_INFO_1002 {
-	const char * lgrpi1002_comment;
-};
-
-enum SID_NAME_USE {
-	SidTypeUser=1,
-	SidTypeGroup=2,
-	SidTypeDomain=3,
-	SidTypeAlias=4,
-	SidTypeWellKnownGroup=5,
-	SidTypeDeletedAccount=6,
-	SidTypeInvalid=7,
-	SidTypeUnknown=8,
-	SidTypeComputer=9,
-	SidTypeLabel=10
-};
-
-struct LOCALGROUP_MEMBERS_INFO_0 {
-	struct domsid *lgrmi0_sid;/* [unique] */
-};
-
-struct LOCALGROUP_MEMBERS_INFO_1 {
-	struct domsid *lgrmi1_sid;/* [unique] */
-	enum SID_NAME_USE lgrmi1_sidusage;
-	const char * lgrmi1_name;
-};
-
-struct LOCALGROUP_MEMBERS_INFO_2 {
-	struct domsid *lgrmi2_sid;/* [unique] */
-	enum SID_NAME_USE lgrmi2_sidusage;
-	const char * lgrmi2_domainandname;
-};
-
-struct LOCALGROUP_MEMBERS_INFO_3 {
-	const char * lgrmi3_domainandname;
-};
-
-struct LOCALGROUP_USERS_INFO_0 {
-	const char * lgrui0_name;
-};
-
-struct TIME_OF_DAY_INFO {
-	uint32_t tod_elapsedt;
-	uint32_t tod_msecs;
-	uint32_t tod_hours;
-	uint32_t tod_mins;
-	uint32_t tod_secs;
-	uint32_t tod_hunds;
-	int32_t tod_timezone;
-	uint32_t tod_tinterval;
-	uint32_t tod_day;
-	uint32_t tod_month;
-	uint32_t tod_year;
-	uint32_t tod_weekday;
-};
-
-struct SHARE_INFO_0 {
-	const char * shi0_netname;
-};
-
-struct SHARE_INFO_1 {
-	const char * shi1_netname;
-	uint32_t shi1_type;
-	const char * shi1_remark;
-};
-
-struct SHARE_INFO_2 {
-	const char * shi2_netname;
-	uint32_t shi2_type;
-	const char * shi2_remark;
-	uint32_t shi2_permissions;
-	uint32_t shi2_max_uses;
-	uint32_t shi2_current_uses;
-	const char * shi2_path;
-	const char * shi2_passwd;
-};
-
-struct SHARE_INFO_501 {
-	const char * shi501_netname;
-	uint32_t shi501_type;
-	const char * shi501_remark;
-	uint32_t shi501_flags;
-};
-
-struct SHARE_INFO_1004 {
-	const char * shi1004_remark;
-};
-
-struct SHARE_INFO_1005 {
-	uint32_t shi1005_flags;
-};
-
-struct SHARE_INFO_1006 {
-	uint32_t shi1006_max_uses;
-};
-
-struct FILE_INFO_2 {
-	uint32_t fi2_id;
-};
-
-struct FILE_INFO_3 {
-	uint32_t fi3_id;
-	uint32_t fi3_permissions;
-	uint32_t fi3_num_locks;
-	const char * fi3_pathname;
-	const char * fi3_username;
-};
-
 #endif /* _HEADER_libnetapi */
 
 /****************************************************************
@@ -658,9 +119,6 @@
 	char *password;
 	char *krb5_cc_env;
 	int use_kerberos;
-	int disable_policy_handle_cache;
-
-	void *private_data;
 };
 
 /****************************************************************
@@ -718,13 +176,7 @@
 const char *libnetapi_get_error_string(struct libnetapi_ctx *ctx,
 				       NET_API_STATUS status);
 
-/****************************************************************
- NetApiBufferAllocate
-****************************************************************/
 
-NET_API_STATUS NetApiBufferAllocate(uint32_t byte_count,
-				    void **buffer);
-
 /****************************************************************
  NetApiBufferFree
 ****************************************************************/
@@ -733,36 +185,6 @@
 
 /************************************************************//**
  *
- * ConvertSidToStringSid
- *
- * @brief Convert a domain sid into a string
- *
- * @param[in] sid A pointer to a sid structure
- * @param[in,out] sid_string A pointer that holds a pointer to a sid string. Caller
- * needs to free with free(3)
- * @return bool
- ***************************************************************/
-
-int  ConvertSidToStringSid(const struct domsid *sid,
-			   char **sid_string);
-
-/************************************************************//**
- *
- * ConvertStringSidToSid
- *
- * @brief Convert a string into a domain sid
- *
- * @param[in] sid_string A pointer to a sid string.
- * @param[in,out] sid A pointer that holds a pointer to a sid structure.
- * Caller needs to free with free(3)
- * @return bool
- ***************************************************************/
-
-int ConvertStringSidToSid(const char *sid_string,
-			  struct domsid **sid);
-
-/************************************************************//**
- *
  * NetJoinDomain
  *
  * @brief Join a computer to a domain or workgroup
@@ -852,29 +274,6 @@
 
 /************************************************************//**
  *
- * NetRenameMachineInDomain
- *
- * @brief Rename a machine in a domain
- *
- * @param[in] server_name The server name to connect to
- * @param[in] new_machine_name The new machine name
- * @param[in] account The domain account used for the query
- * @param[in] password The domain account's password used for the query
- * @param[in] rename_options Options used for the rename operation
- * @return NET_API_STATUS
- *
- * example join/rename_machine.c
- *
- ***************************************************************/
-
-NET_API_STATUS NetRenameMachineInDomain(const char * server_name /* [in] */,
-					const char * new_machine_name /* [in] */,
-					const char * account /* [in] */,
-					const char * password /* [in] */,
-					uint32_t rename_options /* [in] */);
-
-/************************************************************//**
- *
  * NetServerGetInfo
  *
  * @brief Get Information on a server
@@ -1040,183 +439,6 @@
 
 /************************************************************//**
  *
- * NetUserChangePassword
- *
- * @brief Change the password for a user on a given server or in a given domain
- *
- * @param[in] domain_name The server or domain name to connect to
- * @param[in] user_name The user account to change the password for
- * @param[in] old_password The user account's old password
- * @param[in] new_password The user account's new password
- * @return NET_API_STATUS
- *
- * example user/user_chgpwd.c
- ***************************************************************/
-
-NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
-				     const char * user_name /* [in] */,
-				     const char * old_password /* [in] */,
-				     const char * new_password /* [in] */);
-
-/************************************************************//**
- *
- * NetUserGetInfo
- *
- * @brief Get User Information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] user_name The name of the user that is going to be queried
- * @param[in] level The level defining the requested USER_INFO_X structure
- * @param[out] buffer The buffer containing a USER_INFO_X structure
- * @return NET_API_STATUS
- *
- * example user/user_getinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetUserGetInfo(const char * server_name /* [in] */,
-			      const char * user_name /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t **buffer /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetUserSetInfo
- *
- * @brief Set User Information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] user_name The name of the user that is going to be modified
- * @param[in] level The level defining the requested USER_INFO_X structure
- * @param[in] buffer The buffer containing a USER_INFO_X structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example user/user_setinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetUserSetInfo(const char * server_name /* [in] */,
-			      const char * user_name /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t *buffer /* [in] [ref] */,
-			      uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetUserModalsGet
- *
- * @brief Get SAM domain and password information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The level defining which USER_MODALS_INFO_X buffer to query
- * @param[out] buffer The returned USER_MODALS_INFO_X buffer
- * @return NET_API_STATUS
- *
- * example user/user_modalsget.c
- ***************************************************************/
-
-NET_API_STATUS NetUserModalsGet(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetUserModalsSet
- *
- * @brief Set SAM domain and password information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The level defining which USER_MODALS_INFO_X buffer to query
- * @param[out] buffer The buffer conntaing a USER_MODALS_INFO_X structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example user/user_modalsset.c
- ***************************************************************/
-
-NET_API_STATUS NetUserModalsSet(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetUserGetGroups
- *
- * @brief Enumerate grouplist of a user on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] user_name The user name to query
- * @param[in] level The enumeration level used for the query (Currently only
- * level 0 is supported)
- * @param[out] buffer The returned enumeration buffer
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of returned entries
- * @param[out] total_entries The number of total entries
- * @return NET_API_STATUS
- *
- * example user/user_getgroups.c
- ***************************************************************/
-
-NET_API_STATUS NetUserGetGroups(const char * server_name /* [in] */,
-				const char * user_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */,
-				uint32_t prefmaxlen /* [in] */,
-				uint32_t *entries_read /* [out] [ref] */,
-				uint32_t *total_entries /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetUserSetGroups
- *
- * @brief Set grouplist of a user on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] user_name The user name to query
- * @param[in] level The level defining the GROUP_USERS_INFO_X structures in the buffer
- * @param[in] buffer The buffer containing GROUP_USERS_INFO_X structures
- * @param[in] num_entries The number of X structures in the buffer
- * @return NET_API_STATUS
- *
- * example user/user_setgroups.c
- ***************************************************************/
-
-NET_API_STATUS NetUserSetGroups(const char * server_name /* [in] */,
-				const char * user_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t num_entries /* [in] */);
-
-/************************************************************//**
- *
- * NetUserGetLocalGroups
- *
- * @brief Enumerate local grouplist of a user on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] user_name The user name to query
- * @param[in] level The enumeration level used for the query
- * @param[in] flags The flags used for the query
- * @param[out] buffer The returned enumeration buffer
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of returned entries
- * @param[out] total_entries The number of total entries
- * @return NET_API_STATUS
- *
- * example user/user_getlocalgroups.c
- ***************************************************************/
-
-NET_API_STATUS NetUserGetLocalGroups(const char * server_name /* [in] */,
-				     const char * user_name /* [in] */,
-				     uint32_t level /* [in] */,
-				     uint32_t flags /* [in] */,
-				     uint8_t **buffer /* [out] [ref] */,
-				     uint32_t prefmaxlen /* [in] */,
-				     uint32_t *entries_read /* [out] [ref] */,
-				     uint32_t *total_entries /* [out] [ref] */);
-
-/************************************************************//**
- *
  * NetQueryDisplayInformation
  *
  * @brief Enumerate accounts on a server
@@ -1241,598 +463,6 @@
 					  uint32_t *entries_read /* [out] [ref] */,
 					  void **buffer /* [out] [noprint,ref] */);
 
-/************************************************************//**
- *
- * NetGroupAdd
- *
- * @brief Create Domain Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The level used for the new group creation
- * @param[in] buf The buffer containing the group structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example group/group_add.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupAdd(const char * server_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t *buf /* [in] [ref] */,
-			   uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetGroupDel
- *
- * @brief Delete Domain Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be deleted
- * @return NET_API_STATUS
- *
- * example group/group_del.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupDel(const char * server_name /* [in] */,
-			   const char * group_name /* [in] */);
-
-/************************************************************//**
- *
- * NetGroupEnum
- *
- * @brief Enumerate groups on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The enumeration level used for the query (Currently only
- * level 0 is supported)
- * @param[out] buffer The returned enumeration buffer
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of returned entries
- * @param[out] total_entries The number of total entries
- * @param[in,out] resume_handle A handle passed in and returned for resuming
- * operations
- * @return NET_API_STATUS
- *
- * example group/group_enum.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupEnum(const char * server_name /* [in] */,
-			    uint32_t level /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */,
-			    uint32_t prefmaxlen /* [in] */,
-			    uint32_t *entries_read /* [out] [ref] */,
-			    uint32_t *total_entries /* [out] [ref] */,
-			    uint32_t *resume_handle /* [in,out] [ref] */);
-
-/************************************************************//**
- *
- * NetGroupSetInfo
- *
- * @brief Set Domain Group Information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be modified
- * @param[in] level The level defining the structure type in buf
- * @param[in] buf The buffer containing a GROUP_INFO_X structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example group/group_setinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupSetInfo(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t *buf /* [in] [ref] */,
-			       uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetGroupGetInfo
- *
- * @brief Get Domain Group Information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be queried
- * @param[in] level The level defining the requested GROUP_INFO_X structure
- * @param[out] buf The buffer containing a GROUP_INFO_X structure
- * @return NET_API_STATUS
- *
- * example group/group_getinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupGetInfo(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t **buf /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetGroupAddUser
- *
- * @brief Add existing User to existing Domain Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be modified
- * @param[in] user_name The name of the user that is going to be added to the
- * group
- * @return NET_API_STATUS
- *
- * example group/group_adduser.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupAddUser(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       const char * user_name /* [in] */);
-
-/************************************************************//**
- *
- * NetGroupDelUser
- *
- * @brief Remove User from Domain Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be modified
- * @param[in] user_name The name of the user that is going to be removed from
- * the group
- * @return NET_API_STATUS
- *
- * example group/group_deluser.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupDelUser(const char * server_name /* [in] */,
-			       const char * group_name /* [in] */,
-			       const char * user_name /* [in] */);
-
-/************************************************************//**
- *
- * NetGroupGetUsers
- *
- * @brief Get Users for a group on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The group name to enumerate users for
- * @param[in] level The enumeration level used for the query
- * @param[out] buffer The returned enumeration buffer
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of returned entries
- * @param[out] total_entries The number of total entries
- * @param[in,out] resume_handle A handle passed in and returned for resuming
- * operations
- * @return NET_API_STATUS
- *
- * example group/group_getusers.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupGetUsers(const char * server_name /* [in] */,
-				const char * group_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t **buffer /* [out] [ref] */,
-				uint32_t prefmaxlen /* [in] */,
-				uint32_t *entries_read /* [out] [ref] */,
-				uint32_t *total_entries /* [out] [ref] */,
-				uint32_t *resume_handle /* [in,out] [ref] */);
-
-/************************************************************//**
- *
- * NetGroupSetUsers
- *
- * @brief Set Users for a group on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The group name to enumerate users for
- * @param[in] level The enumeration level used for the query
- * @param[in] buffer The buffer containing a X structure
- * @param[in] num_entries The number of X entries in the buffer
- * @return NET_API_STATUS
- *
- * example group/group_setusers.c
- ***************************************************************/
-
-NET_API_STATUS NetGroupSetUsers(const char * server_name /* [in] */,
-				const char * group_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buffer /* [in] [ref] */,
-				uint32_t num_entries /* [in] */);
-
-/************************************************************//**
- *
- * NetLocalGroupAdd
- *
- * @brief Create Local Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The level used for the new group creation
- * @param[in] buf The buffer containing the group structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_add.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupAdd(const char * server_name /* [in] */,
-				uint32_t level /* [in] */,
-				uint8_t *buf /* [in] [ref] */,
-				uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetLocalGroupDel
- *
- * @brief Delete Local Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be deleted
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_del.c
- ***************************************************************/
-
-
-NET_API_STATUS NetLocalGroupDel(const char * server_name /* [in] */,
-				const char * group_name /* [in] */);
-
-/************************************************************//**
- *
- * NetLocalGroupGetInfo
- *
- * @brief Get Local Group Information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be queried
- * @param[in] level The level defining the requested LOCALGROUP_INFO_X structure
- * @param[out] buf The buffer containing a LOCALGROUP_INFO_X structure
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_getinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupGetInfo(const char * server_name /* [in] */,
-				    const char * group_name /* [in] */,
-				    uint32_t level /* [in] */,
-				    uint8_t **buf /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetLocalGroupSetInfo
- *
- * @brief Set Local Group Information
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to be modified
- * @param[in] level The level defining the requested LOCALGROUP_INFO_X structure
- * @param[in] buf The buffer containing a LOCALGROUP_INFO_X structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_setinfo.c
- ***************************************************************/
-
-
-NET_API_STATUS NetLocalGroupSetInfo(const char * server_name /* [in] */,
-				    const char * group_name /* [in] */,
-				    uint32_t level /* [in] */,
-				    uint8_t *buf /* [in] [ref] */,
-				    uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetLocalGroupEnum
- *
- * @brief Enumerate local groups on a server
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The enumeration level used for the query (Currently only
- * level 0 is supported)
- * @param[out] buffer The returned enumeration buffer
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of returned entries
- * @param[out] total_entries The number of total entries
- * @param[in,out] resume_handle A handle passed in and returned for resuming
- * operations
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_enum.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupEnum(const char * server_name /* [in] */,
-				 uint32_t level /* [in] */,
-				 uint8_t **buffer /* [out] [ref] */,
-				 uint32_t prefmaxlen /* [in] */,
-				 uint32_t *entries_read /* [out] [ref] */,
-				 uint32_t *total_entries /* [out] [ref] */,
-				 uint32_t *resume_handle /* [in,out] [ref] */);
-
-/************************************************************//**
- *
- * NetLocalGroupAddMembers
- *
- * @brief Add Members to a Local Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to modified
- * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
- * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
- * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
- * the buffer
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_addmembers.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupAddMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */);
-
-/************************************************************//**
- *
- * NetLocalGroupDelMembers
- *
- * @brief Delete Members from a Local Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to modified
- * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
- * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
- * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
- * the buffer
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_delmembers.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupDelMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */);
-
-/************************************************************//**
- *
- * NetLocalGroupGetMembers
- *
- * @brief Enumerate Members in a local group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] local_group_name The localgroup that is going to be queried
- * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
- * @param[out] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X
- * structure
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of LOCALGROUP_MEMBERS_INFO_X entries in the buffer
- * @param[out] total_entries The total number of LOCALGROUP_MEMBERS_INFO_X entries for that group
- * @param[in,out] resume_handle A handle passed in and returned for resuming
- * operations
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_getmembers.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupGetMembers(const char * server_name /* [in] */,
-				       const char * local_group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t **buffer /* [out] [ref] */,
-				       uint32_t prefmaxlen /* [in] */,
-				       uint32_t *entries_read /* [out] [ref] */,
-				       uint32_t *total_entries /* [out] [ref] */,
-				       uint32_t *resume_handle /* [in,out] [ref] */);
-
-/************************************************************//**
- *
- * NetLocalGroupSetMembers
- *
- * @brief Set Members in a Local Group
- *
- * @param[in] server_name The server name to connect to
- * @param[in] group_name The name of the group that is going to modified
- * @param[in] level The level defining the LOCALGROUP_MEMBERS_INFO_X structure
- * @param[in] buffer The buffer containing a LOCALGROUP_MEMBERS_INFO_X structure
- * @param[in] total_entries The number of LOCALGROUP_MEMBERS_INFO_X entries in
- * the buffer
- * @return NET_API_STATUS
- *
- * example localgroup/localgroup_setmembers.c
- ***************************************************************/
-
-NET_API_STATUS NetLocalGroupSetMembers(const char * server_name /* [in] */,
-				       const char * group_name /* [in] */,
-				       uint32_t level /* [in] */,
-				       uint8_t *buffer /* [in] [ref] */,
-				       uint32_t total_entries /* [in] */);
-
-/************************************************************//**
- *
- * NetRemoteTOD
- *
- * @brief Query remote Time of Day
- *
- * @param[in] server_name The server name to connect to
- * @param[out] buf The buffer containing a TIME_OF_DAY_INFO structure
- * @return NET_API_STATUS
- *
- * example server/remote_tod.c
- ***************************************************************/
-
-NET_API_STATUS NetRemoteTOD(const char * server_name /* [in] */,
-			    uint8_t **buf /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetShareAdd
- *
- * @brief Add Share
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The level defining the requested SHARE_INFO_X structure
- * @param[in] buffer The buffer containing a SHARE_INFO_X structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example share/share_add.c
- ***************************************************************/
-
-NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t *buffer /* [in] [ref] */,
-			   uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetShareDel
- *
- * @brief Delete Share
- *
- * @param[in] server_name The server name to connect to
- * @param[in] net_name The name of the share to delete
- * @param[in] reserved
- * @return NET_API_STATUS
- *
- * example share/share_del.c
- ***************************************************************/
-
-NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
-			   const char * net_name /* [in] */,
-			   uint32_t reserved /* [in] */);
-
-/************************************************************//**
- *
- * NetShareEnum
- *
- * @brief Enumerate Shares
- *
- * @param[in] server_name The server name to connect to
- * @param[in] level The level defining the SHARE_INFO_X structure
- * @param[out] buffer The buffer containing a SHARE_INFO_X structure
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of SHARE_INFO_X entries in the buffer
- * @param[out] total_entries The total number of SHARE_INFO_X entries
- * @param[in,out] resume_handle A handle passed in and returned for resuming
- * operations
- * @return NET_API_STATUS
- *
- * example share/share_enum.c
- ***************************************************************/
-
-NET_API_STATUS NetShareEnum(const char * server_name /* [in] */,
-			    uint32_t level /* [in] */,
-			    uint8_t **buffer /* [out] [ref] */,
-			    uint32_t prefmaxlen /* [in] */,
-			    uint32_t *entries_read /* [out] [ref] */,
-			    uint32_t *total_entries /* [out] [ref] */,
-			    uint32_t *resume_handle /* [in,out] [ref] */);
-
-/************************************************************//**
- *
- * NetShareGetInfo
- *
- * @brief Get Share Info
- *
- * @param[in] server_name The server name to connect to
- * @param[in] net_name The name of the share to query
- * @param[in] level The level defining the SHARE_INFO_X structure
- * @param[out] buffer The buffer containing a SHARE_INFO_X structure
- * @return NET_API_STATUS
- *
- * example share/share_getinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetShareGetInfo(const char * server_name /* [in] */,
-			       const char * net_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t **buffer /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetShareSetInfo
- *
- * @brief Set Share Info
- *
- * @param[in] server_name The server name to connect to
- * @param[in] net_name The name of the share to query
- * @param[in] level The level defining the SHARE_INFO_X structure
- * @param[in] buffer The buffer containing a SHARE_INFO_X structure
- * @param[out] parm_err The returned parameter error number if any
- * @return NET_API_STATUS
- *
- * example share/share_setinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetShareSetInfo(const char * server_name /* [in] */,
-			       const char * net_name /* [in] */,
-			       uint32_t level /* [in] */,
-			       uint8_t *buffer /* [in] [ref] */,
-			       uint32_t *parm_err /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetFileClose
- *
- * @brief Close a file
- *
- * @param[in] server_name The server name to connect to
- * @param[in] fileid The fileid of the file that is going to be closed
- * @return NET_API_STATUS
- *
- * example file/file_close.c
- ***************************************************************/
-
-NET_API_STATUS NetFileClose(const char * server_name /* [in] */,
-			    uint32_t fileid /* [in] */);
-
-/************************************************************//**
- *
- * NetFileGetInfo
- *
- * @brief Close a file
- *
- * @param[in] server_name The server name to connect to
- * @param[in] fileid The fileid of the file that is going to be closed
- * @param[in] level The level of the FILE_INFO_X buffer
- * @param[out] buffer The buffer containing a FILE_INFO_X structure
- * @return NET_API_STATUS
- *
- * example file/file_getinfo.c
- ***************************************************************/
-
-NET_API_STATUS NetFileGetInfo(const char * server_name /* [in] */,
-			      uint32_t fileid /* [in] */,
-			      uint32_t level /* [in] */,
-			      uint8_t **buffer /* [out] [ref] */);
-
-/************************************************************//**
- *
- * NetFileEnum
- *
- * @brief Enumerate Files
- *
- * @param[in] server_name The server name to connect to
- * @param[in] base_path The
- * @param[in] user_name The
- * @param[in] level The level defining the FILE_INFO_X structure
- * @param[out] buffer The buffer containing a FILE_INFO_X structure
- * @param[in] prefmaxlen The requested maximal buffer size
- * @param[out] entries_read The number of FILE_INFO_X entries in the buffer
- * @param[out] total_entries The total number of FILE_INFO_X entries
- * @param[in,out] resume_handle A handle passed in and returned for resuming
- * operations
- * @return NET_API_STATUS
- *
- * example file/file_enum.c
- ***************************************************************/
-
-NET_API_STATUS NetFileEnum(const char * server_name /* [in] */,
-			   const char * base_path /* [in] */,
-			   const char * user_name /* [in] */,
-			   uint32_t level /* [in] */,
-			   uint8_t **buffer /* [out] [ref] */,
-			   uint32_t prefmaxlen /* [in] */,
-			   uint32_t *entries_read /* [out] [ref] */,
-			   uint32_t *total_entries /* [out] [ref] */,
-			   uint32_t *resume_handle /* [in,out] [ref] */);
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: branches/samba/upstream/source/lib/netapi/netapi_private.h
===================================================================
--- branches/samba/upstream/source/lib/netapi/netapi_private.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/netapi_private.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,68 +20,17 @@
 #ifndef __LIB_NETAPI_PRIVATE_H__
 #define __LIB_NETAPI_PRIVATE_H__
 
-#define LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, fn) \
-	DEBUG(10,("redirecting call %s to localhost\n", #fn)); \
-	if (!r->in.server_name) { \
-		r->in.server_name = "localhost"; \
-	} \
-	return fn ## _r(ctx, r);
-
-struct libnetapi_private_ctx {
-	struct {
-		const char *domain_name;
-		struct dom_sid *domain_sid;
-		struct rpc_pipe_client *cli;
-
-		uint32_t connect_mask;
-		struct policy_handle connect_handle;
-
-		uint32_t domain_mask;
-		struct policy_handle domain_handle;
-
-		uint32_t builtin_mask;
-		struct policy_handle builtin_handle;
-	} samr;
-
-};
-
 NET_API_STATUS libnetapi_get_password(struct libnetapi_ctx *ctx, char **password);
 NET_API_STATUS libnetapi_get_username(struct libnetapi_ctx *ctx, char **username);
 NET_API_STATUS libnetapi_set_error_string(struct libnetapi_ctx *ctx, const char *format, ...);
 NET_API_STATUS libnetapi_get_debuglevel(struct libnetapi_ctx *ctx, char **debuglevel);
 
+WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
+				     const char *server_name,
+				     struct cli_state **cli);
 WERROR libnetapi_shutdown_cm(struct libnetapi_ctx *ctx);
 WERROR libnetapi_open_pipe(struct libnetapi_ctx *ctx,
-			   const char *server_name,
-			   const struct ndr_syntax_id *interface,
-			   struct cli_state **pcli,
-			   struct rpc_pipe_client **presult);
-WERROR libnetapi_samr_open_domain(struct libnetapi_ctx *mem_ctx,
-				  struct rpc_pipe_client *pipe_cli,
-				  uint32_t connect_mask,
-				  uint32_t domain_mask,
-				  struct policy_handle *connect_handle,
-				  struct policy_handle *domain_handle,
-				  struct dom_sid2 **domain_sid);
-WERROR libnetapi_samr_open_builtin_domain(struct libnetapi_ctx *mem_ctx,
-					  struct rpc_pipe_client *pipe_cli,
-					  uint32_t connect_mask,
-					  uint32_t builtin_mask,
-					  struct policy_handle *connect_handle,
-					  struct policy_handle *builtin_handle);
-void libnetapi_samr_close_domain_handle(struct libnetapi_ctx *ctx,
-					struct policy_handle *handle);
-void libnetapi_samr_close_builtin_handle(struct libnetapi_ctx *ctx,
-					 struct policy_handle *handle);
-void libnetapi_samr_close_connect_handle(struct libnetapi_ctx *ctx,
-					 struct policy_handle *handle);
-void libnetapi_samr_free(struct libnetapi_ctx *ctx);
-
-NTSTATUS add_GROUP_USERS_INFO_X_buffer(TALLOC_CTX *mem_ctx,
-				       uint32_t level,
-				       const char *group_name,
-				       uint32_t attributes,
-				       uint8_t **buffer,
-				       uint32_t *num_entries);
-
+			   struct cli_state *cli,
+			   int pipe_idx,
+			   struct rpc_pipe_client **pipe_cli);
 #endif

Deleted: branches/samba/upstream/source/lib/netapi/samr.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/samr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/samr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,319 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetApi Samr Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-#include "lib/netapi/netapi.h"
-#include "lib/netapi/netapi_private.h"
-
-/****************************************************************
-****************************************************************/
-
-WERROR libnetapi_samr_open_domain(struct libnetapi_ctx *mem_ctx,
-				  struct rpc_pipe_client *pipe_cli,
-				  uint32_t connect_mask,
-				  uint32_t domain_mask,
-				  struct policy_handle *connect_handle,
-				  struct policy_handle *domain_handle,
-				  struct dom_sid2 **domain_sid)
-{
-	NTSTATUS status;
-	WERROR werr;
-	struct libnetapi_private_ctx *priv;
-	uint32_t resume_handle = 0;
-	uint32_t num_entries = 0;
-	struct samr_SamArray *sam = NULL;
-	const char *domain_name = NULL;
-	struct lsa_String lsa_domain_name;
-	bool domain_found = true;
-	int i;
-
-	priv = talloc_get_type_abort(mem_ctx->private_data,
-		struct libnetapi_private_ctx);
-
-	if (is_valid_policy_hnd(&priv->samr.connect_handle)) {
-		if ((priv->samr.connect_mask & connect_mask) == connect_mask) {
-			*connect_handle = priv->samr.connect_handle;
-		} else {
-			libnetapi_samr_close_connect_handle(mem_ctx,
-				&priv->samr.connect_handle);
-		}
-	}
-
-	if (is_valid_policy_hnd(&priv->samr.domain_handle)) {
-		if ((priv->samr.domain_mask & domain_mask) == domain_mask) {
-			*domain_handle = priv->samr.domain_handle;
-		} else {
-			libnetapi_samr_close_domain_handle(mem_ctx,
-				&priv->samr.domain_handle);
-		}
-	}
-
-	if (priv->samr.domain_sid) {
-		*domain_sid = priv->samr.domain_sid;
-	}
-
-	if (is_valid_policy_hnd(&priv->samr.connect_handle) &&
-	    ((priv->samr.connect_mask & connect_mask) == connect_mask) &&
-	    is_valid_policy_hnd(&priv->samr.domain_handle) &&
-	    (priv->samr.domain_mask & domain_mask) == domain_mask) {
-		return WERR_OK;
-	}
-
-	if (!is_valid_policy_hnd(connect_handle)) {
-		status = rpccli_try_samr_connects(pipe_cli, mem_ctx,
-						  connect_mask,
-						  connect_handle);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	status = rpccli_samr_EnumDomains(pipe_cli, mem_ctx,
-					 connect_handle,
-					 &resume_handle,
-					 &sam,
-					 0xffffffff,
-					 &num_entries);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i<num_entries; i++) {
-
-		domain_name = sam->entries[i].name.string;
-
-		if (strequal(domain_name, builtin_domain_name())) {
-			continue;
-		}
-
-		domain_found = true;
-		break;
-	}
-
-	if (!domain_found) {
-		werr = WERR_NO_SUCH_DOMAIN;
-		goto done;
-	}
-
-	init_lsa_String(&lsa_domain_name, domain_name);
-
-	status = rpccli_samr_LookupDomain(pipe_cli, mem_ctx,
-					  connect_handle,
-					  &lsa_domain_name,
-					  domain_sid);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_OpenDomain(pipe_cli, mem_ctx,
-					connect_handle,
-					domain_mask,
-					*domain_sid,
-					domain_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	priv->samr.cli			= pipe_cli;
-
-	priv->samr.domain_name		= domain_name;
-	priv->samr.domain_sid		= *domain_sid;
-
-	priv->samr.connect_mask		= connect_mask;
-	priv->samr.connect_handle	= *connect_handle;
-
-	priv->samr.domain_mask		= domain_mask;
-	priv->samr.domain_handle	= *domain_handle;
-
-	werr = WERR_OK;
-
- done:
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR libnetapi_samr_open_builtin_domain(struct libnetapi_ctx *mem_ctx,
-					  struct rpc_pipe_client *pipe_cli,
-					  uint32_t connect_mask,
-					  uint32_t builtin_mask,
-					  struct policy_handle *connect_handle,
-					  struct policy_handle *builtin_handle)
-{
-	NTSTATUS status;
-	WERROR werr;
-	struct libnetapi_private_ctx *priv;
-
-	priv = talloc_get_type_abort(mem_ctx->private_data,
-		struct libnetapi_private_ctx);
-
-	if (is_valid_policy_hnd(&priv->samr.connect_handle)) {
-		if ((priv->samr.connect_mask & connect_mask) == connect_mask) {
-			*connect_handle = priv->samr.connect_handle;
-		} else {
-			libnetapi_samr_close_connect_handle(mem_ctx,
-				&priv->samr.connect_handle);
-		}
-	}
-
-	if (is_valid_policy_hnd(&priv->samr.builtin_handle)) {
-		if ((priv->samr.builtin_mask & builtin_mask) == builtin_mask) {
-			*builtin_handle = priv->samr.builtin_handle;
-		} else {
-			libnetapi_samr_close_builtin_handle(mem_ctx,
-				&priv->samr.builtin_handle);
-		}
-	}
-
-	if (is_valid_policy_hnd(&priv->samr.connect_handle) &&
-	    ((priv->samr.connect_mask & connect_mask) == connect_mask) &&
-	    is_valid_policy_hnd(&priv->samr.builtin_handle) &&
-	    (priv->samr.builtin_mask & builtin_mask) == builtin_mask) {
-		return WERR_OK;
-	}
-
-	if (!is_valid_policy_hnd(connect_handle)) {
-		status = rpccli_try_samr_connects(pipe_cli, mem_ctx,
-						  connect_mask,
-						  connect_handle);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	status = rpccli_samr_OpenDomain(pipe_cli, mem_ctx,
-					connect_handle,
-					builtin_mask,
-					CONST_DISCARD(DOM_SID *, &global_sid_Builtin),
-					builtin_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	priv->samr.cli			= pipe_cli;
-
-	priv->samr.connect_mask		= connect_mask;
-	priv->samr.connect_handle	= *connect_handle;
-
-	priv->samr.builtin_mask		= builtin_mask;
-	priv->samr.builtin_handle	= *builtin_handle;
-
-	werr = WERR_OK;
-
- done:
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-void libnetapi_samr_close_domain_handle(struct libnetapi_ctx *ctx,
-					struct policy_handle *handle)
-{
-	struct libnetapi_private_ctx *priv;
-
-	if (!is_valid_policy_hnd(handle)) {
-		return;
-	}
-
-	priv = talloc_get_type_abort(ctx->private_data,
-		struct libnetapi_private_ctx);
-
-	if (!policy_hnd_equal(handle, &priv->samr.domain_handle)) {
-		return;
-	}
-
-	rpccli_samr_Close(priv->samr.cli, ctx, handle);
-
-	ZERO_STRUCT(priv->samr.domain_handle);
-}
-
-/****************************************************************
-****************************************************************/
-
-void libnetapi_samr_close_builtin_handle(struct libnetapi_ctx *ctx,
-					 struct policy_handle *handle)
-{
-	struct libnetapi_private_ctx *priv;
-
-	if (!is_valid_policy_hnd(handle)) {
-		return;
-	}
-
-	priv = talloc_get_type_abort(ctx->private_data,
-		struct libnetapi_private_ctx);
-
-	if (!policy_hnd_equal(handle, &priv->samr.builtin_handle)) {
-		return;
-	}
-
-	rpccli_samr_Close(priv->samr.cli, ctx, handle);
-
-	ZERO_STRUCT(priv->samr.builtin_handle);
-}
-
-/****************************************************************
-****************************************************************/
-
-void libnetapi_samr_close_connect_handle(struct libnetapi_ctx *ctx,
-					 struct policy_handle *handle)
-{
-	struct libnetapi_private_ctx *priv;
-
-	if (!is_valid_policy_hnd(handle)) {
-		return;
-	}
-
-	priv = talloc_get_type_abort(ctx->private_data,
-		struct libnetapi_private_ctx);
-
-	if (!policy_hnd_equal(handle, &priv->samr.connect_handle)) {
-		return;
-	}
-
-	rpccli_samr_Close(priv->samr.cli, ctx, handle);
-
-	ZERO_STRUCT(priv->samr.connect_handle);
-}
-
-/****************************************************************
-****************************************************************/
-
-void libnetapi_samr_free(struct libnetapi_ctx *ctx)
-{
-	struct libnetapi_private_ctx *priv;
-
-	if (!ctx->private_data) {
-		return;
-	}
-
-	priv = talloc_get_type_abort(ctx->private_data,
-		struct libnetapi_private_ctx);
-
-	libnetapi_samr_close_domain_handle(ctx, &priv->samr.domain_handle);
-	libnetapi_samr_close_builtin_handle(ctx, &priv->samr.builtin_handle);
-	libnetapi_samr_close_connect_handle(ctx, &priv->samr.connect_handle);
-}

Modified: branches/samba/upstream/source/lib/netapi/serverinfo.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/serverinfo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/serverinfo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,29 +28,6 @@
 /****************************************************************
 ****************************************************************/
 
-static WERROR NetServerGetInfo_l_101(struct libnetapi_ctx *ctx,
-				     uint8_t **buffer)
-{
-	struct SERVER_INFO_101 i;
-
-	i.sv101_platform_id	= PLATFORM_ID_NT;
-	i.sv101_name		= global_myname();
-	i.sv101_version_major	= lp_major_announce_version();
-	i.sv101_version_minor	= lp_minor_announce_version();
-	i.sv101_type		= lp_default_server_announce();
-	i.sv101_comment		= lp_serverstring();
-
-	*buffer = (uint8_t *)talloc_memdup(ctx, &i, sizeof(i));
-	if (!*buffer) {
-		return WERR_NOMEM;
-	}
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
 static WERROR NetServerGetInfo_l_1005(struct libnetapi_ctx *ctx,
 				      uint8_t **buffer)
 {
@@ -72,8 +49,6 @@
 			  struct NetServerGetInfo *r)
 {
 	switch (r->in.level) {
-		case 101:
-			return NetServerGetInfo_l_101(ctx, r->out.buffer);
 		case 1005:
 			return NetServerGetInfo_l_1005(ctx, r->out.buffer);
 		default:
@@ -86,78 +61,6 @@
 /****************************************************************
 ****************************************************************/
 
-static NTSTATUS map_server_info_to_SERVER_INFO_buffer(TALLOC_CTX *mem_ctx,
-						      uint32_t level,
-						      union srvsvc_NetSrvInfo *i,
-						      uint8_t **buffer)
-{
-	struct SERVER_INFO_100 i100;
-	struct SERVER_INFO_101 i101;
-	struct SERVER_INFO_102 i102;
-	struct SERVER_INFO_1005 i1005;
-
-	uint32_t num_info = 0;
-
-	switch (level) {
-		case 100:
-			i100.sv100_platform_id		= i->info100->platform_id;
-			i100.sv100_name			= talloc_strdup(mem_ctx, i->info100->server_name);
-
-			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_100, i100,
-				     (struct SERVER_INFO_100 **)buffer,
-				     &num_info);
-			break;
-
-		case 101:
-			i101.sv101_platform_id		= i->info101->platform_id;
-			i101.sv101_name			= talloc_strdup(mem_ctx, i->info101->server_name);
-			i101.sv101_version_major	= i->info101->version_major;
-			i101.sv101_version_minor	= i->info101->version_minor;
-			i101.sv101_type			= i->info101->server_type;
-			i101.sv101_comment		= talloc_strdup(mem_ctx, i->info101->comment);
-
-			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_101, i101,
-				     (struct SERVER_INFO_101 **)buffer,
-				     &num_info);
-			break;
-
-		case 102:
-			i102.sv102_platform_id		= i->info102->platform_id;
-			i102.sv102_name			= talloc_strdup(mem_ctx, i->info102->server_name);
-			i102.sv102_version_major	= i->info102->version_major;
-			i102.sv102_version_minor	= i->info102->version_minor;
-			i102.sv102_type			= i->info102->server_type;
-			i102.sv102_comment		= talloc_strdup(mem_ctx, i->info102->comment);
-			i102.sv102_users		= i->info102->users;
-			i102.sv102_disc			= i->info102->disc;
-			i102.sv102_hidden		= i->info102->hidden;
-			i102.sv102_announce		= i->info102->announce;
-			i102.sv102_anndelta		= i->info102->anndelta;
-			i102.sv102_licenses		= i->info102->licenses;
-			i102.sv102_userpath		= talloc_strdup(mem_ctx, i->info102->userpath);
-
-			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_102, i102,
-				     (struct SERVER_INFO_102 **)buffer,
-				     &num_info);
-			break;
-
-		case 1005:
-			i1005.sv1005_comment		= talloc_strdup(mem_ctx, i->info1005->comment);
-
-			ADD_TO_ARRAY(mem_ctx, struct SERVER_INFO_1005, i1005,
-				     (struct SERVER_INFO_1005 **)buffer,
-				     &num_info);
-			break;
-		default:
-			return NT_STATUS_NOT_SUPPORTED;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
 WERROR NetServerGetInfo_r(struct libnetapi_ctx *ctx,
 			  struct NetServerGetInfo *r)
 {
@@ -167,24 +70,12 @@
 	WERROR werr;
 	union srvsvc_NetSrvInfo info;
 
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
 	}
 
-	switch (r->in.level) {
-		case 100:
-		case 101:
-		case 102:
-		case 1005:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_pipe(ctx, cli, PI_SRVSVC, &pipe_cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
@@ -199,10 +90,9 @@
 		goto done;
 	}
 
-	status = map_server_info_to_SERVER_INFO_buffer(ctx, r->in.level, &info,
-						       r->out.buffer);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
+	*r->out.buffer = (uint8_t *)talloc_memdup(ctx, &info, sizeof(info));
+	if (!*r->out.buffer) {
+		werr = WERR_NOMEM;
 		goto done;
 	}
 
@@ -280,14 +170,16 @@
 	WERROR werr;
 	union srvsvc_NetSrvInfo info;
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_SRVSVC, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
 	switch (r->in.level) {
 		case 1005:
 			info.info1005 = (struct srvsvc_NetSrvInfo1005 *)r->in.buffer;
@@ -311,50 +203,3 @@
  done:
 	return werr;
 }
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetRemoteTOD_r(struct libnetapi_ctx *ctx,
-		      struct NetRemoteTOD *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-	struct srvsvc_NetRemoteTODInfo *info = NULL;
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetRemoteTOD(pipe_cli, ctx,
-					    r->in.server_name,
-					    &info,
-					    &werr);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	*r->out.buffer = (uint8_t *)talloc_memdup(ctx, info,
-			  sizeof(struct srvsvc_NetRemoteTODInfo));
-	W_ERROR_HAVE_NO_MEMORY(*r->out.buffer);
-
- done:
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetRemoteTOD_l(struct libnetapi_ctx *ctx,
-		      struct NetRemoteTOD *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetRemoteTOD);
-}
-

Deleted: branches/samba/upstream/source/lib/netapi/share.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/share.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/share.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,555 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetApi Share Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#include "librpc/gen_ndr/libnetapi.h"
-#include "lib/netapi/netapi.h"
-#include "lib/netapi/netapi_private.h"
-#include "lib/netapi/libnetapi.h"
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS map_srvsvc_share_info_to_SHARE_INFO_buffer(TALLOC_CTX *mem_ctx,
-							   uint32_t level,
-							   union srvsvc_NetShareInfo *info,
-							   uint8_t **buffer,
-							   uint32_t *num_shares)
-{
-	struct SHARE_INFO_0 i0;
-	struct SHARE_INFO_1 i1;
-	struct SHARE_INFO_2 i2;
-	struct SHARE_INFO_501 i501;
-	struct SHARE_INFO_1005 i1005;
-
-	struct srvsvc_NetShareInfo0 *s0;
-	struct srvsvc_NetShareInfo1 *s1;
-	struct srvsvc_NetShareInfo2 *s2;
-	struct srvsvc_NetShareInfo501 *s501;
-	struct srvsvc_NetShareInfo1005 *s1005;
-
-	if (!buffer) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	switch (level) {
-		case 0:
-			s0 = info->info0;
-
-			i0.shi0_netname		= talloc_strdup(mem_ctx, s0->name);
-
-			ADD_TO_ARRAY(mem_ctx, struct SHARE_INFO_0, i0,
-				     (struct SHARE_INFO_0 **)buffer,
-				     num_shares);
-			break;
-
-		case 1:
-			s1 = info->info1;
-
-			i1.shi1_netname		= talloc_strdup(mem_ctx, s1->name);
-			i1.shi1_type		= s1->type;
-			i1.shi1_remark		= talloc_strdup(mem_ctx, s1->comment);
-
-			ADD_TO_ARRAY(mem_ctx, struct SHARE_INFO_1, i1,
-				     (struct SHARE_INFO_1 **)buffer,
-				     num_shares);
-			break;
-
-		case 2:
-			s2 = info->info2;
-
-			i2.shi2_netname		= talloc_strdup(mem_ctx, s2->name);
-			i2.shi2_type		= s2->type;
-			i2.shi2_remark		= talloc_strdup(mem_ctx, s2->comment);
-			i2.shi2_permissions	= s2->permissions;
-			i2.shi2_max_uses	= s2->max_users;
-			i2.shi2_current_uses	= s2->current_users;
-			i2.shi2_path		= talloc_strdup(mem_ctx, s2->path);
-			i2.shi2_passwd		= talloc_strdup(mem_ctx, s2->password);
-
-			ADD_TO_ARRAY(mem_ctx, struct SHARE_INFO_2, i2,
-				     (struct SHARE_INFO_2 **)buffer,
-				     num_shares);
-			break;
-
-		case 501:
-			s501 = info->info501;
-
-			i501.shi501_netname		= talloc_strdup(mem_ctx, s501->name);
-			i501.shi501_type		= s501->type;
-			i501.shi501_remark		= talloc_strdup(mem_ctx, s501->comment);
-			i501.shi501_flags		= s501->csc_policy;
-
-			ADD_TO_ARRAY(mem_ctx, struct SHARE_INFO_501, i501,
-				     (struct SHARE_INFO_501 **)buffer,
-				     num_shares);
-			break;
-
-		case 1005:
-			s1005 = info->info1005;
-
-			i1005.shi1005_flags		= s1005->dfs_flags;
-
-			ADD_TO_ARRAY(mem_ctx, struct SHARE_INFO_1005, i1005,
-				     (struct SHARE_INFO_1005 **)buffer,
-				     num_shares);
-			break;
-
-		default:
-			return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS map_SHARE_INFO_buffer_to_srvsvc_share_info(TALLOC_CTX *mem_ctx,
-							   uint8_t *buffer,
-							   uint32_t level,
-							   union srvsvc_NetShareInfo *info)
-{
-	struct SHARE_INFO_2 *i2 = NULL;
-	struct SHARE_INFO_1004 *i1004 = NULL;
-	struct srvsvc_NetShareInfo2 *s2 = NULL;
-	struct srvsvc_NetShareInfo1004 *s1004 = NULL;
-
-	if (!buffer) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	switch (level) {
-		case 2:
-			i2 = (struct SHARE_INFO_2 *)buffer;
-
-			s2 = TALLOC_P(mem_ctx, struct srvsvc_NetShareInfo2);
-			NT_STATUS_HAVE_NO_MEMORY(s2);
-
-			s2->name		= i2->shi2_netname;
-			s2->type		= i2->shi2_type;
-			s2->comment		= i2->shi2_remark;
-			s2->permissions		= i2->shi2_permissions;
-			s2->max_users		= i2->shi2_max_uses;
-			s2->current_users	= i2->shi2_current_uses;
-			s2->path		= i2->shi2_path;
-			s2->password		= i2->shi2_passwd;
-
-			info->info2 = s2;
-
-			break;
-		case 1004:
-			i1004 = (struct SHARE_INFO_1004 *)buffer;
-
-			s1004 = TALLOC_P(mem_ctx, struct srvsvc_NetShareInfo1004);
-			NT_STATUS_HAVE_NO_MEMORY(s1004);
-
-			s1004->comment		= i1004->shi1004_remark;
-
-			info->info1004 = s1004;
-
-			break;
-		default:
-			return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareAdd_r(struct libnetapi_ctx *ctx,
-		     struct NetShareAdd *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	union srvsvc_NetShareInfo info;
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 2:
-			break;
-		case 502:
-		case 503:
-			return WERR_NOT_SUPPORTED;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = map_SHARE_INFO_buffer_to_srvsvc_share_info(ctx,
-							    r->in.buffer,
-							    r->in.level,
-							    &info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetShareAdd(pipe_cli, ctx,
-					   r->in.server_name,
-					   r->in.level,
-					   &info,
-					   r->out.parm_err,
-					   &werr);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareAdd_l(struct libnetapi_ctx *ctx,
-		     struct NetShareAdd *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareAdd);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareDel_r(struct libnetapi_ctx *ctx,
-		     struct NetShareDel *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-
-	if (!r->in.net_name) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetShareDel(pipe_cli, ctx,
-					   r->in.server_name,
-					   r->in.net_name,
-					   r->in.reserved,
-					   &werr);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareDel_l(struct libnetapi_ctx *ctx,
-		     struct NetShareDel *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareDel);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareEnum_r(struct libnetapi_ctx *ctx,
-		      struct NetShareEnum *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct srvsvc_NetShareInfoCtr info_ctr;
-	struct srvsvc_NetShareCtr0 ctr0;
-	struct srvsvc_NetShareCtr1 ctr1;
-	struct srvsvc_NetShareCtr2 ctr2;
-	uint32_t i;
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-		case 2:
-			break;
-		case 502:
-		case 503:
-			return WERR_NOT_SUPPORTED;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	ZERO_STRUCT(info_ctr);
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	info_ctr.level = r->in.level;
-	switch (r->in.level) {
-		case 0:
-			ZERO_STRUCT(ctr0);
-			info_ctr.ctr.ctr0 = &ctr0;
-			break;
-		case 1:
-			ZERO_STRUCT(ctr1);
-			info_ctr.ctr.ctr1 = &ctr1;
-			break;
-		case 2:
-			ZERO_STRUCT(ctr2);
-			info_ctr.ctr.ctr2 = &ctr2;
-			break;
-	}
-
-	status = rpccli_srvsvc_NetShareEnumAll(pipe_cli, ctx,
-					       r->in.server_name,
-					       &info_ctr,
-					       r->in.prefmaxlen,
-					       r->out.total_entries,
-					       r->out.resume_handle,
-					       &werr);
-	if (NT_STATUS_IS_ERR(status)) {
-		goto done;
-	}
-
-	for (i=0; i < info_ctr.ctr.ctr1->count; i++) {
-		union srvsvc_NetShareInfo _i;
-		switch (r->in.level) {
-			case 0:
-				_i.info0 = &info_ctr.ctr.ctr0->array[i];
-				break;
-			case 1:
-				_i.info1 = &info_ctr.ctr.ctr1->array[i];
-				break;
-			case 2:
-				_i.info2 = &info_ctr.ctr.ctr2->array[i];
-				break;
-		}
-
-		status = map_srvsvc_share_info_to_SHARE_INFO_buffer(ctx,
-								    r->in.level,
-								    &_i,
-								    r->out.buffer,
-								    r->out.entries_read);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-		}
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareEnum_l(struct libnetapi_ctx *ctx,
-		      struct NetShareEnum *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareEnum);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareGetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetShareGetInfo *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	union srvsvc_NetShareInfo info;
-	uint32_t num_entries = 0;
-
-	if (!r->in.net_name || !r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-		case 2:
-		case 501:
-		case 1005:
-			break;
-		case 502:
-		case 503:
-			return WERR_NOT_SUPPORTED;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetShareGetInfo(pipe_cli, ctx,
-					       r->in.server_name,
-					       r->in.net_name,
-					       r->in.level,
-					       &info,
-					       &werr);
-
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = map_srvsvc_share_info_to_SHARE_INFO_buffer(ctx,
-							    r->in.level,
-							    &info,
-							    r->out.buffer,
-							    &num_entries);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareGetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetShareGetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareGetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareSetInfo_r(struct libnetapi_ctx *ctx,
-			 struct NetShareSetInfo *r)
-{
-	WERROR werr;
-	NTSTATUS status;
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	union srvsvc_NetShareInfo info;
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 2:
-		case 1004:
-			break;
-		case 1:
-		case 502:
-		case 503:
-		case 1005:
-		case 1006:
-		case 1501:
-			return WERR_NOT_SUPPORTED;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_srvsvc.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = map_SHARE_INFO_buffer_to_srvsvc_share_info(ctx,
-							    r->in.buffer,
-							    r->in.level,
-							    &info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_srvsvc_NetShareSetInfo(pipe_cli, ctx,
-					       r->in.server_name,
-					       r->in.net_name,
-					       r->in.level,
-					       &info,
-					       r->out.parm_err,
-					       &werr);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetShareSetInfo_l(struct libnetapi_ctx *ctx,
-			 struct NetShareSetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareSetInfo);
-}

Deleted: branches/samba/upstream/source/lib/netapi/sid.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/sid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/sid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,76 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  NetApi Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#include "lib/netapi/netapi.h"
-
-/****************************************************************
-****************************************************************/
-
-int ConvertSidToStringSid(const struct domsid *sid,
-			  char **sid_string)
-{
-	char *ret;
-
-	if (!sid || !sid_string) {
-		return false;
-	}
-
-	ret = sid_string_talloc(NULL, (const struct dom_sid *)sid);
-	if (!ret) {
-		return false;
-	}
-
-	*sid_string = SMB_STRDUP(ret);
-
-	TALLOC_FREE(ret);
-
-	if (!*sid_string) {
-		return false;
-	}
-
-	return true;
-}
-
-/****************************************************************
-****************************************************************/
-
-int ConvertStringSidToSid(const char *sid_string,
-			  struct domsid **sid)
-{
-	struct dom_sid _sid;
-
-	if (!sid_string || !sid) {
-		return false;
-	}
-
-	if (!string_to_sid(&_sid, sid_string)) {
-		return false;
-	}
-
-	*sid = (struct domsid *)SMB_MALLOC(sizeof(struct domsid));
-	if (!*sid) {
-		return false;
-	}
-
-	sid_copy((struct dom_sid*)*sid, &_sid);
-
-	return true;
-}

Modified: branches/samba/upstream/source/lib/netapi/user.c
===================================================================
--- branches/samba/upstream/source/lib/netapi/user.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/netapi/user.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,283 +27,102 @@
 /****************************************************************
 ****************************************************************/
 
-static void convert_USER_INFO_X_to_samr_user_info21(struct USER_INFO_X *infoX,
-						    struct samr_UserInfo21 *info21)
+static void convert_USER_INFO_1_to_samr_user_info25(struct USER_INFO_1 *info1,
+						    DATA_BLOB *user_session_key,
+						    struct samr_UserInfo25 *info25)
 {
-	uint32_t fields_present = 0;
+	uint32_t fields_present = SAMR_FIELD_ACCT_FLAGS;
 	struct samr_LogonHours zero_logon_hours;
 	struct lsa_BinaryString zero_parameters;
+	uint32_t acct_flags = 0;
 	NTTIME password_age;
 
-	ZERO_STRUCTP(info21);
+	ZERO_STRUCTP(info25);
 	ZERO_STRUCT(zero_logon_hours);
 	ZERO_STRUCT(zero_parameters);
 
-	if (infoX->usriX_flags) {
-		fields_present |= SAMR_FIELD_ACCT_FLAGS;
+	if (info1->usri1_name) {
+		fields_present |= SAMR_FIELD_FULL_NAME;
 	}
-	if (infoX->usriX_name) {
-		fields_present |= SAMR_FIELD_ACCOUNT_NAME;
-	}
-	if (infoX->usriX_password) {
+	if (info1->usri1_password) {
 		fields_present |= SAMR_FIELD_PASSWORD;
 	}
-	if (infoX->usriX_flags) {
+	if (info1->usri1_flags) {
 		fields_present |= SAMR_FIELD_ACCT_FLAGS;
 	}
-	if (infoX->usriX_name) {
+	if (info1->usri1_name) {
 		fields_present |= SAMR_FIELD_FULL_NAME;
 	}
-	if (infoX->usriX_home_dir) {
+	if (info1->usri1_home_dir) {
 		fields_present |= SAMR_FIELD_HOME_DIRECTORY;
 	}
-	if (infoX->usriX_script_path) {
+	if (info1->usri1_script_path) {
 		fields_present |= SAMR_FIELD_LOGON_SCRIPT;
 	}
-	if (infoX->usriX_comment) {
+	if (info1->usri1_comment) {
 		fields_present |= SAMR_FIELD_DESCRIPTION;
 	}
-	if (infoX->usriX_password_age) {
+	if (info1->usri1_password_age) {
 		fields_present |= SAMR_FIELD_FORCE_PWD_CHANGE;
 	}
-	if (infoX->usriX_full_name) {
-		fields_present |= SAMR_FIELD_FULL_NAME;
-	}
-	if (infoX->usriX_usr_comment) {
-		fields_present |= SAMR_FIELD_COMMENT;
-	}
-	if (infoX->usriX_profile) {
-		fields_present |= SAMR_FIELD_PROFILE_PATH;
-	}
-	if (infoX->usriX_home_dir_drive) {
-		fields_present |= SAMR_FIELD_HOME_DRIVE;
-	}
-	if (infoX->usriX_primary_group_id) {
-		fields_present |= SAMR_FIELD_PRIMARY_GID;
-	}
-	if (infoX->usriX_country_code) {
-		fields_present |= SAMR_FIELD_COUNTRY_CODE;
-	}
-	if (infoX->usriX_workstations) {
-		fields_present |= SAMR_FIELD_WORKSTATIONS;
-	}
 
-	unix_to_nt_time_abs(&password_age, infoX->usriX_password_age);
+	acct_flags |= info1->usri1_flags | ACB_NORMAL;
 
-	/* TODO: infoX->usriX_priv */
-	init_samr_user_info21(info21,
+	unix_to_nt_time_abs(&password_age, info1->usri1_password_age);
+
+	/* TODO: info1->usri1_priv */
+	init_samr_user_info21(&info25->info,
 			      0,
 			      0,
 			      0,
 			      0,
 			      0,
 			      password_age,
-			      infoX->usriX_name,
-			      infoX->usriX_full_name,
-			      infoX->usriX_home_dir,
-			      infoX->usriX_home_dir_drive,
-			      infoX->usriX_script_path,
-			      infoX->usriX_profile,
-			      infoX->usriX_comment,
-			      infoX->usriX_workstations,
-			      infoX->usriX_usr_comment,
+			      NULL,
+			      info1->usri1_name,
+			      info1->usri1_home_dir,
+			      NULL,
+			      info1->usri1_script_path,
+			      NULL,
+			      info1->usri1_comment,
+			      NULL,
+			      NULL,
 			      &zero_parameters,
 			      0,
-			      infoX->usriX_primary_group_id,
-			      infoX->usriX_flags,
+			      0,
+			      acct_flags,
 			      fields_present,
 			      zero_logon_hours,
 			      0,
 			      0,
-			      infoX->usriX_country_code,
 			      0,
 			      0,
 			      0,
+			      0,
 			      0);
-}
 
-/****************************************************************
-****************************************************************/
+	if (info1->usri1_password) {
+		uchar pwbuf[532];
+		struct MD5Context ctx;
+		uint8_t confounder[16];
+		DATA_BLOB confounded_session_key = data_blob(NULL, 16);
 
-static NTSTATUS construct_USER_INFO_X(uint32_t level,
-				      uint8_t *buffer,
-				      struct USER_INFO_X *uX)
-{
-	struct USER_INFO_0 *u0 = NULL;
-	struct USER_INFO_1 *u1 = NULL;
-	struct USER_INFO_2 *u2 = NULL;
-	struct USER_INFO_1003 *u1003 = NULL;
-	struct USER_INFO_1006 *u1006 = NULL;
-	struct USER_INFO_1007 *u1007 = NULL;
-	struct USER_INFO_1009 *u1009 = NULL;
-	struct USER_INFO_1011 *u1011 = NULL;
-	struct USER_INFO_1012 *u1012 = NULL;
-	struct USER_INFO_1014 *u1014 = NULL;
-	struct USER_INFO_1024 *u1024 = NULL;
-	struct USER_INFO_1051 *u1051 = NULL;
-	struct USER_INFO_1052 *u1052 = NULL;
-	struct USER_INFO_1053 *u1053 = NULL;
+		encode_pw_buffer(pwbuf, info1->usri1_password, STR_UNICODE);
 
-	if (!buffer || !uX) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
+		generate_random_buffer((uint8_t *)confounder, 16);
 
-	ZERO_STRUCTP(uX);
+		MD5Init(&ctx);
+		MD5Update(&ctx, confounder, 16);
+		MD5Update(&ctx, user_session_key->data,
+				user_session_key->length);
+		MD5Final(confounded_session_key.data, &ctx);
 
-	switch (level) {
-		case 0:
-			u0 = (struct USER_INFO_0 *)buffer;
-			uX->usriX_name		= u0->usri0_name;
-			break;
-		case 1:
-			u1 = (struct USER_INFO_1 *)buffer;
-			uX->usriX_name		= u1->usri1_name;
-			uX->usriX_password	= u1->usri1_password;
-			uX->usriX_password_age	= u1->usri1_password_age;
-			uX->usriX_priv		= u1->usri1_priv;
-			uX->usriX_home_dir	= u1->usri1_home_dir;
-			uX->usriX_comment	= u1->usri1_comment;
-			uX->usriX_flags		= u1->usri1_flags;
-			uX->usriX_script_path	= u1->usri1_script_path;
-			break;
-		case 2:
-			u2 = (struct USER_INFO_2 *)buffer;
-			uX->usriX_name		= u2->usri2_name;
-			uX->usriX_password	= u2->usri2_password;
-			uX->usriX_password_age	= u2->usri2_password_age;
-			uX->usriX_priv		= u2->usri2_priv;
-			uX->usriX_home_dir	= u2->usri2_home_dir;
-			uX->usriX_comment	= u2->usri2_comment;
-			uX->usriX_flags		= u2->usri2_flags;
-			uX->usriX_script_path	= u2->usri2_script_path;
-			uX->usriX_auth_flags	= u2->usri2_auth_flags;
-			uX->usriX_full_name	= u2->usri2_full_name;
-			uX->usriX_usr_comment	= u2->usri2_usr_comment;
-			uX->usriX_parms		= u2->usri2_parms;
-			uX->usriX_workstations	= u2->usri2_workstations;
-			uX->usriX_last_logon	= u2->usri2_last_logon;
-			uX->usriX_last_logoff	= u2->usri2_last_logoff;
-			uX->usriX_acct_expires	= u2->usri2_acct_expires;
-			uX->usriX_max_storage	= u2->usri2_max_storage;
-			uX->usriX_units_per_week= u2->usri2_units_per_week;
-			uX->usriX_logon_hours	= u2->usri2_logon_hours;
-			uX->usriX_bad_pw_count	= u2->usri2_bad_pw_count;
-			uX->usriX_num_logons	= u2->usri2_num_logons;
-			uX->usriX_logon_server	= u2->usri2_logon_server;
-			uX->usriX_country_code	= u2->usri2_country_code;
-			uX->usriX_code_page	= u2->usri2_code_page;
-			break;
-		case 1003:
-			u1003 = (struct USER_INFO_1003 *)buffer;
-			uX->usriX_password	= u1003->usri1003_password;
-			break;
-		case 1006:
-			u1006 = (struct USER_INFO_1006 *)buffer;
-			uX->usriX_home_dir	= u1006->usri1006_home_dir;
-			break;
-		case 1007:
-			u1007 = (struct USER_INFO_1007 *)buffer;
-			uX->usriX_comment	= u1007->usri1007_comment;
-			break;
-		case 1009:
-			u1009 = (struct USER_INFO_1009 *)buffer;
-			uX->usriX_script_path	= u1009->usri1009_script_path;
-			break;
-		case 1011:
-			u1011 = (struct USER_INFO_1011 *)buffer;
-			uX->usriX_full_name	= u1011->usri1011_full_name;
-			break;
-		case 1012:
-			u1012 = (struct USER_INFO_1012 *)buffer;
-			uX->usriX_usr_comment	= u1012->usri1012_usr_comment;
-			break;
-		case 1014:
-			u1014 = (struct USER_INFO_1014 *)buffer;
-			uX->usriX_workstations	= u1014->usri1014_workstations;
-			break;
-		case 1024:
-			u1024 = (struct USER_INFO_1024 *)buffer;
-			uX->usriX_country_code	= u1024->usri1024_country_code;
-			break;
-		case 1051:
-			u1051 = (struct USER_INFO_1051 *)buffer;
-			uX->usriX_primary_group_id = u1051->usri1051_primary_group_id;
-			break;
-		case 1052:
-			u1052 = (struct USER_INFO_1052 *)buffer;
-			uX->usriX_profile	= u1052->usri1052_profile;
-			break;
-		case 1053:
-			u1053 = (struct USER_INFO_1053 *)buffer;
-			uX->usriX_home_dir_drive = u1053->usri1053_home_dir_drive;
-			break;
-		case 3:
-		case 4:
-		default:
-			return NT_STATUS_INVALID_INFO_CLASS;
-	}
+		SamOEMhashBlob(pwbuf, 516, &confounded_session_key);
+		memcpy(&pwbuf[516], confounder, 16);
 
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_user_info_USER_INFO_X(TALLOC_CTX *ctx,
-					  struct rpc_pipe_client *pipe_cli,
-					  DATA_BLOB *session_key,
-					  struct policy_handle *user_handle,
-					  struct USER_INFO_X *uX)
-{
-	union samr_UserInfo user_info;
-	struct samr_UserInfo21 info21;
-	NTSTATUS status;
-
-	if (!uX) {
-		return NT_STATUS_INVALID_PARAMETER;
+		memcpy(info25->password.data, pwbuf, sizeof(pwbuf));
+		data_blob_free(&confounded_session_key);
 	}
-
-	convert_USER_INFO_X_to_samr_user_info21(uX, &info21);
-
-	ZERO_STRUCT(user_info);
-
-	if (uX->usriX_password) {
-
-		user_info.info25.info = info21;
-
-		init_samr_CryptPasswordEx(uX->usriX_password,
-					  session_key,
-					  &user_info.info25.password);
-
-		status = rpccli_samr_SetUserInfo2(pipe_cli, ctx,
-						  user_handle,
-						  25,
-						  &user_info);
-
-		if (NT_STATUS_EQUAL(status, NT_STATUS(DCERPC_FAULT_INVALID_TAG))) {
-
-			user_info.info23.info = info21;
-
-			init_samr_CryptPassword(uX->usriX_password,
-						session_key,
-						&user_info.info23.password);
-
-			status = rpccli_samr_SetUserInfo2(pipe_cli, ctx,
-							  user_handle,
-							  23,
-							  &user_info);
-		}
-	} else {
-
-		user_info.info21 = info21;
-
-		status = rpccli_samr_SetUserInfo(pipe_cli, ctx,
-						 user_handle,
-						 21,
-						 &user_info);
-	}
-
-	return status;
 }
 
 /****************************************************************
@@ -316,14 +135,21 @@
 	struct rpc_pipe_client *pipe_cli = NULL;
 	NTSTATUS status;
 	WERROR werr;
+	uint32_t resume_handle = 0;
+	uint32_t num_entries = 0;
 	POLICY_HND connect_handle, domain_handle, user_handle;
-	struct lsa_String lsa_account_name;
+	struct samr_SamArray *sam = NULL;
+	const char *domain_name = NULL;
+	struct lsa_String lsa_domain_name, lsa_account_name;
 	struct dom_sid2 *domain_sid = NULL;
+	struct samr_UserInfo25 info25;
 	union samr_UserInfo *user_info = NULL;
 	struct samr_PwInfo pw_info;
 	uint32_t access_granted = 0;
 	uint32_t rid = 0;
-	struct USER_INFO_X uX;
+	bool domain_found = true;
+	int i;
+	struct USER_INFO_1 *info1;
 
 	ZERO_STRUCT(connect_handle);
 	ZERO_STRUCT(domain_handle);
@@ -335,6 +161,7 @@
 
 	switch (r->in.level) {
 		case 1:
+			info1 = (struct USER_INFO_1 *)r->in.buffer;
 			break;
 		case 2:
 		case 3:
@@ -344,35 +171,78 @@
 			goto done;
 	}
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	status = construct_USER_INFO_X(r->in.level, r->in.buffer, &uX);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
+	werr = libnetapi_open_pipe(ctx, cli, PI_SAMR, &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
+	status = rpccli_try_samr_connects(pipe_cli, ctx,
 					  SAMR_ACCESS_ENUM_DOMAINS |
 					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
-					  SAMR_DOMAIN_ACCESS_CREATE_USER |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+					  &connect_handle);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	status = rpccli_samr_EnumDomains(pipe_cli, ctx,
+					 &connect_handle,
+					 &resume_handle,
+					 &sam,
+					 0xffffffff,
+					 &num_entries);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	for (i=0; i<num_entries; i++) {
+
+		domain_name = sam->entries[i].name.string;
+
+		if (strequal(domain_name, builtin_domain_name())) {
+			continue;
+		}
+
+		domain_found = true;
+		break;
+	}
+
+	if (!domain_found) {
+		werr = WERR_NO_SUCH_DOMAIN;
+		goto done;
+	}
+
+	init_lsa_String(&lsa_domain_name, domain_name);
+
+	status = rpccli_samr_LookupDomain(pipe_cli, ctx,
 					  &connect_handle,
-					  &domain_handle,
+					  &lsa_domain_name,
 					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	init_lsa_String(&lsa_account_name, uX.usriX_name);
+	status = rpccli_samr_OpenDomain(pipe_cli, ctx,
+					&connect_handle,
+					SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
+					SAMR_DOMAIN_ACCESS_CREATE_USER |
+					SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+					domain_sid,
+					&domain_handle);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
 
+	init_lsa_String(&lsa_account_name, info1->usri1_name);
+
 	status = rpccli_samr_CreateUser2(pipe_cli, ctx,
 					 &domain_handle,
 					 &lsa_account_name,
@@ -412,12 +282,26 @@
 		goto done;
 	}
 
-	uX.usriX_flags |= ACB_NORMAL;
+	ZERO_STRUCTP(user_info);
 
-	status = set_user_info_USER_INFO_X(ctx, pipe_cli,
-					   &cli->user_session_key,
-					   &user_handle,
-					   &uX);
+	convert_USER_INFO_1_to_samr_user_info25(info1,
+						&cli->user_session_key,
+						&info25);
+
+	if (info1->usri1_password) {
+		user_info->info25 = info25;
+		status = rpccli_samr_SetUserInfo2(pipe_cli, ctx,
+						  &user_handle,
+						  25,
+						  user_info);
+	} else {
+		user_info->info21 = info25.info;
+		status = rpccli_samr_SetUserInfo(pipe_cli, ctx,
+						 &user_handle,
+						 21,
+						 user_info);
+
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		werr = ntstatus_to_werror(status);
 		goto failed;
@@ -438,11 +322,12 @@
 	if (is_valid_policy_hnd(&user_handle)) {
 		rpccli_samr_Close(pipe_cli, ctx, &user_handle);
 	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
+	if (is_valid_policy_hnd(&domain_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &domain_handle);
 	}
+	if (is_valid_policy_hnd(&connect_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &connect_handle);
+	}
 
 	return werr;
 }
@@ -453,7 +338,12 @@
 WERROR NetUserAdd_l(struct libnetapi_ctx *ctx,
 		    struct NetUserAdd *r)
 {
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserAdd);
+	/* for now just talk to local RPC server */
+	if (!r->in.server_name) {
+		r->in.server_name = "localhost";
+	}
+
+	return NetUserAdd_r(ctx, r);
 }
 
 /****************************************************************
@@ -466,40 +356,94 @@
 	struct rpc_pipe_client *pipe_cli = NULL;
 	NTSTATUS status;
 	WERROR werr;
+	uint32_t resume_handle = 0;
+	uint32_t num_entries = 0;
 	POLICY_HND connect_handle, builtin_handle, domain_handle, user_handle;
-	struct lsa_String lsa_account_name;
+	struct samr_SamArray *sam = NULL;
+	const char *domain_name = NULL;
+	struct lsa_String lsa_domain_name, lsa_account_name;
 	struct samr_Ids user_rids, name_types;
 	struct dom_sid2 *domain_sid = NULL;
 	struct dom_sid2 user_sid;
+	bool domain_found = true;
+	int i;
 
 	ZERO_STRUCT(connect_handle);
 	ZERO_STRUCT(builtin_handle);
 	ZERO_STRUCT(domain_handle);
 	ZERO_STRUCT(user_handle);
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
 
+	werr = libnetapi_open_pipe(ctx, cli, PI_SAMR, &pipe_cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
+	status = rpccli_try_samr_connects(pipe_cli, ctx,
 					  SAMR_ACCESS_ENUM_DOMAINS |
 					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+					  &connect_handle);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	status = rpccli_samr_EnumDomains(pipe_cli, ctx,
+					 &connect_handle,
+					 &resume_handle,
+					 &sam,
+					 0xffffffff,
+					 &num_entries);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	for (i=0; i<num_entries; i++) {
+
+		domain_name = sam->entries[i].name.string;
+
+		if (strequal(domain_name, builtin_domain_name())) {
+			continue;
+		}
+
+		domain_found = true;
+		break;
+	}
+
+	if (!domain_found) {
+		werr = WERR_NO_SUCH_DOMAIN;
+		goto done;
+	}
+
+	init_lsa_String(&lsa_domain_name, domain_name);
+
+	status = rpccli_samr_LookupDomain(pipe_cli, ctx,
 					  &connect_handle,
-					  &domain_handle,
+					  &lsa_domain_name,
 					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
 	status = rpccli_samr_OpenDomain(pipe_cli, ctx,
 					&connect_handle,
 					SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+					domain_sid,
+					&domain_handle);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	status = rpccli_samr_OpenDomain(pipe_cli, ctx,
+					&connect_handle,
+					SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
 					CONST_DISCARD(DOM_SID *, &global_sid_Builtin),
 					&builtin_handle);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -557,12 +501,15 @@
 	if (is_valid_policy_hnd(&user_handle)) {
 		rpccli_samr_Close(pipe_cli, ctx, &user_handle);
 	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
+	if (is_valid_policy_hnd(&builtin_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &builtin_handle);
 	}
+	if (is_valid_policy_hnd(&domain_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &domain_handle);
+	}
+	if (is_valid_policy_hnd(&connect_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &connect_handle);
+	}
 
 	return werr;
 }
@@ -573,576 +520,46 @@
 WERROR NetUserDel_l(struct libnetapi_ctx *ctx,
 		    struct NetUserDel *r)
 {
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserDel);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnetapi_samr_lookup_user(TALLOC_CTX *mem_ctx,
-					   struct rpc_pipe_client *pipe_cli,
-					   struct policy_handle *domain_handle,
-					   struct policy_handle *builtin_handle,
-					   const char *user_name,
-					   const struct dom_sid *domain_sid,
-					   uint32_t rid,
-					   uint32_t level,
-					   struct samr_UserInfo21 **info21,
-					   struct sec_desc_buf **sec_desc,
-					   uint32_t *auth_flag_p)
-{
-	NTSTATUS status;
-
-	struct policy_handle user_handle;
-	union samr_UserInfo *user_info = NULL;
-	struct samr_RidWithAttributeArray *rid_array = NULL;
-	uint32_t access_mask = SEC_STD_READ_CONTROL |
-			       SAMR_USER_ACCESS_GET_ATTRIBUTES |
-			       SAMR_USER_ACCESS_GET_NAME_ETC;
-
-	ZERO_STRUCT(user_handle);
-
-	switch (level) {
-		case 0:
-			break;
-		case 1:
-			access_mask |= SAMR_USER_ACCESS_GET_LOGONINFO |
-				       SAMR_USER_ACCESS_GET_GROUPS;
-			break;
-		case 2:
-		case 3:
-		case 4:
-		case 11:
-			access_mask |= SAMR_USER_ACCESS_GET_LOGONINFO |
-				       SAMR_USER_ACCESS_GET_GROUPS |
-				       SAMR_USER_ACCESS_GET_LOCALE;
-			break;
-		case 10:
-		case 20:
-		case 23:
-			break;
-		default:
-			return NT_STATUS_INVALID_LEVEL;
+	/* for now just talk to local RPC server */
+	if (!r->in.server_name) {
+		r->in.server_name = "localhost";
 	}
 
-	if (level == 0) {
-		return NT_STATUS_OK;
-	}
-
-	status = rpccli_samr_OpenUser(pipe_cli, mem_ctx,
-				      domain_handle,
-				      access_mask,
-				      rid,
-				      &user_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	status = rpccli_samr_QueryUserInfo(pipe_cli, mem_ctx,
-					   &user_handle,
-					   21,
-					   &user_info);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	status = rpccli_samr_QuerySecurity(pipe_cli, mem_ctx,
-					   &user_handle,
-					   SECINFO_DACL,
-					   sec_desc);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	if (access_mask & SAMR_USER_ACCESS_GET_GROUPS) {
-
-		struct lsa_SidArray sid_array;
-		struct samr_Ids alias_rids;
-		int i;
-		uint32_t auth_flag = 0;
-		struct dom_sid sid;
-
-		status = rpccli_samr_GetGroupsForUser(pipe_cli, mem_ctx,
-						      &user_handle,
-						      &rid_array);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto done;
-		}
-
-		sid_array.num_sids = rid_array->count + 1;
-		sid_array.sids = talloc_array(mem_ctx, struct lsa_SidPtr,
-					      sid_array.num_sids);
-		NT_STATUS_HAVE_NO_MEMORY(sid_array.sids);
-
-		for (i=0; i<rid_array->count; i++) {
-			sid_compose(&sid, domain_sid, rid_array->rids[i].rid);
-			sid_array.sids[i].sid = sid_dup_talloc(mem_ctx, &sid);
-			NT_STATUS_HAVE_NO_MEMORY(sid_array.sids[i].sid);
-		}
-
-		sid_compose(&sid, domain_sid, rid);
-		sid_array.sids[i].sid = sid_dup_talloc(mem_ctx, &sid);
-		NT_STATUS_HAVE_NO_MEMORY(sid_array.sids[i].sid);
-
-		status = rpccli_samr_GetAliasMembership(pipe_cli, mem_ctx,
-							builtin_handle,
-							&sid_array,
-							&alias_rids);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto done;
-		}
-
-		for (i=0; i<alias_rids.count; i++) {
-			switch (alias_rids.ids[i]) {
-				case 550: /* Print Operators */
-					auth_flag |= AF_OP_PRINT;
-					break;
-				case 549: /* Server Operators */
-					auth_flag |= AF_OP_SERVER;
-					break;
-				case 548: /* Account Operators */
-					auth_flag |= AF_OP_ACCOUNTS;
-					break;
-				default:
-					break;
-			}
-		}
-
-		if (auth_flag_p) {
-			*auth_flag_p = auth_flag;
-		}
-	}
-
-	*info21 = &user_info->info21;
-
- done:
-	if (is_valid_policy_hnd(&user_handle)) {
-		rpccli_samr_Close(pipe_cli, mem_ctx, &user_handle);
-	}
-
-	return status;
+	return NetUserDel_r(ctx, r);
 }
 
 /****************************************************************
 ****************************************************************/
 
-static uint32_t samr_rid_to_priv_level(uint32_t rid)
+static WERROR convert_samr_samarray_to_USER_INFO_buffer(TALLOC_CTX *mem_ctx,
+							struct samr_SamArray *sam_array,
+							uint32_t level,
+							uint8_t **buffer)
 {
-	switch (rid) {
-		case DOMAIN_RID_ADMINISTRATOR:
-			return USER_PRIV_ADMIN;
-		case DOMAIN_RID_GUEST:
-			return USER_PRIV_GUEST;
-		default:
-			return USER_PRIV_USER;
-	}
-}
+	struct USER_INFO_0 *info0 = NULL;
+	int i;
 
-/****************************************************************
-****************************************************************/
-
-static uint32_t samr_acb_flags_to_netapi_flags(uint32_t acb)
-{
-	uint32_t fl = UF_SCRIPT; /* god knows why */
-
-	fl |= ads_acb2uf(acb);
-
-	return fl;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_1(TALLOC_CTX *mem_ctx,
-				      const struct samr_UserInfo21 *i21,
-				      struct USER_INFO_1 *i)
-{
-	ZERO_STRUCTP(i);
-	i->usri1_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri1_name);
-	i->usri1_password	= NULL;
-	i->usri1_password_age	= time(NULL) - nt_time_to_unix(i21->last_password_change);
-	i->usri1_priv		= samr_rid_to_priv_level(i21->rid);
-	i->usri1_home_dir	= talloc_strdup(mem_ctx, i21->home_directory.string);
-	i->usri1_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri1_flags		= samr_acb_flags_to_netapi_flags(i21->acct_flags);
-	i->usri1_script_path	= talloc_strdup(mem_ctx, i21->logon_script.string);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_2(TALLOC_CTX *mem_ctx,
-				      const struct samr_UserInfo21 *i21,
-				      uint32_t auth_flag,
-				      struct USER_INFO_2 *i)
-{
-	ZERO_STRUCTP(i);
-
-	i->usri2_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri2_name);
-	i->usri2_password	= NULL;
-	i->usri2_password_age	= time(NULL) - nt_time_to_unix(i21->last_password_change);
-	i->usri2_priv		= samr_rid_to_priv_level(i21->rid);
-	i->usri2_home_dir	= talloc_strdup(mem_ctx, i21->home_directory.string);
-	i->usri2_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri2_flags		= samr_acb_flags_to_netapi_flags(i21->acct_flags);
-	i->usri2_script_path	= talloc_strdup(mem_ctx, i21->logon_script.string);
-	i->usri2_auth_flags	= auth_flag;
-	i->usri2_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri2_usr_comment	= talloc_strdup(mem_ctx, i21->comment.string);
-	i->usri2_parms		= talloc_strndup(mem_ctx, (const char *)i21->parameters.array, i21->parameters.size/2);
-	i->usri2_workstations	= talloc_strdup(mem_ctx, i21->workstations.string);
-	i->usri2_last_logon	= nt_time_to_unix(i21->last_logon);
-	i->usri2_last_logoff	= nt_time_to_unix(i21->last_logoff);
-	i->usri2_acct_expires	= nt_time_to_unix(i21->acct_expiry);
-	i->usri2_max_storage	= USER_MAXSTORAGE_UNLIMITED; /* FIXME */
-	i->usri2_units_per_week	= i21->logon_hours.units_per_week;
-	i->usri2_logon_hours	= (uint8_t *)talloc_memdup(mem_ctx, i21->logon_hours.bits, 21);
-	i->usri2_bad_pw_count	= i21->bad_password_count;
-	i->usri2_num_logons	= i21->logon_count;
-	i->usri2_logon_server	= talloc_strdup(mem_ctx, "\\\\*");
-	i->usri2_country_code	= i21->country_code;
-	i->usri2_code_page	= i21->code_page;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_3(TALLOC_CTX *mem_ctx,
-				      const struct samr_UserInfo21 *i21,
-				      uint32_t auth_flag,
-				      struct USER_INFO_3 *i)
-{
-	ZERO_STRUCTP(i);
-
-	i->usri3_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri3_name);
-	i->usri3_password_age	= time(NULL) - nt_time_to_unix(i21->last_password_change);
-	i->usri3_priv		= samr_rid_to_priv_level(i21->rid);
-	i->usri3_home_dir	= talloc_strdup(mem_ctx, i21->home_directory.string);
-	i->usri3_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri3_flags		= samr_acb_flags_to_netapi_flags(i21->acct_flags);
-	i->usri3_script_path	= talloc_strdup(mem_ctx, i21->logon_script.string);
-	i->usri3_auth_flags	= auth_flag;
-	i->usri3_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri3_usr_comment	= talloc_strdup(mem_ctx, i21->comment.string);
-	i->usri3_parms		= talloc_strndup(mem_ctx, (const char *)i21->parameters.array, i21->parameters.size/2);
-	i->usri3_workstations	= talloc_strdup(mem_ctx, i21->workstations.string);
-	i->usri3_last_logon	= nt_time_to_unix(i21->last_logon);
-	i->usri3_last_logoff	= nt_time_to_unix(i21->last_logoff);
-	i->usri3_acct_expires	= nt_time_to_unix(i21->acct_expiry);
-	i->usri3_max_storage	= USER_MAXSTORAGE_UNLIMITED; /* FIXME */
-	i->usri3_units_per_week	= i21->logon_hours.units_per_week;
-	i->usri3_logon_hours	= (uint8_t *)talloc_memdup(mem_ctx, i21->logon_hours.bits, 21);
-	i->usri3_bad_pw_count	= i21->bad_password_count;
-	i->usri3_num_logons	= i21->logon_count;
-	i->usri3_logon_server	= talloc_strdup(mem_ctx, "\\\\*");
-	i->usri3_country_code	= i21->country_code;
-	i->usri3_code_page	= i21->code_page;
-	i->usri3_user_id	= i21->rid;
-	i->usri3_primary_group_id = i21->primary_gid;
-	i->usri3_profile	= talloc_strdup(mem_ctx, i21->profile_path.string);
-	i->usri3_home_dir_drive	= talloc_strdup(mem_ctx, i21->home_drive.string);
-	i->usri3_password_expired = i21->password_expired;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_4(TALLOC_CTX *mem_ctx,
-				      const struct samr_UserInfo21 *i21,
-				      uint32_t auth_flag,
-				      struct dom_sid *domain_sid,
-				      struct USER_INFO_4 *i)
-{
-	struct dom_sid sid;
-
-	ZERO_STRUCTP(i);
-
-	i->usri4_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri4_name);
-	i->usri4_password_age	= time(NULL) - nt_time_to_unix(i21->last_password_change);
-	i->usri4_password	= NULL;
-	i->usri4_priv		= samr_rid_to_priv_level(i21->rid);
-	i->usri4_home_dir	= talloc_strdup(mem_ctx, i21->home_directory.string);
-	i->usri4_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri4_flags		= samr_acb_flags_to_netapi_flags(i21->acct_flags);
-	i->usri4_script_path	= talloc_strdup(mem_ctx, i21->logon_script.string);
-	i->usri4_auth_flags	= auth_flag;
-	i->usri4_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri4_usr_comment	= talloc_strdup(mem_ctx, i21->comment.string);
-	i->usri4_parms		= talloc_strndup(mem_ctx, (const char *)i21->parameters.array, i21->parameters.size/2);
-	i->usri4_workstations	= talloc_strdup(mem_ctx, i21->workstations.string);
-	i->usri4_last_logon	= nt_time_to_unix(i21->last_logon);
-	i->usri4_last_logoff	= nt_time_to_unix(i21->last_logoff);
-	i->usri4_acct_expires	= nt_time_to_unix(i21->acct_expiry);
-	i->usri4_max_storage	= USER_MAXSTORAGE_UNLIMITED; /* FIXME */
-	i->usri4_units_per_week	= i21->logon_hours.units_per_week;
-	i->usri4_logon_hours	= (uint8_t *)talloc_memdup(mem_ctx, i21->logon_hours.bits, 21);
-	i->usri4_bad_pw_count	= i21->bad_password_count;
-	i->usri4_num_logons	= i21->logon_count;
-	i->usri4_logon_server	= talloc_strdup(mem_ctx, "\\\\*");
-	i->usri4_country_code	= i21->country_code;
-	i->usri4_code_page	= i21->code_page;
-	if (!sid_compose(&sid, domain_sid, i21->rid)) {
-		return NT_STATUS_NO_MEMORY;
-	}
-	i->usri4_user_sid	= (struct domsid *)sid_dup_talloc(mem_ctx, &sid);
-	i->usri4_primary_group_id = i21->primary_gid;
-	i->usri4_profile	= talloc_strdup(mem_ctx, i21->profile_path.string);
-	i->usri4_home_dir_drive	= talloc_strdup(mem_ctx, i21->home_drive.string);
-	i->usri4_password_expired = i21->password_expired;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_10(TALLOC_CTX *mem_ctx,
-				       const struct samr_UserInfo21 *i21,
-				       struct USER_INFO_10 *i)
-{
-	ZERO_STRUCTP(i);
-
-	i->usri10_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri10_name);
-	i->usri10_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri10_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri10_usr_comment	= talloc_strdup(mem_ctx, i21->comment.string);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_11(TALLOC_CTX *mem_ctx,
-				       const struct samr_UserInfo21 *i21,
-				       uint32_t auth_flag,
-				       struct USER_INFO_11 *i)
-{
-	ZERO_STRUCTP(i);
-
-	i->usri11_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri11_name);
-	i->usri11_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri11_usr_comment	= talloc_strdup(mem_ctx, i21->comment.string);
-	i->usri11_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri11_priv		= samr_rid_to_priv_level(i21->rid);
-	i->usri11_auth_flags	= auth_flag;
-	i->usri11_password_age	= time(NULL) - nt_time_to_unix(i21->last_password_change);
-	i->usri11_home_dir	= talloc_strdup(mem_ctx, i21->home_directory.string);
-	i->usri11_parms		= talloc_strndup(mem_ctx, (const char *)i21->parameters.array, i21->parameters.size/2);
-	i->usri11_last_logon	= nt_time_to_unix(i21->last_logon);
-	i->usri11_last_logoff	= nt_time_to_unix(i21->last_logoff);
-	i->usri11_bad_pw_count	= i21->bad_password_count;
-	i->usri11_num_logons	= i21->logon_count;
-	i->usri11_logon_server	= talloc_strdup(mem_ctx, "\\\\*");
-	i->usri11_country_code	= i21->country_code;
-	i->usri11_workstations	= talloc_strdup(mem_ctx, i21->workstations.string);
-	i->usri11_max_storage	= USER_MAXSTORAGE_UNLIMITED; /* FIXME */
-	i->usri11_units_per_week = i21->logon_hours.units_per_week;
-	i->usri11_logon_hours	= (uint8_t *)talloc_memdup(mem_ctx, i21->logon_hours.bits, 21);
-	i->usri11_code_page	= i21->code_page;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_20(TALLOC_CTX *mem_ctx,
-				       const struct samr_UserInfo21 *i21,
-				       struct USER_INFO_20 *i)
-{
-	ZERO_STRUCTP(i);
-
-	i->usri20_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri20_name);
-	i->usri20_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri20_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri20_flags		= samr_acb_flags_to_netapi_flags(i21->acct_flags);
-	i->usri20_user_id	= i21->rid;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS info21_to_USER_INFO_23(TALLOC_CTX *mem_ctx,
-				       const struct samr_UserInfo21 *i21,
-				       struct dom_sid *domain_sid,
-				       struct USER_INFO_23 *i)
-{
-	struct dom_sid sid;
-
-	ZERO_STRUCTP(i);
-
-	i->usri23_name		= talloc_strdup(mem_ctx, i21->account_name.string);
-	NT_STATUS_HAVE_NO_MEMORY(i->usri23_name);
-	i->usri23_comment	= talloc_strdup(mem_ctx, i21->description.string);
-	i->usri23_full_name	= talloc_strdup(mem_ctx, i21->full_name.string);
-	i->usri23_flags		= samr_acb_flags_to_netapi_flags(i21->acct_flags);
-	if (!sid_compose(&sid, domain_sid, i21->rid)) {
-		return NT_STATUS_NO_MEMORY;
-	}
-	i->usri23_user_sid	= (struct domsid *)sid_dup_talloc(mem_ctx, &sid);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnetapi_samr_lookup_user_map_USER_INFO(TALLOC_CTX *mem_ctx,
-							 struct rpc_pipe_client *pipe_cli,
-							 struct dom_sid *domain_sid,
-							 struct policy_handle *domain_handle,
-							 struct policy_handle *builtin_handle,
-							 const char *user_name,
-							 uint32_t rid,
-							 uint32_t level,
-							 uint8_t **buffer,
-							 uint32_t *num_entries)
-{
-	NTSTATUS status;
-
-	struct samr_UserInfo21 *info21 = NULL;
-	struct sec_desc_buf *sec_desc = NULL;
-	uint32_t auth_flag = 0;
-
-	struct USER_INFO_0 info0;
-	struct USER_INFO_1 info1;
-	struct USER_INFO_2 info2;
-	struct USER_INFO_3 info3;
-	struct USER_INFO_4 info4;
-	struct USER_INFO_10 info10;
-	struct USER_INFO_11 info11;
-	struct USER_INFO_20 info20;
-	struct USER_INFO_23 info23;
-
 	switch (level) {
 		case 0:
-		case 1:
-		case 2:
-		case 3:
-		case 4:
-		case 10:
-		case 11:
-		case 20:
-		case 23:
-			break;
-		default:
-			return NT_STATUS_INVALID_LEVEL;
-	}
+			info0 = TALLOC_ZERO_ARRAY(mem_ctx, struct USER_INFO_0,
+						  sam_array->count);
+			W_ERROR_HAVE_NO_MEMORY(info0);
 
-	if (level == 0) {
-		info0.usri0_name = talloc_strdup(mem_ctx, user_name);
-		NT_STATUS_HAVE_NO_MEMORY(info0.usri0_name);
+			for (i=0; i<sam_array->count; i++) {
+				info0[i].usri0_name = talloc_strdup(mem_ctx,
+					sam_array->entries[i].name.string);
+				W_ERROR_HAVE_NO_MEMORY(info0[i].usri0_name);
+			}
 
-		ADD_TO_ARRAY(mem_ctx, struct USER_INFO_0, info0,
-			     (struct USER_INFO_0 **)buffer, num_entries);
-
-		return NT_STATUS_OK;
-	}
-
-	status = libnetapi_samr_lookup_user(mem_ctx, pipe_cli,
-					    domain_handle,
-					    builtin_handle,
-					    user_name,
-					    domain_sid,
-					    rid,
-					    level,
-					    &info21,
-					    &sec_desc,
-					    &auth_flag);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	switch (level) {
-		case 0:
-			/* already returned above */
+			*buffer = (uint8_t *)talloc_memdup(mem_ctx, info0,
+				sizeof(struct USER_INFO_0) * sam_array->count);
+			W_ERROR_HAVE_NO_MEMORY(*buffer);
 			break;
-		case 1:
-			status = info21_to_USER_INFO_1(mem_ctx, info21, &info1);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_1, info1,
-				     (struct USER_INFO_1 **)buffer, num_entries);
-
-			break;
-		case 2:
-			status = info21_to_USER_INFO_2(mem_ctx, info21, auth_flag, &info2);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_2, info2,
-				     (struct USER_INFO_2 **)buffer, num_entries);
-
-			break;
-		case 3:
-			status = info21_to_USER_INFO_3(mem_ctx, info21, auth_flag, &info3);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_3, info3,
-				     (struct USER_INFO_3 **)buffer, num_entries);
-
-			break;
-		case 4:
-			status = info21_to_USER_INFO_4(mem_ctx, info21, auth_flag, domain_sid, &info4);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_4, info4,
-				     (struct USER_INFO_4 **)buffer, num_entries);
-
-			break;
-		case 10:
-			status = info21_to_USER_INFO_10(mem_ctx, info21, &info10);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_10, info10,
-				     (struct USER_INFO_10 **)buffer, num_entries);
-
-			break;
-		case 11:
-			status = info21_to_USER_INFO_11(mem_ctx, info21, auth_flag, &info11);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_11, info11,
-				     (struct USER_INFO_11 **)buffer, num_entries);
-
-			break;
-		case 20:
-			status = info21_to_USER_INFO_20(mem_ctx, info21, &info20);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_20, info20,
-				     (struct USER_INFO_20 **)buffer, num_entries);
-
-			break;
-		case 23:
-			status = info21_to_USER_INFO_23(mem_ctx, info21, domain_sid, &info23);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			ADD_TO_ARRAY(mem_ctx, struct USER_INFO_23, info23,
-				     (struct USER_INFO_23 **)buffer, num_entries);
-			break;
 		default:
-			return NT_STATUS_INVALID_LEVEL;
+			return WERR_NOT_SUPPORTED;
 	}
 
- done:
-	return status;
+	return WERR_OK;
 }
 
 /****************************************************************
@@ -1155,138 +572,134 @@
 	struct rpc_pipe_client *pipe_cli = NULL;
 	struct policy_handle connect_handle;
 	struct dom_sid2 *domain_sid = NULL;
-	struct policy_handle domain_handle, builtin_handle;
+	struct policy_handle domain_handle;
 	struct samr_SamArray *sam = NULL;
-	uint32_t filter = ACB_NORMAL;
+	uint32_t num_entries = 0;
 	int i;
-	uint32_t entries_read = 0;
+	const char *domain_name = NULL;
+	bool domain_found = true;
+	uint32_t dom_resume_handle = 0;
+	struct lsa_String lsa_domain_name;
 
-	NTSTATUS status = NT_STATUS_OK;
+	NTSTATUS status;
 	WERROR werr;
 
 	ZERO_STRUCT(connect_handle);
 	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(builtin_handle);
 
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	*r->out.buffer = NULL;
-	*r->out.entries_read = 0;
-
 	switch (r->in.level) {
 		case 0:
+			break;
 		case 1:
 		case 2:
 		case 3:
-		case 4:
 		case 10:
 		case 11:
 		case 20:
 		case 23:
-			break;
 		default:
-			return WERR_UNKNOWN_LEVEL;
+			return WERR_NOT_SUPPORTED;
 	}
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_ENUM_DOMAINS |
-						  SAMR_ACCESS_OPEN_DOMAIN,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT |
-						  SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
-						  &connect_handle,
-						  &builtin_handle);
+	werr = libnetapi_open_pipe(ctx, cli, PI_SAMR, &pipe_cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-					  SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+	status = rpccli_try_samr_connects(pipe_cli, ctx,
+					  SAMR_ACCESS_OPEN_DOMAIN |
+					  SAMR_ACCESS_ENUM_DOMAINS,
+					  &connect_handle);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	status = rpccli_samr_EnumDomains(pipe_cli, ctx,
+					 &connect_handle,
+					 &dom_resume_handle,
+					 &sam,
+					 0xffffffff,
+					 &num_entries);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
+	}
+
+	for (i=0; i<num_entries; i++) {
+
+		domain_name = sam->entries[i].name.string;
+
+		if (strequal(domain_name, builtin_domain_name())) {
+			continue;
+		}
+
+		domain_found = true;
+		break;
+	}
+
+	if (!domain_found) {
+		werr = WERR_NO_SUCH_DOMAIN;
+		goto done;
+	}
+
+	init_lsa_String(&lsa_domain_name, domain_name);
+
+	status = rpccli_samr_LookupDomain(pipe_cli, ctx,
 					  &connect_handle,
-					  &domain_handle,
+					  &lsa_domain_name,
 					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	switch (r->in.filter) {
-		case FILTER_NORMAL_ACCOUNT:
-			filter = ACB_NORMAL;
-			break;
-		case FILTER_TEMP_DUPLICATE_ACCOUNT:
-			filter = ACB_TEMPDUP;
-			break;
-		case FILTER_INTERDOMAIN_TRUST_ACCOUNT:
-			filter = ACB_DOMTRUST;
-			break;
-		case FILTER_WORKSTATION_TRUST_ACCOUNT:
-			filter = ACB_WSTRUST;
-			break;
-		case FILTER_SERVER_TRUST_ACCOUNT:
-			filter = ACB_SVRTRUST;
-			break;
-		default:
-			break;
+	status = rpccli_samr_OpenDomain(pipe_cli,
+					ctx,
+					&connect_handle,
+					SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
+					SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
+					SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+					domain_sid,
+					&domain_handle);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
+		goto done;
 	}
 
 	status = rpccli_samr_EnumDomainUsers(pipe_cli,
 					     ctx,
 					     &domain_handle,
 					     r->in.resume_handle,
-					     filter,
+					     r->in.filter,
 					     &sam,
 					     r->in.prefmaxlen,
-					     &entries_read);
-	werr = ntstatus_to_werror(status);
-	if (NT_STATUS_IS_ERR(status)) {
+					     r->out.entries_read);
+	if (!NT_STATUS_IS_OK(status)) {
+		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	for (i=0; i < sam->count; i++) {
+	werr = convert_samr_samarray_to_USER_INFO_buffer(ctx, sam,
+							 r->in.level,
+							 r->out.buffer);
 
-		status = libnetapi_samr_lookup_user_map_USER_INFO(ctx, pipe_cli,
-								  domain_sid,
-								  &domain_handle,
-								  &builtin_handle,
-								  sam->entries[i].name.string,
-								  sam->entries[i].idx,
-								  r->in.level,
-								  r->out.buffer,
-								  r->out.entries_read);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
  done:
 	if (!cli) {
 		return werr;
 	}
 
-	/* if last query */
-	if (NT_STATUS_IS_OK(status) ||
-	    NT_STATUS_IS_ERR(status)) {
-
-		if (ctx->disable_policy_handle_cache) {
-			libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-			libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-			libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-		}
+	if (is_valid_policy_hnd(&domain_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &domain_handle);
 	}
+	if (is_valid_policy_hnd(&connect_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &connect_handle);
+	}
 
 	return werr;
 }
@@ -1297,7 +710,7 @@
 WERROR NetUserEnum_l(struct libnetapi_ctx *ctx,
 		     struct NetUserEnum *r)
 {
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserEnum);
+	return WERR_NOT_SUPPORTED;
 }
 
 /****************************************************************
@@ -1432,11 +845,11 @@
 /****************************************************************
 ****************************************************************/
 
-static WERROR convert_samr_dispinfo_to_NET_DISPLAY(TALLOC_CTX *mem_ctx,
-						   union samr_DispInfo *info,
-						   uint32_t level,
-						   uint32_t *entries_read,
-						   void **buffer)
+WERROR convert_samr_dispinfo_to_NET_DISPLAY(TALLOC_CTX *mem_ctx,
+					    union samr_DispInfo *info,
+					    uint32_t level,
+					    uint32_t *entries_read,
+					    void **buffer)
 {
 	switch (level) {
 		case 1:
@@ -1473,1968 +886,143 @@
 	struct dom_sid2 *domain_sid = NULL;
 	struct policy_handle domain_handle;
 	union samr_DispInfo info;
+	struct samr_SamArray *sam = NULL;
+	uint32_t num_entries = 0;
+	int i;
+	const char *domain_name = NULL;
+	bool domain_found = true;
+	uint32_t dom_resume_handle = 0;
+	struct lsa_String lsa_domain_name;
 
 	uint32_t total_size = 0;
 	uint32_t returned_size = 0;
 
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	switch (r->in.level) {
-		case 1:
-		case 2:
-		case 3:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-					  SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = rpccli_samr_QueryDisplayInfo2(pipe_cli,
-					       ctx,
-					       &domain_handle,
-					       r->in.level,
-					       r->in.idx,
-					       r->in.entries_requested,
-					       r->in.prefmaxlen,
-					       &total_size,
-					       &returned_size,
-					       &info);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = convert_samr_dispinfo_to_NET_DISPLAY(ctx, &info,
-						    r->in.level,
-						    r->out.entries_read,
-						    r->out.buffer);
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	/* if last query */
-	if (NT_STATUS_IS_OK(status) ||
-	    NT_STATUS_IS_ERR(status)) {
-
-		if (ctx->disable_policy_handle_cache) {
-			libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-			libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-		}
-	}
-
-	return werr;
-
-}
-
-/****************************************************************
-****************************************************************/
-
-
-WERROR NetQueryDisplayInformation_l(struct libnetapi_ctx *ctx,
-				    struct NetQueryDisplayInformation *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetQueryDisplayInformation);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserChangePassword_r(struct libnetapi_ctx *ctx,
-			       struct NetUserChangePassword *r)
-{
-	return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserChangePassword_l(struct libnetapi_ctx *ctx,
-			       struct NetUserChangePassword *r)
-{
-	return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserGetInfo_r(struct libnetapi_ctx *ctx,
-			struct NetUserGetInfo *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
 	NTSTATUS status;
 	WERROR werr;
 
-	struct policy_handle connect_handle, domain_handle, builtin_handle, user_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	struct samr_Ids user_rids, name_types;
-	uint32_t num_entries = 0;
-
 	ZERO_STRUCT(connect_handle);
 	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(user_handle);
 
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
 	switch (r->in.level) {
-		case 0:
 		case 1:
 		case 2:
 		case 3:
-		case 4:
-		case 10:
-		case 11:
-		case 20:
-		case 23:
 			break;
 		default:
-			werr = WERR_UNKNOWN_LEVEL;
-			goto done;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_ENUM_DOMAINS |
-						  SAMR_ACCESS_OPEN_DOMAIN,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT |
-						  SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &user_rids,
-					 &name_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = libnetapi_samr_lookup_user_map_USER_INFO(ctx, pipe_cli,
-							  domain_sid,
-							  &domain_handle,
-							  &builtin_handle,
-							  r->in.user_name,
-							  user_rids.ids[0],
-							  r->in.level,
-							  r->out.buffer,
-							  &num_entries);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&user_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &user_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserGetInfo_l(struct libnetapi_ctx *ctx,
-			struct NetUserGetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserGetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserSetInfo_r(struct libnetapi_ctx *ctx,
-			struct NetUserSetInfo *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-
-	struct policy_handle connect_handle, domain_handle, builtin_handle, user_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	struct samr_Ids user_rids, name_types;
-	uint32_t user_mask = 0;
-
-	struct USER_INFO_X uX;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-	ZERO_STRUCT(builtin_handle);
-	ZERO_STRUCT(user_handle);
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1003:
-			user_mask = SAMR_USER_ACCESS_SET_PASSWORD;
-			break;
-		case 1006:
-		case 1007:
-		case 1009:
-		case 1011:
-		case 1014:
-		case 1052:
-		case 1053:
-			user_mask = SAMR_USER_ACCESS_SET_ATTRIBUTES;
-			break;
-		case 1012:
-		case 1024:
-			user_mask = SAMR_USER_ACCESS_SET_LOC_COM;
-		case 1051:
-			user_mask = SAMR_USER_ACCESS_SET_ATTRIBUTES |
-				    SAMR_USER_ACCESS_GET_GROUPS;
-			break;
-		case 1:
-		case 2:
-		case 3:
-		case 4:
-		case 21:
-		case 22:
-		case 1005:
-		case 1008:
-		case 1010:
-		case 1017:
-		case 1020:
-			werr = WERR_NOT_SUPPORTED;
-			goto done;
-		default:
-			werr = WERR_UNKNOWN_LEVEL;
-			goto done;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_ENUM_DOMAINS |
-						  SAMR_ACCESS_OPEN_DOMAIN,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT |
-						  SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &user_rids,
-					 &name_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_OpenUser(pipe_cli, ctx,
-				      &domain_handle,
-				      user_mask,
-				      user_rids.ids[0],
-				      &user_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = construct_USER_INFO_X(r->in.level, r->in.buffer, &uX);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = set_user_info_USER_INFO_X(ctx, pipe_cli,
-					   &cli->user_session_key,
-					   &user_handle,
-					   &uX);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	werr = WERR_OK;
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (is_valid_policy_hnd(&user_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &user_handle);
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_builtin_handle(ctx, &builtin_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserSetInfo_l(struct libnetapi_ctx *ctx,
-			struct NetUserSetInfo *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserSetInfo);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS query_USER_MODALS_INFO_rpc(TALLOC_CTX *mem_ctx,
-					   struct rpc_pipe_client *pipe_cli,
-					   struct policy_handle *domain_handle,
-					   struct samr_DomInfo1 *info1,
-					   struct samr_DomInfo3 *info3,
-					   struct samr_DomInfo5 *info5,
-					   struct samr_DomInfo6 *info6,
-					   struct samr_DomInfo7 *info7,
-					   struct samr_DomInfo12 *info12)
-{
-	NTSTATUS status;
-	union samr_DomainInfo *dom_info = NULL;
-
-	if (info1) {
-		status = rpccli_samr_QueryDomainInfo(pipe_cli, mem_ctx,
-						     domain_handle,
-						     1,
-						     &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-
-		*info1 = dom_info->info1;
-	}
-
-	if (info3) {
-		status = rpccli_samr_QueryDomainInfo(pipe_cli, mem_ctx,
-						     domain_handle,
-						     3,
-						     &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-
-		*info3 = dom_info->info3;
-	}
-
-	if (info5) {
-		status = rpccli_samr_QueryDomainInfo(pipe_cli, mem_ctx,
-						     domain_handle,
-						     5,
-						     &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-
-		*info5 = dom_info->info5;
-	}
-
-	if (info6) {
-		status = rpccli_samr_QueryDomainInfo(pipe_cli, mem_ctx,
-						     domain_handle,
-						     6,
-						     &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-
-		*info6 = dom_info->info6;
-	}
-
-	if (info7) {
-		status = rpccli_samr_QueryDomainInfo(pipe_cli, mem_ctx,
-						     domain_handle,
-						     7,
-						     &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-
-		*info7 = dom_info->info7;
-	}
-
-	if (info12) {
-		status = rpccli_samr_QueryDomainInfo2(pipe_cli, mem_ctx,
-						      domain_handle,
-						      12,
-						      &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-
-		*info12 = dom_info->info12;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS query_USER_MODALS_INFO_0(TALLOC_CTX *mem_ctx,
-					 struct rpc_pipe_client *pipe_cli,
-					 struct policy_handle *domain_handle,
-					 struct USER_MODALS_INFO_0 *info0)
-{
-	NTSTATUS status;
-	struct samr_DomInfo1 dom_info1;
-	struct samr_DomInfo3 dom_info3;
-
-	ZERO_STRUCTP(info0);
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    &dom_info1,
-					    &dom_info3,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	info0->usrmod0_min_passwd_len =
-		dom_info1.min_password_length;
-	info0->usrmod0_max_passwd_age =
-		nt_time_to_unix_abs((NTTIME *)&dom_info1.max_password_age);
-	info0->usrmod0_min_passwd_age =
-		nt_time_to_unix_abs((NTTIME *)&dom_info1.min_password_age);
-	info0->usrmod0_password_hist_len =
-		dom_info1.password_history_length;
-
-	info0->usrmod0_force_logoff =
-		nt_time_to_unix_abs(&dom_info3.force_logoff_time);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS query_USER_MODALS_INFO_1(TALLOC_CTX *mem_ctx,
-					 struct rpc_pipe_client *pipe_cli,
-					 struct policy_handle *domain_handle,
-					 struct USER_MODALS_INFO_1 *info1)
-{
-	NTSTATUS status;
-	struct samr_DomInfo6 dom_info6;
-	struct samr_DomInfo7 dom_info7;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    NULL,
-					    NULL,
-					    NULL,
-					    &dom_info6,
-					    &dom_info7,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	info1->usrmod1_primary =
-		talloc_strdup(mem_ctx, dom_info6.primary.string);
-
-	info1->usrmod1_role = dom_info7.role;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS query_USER_MODALS_INFO_2(TALLOC_CTX *mem_ctx,
-					 struct rpc_pipe_client *pipe_cli,
-					 struct policy_handle *domain_handle,
-					 struct dom_sid *domain_sid,
-					 struct USER_MODALS_INFO_2 *info2)
-{
-	NTSTATUS status;
-	struct samr_DomInfo5 dom_info5;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    NULL,
-					    NULL,
-					    &dom_info5,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	info2->usrmod2_domain_name =
-		talloc_strdup(mem_ctx, dom_info5.domain_name.string);
-	info2->usrmod2_domain_id =
-		(struct domsid *)sid_dup_talloc(mem_ctx, domain_sid);
-
-	NT_STATUS_HAVE_NO_MEMORY(info2->usrmod2_domain_name);
-	NT_STATUS_HAVE_NO_MEMORY(info2->usrmod2_domain_id);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS query_USER_MODALS_INFO_3(TALLOC_CTX *mem_ctx,
-					 struct rpc_pipe_client *pipe_cli,
-					 struct policy_handle *domain_handle,
-					 struct USER_MODALS_INFO_3 *info3)
-{
-	NTSTATUS status;
-	struct samr_DomInfo12 dom_info12;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    &dom_info12);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	info3->usrmod3_lockout_duration =
-		nt_time_to_unix_abs(&dom_info12.lockout_duration);
-	info3->usrmod3_lockout_observation_window =
-		nt_time_to_unix_abs(&dom_info12.lockout_window);
-	info3->usrmod3_lockout_threshold =
-		dom_info12.lockout_threshold;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS query_USER_MODALS_INFO_to_buffer(TALLOC_CTX *mem_ctx,
-						 struct rpc_pipe_client *pipe_cli,
-						 uint32_t level,
-						 struct policy_handle *domain_handle,
-						 struct dom_sid *domain_sid,
-						 uint8_t **buffer)
-{
-	NTSTATUS status;
-
-	struct USER_MODALS_INFO_0 info0;
-	struct USER_MODALS_INFO_1 info1;
-	struct USER_MODALS_INFO_2 info2;
-	struct USER_MODALS_INFO_3 info3;
-
-	if (!buffer) {
-		return ERROR_INSUFFICIENT_BUFFER;
-	}
-
-	switch (level) {
-		case 0:
-			status = query_USER_MODALS_INFO_0(mem_ctx,
-							  pipe_cli,
-							  domain_handle,
-							  &info0);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info0,
-							   sizeof(info0));
-			break;
-
-		case 1:
-			status = query_USER_MODALS_INFO_1(mem_ctx,
-							  pipe_cli,
-							  domain_handle,
-							  &info1);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info1,
-							   sizeof(info1));
-			break;
-		case 2:
-			status = query_USER_MODALS_INFO_2(mem_ctx,
-							  pipe_cli,
-							  domain_handle,
-							  domain_sid,
-							  &info2);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info2,
-							   sizeof(info2));
-			break;
-		case 3:
-			status = query_USER_MODALS_INFO_3(mem_ctx,
-							  pipe_cli,
-							  domain_handle,
-							  &info3);
-			NT_STATUS_NOT_OK_RETURN(status);
-
-			*buffer = (uint8_t *)talloc_memdup(mem_ctx, &info3,
-							   sizeof(info3));
-			break;
-		default:
-			break;
-	}
-
-	NT_STATUS_HAVE_NO_MEMORY(*buffer);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserModalsGet_r(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsGet *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-
-	struct policy_handle connect_handle, domain_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	uint32_t access_mask = SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			access_mask |= SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
-				       SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2;
-			break;
-		case 1:
-		case 2:
-			access_mask |= SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2;
-			break;
-		case 3:
-			access_mask |= SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1;
-			break;
-		default:
-			werr = WERR_UNKNOWN_LEVEL;
-			goto done;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  access_mask,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	/* 0:  1 + 3 */
-	/* 1:  6 + 7 */
-	/* 2:  5 */
-	/* 3: 12 (DomainInfo2) */
-
-	status = query_USER_MODALS_INFO_to_buffer(ctx,
-						  pipe_cli,
-						  r->in.level,
-						  &domain_handle,
-						  domain_sid,
-						  r->out.buffer);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserModalsGet_l(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsGet *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserModalsGet);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_rpc(TALLOC_CTX *mem_ctx,
-					 struct rpc_pipe_client *pipe_cli,
-					 struct policy_handle *domain_handle,
-					 struct samr_DomInfo1 *info1,
-					 struct samr_DomInfo3 *info3,
-					 struct samr_DomInfo12 *info12)
-{
-	NTSTATUS status;
-	union samr_DomainInfo dom_info;
-
-	if (info1) {
-
-		ZERO_STRUCT(dom_info);
-
-		dom_info.info1 = *info1;
-
-		status = rpccli_samr_SetDomainInfo(pipe_cli, mem_ctx,
-						   domain_handle,
-						   1,
-						   &dom_info);
-		NT_STATUS_NOT_OK_RETURN(status);
-	}
-
-	if (info3) {
-
-		ZERO_STRUCT(dom_info);
-
-		dom_info.info3 = *info3;
-
-		status = rpccli_samr_SetDomainInfo(pipe_cli, mem_ctx,
-						   domain_handle,
-						   3,
-						   &dom_info);
-
-		NT_STATUS_NOT_OK_RETURN(status);
-	}
-
-	if (info12) {
-
-		ZERO_STRUCT(dom_info);
-
-		dom_info.info12 = *info12;
-
-		status = rpccli_samr_SetDomainInfo(pipe_cli, mem_ctx,
-						   domain_handle,
-						   12,
-						   &dom_info);
-
-		NT_STATUS_NOT_OK_RETURN(status);
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_0_buffer(TALLOC_CTX *mem_ctx,
-					      struct rpc_pipe_client *pipe_cli,
-					      struct policy_handle *domain_handle,
-					      struct USER_MODALS_INFO_0 *info0)
-{
-	NTSTATUS status;
-	struct samr_DomInfo1 dom_info_1;
-	struct samr_DomInfo3 dom_info_3;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    &dom_info_1,
-					    &dom_info_3,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	dom_info_1.min_password_length =
-		info0->usrmod0_min_passwd_len;
-	dom_info_1.password_history_length =
-		info0->usrmod0_password_hist_len;
-
-	unix_to_nt_time_abs((NTTIME *)&dom_info_1.max_password_age,
-		info0->usrmod0_max_passwd_age);
-	unix_to_nt_time_abs((NTTIME *)&dom_info_1.min_password_age,
-		info0->usrmod0_min_passwd_age);
-
-	unix_to_nt_time_abs(&dom_info_3.force_logoff_time,
-		info0->usrmod0_force_logoff);
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					&dom_info_1,
-					&dom_info_3,
-					NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_3_buffer(TALLOC_CTX *mem_ctx,
-					      struct rpc_pipe_client *pipe_cli,
-					      struct policy_handle *domain_handle,
-					      struct USER_MODALS_INFO_3 *info3)
-{
-	NTSTATUS status;
-	struct samr_DomInfo12 dom_info_12;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    &dom_info_12);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	unix_to_nt_time_abs((NTTIME *)&dom_info_12.lockout_duration,
-		info3->usrmod3_lockout_duration);
-	unix_to_nt_time_abs((NTTIME *)&dom_info_12.lockout_window,
-		info3->usrmod3_lockout_observation_window);
-	dom_info_12.lockout_threshold = info3->usrmod3_lockout_threshold;
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					NULL,
-					NULL,
-					&dom_info_12);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_1001_buffer(TALLOC_CTX *mem_ctx,
-						 struct rpc_pipe_client *pipe_cli,
-						 struct policy_handle *domain_handle,
-						 struct USER_MODALS_INFO_1001 *info1001)
-{
-	NTSTATUS status;
-	struct samr_DomInfo1 dom_info_1;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    &dom_info_1,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	dom_info_1.min_password_length =
-		info1001->usrmod1001_min_passwd_len;
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					&dom_info_1,
-					NULL,
-					NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_1002_buffer(TALLOC_CTX *mem_ctx,
-						 struct rpc_pipe_client *pipe_cli,
-						 struct policy_handle *domain_handle,
-						 struct USER_MODALS_INFO_1002 *info1002)
-{
-	NTSTATUS status;
-	struct samr_DomInfo1 dom_info_1;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    &dom_info_1,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	unix_to_nt_time_abs((NTTIME *)&dom_info_1.max_password_age,
-		info1002->usrmod1002_max_passwd_age);
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					&dom_info_1,
-					NULL,
-					NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_1003_buffer(TALLOC_CTX *mem_ctx,
-						 struct rpc_pipe_client *pipe_cli,
-						 struct policy_handle *domain_handle,
-						 struct USER_MODALS_INFO_1003 *info1003)
-{
-	NTSTATUS status;
-	struct samr_DomInfo1 dom_info_1;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    &dom_info_1,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	unix_to_nt_time_abs((NTTIME *)&dom_info_1.min_password_age,
-		info1003->usrmod1003_min_passwd_age);
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					&dom_info_1,
-					NULL,
-					NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_1004_buffer(TALLOC_CTX *mem_ctx,
-						 struct rpc_pipe_client *pipe_cli,
-						 struct policy_handle *domain_handle,
-						 struct USER_MODALS_INFO_1004 *info1004)
-{
-	NTSTATUS status;
-	struct samr_DomInfo3 dom_info_3;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    NULL,
-					    &dom_info_3,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	unix_to_nt_time_abs(&dom_info_3.force_logoff_time,
-		info1004->usrmod1004_force_logoff);
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					NULL,
-					&dom_info_3,
-					NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_1005_buffer(TALLOC_CTX *mem_ctx,
-						 struct rpc_pipe_client *pipe_cli,
-						 struct policy_handle *domain_handle,
-						 struct USER_MODALS_INFO_1005 *info1005)
-{
-	NTSTATUS status;
-	struct samr_DomInfo1 dom_info_1;
-
-	status = query_USER_MODALS_INFO_rpc(mem_ctx,
-					    pipe_cli,
-					    domain_handle,
-					    &dom_info_1,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL,
-					    NULL);
-	NT_STATUS_NOT_OK_RETURN(status);
-
-	dom_info_1.password_history_length =
-		info1005->usrmod1005_password_hist_len;
-
-	return set_USER_MODALS_INFO_rpc(mem_ctx,
-					pipe_cli,
-					domain_handle,
-					&dom_info_1,
-					NULL,
-					NULL);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS set_USER_MODALS_INFO_buffer(TALLOC_CTX *mem_ctx,
-					    struct rpc_pipe_client *pipe_cli,
-					    uint32_t level,
-					    struct policy_handle *domain_handle,
-					    struct dom_sid *domain_sid,
-					    uint8_t *buffer)
-{
-	struct USER_MODALS_INFO_0 *info0;
-	struct USER_MODALS_INFO_3 *info3;
-	struct USER_MODALS_INFO_1001 *info1001;
-	struct USER_MODALS_INFO_1002 *info1002;
-	struct USER_MODALS_INFO_1003 *info1003;
-	struct USER_MODALS_INFO_1004 *info1004;
-	struct USER_MODALS_INFO_1005 *info1005;
-
-	if (!buffer) {
-		return ERROR_INSUFFICIENT_BUFFER;
-	}
-
-	switch (level) {
-		case 0:
-			info0 = (struct USER_MODALS_INFO_0 *)buffer;
-			return set_USER_MODALS_INFO_0_buffer(mem_ctx,
-							     pipe_cli,
-							     domain_handle,
-							     info0);
-		case 3:
-			info3 = (struct USER_MODALS_INFO_3 *)buffer;
-			return set_USER_MODALS_INFO_3_buffer(mem_ctx,
-							     pipe_cli,
-							     domain_handle,
-							     info3);
-		case 1001:
-			info1001 = (struct USER_MODALS_INFO_1001 *)buffer;
-			return set_USER_MODALS_INFO_1001_buffer(mem_ctx,
-								pipe_cli,
-								domain_handle,
-								info1001);
-		case 1002:
-			info1002 = (struct USER_MODALS_INFO_1002 *)buffer;
-			return set_USER_MODALS_INFO_1002_buffer(mem_ctx,
-								pipe_cli,
-								domain_handle,
-								info1002);
-		case 1003:
-			info1003 = (struct USER_MODALS_INFO_1003 *)buffer;
-			return set_USER_MODALS_INFO_1003_buffer(mem_ctx,
-								pipe_cli,
-								domain_handle,
-								info1003);
-		case 1004:
-			info1004 = (struct USER_MODALS_INFO_1004 *)buffer;
-			return set_USER_MODALS_INFO_1004_buffer(mem_ctx,
-								pipe_cli,
-								domain_handle,
-								info1004);
-		case 1005:
-			info1005 = (struct USER_MODALS_INFO_1005 *)buffer;
-			return set_USER_MODALS_INFO_1005_buffer(mem_ctx,
-								pipe_cli,
-								domain_handle,
-								info1005);
-
-		default:
-			break;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserModalsSet_r(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsSet *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	NTSTATUS status;
-	WERROR werr;
-
-	struct policy_handle connect_handle, domain_handle;
-	struct dom_sid2 *domain_sid = NULL;
-	uint32_t access_mask = SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-			access_mask |= SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
-				       SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-				       SAMR_DOMAIN_ACCESS_SET_INFO_1 |
-				       SAMR_DOMAIN_ACCESS_SET_INFO_2;
-			break;
-		case 3:
-		case 1001:
-		case 1002:
-		case 1003:
-		case 1005:
-			access_mask |= SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 |
-				       SAMR_DOMAIN_ACCESS_SET_INFO_1;
-			break;
-		case 1004:
-			access_mask |= SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 |
-				       SAMR_DOMAIN_ACCESS_SET_INFO_2;
-			break;
-		case 1:
-		case 2:
-		case 1006:
-		case 1007:
-			werr = WERR_NOT_SUPPORTED;
-			break;
-		default:
-			werr = WERR_UNKNOWN_LEVEL;
-			goto done;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  access_mask,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	status = set_USER_MODALS_INFO_buffer(ctx,
-					     pipe_cli,
-					     r->in.level,
-					     &domain_handle,
-					     domain_sid,
-					     r->in.buffer);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserModalsSet_l(struct libnetapi_ctx *ctx,
-			  struct NetUserModalsSet *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserModalsSet);
-}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS add_GROUP_USERS_INFO_X_buffer(TALLOC_CTX *mem_ctx,
-				       uint32_t level,
-				       const char *group_name,
-				       uint32_t attributes,
-				       uint8_t **buffer,
-				       uint32_t *num_entries)
-{
-	struct GROUP_USERS_INFO_0 u0;
-	struct GROUP_USERS_INFO_1 u1;
-
-	switch (level) {
-		case 0:
-			u0.grui0_name = talloc_strdup(mem_ctx, group_name);
-			NT_STATUS_HAVE_NO_MEMORY(u0.grui0_name);
-
-			ADD_TO_ARRAY(mem_ctx, struct GROUP_USERS_INFO_0, u0,
-				     (struct GROUP_USERS_INFO_0 **)buffer, num_entries);
-			break;
-		case 1:
-			u1.grui1_name = talloc_strdup(mem_ctx, group_name);
-			NT_STATUS_HAVE_NO_MEMORY(u1.grui1_name);
-
-			u1.grui1_attributes = attributes;
-
-			ADD_TO_ARRAY(mem_ctx, struct GROUP_USERS_INFO_1, u1,
-				     (struct GROUP_USERS_INFO_1 **)buffer, num_entries);
-			break;
-		default:
-			return NT_STATUS_INVALID_INFO_CLASS;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserGetGroups_r(struct libnetapi_ctx *ctx,
-			  struct NetUserGetGroups *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct policy_handle connect_handle, domain_handle, user_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	struct samr_Ids user_rids, name_types;
-	struct samr_RidWithAttributeArray *rid_array = NULL;
-	struct lsa_Strings names;
-	struct samr_Ids types;
-	uint32_t *rids = NULL;
-
-	int i;
-	uint32_t entries_read = 0;
-
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	*r->out.buffer = NULL;
-	*r->out.entries_read = 0;
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-			break;
-		default:
 			return WERR_UNKNOWN_LEVEL;
 	}
 
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
+	werr = libnetapi_open_ipc_connection(ctx, r->in.server_name, &cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
+	werr = libnetapi_open_pipe(ctx, cli, PI_SAMR, &pipe_cli);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
-	init_lsa_String(&lsa_account_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &user_rids,
-					 &name_types);
+	status = rpccli_try_samr_connects(pipe_cli, ctx,
+					  SAMR_ACCESS_OPEN_DOMAIN |
+					  SAMR_ACCESS_ENUM_DOMAINS,
+					  &connect_handle);
 	if (!NT_STATUS_IS_OK(status)) {
 		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	status = rpccli_samr_OpenUser(pipe_cli, ctx,
-				      &domain_handle,
-				      SAMR_USER_ACCESS_GET_GROUPS,
-				      user_rids.ids[0],
-				      &user_handle);
+	status = rpccli_samr_EnumDomains(pipe_cli, ctx,
+					 &connect_handle,
+					 &dom_resume_handle,
+					 &sam,
+					 0xffffffff,
+					 &num_entries);
 	if (!NT_STATUS_IS_OK(status)) {
 		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	status = rpccli_samr_GetGroupsForUser(pipe_cli, ctx,
-					      &user_handle,
-					      &rid_array);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
+	for (i=0; i<num_entries; i++) {
 
-	rids = talloc_array(ctx, uint32_t, rid_array->count);
-	if (!rids) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
+		domain_name = sam->entries[i].name.string;
 
-	for (i=0; i < rid_array->count; i++) {
-		rids[i] = rid_array->rids[i].rid;
-	}
-
-	status = rpccli_samr_LookupRids(pipe_cli, ctx,
-					&domain_handle,
-					rid_array->count,
-					rids,
-					&names,
-					&types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i < rid_array->count; i++) {
-		status = add_GROUP_USERS_INFO_X_buffer(ctx,
-						       r->in.level,
-						       names.names[i].string,
-						       rid_array->rids[i].attributes,
-						       r->out.buffer,
-						       &entries_read);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
+		if (strequal(domain_name, builtin_domain_name())) {
+			continue;
 		}
-	}
 
-	if (r->out.entries_read) {
-		*r->out.entries_read = entries_read;
+		domain_found = true;
+		break;
 	}
-	if (r->out.total_entries) {
-		*r->out.total_entries = entries_read;
-	}
 
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserGetGroups_l(struct libnetapi_ctx *ctx,
-			  struct NetUserGetGroups *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserGetGroups);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserSetGroups_r(struct libnetapi_ctx *ctx,
-			  struct NetUserSetGroups *r)
-{
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct policy_handle connect_handle, domain_handle, user_handle, group_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	struct samr_Ids user_rids, name_types;
-	struct samr_Ids group_rids;
-	struct samr_RidWithAttributeArray *rid_array = NULL;
-	struct lsa_String *lsa_names = NULL;
-
-	uint32_t *add_rids = NULL;
-	uint32_t *del_rids = NULL;
-	size_t num_add_rids = 0;
-	size_t num_del_rids = 0;
-
-	uint32_t *member_rids = NULL;
-	size_t num_member_rids = 0;
-
-	struct GROUP_USERS_INFO_0 *i0 = NULL;
-	struct GROUP_USERS_INFO_1 *i1 = NULL;
-
-	int i, k;
-
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->in.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
+	if (!domain_found) {
+		werr = WERR_NO_SUCH_DOMAIN;
 		goto done;
 	}
 
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+	init_lsa_String(&lsa_domain_name, domain_name);
+
+	status = rpccli_samr_LookupDomain(pipe_cli, ctx,
 					  &connect_handle,
-					  &domain_handle,
+					  &lsa_domain_name,
 					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &user_rids,
-					 &name_types);
 	if (!NT_STATUS_IS_OK(status)) {
 		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	status = rpccli_samr_OpenUser(pipe_cli, ctx,
-				      &domain_handle,
-				      SAMR_USER_ACCESS_GET_GROUPS,
-				      user_rids.ids[0],
-				      &user_handle);
+	status = rpccli_samr_OpenDomain(pipe_cli,
+					ctx,
+					&connect_handle,
+					SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS |
+					SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+					domain_sid,
+					&domain_handle);
 	if (!NT_STATUS_IS_OK(status)) {
 		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	switch (r->in.level) {
-		case 0:
-			i0 = (struct GROUP_USERS_INFO_0 *)r->in.buffer;
-			break;
-		case 1:
-			i1 = (struct GROUP_USERS_INFO_1 *)r->in.buffer;
-			break;
-	}
-
-	lsa_names = talloc_array(ctx, struct lsa_String, r->in.num_entries);
-	if (!lsa_names) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	for (i=0; i < r->in.num_entries; i++) {
-
-		switch (r->in.level) {
-			case 0:
-				init_lsa_String(&lsa_names[i], i0->grui0_name);
-				i0++;
-				break;
-			case 1:
-				init_lsa_String(&lsa_names[i], i1->grui1_name);
-				i1++;
-				break;
-		}
-	}
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 r->in.num_entries,
-					 lsa_names,
-					 &group_rids,
-					 &name_types);
+	status = rpccli_samr_QueryDisplayInfo2(pipe_cli,
+					       ctx,
+					       &domain_handle,
+					       r->in.level,
+					       r->in.idx,
+					       r->in.entries_requested,
+					       r->in.prefmaxlen,
+					       &total_size,
+					       &returned_size,
+					       &info);
 	if (!NT_STATUS_IS_OK(status)) {
 		werr = ntstatus_to_werror(status);
 		goto done;
 	}
 
-	member_rids = group_rids.ids;
-	num_member_rids = group_rids.count;
-
-	status = rpccli_samr_GetGroupsForUser(pipe_cli, ctx,
-					      &user_handle,
-					      &rid_array);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	/* add list */
-
-	for (i=0; i < r->in.num_entries; i++) {
-		bool already_member = false;
-		for (k=0; k < rid_array->count; k++) {
-			if (member_rids[i] == rid_array->rids[k].rid) {
-				already_member = true;
-				break;
-			}
-		}
-		if (!already_member) {
-			if (!add_rid_to_array_unique(ctx,
-						     member_rids[i],
-						     &add_rids, &num_add_rids)) {
-				werr = WERR_GENERAL_FAILURE;
-				goto done;
-			}
-		}
-	}
-
-	/* del list */
-
-	for (k=0; k < rid_array->count; k++) {
-		bool keep_member = false;
-		for (i=0; i < r->in.num_entries; i++) {
-			if (member_rids[i] == rid_array->rids[k].rid) {
-				keep_member = true;
-				break;
-			}
-		}
-		if (!keep_member) {
-			if (!add_rid_to_array_unique(ctx,
-						     rid_array->rids[k].rid,
-						     &del_rids, &num_del_rids)) {
-				werr = WERR_GENERAL_FAILURE;
-				goto done;
-			}
-		}
-	}
-
-	/* add list */
-
-	for (i=0; i < num_add_rids; i++) {
-		status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-					       &domain_handle,
-					       SAMR_GROUP_ACCESS_ADD_MEMBER,
-					       add_rids[i],
-					       &group_handle);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-
-		status = rpccli_samr_AddGroupMember(pipe_cli, ctx,
-						    &group_handle,
-						    user_rids.ids[0],
-						    7 /* ? */);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-
-		if (is_valid_policy_hnd(&group_handle)) {
-			rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-		}
-	}
-
-	/* del list */
-
-	for (i=0; i < num_del_rids; i++) {
-		status = rpccli_samr_OpenGroup(pipe_cli, ctx,
-					       &domain_handle,
-					       SAMR_GROUP_ACCESS_REMOVE_MEMBER,
-					       del_rids[i],
-					       &group_handle);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-
-		status = rpccli_samr_DeleteGroupMember(pipe_cli, ctx,
-						       &group_handle,
-						       user_rids.ids[0]);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-
-		if (is_valid_policy_hnd(&group_handle)) {
-			rpccli_samr_Close(pipe_cli, ctx, &group_handle);
-		}
-	}
-
-	werr = WERR_OK;
-
+	werr = convert_samr_dispinfo_to_NET_DISPLAY(ctx, &info,
+						    r->in.level,
+						    r->out.entries_read,
+						    r->out.buffer);
  done:
 	if (!cli) {
 		return werr;
 	}
 
-	if (is_valid_policy_hnd(&group_handle)) {
-		rpccli_samr_Close(pipe_cli, ctx, &group_handle);
+	if (is_valid_policy_hnd(&domain_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &domain_handle);
 	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
+	if (is_valid_policy_hnd(&connect_handle)) {
+		rpccli_samr_Close(pipe_cli, ctx, &connect_handle);
 	}
 
 	return werr;
-}
 
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserSetGroups_l(struct libnetapi_ctx *ctx,
-			  struct NetUserSetGroups *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserSetGroups);
 }
 
 /****************************************************************
 ****************************************************************/
 
-static NTSTATUS add_LOCALGROUP_USERS_INFO_X_buffer(TALLOC_CTX *mem_ctx,
-						   uint32_t level,
-						   const char *group_name,
-						   uint8_t **buffer,
-						   uint32_t *num_entries)
-{
-	struct LOCALGROUP_USERS_INFO_0 u0;
 
-	switch (level) {
-		case 0:
-			u0.lgrui0_name = talloc_strdup(mem_ctx, group_name);
-			NT_STATUS_HAVE_NO_MEMORY(u0.lgrui0_name);
-
-			ADD_TO_ARRAY(mem_ctx, struct LOCALGROUP_USERS_INFO_0, u0,
-				     (struct LOCALGROUP_USERS_INFO_0 **)buffer, num_entries);
-			break;
-		default:
-			return NT_STATUS_INVALID_INFO_CLASS;
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserGetLocalGroups_r(struct libnetapi_ctx *ctx,
-			       struct NetUserGetLocalGroups *r)
+WERROR NetQueryDisplayInformation_l(struct libnetapi_ctx *ctx,
+				    struct NetQueryDisplayInformation *r)
 {
-	struct cli_state *cli = NULL;
-	struct rpc_pipe_client *pipe_cli = NULL;
-	struct policy_handle connect_handle, domain_handle, user_handle,
-	builtin_handle;
-	struct lsa_String lsa_account_name;
-	struct dom_sid2 *domain_sid = NULL;
-	struct samr_Ids user_rids, name_types;
-	struct samr_RidWithAttributeArray *rid_array = NULL;
-	struct lsa_Strings names;
-	struct samr_Ids types;
-	uint32_t *rids = NULL;
-	size_t num_rids = 0;
-	struct dom_sid user_sid;
-	struct lsa_SidArray sid_array;
-	struct samr_Ids domain_rids;
-	struct samr_Ids builtin_rids;
-
-	int i;
-	uint32_t entries_read = 0;
-
-	NTSTATUS status = NT_STATUS_OK;
-	WERROR werr;
-
-	ZERO_STRUCT(connect_handle);
-	ZERO_STRUCT(domain_handle);
-
-	if (!r->out.buffer) {
-		return WERR_INVALID_PARAM;
-	}
-
-	*r->out.buffer = NULL;
-	*r->out.entries_read = 0;
-
-	switch (r->in.level) {
-		case 0:
-		case 1:
-			break;
-		default:
-			return WERR_UNKNOWN_LEVEL;
-	}
-
-	werr = libnetapi_open_pipe(ctx, r->in.server_name,
-				   &ndr_table_samr.syntax_id,
-				   &cli,
-				   &pipe_cli);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_domain(ctx, pipe_cli,
-					  SAMR_ACCESS_ENUM_DOMAINS |
-					  SAMR_ACCESS_OPEN_DOMAIN,
-					  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT |
-					  SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
-					  &connect_handle,
-					  &domain_handle,
-					  &domain_sid);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = libnetapi_samr_open_builtin_domain(ctx, pipe_cli,
-						  SAMR_ACCESS_ENUM_DOMAINS |
-						  SAMR_ACCESS_OPEN_DOMAIN,
-						  SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT |
-						  SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
-						  &connect_handle,
-						  &builtin_handle);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_account_name, r->in.user_name);
-
-	status = rpccli_samr_LookupNames(pipe_cli, ctx,
-					 &domain_handle,
-					 1,
-					 &lsa_account_name,
-					 &user_rids,
-					 &name_types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_OpenUser(pipe_cli, ctx,
-				      &domain_handle,
-				      SAMR_USER_ACCESS_GET_GROUPS,
-				      user_rids.ids[0],
-				      &user_handle);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	status = rpccli_samr_GetGroupsForUser(pipe_cli, ctx,
-					      &user_handle,
-					      &rid_array);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	if (!sid_compose(&user_sid, domain_sid, user_rids.ids[0])) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	sid_array.num_sids = rid_array->count + 1;
-	sid_array.sids = TALLOC_ARRAY(ctx, struct lsa_SidPtr, sid_array.num_sids);
-	if (!sid_array.sids) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	sid_array.sids[0].sid = sid_dup_talloc(ctx, &user_sid);
-	if (!sid_array.sids[0].sid) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	for (i=0; i < rid_array->count; i++) {
-		struct dom_sid sid;
-
-		if (!sid_compose(&sid, domain_sid, rid_array->rids[i].rid)) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-
-		sid_array.sids[i+1].sid = sid_dup_talloc(ctx, &sid);
-		if (!sid_array.sids[i+1].sid) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-	}
-
-	status = rpccli_samr_GetAliasMembership(pipe_cli, ctx,
-						&domain_handle,
-						&sid_array,
-						&domain_rids);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i < domain_rids.count; i++) {
-		if (!add_rid_to_array_unique(ctx, domain_rids.ids[i],
-					     &rids, &num_rids)) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-	}
-
-	status = rpccli_samr_GetAliasMembership(pipe_cli, ctx,
-						&builtin_handle,
-						&sid_array,
-						&builtin_rids);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i < builtin_rids.count; i++) {
-		if (!add_rid_to_array_unique(ctx, builtin_rids.ids[i],
-					     &rids, &num_rids)) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-	}
-
-	status = rpccli_samr_LookupRids(pipe_cli, ctx,
-					&builtin_handle,
-					num_rids,
-					rids,
-					&names,
-					&types);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto done;
-	}
-
-	for (i=0; i < names.count; i++) {
-		status = add_LOCALGROUP_USERS_INFO_X_buffer(ctx,
-							    r->in.level,
-							    names.names[i].string,
-							    r->out.buffer,
-							    &entries_read);
-		if (!NT_STATUS_IS_OK(status)) {
-			werr = ntstatus_to_werror(status);
-			goto done;
-		}
-	}
-
-	if (r->out.entries_read) {
-		*r->out.entries_read = entries_read;
-	}
-	if (r->out.total_entries) {
-		*r->out.total_entries = entries_read;
-	}
-
- done:
-	if (!cli) {
-		return werr;
-	}
-
-	if (ctx->disable_policy_handle_cache) {
-		libnetapi_samr_close_domain_handle(ctx, &domain_handle);
-		libnetapi_samr_close_connect_handle(ctx, &connect_handle);
-	}
-
-	return werr;
+	return WERR_NOT_SUPPORTED;
 }
-
-/****************************************************************
-****************************************************************/
-
-WERROR NetUserGetLocalGroups_l(struct libnetapi_ctx *ctx,
-			       struct NetUserGetLocalGroups *r)
-{
-	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetUserGetLocalGroups);
-}

Modified: branches/samba/upstream/source/lib/popt_common.c
===================================================================
--- branches/samba/upstream/source/lib/popt_common.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/popt_common.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -171,20 +171,13 @@
 	POPT_TABLEEND
 };
 
-struct poptOption popt_common_debuglevel[] = {
-	{ NULL, 0, POPT_ARG_CALLBACK, (void *)popt_common_callback },
-	{ "debuglevel", 'd', POPT_ARG_STRING, NULL, 'd', "Set debug level", "DEBUGLEVEL" },
-	POPT_TABLEEND
-};
 
-
 /* Handle command line options:
  *		--sbindir
  *		--bindir
  *		--swatdir
  *		--lmhostsfile
  *		--libdir
- *		--modulesdir
  *		--shlibext
  *		--lockdir
  *		--piddir
@@ -198,7 +191,6 @@
 	DYN_SWATDIR,
 	DYN_LMHOSTSFILE,
 	DYN_LIBDIR,
-	DYN_MODULESDIR,
 	DYN_SHLIBEXT,
 	DYN_LOCKDIR,
 	DYN_PIDDIR,
@@ -244,12 +236,6 @@
 		}
 		break;
 
-	case DYN_MODULESDIR:
-		if (arg) {
-			set_dyn_MODULESDIR(arg);
-		}
-		break;
-
 	case DYN_SHLIBEXT:
 		if (arg) {
 			set_dyn_SHLIBEXT(arg);
@@ -297,8 +283,6 @@
 	    "Path to lmhosts file", "LMHOSTSFILE" },
 	{ "libdir", '\0' , POPT_ARG_STRING, NULL, DYN_LIBDIR,
 	    "Path to shared library directory", "LIBDIR" },
-	{ "modulesdir", '\0' , POPT_ARG_STRING, NULL, DYN_MODULESDIR,
-	    "Path to shared modules directory", "MODULESDIR" },
 	{ "shlibext", '\0' , POPT_ARG_STRING, NULL, DYN_SHLIBEXT,
 	    "Shared library extension", "SHLIBEXT" },
 	{ "lockdir", '\0' , POPT_ARG_STRING, NULL, DYN_LOCKDIR,

Modified: branches/samba/upstream/source/lib/replace/libreplace_ld.m4
===================================================================
--- branches/samba/upstream/source/lib/replace/libreplace_ld.m4	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/replace/libreplace_ld.m4	2008-11-01 11:09:46 UTC (rev 2200)
@@ -271,7 +271,7 @@
 			LD_SHLIB_ALLOW_UNDEF_FLAG="-undefined dynamic_lookup"
 			;;
 		*aix*)
-			LD_SHLIB_ALLOW_UNDEF_FLAG="-Wl,-bnoentry"
+			LD_SHLIB_ALLOW_UNDEF_FLAG="--Wl,-bnoentry"
 			;;
 	esac
 

Modified: branches/samba/upstream/source/lib/replace/system/kerberos.h
===================================================================
--- branches/samba/upstream/source/lib/replace/system/kerberos.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/replace/system/kerberos.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -129,9 +129,8 @@
 /* Whether krb5_princ_realm returns krb5_realm or krb5_data */
 #define KRB5_PRINC_REALM_RETURNS_REALM 1
 
-#include <krb5.h>
-#include <com_err.h>
-
+#include "heimdal/lib/krb5/krb5.h"
+#include "heimdal/lib/com_err/com_err.h"
 #endif
 
 #endif

Modified: branches/samba/upstream/source/lib/sendfile.c
===================================================================
--- branches/samba/upstream/source/lib/sendfile.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/sendfile.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -383,8 +383,7 @@
 				hdtrl.iov_base = NULL;
 				hdtrl.iov_len = 0;
 			} else {
-				hdtrl.iov_base =
-				    (caddr_t)hdtrl.iov_base + nwritten;
+				hdtrl.iov_base += nwritten;
 				hdtrl.iov_len -= nwritten;
 				nwritten = 0;
 			}

Modified: branches/samba/upstream/source/lib/sharesec.c
===================================================================
--- branches/samba/upstream/source/lib/sharesec.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/sharesec.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -51,7 +51,7 @@
 		return True;
 	}
 
-	share_db = db_open(NULL, state_path("share_info.tdb"), 0,
+	share_db = db_open_trans(NULL, state_path("share_info.tdb"), 0,
 				 TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (share_db == NULL) {
 		DEBUG(0,("Failed to open share info database %s (%s)\n",
@@ -109,7 +109,7 @@
 
 	if (share_db->transaction_commit(share_db) != 0) {
 		DEBUG(0, ("transaction_commit failed\n"));
-		return false;
+		goto cancel;
 	}
 
 	return true;

Modified: branches/samba/upstream/source/lib/smbconf/smbconf_reg.c
===================================================================
--- branches/samba/upstream/source/lib/smbconf/smbconf_reg.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/smbconf/smbconf_reg.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -52,7 +52,6 @@
 		"lock dir",
 		"config backend",
 		"include",
-		"includes", /* this has a special meaning internally */
 		NULL
 	};
 	const char **forbidden = NULL;
@@ -67,8 +66,8 @@
 
 static bool smbconf_reg_valname_valid(const char *valname)
 {
-	return (!smbconf_reg_valname_forbidden(valname) &&
-		lp_parameter_is_valid(valname));
+	return (lp_parameter_is_valid(valname) &&
+		!smbconf_reg_valname_forbidden(valname));
 }
 
 /**

Modified: branches/samba/upstream/source/lib/smbldap.c
===================================================================
--- branches/samba/upstream/source/lib/smbldap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/smbldap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -298,7 +298,6 @@
 {
 	char **values;
 	char *result;
-	size_t converted_size;
 
 	if (attribute == NULL) {
 		return NULL;
@@ -318,7 +317,7 @@
 		return NULL;
 	}
 
-	if (!pull_utf8_talloc(mem_ctx, &result, values[0], &converted_size)) {
+	if (pull_utf8_talloc(mem_ctx, &result, values[0]) == (size_t)-1) {
 		DEBUG(10, ("pull_utf8_talloc failed\n"));
 		ldap_value_free(values);
 		return NULL;
@@ -431,7 +430,6 @@
 
 	if (value != NULL) {
 		char *utf8_value = NULL;
-		size_t converted_size;
 
 		j = 0;
 		if (mods[i]->mod_values != NULL) {
@@ -444,7 +442,7 @@
 			/* notreached. */
 		}
 
-		if (!push_utf8_allocate(&utf8_value, value, &converted_size)) {
+		if (push_utf8_allocate(&utf8_value, value) == (size_t)-1) {
 			smb_panic("smbldap_set_mod: String conversion failure!");
 			/* notreached. */
 		}
@@ -1202,7 +1200,6 @@
 	char           *utf8_filter;
 	time_t		endtime = time(NULL)+lp_ldap_timeout();
 	struct		timeval timeout;
-	size_t		converted_size;
 
 	SMB_ASSERT(ldap_state);
 	
@@ -1233,7 +1230,7 @@
 		ZERO_STRUCT(ldap_state->last_rebind);
 	}
 
-	if (!push_utf8_allocate(&utf8_filter, filter, &converted_size)) {
+	if (push_utf8_allocate(&utf8_filter, filter) == (size_t)-1) {
 		return LDAP_NO_MEMORY;
 	}
 
@@ -1399,13 +1396,12 @@
 	int 		attempts = 0;
 	char           *utf8_dn;
 	time_t		endtime = time(NULL)+lp_ldap_timeout();
-	size_t		converted_size;
 
 	SMB_ASSERT(ldap_state);
 
 	DEBUG(5,("smbldap_modify: dn => [%s]\n", dn ));
 
-	if (!push_utf8_allocate(&utf8_dn, dn, &converted_size)) {
+	if (push_utf8_allocate(&utf8_dn, dn) == (size_t)-1) {
 		return LDAP_NO_MEMORY;
 	}
 
@@ -1443,13 +1439,12 @@
 	int 		attempts = 0;
 	char           *utf8_dn;
 	time_t		endtime = time(NULL)+lp_ldap_timeout();
-	size_t		converted_size;
 	
 	SMB_ASSERT(ldap_state);
 
 	DEBUG(5,("smbldap_add: dn => [%s]\n", dn ));
 
-	if (!push_utf8_allocate(&utf8_dn, dn, &converted_size)) {
+	if (push_utf8_allocate(&utf8_dn, dn) == (size_t)-1) {
 		return LDAP_NO_MEMORY;
 	}
 
@@ -1487,13 +1482,12 @@
 	int 		attempts = 0;
 	char           *utf8_dn;
 	time_t		endtime = time(NULL)+lp_ldap_timeout();
-	size_t		converted_size;
 	
 	SMB_ASSERT(ldap_state);
 
 	DEBUG(5,("smbldap_delete: dn => [%s]\n", dn ));
 
-	if (!push_utf8_allocate(&utf8_dn, dn, &converted_size)) {
+	if (push_utf8_allocate(&utf8_dn, dn) == (size_t)-1) {
 		return LDAP_NO_MEMORY;
 	}
 
@@ -1660,16 +1654,14 @@
 char *smbldap_get_dn(LDAP *ld, LDAPMessage *entry)
 {
 	char *utf8_dn, *unix_dn;
-	size_t converted_size;
 
 	utf8_dn = ldap_get_dn(ld, entry);
 	if (!utf8_dn) {
 		DEBUG (5, ("smbldap_get_dn: ldap_get_dn failed\n"));
 		return NULL;
 	}
-	if (!pull_utf8_allocate(&unix_dn, utf8_dn, &converted_size)) {
-		DEBUG (0, ("smbldap_get_dn: String conversion failure utf8 "
-			   "[%s]\n", utf8_dn));
+	if (pull_utf8_allocate(&unix_dn, utf8_dn) == (size_t)-1) {
+		DEBUG (0, ("smbldap_get_dn: String conversion failure utf8 [%s]\n", utf8_dn));
 		return NULL;
 	}
 	ldap_memfree(utf8_dn);
@@ -1680,14 +1672,13 @@
 			       LDAPMessage *entry)
 {
 	char *utf8_dn, *unix_dn;
-	size_t converted_size;
 
 	utf8_dn = ldap_get_dn(ld, entry);
 	if (!utf8_dn) {
 		DEBUG (5, ("smbldap_get_dn: ldap_get_dn failed\n"));
 		return NULL;
 	}
-	if (!pull_utf8_talloc(mem_ctx, &unix_dn, utf8_dn, &converted_size)) {
+	if (pull_utf8_talloc(mem_ctx, &unix_dn, utf8_dn) == (size_t)-1) {
 		DEBUG (0, ("smbldap_get_dn: String conversion failure utf8 "
 			   "[%s]\n", utf8_dn));
 		return NULL;

Modified: branches/samba/upstream/source/lib/socket_wrapper/config.m4
===================================================================
--- branches/samba/upstream/source/lib/socket_wrapper/config.m4	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/socket_wrapper/config.m4	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,22 +1,22 @@
 AC_ARG_ENABLE(socket-wrapper, 
 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)])
 
-DEFAULT_TEST_OPTIONS=
+DEFAULT_TEST_TARGET=test-noswrap
 HAVE_SOCKET_WRAPPER=no
 
 if eval "test x$developer = xyes"; then
 	enable_socket_wrapper=yes
 fi
-    
+
 if eval "test x$enable_socket_wrapper = xyes"; then
         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
-	DEFAULT_TEST_OPTIONS=--socket-wrapper
+	DEFAULT_TEST_TARGET=test-swrap
 	HAVE_SOCKET_WRAPPER=yes
 
 	# this is only used for samba3
 	SOCKET_WRAPPER_OBJS="lib/socket_wrapper/socket_wrapper.o"
 fi
 
-AC_SUBST(DEFAULT_TEST_OPTIONS)
+AC_SUBST(DEFAULT_TEST_TARGET)
 AC_SUBST(HAVE_SOCKET_WRAPPER)
 AC_SUBST(SOCKET_WRAPPER_OBJS)

Deleted: branches/samba/upstream/source/lib/socket_wrapper/config.mk
===================================================================
--- branches/samba/upstream/source/lib/socket_wrapper/config.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/socket_wrapper/config.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,8 +0,0 @@
-##############################
-# Start SUBSYSTEM SOCKET_WRAPPER
-[SUBSYSTEM::SOCKET_WRAPPER]
-PRIVATE_DEPENDENCIES = LIBREPLACE_NETWORK
-# End SUBSYSTEM SOCKET_WRAPPER
-##############################
-
-SOCKET_WRAPPER_OBJ_FILES = $(socketwrappersrcdir)/socket_wrapper.o

Modified: branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.c
===================================================================
--- branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) Jelmer Vernooij 2005,2008 <jelmer at samba.org>
+ * Copyright (C) Jelmer Vernooij 2005 <jelmer at samba.org>
  * Copyright (C) Stefan Metzmacher 2006 <metze at samba.org>
  *
  * All rights reserved.
@@ -42,19 +42,26 @@
 #ifdef _SAMBA_BUILD_
 
 #define SOCKET_WRAPPER_NOT_REPLACE
-#include "lib/replace/replace.h"
+#include "includes.h"
 #include "system/network.h"
 #include "system/filesys.h"
-#include "system/time.h"
 
+#ifdef malloc
+#undef malloc
+#endif
+#ifdef calloc
+#undef calloc
+#endif
+#ifdef strdup
+#undef strdup
+#endif
+
 #else /* _SAMBA_BUILD_ */
 
 #include <sys/types.h>
-#include <sys/time.h>
 #include <sys/stat.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
-#include <sys/filio.h>
 #include <errno.h>
 #include <sys/un.h>
 #include <netinet/in.h>
@@ -66,10 +73,8 @@
 #include <stdio.h>
 #include <stdint.h>
 
-#endif
-
-#ifndef _PUBLIC_
 #define _PUBLIC_
+
 #endif
 
 #define SWRAP_DLIST_ADD(list,item) do { \
@@ -140,13 +145,9 @@
 #define SOCKET_FORMAT "%c%02X%04X"
 #define SOCKET_TYPE_CHAR_TCP		'T'
 #define SOCKET_TYPE_CHAR_UDP		'U'
-#define SOCKET_TYPE_CHAR_TCP_V6		'X'
-#define SOCKET_TYPE_CHAR_UDP_V6		'Y'
 
 #define MAX_WRAPPED_INTERFACES 16
 
-#define SW_IPV6_ADDRESS 1
-
 static struct sockaddr *sockaddr_dup(const void *data, socklen_t len)
 {
 	struct sockaddr *ret = (struct sockaddr *)malloc(len);
@@ -154,35 +155,6 @@
 	return ret;
 }
 
-static void set_port(int family, int prt, struct sockaddr *addr)
-{
-	switch (family) {
-	case AF_INET:
-		((struct sockaddr_in *)addr)->sin_port = htons(prt);
-		break;
-#ifdef HAVE_IPV6
-	case AF_INET6:
-		((struct sockaddr_in6 *)addr)->sin6_port = htons(prt);
-		break;
-#endif
-	}
-}
-
-static size_t socket_length(int family)
-{
-	switch (family) {
-	case AF_INET:
-		return sizeof(struct sockaddr_in);
-#ifdef HAVE_IPV6
-	case AF_INET6:
-		return sizeof(struct sockaddr_in6);
-#endif
-	}
-	return 0;
-}
-
-
-
 struct socket_info
 {
 	int fd;
@@ -213,7 +185,8 @@
 
 static struct socket_info *sockets;
 
-const char *socket_wrapper_dir(void)
+
+static const char *socket_wrapper_dir(void)
 {
 	const char *s = getenv("SOCKET_WRAPPER_DIR");
 	if (s == NULL) {
@@ -225,7 +198,7 @@
 	return s;
 }
 
-unsigned int socket_wrapper_default_iface(void)
+static unsigned int socket_wrapper_default_iface(void)
 {
 	const char *s = getenv("SOCKET_WRAPPER_DEFAULT_IFACE");
 	if (s) {
@@ -240,13 +213,17 @@
 	return 1;/* 127.0.0.1 */
 }
 
-static int convert_un_in(const struct sockaddr_un *un, struct sockaddr *in, socklen_t *len)
+static int convert_un_in(const struct sockaddr_un *un, struct sockaddr_in *in, socklen_t *len)
 {
 	unsigned int iface;
 	unsigned int prt;
 	const char *p;
 	char type;
 
+	if ((*len) < sizeof(struct sockaddr_in)) {
+		return 0;
+	}
+
 	p = strrchr(un->sun_path, '/');
 	if (p) p++; else p = un->sun_path;
 
@@ -255,145 +232,80 @@
 		return -1;
 	}
 
-	if (iface == 0 || iface > MAX_WRAPPED_INTERFACES) {
+	if (type != SOCKET_TYPE_CHAR_TCP && type != SOCKET_TYPE_CHAR_UDP) {
 		errno = EINVAL;
 		return -1;
 	}
 
-	if (prt > 0xFFFF) {
+	if (iface == 0 || iface > MAX_WRAPPED_INTERFACES) {
 		errno = EINVAL;
 		return -1;
 	}
 
-	switch(type) {
-	case SOCKET_TYPE_CHAR_TCP:
-	case SOCKET_TYPE_CHAR_UDP: {
-		struct sockaddr_in *in2 = (struct sockaddr_in *)in;
-		
-		if ((*len) < sizeof(*in2)) {
-		    errno = EINVAL;
-		    return -1;
-		}
-
-		memset(in2, 0, sizeof(*in2));
-		in2->sin_family = AF_INET;
-		in2->sin_addr.s_addr = htonl((127<<24) | iface);
-		in2->sin_port = htons(prt);
-
-		*len = sizeof(*in2);
-		break;
-	}
-#ifdef HAVE_IPV6
-	case SOCKET_TYPE_CHAR_TCP_V6:
-	case SOCKET_TYPE_CHAR_UDP_V6: {
-		struct sockaddr_in6 *in2 = (struct sockaddr_in6 *)in;
-		
-		if ((*len) < sizeof(*in2)) {
-			errno = EINVAL;
-			return -1;
-		}
-
-		memset(in2, 0, sizeof(*in2));
-		in2->sin6_family = AF_INET6;
-		in2->sin6_addr.s6_addr[0] = SW_IPV6_ADDRESS;
-		in2->sin6_port = htons(prt);
-
-		*len = sizeof(*in2);
-		break;
-	}
-#endif
-	default:
+	if (prt > 0xFFFF) {
 		errno = EINVAL;
 		return -1;
 	}
 
+	in->sin_family = AF_INET;
+	in->sin_addr.s_addr = htonl((127<<24) | iface);
+	in->sin_port = htons(prt);
+
+	*len = sizeof(struct sockaddr_in);
 	return 0;
 }
 
-static int convert_in_un_remote(struct socket_info *si, const struct sockaddr *inaddr, struct sockaddr_un *un,
+static int convert_in_un_remote(struct socket_info *si, const struct sockaddr_in *in, struct sockaddr_un *un,
 				int *bcast)
 {
+	char u_type = '\0';
+	char b_type = '\0';
+	char a_type = '\0';
 	char type = '\0';
-	unsigned int prt;
+	unsigned int addr= ntohl(in->sin_addr.s_addr);
+	unsigned int prt = ntohs(in->sin_port);
 	unsigned int iface;
 	int is_bcast = 0;
 
 	if (bcast) *bcast = 0;
 
-	switch (si->family) {
-	case AF_INET: {
-		const struct sockaddr_in *in = 
-		    (const struct sockaddr_in *)inaddr;
-		unsigned int addr = ntohl(in->sin_addr.s_addr);
-		char u_type = '\0';
-		char b_type = '\0';
-		char a_type = '\0';
-
-		switch (si->type) {
-		case SOCK_STREAM:
-			u_type = SOCKET_TYPE_CHAR_TCP;
-			break;
-		case SOCK_DGRAM:
-			u_type = SOCKET_TYPE_CHAR_UDP;
-			a_type = SOCKET_TYPE_CHAR_UDP;
-			b_type = SOCKET_TYPE_CHAR_UDP;
-			break;
-		}
-
-		prt = ntohs(in->sin_port);
-		if (a_type && addr == 0xFFFFFFFF) {
-			/* 255.255.255.255 only udp */
-			is_bcast = 2;
-			type = a_type;
-			iface = socket_wrapper_default_iface();
-		} else if (b_type && addr == 0x7FFFFFFF) {
-			/* 127.255.255.255 only udp */
-			is_bcast = 1;
-			type = b_type;
-			iface = socket_wrapper_default_iface();
-		} else if ((addr & 0xFFFFFF00) == 0x7F000000) {
-			/* 127.0.0.X */
-			is_bcast = 0;
-			type = u_type;
-			iface = (addr & 0x000000FF);
-		} else {
-			errno = ENETUNREACH;
-			return -1;
-		}
-		if (bcast) *bcast = is_bcast;
-		break;
+	if (prt == 0) {
+		errno = EINVAL;
+		return -1;
 	}
-#ifdef HAVE_IPV6
-	case AF_INET6: {
-		const struct sockaddr_in6 *in = 
-		    (const struct sockaddr_in6 *)inaddr;
 
-		switch (si->type) {
-		case SOCK_STREAM:
-			type = SOCKET_TYPE_CHAR_TCP_V6;
-			break;
-		case SOCK_DGRAM:
-			type = SOCKET_TYPE_CHAR_UDP_V6;
-			break;
-		}
-
-		/* XXX no multicast/broadcast */
-
-		prt = ntohs(in->sin6_port);
-		iface = SW_IPV6_ADDRESS;
-		
+	switch (si->type) {
+	case SOCK_STREAM:
+		u_type = SOCKET_TYPE_CHAR_TCP;
 		break;
+	case SOCK_DGRAM:
+		u_type = SOCKET_TYPE_CHAR_UDP;
+		a_type = SOCKET_TYPE_CHAR_UDP;
+		b_type = SOCKET_TYPE_CHAR_UDP;
+		break;
 	}
-#endif
-	default:
+
+	if (a_type && addr == 0xFFFFFFFF) {
+		/* 255.255.255.255 only udp */
+		is_bcast = 2;
+		type = a_type;
+		iface = socket_wrapper_default_iface();
+	} else if (b_type && addr == 0x7FFFFFFF) {
+		/* 127.255.255.255 only udp */
+		is_bcast = 1;
+		type = b_type;
+		iface = socket_wrapper_default_iface();
+	} else if ((addr & 0xFFFFFF00) == 0x7F000000) {
+		/* 127.0.0.X */
+		is_bcast = 0;
+		type = u_type;
+		iface = (addr & 0x000000FF);
+	} else {
 		errno = ENETUNREACH;
 		return -1;
 	}
 
-	if (prt == 0) {
-		errno = EINVAL;
-		return -1;
-	}
+	if (bcast) *bcast = is_bcast;
 
 	if (is_bcast) {
 		snprintf(un->sun_path, sizeof(un->sun_path), "%s/EINVAL", 
@@ -408,96 +320,60 @@
 	return 0;
 }
 
-static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *inaddr, struct sockaddr_un *un,
+static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr_in *in, struct sockaddr_un *un,
 			       int *bcast)
 {
+	char u_type = '\0';
+	char d_type = '\0';
+	char b_type = '\0';
+	char a_type = '\0';
 	char type = '\0';
-	unsigned int prt;
+	unsigned int addr= ntohl(in->sin_addr.s_addr);
+	unsigned int prt = ntohs(in->sin_port);
 	unsigned int iface;
 	struct stat st;
 	int is_bcast = 0;
 
 	if (bcast) *bcast = 0;
 
-	switch (si->family) {
-	case AF_INET: {
-		const struct sockaddr_in *in = 
-		    (const struct sockaddr_in *)inaddr;
-		unsigned int addr = ntohl(in->sin_addr.s_addr);
-		char u_type = '\0';
-		char d_type = '\0';
-		char b_type = '\0';
-		char a_type = '\0';
-
-		prt = ntohs(in->sin_port);
-
-		switch (si->type) {
-		case SOCK_STREAM:
-			u_type = SOCKET_TYPE_CHAR_TCP;
-			d_type = SOCKET_TYPE_CHAR_TCP;
-			break;
-		case SOCK_DGRAM:
-			u_type = SOCKET_TYPE_CHAR_UDP;
-			d_type = SOCKET_TYPE_CHAR_UDP;
-			a_type = SOCKET_TYPE_CHAR_UDP;
-			b_type = SOCKET_TYPE_CHAR_UDP;
-			break;
-		}
-
-		if (addr == 0) {
-			/* 0.0.0.0 */
-		 	is_bcast = 0;
-			type = d_type;
-			iface = socket_wrapper_default_iface();
-		} else if (a_type && addr == 0xFFFFFFFF) {
-			/* 255.255.255.255 only udp */
-			is_bcast = 2;
-			type = a_type;
-			iface = socket_wrapper_default_iface();
-		} else if (b_type && addr == 0x7FFFFFFF) {
-			/* 127.255.255.255 only udp */
-			is_bcast = 1;
-			type = b_type;
-			iface = socket_wrapper_default_iface();
-		} else if ((addr & 0xFFFFFF00) == 0x7F000000) {
-			/* 127.0.0.X */
-			is_bcast = 0;
-			type = u_type;
-			iface = (addr & 0x000000FF);
-		} else {
-			errno = EADDRNOTAVAIL;
-			return -1;
-		}
+	switch (si->type) {
+	case SOCK_STREAM:
+		u_type = SOCKET_TYPE_CHAR_TCP;
+		d_type = SOCKET_TYPE_CHAR_TCP;
 		break;
-	}
-#ifdef HAVE_IPV6
-	case AF_INET6: {
-		const struct sockaddr_in6 *in = 
-		    (const struct sockaddr_in6 *)inaddr;
-
-		switch (si->type) {
-		case SOCK_STREAM:
-			type = SOCKET_TYPE_CHAR_TCP_V6;
-			break;
-		case SOCK_DGRAM:
-			type = SOCKET_TYPE_CHAR_UDP_V6;
-			break;
-		}
-
-		/* XXX no multicast/broadcast */
-
-		prt = ntohs(in->sin6_port);
-		iface = SW_IPV6_ADDRESS;
-		
+	case SOCK_DGRAM:
+		u_type = SOCKET_TYPE_CHAR_UDP;
+		d_type = SOCKET_TYPE_CHAR_UDP;
+		a_type = SOCKET_TYPE_CHAR_UDP;
+		b_type = SOCKET_TYPE_CHAR_UDP;
 		break;
 	}
-#endif
-	default:
-		errno = ENETUNREACH;
+
+	if (addr == 0) {
+		/* 0.0.0.0 */
+		is_bcast = 0;
+		type = d_type;
+		iface = socket_wrapper_default_iface();
+	} else if (a_type && addr == 0xFFFFFFFF) {
+		/* 255.255.255.255 only udp */
+		is_bcast = 2;
+		type = a_type;
+		iface = socket_wrapper_default_iface();
+	} else if (b_type && addr == 0x7FFFFFFF) {
+		/* 127.255.255.255 only udp */
+		is_bcast = 1;
+		type = b_type;
+		iface = socket_wrapper_default_iface();
+	} else if ((addr & 0xFFFFFF00) == 0x7F000000) {
+		/* 127.0.0.X */
+		is_bcast = 0;
+		type = u_type;
+		iface = (addr & 0x000000FF);
+	} else {
+		errno = EADDRNOTAVAIL;
 		return -1;
 	}
 
-
 	if (bcast) *bcast = is_bcast;
 
 	if (prt == 0) {
@@ -507,13 +383,11 @@
 				 socket_wrapper_dir(), type, iface, prt);
 			if (stat(un->sun_path, &st) == 0) continue;
 
-			set_port(si->family, prt, si->myname);
-			break;
+			((struct sockaddr_in *)si->myname)->sin_port = htons(prt);
+			return 0;
 		}
-		if (prt == 10000) {
-			errno = ENFILE;
-			return -1;
-		}
+		errno = ENFILE;
+		return -1;
 	}
 
 	snprintf(un->sun_path, sizeof(un->sun_path), "%s/"SOCKET_FORMAT, 
@@ -542,9 +416,6 @@
 
 	switch (in_addr->sa_family) {
 	case AF_INET:
-#ifdef HAVE_IPV6
-	case AF_INET6:
-#endif
 		switch (si->type) {
 		case SOCK_STREAM:
 		case SOCK_DGRAM:
@@ -554,9 +425,9 @@
 			return -1;
 		}
 		if (alloc_sock) {
-			return convert_in_un_alloc(si, in_addr, out_addr, bcast);
+			return convert_in_un_alloc(si, (const struct sockaddr_in *)in_addr, out_addr, bcast);
 		} else {
-			return convert_in_un_remote(si, in_addr, out_addr, bcast);
+			return convert_in_un_remote(si, (const struct sockaddr_in *)in_addr, out_addr, bcast);
 		}
 	default:
 		break;
@@ -571,21 +442,25 @@
 				    socklen_t un_addrlen,
 				    int family,
 				    struct sockaddr *out_addr,
-				    socklen_t *out_addrlen)
+				    socklen_t *_out_addrlen)
 {
-	if (out_addr == NULL || out_addrlen == NULL) 
+	socklen_t out_addrlen;
+
+	if (out_addr == NULL || _out_addrlen == NULL) 
 		return 0;
 
 	if (un_addrlen == 0) {
-		*out_addrlen = 0;
+		*_out_addrlen = 0;
 		return 0;
 	}
 
+	out_addrlen = *_out_addrlen;
+	if (out_addrlen > un_addrlen) {
+		out_addrlen = un_addrlen;
+	}
+
 	switch (family) {
 	case AF_INET:
-#ifdef HAVE_IPV6
-	case AF_INET6:
-#endif
 		switch (si->type) {
 		case SOCK_STREAM:
 		case SOCK_DGRAM:
@@ -594,7 +469,7 @@
 			errno = ESOCKTNOSUPPORT;
 			return -1;
 		}
-		return convert_un_in(in_addr, out_addr, out_addrlen);
+		return convert_un_in(in_addr, (struct sockaddr_in *)out_addr, _out_addrlen);
 	default:
 		break;
 	}
@@ -750,7 +625,7 @@
 					      int socket_type,
 					      const unsigned char *payload,
 					      size_t payload_len,
-					      unsigned long tcp_seqno,
+					      unsigned long tcp_seq,
 					      unsigned long tcp_ack,
 					      unsigned char tcp_ctl,
 					      int unreachable,
@@ -781,9 +656,6 @@
 		wire_hdr_len = sizeof(packet->ip.hdr) + sizeof(packet->ip.p.udp);
 		wire_len = wire_hdr_len + payload_len;
 		break;
-
-	default:
-		return NULL;
 	}
 
 	if (unreachable) {
@@ -852,7 +724,7 @@
 	case SOCK_STREAM:
 		packet->ip.p.tcp.source_port	= src_port;
 		packet->ip.p.tcp.dest_port	= dest_port;
-		packet->ip.p.tcp.seq_num	= htonl(tcp_seqno);
+		packet->ip.p.tcp.seq_num	= htonl(tcp_seq);
 		packet->ip.p.tcp.ack_num	= htonl(tcp_ack);
 		packet->ip.p.tcp.hdr_length	= 0x50; /* 5 * 32 bit words */
 		packet->ip.p.tcp.control	= tcp_ctl;
@@ -908,36 +780,39 @@
 	return fd;
 }
 
-static struct swrap_packet *swrap_marshall_packet(struct socket_info *si,
-								  const struct sockaddr *addr,
-								  enum swrap_packet_type type,
-								  const void *buf, size_t len,
-								  size_t *packet_len)
+static void swrap_dump_packet(struct socket_info *si, const struct sockaddr *addr,
+			      enum swrap_packet_type type,
+			      const void *buf, size_t len)
 {
 	const struct sockaddr_in *src_addr;
 	const struct sockaddr_in *dest_addr;
-	unsigned long tcp_seqno = 0;
+	const char *file_name;
+	unsigned long tcp_seq = 0;
 	unsigned long tcp_ack = 0;
 	unsigned char tcp_ctl = 0;
 	int unreachable = 0;
-
 	struct timeval tv;
+	struct swrap_packet *packet;
+	size_t packet_len = 0;
+	int fd;
 
-	switch (si->family) {
-	case AF_INET:
-		break;
-	default:
-		return NULL;
+	file_name = socket_wrapper_pcap_file();
+	if (!file_name) {
+		return;
 	}
 
+	if (si->family != AF_INET) {
+		return;
+	}
+
 	switch (type) {
 	case SWRAP_CONNECT_SEND:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		src_addr = (const struct sockaddr_in *)si->myname;
 		dest_addr = (const struct sockaddr_in *)addr;
 
-		tcp_seqno = si->io.pck_snd;
+		tcp_seq = si->io.pck_snd;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x02; /* SYN */
 
@@ -946,12 +821,12 @@
 		break;
 
 	case SWRAP_CONNECT_RECV:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		dest_addr = (const struct sockaddr_in *)si->myname;
 		src_addr = (const struct sockaddr_in *)addr;
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x12; /** SYN,ACK */
 
@@ -960,13 +835,13 @@
 		break;
 
 	case SWRAP_CONNECT_UNREACH:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		dest_addr = (const struct sockaddr_in *)si->myname;
 		src_addr = (const struct sockaddr_in *)addr;
 
 		/* Unreachable: resend the data of SWRAP_CONNECT_SEND */
-		tcp_seqno = si->io.pck_snd - 1;
+		tcp_seq = si->io.pck_snd - 1;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x02; /* SYN */
 		unreachable = 1;
@@ -974,24 +849,24 @@
 		break;
 
 	case SWRAP_CONNECT_ACK:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		src_addr = (const struct sockaddr_in *)si->myname;
 		dest_addr = (const struct sockaddr_in *)addr;
 
-		tcp_seqno = si->io.pck_snd;
+		tcp_seq = si->io.pck_snd;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x10; /* ACK */
 
 		break;
 
 	case SWRAP_ACCEPT_SEND:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		dest_addr = (const struct sockaddr_in *)si->myname;
 		src_addr = (const struct sockaddr_in *)addr;
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x02; /* SYN */
 
@@ -1000,12 +875,12 @@
 		break;
 
 	case SWRAP_ACCEPT_RECV:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		src_addr = (const struct sockaddr_in *)si->myname;
 		dest_addr = (const struct sockaddr_in *)addr;
 
-		tcp_seqno = si->io.pck_snd;
+		tcp_seq = si->io.pck_snd;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x12; /* SYN,ACK */
 
@@ -1014,12 +889,12 @@
 		break;
 
 	case SWRAP_ACCEPT_ACK:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		dest_addr = (const struct sockaddr_in *)si->myname;
 		src_addr = (const struct sockaddr_in *)addr;
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x10; /* ACK */
 
@@ -1029,7 +904,7 @@
 		src_addr = (const struct sockaddr_in *)si->myname;
 		dest_addr = (const struct sockaddr_in *)si->peername;
 
-		tcp_seqno = si->io.pck_snd;
+		tcp_seq = si->io.pck_snd;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x18; /* PSH,ACK */
 
@@ -1042,12 +917,13 @@
 		src_addr = (const struct sockaddr_in *)si->peername;
 
 		if (si->type == SOCK_DGRAM) {
-			return swrap_marshall_packet(si, si->peername,
+			swrap_dump_packet(si, si->peername,
 					  SWRAP_SENDTO_UNREACH,
-			      		  buf, len, packet_len);
+			      		  buf, len);
+			return;
 		}
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x14; /** RST,ACK */
 
@@ -1058,10 +934,10 @@
 		src_addr = (const struct sockaddr_in *)si->peername;
 
 		if (si->type == SOCK_DGRAM) {
-			return NULL;
+			return;
 		}
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x14; /* RST,ACK */
 
@@ -1071,7 +947,7 @@
 		dest_addr = (const struct sockaddr_in *)si->myname;
 		src_addr = (const struct sockaddr_in *)si->peername;
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x18; /* PSH,ACK */
 
@@ -1084,10 +960,10 @@
 		src_addr = (const struct sockaddr_in *)si->peername;
 
 		if (si->type == SOCK_DGRAM) {
-			return NULL;
+			return;
 		}
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x14; /* RST,ACK */
 
@@ -1118,12 +994,12 @@
 		break;
 
 	case SWRAP_CLOSE_SEND:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		src_addr = (const struct sockaddr_in *)si->myname;
 		dest_addr = (const struct sockaddr_in *)si->peername;
 
-		tcp_seqno = si->io.pck_snd;
+		tcp_seq = si->io.pck_snd;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x11; /* FIN, ACK */
 
@@ -1132,12 +1008,12 @@
 		break;
 
 	case SWRAP_CLOSE_RECV:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		dest_addr = (const struct sockaddr_in *)si->myname;
 		src_addr = (const struct sockaddr_in *)si->peername;
 
-		tcp_seqno = si->io.pck_rcv;
+		tcp_seq = si->io.pck_rcv;
 		tcp_ack = si->io.pck_snd;
 		tcp_ctl = 0x11; /* FIN,ACK */
 
@@ -1146,44 +1022,26 @@
 		break;
 
 	case SWRAP_CLOSE_ACK:
-		if (si->type != SOCK_STREAM) return NULL;
+		if (si->type != SOCK_STREAM) return;
 
 		src_addr = (const struct sockaddr_in *)si->myname;
 		dest_addr = (const struct sockaddr_in *)si->peername;
 
-		tcp_seqno = si->io.pck_snd;
+		tcp_seq = si->io.pck_snd;
 		tcp_ack = si->io.pck_rcv;
 		tcp_ctl = 0x10; /* ACK */
 
 		break;
 	default:
-		return NULL;
+		return;
 	}
 
 	swrapGetTimeOfDay(&tv);
 
-	return swrap_packet_init(&tv, src_addr, dest_addr, si->type,
+	packet = swrap_packet_init(&tv, src_addr, dest_addr, si->type,
 				   (const unsigned char *)buf, len,
-				   tcp_seqno, tcp_ack, tcp_ctl, unreachable,
-				   packet_len);
-}
-
-static void swrap_dump_packet(struct socket_info *si, 
-							  const struct sockaddr *addr,
-							  enum swrap_packet_type type,
-							  const void *buf, size_t len)
-{
-	const char *file_name;
-	struct swrap_packet *packet;
-	size_t packet_len = 0;
-	int fd;
-
-	file_name = socket_wrapper_pcap_file();
-	if (!file_name) {
-		return;
-	}
-
-	packet = swrap_marshall_packet(si, addr, type, buf, len, &packet_len);
+				   tcp_seq, tcp_ack, tcp_ctl, unreachable,
+				   &packet_len);
 	if (!packet) {
 		return;
 	}
@@ -1207,9 +1065,6 @@
 
 	switch (family) {
 	case AF_INET:
-#ifdef HAVE_IPV6
-	case AF_INET6:
-#endif
 		break;
 	case AF_UNIX:
 		return real_socket(family, type, protocol);
@@ -1231,16 +1086,6 @@
 	switch (protocol) {
 	case 0:
 		break;
-	case 6:
-		if (type == SOCK_STREAM) {
-			break;
-		}
-		/*fall through*/
-	case 17:
-		if (type == SOCK_DGRAM) {
-			break;
-		}
-		/*fall through*/
 	default:
 		errno = EPROTONOSUPPORT;
 		return -1;
@@ -1270,8 +1115,8 @@
 	socklen_t un_addrlen = sizeof(un_addr);
 	struct sockaddr_un un_my_addr;
 	socklen_t un_my_addrlen = sizeof(un_my_addr);
-	struct sockaddr *my_addr;
-	socklen_t my_addrlen, len;
+	struct sockaddr my_addr;
+	socklen_t my_addrlen = sizeof(my_addr);
 	int ret;
 
 	parent_si = find_socket_info(s);
@@ -1279,37 +1124,18 @@
 		return real_accept(s, addr, addrlen);
 	}
 
-	/* 
-	 * assume out sockaddr have the same size as the in parent
-	 * socket family
-	 */
-	my_addrlen = socket_length(parent_si->family);
-	if (my_addrlen <= 0) {
-		errno = EINVAL;
-		return -1;
-	}
-
-	my_addr = (struct sockaddr *)malloc(my_addrlen);
-	if (my_addr == NULL) {
-		return -1;
-	}
-
 	memset(&un_addr, 0, sizeof(un_addr));
 	memset(&un_my_addr, 0, sizeof(un_my_addr));
+	memset(&my_addr, 0, sizeof(my_addr));
 
 	ret = real_accept(s, (struct sockaddr *)&un_addr, &un_addrlen);
-	if (ret == -1) {
-		free(my_addr);
-		return ret;
-	}
+	if (ret == -1) return ret;
 
 	fd = ret;
 
-	len = my_addrlen;
 	ret = sockaddr_convert_from_un(parent_si, &un_addr, un_addrlen,
-				       parent_si->family, my_addr, &len);
+				       parent_si->family, addr, addrlen);
 	if (ret == -1) {
-		free(my_addr);
 		close(fd);
 		return ret;
 	}
@@ -1324,16 +1150,6 @@
 	child_si->bound = 1;
 	child_si->is_server = 1;
 
-	child_si->peername_len = len;
-	child_si->peername = sockaddr_dup(my_addr, len);
-
-	if (addr != NULL && addrlen != NULL) {
-	    *addrlen = len;
-	    if (*addrlen >= len)
-		memcpy(addr, my_addr, len);
-	    *addrlen = 0;
-	}
-
 	ret = real_getsockname(fd, (struct sockaddr *)&un_my_addr, &un_my_addrlen);
 	if (ret == -1) {
 		free(child_si);
@@ -1341,20 +1157,20 @@
 		return ret;
 	}
 
-	len = my_addrlen;
 	ret = sockaddr_convert_from_un(child_si, &un_my_addr, un_my_addrlen,
-				       child_si->family, my_addr, &len);
+				       child_si->family, &my_addr, &my_addrlen);
 	if (ret == -1) {
 		free(child_si);
-		free(my_addr);
 		close(fd);
 		return ret;
 	}
 
-	child_si->myname_len = len;
-	child_si->myname = sockaddr_dup(my_addr, len);
-	free(my_addr);
+	child_si->myname_len = my_addrlen;
+	child_si->myname = sockaddr_dup(&my_addr, my_addrlen);
 
+	child_si->peername_len = *addrlen;
+	child_si->peername = sockaddr_dup(addr, *addrlen);
+
 	SWRAP_DLIST_ADD(sockets, child_si);
 
 	swrap_dump_packet(child_si, addr, SWRAP_ACCEPT_SEND, NULL, 0);
@@ -1374,6 +1190,7 @@
 static int swrap_auto_bind(struct socket_info *si)
 {
 	struct sockaddr_un un_addr;
+	struct sockaddr_in in;
 	int i;
 	char type;
 	int ret;
@@ -1389,55 +1206,13 @@
 
 	un_addr.sun_family = AF_UNIX;
 
-	switch (si->family) {
-	case AF_INET: {
-		struct sockaddr_in in;
-
-		switch (si->type) {
-		case SOCK_STREAM:
-			type = SOCKET_TYPE_CHAR_TCP;
-			break;
-		case SOCK_DGRAM:
-		    	type = SOCKET_TYPE_CHAR_UDP;
-			break;
-		default:
-		    errno = ESOCKTNOSUPPORT;
-		    return -1;
-		}
-
-		memset(&in, 0, sizeof(in));
-		in.sin_family = AF_INET;
-		in.sin_addr.s_addr = htonl(127<<24 | 
-					   socket_wrapper_default_iface());
-
-		si->myname_len = sizeof(in);
-		si->myname = sockaddr_dup(&in, si->myname_len);
+	switch (si->type) {
+	case SOCK_STREAM:
+		type = SOCKET_TYPE_CHAR_TCP;
 		break;
-	}
-#ifdef HAVE_IPV6
-	case AF_INET6: {
-		struct sockaddr_in6 in6;
-
-		switch (si->type) {
-		case SOCK_STREAM:
-			type = SOCKET_TYPE_CHAR_TCP_V6;
-			break;
-		case SOCK_DGRAM:
-		    	type = SOCKET_TYPE_CHAR_UDP_V6;
-			break;
-		default:
-		    errno = ESOCKTNOSUPPORT;
-		    return -1;
-		}
-
-		memset(&in6, 0, sizeof(in6));
-		in6.sin6_family = AF_INET6;
-		in6.sin6_addr.s6_addr[0] = SW_IPV6_ADDRESS;
-		si->myname_len = sizeof(in6);
-		si->myname = sockaddr_dup(&in6, si->myname_len);
+	case SOCK_DGRAM:
+		type = SOCKET_TYPE_CHAR_UDP;
 		break;
-	}
-#endif
 	default:
 		errno = ESOCKTNOSUPPORT;
 		return -1;
@@ -1467,8 +1242,13 @@
 		return -1;
 	}
 
-	set_port(si->family, port, si->myname);
-
+	memset(&in, 0, sizeof(in));
+	in.sin_family = AF_INET;
+	in.sin_port   = htons(port);
+	in.sin_addr.s_addr = htonl(127<<24 | socket_wrapper_default_iface());
+	
+	si->myname_len = sizeof(in);
+	si->myname = sockaddr_dup(&in, si->myname_len);
 	return 0;
 }
 
@@ -1488,11 +1268,6 @@
 		if (ret == -1) return -1;
 	}
 
-	if (si->family != serv_addr->sa_family) {
-		errno = EINVAL;
-		return -1;
-	}
-
 	ret = sockaddr_convert_to_un(si, (const struct sockaddr *)serv_addr, addrlen, &un_addr, 0, NULL);
 	if (ret == -1) return -1;
 
@@ -1643,8 +1418,6 @@
 		return real_recvfrom(s, buf, len, flags, from, fromlen);
 	}
 
-	len = MIN(len, 1500);
-
 	/* irix 6.4 forgets to null terminate the sun_path string :-( */
 	memset(&un_addr, 0, sizeof(un_addr));
 	ret = real_recvfrom(s, buf, len, flags, (struct sockaddr *)&un_addr, &un_addrlen);
@@ -1673,51 +1446,38 @@
 		return real_sendto(s, buf, len, flags, to, tolen);
 	}
 
-	len = MIN(len, 1500);
+	if (si->bound == 0) {
+		ret = swrap_auto_bind(si);
+		if (ret == -1) return -1;
+	}
 
-	switch (si->type) {
-	case SOCK_STREAM:
-		ret = real_send(s, buf, len, flags);
-		break;
-	case SOCK_DGRAM:
-		if (si->bound == 0) {
-			ret = swrap_auto_bind(si);
-			if (ret == -1) return -1;
+	ret = sockaddr_convert_to_un(si, to, tolen, &un_addr, 0, &bcast);
+	if (ret == -1) return -1;
+
+	if (bcast) {
+		struct stat st;
+		unsigned int iface;
+		unsigned int prt = ntohs(((const struct sockaddr_in *)to)->sin_port);
+		char type;
+
+		type = SOCKET_TYPE_CHAR_UDP;
+
+		for(iface=0; iface <= MAX_WRAPPED_INTERFACES; iface++) {
+			snprintf(un_addr.sun_path, sizeof(un_addr.sun_path), "%s/"SOCKET_FORMAT, 
+				 socket_wrapper_dir(), type, iface, prt);
+			if (stat(un_addr.sun_path, &st) != 0) continue;
+
+			/* ignore the any errors in broadcast sends */
+			real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
 		}
-		
-		ret = sockaddr_convert_to_un(si, to, tolen, &un_addr, 0, &bcast);
-		if (ret == -1) return -1;
-		
-		if (bcast) {
-			struct stat st;
-			unsigned int iface;
-			unsigned int prt = ntohs(((const struct sockaddr_in *)to)->sin_port);
-			char type;
-			
-			type = SOCKET_TYPE_CHAR_UDP;
-			
-			for(iface=0; iface <= MAX_WRAPPED_INTERFACES; iface++) {
-				snprintf(un_addr.sun_path, sizeof(un_addr.sun_path), "%s/"SOCKET_FORMAT, 
-					 socket_wrapper_dir(), type, iface, prt);
-				if (stat(un_addr.sun_path, &st) != 0) continue;
-				
-				/* ignore the any errors in broadcast sends */
-				real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
-			}
-			
-			swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len);
-			
-			return len;
-		}
-		
-		ret = real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
-		break;
-	default:
-		ret = -1;
-		errno = EHOSTUNREACH;
-		break;
+
+		swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len);
+
+		return len;
 	}
-		
+
+	ret = real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
+
 	/* to give better errors */
 	if (ret == -1 && errno == ENOENT) {
 		errno = EHOSTUNREACH;
@@ -1768,8 +1528,6 @@
 		return real_recv(s, buf, len, flags);
 	}
 
-	len = MIN(len, 1500);
-
 	ret = real_recv(s, buf, len, flags);
 	if (ret == -1 && errno != EAGAIN && errno != ENOBUFS) {
 		swrap_dump_packet(si, NULL, SWRAP_RECV_RST, NULL, 0);
@@ -1792,8 +1550,6 @@
 		return real_send(s, buf, len, flags);
 	}
 
-	len = MIN(len, 1500);
-
 	ret = real_send(s, buf, len, flags);
 
 	if (ret == -1) {

Modified: branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.h
===================================================================
--- branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/socket_wrapper/socket_wrapper.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -36,8 +36,6 @@
 #ifndef __SOCKET_WRAPPER_H__
 #define __SOCKET_WRAPPER_H__
 
-const char *socket_wrapper_dir(void);
-unsigned int socket_wrapper_default_iface(void);
 int swrap_socket(int family, int type, int protocol);
 int swrap_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
 int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t addrlen);
@@ -132,5 +130,4 @@
 #define close(s)			swrap_close(s)
 #endif
 
-
 #endif /* __SOCKET_WRAPPER_H__ */

Deleted: branches/samba/upstream/source/lib/socket_wrapper/testsuite.c
===================================================================
--- branches/samba/upstream/source/lib/socket_wrapper/testsuite.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/socket_wrapper/testsuite.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,105 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   local testing of the socket wrapper
-
-   Copyright (C) Jelmer Vernooij 2007
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "system/network.h"
-#include "lib/socket_wrapper/socket_wrapper.h"
-#include "torture/torture.h"
-
-static char *old_dir = NULL;
-static char *old_iface = NULL;
-
-static void backup_env(void)
-{
-	old_dir = getenv("SOCKET_WRAPPER_DIR");
-	old_iface = getenv("SOCKET_WRAPPER_DEFAULT_IFACE");
-}
-
-static void restore_env(void)
-{
-	if (old_dir == NULL)
-		unsetenv("SOCKET_WRAPPER_DIR");
-	else
-		setenv("SOCKET_WRAPPER_DIR", old_dir, 1);
-	if (old_iface == NULL)
-		unsetenv("SOCKET_WRAPPER_DEFAULT_IFACE");
-	else
-		setenv("SOCKET_WRAPPER_DEFAULT_IFACE", old_iface, 1);
-}
-
-static bool test_socket_wrapper_dir(struct torture_context *tctx)
-{
-	backup_env();
-
-	setenv("SOCKET_WRAPPER_DIR", "foo", 1);
-	torture_assert_str_equal(tctx, socket_wrapper_dir(), "foo", "setting failed");
-	setenv("SOCKET_WRAPPER_DIR", "./foo", 1);
-	torture_assert_str_equal(tctx, socket_wrapper_dir(), "foo", "setting failed");
-	unsetenv("SOCKET_WRAPPER_DIR");
-	torture_assert_str_equal(tctx, socket_wrapper_dir(), NULL, "resetting failed");
-
-	restore_env();
-
-	return true;
-}
-
-static bool test_swrap_socket(struct torture_context *tctx)
-{
-	backup_env();
-	setenv("SOCKET_WRAPPER_DIR", "foo", 1);
-
-	torture_assert_int_equal(tctx, swrap_socket(1337, 1337, 0), -1, "unknown address family fails");
-	torture_assert_int_equal(tctx, errno, EAFNOSUPPORT, "correct errno set");
-	torture_assert_int_equal(tctx, swrap_socket(AF_INET, 1337, 0), -1, "unknown type fails");
-	torture_assert_int_equal(tctx, errno, EPROTONOSUPPORT, "correct errno set");
-	torture_assert_int_equal(tctx, swrap_socket(AF_INET, SOCK_DGRAM, 10), -1, "unknown protocol fails");
-	torture_assert_int_equal(tctx, errno, EPROTONOSUPPORT, "correct errno set");
-
-	restore_env();
-
-	return true;
-}
-
-unsigned int socket_wrapper_default_iface(void);
-static bool test_socket_wrapper_default_iface(struct torture_context *tctx)
-{
-	backup_env();
-	unsetenv("SOCKET_WRAPPER_DEFAULT_IFACE");
-	torture_assert_int_equal(tctx, socket_wrapper_default_iface(), 1, "unset");
-	setenv("SOCKET_WRAPPER_DEFAULT_IFACE", "2", 1);
-	torture_assert_int_equal(tctx, socket_wrapper_default_iface(), 2, "unset");
-	setenv("SOCKET_WRAPPER_DEFAULT_IFACE", "bla", 1);
-	torture_assert_int_equal(tctx, socket_wrapper_default_iface(), 1, "unset");
-	restore_env();
-	return true;
-}
-
-struct torture_suite *torture_local_socket_wrapper(TALLOC_CTX *mem_ctx)
-{
-	struct torture_suite *suite = torture_suite_create(mem_ctx, 
-													   "SOCKET-WRAPPER");
-
-	torture_suite_add_simple_test(suite, "socket_wrapper_dir", test_socket_wrapper_dir);
-	torture_suite_add_simple_test(suite, "socket", test_swrap_socket);
-	torture_suite_add_simple_test(suite, "socket_wrapper_default_iface", test_socket_wrapper_default_iface);
-
-	return suite;
-}

Modified: branches/samba/upstream/source/lib/substitute.c
===================================================================
--- branches/samba/upstream/source/lib/substitute.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/substitute.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,6 +21,8 @@
 
 #include "includes.h"
 
+extern struct current_user current_user;
+
 userdom_struct current_user_info;
 fstring remote_proto="UNKNOWN";
 
@@ -211,18 +213,11 @@
 /*******************************************************************
  Setup the strings used by substitutions. Called per packet. Ensure
  %U name is set correctly also.
-
- smb_name must be sanitized by alpha_strcpy
 ********************************************************************/
 
-void set_current_user_info(const char *smb_name, const char *unix_name,
-			   const char *full_name, const char *domain)
+void set_current_user_info(const userdom_struct *pcui)
 {
-	fstrcpy(current_user_info.smb_name, smb_name);
-	fstrcpy(current_user_info.unix_name, unix_name);
-	fstrcpy(current_user_info.full_name, full_name);
-	fstrcpy(current_user_info.domain, domain);
-
+	current_user_info = *pcui;
 	/* The following is safe as current_user_info.smb_name
 	 * has already been sanitised in register_existing_vuid. */
 
@@ -906,9 +901,9 @@
 {
 	return talloc_sub_advanced(ctx,
 				lp_servicename(SNUM(conn)),
-				conn->server_info->unix_name,
+				conn->user,
 				conn->connectpath,
-				conn->server_info->utok.gid,
+				conn->gid,
 				get_smb_user_name(),
 				"",
 				str);

Modified: branches/samba/upstream/source/lib/talloc/Makefile.in
===================================================================
--- branches/samba/upstream/source/lib/talloc/Makefile.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/Makefile.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -17,7 +17,6 @@
 PICFLAG = @PICFLAG@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 SHLIBEXT = @SHLIBEXT@
-SHLD = @SHLD@
 SHLD_FLAGS = @SHLD_FLAGS@
 tallocdir = @tallocdir@
 
@@ -28,8 +27,8 @@
 include $(tallocdir)/rules.mk
 include $(tallocdir)/talloc.mk
 
-$(TALLOC_SOLIB): $(LIBOBJ)
-	$(SHLD) $(SHLD_FLAGS) -o $@ $(LIBOBJ) @SONAMEFLAG@$(TALLOC_SONAME)
+$(SOLIB): $(LIBOBJ)
+	$(CC) $(SHLD_FLAGS) -o $@ $(LIBOBJ) @SONAMEFLAG@$(SONAME)
 
 check: test
 

Deleted: branches/samba/upstream/source/lib/talloc/NEWS
===================================================================
--- branches/samba/upstream/source/lib/talloc/NEWS	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/NEWS	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,13 +0,0 @@
-1.0.1	26 May 2007
-
- BUGS
-  
-   * Set name of correctly when using talloc_append_string() (metze)
-
- LICENSE
-   
-   * Change license of files in lib/replace to LGPL (was GPL). (jelmer)
-
-1.0.0	30 April 2007
- 
- Initial release.

Modified: branches/samba/upstream/source/lib/talloc/config.mk
===================================================================
--- branches/samba/upstream/source/lib/talloc/config.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/config.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,7 +1,8 @@
 [LIBRARY::LIBTALLOC]
-OUTPUT_TYPE = MERGED_OBJ
+VERSION = 1.2.0
+SO_VERSION = 1
+OBJ_FILES = talloc.o
+PC_FILE = talloc.pc
+MANPAGE = talloc.3
 CFLAGS = -Ilib/talloc
-
-LIBTALLOC_OBJ_FILES = lib/talloc/talloc.o
-
-MANPAGES += $(tallocdir)/talloc.3
+PUBLIC_HEADERS = talloc.h

Modified: branches/samba/upstream/source/lib/talloc/configure.ac
===================================================================
--- branches/samba/upstream/source/lib/talloc/configure.ac	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/configure.ac	2008-11-01 11:09:46 UTC (rev 2200)
@@ -18,7 +18,6 @@
 AC_LD_PICFLAG
 AC_LD_SHLIBEXT
 AC_LD_SONAMEFLAG
-AC_LIBREPLACE_SHLD
 AC_LIBREPLACE_SHLD_FLAGS
 
 AC_OUTPUT(Makefile talloc.pc)

Modified: branches/samba/upstream/source/lib/talloc/talloc.c
===================================================================
--- branches/samba/upstream/source/lib/talloc/talloc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/talloc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1437,12 +1437,12 @@
 #endif
 
 char *talloc_vasprintf(const void *t, const char *fmt, va_list ap)
-{
+{	
 	int len;
 	char *ret;
 	va_list ap2;
 	char c;
-
+	
 	/* this call looks strange, but it makes it work on older solaris boxes */
 	va_copy(ap2, ap);
 	len = vsnprintf(&c, 1, fmt, ap2);

Modified: branches/samba/upstream/source/lib/talloc/talloc.mk
===================================================================
--- branches/samba/upstream/source/lib/talloc/talloc.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/talloc.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,9 +1,9 @@
 TALLOC_OBJ = $(tallocdir)/talloc.o 
 
-TALLOC_SOLIB = libtalloc.$(SHLIBEXT).$(PACKAGE_VERSION)
-TALLOC_SONAME = libtalloc.$(SHLIBEXT).1
+SOLIB = libtalloc.$(SHLIBEXT).$(PACKAGE_VERSION)
+SONAME = libtalloc.$(SHLIBEXT).1
 
-all:: libtalloc.a $(TALLOC_SOLIB) testsuite
+all:: libtalloc.a $(SOLIB) testsuite
 
 testsuite:: $(LIBOBJ) testsuite.o
 	$(CC) $(CFLAGS) -o testsuite testsuite.o $(LIBOBJ) $(LIBS)
@@ -16,7 +16,7 @@
 	${INSTALLCMD} -d $(DESTDIR)$(libdir)
 	${INSTALLCMD} -d $(DESTDIR)$(libdir)/pkgconfig
 	${INSTALLCMD} -m 755 libtalloc.a $(DESTDIR)$(libdir)
-	${INSTALLCMD} -m 755 $(TALLOC_SOLIB) $(DESTDIR)$(libdir)
+	${INSTALLCMD} -m 755 $(SOLIB) $(DESTDIR)$(libdir)
 	${INSTALLCMD} -d $(DESTDIR)${includedir}
 	${INSTALLCMD} -m 644 $(srcdir)/talloc.h $(DESTDIR)$(includedir)
 	${INSTALLCMD} -m 644 talloc.pc $(DESTDIR)$(libdir)/pkgconfig
@@ -28,7 +28,7 @@
 doc:: talloc.3 talloc.3.html
 
 clean::
-	rm -f *~ $(LIBOBJ) $(TALLOC_SOLIB) libtalloc.a testsuite testsuite.o *.gc?? talloc.3 talloc.3.html
+	rm -f *~ $(LIBOBJ) $(SOLIB) libtalloc.a testsuite testsuite.o *.gc?? talloc.3 talloc.3.html
 
 test:: testsuite
 	./testsuite

Modified: branches/samba/upstream/source/lib/talloc/testsuite.c
===================================================================
--- branches/samba/upstream/source/lib/talloc/testsuite.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/testsuite.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -48,8 +48,7 @@
 }
 
 #define torture_assert_str_equal(test, arg1, arg2, desc) \
-	if (arg1 == NULL && arg2 == NULL) {				\
-	} else if (strcmp(arg1, arg2)) {			\
+	if (strcmp(arg1, arg2)) { \
 		printf("failure: %s [\n%s: Expected %s, got %s: %s\n]\n", \
 		   test, __location__, arg1, arg2, desc); \
 		return false; \

Modified: branches/samba/upstream/source/lib/talloc/web/index.html
===================================================================
--- branches/samba/upstream/source/lib/talloc/web/index.html	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/talloc/web/index.html	2008-11-01 11:09:46 UTC (rev 2200)
@@ -12,7 +12,7 @@
 made a huge difference in many aspects of Samba4 development.<p>
 
 To get started with talloc, I would recommend you read the <a
-href="http://samba.org/ftp/unpacked/talloc/talloc_guide.txt">talloc guide</a>.
+href="http://samba.org/ftp/unpacked/samba4/source/lib/talloc/talloc_guide.txt">talloc guide</a>.
 
 <h2>Discussion and bug reports</h2>
 
@@ -24,16 +24,19 @@
 
 <h2>Download</h2>
 
-You can download the latest release either via rsync or git.<br>
-<br>
-To fetch via git see the following guide:<br>
-<a href="http://wiki.samba.org/index.php/Using_Git_for_Samba_Development">Using Git for Samba Development</a><br>
-Once you have cloned the tree switch to the v4-0-test branch and cd into the source/lib/talloc directory.<br>
-<br>
+You can download the latest release either via rsync or anonymous
+svn. To fetch via svn use the following command:
+
+<pre>
+  svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/talloc talloc
+  svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/replace libreplace
+</pre>
+
 To fetch via rsync use this command:
 
 <pre>
-  rsync -Pavz samba.org::ftp/unpacked/talloc .
+  rsync -Pavz samba.org::ftp/unpacked/samba4/source/lib/talloc .
+  rsync -Pavz samba.org::ftp/unpacked/samba4/source/lib/libreplace .
 </pre>
 
 <hr>

Modified: branches/samba/upstream/source/lib/tdb/Makefile.in
===================================================================
--- branches/samba/upstream/source/lib/tdb/Makefile.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/Makefile.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -16,44 +16,97 @@
 CFLAGS = $(CPPFLAGS) @CFLAGS@
 LDFLAGS = @LDFLAGS@
 EXEEXT = @EXEEXT@
-SHLD = @SHLD@
 SHLD_FLAGS = @SHLD_FLAGS@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PICFLAG = @PICFLAG@
+SONAMEFLAG = @SONAMEFLAG@
 SHLIBEXT = @SHLIBEXT@
-SWIG = swig
-PYTHON = @PYTHON@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_BUILD_TARGET = @PYTHON_BUILD_TARGET@
-PYTHON_INSTALL_TARGET = @PYTHON_INSTALL_TARGET@
-PYTHON_CHECK_TARGET = @PYTHON_CHECK_TARGET@
-LIB_PATH_VAR = @LIB_PATH_VAR@
-tdbdir = @tdbdir@
 
+.PHONY: test
+
+PROGS = bin/tdbtool$(EXEEXT) bin/tdbdump$(EXEEXT) bin/tdbbackup$(EXEEXT)
+PROGS_NOINSTALL = bin/tdbtest$(EXEEXT) bin/tdbtorture$(EXEEXT)
+ALL_PROGS = $(PROGS) $(PROGS_NOINSTALL)
+
 TDB_OBJ = @TDB_OBJ@ @LIBREPLACEOBJ@
 
-default: all
+DIRS = bin common tools
 
-include $(tdbdir)/tdb.mk
-include $(tdbdir)/rules.mk
+SONAME = libtdb.$(SHLIBEXT).1
+SOLIB = libtdb.$(SHLIBEXT).$(PACKAGE_VERSION)
 
-all:: showflags dirs $(PROGS) $(TDB_SOLIB) libtdb.a $(PYTHON_BUILD_TARGET)
+all: showflags dirs $(PROGS) $(SOLIB) libtdb.a
 
-install:: all
-$(TDB_SOLIB): $(TDB_OBJ)
-	$(SHLD) $(SHLD_FLAGS) -o $@ $(TDB_OBJ) @SONAMEFLAG@$(TDB_SONAME)
+showflags:
+	@echo 'tdb will be compiled with flags:'
+	@echo '  CFLAGS = $(CFLAGS)'
+	@echo '  CPPFLAGS = $(CPPFLAGS)'
+	@echo '  LDFLAGS = $(LDFLAGS)'
+	@echo '  LIBS = $(LIBS)'
 
-check: test
+.SUFFIXES: .c .o
 
-test:: $(PYTHON_CHECK_TARGET)
-installcheck:: test install
+.c.o:
+	@echo Compiling $*.c
+	@mkdir -p `dirname $@`
+	@$(CC) $(PICFLAG) $(CFLAGS) -c $< -o $@
 
-clean::
-	rm -f *.o *.a */*.o
+dirs:
+	@mkdir -p $(DIRS)
 
-distclean:: clean
+install: all
+	mkdir -p $(DESTDIR)$(bindir)
+	mkdir -p $(DESTDIR)$(includedir)
+	mkdir -p $(DESTDIR)$(libdir) 
+	mkdir -p $(DESTDIR)$(libdir)/pkgconfig
+	cp $(PROGS) $(DESTDIR)$(bindir)
+	cp $(srcdir)/include/tdb.h $(DESTDIR)$(includedir)
+	cp tdb.pc $(DESTDIR)$(libdir)/pkgconfig
+	cp libtdb.a $(SOLIB) $(DESTDIR)$(libdir)
+
+libtdb.a: $(TDB_OBJ)
+	ar -rv libtdb.a $(TDB_OBJ)
+
+libtdb.(SHLIBEXT): $(SOLIB)
+	ln -s $< $@
+
+$(SONAME): $(SOLIB)
+	ln -s $< $@
+
+$(SOLIB): $(TDB_OBJ)
+	$(CC) $(SHLD_FLAGS) -o $@ $(TDB_OBJ) $(SONAMEFLAG)$(SONAME) 
+
+TDB_LIB = libtdb.a
+
+bin/tdbtest$(EXEEXT): tools/tdbtest.o $(TDB_LIB)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbtest tools/tdbtest.o -L. -ltdb -lgdbm
+
+bin/tdbtool$(EXEEXT): tools/tdbtool.o $(TDB_LIB)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbtool tools/tdbtool.o -L. -ltdb
+
+bin/tdbtorture$(EXEEXT): tools/tdbtorture.o $(TDB_LIB)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbtorture tools/tdbtorture.o -L. -ltdb
+
+bin/tdbdump$(EXEEXT): tools/tdbdump.o $(TDB_LIB)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbdump tools/tdbdump.o -L. -ltdb
+
+bin/tdbbackup$(EXEEXT): tools/tdbbackup.o $(TDB_LIB)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbbackup tools/tdbbackup.o -L. -ltdb
+
+test: bin/tdbtorture$(EXEEXT)
+	bin/tdbtorture$(EXEEXT)
+
+installcheck: test install
+
+clean:
+	rm -f $(ALL_PROGS) *.o *.a common/*.o tools/*.o tdb.pc
+	rm -f test.db test.tdb torture.tdb test.gdbm
+	rm -f $(SONAME) $(SOLIB) libtdb.a
+
+distclean: clean
+	rm -f *~ */*~
 	rm -f config.log config.status include/config.h config.cache
 	rm -f Makefile
 
-realdistclean:: distclean
+realdistclean: distclean
 	rm -f configure include/config.h.in

Modified: branches/samba/upstream/source/lib/tdb/autogen.sh
===================================================================
--- branches/samba/upstream/source/lib/tdb/autogen.sh	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/autogen.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -9,8 +9,6 @@
 
 rm -rf autom4te.cache
 
-swig -O -Wall -python -keyword tdb.i # Ignore errors for now
-
 echo "Now run ./configure and then make."
 exit 0
 

Modified: branches/samba/upstream/source/lib/tdb/config.mk
===================================================================
--- branches/samba/upstream/source/lib/tdb/config.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/config.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,57 +1,68 @@
 ################################################
 # Start SUBSYSTEM LIBTDB
 [LIBRARY::LIBTDB]
-OUTPUT_TYPE = STATIC_LIBRARY
+VERSION = 0.0.1
+SO_VERSION = 0
+PC_FILE = tdb.pc
+OBJ_FILES = \
+	common/tdb.o common/dump.o common/io.o common/lock.o \
+	common/open.o common/traverse.o common/freelist.o \
+	common/error.o common/transaction.o
 CFLAGS = -Ilib/tdb/include
+PUBLIC_HEADERS = include/tdb.h
 #
 # End SUBSYSTEM ldb
 ################################################
 
-LIBTDB_OBJ_FILES = $(addprefix lib/tdb/common/, \
-	tdb.o dump.o io.o lock.o \
-	open.o traverse.o freelist.o \
-	error.o transaction.o)
-
 ################################################
 # Start BINARY tdbtool
 [BINARY::tdbtool]
 INSTALLDIR = BINDIR
+OBJ_FILES= \
+		tools/tdbtool.o
 PRIVATE_DEPENDENCIES = \
 		LIBTDB
 # End BINARY tdbtool
 ################################################
 
-tdbtool_OBJ_FILES = lib/tdb/tools/tdbtool.o
-
 ################################################
 # Start BINARY tdbtorture
 [BINARY::tdbtorture]
 INSTALLDIR = BINDIR
+OBJ_FILES= \
+		tools/tdbtorture.o
 PRIVATE_DEPENDENCIES = \
 		LIBTDB
 # End BINARY tdbtorture
 ################################################
 
-tdbtorture_OBJ_FILES = lib/tdb/tools/tdbtorture.o
-
 ################################################
 # Start BINARY tdbdump
 [BINARY::tdbdump]
 INSTALLDIR = BINDIR
+OBJ_FILES= \
+		tools/tdbdump.o
 PRIVATE_DEPENDENCIES = \
 		LIBTDB
 # End BINARY tdbdump
 ################################################
 
-tdbdump_OBJ_FILES = lib/tdb/tools/tdbdump.o
-
 ################################################
 # Start BINARY tdbbackup
 [BINARY::tdbbackup]
 INSTALLDIR = BINDIR
+OBJ_FILES= \
+		tools/tdbbackup.o
 PRIVATE_DEPENDENCIES = \
 		LIBTDB
 # End BINARY tdbbackup
 ################################################
 
-tdbbackup_OBJ_FILES = lib/tdb/tools/tdbbackup.o
+#######################
+# Start LIBRARY swig_tdb
+[LIBRARY::swig_tdb]
+LIBRARY_REALNAME = swig/_tdb.$(SHLIBEXT)
+OBJ_FILES = swig/tdb_wrap.o
+PUBLIC_DEPENDENCIES = LIBTDB DYNCONFIG
+# End LIBRARY swig_tdb
+#######################

Modified: branches/samba/upstream/source/lib/tdb/configure.ac
===================================================================
--- branches/samba/upstream/source/lib/tdb/configure.ac	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/configure.ac	2008-11-01 11:09:46 UTC (rev 2200)
@@ -2,29 +2,13 @@
 AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
 AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
 AC_DEFUN([SMB_ENABLE], [echo -n ""])
-AC_INIT(tdb, 1.1.2)
+AC_INIT(tdb, 1.1.1)
 AC_CONFIG_SRCDIR([common/tdb.c])
 AC_CONFIG_HEADER(include/config.h)
 AC_LIBREPLACE_ALL_CHECKS
 AC_LD_SONAMEFLAG
 AC_LD_PICFLAG
 AC_LD_SHLIBEXT
-AC_LIBREPLACE_SHLD
 AC_LIBREPLACE_SHLD_FLAGS
-AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
 m4_include(libtdb.m4)
-AC_PATH_PROGS([PYTHON_CONFIG], [python2.6-config python2.5-config python2.4-config python-config])
-AC_PATH_PROGS([PYTHON], [python2.6 python2.5 python2.4 python])
-
-PYTHON_BUILD_TARGET="build-python"
-PYTHON_INSTALL_TARGET="install-python"
-PYTHON_CHECK_TARGET="check-python"
-AC_SUBST(PYTHON_BUILD_TARGET)
-AC_SUBST(PYTHON_INSTALL_TARGET)
-AC_SUBST(PYTHON_CHECK_TARGET)
-if test -z "$PYTHON_CONFIG"; then
-	PYTHON_BUILD_TARGET=""
-	PYTHON_INSTALL_TARGET=""
-	PYTHON_CHECK_TARGET=""
-fi
 AC_OUTPUT(Makefile tdb.pc)

Modified: branches/samba/upstream/source/lib/tdb/libtdb.m4
===================================================================
--- branches/samba/upstream/source/lib/tdb/libtdb.m4	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/libtdb.m4	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,3 +28,35 @@
 
 AC_HAVE_DECL(pread, [#include <unistd.h>])
 AC_HAVE_DECL(pwrite, [#include <unistd.h>])
+
+AC_MSG_CHECKING([for Python])
+
+PYTHON=
+ 
+AC_ARG_WITH(python,
+[  --with-python=PYTHONNAME  build Python libraries],
+[ case "${withval-python}" in
+  yes)
+        PYTHON=python
+        ;;
+  no)
+        PYTHON=
+        ;;
+  *)
+        PYTHON=${withval-python}
+        ;;
+  esac ])
+
+if test x"$PYTHON" != "x"; then
+	incdir=`python -c 'import sys; print "%s/include/python%d.%d" % (sys.prefix, sys.version_info[[0]], sys.version_info[[1]])'`
+	CPPFLAGS="$CPPFLAGS -I $incdir"
+fi
+
+if test x"$PYTHON" != "x"; then
+	AC_MSG_RESULT([${withval-python}])
+else
+	SMB_ENABLE(swig_tdb, NO)
+	AC_MSG_RESULT(no)
+fi
+
+AC_SUBST(PYTHON)

Deleted: branches/samba/upstream/source/lib/tdb/python.mk
===================================================================
--- branches/samba/upstream/source/lib/tdb/python.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/python.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,10 +0,0 @@
-[PYTHON::swig_tdb]
-LIBRARY_REALNAME = _tdb.$(SHLIBEXT)
-PUBLIC_DEPENDENCIES = LIBTDB DYNCONFIG
-
-swig_tdb_OBJ_FILES = $(tdbsrcdir)/tdb_wrap.o
-
-$(eval $(call python_py_module_template,tdb.py,$(tdbsrcdir)/tdb.py))
-
-$(swig_tdb_OBJ_FILES): CFLAGS+=$(CFLAG_NO_UNUSED_MACROS) $(CFLAG_NO_CAST_QUAL)
-

Deleted: branches/samba/upstream/source/lib/tdb/rules.mk
===================================================================
--- branches/samba/upstream/source/lib/tdb/rules.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/rules.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,21 +0,0 @@
-.SUFFIXES: .i _wrap.c
-
-.i_wrap.c: 
-	$(SWIG) -O -Wall -python -keyword $<
-
-showflags::
-	@echo 'tdb will be compiled with flags:'
-	@echo '  CFLAGS = $(CFLAGS)'
-	@echo '  CPPFLAGS = $(CPPFLAGS)'
-	@echo '  LDFLAGS = $(LDFLAGS)'
-	@echo '  LIBS = $(LIBS)'
-
-.SUFFIXES: .c .o
-
-.c.o:
-	@echo Compiling $*.c
-	@mkdir -p `dirname $@`
-	@$(CC) $(PICFLAG) $(CFLAGS) -c $< -o $@
-
-distclean::
-	rm -f *~ */*~

Copied: branches/samba/upstream/source/lib/tdb/swig (from rev 2163, branches/samba/upstream/source/lib/tdb/swig)

Deleted: branches/samba/upstream/source/lib/tdb/tdb.i
===================================================================
--- branches/samba/upstream/source/lib/tdb/tdb.i	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/tdb.i	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,323 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   Swig interface to tdb.
-
-   Copyright (C) 2004-2006 Tim Potter <tpot at samba.org>
-   Copyright (C) 2007 Jelmer Vernooij <jelmer at samba.org>
-
-     ** NOTE! The following LGPL license applies to the tdb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
-   
-   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 3 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, see <http://www.gnu.org/licenses/>.
-*/
-
-%define DOCSTRING
-"TDB is a simple key-value database similar to GDBM that supports multiple writers."
-%enddef
-
-%module(docstring=DOCSTRING) tdb
-
-%{
-
-/* This symbol is used in both includes.h and Python.h which causes an
-   annoying compiler warning. */
-
-#ifdef HAVE_FSTAT
-#undef HAVE_FSTAT
-#endif
-
-/* Include tdb headers */
-#include <stdint.h>
-#include <signal.h>
-#include <tdb.h>
-#include <fcntl.h>
-
-typedef TDB_CONTEXT tdb;
-%}
-
-/* The tdb functions will crash if a NULL tdb context is passed */
-
-%import exception.i
-%import stdint.i
-
-%typemap(check,noblock=1) TDB_CONTEXT* {
-	if ($1 == NULL)
-		SWIG_exception(SWIG_ValueError, 
-			"tdb context must be non-NULL");
-}
-
-/* In and out typemaps for the TDB_DATA structure.  This is converted to
-   and from the Python string type which can contain arbitrary binary
-   data.. */
-
-%typemap(in,noblock=1) TDB_DATA {
-    if ($input == Py_None) {
-        $1.dsize = 0;
-        $1.dptr = NULL;
-    } else if (!PyString_Check($input)) {
-		PyErr_SetString(PyExc_TypeError, "string arg expected");
-		return NULL;
-	} else {
-        $1.dsize = PyString_Size($input);
-        $1.dptr = (uint8_t *)PyString_AsString($input);
-    }
-}
-
-%typemap(out,noblock=1) TDB_DATA {
-	if ($1.dptr == NULL && $1.dsize == 0) {
-		$result = Py_None;
-	} else {
-		$result = PyString_FromStringAndSize((const char *)$1.dptr, $1.dsize);
-		free($1.dptr);
-    }
-}
-
-/* Treat a mode_t as an unsigned integer */
-typedef int mode_t;
-
-/* flags to tdb_store() */
-%constant int REPLACE = TDB_REPLACE;
-%constant int INSERT = TDB_INSERT;
-%constant int MODIFY = TDB_MODIFY;
-
-/* flags for tdb_open() */
-%constant int DEFAULT = TDB_DEFAULT;
-%constant int CLEAR_IF_FIRST = TDB_CLEAR_IF_FIRST;
-%constant int INTERNAL = TDB_INTERNAL;
-%constant int NOLOCK = TDB_NOLOCK;
-%constant int NOMMAP = TDB_NOMMAP;
-%constant int CONVERT = TDB_CONVERT;
-%constant int BIGENDIAN = TDB_BIGENDIAN;
-
-enum TDB_ERROR {
-     TDB_SUCCESS=0, 
-     TDB_ERR_CORRUPT, 
-     TDB_ERR_IO, 
-     TDB_ERR_LOCK, 
-     TDB_ERR_OOM, 
-     TDB_ERR_EXISTS, 
-     TDB_ERR_NOLOCK, 
-     TDB_ERR_LOCK_TIMEOUT,
-     TDB_ERR_NOEXIST, 
-     TDB_ERR_EINVAL, 
-     TDB_ERR_RDONLY
-};
-
-%rename(lock_all) tdb_context::lockall;
-%rename(unlock_all) tdb_context::unlockall;
-
-%rename(read_lock_all) tdb_context::lockall_read;
-%rename(read_unlock_all) tdb_context::unlockall_read;
-
-%typemap(default,noblock=1) int tdb_flags {
-    $1 = TDB_DEFAULT;
-}
-
-%typemap(default,noblock=1) int flags {
-    $1 = O_RDWR;
-}
-
-%typemap(default,noblock=1) int hash_size {
-    $1 = 0;
-}
-
-%typemap(default,noblock=1) mode_t mode {
-    $1 = 0600;
-}
-
-%typemap(default,noblock=1) int flag {
-    $1 = TDB_REPLACE;
-}
-
-%rename(Tdb) tdb_context;
-%feature("docstring") tdb_context "A TDB file.";
-%typemap(out,noblock=1) tdb * {
-    /* Throw an IOError exception from errno if tdb_open() returns NULL */
-    if ($1 == NULL) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        SWIG_fail;
-    }
-    $result = SWIG_NewPointerObj($1, $1_descriptor, 0);
-}
-
-typedef struct tdb_context {
-    %extend {
-        %feature("docstring") tdb "S.__init__(name,hash_size=0,tdb_flags=TDB_DEFAULT,flags=O_RDWR,mode=0600)\n"
-                                  "Open a TDB file.";
-        tdb(const char *name, int hash_size, int tdb_flags, int flags, mode_t mode) {
-            return tdb_open(name, hash_size, tdb_flags, flags, mode);
-        }
-        %feature("docstring") error "S.error() -> int\n"
-                                    "Find last error number returned by operation on this TDB.";
-        enum TDB_ERROR error();
-        ~tdb() { tdb_close($self); }
-        %feature("docstring") close "S.close() -> None\n"
-                                    "Close the TDB file.";
-        int close();
-        int append(TDB_DATA key, TDB_DATA new_dbuf);
-        %feature("docstring") errorstr "S.errorstr() -> errorstring\n"
-                                        "Obtain last error message.";
-        const char *errorstr();
-        %rename(get) fetch;
-        %feature("docstring") fetch "S.fetch(key) -> value\n"
-                                        "Fetch a value.";
-        TDB_DATA fetch(TDB_DATA key);
-        %feature("docstring") delete "S.delete(key) -> None\n"
-                                        "Delete an entry.";
-        int delete(TDB_DATA key);
-        %feature("docstring") store "S.store(key, value, flag=TDB_REPLACE) -> None\n"
-                                        "Store an entry.";
-        int store(TDB_DATA key, TDB_DATA dbuf, int flag);
-        %feature("docstring") exists "S.exists(key) -> bool\n"
-                                        "Check whether key exists in this database.";
-        int exists(TDB_DATA key);
-        %feature("docstring") firstkey "S.firstkey() -> data\n"
-                                        "Return the first key in this database.";
-        TDB_DATA firstkey();
-        %feature("docstring") nextkey "S.nextkey(prev) -> data\n"
-                                        "Return the next key in this database.";
-        TDB_DATA nextkey(TDB_DATA key);
-        %feature("docstring") lockall "S.lockall() -> bool";
-        int lockall();
-        %feature("docstring") unlockall "S.unlockall() -> bool";
-        int unlockall();
-        %feature("docstring") unlockall "S.lockall_read() -> bool";
-        int lockall_read();
-        %feature("docstring") unlockall "S.unlockall_read() -> bool";
-        int unlockall_read();
-        %feature("docstring") reopen "S.reopen() -> bool\n"
-                                        "Reopen this file.";
-        int reopen();
-        %feature("docstring") transaction_start "S.transaction_start() -> None\n"
-                                        "Start a new transaction.";
-        int transaction_start();
-        %feature("docstring") transaction_commit "S.transaction_commit() -> None\n"
-                                        "Commit the currently active transaction.";
-        int transaction_commit();
-        %feature("docstring") transaction_cancel "S.transaction_cancel() -> None\n"
-                                        "Cancel the currently active transaction.";
-        int transaction_cancel();
-        int transaction_recover();
-        %feature("docstring") hash_size "S.hash_size() -> int";
-        int hash_size();
-        %feature("docstring") map_size "S.map_size() -> int";
-        size_t map_size();
-        %feature("docstring") get_flags "S.get_flags() -> int";
-        int get_flags();
-        %feature("docstring") set_max_dead "S.set_max_dead(int) -> None";
-        void set_max_dead(int max_dead);
-        %feature("docstring") name "S.name() -> path\n" \
-                                   "Return filename of this TDB file.";
-        const char *name();
-    }
-
-    %pythoncode {
-    def __repr__(self):
-        return "Tdb('%s')" % self.name()
-
-    # Random access to keys, values
-    def __getitem__(self, key):
-        result = self.get(key)
-        if result is None:
-            raise KeyError, '%s: %s' % (key, self.errorstr())
-        return result
-
-    def __setitem__(self, key, item):
-        if self.store(key, item) == -1:
-            raise IOError, self.errorstr()
-
-    def __delitem__(self, key):
-        if not self.exists(key):
-            raise KeyError, '%s: %s' % (key, self.errorstr())
-        self.delete(key)
-
-    def __contains__(self, key):
-        return self.exists(key) != 0
-
-    def has_key(self, key):
-        return self.exists(key) != 0
-
-    def fetch_uint32(self, key):
-        data = self.get(key)
-        if data is None:
-            return None
-        import struct
-        return struct.unpack("<L", data)[0]
-
-    def fetch_int32(self, key):
-        data = self.get(key)
-        if data is None:
-            return None
-        import struct
-        return struct.unpack("<l", data)[0]
-
-    # Tdb iterator
-    class TdbIterator:
-        def __init__(self, tdb):
-            self.tdb = tdb
-            self.key = None
-
-        def __iter__(self):
-            return self
-            
-        def next(self):
-            if self.key is None:
-                self.key = self.tdb.firstkey()
-                if self.key is None:
-                    raise StopIteration
-                return self.key
-            else:
-                self.key = self.tdb.nextkey(self.key)
-                if self.key is None:
-                    raise StopIteration
-                return self.key
-
-    def __iter__(self):
-        return self.TdbIterator(self)
-
-    # Implement other dict functions using TdbIterator
-
-    def keys(self):
-        return [k for k in iter(self)]
-
-    def values(self):
-        return [self[k] for k in iter(self)]
-
-    def items(self):
-        return [(k, self[k]) for k in iter(self)]
-
-    def __len__(self):
-        return len(self.keys())
-
-    def clear(self):
-        for k in iter(self):
-            del(self[k])
-
-    def iterkeys(self):
-        for k in iter(self):
-            yield k
-       
-    def itervalues(self):
-        for k in iter(self):
-            yield self[k]
-
-    def iteritems(self):
-        for k in iter(self):
-            yield (k, self[k])
-
-    # TODO: any other missing methods for container types
-    }
-} tdb;

Deleted: branches/samba/upstream/source/lib/tdb/tdb.mk
===================================================================
--- branches/samba/upstream/source/lib/tdb/tdb.mk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/tdb.mk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,86 +0,0 @@
-dirs::
-	@mkdir -p bin common tools
-
-PROGS = bin/tdbtool$(EXEEXT) bin/tdbdump$(EXEEXT) bin/tdbbackup$(EXEEXT)
-PROGS_NOINSTALL = bin/tdbtest$(EXEEXT) bin/tdbtorture$(EXEEXT)
-ALL_PROGS = $(PROGS) $(PROGS_NOINSTALL)
-
-TDB_SONAME = libtdb.$(SHLIBEXT).1
-TDB_SOLIB = libtdb.$(SHLIBEXT).$(PACKAGE_VERSION)
-
-TDB_LIB = libtdb.a
-
-bin/tdbtest$(EXEEXT): tools/tdbtest.o $(TDB_LIB)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbtest tools/tdbtest.o -L. -ltdb -lgdbm
-
-bin/tdbtool$(EXEEXT): tools/tdbtool.o $(TDB_LIB)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbtool tools/tdbtool.o -L. -ltdb
-
-bin/tdbtorture$(EXEEXT): tools/tdbtorture.o $(TDB_LIB)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbtorture tools/tdbtorture.o -L. -ltdb
-
-bin/tdbdump$(EXEEXT): tools/tdbdump.o $(TDB_LIB)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbdump tools/tdbdump.o -L. -ltdb
-
-bin/tdbbackup$(EXEEXT): tools/tdbbackup.o $(TDB_LIB)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o bin/tdbbackup tools/tdbbackup.o -L. -ltdb
-
-test:: bin/tdbtorture$(EXEEXT) $(TDB_SONAME)
-	$(LIB_PATH_VAR)=. bin/tdbtorture$(EXEEXT)
-
-clean:: 
-	rm -f test.db test.tdb torture.tdb test.gdbm
-	rm -f $(TDB_SONAME) $(TDB_SOLIB) libtdb.a libtdb.$(SHLIBEXT)
-	rm -f $(ALL_PROGS) tdb.pc
-
-build-python:: _tdb.$(SHLIBEXT) 
-
-tdb_wrap.o: $(tdbdir)/tdb_wrap.c
-	$(CC) $(PICFLAG) -c $(tdbdir)/tdb_wrap.c $(CFLAGS) `$(PYTHON_CONFIG) --cflags`
-
-_tdb.$(SHLIBEXT): libtdb.$(SHLIBEXT) tdb_wrap.o
-	$(SHLD) $(SHLD_FLAGS) -o $@ tdb_wrap.o -L. -ltdb `$(PYTHON_CONFIG) --ldflags`
-
-install:: installdirs installbin installheaders installlibs \
-		  $(PYTHON_INSTALL_TARGET)
-
-install-python:: build-python
-	mkdir -p $(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(0, prefix='$(prefix)')"` \
-		$(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='$(prefix)')"`
-	cp $(tdbdir)/tdb.py $(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(0, prefix='$(prefix)')"`
-	cp _tdb.$(SHLIBEXT) $(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='$(prefix)')"`
-
-check-python:: build-python $(TDB_SONAME)
-	$(LIB_PATH_VAR)=. PYTHONPATH=".:$(tdbdir)" $(PYTHON) $(tdbdir)/python/tests/simple.py
-
-install-swig::
-	mkdir -p $(DESTDIR)`$(SWIG) -swiglib`
-	cp tdb.i $(DESTDIR)`$(SWIG) -swiglib`
-
-clean::
-	rm -f _tdb.$(SHLIBEXT)
-
-installdirs::
-	mkdir -p $(DESTDIR)$(bindir)
-	mkdir -p $(DESTDIR)$(includedir)
-	mkdir -p $(DESTDIR)$(libdir) 
-	mkdir -p $(DESTDIR)$(libdir)/pkgconfig
-
-installbin:: all installdirs
-	cp $(PROGS) $(DESTDIR)$(bindir)
-
-installheaders:: installdirs
-	cp $(srcdir)/include/tdb.h $(DESTDIR)$(includedir)
-
-installlibs:: all installdirs
-	cp tdb.pc $(DESTDIR)$(libdir)/pkgconfig
-	cp libtdb.a $(TDB_SOLIB) $(DESTDIR)$(libdir)
-
-libtdb.a: $(TDB_OBJ)
-	ar -rv libtdb.a $(TDB_OBJ)
-
-libtdb.$(SHLIBEXT): $(TDB_SOLIB)
-	ln -fs $< $@
-
-$(TDB_SONAME): $(TDB_SOLIB)
-	ln -fs $< $@

Modified: branches/samba/upstream/source/lib/tdb/tdb.pc.in
===================================================================
--- branches/samba/upstream/source/lib/tdb/tdb.pc.in	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/tdb.pc.in	2008-11-01 11:09:46 UTC (rev 2200)
@@ -8,4 +8,3 @@
 Version: @PACKAGE_VERSION@
 Libs: -L${libdir} -ltdb
 Cflags: -I${includedir} 
-URL: http://tdb.samba.org/

Deleted: branches/samba/upstream/source/lib/tdb/tdb.py
===================================================================
--- branches/samba/upstream/source/lib/tdb/tdb.py	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/tdb.py	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,341 +0,0 @@
-# This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.35
-#
-# Don't modify this file, modify the SWIG interface instead.
-
-"""
-TDB is a simple key-value database similar to GDBM that supports multiple writers.
-"""
-
-import _tdb
-import new
-new_instancemethod = new.instancemethod
-try:
-    _swig_property = property
-except NameError:
-    pass # Python < 2.2 doesn't have 'property'.
-def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
-    if (name == "thisown"): return self.this.own(value)
-    if (name == "this"):
-        if type(value).__name__ == 'PySwigObject':
-            self.__dict__[name] = value
-            return
-    method = class_type.__swig_setmethods__.get(name,None)
-    if method: return method(self,value)
-    if (not static) or hasattr(self,name):
-        self.__dict__[name] = value
-    else:
-        raise AttributeError("You cannot add attributes to %s" % self)
-
-def _swig_setattr(self,class_type,name,value):
-    return _swig_setattr_nondynamic(self,class_type,name,value,0)
-
-def _swig_getattr(self,class_type,name):
-    if (name == "thisown"): return self.this.own()
-    method = class_type.__swig_getmethods__.get(name,None)
-    if method: return method(self)
-    raise AttributeError,name
-
-def _swig_repr(self):
-    try: strthis = "proxy of " + self.this.__repr__()
-    except: strthis = ""
-    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
-
-import types
-try:
-    _object = types.ObjectType
-    _newclass = 1
-except AttributeError:
-    class _object : pass
-    _newclass = 0
-del types
-
-
-def _swig_setattr_nondynamic_method(set):
-    def set_attr(self,name,value):
-        if (name == "thisown"): return self.this.own(value)
-        if hasattr(self,name) or (name == "this"):
-            set(self,name,value)
-        else:
-            raise AttributeError("You cannot add attributes to %s" % self)
-    return set_attr
-
-
-REPLACE = _tdb.REPLACE
-INSERT = _tdb.INSERT
-MODIFY = _tdb.MODIFY
-DEFAULT = _tdb.DEFAULT
-CLEAR_IF_FIRST = _tdb.CLEAR_IF_FIRST
-INTERNAL = _tdb.INTERNAL
-NOLOCK = _tdb.NOLOCK
-NOMMAP = _tdb.NOMMAP
-CONVERT = _tdb.CONVERT
-BIGENDIAN = _tdb.BIGENDIAN
-TDB_SUCCESS = _tdb.TDB_SUCCESS
-TDB_ERR_CORRUPT = _tdb.TDB_ERR_CORRUPT
-TDB_ERR_IO = _tdb.TDB_ERR_IO
-TDB_ERR_LOCK = _tdb.TDB_ERR_LOCK
-TDB_ERR_OOM = _tdb.TDB_ERR_OOM
-TDB_ERR_EXISTS = _tdb.TDB_ERR_EXISTS
-TDB_ERR_NOLOCK = _tdb.TDB_ERR_NOLOCK
-TDB_ERR_LOCK_TIMEOUT = _tdb.TDB_ERR_LOCK_TIMEOUT
-TDB_ERR_NOEXIST = _tdb.TDB_ERR_NOEXIST
-TDB_ERR_EINVAL = _tdb.TDB_ERR_EINVAL
-TDB_ERR_RDONLY = _tdb.TDB_ERR_RDONLY
-class Tdb(object):
-    """A TDB file."""
-    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
-    __repr__ = _swig_repr
-    def __init__(self, *args, **kwargs): 
-        """
-        S.__init__(name,hash_size=0,tdb_flags=TDB_DEFAULT,flags=O_RDWR,mode=0600)
-        Open a TDB file.
-        """
-        _tdb.Tdb_swiginit(self,_tdb.new_Tdb(*args, **kwargs))
-    def error(*args, **kwargs):
-        """
-        S.error() -> int
-        Find last error number returned by operation on this TDB.
-        """
-        return _tdb.Tdb_error(*args, **kwargs)
-
-    __swig_destroy__ = _tdb.delete_Tdb
-    def close(*args, **kwargs):
-        """
-        S.close() -> None
-        Close the TDB file.
-        """
-        return _tdb.Tdb_close(*args, **kwargs)
-
-    def errorstr(*args, **kwargs):
-        """
-        S.errorstr() -> errorstring
-        Obtain last error message.
-        """
-        return _tdb.Tdb_errorstr(*args, **kwargs)
-
-    def get(*args, **kwargs):
-        """
-        S.fetch(key) -> value
-        Fetch a value.
-        """
-        return _tdb.Tdb_get(*args, **kwargs)
-
-    def delete(*args, **kwargs):
-        """
-        S.delete(key) -> None
-        Delete an entry.
-        """
-        return _tdb.Tdb_delete(*args, **kwargs)
-
-    def store(*args, **kwargs):
-        """
-        S.store(key, value, flag=TDB_REPLACE) -> None
-        Store an entry.
-        """
-        return _tdb.Tdb_store(*args, **kwargs)
-
-    def exists(*args, **kwargs):
-        """
-        S.exists(key) -> bool
-        Check whether key exists in this database.
-        """
-        return _tdb.Tdb_exists(*args, **kwargs)
-
-    def firstkey(*args, **kwargs):
-        """
-        S.firstkey() -> data
-        Return the first key in this database.
-        """
-        return _tdb.Tdb_firstkey(*args, **kwargs)
-
-    def nextkey(*args, **kwargs):
-        """
-        S.nextkey(prev) -> data
-        Return the next key in this database.
-        """
-        return _tdb.Tdb_nextkey(*args, **kwargs)
-
-    def lock_all(*args, **kwargs):
-        """S.lockall() -> bool"""
-        return _tdb.Tdb_lock_all(*args, **kwargs)
-
-    def unlock_all(*args, **kwargs):
-        """S.unlockall() -> bool"""
-        return _tdb.Tdb_unlock_all(*args, **kwargs)
-
-    def reopen(*args, **kwargs):
-        """
-        S.reopen() -> bool
-        Reopen this file.
-        """
-        return _tdb.Tdb_reopen(*args, **kwargs)
-
-    def transaction_start(*args, **kwargs):
-        """
-        S.transaction_start() -> None
-        Start a new transaction.
-        """
-        return _tdb.Tdb_transaction_start(*args, **kwargs)
-
-    def transaction_commit(*args, **kwargs):
-        """
-        S.transaction_commit() -> None
-        Commit the currently active transaction.
-        """
-        return _tdb.Tdb_transaction_commit(*args, **kwargs)
-
-    def transaction_cancel(*args, **kwargs):
-        """
-        S.transaction_cancel() -> None
-        Cancel the currently active transaction.
-        """
-        return _tdb.Tdb_transaction_cancel(*args, **kwargs)
-
-    def hash_size(*args, **kwargs):
-        """S.hash_size() -> int"""
-        return _tdb.Tdb_hash_size(*args, **kwargs)
-
-    def map_size(*args, **kwargs):
-        """S.map_size() -> int"""
-        return _tdb.Tdb_map_size(*args, **kwargs)
-
-    def get_flags(*args, **kwargs):
-        """S.get_flags() -> int"""
-        return _tdb.Tdb_get_flags(*args, **kwargs)
-
-    def set_max_dead(*args, **kwargs):
-        """S.set_max_dead(int) -> None"""
-        return _tdb.Tdb_set_max_dead(*args, **kwargs)
-
-    def name(*args, **kwargs):
-        """
-        S.name() -> path
-        Return filename of this TDB file.
-        """
-        return _tdb.Tdb_name(*args, **kwargs)
-
-    def __repr__(self):
-        return "Tdb('%s')" % self.name()
-
-
-    def __getitem__(self, key):
-        result = self.get(key)
-        if result is None:
-            raise KeyError, '%s: %s' % (key, self.errorstr())
-        return result
-
-    def __setitem__(self, key, item):
-        if self.store(key, item) == -1:
-            raise IOError, self.errorstr()
-
-    def __delitem__(self, key):
-        if not self.exists(key):
-            raise KeyError, '%s: %s' % (key, self.errorstr())
-        self.delete(key)
-
-    def __contains__(self, key):
-        return self.exists(key) != 0
-
-    def has_key(self, key):
-        return self.exists(key) != 0
-
-    def fetch_uint32(self, key):
-        data = self.get(key)
-        if data is None:
-            return None
-        import struct
-        return struct.unpack("<L", data)[0]
-
-    def fetch_int32(self, key):
-        data = self.get(key)
-        if data is None:
-            return None
-        import struct
-        return struct.unpack("<l", data)[0]
-
-
-    class TdbIterator:
-        def __init__(self, tdb):
-            self.tdb = tdb
-            self.key = None
-
-        def __iter__(self):
-            return self
-            
-        def next(self):
-            if self.key is None:
-                self.key = self.tdb.firstkey()
-                if self.key is None:
-                    raise StopIteration
-                return self.key
-            else:
-                self.key = self.tdb.nextkey(self.key)
-                if self.key is None:
-                    raise StopIteration
-                return self.key
-
-    def __iter__(self):
-        return self.TdbIterator(self)
-
-
-
-    def keys(self):
-        return [k for k in iter(self)]
-
-    def values(self):
-        return [self[k] for k in iter(self)]
-
-    def items(self):
-        return [(k, self[k]) for k in iter(self)]
-
-    def __len__(self):
-        return len(self.keys())
-
-    def clear(self):
-        for k in iter(self):
-            del(self[k])
-
-    def iterkeys(self):
-        for k in iter(self):
-            yield k
-       
-    def itervalues(self):
-        for k in iter(self):
-            yield self[k]
-
-    def iteritems(self):
-        for k in iter(self):
-            yield (k, self[k])
-
-
-
-Tdb.error = new_instancemethod(_tdb.Tdb_error,None,Tdb)
-Tdb.close = new_instancemethod(_tdb.Tdb_close,None,Tdb)
-Tdb.append = new_instancemethod(_tdb.Tdb_append,None,Tdb)
-Tdb.errorstr = new_instancemethod(_tdb.Tdb_errorstr,None,Tdb)
-Tdb.get = new_instancemethod(_tdb.Tdb_get,None,Tdb)
-Tdb.delete = new_instancemethod(_tdb.Tdb_delete,None,Tdb)
-Tdb.store = new_instancemethod(_tdb.Tdb_store,None,Tdb)
-Tdb.exists = new_instancemethod(_tdb.Tdb_exists,None,Tdb)
-Tdb.firstkey = new_instancemethod(_tdb.Tdb_firstkey,None,Tdb)
-Tdb.nextkey = new_instancemethod(_tdb.Tdb_nextkey,None,Tdb)
-Tdb.lock_all = new_instancemethod(_tdb.Tdb_lock_all,None,Tdb)
-Tdb.unlock_all = new_instancemethod(_tdb.Tdb_unlock_all,None,Tdb)
-Tdb.read_lock_all = new_instancemethod(_tdb.Tdb_read_lock_all,None,Tdb)
-Tdb.read_unlock_all = new_instancemethod(_tdb.Tdb_read_unlock_all,None,Tdb)
-Tdb.reopen = new_instancemethod(_tdb.Tdb_reopen,None,Tdb)
-Tdb.transaction_start = new_instancemethod(_tdb.Tdb_transaction_start,None,Tdb)
-Tdb.transaction_commit = new_instancemethod(_tdb.Tdb_transaction_commit,None,Tdb)
-Tdb.transaction_cancel = new_instancemethod(_tdb.Tdb_transaction_cancel,None,Tdb)
-Tdb.transaction_recover = new_instancemethod(_tdb.Tdb_transaction_recover,None,Tdb)
-Tdb.hash_size = new_instancemethod(_tdb.Tdb_hash_size,None,Tdb)
-Tdb.map_size = new_instancemethod(_tdb.Tdb_map_size,None,Tdb)
-Tdb.get_flags = new_instancemethod(_tdb.Tdb_get_flags,None,Tdb)
-Tdb.set_max_dead = new_instancemethod(_tdb.Tdb_set_max_dead,None,Tdb)
-Tdb.name = new_instancemethod(_tdb.Tdb_name,None,Tdb)
-Tdb_swigregister = _tdb.Tdb_swigregister
-Tdb_swigregister(Tdb)
-
-
-

Deleted: branches/samba/upstream/source/lib/tdb/tdb_wrap.c
===================================================================
--- branches/samba/upstream/source/lib/tdb/tdb_wrap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/tdb/tdb_wrap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,4307 +0,0 @@
-/* ----------------------------------------------------------------------------
- * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.35
- * 
- * This file is not intended to be easily readable and contains a number of 
- * coding conventions designed to improve portability and efficiency. Do not make
- * changes to this file unless you know what you are doing--modify the SWIG 
- * interface file instead. 
- * ----------------------------------------------------------------------------- */
-
-#define SWIGPYTHON
-#define SWIG_PYTHON_NO_BUILD_NONE
-/* -----------------------------------------------------------------------------
- *  This section contains generic SWIG labels for method/variable
- *  declarations/attributes, and other compiler dependent labels.
- * ----------------------------------------------------------------------------- */
-
-/* template workaround for compilers that cannot correctly implement the C++ standard */
-#ifndef SWIGTEMPLATEDISAMBIGUATOR
-# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
-#  define SWIGTEMPLATEDISAMBIGUATOR template
-# elif defined(__HP_aCC)
-/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
-/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
-#  define SWIGTEMPLATEDISAMBIGUATOR template
-# else
-#  define SWIGTEMPLATEDISAMBIGUATOR
-# endif
-#endif
-
-/* inline attribute */
-#ifndef SWIGINLINE
-# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
-#   define SWIGINLINE inline
-# else
-#   define SWIGINLINE
-# endif
-#endif
-
-/* attribute recognised by some compilers to avoid 'unused' warnings */
-#ifndef SWIGUNUSED
-# if defined(__GNUC__)
-#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-#     define SWIGUNUSED __attribute__ ((__unused__)) 
-#   else
-#     define SWIGUNUSED
-#   endif
-# elif defined(__ICC)
-#   define SWIGUNUSED __attribute__ ((__unused__)) 
-# else
-#   define SWIGUNUSED 
-# endif
-#endif
-
-#ifndef SWIGUNUSEDPARM
-# ifdef __cplusplus
-#   define SWIGUNUSEDPARM(p)
-# else
-#   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
-# endif
-#endif
-
-/* internal SWIG method */
-#ifndef SWIGINTERN
-# define SWIGINTERN static SWIGUNUSED
-#endif
-
-/* internal inline SWIG method */
-#ifndef SWIGINTERNINLINE
-# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
-#endif
-
-/* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#  ifndef GCC_HASCLASSVISIBILITY
-#    define GCC_HASCLASSVISIBILITY
-#  endif
-#endif
-
-#ifndef SWIGEXPORT
-# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#   if defined(STATIC_LINKED)
-#     define SWIGEXPORT
-#   else
-#     define SWIGEXPORT __declspec(dllexport)
-#   endif
-# else
-#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
-#     define SWIGEXPORT __attribute__ ((visibility("default")))
-#   else
-#     define SWIGEXPORT
-#   endif
-# endif
-#endif
-
-/* calling conventions for Windows */
-#ifndef SWIGSTDCALL
-# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#   define SWIGSTDCALL __stdcall
-# else
-#   define SWIGSTDCALL
-# endif 
-#endif
-
-/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
-#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
-# define _CRT_SECURE_NO_DEPRECATE
-#endif
-
-/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
-#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
-# define _SCL_SECURE_NO_DEPRECATE
-#endif
-
-
-
-/* Python.h has to appear first */
-#include <Python.h>
-
-/* -----------------------------------------------------------------------------
- * swigrun.swg
- *
- * This file contains generic CAPI SWIG runtime support for pointer
- * type checking.
- * ----------------------------------------------------------------------------- */
-
-/* This should only be incremented when either the layout of swig_type_info changes,
-   or for whatever reason, the runtime changes incompatibly */
-#define SWIG_RUNTIME_VERSION "4"
-
-/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
-#ifdef SWIG_TYPE_TABLE
-# define SWIG_QUOTE_STRING(x) #x
-# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
-# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
-#else
-# define SWIG_TYPE_TABLE_NAME
-#endif
-
-/*
-  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
-  creating a static or dynamic library from the swig runtime code.
-  In 99.9% of the cases, swig just needs to declare them as 'static'.
-  
-  But only do this if is strictly necessary, ie, if you have problems
-  with your compiler or so.
-*/
-
-#ifndef SWIGRUNTIME
-# define SWIGRUNTIME SWIGINTERN
-#endif
-
-#ifndef SWIGRUNTIMEINLINE
-# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
-#endif
-
-/*  Generic buffer size */
-#ifndef SWIG_BUFFER_SIZE
-# define SWIG_BUFFER_SIZE 1024
-#endif
-
-/* Flags for pointer conversions */
-#define SWIG_POINTER_DISOWN        0x1
-#define SWIG_CAST_NEW_MEMORY       0x2
-
-/* Flags for new pointer objects */
-#define SWIG_POINTER_OWN           0x1
-
-
-/* 
-   Flags/methods for returning states.
-   
-   The swig conversion methods, as ConvertPtr, return and integer 
-   that tells if the conversion was successful or not. And if not,
-   an error code can be returned (see swigerrors.swg for the codes).
-   
-   Use the following macros/flags to set or process the returning
-   states.
-   
-   In old swig versions, you usually write code as:
-
-     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
-       // success code
-     } else {
-       //fail code
-     }
-
-   Now you can be more explicit as:
-
-    int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
-    if (SWIG_IsOK(res)) {
-      // success code
-    } else {
-      // fail code
-    }
-
-   that seems to be the same, but now you can also do
-
-    Type *ptr;
-    int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
-    if (SWIG_IsOK(res)) {
-      // success code
-      if (SWIG_IsNewObj(res) {
-        ...
-	delete *ptr;
-      } else {
-        ...
-      }
-    } else {
-      // fail code
-    }
-    
-   I.e., now SWIG_ConvertPtr can return new objects and you can
-   identify the case and take care of the deallocation. Of course that
-   requires also to SWIG_ConvertPtr to return new result values, as
-
-      int SWIG_ConvertPtr(obj, ptr,...) {         
-        if (<obj is ok>) {			       
-          if (<need new object>) {		       
-            *ptr = <ptr to new allocated object>; 
-            return SWIG_NEWOBJ;		       
-          } else {				       
-            *ptr = <ptr to old object>;	       
-            return SWIG_OLDOBJ;		       
-          } 				       
-        } else {				       
-          return SWIG_BADOBJ;		       
-        }					       
-      }
-
-   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
-   more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
-   swig errors code.
-
-   Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows to return the 'cast rank', for example, if you have this
-
-       int food(double)
-       int fooi(int);
-
-   and you call
- 
-      food(1)   // cast rank '1'  (1 -> 1.0)
-      fooi(1)   // cast rank '0'
-
-   just use the SWIG_AddCast()/SWIG_CheckState()
-
-
- */
-#define SWIG_OK                    (0) 
-#define SWIG_ERROR                 (-1)
-#define SWIG_IsOK(r)               (r >= 0)
-#define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)  
-
-/* The CastRankLimit says how many bits are used for the cast rank */
-#define SWIG_CASTRANKLIMIT         (1 << 8)
-/* The NewMask denotes the object was created (using new/malloc) */
-#define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
-/* The TmpMask is for in/out typemaps that use temporal objects */
-#define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
-/* Simple returning values */
-#define SWIG_BADOBJ                (SWIG_ERROR)
-#define SWIG_OLDOBJ                (SWIG_OK)
-#define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
-#define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
-/* Check, add and del mask methods */
-#define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
-#define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
-#define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
-#define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
-#define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
-#define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
-
-
-/* Cast-Rank Mode */
-#if defined(SWIG_CASTRANK_MODE)
-#  ifndef SWIG_TypeRank
-#    define SWIG_TypeRank             unsigned long
-#  endif
-#  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
-#    define SWIG_MAXCASTRANK          (2)
-#  endif
-#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
-#  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
-SWIGINTERNINLINE int SWIG_AddCast(int r) { 
-  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
-}
-SWIGINTERNINLINE int SWIG_CheckState(int r) { 
-  return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; 
-}
-#else /* no cast-rank mode */
-#  define SWIG_AddCast
-#  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
-#endif
-
-
-
-
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void *(*swig_converter_func)(void *, int *);
-typedef struct swig_type_info *(*swig_dycast_func)(void **);
-
-/* Structure to store information on one type */
-typedef struct swig_type_info {
-  const char             *name;			/* mangled name of this type */
-  const char             *str;			/* human readable name of this type */
-  swig_dycast_func        dcast;		/* dynamic cast function down a hierarchy */
-  struct swig_cast_info  *cast;			/* linked list of types that can cast into this type */
-  void                   *clientdata;		/* language specific type data */
-  int                    owndata;		/* flag if the structure owns the clientdata */
-} swig_type_info;
-
-/* Structure to store a type and conversion function used for casting */
-typedef struct swig_cast_info {
-  swig_type_info         *type;			/* pointer to type that is equivalent to this type */
-  swig_converter_func     converter;		/* function to cast the void pointers */
-  struct swig_cast_info  *next;			/* pointer to next cast in linked list */
-  struct swig_cast_info  *prev;			/* pointer to the previous cast */
-} swig_cast_info;
-
-/* Structure used to store module information
- * Each module generates one structure like this, and the runtime collects
- * all of these structures and stores them in a circularly linked list.*/
-typedef struct swig_module_info {
-  swig_type_info         **types;		/* Array of pointers to swig_type_info structures that are in this module */
-  size_t                 size;		        /* Number of types in this module */
-  struct swig_module_info *next;		/* Pointer to next element in circularly linked list */
-  swig_type_info         **type_initial;	/* Array of initially generated type structures */
-  swig_cast_info         **cast_initial;	/* Array of initially generated casting structures */
-  void                    *clientdata;		/* Language specific module data */
-} swig_module_info;
-
-/* 
-  Compare two type names skipping the space characters, therefore
-  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
-
-  Return 0 when the two name types are equivalent, as in
-  strncmp, but skipping ' '.
-*/
-SWIGRUNTIME int
-SWIG_TypeNameComp(const char *f1, const char *l1,
-		  const char *f2, const char *l2) {
-  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
-    while ((*f1 == ' ') && (f1 != l1)) ++f1;
-    while ((*f2 == ' ') && (f2 != l2)) ++f2;
-    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
-  }
-  return (int)((l1 - f1) - (l2 - f2));
-}
-
-/*
-  Check type equivalence in a name list like <name1>|<name2>|...
-  Return 0 if not equal, 1 if equal
-*/
-SWIGRUNTIME int
-SWIG_TypeEquiv(const char *nb, const char *tb) {
-  int equiv = 0;
-  const char* te = tb + strlen(tb);
-  const char* ne = nb;
-  while (!equiv && *ne) {
-    for (nb = ne; *ne; ++ne) {
-      if (*ne == '|') break;
-    }
-    equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
-    if (*ne) ++ne;
-  }
-  return equiv;
-}
-
-/*
-  Check type equivalence in a name list like <name1>|<name2>|...
-  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
-*/
-SWIGRUNTIME int
-SWIG_TypeCompare(const char *nb, const char *tb) {
-  int equiv = 0;
-  const char* te = tb + strlen(tb);
-  const char* ne = nb;
-  while (!equiv && *ne) {
-    for (nb = ne; *ne; ++ne) {
-      if (*ne == '|') break;
-    }
-    equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
-    if (*ne) ++ne;
-  }
-  return equiv;
-}
-
-
-/* think of this as a c++ template<> or a scheme macro */
-#define SWIG_TypeCheck_Template(comparison, ty)         \
-  if (ty) {                                             \
-    swig_cast_info *iter = ty->cast;                    \
-    while (iter) {                                      \
-      if (comparison) {                                 \
-        if (iter == ty->cast) return iter;              \
-        /* Move iter to the top of the linked list */   \
-        iter->prev->next = iter->next;                  \
-        if (iter->next)                                 \
-          iter->next->prev = iter->prev;                \
-        iter->next = ty->cast;                          \
-        iter->prev = 0;                                 \
-        if (ty->cast) ty->cast->prev = iter;            \
-        ty->cast = iter;                                \
-        return iter;                                    \
-      }                                                 \
-      iter = iter->next;                                \
-    }                                                   \
-  }                                                     \
-  return 0
-
-/*
-  Check the typename
-*/
-SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheck(const char *c, swig_type_info *ty) {
-  SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty);
-}
-
-/* Same as previous function, except strcmp is replaced with a pointer comparison */
-SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) {
-  SWIG_TypeCheck_Template(iter->type == from, into);
-}
-
-/*
-  Cast a pointer up an inheritance hierarchy
-*/
-SWIGRUNTIMEINLINE void *
-SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
-  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
-}
-
-/* 
-   Dynamic pointer casting. Down an inheritance hierarchy
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
-  swig_type_info *lastty = ty;
-  if (!ty || !ty->dcast) return ty;
-  while (ty && (ty->dcast)) {
-    ty = (*ty->dcast)(ptr);
-    if (ty) lastty = ty;
-  }
-  return lastty;
-}
-
-/*
-  Return the name associated with this type
-*/
-SWIGRUNTIMEINLINE const char *
-SWIG_TypeName(const swig_type_info *ty) {
-  return ty->name;
-}
-
-/*
-  Return the pretty name associated with this type,
-  that is an unmangled type name in a form presentable to the user.
-*/
-SWIGRUNTIME const char *
-SWIG_TypePrettyName(const swig_type_info *type) {
-  /* The "str" field contains the equivalent pretty names of the
-     type, separated by vertical-bar characters.  We choose
-     to print the last name, as it is often (?) the most
-     specific. */
-  if (!type) return NULL;
-  if (type->str != NULL) {
-    const char *last_name = type->str;
-    const char *s;
-    for (s = type->str; *s; s++)
-      if (*s == '|') last_name = s+1;
-    return last_name;
-  }
-  else
-    return type->name;
-}
-
-/* 
-   Set the clientdata field for a type
-*/
-SWIGRUNTIME void
-SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
-  swig_cast_info *cast = ti->cast;
-  /* if (ti->clientdata == clientdata) return; */
-  ti->clientdata = clientdata;
-  
-  while (cast) {
-    if (!cast->converter) {
-      swig_type_info *tc = cast->type;
-      if (!tc->clientdata) {
-	SWIG_TypeClientData(tc, clientdata);
-      }
-    }    
-    cast = cast->next;
-  }
-}
-SWIGRUNTIME void
-SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
-  SWIG_TypeClientData(ti, clientdata);
-  ti->owndata = 1;
-}
-  
-/*
-  Search for a swig_type_info structure only by mangled name
-  Search is a O(log #types)
-  
-  We start searching at module start, and finish searching when start == end.  
-  Note: if start == end at the beginning of the function, we go all the way around
-  the circular list.
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_MangledTypeQueryModule(swig_module_info *start, 
-                            swig_module_info *end, 
-		            const char *name) {
-  swig_module_info *iter = start;
-  do {
-    if (iter->size) {
-      register size_t l = 0;
-      register size_t r = iter->size - 1;
-      do {
-	/* since l+r >= 0, we can (>> 1) instead (/ 2) */
-	register size_t i = (l + r) >> 1; 
-	const char *iname = iter->types[i]->name;
-	if (iname) {
-	  register int compare = strcmp(name, iname);
-	  if (compare == 0) {	    
-	    return iter->types[i];
-	  } else if (compare < 0) {
-	    if (i) {
-	      r = i - 1;
-	    } else {
-	      break;
-	    }
-	  } else if (compare > 0) {
-	    l = i + 1;
-	  }
-	} else {
-	  break; /* should never happen */
-	}
-      } while (l <= r);
-    }
-    iter = iter->next;
-  } while (iter != end);
-  return 0;
-}
-
-/*
-  Search for a swig_type_info structure for either a mangled name or a human readable name.
-  It first searches the mangled names of the types, which is a O(log #types)
-  If a type is not found it then searches the human readable names, which is O(#types).
-  
-  We start searching at module start, and finish searching when start == end.  
-  Note: if start == end at the beginning of the function, we go all the way around
-  the circular list.
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeQueryModule(swig_module_info *start, 
-                     swig_module_info *end, 
-		     const char *name) {
-  /* STEP 1: Search the name field using binary search */
-  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
-  if (ret) {
-    return ret;
-  } else {
-    /* STEP 2: If the type hasn't been found, do a complete search
-       of the str field (the human readable name) */
-    swig_module_info *iter = start;
-    do {
-      register size_t i = 0;
-      for (; i < iter->size; ++i) {
-	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
-	  return iter->types[i];
-      }
-      iter = iter->next;
-    } while (iter != end);
-  }
-  
-  /* neither found a match */
-  return 0;
-}
-
-/* 
-   Pack binary data into a string
-*/
-SWIGRUNTIME char *
-SWIG_PackData(char *c, void *ptr, size_t sz) {
-  static const char hex[17] = "0123456789abcdef";
-  register const unsigned char *u = (unsigned char *) ptr;
-  register const unsigned char *eu =  u + sz;
-  for (; u != eu; ++u) {
-    register unsigned char uu = *u;
-    *(c++) = hex[(uu & 0xf0) >> 4];
-    *(c++) = hex[uu & 0xf];
-  }
-  return c;
-}
-
-/* 
-   Unpack binary data from a string
-*/
-SWIGRUNTIME const char *
-SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
-  register unsigned char *u = (unsigned char *) ptr;
-  register const unsigned char *eu = u + sz;
-  for (; u != eu; ++u) {
-    register char d = *(c++);
-    register unsigned char uu;
-    if ((d >= '0') && (d <= '9'))
-      uu = ((d - '0') << 4);
-    else if ((d >= 'a') && (d <= 'f'))
-      uu = ((d - ('a'-10)) << 4);
-    else 
-      return (char *) 0;
-    d = *(c++);
-    if ((d >= '0') && (d <= '9'))
-      uu |= (d - '0');
-    else if ((d >= 'a') && (d <= 'f'))
-      uu |= (d - ('a'-10));
-    else 
-      return (char *) 0;
-    *u = uu;
-  }
-  return c;
-}
-
-/* 
-   Pack 'void *' into a string buffer.
-*/
-SWIGRUNTIME char *
-SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
-  char *r = buff;
-  if ((2*sizeof(void *) + 2) > bsz) return 0;
-  *(r++) = '_';
-  r = SWIG_PackData(r,&ptr,sizeof(void *));
-  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
-  strcpy(r,name);
-  return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
-  if (*c != '_') {
-    if (strcmp(c,"NULL") == 0) {
-      *ptr = (void *) 0;
-      return name;
-    } else {
-      return 0;
-    }
-  }
-  return SWIG_UnpackData(++c,ptr,sizeof(void *));
-}
-
-SWIGRUNTIME char *
-SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
-  char *r = buff;
-  size_t lname = (name ? strlen(name) : 0);
-  if ((2*sz + 2 + lname) > bsz) return 0;
-  *(r++) = '_';
-  r = SWIG_PackData(r,ptr,sz);
-  if (lname) {
-    strncpy(r,name,lname+1);
-  } else {
-    *r = 0;
-  }
-  return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
-  if (*c != '_') {
-    if (strcmp(c,"NULL") == 0) {
-      memset(ptr,0,sz);
-      return name;
-    } else {
-      return 0;
-    }
-  }
-  return SWIG_UnpackData(++c,ptr,sz);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/*  Errors in SWIG */
-#define  SWIG_UnknownError    	   -1 
-#define  SWIG_IOError        	   -2 
-#define  SWIG_RuntimeError   	   -3 
-#define  SWIG_IndexError     	   -4 
-#define  SWIG_TypeError      	   -5 
-#define  SWIG_DivisionByZero 	   -6 
-#define  SWIG_OverflowError  	   -7 
-#define  SWIG_SyntaxError    	   -8 
-#define  SWIG_ValueError     	   -9 
-#define  SWIG_SystemError    	   -10
-#define  SWIG_AttributeError 	   -11
-#define  SWIG_MemoryError    	   -12 
-#define  SWIG_NullReferenceError   -13
-
-
-
-
-/* Add PyOS_snprintf for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM)
-#  define PyOS_snprintf _snprintf
-# else
-#  define PyOS_snprintf snprintf
-# endif
-#endif
-
-/* A crude PyString_FromFormat implementation for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-
-#ifndef SWIG_PYBUFFER_SIZE
-# define SWIG_PYBUFFER_SIZE 1024
-#endif
-
-static PyObject *
-PyString_FromFormat(const char *fmt, ...) {
-  va_list ap;
-  char buf[SWIG_PYBUFFER_SIZE * 2];
-  int res;
-  va_start(ap, fmt);
-  res = vsnprintf(buf, sizeof(buf), fmt, ap);
-  va_end(ap);
-  return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf);
-}
-#endif
-
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
-#ifndef PyObject_DEL
-# define PyObject_DEL PyObject_Del
-#endif
-
-/* A crude PyExc_StopIteration exception for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-# ifndef PyExc_StopIteration
-#  define PyExc_StopIteration PyExc_RuntimeError
-# endif
-# ifndef PyObject_GenericGetAttr
-#  define PyObject_GenericGetAttr 0
-# endif
-#endif
-/* Py_NotImplemented is defined in 2.1 and up. */
-#if PY_VERSION_HEX < 0x02010000
-# ifndef Py_NotImplemented
-#  define Py_NotImplemented PyExc_RuntimeError
-# endif
-#endif
-
-
-/* A crude PyString_AsStringAndSize implementation for old Pythons */
-#if PY_VERSION_HEX < 0x02010000
-# ifndef PyString_AsStringAndSize
-#  define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;}
-# endif
-#endif
-
-/* PySequence_Size for old Pythons */
-#if PY_VERSION_HEX < 0x02000000
-# ifndef PySequence_Size
-#  define PySequence_Size PySequence_Length
-# endif
-#endif
-
-
-/* PyBool_FromLong for old Pythons */
-#if PY_VERSION_HEX < 0x02030000
-static
-PyObject *PyBool_FromLong(long ok)
-{
-  PyObject *result = ok ? Py_True : Py_False;
-  Py_INCREF(result);
-  return result;
-}
-#endif
-
-/* Py_ssize_t for old Pythons */
-/* This code is as recommended by: */
-/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
-#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
-typedef int Py_ssize_t;
-# define PY_SSIZE_T_MAX INT_MAX
-# define PY_SSIZE_T_MIN INT_MIN
-#endif
-
-/* -----------------------------------------------------------------------------
- * error manipulation
- * ----------------------------------------------------------------------------- */
-
-SWIGRUNTIME PyObject*
-SWIG_Python_ErrorType(int code) {
-  PyObject* type = 0;
-  switch(code) {
-  case SWIG_MemoryError:
-    type = PyExc_MemoryError;
-    break;
-  case SWIG_IOError:
-    type = PyExc_IOError;
-    break;
-  case SWIG_RuntimeError:
-    type = PyExc_RuntimeError;
-    break;
-  case SWIG_IndexError:
-    type = PyExc_IndexError;
-    break;
-  case SWIG_TypeError:
-    type = PyExc_TypeError;
-    break;
-  case SWIG_DivisionByZero:
-    type = PyExc_ZeroDivisionError;
-    break;
-  case SWIG_OverflowError:
-    type = PyExc_OverflowError;
-    break;
-  case SWIG_SyntaxError:
-    type = PyExc_SyntaxError;
-    break;
-  case SWIG_ValueError:
-    type = PyExc_ValueError;
-    break;
-  case SWIG_SystemError:
-    type = PyExc_SystemError;
-    break;
-  case SWIG_AttributeError:
-    type = PyExc_AttributeError;
-    break;
-  default:
-    type = PyExc_RuntimeError;
-  }
-  return type;
-}
-
-
-SWIGRUNTIME void
-SWIG_Python_AddErrorMsg(const char* mesg)
-{
-  PyObject *type = 0;
-  PyObject *value = 0;
-  PyObject *traceback = 0;
-
-  if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback);
-  if (value) {
-    PyObject *old_str = PyObject_Str(value);
-    PyErr_Clear();
-    Py_XINCREF(type);
-    PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
-    Py_DECREF(old_str);
-    Py_DECREF(value);
-  } else {
-    PyErr_SetString(PyExc_RuntimeError, mesg);
-  }
-}
-
-
-
-#if defined(SWIG_PYTHON_NO_THREADS)
-#  if defined(SWIG_PYTHON_THREADS)
-#    undef SWIG_PYTHON_THREADS
-#  endif
-#endif
-#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
-#  if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
-#    if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
-#      define SWIG_PYTHON_USE_GIL
-#    endif
-#  endif
-#  if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
-#    ifndef SWIG_PYTHON_INITIALIZE_THREADS
-#     define SWIG_PYTHON_INITIALIZE_THREADS  PyEval_InitThreads() 
-#    endif
-#    ifdef __cplusplus /* C++ code */
-       class SWIG_Python_Thread_Block {
-         bool status;
-         PyGILState_STATE state;
-       public:
-         void end() { if (status) { PyGILState_Release(state); status = false;} }
-         SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
-         ~SWIG_Python_Thread_Block() { end(); }
-       };
-       class SWIG_Python_Thread_Allow {
-         bool status;
-         PyThreadState *save;
-       public:
-         void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
-         SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
-         ~SWIG_Python_Thread_Allow() { end(); }
-       };
-#      define SWIG_PYTHON_THREAD_BEGIN_BLOCK   SWIG_Python_Thread_Block _swig_thread_block
-#      define SWIG_PYTHON_THREAD_END_BLOCK     _swig_thread_block.end()
-#      define SWIG_PYTHON_THREAD_BEGIN_ALLOW   SWIG_Python_Thread_Allow _swig_thread_allow
-#      define SWIG_PYTHON_THREAD_END_ALLOW     _swig_thread_allow.end()
-#    else /* C code */
-#      define SWIG_PYTHON_THREAD_BEGIN_BLOCK   PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
-#      define SWIG_PYTHON_THREAD_END_BLOCK     PyGILState_Release(_swig_thread_block)
-#      define SWIG_PYTHON_THREAD_BEGIN_ALLOW   PyThreadState *_swig_thread_allow = PyEval_SaveThread()
-#      define SWIG_PYTHON_THREAD_END_ALLOW     PyEval_RestoreThread(_swig_thread_allow)
-#    endif
-#  else /* Old thread way, not implemented, user must provide it */
-#    if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
-#      define SWIG_PYTHON_INITIALIZE_THREADS
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
-#      define SWIG_PYTHON_THREAD_BEGIN_BLOCK
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
-#      define SWIG_PYTHON_THREAD_END_BLOCK
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
-#      define SWIG_PYTHON_THREAD_BEGIN_ALLOW
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
-#      define SWIG_PYTHON_THREAD_END_ALLOW
-#    endif
-#  endif
-#else /* No thread support */
-#  define SWIG_PYTHON_INITIALIZE_THREADS
-#  define SWIG_PYTHON_THREAD_BEGIN_BLOCK
-#  define SWIG_PYTHON_THREAD_END_BLOCK
-#  define SWIG_PYTHON_THREAD_BEGIN_ALLOW
-#  define SWIG_PYTHON_THREAD_END_ALLOW
-#endif
-
-/* -----------------------------------------------------------------------------
- * Python API portion that goes into the runtime
- * ----------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* cc-mode */
-#endif
-#endif
-
-/* -----------------------------------------------------------------------------
- * Constant declarations
- * ----------------------------------------------------------------------------- */
-
-/* Constant Types */
-#define SWIG_PY_POINTER 4
-#define SWIG_PY_BINARY  5
-
-/* Constant information structure */
-typedef struct swig_const_info {
-  int type;
-  char *name;
-  long lvalue;
-  double dvalue;
-  void   *pvalue;
-  swig_type_info **ptype;
-} swig_const_info;
-
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
-}
-#endif
-
-
-/* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
- * pyrun.swg
- *
- * This file contains the runtime support for Python modules
- * and includes code for managing global variables and pointer
- * type checking.
- *
- * ----------------------------------------------------------------------------- */
-
-/* Common SWIG API */
-
-/* for raw pointers */
-#define SWIG_Python_ConvertPtr(obj, pptr, type, flags)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0)
-#define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Python_ConvertPtr(obj, pptr, type, flags)
-#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
-#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(ptr, type, flags)
-#define SWIG_CheckImplicit(ty)                          SWIG_Python_CheckImplicit(ty) 
-#define SWIG_AcquirePtr(ptr, src)                       SWIG_Python_AcquirePtr(ptr, src)
-#define swig_owntype                                    int
-
-/* for raw packed data */
-#define SWIG_ConvertPacked(obj, ptr, sz, ty)            SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
-#define SWIG_NewPackedObj(ptr, sz, type)                SWIG_Python_NewPackedObj(ptr, sz, type)
-
-/* for class or struct pointers */
-#define SWIG_ConvertInstance(obj, pptr, type, flags)    SWIG_ConvertPtr(obj, pptr, type, flags)
-#define SWIG_NewInstanceObj(ptr, type, flags)           SWIG_NewPointerObj(ptr, type, flags)
-
-/* for C or C++ function pointers */
-#define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
-#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(ptr, type, 0)
-
-/* for C++ member pointers, ie, member methods */
-#define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
-#define SWIG_NewMemberObj(ptr, sz, type)                SWIG_Python_NewPackedObj(ptr, sz, type)
-
-
-/* Runtime API */
-
-#define SWIG_GetModule(clientdata)                      SWIG_Python_GetModule()
-#define SWIG_SetModule(clientdata, pointer)             SWIG_Python_SetModule(pointer)
-#define SWIG_NewClientData(obj)                         PySwigClientData_New(obj)
-
-#define SWIG_SetErrorObj                                SWIG_Python_SetErrorObj                            
-#define SWIG_SetErrorMsg                        	SWIG_Python_SetErrorMsg				   
-#define SWIG_ErrorType(code)                    	SWIG_Python_ErrorType(code)                        
-#define SWIG_Error(code, msg)            		SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) 
-#define SWIG_fail                        		goto fail					   
-
-
-/* Runtime API implementation */
-
-/* Error manipulation */
-
-SWIGINTERN void 
-SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) {
-  SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
-  PyErr_SetObject(errtype, obj);
-  Py_DECREF(obj);
-  SWIG_PYTHON_THREAD_END_BLOCK;
-}
-
-SWIGINTERN void 
-SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) {
-  SWIG_PYTHON_THREAD_BEGIN_BLOCK;
-  PyErr_SetString(errtype, (char *) msg);
-  SWIG_PYTHON_THREAD_END_BLOCK;
-}
-
-#define SWIG_Python_Raise(obj, type, desc)  SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj)
-
-/* Set a constant value */
-
-SWIGINTERN void
-SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {   
-  PyDict_SetItemString(d, (char*) name, obj);
-  Py_DECREF(obj);                            
-}
-
-/* Append a value to the result obj */
-
-SWIGINTERN PyObject*
-SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) {
-#if !defined(SWIG_PYTHON_OUTPUT_TUPLE)
-  if (!result) {
-    result = obj;
-  } else if (result == Py_None) {
-    Py_DECREF(result);
-    result = obj;
-  } else {
-    if (!PyList_Check(result)) {
-      PyObject *o2 = result;
-      result = PyList_New(1);
-      PyList_SetItem(result, 0, o2);
-    }
-    PyList_Append(result,obj);
-    Py_DECREF(obj);
-  }
-  return result;
-#else
-  PyObject*   o2;
-  PyObject*   o3;
-  if (!result) {
-    result = obj;
-  } else if (result == Py_None) {
-    Py_DECREF(result);
-    result = obj;
-  } else {
-    if (!PyTuple_Check(result)) {
-      o2 = result;
-      result = PyTuple_New(1);
-      PyTuple_SET_ITEM(result, 0, o2);
-    }
-    o3 = PyTuple_New(1);
-    PyTuple_SET_ITEM(o3, 0, obj);
-    o2 = result;
-    result = PySequence_Concat(o2, o3);
-    Py_DECREF(o2);
-    Py_DECREF(o3);
-  }
-  return result;
-#endif
-}
-
-/* Unpack the argument tuple */
-
-SWIGINTERN int
-SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs)
-{
-  if (!args) {
-    if (!min && !max) {
-      return 1;
-    } else {
-      PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", 
-		   name, (min == max ? "" : "at least "), (int)min);
-      return 0;
-    }
-  }  
-  if (!PyTuple_Check(args)) {
-    PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
-    return 0;
-  } else {
-    register Py_ssize_t l = PyTuple_GET_SIZE(args);
-    if (l < min) {
-      PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", 
-		   name, (min == max ? "" : "at least "), (int)min, (int)l);
-      return 0;
-    } else if (l > max) {
-      PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", 
-		   name, (min == max ? "" : "at most "), (int)max, (int)l);
-      return 0;
-    } else {
-      register int i;
-      for (i = 0; i < l; ++i) {
-	objs[i] = PyTuple_GET_ITEM(args, i);
-      }
-      for (; l < max; ++l) {
-	objs[l] = 0;
-      }
-      return i + 1;
-    }    
-  }
-}
-
-/* A functor is a function object with one single object argument */
-#if PY_VERSION_HEX >= 0x02020000
-#define SWIG_Python_CallFunctor(functor, obj)	        PyObject_CallFunctionObjArgs(functor, obj, NULL);
-#else
-#define SWIG_Python_CallFunctor(functor, obj)	        PyObject_CallFunction(functor, "O", obj);
-#endif
-
-/*
-  Helper for static pointer initialization for both C and C++ code, for example
-  static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...);
-*/
-#ifdef __cplusplus
-#define SWIG_STATIC_POINTER(var)  var
-#else
-#define SWIG_STATIC_POINTER(var)  var = 0; if (!var) var
-#endif
-
-/* -----------------------------------------------------------------------------
- * Pointer declarations
- * ----------------------------------------------------------------------------- */
-
-/* Flags for new pointer objects */
-#define SWIG_POINTER_NOSHADOW       (SWIG_POINTER_OWN      << 1)
-#define SWIG_POINTER_NEW            (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN)
-
-#define SWIG_POINTER_IMPLICIT_CONV  (SWIG_POINTER_DISOWN   << 1)
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* cc-mode */
-#endif
-#endif
-
-/*  How to access Py_None */
-#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#  ifndef SWIG_PYTHON_NO_BUILD_NONE
-#    ifndef SWIG_PYTHON_BUILD_NONE
-#      define SWIG_PYTHON_BUILD_NONE
-#    endif
-#  endif
-#endif
-
-#ifdef SWIG_PYTHON_BUILD_NONE
-#  ifdef Py_None
-#   undef Py_None
-#   define Py_None SWIG_Py_None()
-#  endif
-SWIGRUNTIMEINLINE PyObject * 
-_SWIG_Py_None(void)
-{
-  PyObject *none = Py_BuildValue((char*)"");
-  Py_DECREF(none);
-  return none;
-}
-SWIGRUNTIME PyObject * 
-SWIG_Py_None(void)
-{
-  static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None();
-  return none;
-}
-#endif
-
-/* The python void return value */
-
-SWIGRUNTIMEINLINE PyObject * 
-SWIG_Py_Void(void)
-{
-  PyObject *none = Py_None;
-  Py_INCREF(none);
-  return none;
-}
-
-/* PySwigClientData */
-
-typedef struct {
-  PyObject *klass;
-  PyObject *newraw;
-  PyObject *newargs;
-  PyObject *destroy;
-  int delargs;
-  int implicitconv;
-} PySwigClientData;
-
-SWIGRUNTIMEINLINE int 
-SWIG_Python_CheckImplicit(swig_type_info *ty)
-{
-  PySwigClientData *data = (PySwigClientData *)ty->clientdata;
-  return data ? data->implicitconv : 0;
-}
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Python_ExceptionType(swig_type_info *desc) {
-  PySwigClientData *data = desc ? (PySwigClientData *) desc->clientdata : 0;
-  PyObject *klass = data ? data->klass : 0;
-  return (klass ? klass : PyExc_RuntimeError);
-}
-
-
-SWIGRUNTIME PySwigClientData * 
-PySwigClientData_New(PyObject* obj)
-{
-  if (!obj) {
-    return 0;
-  } else {
-    PySwigClientData *data = (PySwigClientData *)malloc(sizeof(PySwigClientData));
-    /* the klass element */
-    data->klass = obj;
-    Py_INCREF(data->klass);
-    /* the newraw method and newargs arguments used to create a new raw instance */
-    if (PyClass_Check(obj)) {
-      data->newraw = 0;
-      data->newargs = obj;
-      Py_INCREF(obj);
-    } else {
-#if (PY_VERSION_HEX < 0x02020000)
-      data->newraw = 0;
-#else
-      data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
-#endif
-      if (data->newraw) {
-	Py_INCREF(data->newraw);
-	data->newargs = PyTuple_New(1);
-	PyTuple_SetItem(data->newargs, 0, obj);
-      } else {
-	data->newargs = obj;
-      }
-      Py_INCREF(data->newargs);
-    }
-    /* the destroy method, aka as the C++ delete method */
-    data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
-    if (PyErr_Occurred()) {
-      PyErr_Clear();
-      data->destroy = 0;
-    }
-    if (data->destroy) {
-      int flags;
-      Py_INCREF(data->destroy);
-      flags = PyCFunction_GET_FLAGS(data->destroy);
-#ifdef METH_O
-      data->delargs = !(flags & (METH_O));
-#else
-      data->delargs = 0;
-#endif
-    } else {
-      data->delargs = 0;
-    }
-    data->implicitconv = 0;
-    return data;
-  }
-}
-
-SWIGRUNTIME void 
-PySwigClientData_Del(PySwigClientData* data)
-{
-  Py_XDECREF(data->newraw);
-  Py_XDECREF(data->newargs);
-  Py_XDECREF(data->destroy);
-}
-
-/* =============== PySwigObject =====================*/
-
-typedef struct {
-  PyObject_HEAD
-  void *ptr;
-  swig_type_info *ty;
-  int own;
-  PyObject *next;
-} PySwigObject;
-
-SWIGRUNTIME PyObject *
-PySwigObject_long(PySwigObject *v)
-{
-  return PyLong_FromVoidPtr(v->ptr);
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_format(const char* fmt, PySwigObject *v)
-{
-  PyObject *res = NULL;
-  PyObject *args = PyTuple_New(1);
-  if (args) {
-    if (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0) {
-      PyObject *ofmt = PyString_FromString(fmt);
-      if (ofmt) {
-	res = PyString_Format(ofmt,args);
-	Py_DECREF(ofmt);
-      }
-      Py_DECREF(args);
-    }
-  }
-  return res;
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_oct(PySwigObject *v)
-{
-  return PySwigObject_format("%o",v);
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_hex(PySwigObject *v)
-{
-  return PySwigObject_format("%x",v);
-}
-
-SWIGRUNTIME PyObject *
-#ifdef METH_NOARGS
-PySwigObject_repr(PySwigObject *v)
-#else
-PySwigObject_repr(PySwigObject *v, PyObject *args)
-#endif
-{
-  const char *name = SWIG_TypePrettyName(v->ty);
-  PyObject *hex = PySwigObject_hex(v);    
-  PyObject *repr = PyString_FromFormat("<Swig Object of type '%s' at 0x%s>", name, PyString_AsString(hex));
-  Py_DECREF(hex);
-  if (v->next) {
-#ifdef METH_NOARGS
-    PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next);
-#else
-    PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next, args);
-#endif
-    PyString_ConcatAndDel(&repr,nrep);
-  }
-  return repr;  
-}
-
-SWIGRUNTIME int
-PySwigObject_print(PySwigObject *v, FILE *fp, int SWIGUNUSEDPARM(flags))
-{
-#ifdef METH_NOARGS
-  PyObject *repr = PySwigObject_repr(v);
-#else
-  PyObject *repr = PySwigObject_repr(v, NULL);
-#endif
-  if (repr) {
-    fputs(PyString_AsString(repr), fp);
-    Py_DECREF(repr);
-    return 0; 
-  } else {
-    return 1; 
-  }
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_str(PySwigObject *v)
-{
-  char result[SWIG_BUFFER_SIZE];
-  return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
-    PyString_FromString(result) : 0;
-}
-
-SWIGRUNTIME int
-PySwigObject_compare(PySwigObject *v, PySwigObject *w)
-{
-  void *i = v->ptr;
-  void *j = w->ptr;
-  return (i < j) ? -1 : ((i > j) ? 1 : 0);
-}
-
-SWIGRUNTIME PyTypeObject* _PySwigObject_type(void);
-
-SWIGRUNTIME PyTypeObject*
-PySwigObject_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type();
-  return type;
-}
-
-SWIGRUNTIMEINLINE int
-PySwigObject_Check(PyObject *op) {
-  return ((op)->ob_type == PySwigObject_type())
-    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_New(void *ptr, swig_type_info *ty, int own);
-
-SWIGRUNTIME void
-PySwigObject_dealloc(PyObject *v)
-{
-  PySwigObject *sobj = (PySwigObject *) v;
-  PyObject *next = sobj->next;
-  if (sobj->own == SWIG_POINTER_OWN) {
-    swig_type_info *ty = sobj->ty;
-    PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0;
-    PyObject *destroy = data ? data->destroy : 0;
-    if (destroy) {
-      /* destroy is always a VARARGS method */
-      PyObject *res;
-      if (data->delargs) {
-	/* we need to create a temporal object to carry the destroy operation */
-	PyObject *tmp = PySwigObject_New(sobj->ptr, ty, 0);
-	res = SWIG_Python_CallFunctor(destroy, tmp);
-	Py_DECREF(tmp);
-      } else {
-	PyCFunction meth = PyCFunction_GET_FUNCTION(destroy);
-	PyObject *mself = PyCFunction_GET_SELF(destroy);
-	res = ((*meth)(mself, v));
-      }
-      Py_XDECREF(res);
-    } 
-#if !defined(SWIG_PYTHON_SILENT_MEMLEAK)
-    else {
-      const char *name = SWIG_TypePrettyName(ty);
-      printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown"));
-    }
-#endif
-  } 
-  Py_XDECREF(next);
-  PyObject_DEL(v);
-}
-
-SWIGRUNTIME PyObject* 
-PySwigObject_append(PyObject* v, PyObject* next)
-{
-  PySwigObject *sobj = (PySwigObject *) v;
-#ifndef METH_O
-  PyObject *tmp = 0;
-  if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL;
-  next = tmp;
-#endif
-  if (!PySwigObject_Check(next)) {
-    return NULL;
-  }
-  sobj->next = next;
-  Py_INCREF(next);
-  return SWIG_Py_Void();
-}
-
-SWIGRUNTIME PyObject* 
-#ifdef METH_NOARGS
-PySwigObject_next(PyObject* v)
-#else
-PySwigObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
-  PySwigObject *sobj = (PySwigObject *) v;
-  if (sobj->next) {    
-    Py_INCREF(sobj->next);
-    return sobj->next;
-  } else {
-    return SWIG_Py_Void();
-  }
-}
-
-SWIGINTERN PyObject*
-#ifdef METH_NOARGS
-PySwigObject_disown(PyObject *v)
-#else
-PySwigObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
-  PySwigObject *sobj = (PySwigObject *)v;
-  sobj->own = 0;
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject*
-#ifdef METH_NOARGS
-PySwigObject_acquire(PyObject *v)
-#else
-PySwigObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
-  PySwigObject *sobj = (PySwigObject *)v;
-  sobj->own = SWIG_POINTER_OWN;
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject*
-PySwigObject_own(PyObject *v, PyObject *args)
-{
-  PyObject *val = 0;
-#if (PY_VERSION_HEX < 0x02020000)
-  if (!PyArg_ParseTuple(args,(char *)"|O:own",&val))
-#else
-  if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) 
-#endif
-    {
-      return NULL;
-    } 
-  else
-    {
-      PySwigObject *sobj = (PySwigObject *)v;
-      PyObject *obj = PyBool_FromLong(sobj->own);
-      if (val) {
-#ifdef METH_NOARGS
-	if (PyObject_IsTrue(val)) {
-	  PySwigObject_acquire(v);
-	} else {
-	  PySwigObject_disown(v);
-	}
-#else
-	if (PyObject_IsTrue(val)) {
-	  PySwigObject_acquire(v,args);
-	} else {
-	  PySwigObject_disown(v,args);
-	}
-#endif
-      } 
-      return obj;
-    }
-}
-
-#ifdef METH_O
-static PyMethodDef
-swigobject_methods[] = {
-  {(char *)"disown",  (PyCFunction)PySwigObject_disown,  METH_NOARGS,  (char *)"releases ownership of the pointer"},
-  {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_NOARGS,  (char *)"aquires ownership of the pointer"},
-  {(char *)"own",     (PyCFunction)PySwigObject_own,     METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
-  {(char *)"append",  (PyCFunction)PySwigObject_append,  METH_O,       (char *)"appends another 'this' object"},
-  {(char *)"next",    (PyCFunction)PySwigObject_next,    METH_NOARGS,  (char *)"returns the next 'this' object"},
-  {(char *)"__repr__",(PyCFunction)PySwigObject_repr,    METH_NOARGS,  (char *)"returns object representation"},
-  {0, 0, 0, 0}  
-};
-#else
-static PyMethodDef
-swigobject_methods[] = {
-  {(char *)"disown",  (PyCFunction)PySwigObject_disown,  METH_VARARGS,  (char *)"releases ownership of the pointer"},
-  {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_VARARGS,  (char *)"aquires ownership of the pointer"},
-  {(char *)"own",     (PyCFunction)PySwigObject_own,     METH_VARARGS,  (char *)"returns/sets ownership of the pointer"},
-  {(char *)"append",  (PyCFunction)PySwigObject_append,  METH_VARARGS,  (char *)"appends another 'this' object"},
-  {(char *)"next",    (PyCFunction)PySwigObject_next,    METH_VARARGS,  (char *)"returns the next 'this' object"},
-  {(char *)"__repr__",(PyCFunction)PySwigObject_repr,   METH_VARARGS,  (char *)"returns object representation"},
-  {0, 0, 0, 0}  
-};
-#endif
-
-#if PY_VERSION_HEX < 0x02020000
-SWIGINTERN PyObject *
-PySwigObject_getattr(PySwigObject *sobj,char *name)
-{
-  return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name);
-}
-#endif
-
-SWIGRUNTIME PyTypeObject*
-_PySwigObject_type(void) {
-  static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
-  
-  static PyNumberMethods PySwigObject_as_number = {
-    (binaryfunc)0, /*nb_add*/
-    (binaryfunc)0, /*nb_subtract*/
-    (binaryfunc)0, /*nb_multiply*/
-    (binaryfunc)0, /*nb_divide*/
-    (binaryfunc)0, /*nb_remainder*/
-    (binaryfunc)0, /*nb_divmod*/
-    (ternaryfunc)0,/*nb_power*/
-    (unaryfunc)0,  /*nb_negative*/
-    (unaryfunc)0,  /*nb_positive*/
-    (unaryfunc)0,  /*nb_absolute*/
-    (inquiry)0,    /*nb_nonzero*/
-    0,		   /*nb_invert*/
-    0,		   /*nb_lshift*/
-    0,		   /*nb_rshift*/
-    0,		   /*nb_and*/
-    0,		   /*nb_xor*/
-    0,		   /*nb_or*/
-    (coercion)0,   /*nb_coerce*/
-    (unaryfunc)PySwigObject_long, /*nb_int*/
-    (unaryfunc)PySwigObject_long, /*nb_long*/
-    (unaryfunc)0,                 /*nb_float*/
-    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
-    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
-#if PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */
-    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
-#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */
-    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
-#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */
-    0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
-#endif
-  };
-
-  static PyTypeObject pyswigobject_type;  
-  static int type_init = 0;
-  if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */
-	(char *)"PySwigObject",		    /* tp_name */
-	sizeof(PySwigObject),		    /* tp_basicsize */
-	0,			            /* tp_itemsize */
-	(destructor)PySwigObject_dealloc,   /* tp_dealloc */
-	(printfunc)PySwigObject_print,	    /* tp_print */
-#if PY_VERSION_HEX < 0x02020000
-	(getattrfunc)PySwigObject_getattr,  /* tp_getattr */ 
-#else
-	(getattrfunc)0,			    /* tp_getattr */ 
-#endif
-	(setattrfunc)0,			    /* tp_setattr */ 
-	(cmpfunc)PySwigObject_compare,	    /* tp_compare */ 
-	(reprfunc)PySwigObject_repr,	    /* tp_repr */    
-	&PySwigObject_as_number,	    /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)PySwigObject_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigobject_doc, 	            /* tp_doc */        
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	swigobject_methods,		    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0,	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
-    pyswigobject_type = tmp;
-    pyswigobject_type.ob_type = &PyType_Type;
-    type_init = 1;
-  }
-  return &pyswigobject_type;
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_New(void *ptr, swig_type_info *ty, int own)
-{
-  PySwigObject *sobj = PyObject_NEW(PySwigObject, PySwigObject_type());
-  if (sobj) {
-    sobj->ptr  = ptr;
-    sobj->ty   = ty;
-    sobj->own  = own;
-    sobj->next = 0;
-  }
-  return (PyObject *)sobj;
-}
-
-/* -----------------------------------------------------------------------------
- * Implements a simple Swig Packed type, and use it instead of string
- * ----------------------------------------------------------------------------- */
-
-typedef struct {
-  PyObject_HEAD
-  void *pack;
-  swig_type_info *ty;
-  size_t size;
-} PySwigPacked;
-
-SWIGRUNTIME int
-PySwigPacked_print(PySwigPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags))
-{
-  char result[SWIG_BUFFER_SIZE];
-  fputs("<Swig Packed ", fp); 
-  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
-    fputs("at ", fp); 
-    fputs(result, fp); 
-  }
-  fputs(v->ty->name,fp); 
-  fputs(">", fp);
-  return 0; 
-}
-  
-SWIGRUNTIME PyObject *
-PySwigPacked_repr(PySwigPacked *v)
-{
-  char result[SWIG_BUFFER_SIZE];
-  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
-    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
-  } else {
-    return PyString_FromFormat("<Swig Packed %s>", v->ty->name);
-  }  
-}
-
-SWIGRUNTIME PyObject *
-PySwigPacked_str(PySwigPacked *v)
-{
-  char result[SWIG_BUFFER_SIZE];
-  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
-    return PyString_FromFormat("%s%s", result, v->ty->name);
-  } else {
-    return PyString_FromString(v->ty->name);
-  }  
-}
-
-SWIGRUNTIME int
-PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
-{
-  size_t i = v->size;
-  size_t j = w->size;
-  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
-  return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
-}
-
-SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void);
-
-SWIGRUNTIME PyTypeObject*
-PySwigPacked_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type();
-  return type;
-}
-
-SWIGRUNTIMEINLINE int
-PySwigPacked_Check(PyObject *op) {
-  return ((op)->ob_type == _PySwigPacked_type()) 
-    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
-}
-
-SWIGRUNTIME void
-PySwigPacked_dealloc(PyObject *v)
-{
-  if (PySwigPacked_Check(v)) {
-    PySwigPacked *sobj = (PySwigPacked *) v;
-    free(sobj->pack);
-  }
-  PyObject_DEL(v);
-}
-
-SWIGRUNTIME PyTypeObject*
-_PySwigPacked_type(void) {
-  static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
-  static PyTypeObject pyswigpacked_type;
-  static int type_init = 0;  
-  if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */	
-	(char *)"PySwigPacked",		    /* tp_name */	
-	sizeof(PySwigPacked),		    /* tp_basicsize */	
-	0,				    /* tp_itemsize */	
-	(destructor)PySwigPacked_dealloc,   /* tp_dealloc */	
-	(printfunc)PySwigPacked_print,	    /* tp_print */   	
-	(getattrfunc)0,			    /* tp_getattr */ 	
-	(setattrfunc)0,			    /* tp_setattr */ 	
-	(cmpfunc)PySwigPacked_compare,	    /* tp_compare */ 	
-	(reprfunc)PySwigPacked_repr,	    /* tp_repr */    	
-	0,	                            /* tp_as_number */	
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */	
-	(hashfunc)0,			    /* tp_hash */	
-	(ternaryfunc)0,			    /* tp_call */	
-	(reprfunc)PySwigPacked_str,	    /* tp_str */	
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigpacked_doc, 	            /* tp_doc */
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	0,		                    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0, 	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
-    pyswigpacked_type = tmp;
-    pyswigpacked_type.ob_type = &PyType_Type;
-    type_init = 1;
-  }
-  return &pyswigpacked_type;
-}
-
-SWIGRUNTIME PyObject *
-PySwigPacked_New(void *ptr, size_t size, swig_type_info *ty)
-{
-  PySwigPacked *sobj = PyObject_NEW(PySwigPacked, PySwigPacked_type());
-  if (sobj) {
-    void *pack = malloc(size);
-    if (pack) {
-      memcpy(pack, ptr, size);
-      sobj->pack = pack;
-      sobj->ty   = ty;
-      sobj->size = size;
-    } else {
-      PyObject_DEL((PyObject *) sobj);
-      sobj = 0;
-    }
-  }
-  return (PyObject *) sobj;
-}
-
-SWIGRUNTIME swig_type_info *
-PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
-{
-  if (PySwigPacked_Check(obj)) {
-    PySwigPacked *sobj = (PySwigPacked *)obj;
-    if (sobj->size != size) return 0;
-    memcpy(ptr, sobj->pack, size);
-    return sobj->ty;
-  } else {
-    return 0;
-  }
-}
-
-/* -----------------------------------------------------------------------------
- * pointers/data manipulation
- * ----------------------------------------------------------------------------- */
-
-SWIGRUNTIMEINLINE PyObject *
-_SWIG_This(void)
-{
-  return PyString_FromString("this");
-}
-
-SWIGRUNTIME PyObject *
-SWIG_This(void)
-{
-  static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This();
-  return swig_this;
-}
-
-/* #define SWIG_PYTHON_SLOW_GETSET_THIS */
-
-SWIGRUNTIME PySwigObject *
-SWIG_Python_GetSwigThis(PyObject *pyobj) 
-{
-  if (PySwigObject_Check(pyobj)) {
-    return (PySwigObject *) pyobj;
-  } else {
-    PyObject *obj = 0;
-#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
-    if (PyInstance_Check(pyobj)) {
-      obj = _PyInstance_Lookup(pyobj, SWIG_This());      
-    } else {
-      PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
-      } else {
-#ifdef PyWeakref_CheckProxy
-	if (PyWeakref_CheckProxy(pyobj)) {
-	  PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
-	  return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
-	}
-#endif
-	obj = PyObject_GetAttr(pyobj,SWIG_This());
-	if (obj) {
-	  Py_DECREF(obj);
-	} else {
-	  if (PyErr_Occurred()) PyErr_Clear();
-	  return 0;
-	}
-      }
-    }
-#else
-    obj = PyObject_GetAttr(pyobj,SWIG_This());
-    if (obj) {
-      Py_DECREF(obj);
-    } else {
-      if (PyErr_Occurred()) PyErr_Clear();
-      return 0;
-    }
-#endif
-    if (obj && !PySwigObject_Check(obj)) {
-      /* a PyObject is called 'this', try to get the 'real this'
-	 PySwigObject from it */ 
-      return SWIG_Python_GetSwigThis(obj);
-    }
-    return (PySwigObject *)obj;
-  }
-}
-
-/* Acquire a pointer value */
-
-SWIGRUNTIME int
-SWIG_Python_AcquirePtr(PyObject *obj, int own) {
-  if (own == SWIG_POINTER_OWN) {
-    PySwigObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (sobj) {
-      int oldown = sobj->own;
-      sobj->own = own;
-      return oldown;
-    }
-  }
-  return 0;
-}
-
-/* Convert a pointer value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
-  if (!obj) return SWIG_ERROR;
-  if (obj == Py_None) {
-    if (ptr) *ptr = 0;
-    return SWIG_OK;
-  } else {
-    PySwigObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (own)
-      *own = 0;
-    while (sobj) {
-      void *vptr = sobj->ptr;
-      if (ty) {
-	swig_type_info *to = sobj->ty;
-	if (to == ty) {
-	  /* no type cast needed */
-	  if (ptr) *ptr = vptr;
-	  break;
-	} else {
-	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-	  if (!tc) {
-	    sobj = (PySwigObject *)sobj->next;
-	  } else {
-	    if (ptr) {
-              int newmemory = 0;
-              *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-              if (newmemory == SWIG_CAST_NEW_MEMORY) {
-                assert(own);
-                if (own)
-                  *own = *own | SWIG_CAST_NEW_MEMORY;
-              }
-            }
-	    break;
-	  }
-	}
-      } else {
-	if (ptr) *ptr = vptr;
-	break;
-      }
-    }
-    if (sobj) {
-      if (own)
-        *own = *own | sobj->own;
-      if (flags & SWIG_POINTER_DISOWN) {
-	sobj->own = 0;
-      }
-      return SWIG_OK;
-    } else {
-      int res = SWIG_ERROR;
-      if (flags & SWIG_POINTER_IMPLICIT_CONV) {
-	PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0;
-	if (data && !data->implicitconv) {
-	  PyObject *klass = data->klass;
-	  if (klass) {
-	    PyObject *impconv;
-	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
-	    impconv = SWIG_Python_CallFunctor(klass, obj);
-	    data->implicitconv = 0;
-	    if (PyErr_Occurred()) {
-	      PyErr_Clear();
-	      impconv = 0;
-	    }
-	    if (impconv) {
-	      PySwigObject *iobj = SWIG_Python_GetSwigThis(impconv);
-	      if (iobj) {
-		void *vptr;
-		res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
-		if (SWIG_IsOK(res)) {
-		  if (ptr) {
-		    *ptr = vptr;
-		    /* transfer the ownership to 'ptr' */
-		    iobj->own = 0;
-		    res = SWIG_AddCast(res);
-		    res = SWIG_AddNewMask(res);
-		  } else {
-		    res = SWIG_AddCast(res);		    
-		  }
-		}
-	      }
-	      Py_DECREF(impconv);
-	    }
-	  }
-	}
-      }
-      return res;
-    }
-  }
-}
-
-/* Convert a function ptr value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) {
-  if (!PyCFunction_Check(obj)) {
-    return SWIG_ConvertPtr(obj, ptr, ty, 0);
-  } else {
-    void *vptr = 0;
-    
-    /* here we get the method pointer for callbacks */
-    const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
-    const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
-    if (desc) {
-      desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
-      if (!desc) return SWIG_ERROR;
-    }
-    if (ty) {
-      swig_cast_info *tc = SWIG_TypeCheck(desc,ty);
-      if (tc) {
-        int newmemory = 0;
-        *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-        assert(!newmemory); /* newmemory handling not yet implemented */
-      } else {
-        return SWIG_ERROR;
-      }
-    } else {
-      *ptr = vptr;
-    }
-    return SWIG_OK;
-  }
-}
-
-/* Convert a packed value value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) {
-  swig_type_info *to = PySwigPacked_UnpackData(obj, ptr, sz);
-  if (!to) return SWIG_ERROR;
-  if (ty) {
-    if (to != ty) {
-      /* check type cast? */
-      swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-      if (!tc) return SWIG_ERROR;
-    }
-  }
-  return SWIG_OK;
-}  
-
-/* -----------------------------------------------------------------------------
- * Create a new pointer object
- * ----------------------------------------------------------------------------- */
-
-/*
-  Create a new instance object, whitout calling __init__, and set the
-  'this' attribute.
-*/
-
-SWIGRUNTIME PyObject* 
-SWIG_Python_NewShadowInstance(PySwigClientData *data, PyObject *swig_this)
-{
-#if (PY_VERSION_HEX >= 0x02020000)
-  PyObject *inst = 0;
-  PyObject *newraw = data->newraw;
-  if (newraw) {
-    inst = PyObject_Call(newraw, data->newargs, NULL);
-    if (inst) {
-#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
-      PyObject **dictptr = _PyObject_GetDictPtr(inst);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	if (dict == NULL) {
-	  dict = PyDict_New();
-	  *dictptr = dict;
-	  PyDict_SetItem(dict, SWIG_This(), swig_this);
-	}
-      }
-#else
-      PyObject *key = SWIG_This();
-      PyObject_SetAttr(inst, key, swig_this);
-#endif
-    }
-  } else {
-    PyObject *dict = PyDict_New();
-    PyDict_SetItem(dict, SWIG_This(), swig_this);
-    inst = PyInstance_NewRaw(data->newargs, dict);
-    Py_DECREF(dict);
-  }
-  return inst;
-#else
-#if (PY_VERSION_HEX >= 0x02010000)
-  PyObject *inst;
-  PyObject *dict = PyDict_New();
-  PyDict_SetItem(dict, SWIG_This(), swig_this);
-  inst = PyInstance_NewRaw(data->newargs, dict);
-  Py_DECREF(dict);
-  return (PyObject *) inst;
-#else
-  PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type);
-  if (inst == NULL) {
-    return NULL;
-  }
-  inst->in_class = (PyClassObject *)data->newargs;
-  Py_INCREF(inst->in_class);
-  inst->in_dict = PyDict_New();
-  if (inst->in_dict == NULL) {
-    Py_DECREF(inst);
-    return NULL;
-  }
-#ifdef Py_TPFLAGS_HAVE_WEAKREFS
-  inst->in_weakreflist = NULL;
-#endif
-#ifdef Py_TPFLAGS_GC
-  PyObject_GC_Init(inst);
-#endif
-  PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
-  return (PyObject *) inst;
-#endif
-#endif
-}
-
-SWIGRUNTIME void
-SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this)
-{
- PyObject *dict;
-#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
- PyObject **dictptr = _PyObject_GetDictPtr(inst);
- if (dictptr != NULL) {
-   dict = *dictptr;
-   if (dict == NULL) {
-     dict = PyDict_New();
-     *dictptr = dict;
-   }
-   PyDict_SetItem(dict, SWIG_This(), swig_this);
-   return;
- }
-#endif
- dict = PyObject_GetAttrString(inst, (char*)"__dict__");
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- Py_DECREF(dict);
-} 
-
-
-SWIGINTERN PyObject *
-SWIG_Python_InitShadowInstance(PyObject *args) {
-  PyObject *obj[2];
-  if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) {
-    return NULL;
-  } else {
-    PySwigObject *sthis = SWIG_Python_GetSwigThis(obj[0]);
-    if (sthis) {
-      PySwigObject_append((PyObject*) sthis, obj[1]);
-    } else {
-      SWIG_Python_SetSwigThis(obj[0], obj[1]);
-    }
-    return SWIG_Py_Void();
-  }
-}
-
-/* Create a new pointer object */
-
-SWIGRUNTIME PyObject *
-SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
-  if (!ptr) {
-    return SWIG_Py_Void();
-  } else {
-    int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
-    PyObject *robj = PySwigObject_New(ptr, type, own);
-    PySwigClientData *clientdata = type ? (PySwigClientData *)(type->clientdata) : 0;
-    if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
-      PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
-      if (inst) {
-	Py_DECREF(robj);
-	robj = inst;
-      }
-    }
-    return robj;
-  }
-}
-
-/* Create a new packed object */
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
-  return ptr ? PySwigPacked_New((void *) ptr, sz, type) : SWIG_Py_Void();
-}
-
-/* -----------------------------------------------------------------------------*
- *  Get type list 
- * -----------------------------------------------------------------------------*/
-
-#ifdef SWIG_LINK_RUNTIME
-void *SWIG_ReturnGlobalTypeList(void *);
-#endif
-
-SWIGRUNTIME swig_module_info *
-SWIG_Python_GetModule(void) {
-  static void *type_pointer = (void *)0;
-  /* first check if module already created */
-  if (!type_pointer) {
-#ifdef SWIG_LINK_RUNTIME
-    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
-#else
-    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
-    if (PyErr_Occurred()) {
-      PyErr_Clear();
-      type_pointer = (void *)0;
-    }
-#endif
-  }
-  return (swig_module_info *) type_pointer;
-}
-
-#if PY_MAJOR_VERSION < 2
-/* PyModule_AddObject function was introduced in Python 2.0.  The following function
-   is copied out of Python/modsupport.c in python version 2.3.4 */
-SWIGINTERN int
-PyModule_AddObject(PyObject *m, char *name, PyObject *o)
-{
-  PyObject *dict;
-  if (!PyModule_Check(m)) {
-    PyErr_SetString(PyExc_TypeError,
-		    "PyModule_AddObject() needs module as first arg");
-    return SWIG_ERROR;
-  }
-  if (!o) {
-    PyErr_SetString(PyExc_TypeError,
-		    "PyModule_AddObject() needs non-NULL value");
-    return SWIG_ERROR;
-  }
-  
-  dict = PyModule_GetDict(m);
-  if (dict == NULL) {
-    /* Internal error -- modules must have a dict! */
-    PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
-		 PyModule_GetName(m));
-    return SWIG_ERROR;
-  }
-  if (PyDict_SetItemString(dict, name, o))
-    return SWIG_ERROR;
-  Py_DECREF(o);
-  return SWIG_OK;
-}
-#endif
-
-SWIGRUNTIME void
-SWIG_Python_DestroyModule(void *vptr)
-{
-  swig_module_info *swig_module = (swig_module_info *) vptr;
-  swig_type_info **types = swig_module->types;
-  size_t i;
-  for (i =0; i < swig_module->size; ++i) {
-    swig_type_info *ty = types[i];
-    if (ty->owndata) {
-      PySwigClientData *data = (PySwigClientData *) ty->clientdata;
-      if (data) PySwigClientData_Del(data);
-    }
-  }
-  Py_DECREF(SWIG_This());
-}
-
-SWIGRUNTIME void
-SWIG_Python_SetModule(swig_module_info *swig_module) {
-  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */
-
-  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				   swig_empty_runtime_method_table);
-  PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
-  if (pointer && module) {
-    PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
-  } else {
-    Py_XDECREF(pointer);
-  }
-}
-
-/* The python cached type query */
-SWIGRUNTIME PyObject *
-SWIG_Python_TypeCache(void) {
-  static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New();
-  return cache;
-}
-
-SWIGRUNTIME swig_type_info *
-SWIG_Python_TypeQuery(const char *type)
-{
-  PyObject *cache = SWIG_Python_TypeCache();
-  PyObject *key = PyString_FromString(type); 
-  PyObject *obj = PyDict_GetItem(cache, key);
-  swig_type_info *descriptor;
-  if (obj) {
-    descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
-  } else {
-    swig_module_info *swig_module = SWIG_Python_GetModule();
-    descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
-    if (descriptor) {
-      obj = PyCObject_FromVoidPtr(descriptor, NULL);
-      PyDict_SetItem(cache, key, obj);
-      Py_DECREF(obj);
-    }
-  }
-  Py_DECREF(key);
-  return descriptor;
-}
-
-/* 
-   For backward compatibility only
-*/
-#define SWIG_POINTER_EXCEPTION  0
-#define SWIG_arg_fail(arg)      SWIG_Python_ArgFail(arg)
-#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
-
-SWIGRUNTIME int
-SWIG_Python_AddErrMesg(const char* mesg, int infront)
-{
-  if (PyErr_Occurred()) {
-    PyObject *type = 0;
-    PyObject *value = 0;
-    PyObject *traceback = 0;
-    PyErr_Fetch(&type, &value, &traceback);
-    if (value) {
-      PyObject *old_str = PyObject_Str(value);
-      Py_XINCREF(type);
-      PyErr_Clear();
-      if (infront) {
-	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
-      } else {
-	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
-      }
-      Py_DECREF(old_str);
-    }
-    return 1;
-  } else {
-    return 0;
-  }
-}
-  
-SWIGRUNTIME int
-SWIG_Python_ArgFail(int argnum)
-{
-  if (PyErr_Occurred()) {
-    /* add information about failing argument */
-    char mesg[256];
-    PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum);
-    return SWIG_Python_AddErrMesg(mesg, 1);
-  } else {
-    return 0;
-  }
-}
-
-SWIGRUNTIMEINLINE const char *
-PySwigObject_GetDesc(PyObject *self)
-{
-  PySwigObject *v = (PySwigObject *)self;
-  swig_type_info *ty = v ? v->ty : 0;
-  return ty ? ty->str : (char*)"";
-}
-
-SWIGRUNTIME void
-SWIG_Python_TypeError(const char *type, PyObject *obj)
-{
-  if (type) {
-#if defined(SWIG_COBJECT_TYPES)
-    if (obj && PySwigObject_Check(obj)) {
-      const char *otype = (const char *) PySwigObject_GetDesc(obj);
-      if (otype) {
-	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
-		     type, otype);
-	return;
-      }
-    } else 
-#endif      
-    {
-      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
-      if (otype) {
-	PyObject *str = PyObject_Str(obj);
-	const char *cstr = str ? PyString_AsString(str) : 0;
-	if (cstr) {
-	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
-		       type, otype, cstr);
-	} else {
-	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
-		       type, otype);
-	}
-	Py_XDECREF(str);
-	return;
-      }
-    }   
-    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
-  } else {
-    PyErr_Format(PyExc_TypeError, "unexpected type is received");
-  }
-}
-
-
-/* Convert a pointer value, signal an exception on a type mismatch */
-SWIGRUNTIME void *
-SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
-  void *result;
-  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
-    PyErr_Clear();
-    if (flags & SWIG_POINTER_EXCEPTION) {
-      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
-      SWIG_Python_ArgFail(argnum);
-    }
-  }
-  return result;
-}
-
-
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
-}
-#endif
-
-
-
-#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) 
-
-#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else 
-
-
-
-/* -------- TYPES TABLE (BEGIN) -------- */
-
-#define SWIGTYPE_p_TDB_DATA swig_types[0]
-#define SWIGTYPE_p_char swig_types[1]
-#define SWIGTYPE_p_int swig_types[2]
-#define SWIGTYPE_p_long_long swig_types[3]
-#define SWIGTYPE_p_short swig_types[4]
-#define SWIGTYPE_p_signed_char swig_types[5]
-#define SWIGTYPE_p_tdb_context swig_types[6]
-#define SWIGTYPE_p_unsigned_char swig_types[7]
-#define SWIGTYPE_p_unsigned_int swig_types[8]
-#define SWIGTYPE_p_unsigned_long_long swig_types[9]
-#define SWIGTYPE_p_unsigned_short swig_types[10]
-static swig_type_info *swig_types[12];
-static swig_module_info swig_module = {swig_types, 11, 0, 0, 0, 0};
-#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
-#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
-
-/* -------- TYPES TABLE (END) -------- */
-
-#if (PY_VERSION_HEX <= 0x02000000)
-# if !defined(SWIG_PYTHON_CLASSIC)
-#  error "This python version requires swig to be run with the '-classic' option"
-# endif
-#endif
-#if (PY_VERSION_HEX <= 0x02020000)
-# error "This python version requires swig to be run with the '-nomodern' option"
-#endif
-#if (PY_VERSION_HEX <= 0x02020000)
-# error "This python version requires swig to be run with the '-nomodernargs' option"
-#endif
-#ifndef METH_O
-# error "This python version requires swig to be run with the '-nofastunpack' option"
-#endif
-#ifdef SWIG_TypeQuery
-# undef SWIG_TypeQuery
-#endif
-#define SWIG_TypeQuery SWIG_Python_TypeQuery
-
-/*-----------------------------------------------
-              @(target):= _tdb.so
-  ------------------------------------------------*/
-#define SWIG_init    init_tdb
-
-#define SWIG_name    "_tdb"
-
-#define SWIGVERSION 0x010335 
-#define SWIG_VERSION SWIGVERSION
-
-
-#define SWIG_as_voidptr(a) (void *)((const void *)(a)) 
-#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) 
-
-
-
-/* This symbol is used in both includes.h and Python.h which causes an
-   annoying compiler warning. */
-
-#ifdef HAVE_FSTAT
-#undef HAVE_FSTAT
-#endif
-
-/* Include tdb headers */
-#include <stdint.h>
-#include <signal.h>
-#include <tdb.h>
-#include <fcntl.h>
-
-typedef TDB_CONTEXT tdb;
-
-
-  #define SWIG_From_long   PyInt_FromLong 
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_int  (int value)
-{    
-  return SWIG_From_long  (value);
-}
-
-
-SWIGINTERN swig_type_info*
-SWIG_pchar_descriptor(void)
-{
-  static int init = 0;
-  static swig_type_info* info = 0;
-  if (!init) {
-    info = SWIG_TypeQuery("_p_char");
-    init = 1;
-  }
-  return info;
-}
-
-
-SWIGINTERN int
-SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
-{
-  if (PyString_Check(obj)) {
-    char *cstr; Py_ssize_t len;
-    PyString_AsStringAndSize(obj, &cstr, &len);
-    if (cptr)  {
-      if (alloc) {
-	/* 
-	   In python the user should not be able to modify the inner
-	   string representation. To warranty that, if you define
-	   SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string
-	   buffer is always returned.
-
-	   The default behavior is just to return the pointer value,
-	   so, be careful.
-	*/ 
-#if defined(SWIG_PYTHON_SAFE_CSTRINGS)
-	if (*alloc != SWIG_OLDOBJ) 
-#else
-	if (*alloc == SWIG_NEWOBJ) 
-#endif
-	  {
-	    *cptr = (char *)memcpy((char *)malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
-	    *alloc = SWIG_NEWOBJ;
-	  }
-	else {
-	  *cptr = cstr;
-	  *alloc = SWIG_OLDOBJ;
-	}
-      } else {
-	*cptr = PyString_AsString(obj);
-      }
-    }
-    if (psize) *psize = len + 1;
-    return SWIG_OK;
-  } else {
-    swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
-    if (pchar_descriptor) {
-      void* vptr = 0;
-      if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) {
-	if (cptr) *cptr = (char *) vptr;
-	if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0;
-	if (alloc) *alloc = SWIG_OLDOBJ;
-	return SWIG_OK;
-      }
-    }
-  }
-  return SWIG_TypeError;
-}
-
-
-
-
-
-#include <limits.h>
-#if !defined(SWIG_NO_LLONG_MAX)
-# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
-#   define LLONG_MAX __LONG_LONG_MAX__
-#   define LLONG_MIN (-LLONG_MAX - 1LL)
-#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-# endif
-#endif
-
-
-SWIGINTERN int
-SWIG_AsVal_double (PyObject *obj, double *val)
-{
-  int res = SWIG_TypeError;
-  if (PyFloat_Check(obj)) {
-    if (val) *val = PyFloat_AsDouble(obj);
-    return SWIG_OK;
-  } else if (PyInt_Check(obj)) {
-    if (val) *val = PyInt_AsLong(obj);
-    return SWIG_OK;
-  } else if (PyLong_Check(obj)) {
-    double v = PyLong_AsDouble(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    int dispatch = 0;
-    double d = PyFloat_AsDouble(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = d;
-      return SWIG_AddCast(SWIG_OK);
-    } else {
-      PyErr_Clear();
-    }
-    if (!dispatch) {
-      long v = PyLong_AsLong(obj);
-      if (!PyErr_Occurred()) {
-	if (val) *val = v;
-	return SWIG_AddCast(SWIG_AddCast(SWIG_OK));
-      } else {
-	PyErr_Clear();
-      }
-    }
-  }
-#endif
-  return res;
-}
-
-
-#include <float.h>
-
-
-#include <math.h>
-
-
-SWIGINTERNINLINE int
-SWIG_CanCastAsInteger(double *d, double min, double max) {
-  double x = *d;
-  if ((min <= x && x <= max)) {
-   double fx = floor(x);
-   double cx = ceil(x);
-   double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
-   if ((errno == EDOM) || (errno == ERANGE)) {
-     errno = 0;
-   } else {
-     double summ, reps, diff;
-     if (rd < x) {
-       diff = x - rd;
-     } else if (rd > x) {
-       diff = rd - x;
-     } else {
-       return 1;
-     }
-     summ = rd + x;
-     reps = diff/summ;
-     if (reps < 8*DBL_EPSILON) {
-       *d = rd;
-       return 1;
-     }
-   }
-  }
-  return 0;
-}
-
-
-SWIGINTERN int
-SWIG_AsVal_long (PyObject *obj, long* val)
-{
-  if (PyInt_Check(obj)) {
-    if (val) *val = PyInt_AsLong(obj);
-    return SWIG_OK;
-  } else if (PyLong_Check(obj)) {
-    long v = PyLong_AsLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    int dispatch = 0;
-    long v = PyInt_AsLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_AddCast(SWIG_OK);
-    } else {
-      PyErr_Clear();
-    }
-    if (!dispatch) {
-      double d;
-      int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d));
-      if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
-	if (val) *val = (long)(d);
-	return res;
-      }
-    }
-  }
-#endif
-  return SWIG_TypeError;
-}
-
-
-SWIGINTERN int
-SWIG_AsVal_int (PyObject * obj, int *val)
-{
-  long v;
-  int res = SWIG_AsVal_long (obj, &v);
-  if (SWIG_IsOK(res)) {
-    if ((v < INT_MIN || v > INT_MAX)) {
-      return SWIG_OverflowError;
-    } else {
-      if (val) *val = (int)(v);
-    }
-  }  
-  return res;
-}
-
-SWIGINTERN tdb *new_tdb(char const *name,int hash_size,int tdb_flags,int flags,mode_t mode){
-            return tdb_open(name, hash_size, tdb_flags, flags, mode);
-        }
-SWIGINTERN void delete_tdb(tdb *self){ tdb_close(self); }
-
-SWIGINTERNINLINE PyObject *
-SWIG_FromCharPtrAndSize(const char* carray, size_t size)
-{
-  if (carray) {
-    if (size > INT_MAX) {
-      swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
-      return pchar_descriptor ? 
-	SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
-    } else {
-      return PyString_FromStringAndSize(carray, (int)(size));
-    }
-  } else {
-    return SWIG_Py_Void();
-  }
-}
-
-
-SWIGINTERNINLINE PyObject * 
-SWIG_FromCharPtr(const char *cptr)
-{ 
-  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
-}
-
-
-SWIGINTERNINLINE PyObject* 
-SWIG_From_unsigned_SS_long  (unsigned long value)
-{
-  return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); 
-}
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_size_t  (size_t value)
-{    
-  return SWIG_From_unsigned_SS_long  ((unsigned long)(value));
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-SWIGINTERN PyObject *_wrap_new_Tdb(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  char *arg1 = (char *) 0 ;
-  int arg2 ;
-  int arg3 ;
-  int arg4 ;
-  mode_t arg5 ;
-  tdb *result = 0 ;
-  int res1 ;
-  char *buf1 = 0 ;
-  int alloc1 = 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  int val3 ;
-  int ecode3 = 0 ;
-  int val4 ;
-  int ecode4 = 0 ;
-  int val5 ;
-  int ecode5 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  PyObject * obj4 = 0 ;
-  char *  kwnames[] = {
-    (char *) "name",(char *) "hash_size",(char *) "tdb_flags",(char *) "flags",(char *) "mode", NULL 
-  };
-  
-  arg2 = 0;
-  arg3 = TDB_DEFAULT;
-  arg4 = O_RDWR;
-  arg5 = 0600;
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOOO:new_Tdb",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
-  res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Tdb" "', argument " "1"" of type '" "char const *""'");
-  }
-  arg1 = (char *)(buf1);
-  if (obj1) {
-    ecode2 = SWIG_AsVal_int(obj1, &val2);
-    if (!SWIG_IsOK(ecode2)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Tdb" "', argument " "2"" of type '" "int""'");
-    } 
-    arg2 = (int)(val2);
-  }
-  if (obj2) {
-    ecode3 = SWIG_AsVal_int(obj2, &val3);
-    if (!SWIG_IsOK(ecode3)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Tdb" "', argument " "3"" of type '" "int""'");
-    } 
-    arg3 = (int)(val3);
-  }
-  if (obj3) {
-    ecode4 = SWIG_AsVal_int(obj3, &val4);
-    if (!SWIG_IsOK(ecode4)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Tdb" "', argument " "4"" of type '" "int""'");
-    } 
-    arg4 = (int)(val4);
-  }
-  if (obj4) {
-    ecode5 = SWIG_AsVal_int(obj4, &val5);
-    if (!SWIG_IsOK(ecode5)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Tdb" "', argument " "5"" of type '" "mode_t""'");
-    } 
-    arg5 = (mode_t)(val5);
-  }
-  result = (tdb *)new_tdb((char const *)arg1,arg2,arg3,arg4,arg5);
-  /* Throw an IOError exception from errno if tdb_open() returns NULL */
-  if (result == NULL) {
-    PyErr_SetFromErrno(PyExc_IOError);
-    SWIG_fail;
-  }
-  resultobj = SWIG_NewPointerObj(result, SWIGTYPE_p_tdb_context, 0);
-  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
-  return resultobj;
-fail:
-  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_error(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  enum TDB_ERROR result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_error" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (enum TDB_ERROR)tdb_error(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_Tdb(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Tdb" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  delete_tdb(arg1);
-  
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_close(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_close" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_close(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_append(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA arg2 ;
-  TDB_DATA arg3 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "key",(char *) "new_dbuf", NULL 
-  };
-  
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:Tdb_append",kwnames,&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_append" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  if (obj1 == Py_None) {
-    (&arg2)->dsize = 0;
-    (&arg2)->dptr = NULL;
-  } else if (!PyString_Check(obj1)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg2)->dsize = PyString_Size(obj1);
-    (&arg2)->dptr = (uint8_t *)PyString_AsString(obj1);
-  }
-  if (obj2 == Py_None) {
-    (&arg3)->dsize = 0;
-    (&arg3)->dptr = NULL;
-  } else if (!PyString_Check(obj2)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg3)->dsize = PyString_Size(obj2);
-    (&arg3)->dptr = (uint8_t *)PyString_AsString(obj2);
-  }
-  result = (int)tdb_append(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_errorstr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  char *result = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_errorstr" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (char *)tdb_errorstr(arg1);
-  resultobj = SWIG_FromCharPtr((const char *)result);
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA arg2 ;
-  TDB_DATA result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "key", NULL 
-  };
-  
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Tdb_get",kwnames,&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_get" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  if (obj1 == Py_None) {
-    (&arg2)->dsize = 0;
-    (&arg2)->dptr = NULL;
-  } else if (!PyString_Check(obj1)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg2)->dsize = PyString_Size(obj1);
-    (&arg2)->dptr = (uint8_t *)PyString_AsString(obj1);
-  }
-  result = tdb_fetch(arg1,arg2);
-  if ((&result)->dptr == NULL && (&result)->dsize == 0) {
-    resultobj = Py_None;
-  } else {
-    resultobj = PyString_FromStringAndSize((const char *)(&result)->dptr, (&result)->dsize);
-    free((&result)->dptr);
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_delete(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA arg2 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "key", NULL 
-  };
-  
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Tdb_delete",kwnames,&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_delete" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  if (obj1 == Py_None) {
-    (&arg2)->dsize = 0;
-    (&arg2)->dptr = NULL;
-  } else if (!PyString_Check(obj1)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg2)->dsize = PyString_Size(obj1);
-    (&arg2)->dptr = (uint8_t *)PyString_AsString(obj1);
-  }
-  result = (int)tdb_delete(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_store(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA arg2 ;
-  TDB_DATA arg3 ;
-  int arg4 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int val4 ;
-  int ecode4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "key",(char *) "dbuf",(char *) "flag", NULL 
-  };
-  
-  arg4 = TDB_REPLACE;
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO|O:Tdb_store",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_store" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  if (obj1 == Py_None) {
-    (&arg2)->dsize = 0;
-    (&arg2)->dptr = NULL;
-  } else if (!PyString_Check(obj1)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg2)->dsize = PyString_Size(obj1);
-    (&arg2)->dptr = (uint8_t *)PyString_AsString(obj1);
-  }
-  if (obj2 == Py_None) {
-    (&arg3)->dsize = 0;
-    (&arg3)->dptr = NULL;
-  } else if (!PyString_Check(obj2)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg3)->dsize = PyString_Size(obj2);
-    (&arg3)->dptr = (uint8_t *)PyString_AsString(obj2);
-  }
-  if (obj3) {
-    ecode4 = SWIG_AsVal_int(obj3, &val4);
-    if (!SWIG_IsOK(ecode4)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Tdb_store" "', argument " "4"" of type '" "int""'");
-    } 
-    arg4 = (int)(val4);
-  }
-  result = (int)tdb_store(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_exists(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA arg2 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "key", NULL 
-  };
-  
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Tdb_exists",kwnames,&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_exists" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  if (obj1 == Py_None) {
-    (&arg2)->dsize = 0;
-    (&arg2)->dptr = NULL;
-  } else if (!PyString_Check(obj1)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg2)->dsize = PyString_Size(obj1);
-    (&arg2)->dptr = (uint8_t *)PyString_AsString(obj1);
-  }
-  result = (int)tdb_exists(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_firstkey(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_firstkey" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = tdb_firstkey(arg1);
-  if ((&result)->dptr == NULL && (&result)->dsize == 0) {
-    resultobj = Py_None;
-  } else {
-    resultobj = PyString_FromStringAndSize((const char *)(&result)->dptr, (&result)->dsize);
-    free((&result)->dptr);
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_nextkey(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  TDB_DATA arg2 ;
-  TDB_DATA result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "key", NULL 
-  };
-  
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Tdb_nextkey",kwnames,&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_nextkey" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  if (obj1 == Py_None) {
-    (&arg2)->dsize = 0;
-    (&arg2)->dptr = NULL;
-  } else if (!PyString_Check(obj1)) {
-    PyErr_SetString(PyExc_TypeError, "string arg expected");
-    return NULL;
-  } else {
-    (&arg2)->dsize = PyString_Size(obj1);
-    (&arg2)->dptr = (uint8_t *)PyString_AsString(obj1);
-  }
-  result = tdb_nextkey(arg1,arg2);
-  if ((&result)->dptr == NULL && (&result)->dsize == 0) {
-    resultobj = Py_None;
-  } else {
-    resultobj = PyString_FromStringAndSize((const char *)(&result)->dptr, (&result)->dsize);
-    free((&result)->dptr);
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_lock_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_lock_all" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_lockall(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_unlock_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_unlock_all" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_unlockall(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_read_lock_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_read_lock_all" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_lockall_read(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_read_unlock_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_read_unlock_all" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_unlockall_read(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_reopen(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_reopen" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_reopen(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_transaction_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_transaction_start" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_transaction_start(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_transaction_commit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_transaction_commit" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_transaction_commit(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_transaction_cancel(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_transaction_cancel" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_transaction_cancel(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_transaction_recover(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_transaction_recover" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_transaction_recover(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_hash_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_hash_size" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_hash_size(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_map_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  size_t result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_map_size" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = tdb_map_size(arg1);
-  resultobj = SWIG_From_size_t((size_t)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_get_flags(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int result;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_get_flags" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (int)tdb_get_flags(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_set_max_dead(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  int arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  char *  kwnames[] = {
-    (char *) "self",(char *) "max_dead", NULL 
-  };
-  
-  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Tdb_set_max_dead",kwnames,&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_set_max_dead" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Tdb_set_max_dead" "', argument " "2"" of type '" "int""'");
-  } 
-  arg2 = (int)(val2);
-  tdb_set_max_dead(arg1,arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_Tdb_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  tdb *arg1 = (tdb *) 0 ;
-  char *result = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_tdb_context, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Tdb_name" "', argument " "1"" of type '" "tdb *""'"); 
-  }
-  arg1 = (tdb *)(argp1);
-  result = (char *)tdb_name(arg1);
-  resultobj = SWIG_FromCharPtr((const char *)result);
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *Tdb_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_tdb_context, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *Tdb_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
-static PyMethodDef SwigMethods[] = {
-	 { (char *)"new_Tdb", (PyCFunction) _wrap_new_Tdb, METH_VARARGS | METH_KEYWORDS, (char *)"\n"
-		"S.__init__(name,hash_size=0,tdb_flags=TDB_DEFAULT,flags=O_RDWR,mode=0600)\n"
-		"Open a TDB file.\n"
-		""},
-	 { (char *)"Tdb_error", (PyCFunction)_wrap_Tdb_error, METH_O, (char *)"\n"
-		"S.error() -> int\n"
-		"Find last error number returned by operation on this TDB.\n"
-		""},
-	 { (char *)"delete_Tdb", (PyCFunction)_wrap_delete_Tdb, METH_O, NULL},
-	 { (char *)"Tdb_close", (PyCFunction)_wrap_Tdb_close, METH_O, (char *)"\n"
-		"S.close() -> None\n"
-		"Close the TDB file.\n"
-		""},
-	 { (char *)"Tdb_append", (PyCFunction) _wrap_Tdb_append, METH_VARARGS | METH_KEYWORDS, NULL},
-	 { (char *)"Tdb_errorstr", (PyCFunction)_wrap_Tdb_errorstr, METH_O, (char *)"\n"
-		"S.errorstr() -> errorstring\n"
-		"Obtain last error message.\n"
-		""},
-	 { (char *)"Tdb_get", (PyCFunction) _wrap_Tdb_get, METH_VARARGS | METH_KEYWORDS, (char *)"\n"
-		"S.fetch(key) -> value\n"
-		"Fetch a value.\n"
-		""},
-	 { (char *)"Tdb_delete", (PyCFunction) _wrap_Tdb_delete, METH_VARARGS | METH_KEYWORDS, (char *)"\n"
-		"S.delete(key) -> None\n"
-		"Delete an entry.\n"
-		""},
-	 { (char *)"Tdb_store", (PyCFunction) _wrap_Tdb_store, METH_VARARGS | METH_KEYWORDS, (char *)"\n"
-		"S.store(key, value, flag=TDB_REPLACE) -> None\n"
-		"Store an entry.\n"
-		""},
-	 { (char *)"Tdb_exists", (PyCFunction) _wrap_Tdb_exists, METH_VARARGS | METH_KEYWORDS, (char *)"\n"
-		"S.exists(key) -> bool\n"
-		"Check whether key exists in this database.\n"
-		""},
-	 { (char *)"Tdb_firstkey", (PyCFunction)_wrap_Tdb_firstkey, METH_O, (char *)"\n"
-		"S.firstkey() -> data\n"
-		"Return the first key in this database.\n"
-		""},
-	 { (char *)"Tdb_nextkey", (PyCFunction) _wrap_Tdb_nextkey, METH_VARARGS | METH_KEYWORDS, (char *)"\n"
-		"S.nextkey(prev) -> data\n"
-		"Return the next key in this database.\n"
-		""},
-	 { (char *)"Tdb_lock_all", (PyCFunction)_wrap_Tdb_lock_all, METH_O, (char *)"S.lockall() -> bool"},
-	 { (char *)"Tdb_unlock_all", (PyCFunction)_wrap_Tdb_unlock_all, METH_O, (char *)"S.unlockall() -> bool"},
-	 { (char *)"Tdb_read_lock_all", (PyCFunction)_wrap_Tdb_read_lock_all, METH_O, NULL},
-	 { (char *)"Tdb_read_unlock_all", (PyCFunction)_wrap_Tdb_read_unlock_all, METH_O, NULL},
-	 { (char *)"Tdb_reopen", (PyCFunction)_wrap_Tdb_reopen, METH_O, (char *)"\n"
-		"S.reopen() -> bool\n"
-		"Reopen this file.\n"
-		""},
-	 { (char *)"Tdb_transaction_start", (PyCFunction)_wrap_Tdb_transaction_start, METH_O, (char *)"\n"
-		"S.transaction_start() -> None\n"
-		"Start a new transaction.\n"
-		""},
-	 { (char *)"Tdb_transaction_commit", (PyCFunction)_wrap_Tdb_transaction_commit, METH_O, (char *)"\n"
-		"S.transaction_commit() -> None\n"
-		"Commit the currently active transaction.\n"
-		""},
-	 { (char *)"Tdb_transaction_cancel", (PyCFunction)_wrap_Tdb_transaction_cancel, METH_O, (char *)"\n"
-		"S.transaction_cancel() -> None\n"
-		"Cancel the currently active transaction.\n"
-		""},
-	 { (char *)"Tdb_transaction_recover", (PyCFunction)_wrap_Tdb_transaction_recover, METH_O, NULL},
-	 { (char *)"Tdb_hash_size", (PyCFunction)_wrap_Tdb_hash_size, METH_O, (char *)"S.hash_size() -> int"},
-	 { (char *)"Tdb_map_size", (PyCFunction)_wrap_Tdb_map_size, METH_O, (char *)"S.map_size() -> int"},
-	 { (char *)"Tdb_get_flags", (PyCFunction)_wrap_Tdb_get_flags, METH_O, (char *)"S.get_flags() -> int"},
-	 { (char *)"Tdb_set_max_dead", (PyCFunction) _wrap_Tdb_set_max_dead, METH_VARARGS | METH_KEYWORDS, (char *)"S.set_max_dead(int) -> None"},
-	 { (char *)"Tdb_name", (PyCFunction)_wrap_Tdb_name, METH_O, (char *)"\n"
-		"S.name() -> path\n"
-		"Return filename of this TDB file.\n"
-		""},
-	 { (char *)"Tdb_swigregister", Tdb_swigregister, METH_VARARGS, NULL},
-	 { (char *)"Tdb_swiginit", Tdb_swiginit, METH_VARARGS, NULL},
-	 { NULL, NULL, 0, NULL }
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-
-static swig_type_info _swigt__p_TDB_DATA = {"_p_TDB_DATA", "TDB_DATA *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *|mode_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_long_long = {"_p_long_long", "int_least64_t *|int_fast64_t *|int64_t *|long long *|intmax_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_short = {"_p_short", "short *|int_least16_t *|int16_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|int_least8_t *|int_fast8_t *|int8_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_tdb_context = {"_p_tdb_context", "struct tdb_context *|tdb *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *|uint_least8_t *|uint_fast8_t *|uint8_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "uintptr_t *|uint_least32_t *|uint_fast32_t *|uint32_t *|unsigned int *|uint_fast16_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_long_long = {"_p_unsigned_long_long", "uint_least64_t *|uint_fast64_t *|uint64_t *|unsigned long long *|uintmax_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|uint_least16_t *|uint16_t *", 0, 0, (void*)0, 0};
-
-static swig_type_info *swig_type_initial[] = {
-  &_swigt__p_TDB_DATA,
-  &_swigt__p_char,
-  &_swigt__p_int,
-  &_swigt__p_long_long,
-  &_swigt__p_short,
-  &_swigt__p_signed_char,
-  &_swigt__p_tdb_context,
-  &_swigt__p_unsigned_char,
-  &_swigt__p_unsigned_int,
-  &_swigt__p_unsigned_long_long,
-  &_swigt__p_unsigned_short,
-};
-
-static swig_cast_info _swigc__p_TDB_DATA[] = {  {&_swigt__p_TDB_DATA, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_long_long[] = {  {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_short[] = {  {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_signed_char[] = {  {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_tdb_context[] = {  {&_swigt__p_tdb_context, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_unsigned_int[] = {  {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_unsigned_long_long[] = {  {&_swigt__p_unsigned_long_long, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_unsigned_short[] = {  {&_swigt__p_unsigned_short, 0, 0, 0},{0, 0, 0, 0}};
-
-static swig_cast_info *swig_cast_initial[] = {
-  _swigc__p_TDB_DATA,
-  _swigc__p_char,
-  _swigc__p_int,
-  _swigc__p_long_long,
-  _swigc__p_short,
-  _swigc__p_signed_char,
-  _swigc__p_tdb_context,
-  _swigc__p_unsigned_char,
-  _swigc__p_unsigned_int,
-  _swigc__p_unsigned_long_long,
-  _swigc__p_unsigned_short,
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
-
-static swig_const_info swig_const_table[] = {
-{0, 0, 0, 0.0, 0, 0}};
-
-#ifdef __cplusplus
-}
-#endif
-/* -----------------------------------------------------------------------------
- * Type initialization:
- * This problem is tough by the requirement that no dynamic 
- * memory is used. Also, since swig_type_info structures store pointers to 
- * swig_cast_info structures and swig_cast_info structures store pointers back
- * to swig_type_info structures, we need some lookup code at initialization. 
- * The idea is that swig generates all the structures that are needed. 
- * The runtime then collects these partially filled structures. 
- * The SWIG_InitializeModule function takes these initial arrays out of 
- * swig_module, and does all the lookup, filling in the swig_module.types
- * array with the correct data and linking the correct swig_cast_info
- * structures together.
- *
- * The generated swig_type_info structures are assigned staticly to an initial 
- * array. We just loop through that array, and handle each type individually.
- * First we lookup if this type has been already loaded, and if so, use the
- * loaded structure instead of the generated one. Then we have to fill in the
- * cast linked list. The cast data is initially stored in something like a
- * two-dimensional array. Each row corresponds to a type (there are the same
- * number of rows as there are in the swig_type_initial array). Each entry in
- * a column is one of the swig_cast_info structures for that type.
- * The cast_initial array is actually an array of arrays, because each row has
- * a variable number of columns. So to actually build the cast linked list,
- * we find the array of casts associated with the type, and loop through it 
- * adding the casts to the list. The one last trick we need to do is making
- * sure the type pointer in the swig_cast_info struct is correct.
- *
- * First off, we lookup the cast->type name to see if it is already loaded. 
- * There are three cases to handle:
- *  1) If the cast->type has already been loaded AND the type we are adding
- *     casting info to has not been loaded (it is in this module), THEN we
- *     replace the cast->type pointer with the type pointer that has already
- *     been loaded.
- *  2) If BOTH types (the one we are adding casting info to, and the 
- *     cast->type) are loaded, THEN the cast info has already been loaded by
- *     the previous module so we just ignore it.
- *  3) Finally, if cast->type has not already been loaded, then we add that
- *     swig_cast_info to the linked list (because the cast->type) pointer will
- *     be correct.
- * ----------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* c-mode */
-#endif
-#endif
-
-#if 0
-#define SWIGRUNTIME_DEBUG
-#endif
-
-
-SWIGRUNTIME void
-SWIG_InitializeModule(void *clientdata) {
-  size_t i;
-  swig_module_info *module_head, *iter;
-  int found, init;
-  
-  clientdata = clientdata;
-  
-  /* check to see if the circular list has been setup, if not, set it up */
-  if (swig_module.next==0) {
-    /* Initialize the swig_module */
-    swig_module.type_initial = swig_type_initial;
-    swig_module.cast_initial = swig_cast_initial;
-    swig_module.next = &swig_module;
-    init = 1;
-  } else {
-    init = 0;
-  }
-  
-  /* Try and load any already created modules */
-  module_head = SWIG_GetModule(clientdata);
-  if (!module_head) {
-    /* This is the first module loaded for this interpreter */
-    /* so set the swig module into the interpreter */
-    SWIG_SetModule(clientdata, &swig_module);
-    module_head = &swig_module;
-  } else {
-    /* the interpreter has loaded a SWIG module, but has it loaded this one? */
-    found=0;
-    iter=module_head;
-    do {
-      if (iter==&swig_module) {
-        found=1;
-        break;
-      }
-      iter=iter->next;
-    } while (iter!= module_head);
-    
-    /* if the is found in the list, then all is done and we may leave */
-    if (found) return;
-    /* otherwise we must add out module into the list */
-    swig_module.next = module_head->next;
-    module_head->next = &swig_module;
-  }
-  
-  /* When multiple interpeters are used, a module could have already been initialized in
-       a different interpreter, but not yet have a pointer in this interpreter.
-       In this case, we do not want to continue adding types... everything should be
-       set up already */
-  if (init == 0) return;
-  
-  /* Now work on filling in swig_module.types */
-#ifdef SWIGRUNTIME_DEBUG
-  printf("SWIG_InitializeModule: size %d\n", swig_module.size);
-#endif
-  for (i = 0; i < swig_module.size; ++i) {
-    swig_type_info *type = 0;
-    swig_type_info *ret;
-    swig_cast_info *cast;
-    
-#ifdef SWIGRUNTIME_DEBUG
-    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
-#endif
-    
-    /* if there is another module already loaded */
-    if (swig_module.next != &swig_module) {
-      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
-    }
-    if (type) {
-      /* Overwrite clientdata field */
-#ifdef SWIGRUNTIME_DEBUG
-      printf("SWIG_InitializeModule: found type %s\n", type->name);
-#endif
-      if (swig_module.type_initial[i]->clientdata) {
-        type->clientdata = swig_module.type_initial[i]->clientdata;
-#ifdef SWIGRUNTIME_DEBUG
-        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
-#endif
-      }
-    } else {
-      type = swig_module.type_initial[i];
-    }
-    
-    /* Insert casting types */
-    cast = swig_module.cast_initial[i];
-    while (cast->type) {
-      /* Don't need to add information already in the list */
-      ret = 0;
-#ifdef SWIGRUNTIME_DEBUG
-      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
-#endif
-      if (swig_module.next != &swig_module) {
-        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
-#ifdef SWIGRUNTIME_DEBUG
-        if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
-#endif
-      }
-      if (ret) {
-        if (type == swig_module.type_initial[i]) {
-#ifdef SWIGRUNTIME_DEBUG
-          printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
-#endif
-          cast->type = ret;
-          ret = 0;
-        } else {
-          /* Check for casting already in the list */
-          swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
-#ifdef SWIGRUNTIME_DEBUG
-          if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
-#endif
-          if (!ocast) ret = 0;
-        }
-      }
-      
-      if (!ret) {
-#ifdef SWIGRUNTIME_DEBUG
-        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
-#endif
-        if (type->cast) {
-          type->cast->prev = cast;
-          cast->next = type->cast;
-        }
-        type->cast = cast;
-      }
-      cast++;
-    }
-    /* Set entry in modules->types array equal to the type */
-    swig_module.types[i] = type;
-  }
-  swig_module.types[i] = 0;
-  
-#ifdef SWIGRUNTIME_DEBUG
-  printf("**** SWIG_InitializeModule: Cast List ******\n");
-  for (i = 0; i < swig_module.size; ++i) {
-    int j = 0;
-    swig_cast_info *cast = swig_module.cast_initial[i];
-    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
-    while (cast->type) {
-      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
-      cast++;
-      ++j;
-    }
-    printf("---- Total casts: %d\n",j);
-  }
-  printf("**** SWIG_InitializeModule: Cast List ******\n");
-#endif
-}
-
-/* This function will propagate the clientdata field of type to
-* any new swig_type_info structures that have been added into the list
-* of equivalent types.  It is like calling
-* SWIG_TypeClientData(type, clientdata) a second time.
-*/
-SWIGRUNTIME void
-SWIG_PropagateClientData(void) {
-  size_t i;
-  swig_cast_info *equiv;
-  static int init_run = 0;
-  
-  if (init_run) return;
-  init_run = 1;
-  
-  for (i = 0; i < swig_module.size; i++) {
-    if (swig_module.types[i]->clientdata) {
-      equiv = swig_module.types[i]->cast;
-      while (equiv) {
-        if (!equiv->converter) {
-          if (equiv->type && !equiv->type->clientdata)
-          SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
-        }
-        equiv = equiv->next;
-      }
-    }
-  }
-}
-
-#ifdef __cplusplus
-#if 0
-{
-  /* c-mode */
-#endif
-}
-#endif
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-  
-  /* Python-specific SWIG API */
-#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
-#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
-#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
-  
-  /* -----------------------------------------------------------------------------
-   * global variable support code.
-   * ----------------------------------------------------------------------------- */
-  
-  typedef struct swig_globalvar {
-    char       *name;                  /* Name of global variable */
-    PyObject *(*get_attr)(void);       /* Return the current value */
-    int       (*set_attr)(PyObject *); /* Set the value */
-    struct swig_globalvar *next;
-  } swig_globalvar;
-  
-  typedef struct swig_varlinkobject {
-    PyObject_HEAD
-    swig_globalvar *vars;
-  } swig_varlinkobject;
-  
-  SWIGINTERN PyObject *
-  swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) {
-    return PyString_FromString("<Swig global variables>");
-  }
-  
-  SWIGINTERN PyObject *
-  swig_varlink_str(swig_varlinkobject *v) {
-    PyObject *str = PyString_FromString("(");
-    swig_globalvar  *var;
-    for (var = v->vars; var; var=var->next) {
-      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
-      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
-    }
-    PyString_ConcatAndDel(&str,PyString_FromString(")"));
-    return str;
-  }
-  
-  SWIGINTERN int
-  swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
-    PyObject *str = swig_varlink_str(v);
-    fprintf(fp,"Swig global variables ");
-    fprintf(fp,"%s\n", PyString_AsString(str));
-    Py_DECREF(str);
-    return 0;
-  }
-  
-  SWIGINTERN void
-  swig_varlink_dealloc(swig_varlinkobject *v) {
-    swig_globalvar *var = v->vars;
-    while (var) {
-      swig_globalvar *n = var->next;
-      free(var->name);
-      free(var);
-      var = n;
-    }
-  }
-  
-  SWIGINTERN PyObject *
-  swig_varlink_getattr(swig_varlinkobject *v, char *n) {
-    PyObject *res = NULL;
-    swig_globalvar *var = v->vars;
-    while (var) {
-      if (strcmp(var->name,n) == 0) {
-        res = (*var->get_attr)();
-        break;
-      }
-      var = var->next;
-    }
-    if (res == NULL && !PyErr_Occurred()) {
-      PyErr_SetString(PyExc_NameError,"Unknown C global variable");
-    }
-    return res;
-  }
-  
-  SWIGINTERN int
-  swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
-    int res = 1;
-    swig_globalvar *var = v->vars;
-    while (var) {
-      if (strcmp(var->name,n) == 0) {
-        res = (*var->set_attr)(p);
-        break;
-      }
-      var = var->next;
-    }
-    if (res == 1 && !PyErr_Occurred()) {
-      PyErr_SetString(PyExc_NameError,"Unknown C global variable");
-    }
-    return res;
-  }
-  
-  SWIGINTERN PyTypeObject*
-  swig_varlink_type(void) {
-    static char varlink__doc__[] = "Swig var link object";
-    static PyTypeObject varlink_type;
-    static int type_init = 0;  
-    if (!type_init) {
-      const PyTypeObject tmp
-      = {
-        PyObject_HEAD_INIT(NULL)
-        0,                                  /* Number of items in variable part (ob_size) */
-        (char *)"swigvarlink",              /* Type name (tp_name) */
-        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
-        0,                                  /* Itemsize (tp_itemsize) */
-        (destructor) swig_varlink_dealloc,   /* Deallocator (tp_dealloc) */ 
-        (printfunc) swig_varlink_print,     /* Print (tp_print) */
-        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
-        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
-        0,                                  /* tp_compare */
-        (reprfunc) swig_varlink_repr,       /* tp_repr */
-        0,                                  /* tp_as_number */
-        0,                                  /* tp_as_sequence */
-        0,                                  /* tp_as_mapping */
-        0,                                  /* tp_hash */
-        0,                                  /* tp_call */
-        (reprfunc)swig_varlink_str,        /* tp_str */
-        0,                                  /* tp_getattro */
-        0,                                  /* tp_setattro */
-        0,                                  /* tp_as_buffer */
-        0,                                  /* tp_flags */
-        varlink__doc__,                     /* tp_doc */
-        0,                                  /* tp_traverse */
-        0,                                  /* tp_clear */
-        0,                                  /* tp_richcompare */
-        0,                                  /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
-        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
-        0,                                  /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
-        0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
-      varlink_type = tmp;
-      varlink_type.ob_type = &PyType_Type;
-      type_init = 1;
-    }
-    return &varlink_type;
-  }
-  
-  /* Create a variable linking object for use later */
-  SWIGINTERN PyObject *
-  SWIG_Python_newvarlink(void) {
-    swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type());
-    if (result) {
-      result->vars = 0;
-    }
-    return ((PyObject*) result);
-  }
-  
-  SWIGINTERN void 
-  SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
-    swig_varlinkobject *v = (swig_varlinkobject *) p;
-    swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
-    if (gv) {
-      size_t size = strlen(name)+1;
-      gv->name = (char *)malloc(size);
-      if (gv->name) {
-        strncpy(gv->name,name,size);
-        gv->get_attr = get_attr;
-        gv->set_attr = set_attr;
-        gv->next = v->vars;
-      }
-    }
-    v->vars = gv;
-  }
-  
-  SWIGINTERN PyObject *
-  SWIG_globals(void) {
-    static PyObject *_SWIG_globals = 0; 
-    if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink();  
-    return _SWIG_globals;
-  }
-  
-  /* -----------------------------------------------------------------------------
-   * constants/methods manipulation
-   * ----------------------------------------------------------------------------- */
-  
-  /* Install Constants */
-  SWIGINTERN void
-  SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
-    PyObject *obj = 0;
-    size_t i;
-    for (i = 0; constants[i].type; ++i) {
-      switch(constants[i].type) {
-      case SWIG_PY_POINTER:
-        obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
-        break;
-      case SWIG_PY_BINARY:
-        obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
-        break;
-      default:
-        obj = 0;
-        break;
-      }
-      if (obj) {
-        PyDict_SetItemString(d, constants[i].name, obj);
-        Py_DECREF(obj);
-      }
-    }
-  }
-  
-  /* -----------------------------------------------------------------------------*/
-  /* Fix SwigMethods to carry the callback ptrs when needed */
-  /* -----------------------------------------------------------------------------*/
-  
-  SWIGINTERN void
-  SWIG_Python_FixMethods(PyMethodDef *methods,
-    swig_const_info *const_table,
-    swig_type_info **types,
-    swig_type_info **types_initial) {
-    size_t i;
-    for (i = 0; methods[i].ml_name; ++i) {
-      const char *c = methods[i].ml_doc;
-      if (c && (c = strstr(c, "swig_ptr: "))) {
-        int j;
-        swig_const_info *ci = 0;
-        const char *name = c + 10;
-        for (j = 0; const_table[j].type; ++j) {
-          if (strncmp(const_table[j].name, name, 
-              strlen(const_table[j].name)) == 0) {
-            ci = &(const_table[j]);
-            break;
-          }
-        }
-        if (ci) {
-          size_t shift = (ci->ptype) - types;
-          swig_type_info *ty = types_initial[shift];
-          size_t ldoc = (c - methods[i].ml_doc);
-          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
-          char *ndoc = (char*)malloc(ldoc + lptr + 10);
-          if (ndoc) {
-            char *buff = ndoc;
-            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
-            if (ptr) {
-              strncpy(buff, methods[i].ml_doc, ldoc);
-              buff += ldoc;
-              strncpy(buff, "swig_ptr: ", 10);
-              buff += 10;
-              SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
-              methods[i].ml_doc = ndoc;
-            }
-          }
-        }
-      }
-    }
-  } 
-  
-#ifdef __cplusplus
-}
-#endif
-
-/* -----------------------------------------------------------------------------*
- *  Partial Init method
- * -----------------------------------------------------------------------------*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-SWIGEXPORT void SWIG_init(void) {
-  PyObject *m, *d;
-  
-  /* Fix SwigMethods to carry the callback ptrs when needed */
-  SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
-  
-  m = Py_InitModule((char *) SWIG_name, SwigMethods);
-  d = PyModule_GetDict(m);
-  
-  SWIG_InitializeModule(0);
-  SWIG_InstallConstants(d,swig_const_table);
-  
-  
-  SWIG_Python_SetConstant(d, "REPLACE",SWIG_From_int((int)(TDB_REPLACE)));
-  SWIG_Python_SetConstant(d, "INSERT",SWIG_From_int((int)(TDB_INSERT)));
-  SWIG_Python_SetConstant(d, "MODIFY",SWIG_From_int((int)(TDB_MODIFY)));
-  SWIG_Python_SetConstant(d, "DEFAULT",SWIG_From_int((int)(TDB_DEFAULT)));
-  SWIG_Python_SetConstant(d, "CLEAR_IF_FIRST",SWIG_From_int((int)(TDB_CLEAR_IF_FIRST)));
-  SWIG_Python_SetConstant(d, "INTERNAL",SWIG_From_int((int)(TDB_INTERNAL)));
-  SWIG_Python_SetConstant(d, "NOLOCK",SWIG_From_int((int)(TDB_NOLOCK)));
-  SWIG_Python_SetConstant(d, "NOMMAP",SWIG_From_int((int)(TDB_NOMMAP)));
-  SWIG_Python_SetConstant(d, "CONVERT",SWIG_From_int((int)(TDB_CONVERT)));
-  SWIG_Python_SetConstant(d, "BIGENDIAN",SWIG_From_int((int)(TDB_BIGENDIAN)));
-  SWIG_Python_SetConstant(d, "TDB_SUCCESS",SWIG_From_int((int)(TDB_SUCCESS)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_CORRUPT",SWIG_From_int((int)(TDB_ERR_CORRUPT)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_IO",SWIG_From_int((int)(TDB_ERR_IO)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_LOCK",SWIG_From_int((int)(TDB_ERR_LOCK)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_OOM",SWIG_From_int((int)(TDB_ERR_OOM)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_EXISTS",SWIG_From_int((int)(TDB_ERR_EXISTS)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_NOLOCK",SWIG_From_int((int)(TDB_ERR_NOLOCK)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_LOCK_TIMEOUT",SWIG_From_int((int)(TDB_ERR_LOCK_TIMEOUT)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_NOEXIST",SWIG_From_int((int)(TDB_ERR_NOEXIST)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_EINVAL",SWIG_From_int((int)(TDB_ERR_EINVAL)));
-  SWIG_Python_SetConstant(d, "TDB_ERR_RDONLY",SWIG_From_int((int)(TDB_ERR_RDONLY)));
-}
-

Modified: branches/samba/upstream/source/lib/time.c
===================================================================
--- branches/samba/upstream/source/lib/time.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/time.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1351,13 +1351,6 @@
 	return (time_t)d;
 }
 
-time_t uint64s_nt_time_to_unix_abs(const uint64_t *src)
-{
-	NTTIME nttime;
-	nttime = *src;
-	return nt_time_to_unix_abs(&nttime);
-}
-
 /****************************************************************************
  Put a 8 byte filetime from a struct timespec. Uses GMT.
 ****************************************************************************/

Modified: branches/samba/upstream/source/lib/util.c
===================================================================
--- branches/samba/upstream/source/lib/util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -60,6 +60,8 @@
 /* this is used by the chaining code */
 int chain_size = 0;
 
+int trans_num = 0;
+
 static enum remote_arch_types ra_type = RA_UNKNOWN;
 
 /***********************************************************************
@@ -348,11 +350,6 @@
 	return cmdline_auth_info.signing_state;
 }
 
-void set_cmdline_auth_info_use_kerberos(bool b)
-{
-        cmdline_auth_info.use_kerberos = b;
-}
-
 bool get_cmdline_auth_info_use_kerberos(void)
 {
 	return cmdline_auth_info.use_kerberos;
@@ -1907,10 +1904,10 @@
  if possible.
 ********************************************************************/
  
-void set_namearray(name_compare_entry **ppname_array, const char *namelist)
+void set_namearray(name_compare_entry **ppname_array, char *namelist)
 {
 	char *name_end;
-	const char *nameptr = namelist;
+	char *nameptr = namelist;
 	int num_entries = 0;
 	int i;
 
@@ -2603,19 +2600,6 @@
 }
 
 /**
- * @brief Returns an absolute path to a file in the Samba modules directory.
- *
- * @param name File to find, relative to MODULESDIR.
- *
- * @retval Pointer to a string containing the full path.
- **/
-
-char *modules_path(const char *name)
-{
-	return talloc_asprintf(talloc_tos(), "%s/%s", get_dyn_MODULESDIR(), name);
-}
-
-/**
  * @brief Returns an absolute path to a file in the Samba data directory.
  *
  * @param name File to find, relative to CODEPAGEDIR.
@@ -3087,7 +3071,7 @@
 		result.pid = pid;
 	}
 	else if (sscanf(pid_string, "%u", &pid) == 1) {
-		result.vnn = get_my_vnn();
+		result.vnn = NONCLUSTER_VNN;
 		result.pid = pid;
 	}
 	else {
@@ -3466,16 +3450,6 @@
 	return (memcmp(&tmp, hnd, sizeof(tmp)) != 0);
 }
 
-bool policy_hnd_equal(const struct policy_handle *hnd1,
-		      const struct policy_handle *hnd2)
-{
-	if (!hnd1 || !hnd2) {
-		return false;
-	}
-
-	return (memcmp(hnd1, hnd2, sizeof(*hnd1)) == 0);
-}
-
 /****************************************************************
  strip off leading '\\' from a hostname
 ****************************************************************/

Modified: branches/samba/upstream/source/lib/util_nttoken.c
===================================================================
--- branches/samba/upstream/source/lib/util_nttoken.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/util_nttoken.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -7,7 +7,6 @@
  *  Copyright (C) Rafal Szczesniak 2002
  *  Copyright (C) Volker Lendecke 2006
  *  Copyright (C) Michael Adam 2007
- *  Copyright (C) Guenther Deschner 2007
  *
  *  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
@@ -38,12 +37,14 @@
 	if (!ptoken)
 		return NULL;
 
-	token = TALLOC_ZERO_P(mem_ctx, NT_USER_TOKEN);
+	token = TALLOC_P(mem_ctx, NT_USER_TOKEN);
 	if (token == NULL) {
 		DEBUG(0, ("talloc failed\n"));
 		return NULL;
 	}
 
+	ZERO_STRUCTP(token);
+
 	if (ptoken->user_sids && ptoken->num_sids) {
 		token->user_sids = (DOM_SID *)talloc_memdup(
 			token, ptoken->user_sids, sizeof(DOM_SID) * ptoken->num_sids );
@@ -66,52 +67,3 @@
 	return token;
 }
 
-/****************************************************************************
- merge NT tokens
-****************************************************************************/
-
-NTSTATUS merge_nt_token(TALLOC_CTX *mem_ctx,
-			const struct nt_user_token *token_1,
-			const struct nt_user_token *token_2,
-			struct nt_user_token **token_out)
-{
-	struct nt_user_token *token = NULL;
-	NTSTATUS status;
-	int i;
-
-	if (!token_1 || !token_2 || !token_out) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	token = TALLOC_ZERO_P(mem_ctx, struct nt_user_token);
-	NT_STATUS_HAVE_NO_MEMORY(token);
-
-	for (i=0; i < token_1->num_sids; i++) {
-		status = add_sid_to_array_unique(mem_ctx,
-						 &token_1->user_sids[i],
-						 &token->user_sids,
-						 &token->num_sids);
-		if (!NT_STATUS_IS_OK(status)) {
-			TALLOC_FREE(token);
-			return status;
-		}
-	}
-
-	for (i=0; i < token_2->num_sids; i++) {
-		status = add_sid_to_array_unique(mem_ctx,
-						 &token_2->user_sids[i],
-						 &token->user_sids,
-						 &token->num_sids);
-		if (!NT_STATUS_IS_OK(status)) {
-			TALLOC_FREE(token);
-			return status;
-		}
-	}
-
-	se_priv_add(&token->privileges, &token_1->privileges);
-	se_priv_add(&token->privileges, &token_2->privileges);
-
-	*token_out = token;
-
-	return NT_STATUS_OK;
-}

Modified: branches/samba/upstream/source/lib/util_reg_api.c
===================================================================
--- branches/samba/upstream/source/lib/util_reg_api.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/util_reg_api.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -91,15 +91,16 @@
 			goto error;
 		}
 
-		if (!convert_string_talloc(value, CH_UTF16LE, CH_UNIX, tmp,
-					   length+2, &value->v.sz.str,
-					   &value->v.sz.len, False)) {
-			SAFE_FREE(tmp);
+		value->v.sz.len = convert_string_talloc(
+			value, CH_UTF16LE, CH_UNIX, tmp, length+2,
+			&value->v.sz.str, False);
+
+		SAFE_FREE(tmp);
+
+		if (value->v.sz.len == (size_t)-1) {
 			err = WERR_INVALID_PARAM;
 			goto error;
 		}
-
-		SAFE_FREE(tmp);
 		break;
 	}
 	case REG_MULTI_SZ:
@@ -142,13 +143,11 @@
 	}
 	case REG_SZ:
 	case REG_EXPAND_SZ: {
-		if (!convert_string_talloc(mem_ctx, CH_UNIX, CH_UTF16LE,
-					   value->v.sz.str,
-					   MIN(value->v.sz.len,
-					       strlen(value->v.sz.str)+1),
-					   (void *)&(presult->data),
-					   &presult->length, False))
-		{
+		presult->length = convert_string_talloc(
+			mem_ctx, CH_UNIX, CH_UTF16LE, value->v.sz.str,
+			MIN(value->v.sz.len, strlen(value->v.sz.str)+1),
+			(void *)&(presult->data), False);
+		if (presult->length == (size_t)-1) {
 			return WERR_NOMEM;
 		}
 		break;
@@ -177,13 +176,12 @@
 		/* convert the single strings */
 		for (count = 0; count < value->v.multi_sz.num_strings; count++)
 		{
-			if (!convert_string_talloc(strings, CH_UNIX,
-				CH_UTF16LE, value->v.multi_sz.strings[count],
+			string_lengths[count] = convert_string_talloc(
+				strings, CH_UNIX, CH_UTF16LE,
+				value->v.multi_sz.strings[count],
 				strlen(value->v.multi_sz.strings[count])+1,
-				(void *)&strings[count],
-				&string_lengths[count], false))
-			{
-
+				(void *)&strings[count], false);
+			if (string_lengths[count] == (size_t)-1) {
 				TALLOC_FREE(tmp_ctx);
 				return WERR_NOMEM;
 			}

Modified: branches/samba/upstream/source/lib/util_str.c
===================================================================
--- branches/samba/upstream/source/lib/util_str.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/util_str.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -208,14 +208,16 @@
 			return +1;
 	}
 
-	if (!push_ucs2_allocate(&buffer_s, ps, &size)) {
+	size = push_ucs2_allocate(&buffer_s, ps);
+	if (size == (size_t)-1) {
 		return strcmp(ps, pt);
 		/* Not quite the right answer, but finding the right one
 		   under this failure case is expensive, and it's pretty
 		   close */
 	}
 
-	if (!push_ucs2_allocate(&buffer_t, pt, &size)) {
+	size = push_ucs2_allocate(&buffer_t, pt);
+	if (size == (size_t)-1) {
 		SAFE_FREE(buffer_s);
 		return strcmp(ps, pt);
 		/* Not quite the right answer, but finding the right one
@@ -269,14 +271,16 @@
 		return 0;
 	}
 
-	if (!push_ucs2_allocate(&buffer_s, ps, &size)) {
+	size = push_ucs2_allocate(&buffer_s, ps);
+	if (size == (size_t)-1) {
 		return strncmp(ps, pt, len-n);
 		/* Not quite the right answer, but finding the right one
 		   under this failure case is expensive,
 		   and it's pretty close */
 	}
 
-	if (!push_ucs2_allocate(&buffer_t, pt, &size)) {
+	size = push_ucs2_allocate(&buffer_t, pt);
+	if (size == (size_t)-1) {
 		SAFE_FREE(buffer_s);
 		return strncmp(ps, pt, len-n);
 		/* Not quite the right answer, but finding the right one
@@ -476,9 +480,9 @@
 
 size_t str_charnum(const char *s)
 {
-	size_t ret, converted_size;
+	size_t ret;
 	smb_ucs2_t *tmpbuf2 = NULL;
-	if (!push_ucs2_allocate(&tmpbuf2, s, &converted_size)) {
+	if (push_ucs2_allocate(&tmpbuf2, s) == (size_t)-1) {
 		return 0;
 	}
 	ret = strlen_w(tmpbuf2);
@@ -494,9 +498,9 @@
 
 size_t str_ascii_charnum(const char *s)
 {
-	size_t ret, converted_size;
+	size_t ret;
 	char *tmpbuf2 = NULL;
-	if (!push_ascii_allocate(&tmpbuf2, s, &converted_size)) {
+	if (push_ascii_allocate(&tmpbuf2, s) == (size_t)-1) {
 		return 0;
 	}
 	ret = strlen(tmpbuf2);
@@ -606,9 +610,8 @@
 {
 	smb_ucs2_t *tmp, *p;
 	bool ret;
-	size_t converted_size;
 
-	if (!push_ucs2_allocate(&tmp, s, &converted_size)) {
+	if (push_ucs2_allocate(&tmp, s) == -1) {
 		return false;
 	}
 
@@ -631,9 +634,8 @@
 {
 	smb_ucs2_t *tmp, *p;
 	bool ret;
-	size_t converted_size;
 
-	if (!push_ucs2_allocate(&tmp, s, &converted_size)) {
+	if (push_ucs2_allocate(&tmp, s) == -1) {
 		return false;
 	}
 
@@ -657,9 +659,8 @@
 	smb_ucs2_t *ptr;
 	int count;
 	smb_ucs2_t *alloc_tmpbuf = NULL;
-	size_t converted_size;
 
-	if (!push_ucs2_allocate(&alloc_tmpbuf, s, &converted_size)) {
+	if (push_ucs2_allocate(&alloc_tmpbuf, s) == (size_t)-1) {
 		return 0;
 	}
 
@@ -1409,7 +1410,6 @@
 	smb_ucs2_t *p;
 	const char *s;
 	char *ret;
-	size_t converted_size;
 
 	/* characters below 0x3F are guaranteed to not appear in
 	   non-initial position in multi-byte charsets */
@@ -1435,7 +1435,7 @@
 	s = src;
 #endif
 
-	if (!push_ucs2_allocate(&ws, s, &converted_size)) {
+	if (push_ucs2_allocate(&ws, s)==(size_t)-1) {
 		/* Wrong answer, but what can we do... */
 		return strchr(src, c);
 	}
@@ -1445,7 +1445,7 @@
 		return NULL;
 	}
 	*p = 0;
-	if (!pull_ucs2_allocate(&s2, ws, &converted_size)) {
+	if (pull_ucs2_allocate(&s2, ws)==(size_t)-1) {
 		SAFE_FREE(ws);
 		/* Wrong answer, but what can we do... */
 		return strchr(src, c);
@@ -1504,9 +1504,8 @@
 		char *s2 = NULL;
 		smb_ucs2_t *p;
 		char *ret;
-		size_t converted_size;
 
-		if (!push_ucs2_allocate(&ws, s, &converted_size)) {
+		if (push_ucs2_allocate(&ws,s)==(size_t)-1) {
 			/* Wrong answer, but what can we do. */
 			return strrchr(s, c);
 		}
@@ -1516,7 +1515,7 @@
 			return NULL;
 		}
 		*p = 0;
-		if (!pull_ucs2_allocate(&s2, ws, &converted_size)) {
+		if (pull_ucs2_allocate(&s2,ws)==(size_t)-1) {
 			SAFE_FREE(ws);
 			/* Wrong answer, but what can we do. */
 			return strrchr(s, c);
@@ -1539,9 +1538,8 @@
 	char *s2 = NULL;
 	smb_ucs2_t *p;
 	char *ret;
-	size_t converted_size;
 
-	if (!push_ucs2_allocate(&ws, s, &converted_size)) {
+	if (push_ucs2_allocate(&ws,s)==(size_t)-1) {
 		/* Too hard to try and get right. */
 		return NULL;
 	}
@@ -1551,7 +1549,7 @@
 		return NULL;
 	}
 	*p = 0;
-	if (!pull_ucs2_allocate(&s2, ws, &converted_size)) {
+	if (pull_ucs2_allocate(&s2,ws)==(size_t)-1) {
 		SAFE_FREE(ws);
 		/* Too hard to try and get right. */
 		return NULL;
@@ -1574,7 +1572,7 @@
 	char *s2;
 	char *retp;
 
-	size_t converted_size, findstr_len = 0;
+	size_t findstr_len = 0;
 
 	/* for correctness */
 	if (!findstr[0]) {
@@ -1610,12 +1608,12 @@
 	s = src;
 #endif
 
-	if (!push_ucs2_allocate(&src_w, src, &converted_size)) {
+	if (push_ucs2_allocate(&src_w, src) == (size_t)-1) {
 		DEBUG(0,("strstr_m: src malloc fail\n"));
 		return NULL;
 	}
 
-	if (!push_ucs2_allocate(&find_w, findstr, &converted_size)) {
+	if (push_ucs2_allocate(&find_w, findstr) == (size_t)-1) {
 		SAFE_FREE(src_w);
 		DEBUG(0,("strstr_m: find malloc fail\n"));
 		return NULL;
@@ -1630,7 +1628,7 @@
 	}
 
 	*p = 0;
-	if (!pull_ucs2_allocate(&s2, src_w, &converted_size)) {
+	if (pull_ucs2_allocate(&s2, src_w) == (size_t)-1) {
 		SAFE_FREE(src_w);
 		SAFE_FREE(find_w);
 		DEBUG(0,("strstr_m: dest malloc fail\n"));
@@ -2618,23 +2616,6 @@
 	return ret;
 }
 
-char *talloc_asprintf_strlower_m(TALLOC_CTX *t, const char *fmt, ...)
-{
-	va_list ap;
-	char *ret;
-
-	va_start(ap, fmt);
-	ret = talloc_vasprintf(t, fmt, ap);
-	va_end(ap);
-
-	if (ret == NULL) {
-		return NULL;
-	}
-	strlower_m(ret);
-	return ret;
-}
-
-
 /*
    Returns the substring from src between the first occurrence of
    the char "front" and the first occurence of the char "back".

Modified: branches/samba/upstream/source/lib/util_unistr.c
===================================================================
--- branches/samba/upstream/source/lib/util_unistr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/util_unistr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -313,12 +313,14 @@
 char *rpcstr_pull_unistr2_talloc(TALLOC_CTX *ctx, const UNISTR2 *src)
 {
 	char *dest = NULL;
-	size_t dest_len;
-
-	if (!convert_string_talloc(ctx, CH_UTF16LE, CH_UNIX, src->buffer,
-				   src->uni_str_len * 2, (void *)&dest,
-				   &dest_len, true))
-	{
+	size_t dest_len = convert_string_talloc(ctx,
+				CH_UTF16LE,
+				CH_UNIX,
+				src->buffer,
+				src->uni_str_len * 2,
+				(void *)&dest,
+				true);
+	if (dest_len == (size_t)-1) {
 		return NULL;
 	}
 
@@ -363,11 +365,7 @@
 
 int rpcstr_push_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src)
 {
-	size_t size;
-	if (push_ucs2_talloc(ctx, dest, src, &size))
-		return size;
-	else
-		return -1;
+	return push_ucs2_talloc(ctx, dest, src);
 }
 
 /*******************************************************************

Modified: branches/samba/upstream/source/lib/util_uuid.c
===================================================================
--- branches/samba/upstream/source/lib/util_uuid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/util_uuid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -129,3 +129,5 @@
 
 	return binary_string_rfc2254((char *)guid_flat.info, UUID_FLAT_SIZE);
 }
+
+

Modified: branches/samba/upstream/source/lib/version.c
===================================================================
--- branches/samba/upstream/source/lib/version.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/lib/version.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,16 +23,39 @@
 
 const char *samba_version_string(void)
 {
-#ifdef SAMBA_VERSION_VENDOR_FUNCTION
-	return SAMBA_VERSION_VENDOR_FUNCTION;
-#else /* SAMBA_VERSION_VENDOR_FUNCTION */
- #ifdef SAMBA_VERSION_VENDOR_SUFFIX
-  #ifdef SAMBA_VERSION_VENDOR_PATCH
-	return SAMBA_VERSION_OFFICIAL_STRING "-" SAMBA_VERSION_VENDOR_SUFFIX \
-		"-" SAMBA_VERSION_VENDOR_PATCH;
-  #endif /* SAMBA_VERSION_VENDOR_PATCH */
-	return SAMBA_VERSION_OFFICIAL_STRING "-" SAMBA_VERSION_VENDOR_SUFFIX;
- #endif /* SAMBA_VERSION_VENDOR_SUFFIX */
-#endif /* SAMBA_VERSION_VENDOR_FUNCTION */
+#ifndef SAMBA_VERSION_VENDOR_SUFFIX
 	return SAMBA_VERSION_OFFICIAL_STRING;
+#else
+	static char *samba_version;
+	int res;
+#ifdef SAMBA_VERSION_VENDOR_PATCH
+	char *tmp_version;
+#endif
+
+	if (samba_version != NULL)
+		return samba_version;
+
+	res = asprintf(&samba_version, "%s-%s",
+		       SAMBA_VERSION_OFFICIAL_STRING,
+		       SAMBA_VERSION_VENDOR_SUFFIX);
+	/*
+	 * Can't use smb_panic here due to dependencies
+	 */
+	assert(res != -1);
+
+#ifdef SAMBA_VERSION_VENDOR_PATCH
+	res = asprintf(&tmp_version, "%s-%d", samba_version,
+		       SAMBA_VERSION_VENDOR_PATCH);
+	/*
+	 * Can't use smb_panic here due to dependencies
+	 */
+	assert(res != -1);
+
+	SAFE_FREE(samba_version);
+
+	samba_version = tmp_version;
+#endif
+
+	return samba_version;
+#endif
 }

Modified: branches/samba/upstream/source/libaddns/dns.h
===================================================================
--- branches/samba/upstream/source/libaddns/dns.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libaddns/dns.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -456,12 +456,6 @@
 				 struct dns_rrec **prec);
 DNS_ERROR dns_add_rrec(TALLOC_CTX *mem_ctx, struct dns_rrec *rec,
 		       uint16 *num_records, struct dns_rrec ***records);
-DNS_ERROR dns_create_update_request(TALLOC_CTX *mem_ctx,
-				    const char *domainname,
-				    const char *hostname,
-				    const struct sockaddr_storage *ip_addr,
-				    size_t num_adds,
-				    struct dns_update_request **preq);
 
 /* from dnssock.c */
 
@@ -529,6 +523,12 @@
 			  const char *keyname,
 			  const char *algorithmname,
 			  time_t time_signed, uint16 fudge);
+DNS_ERROR dns_create_update_request(TALLOC_CTX *mem_ctx,
+				    const char *domainname,
+				    const char *hostname,
+				    const struct sockaddr_storage *ip_addr,
+				    size_t num_adds,
+				    struct dns_update_request **preq);
 
 #endif	/* HAVE_GSSAPI_SUPPORT */
 

Modified: branches/samba/upstream/source/libads/kerberos.c
===================================================================
--- branches/samba/upstream/source/libads/kerberos.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libads/kerberos.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -323,11 +323,6 @@
 	const char *account_name;
 	fstring acct_name;
 
-	if (ads->auth.flags & ADS_AUTH_USER_CREDS) {
-		account_name = ads->auth.user_name;
-		goto got_accountname;
-	}
-
 	if ( IS_DC ) {
 		/* this will end up getting a ticket for DOMAIN at RUSTED.REA.LM */
 		account_name = lp_workgroup();
@@ -343,7 +338,6 @@
 			account_name = ads->auth.user_name;
 	}
 
- got_accountname:
 	if (asprintf(&s, "%s@%s", account_name, ads->auth.realm) == -1) {
 		return KRB5_CC_NOMEM;
 	}
@@ -741,9 +735,6 @@
 /************************************************************************
  Create a string list of available kdc's, possibly searching by sitename.
  Does DNS queries.
-
- If "sitename" is given, the DC's in that site are listed first.
-
 ************************************************************************/
 
 static char *get_kdc_ip_string(char *mem_ctx,
@@ -762,10 +753,7 @@
 		return NULL;
 	}
 
-	/*
-	 * First get the KDC's only in this site, the rest will be
-	 * appended later
-	 */
+	/* Get the KDC's only in this site. */
 
 	if (sitename) {
 

Modified: branches/samba/upstream/source/libads/kerberos_keytab.c
===================================================================
--- branches/samba/upstream/source/libads/kerberos_keytab.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libads/kerberos_keytab.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -32,14 +32,9 @@
 /**********************************************************************
 **********************************************************************/
 
-int smb_krb5_kt_add_entry_ext(krb5_context context,
-			      krb5_keytab keytab,
-			      krb5_kvno kvno,
-			      const char *princ_s,
-			      krb5_enctype *enctypes,
-			      krb5_data password,
-			      bool no_salt,
-			      bool keep_old_entries)
+static int smb_krb5_kt_add_entry( krb5_context context, krb5_keytab keytab,
+                                  krb5_kvno kvno, const char *princ_s, 
+				  krb5_enctype *enctypes, krb5_data password )
 {
 	krb5_error_code ret = 0;
 	krb5_kt_cursor cursor;
@@ -53,20 +48,20 @@
 	
 	ret = smb_krb5_parse_name(context, princ_s, &princ);
 	if (ret) {
-		DEBUG(1,("smb_krb5_kt_add_entry_ext: smb_krb5_parse_name(%s) failed (%s)\n", princ_s, error_message(ret)));
+		DEBUG(1,("smb_krb5_kt_add_entry: smb_krb5_parse_name(%s) failed (%s)\n", princ_s, error_message(ret)));
 		goto out;
 	}
 
 	/* Seek and delete old keytab entries */
 	ret = krb5_kt_start_seq_get(context, keytab, &cursor);
 	if (ret != KRB5_KT_END && ret != ENOENT ) {
-		DEBUG(3,("smb_krb5_kt_add_entry_ext: Will try to delete old keytab entries\n"));
+		DEBUG(3,("smb_krb5_kt_add_entry: Will try to delete old keytab entries\n"));
 		while(!krb5_kt_next_entry(context, keytab, &kt_entry, &cursor)) {
 			bool compare_name_ok = False;
 
 			ret = smb_krb5_unparse_name(context, kt_entry.principal, &ktprinc);
 			if (ret) {
-				DEBUG(1,("smb_krb5_kt_add_entry_ext: smb_krb5_unparse_name failed (%s)\n",
+				DEBUG(1,("smb_krb5_kt_add_entry: smb_krb5_unparse_name failed (%s)\n",
 					error_message(ret)));
 				goto out;
 			}
@@ -87,7 +82,7 @@
 #endif
 
 			if (!compare_name_ok) {
-				DEBUG(10,("smb_krb5_kt_add_entry_ext: ignoring keytab entry principal %s, kvno = %d\n",
+				DEBUG(10,("smb_krb5_kt_add_entry: ignoring keytab entry principal %s, kvno = %d\n",
 					ktprinc, kt_entry.vno));
 			}
 
@@ -95,38 +90,39 @@
 
 			if (compare_name_ok) {
 				if (kt_entry.vno == kvno - 1) {
-					DEBUG(5,("smb_krb5_kt_add_entry_ext: Saving previous (kvno %d) entry for principal: %s.\n",
+					DEBUG(5,("smb_krb5_kt_add_entry: Saving previous (kvno %d) entry for principal: %s.\n",
 						kvno - 1, princ_s));
-				} else if (!keep_old_entries) {
-					DEBUG(5,("smb_krb5_kt_add_entry_ext: Found old entry for principal: %s (kvno %d) - trying to remove it.\n",
+				} else {
+
+					DEBUG(5,("smb_krb5_kt_add_entry: Found old entry for principal: %s (kvno %d) - trying to remove it.\n",
 						princ_s, kt_entry.vno));
 					ret = krb5_kt_end_seq_get(context, keytab, &cursor);
 					ZERO_STRUCT(cursor);
 					if (ret) {
-						DEBUG(1,("smb_krb5_kt_add_entry_ext: krb5_kt_end_seq_get() failed (%s)\n",
+						DEBUG(1,("smb_krb5_kt_add_entry: krb5_kt_end_seq_get() failed (%s)\n",
 							error_message(ret)));
 						goto out;
 					}
 					ret = krb5_kt_remove_entry(context, keytab, &kt_entry);
 					if (ret) {
-						DEBUG(1,("smb_krb5_kt_add_entry_ext: krb5_kt_remove_entry failed (%s)\n",
+						DEBUG(1,("smb_krb5_kt_add_entry: krb5_kt_remove_entry failed (%s)\n",
 							error_message(ret)));
 						goto out;
 					}
 
-					DEBUG(5,("smb_krb5_kt_add_entry_ext: removed old entry for principal: %s (kvno %d).\n",
+					DEBUG(5,("smb_krb5_kt_add_entry: removed old entry for principal: %s (kvno %d).\n",
 						princ_s, kt_entry.vno));
 
 					ret = krb5_kt_start_seq_get(context, keytab, &cursor);
 					if (ret) {
-						DEBUG(1,("smb_krb5_kt_add_entry_ext: krb5_kt_start_seq failed (%s)\n",
+						DEBUG(1,("smb_krb5_kt_add_entry: krb5_kt_start_seq failed (%s)\n",
 							error_message(ret)));
 						goto out;
 					}
 					ret = smb_krb5_kt_free_entry(context, &kt_entry);
 					ZERO_STRUCT(kt_entry);
 					if (ret) {
-						DEBUG(1,("smb_krb5_kt_add_entry_ext: krb5_kt_remove_entry failed (%s)\n",
+						DEBUG(1,("smb_krb5_kt_add_entry: krb5_kt_remove_entry failed (%s)\n",
 							error_message(ret)));
 						goto out;
 					}
@@ -138,7 +134,7 @@
 			ret = smb_krb5_kt_free_entry(context, &kt_entry);
 			ZERO_STRUCT(kt_entry);
 			if (ret) {
-				DEBUG(1,("smb_krb5_kt_add_entry_ext: smb_krb5_kt_free_entry failed (%s)\n", error_message(ret)));
+				DEBUG(1,("smb_krb5_kt_add_entry: smb_krb5_kt_free_entry failed (%s)\n", error_message(ret)));
 				goto out;
 			}
 		}
@@ -146,7 +142,7 @@
 		ret = krb5_kt_end_seq_get(context, keytab, &cursor);
 		ZERO_STRUCT(cursor);
 		if (ret) {
-			DEBUG(1,("smb_krb5_kt_add_entry_ext: krb5_kt_end_seq_get failed (%s)\n",error_message(ret)));
+			DEBUG(1,("smb_krb5_kt_add_entry: krb5_kt_end_seq_get failed (%s)\n",error_message(ret)));
 			goto out;
 		}
 	}
@@ -161,22 +157,29 @@
 	for (i = 0; enctypes[i]; i++) {
 		krb5_keyblock *keyp;
 
-		keyp = KRB5_KT_KEY(&kt_entry);
-
-		if (create_kerberos_key_from_string(context, princ, &password, keyp, enctypes[i], no_salt)) {
+#if !defined(HAVE_KRB5_KEYTAB_ENTRY_KEY) && !defined(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK)
+#error krb5_keytab_entry has no key or keyblock member
+#endif
+#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEY               /* MIT */
+		keyp = &kt_entry.key;
+#endif
+#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK          /* Heimdal */
+		keyp = &kt_entry.keyblock;
+#endif
+		if (create_kerberos_key_from_string(context, princ, &password, keyp, enctypes[i])) {
 			continue;
 		}
 
 		kt_entry.principal = princ;
 		kt_entry.vno       = kvno;
 
-		DEBUG(3,("smb_krb5_kt_add_entry_ext: adding keytab entry for (%s) with encryption type (%d) and version (%d)\n",
+		DEBUG(3,("smb_krb5_kt_add_entry: adding keytab entry for (%s) with encryption type (%d) and version (%d)\n",
 			princ_s, enctypes[i], kt_entry.vno));
 		ret = krb5_kt_add_entry(context, keytab, &kt_entry);
 		krb5_free_keyblock_contents(context, keyp);
 		ZERO_STRUCT(kt_entry);
 		if (ret) {
-			DEBUG(1,("smb_krb5_kt_add_entry_ext: adding entry to keytab failed (%s)\n", error_message(ret)));
+			DEBUG(1,("smb_krb5_kt_add_entry: adding entry to keytab failed (%s)\n", error_message(ret)));
 			goto out;
 		}
 	}
@@ -205,22 +208,6 @@
 	return (int)ret;
 }
 
-static int smb_krb5_kt_add_entry(krb5_context context,
-				 krb5_keytab keytab,
-				 krb5_kvno kvno,
-				 const char *princ_s,
-				 krb5_enctype *enctypes,
-				 krb5_data password)
-{
-	return smb_krb5_kt_add_entry_ext(context,
-					 keytab,
-					 kvno,
-					 princ_s,
-					 enctypes,
-					 password,
-					 false,
-					 false);
-}
 
 /**********************************************************************
  Adds a single service principal, i.e. 'host' to the system keytab
@@ -326,9 +313,9 @@
 		}
 	}
 
-	kvno = (krb5_kvno) ads_get_machine_kvno(ads, global_myname());
+	kvno = (krb5_kvno) ads_get_kvno(ads, global_myname());
 	if (kvno == -1) {       /* -1 indicates failure, everything else is OK */
-		DEBUG(1,("ads_keytab_add_entry: ads_get_machine_kvno failed to determine the system's kvno.\n"));
+		DEBUG(1,("ads_keytab_add_entry: ads_get_kvno failed to determine the system's kvno.\n"));
 		ret = -1;
 		goto out;
 	}
@@ -394,7 +381,7 @@
 		goto out;
 	}
 
-	kvno = (krb5_kvno) ads_get_machine_kvno(ads, global_myname());
+	kvno = (krb5_kvno) ads_get_kvno(ads, global_myname());
 	if (kvno == -1) {       /* -1 indicates a failure */
 		DEBUG(1,("ads_keytab_flush: Error determining the system's kvno.\n"));
 		goto out;
@@ -541,9 +528,9 @@
 
 	/* Now loop through the keytab and update any other existing entries... */
 	
-	kvno = (krb5_kvno) ads_get_machine_kvno(ads, machine_name);
+	kvno = (krb5_kvno) ads_get_kvno(ads, machine_name);
 	if (kvno == -1) {
-		DEBUG(1,("ads_keytab_create_default: ads_get_machine_kvno failed to determine the system's kvno.\n"));
+		DEBUG(1,("ads_keytab_create_default: ads_get_kvno failed to determine the system's kvno.\n"));
 		return -1;
 	}
 	

Modified: branches/samba/upstream/source/libads/kerberos_verify.c
===================================================================
--- branches/samba/upstream/source/libads/kerberos_verify.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libads/kerberos_verify.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -259,7 +259,7 @@
 			goto out;
 		}
 	
-		if (create_kerberos_key_from_string(context, host_princ, &password, key, enctypes[i], false)) {
+		if (create_kerberos_key_from_string(context, host_princ, &password, key, enctypes[i])) {
 			SAFE_FREE(key);
 			continue;
 		}

Modified: branches/samba/upstream/source/libads/ldap.c
===================================================================
--- branches/samba/upstream/source/libads/ldap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libads/ldap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -173,7 +173,7 @@
   try a connection to a given ldap server, returning True and setting the servers IP
   in the ads struct if successful
  */
-static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc)
+bool ads_try_connect(ADS_STRUCT *ads, const char *server )
 {
 	char *srv;
 	struct nbt_cldap_netlogon_5 cldap_reply;
@@ -238,7 +238,7 @@
 	}
 	ads->server.workgroup          = SMB_STRDUP(cldap_reply.domain);
 
-	ads->ldap.port = gc ? LDAP_GC_PORT : LDAP_PORT;
+	ads->ldap.port = LDAP_PORT;
 	if (!interpret_string_addr(&ads->ldap.ss, srv, 0)) {
 		DEBUG(1,("ads_try_connect: unable to convert %s "
 			"to an address\n",
@@ -358,7 +358,7 @@
 			}
 		}
 
-		if ( ads_try_connect(ads, server, false) ) {
+		if ( ads_try_connect(ads, server) ) {
 			SAFE_FREE(ip_list);
 			SAFE_FREE(sitename);
 			return NT_STATUS_OK;
@@ -385,140 +385,8 @@
 	return NT_STATUS_NO_LOGON_SERVERS;
 }
 
-/*********************************************************************
- *********************************************************************/
 
-static NTSTATUS ads_lookup_site(void)
-{
-	ADS_STRUCT *ads = NULL;
-	ADS_STATUS ads_status;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
-	ads = ads_init(lp_realm(), NULL, NULL);
-	if (!ads) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	/* The NO_BIND here will find a DC and set the client site
-	   but not establish the TCP connection */
-
-	ads->auth.flags = ADS_AUTH_NO_BIND;
-	ads_status = ads_connect(ads);
-	if (!ADS_ERR_OK(ads_status)) {
-		DEBUG(4, ("ads_lookup_site: ads_connect to our realm failed! (%s)\n",
-			  ads_errstr(ads_status)));
-	}
-	nt_status = ads_ntstatus(ads_status);
-
-	if (ads) {
-		ads_destroy(&ads);
-	}
-
-	return nt_status;
-}
-
-/*********************************************************************
- *********************************************************************/
-
-static const char* host_dns_domain(const char *fqdn)
-{
-	const char *p = fqdn;
-
-	/* go to next char following '.' */
-
-	if ((p = strchr_m(fqdn, '.')) != NULL) {
-		p++;
-	}
-
-	return p;
-}
-
-
 /**
- * Connect to the Global Catalog server
- * @param ads Pointer to an existing ADS_STRUCT
- * @return status of connection
- *
- * Simple wrapper around ads_connect() that fills in the
- * GC ldap server information
- **/
-
-ADS_STATUS ads_connect_gc(ADS_STRUCT *ads)
-{
-	TALLOC_CTX *frame = talloc_stackframe();
-	struct dns_rr_srv *gcs_list;
-	int num_gcs;
-	char *realm = ads->server.realm;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-	ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-	int i;
-	bool done = false;
-	char *sitename = NULL;
-
-	if (!realm)
-		realm = lp_realm();
-
-	if ((sitename = sitename_fetch(realm)) == NULL) {
-		ads_lookup_site();
-		sitename = sitename_fetch(realm);
-	}
-
-	do {
-		/* We try once with a sitename and once without
-		   (unless we don't have a sitename and then we're
-		   done */
-
-		if (sitename == NULL)
-			done = true;
-
-		nt_status = ads_dns_query_gcs(frame, realm, sitename,
-					      &gcs_list, &num_gcs);
-
-		SAFE_FREE(sitename);
-
-		if (!NT_STATUS_IS_OK(nt_status)) {
-			ads_status = ADS_ERROR_NT(nt_status);
-			goto done;
-		}
-
-		/* Loop until we get a successful connection or have gone
-		   through them all.  When connecting a GC server, make sure that
-		   the realm is the server's DNS name and not the forest root */
-
-		for (i=0; i<num_gcs; i++) {
-			ads->server.gc = true;
-			ads->server.ldap_server = SMB_STRDUP(gcs_list[i].hostname);
-			ads->server.realm = SMB_STRDUP(host_dns_domain(ads->server.ldap_server));
-			ads_status = ads_connect(ads);
-			if (ADS_ERR_OK(ads_status)) {
-				/* Reset the bind_dn to "".  A Global Catalog server
-				   may host  multiple domain trees in a forest.
-				   Windows 2003 GC server will accept "" as the search
-				   path to imply search all domain trees in the forest */
-
-				SAFE_FREE(ads->config.bind_path);
-				ads->config.bind_path = SMB_STRDUP("");
-
-
-				goto done;
-			}
-			SAFE_FREE(ads->server.ldap_server);
-			SAFE_FREE(ads->server.realm);
-		}
-
-	        TALLOC_FREE(gcs_list);
-		num_gcs = 0;
-	} while (!done);
-
-done:
-	SAFE_FREE(sitename);
-	talloc_destroy(frame);
-
-	return ads_status;
-}
-
-
-/**
  * Connect to the LDAP server
  * @param ads Pointer to an existing ADS_STRUCT
  * @return status of connection
@@ -544,7 +412,7 @@
 	}
 
 	if (ads->server.ldap_server &&
-	    ads_try_connect(ads, ads->server.ldap_server, ads->server.gc)) {
+	    ads_try_connect(ads, ads->server.ldap_server)) {
 		goto got_connection;
 	}
 
@@ -604,7 +472,7 @@
 	/* Otherwise setup the TCP LDAP session */
 
 	ads->ldap.ld = ldap_open_with_timeout(ads->config.ldap_server_name,
-					      ads->ldap.port, lp_ldap_timeout());
+					      LDAP_PORT, lp_ldap_timeout());
 	if (ads->ldap.ld == NULL) {
 		status = ADS_ERROR(LDAP_OPERATIONS_ERROR);
 		goto out;
@@ -659,18 +527,6 @@
 }
 
 /**
- * Connect to the LDAP server using given credentials
- * @param ads Pointer to an existing ADS_STRUCT
- * @return status of connection
- **/
-ADS_STATUS ads_connect_user_creds(ADS_STRUCT *ads)
-{
-	ads->auth.flags |= ADS_AUTH_USER_CREDS;
-
-	return ads_connect(ads);
-}
-
-/**
  * Disconnect the LDAP server
  * @param ads Pointer to an existing ADS_STRUCT
  **/
@@ -737,8 +593,7 @@
 {
 	char **values;
 	int i;
-	size_t size;
-
+       
 	if (!in_vals) return NULL;
 	for (i=0; in_vals[i]; i++)
 		; /* count values */
@@ -746,7 +601,7 @@
 	if (!values) return NULL;
 
 	for (i=0; in_vals[i]; i++) {
-		if (!push_utf8_talloc(ctx, &values[i], in_vals[i], &size)) {
+		if (push_utf8_talloc(ctx, &values[i], in_vals[i]) == (size_t) -1) {
 			TALLOC_FREE(values);
 			return NULL;
 		}
@@ -761,7 +616,6 @@
 {
 	char **values;
 	int i;
-	size_t converted_size;
        
 	if (!in_vals) return NULL;
 	for (i=0; in_vals[i]; i++)
@@ -770,11 +624,7 @@
 	if (!values) return NULL;
 
 	for (i=0; in_vals[i]; i++) {
-		if (!pull_utf8_talloc(ctx, &values[i], in_vals[i],
-				      &converted_size)) {
-			DEBUG(0,("ads_pull_strvals: pull_utf8_talloc failed: "
-				 "%s", strerror(errno)));
-		}
+		pull_utf8_talloc(ctx, &values[i], in_vals[i]);
 	}
 	return values;
 }
@@ -802,7 +652,6 @@
 {
 	int rc, i, version;
 	char *utf8_expr, *utf8_path, **search_attrs;
-	size_t converted_size;
 	LDAPControl PagedResults, NoReferrals, ExternalCtrl, *controls[4], **rcontrols;
 	BerElement *cookie_be = NULL;
 	struct berval *cookie_bv= NULL;
@@ -820,9 +669,8 @@
 	/* 0 means the conversion worked but the result was empty 
 	   so we only fail if it's -1.  In any case, it always 
 	   at least nulls out the dest */
-	if (!push_utf8_talloc(ctx, &utf8_expr, expr, &converted_size) ||
-	    !push_utf8_talloc(ctx, &utf8_path, bind_path, &converted_size))
-	{
+	if ((push_utf8_talloc(ctx, &utf8_expr, expr) == (size_t)-1) ||
+	    (push_utf8_talloc(ctx, &utf8_path, bind_path) == (size_t)-1)) {
 		rc = LDAP_NO_MEMORY;
 		goto done;
 	}
@@ -1119,7 +967,6 @@
 {
 	int rc;
 	char *utf8_expr, *utf8_path, **search_attrs = NULL;
-	size_t converted_size;
 	TALLOC_CTX *ctx;
 
 	*res = NULL;
@@ -1131,9 +978,8 @@
 	/* 0 means the conversion worked but the result was empty 
 	   so we only fail if it's negative.  In any case, it always 
 	   at least nulls out the dest */
-	if (!push_utf8_talloc(ctx, &utf8_expr, expr, &converted_size) ||
-	    !push_utf8_talloc(ctx, &utf8_path, bind_path, &converted_size))
-	{
+	if ((push_utf8_talloc(ctx, &utf8_expr, expr) == (size_t)-1) ||
+	    (push_utf8_talloc(ctx, &utf8_path, bind_path) == (size_t)-1)) {
 		DEBUG(1,("ads_do_search: push_utf8_talloc() failed!"));
 		rc = LDAP_NO_MEMORY;
 		goto done;
@@ -1231,7 +1077,6 @@
  char *ads_get_dn(ADS_STRUCT *ads, LDAPMessage *msg)
 {
 	char *utf8_dn, *unix_dn;
-	size_t converted_size;
 
 	utf8_dn = ldap_get_dn(ads->ldap.ld, msg);
 
@@ -1240,7 +1085,7 @@
 		return NULL;
 	}
 
-	if (!pull_utf8_allocate(&unix_dn, utf8_dn, &converted_size)) {
+	if (pull_utf8_allocate(&unix_dn, utf8_dn) == (size_t)-1) {
 		DEBUG(0,("ads_get_dn: string conversion failure utf8 [%s]\n",
 			utf8_dn ));
 		return NULL;
@@ -1442,7 +1287,6 @@
 {
 	int ret,i;
 	char *utf8_dn = NULL;
-	size_t converted_size;
 	/* 
 	   this control is needed to modify that contains a currently 
 	   non-existent attribute (but allowable for the object) to run
@@ -1456,7 +1300,7 @@
 	controls[0] = &PermitModify;
 	controls[1] = NULL;
 
-	if (!push_utf8_allocate(&utf8_dn, mod_dn, &converted_size)) {
+	if (push_utf8_allocate(&utf8_dn, mod_dn) == -1) {
 		return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
 	}
 
@@ -1481,9 +1325,8 @@
 {
 	int ret, i;
 	char *utf8_dn = NULL;
-	size_t converted_size;
 
-	if (!push_utf8_allocate(&utf8_dn, new_dn, &converted_size)) {
+	if (push_utf8_allocate(&utf8_dn, new_dn) == -1) {
 		DEBUG(1, ("ads_gen_add: push_utf8_allocate failed!"));
 		return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
 	}
@@ -1508,8 +1351,7 @@
 {
 	int ret;
 	char *utf8_dn = NULL;
-	size_t converted_size;
-	if (!push_utf8_allocate(&utf8_dn, del_dn, &converted_size)) {
+	if (push_utf8_allocate(&utf8_dn, del_dn) == -1) {
 		DEBUG(1, ("ads_del_dn: push_utf8_allocate failed!"));
 		return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
 	}
@@ -1660,13 +1502,13 @@
 }
 
 /**
- * Determines the an account's current KVNO via an LDAP lookup
+ * Determines the computer account's current KVNO via an LDAP lookup
  * @param ads An initialized ADS_STRUCT
- * @param account_name the NT samaccountname.
- * @return the kvno for the account, or -1 in case of a failure.
+ * @param machine_name the NetBIOS name of the computer, which is used to identify the computer account.
+ * @return the kvno for the computer account, or -1 in case of a failure.
  **/
 
-uint32 ads_get_kvno(ADS_STRUCT *ads, const char *account_name)
+uint32 ads_get_kvno(ADS_STRUCT *ads, const char *machine_name)
 {
 	LDAPMessage *res = NULL;
 	uint32 kvno = (uint32)-1;      /* -1 indicates a failure */
@@ -1675,14 +1517,14 @@
 	char *dn_string = NULL;
 	ADS_STATUS ret = ADS_ERROR(LDAP_SUCCESS);
 
-	DEBUG(5,("ads_get_kvno: Searching for account %s\n", account_name));
-	if (asprintf(&filter, "(samAccountName=%s)", account_name) == -1) {
+	DEBUG(5,("ads_get_kvno: Searching for host %s\n", machine_name));
+	if (asprintf(&filter, "(samAccountName=%s$)", machine_name) == -1) {
 		return kvno;
 	}
 	ret = ads_search(ads, &res, filter, attrs);
 	SAFE_FREE(filter);
-	if (!ADS_ERR_OK(ret) || (ads_count_replies(ads, res) != 1)) {
-		DEBUG(1,("ads_get_kvno: Account for %s not found.\n", account_name));
+	if (!ADS_ERR_OK(ret) && ads_count_replies(ads, res)) {
+		DEBUG(1,("ads_get_kvno: Computer Account For %s not found.\n", machine_name));
 		ads_msgfree(ads, res);
 		return kvno;
 	}
@@ -1718,28 +1560,6 @@
 }
 
 /**
- * Determines the computer account's current KVNO via an LDAP lookup
- * @param ads An initialized ADS_STRUCT
- * @param machine_name the NetBIOS name of the computer, which is used to identify the computer account.
- * @return the kvno for the computer account, or -1 in case of a failure.
- **/
-
-uint32_t ads_get_machine_kvno(ADS_STRUCT *ads, const char *machine_name)
-{
-	char *computer_account = NULL;
-	uint32_t kvno = -1;
-
-	if (asprintf(&computer_account, "%s$", machine_name) < 0) {
-		return kvno;
-	}
-
-	kvno = ads_get_kvno(ads, computer_account);
-	free(computer_account);
-
-	return kvno;
-}
-
-/**
  * This clears out all registered spn's for a given hostname
  * @param ads An initilaized ADS_STRUCT
  * @param machine_name the NetBIOS name of the computer.
@@ -2192,7 +2012,6 @@
 {
 	LDAPMessage *msg;
 	TALLOC_CTX *ctx;
-	size_t converted_size;
 
 	if (!(ctx = talloc_init("ads_process_results")))
 		return;
@@ -2212,14 +2031,7 @@
 			char *field;
 			bool string; 
 
-			if (!pull_utf8_talloc(ctx, &field, utf8_field,
-					      &converted_size))
-			{
-				DEBUG(0,("ads_process_results: "
-					 "pull_utf8_talloc failed: %s",
-					 strerror(errno)));
-			}
-
+			pull_utf8_talloc(ctx, &field, utf8_field);
 			string = fn(ads, field, NULL, data_area);
 
 			if (string) {
@@ -2315,16 +2127,18 @@
 	char **values;
 	char *ret = NULL;
 	char *ux_string;
-	size_t converted_size;
+	size_t rc;
 
 	values = ldap_get_values(ads->ldap.ld, msg, field);
 	if (!values)
 		return NULL;
 	
-	if (values[0] && pull_utf8_talloc(mem_ctx, &ux_string, values[0],
-					  &converted_size))
-	{
-		ret = ux_string;
+	if (values[0]) {
+		rc = pull_utf8_talloc(mem_ctx, &ux_string, 
+				      values[0]);
+		if (rc != (size_t)-1)
+			ret = ux_string;
+		
 	}
 	ldap_value_free(values);
 	return ret;
@@ -2345,7 +2159,6 @@
 	char **values;
 	char **ret = NULL;
 	int i;
-	size_t converted_size;
 
 	values = ldap_get_values(ads->ldap.ld, msg, field);
 	if (!values)
@@ -2360,9 +2173,7 @@
 	}
 
 	for (i=0;i<*num_values;i++) {
-		if (!pull_utf8_talloc(mem_ctx, &ret[i], values[i],
-				      &converted_size))
-		{
+		if (pull_utf8_talloc(mem_ctx, &ret[i], values[i]) == -1) {
 			ldap_value_free(values);
 			return NULL;
 		}

Modified: branches/samba/upstream/source/libads/ldap_printer.c
===================================================================
--- branches/samba/upstream/source/libads/ldap_printer.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libads/ldap_printer.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -103,23 +103,17 @@
 			    const REGISTRY_VALUE *value)
 {
 	char *str_value = NULL;
-	size_t converted_size;
 	ADS_STATUS status;
 
 	if (value->type != REG_SZ)
-		return false;
+		return False;
 
 	if (value->size && *((smb_ucs2_t *) value->data_p)) {
-		if (!pull_ucs2_talloc(ctx, &str_value,
-				      (const smb_ucs2_t *) value->data_p,
-				      &converted_size))
-		{
-			return false;
-		}
+		pull_ucs2_talloc(ctx, &str_value, (const smb_ucs2_t *) value->data_p);
 		status = ads_mod_str(ctx, mods, value->valuename, str_value);
 		return ADS_ERR_OK(status);
 	}
-	return true;
+	return True;
 		
 }
 
@@ -169,7 +163,6 @@
 			 const REGISTRY_VALUE *value)
 {
 	char **str_values = NULL;
-	size_t converted_size;
 	smb_ucs2_t *cur_str = (smb_ucs2_t *) value->data_p;
         uint32 size = 0, num_vals = 0, i=0;
 	ADS_STATUS status;
@@ -192,11 +185,9 @@
 		       (num_vals + 1) * sizeof(char *));
 
 		cur_str = (smb_ucs2_t *) value->data_p;
-		for (i=0; i < num_vals; i++) {
+		for (i=0; i < num_vals; i++)
 			cur_str += pull_ucs2_talloc(ctx, &str_values[i],
-						    cur_str, &converted_size) ?
-			    converted_size : (size_t)-1;
-		}
+			                            cur_str);
 
 		status = ads_mod_strlist(ctx, mods, value->valuename, 
 					 (const char **) str_values);
@@ -297,16 +288,16 @@
 	uint32 i;
 	POLICY_HND pol;
 
-	if ((asprintf(&servername, "\\\\%s", cli->desthost) == -1)
-	    || (asprintf(&printername, "%s\\%s", servername, printer) == -1)) {
+	asprintf(&servername, "\\\\%s", cli->cli->desthost);
+	asprintf(&printername, "%s\\%s", servername, printer);
+	if (!servername || !printername) {
 		DEBUG(3, ("Insufficient memory\n"));
 		return WERR_NOMEM;
 	}
 	
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, 
 					     "", MAXIMUM_ALLOWED_ACCESS, 
-					     servername, cli->auth->user_name,
-					     &pol);
+					     servername, cli->cli->user_name, &pol);
 	if (!W_ERROR_IS_OK(result)) {
 		DEBUG(3, ("Unable to open printer %s, error is %s.\n",
 			  printername, dos_errstr(result)));

Modified: branches/samba/upstream/source/libads/ldap_schema.c
===================================================================
--- branches/samba/upstream/source/libads/ldap_schema.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libads/ldap_schema.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -246,22 +246,19 @@
 					ADS_ATTR_SFU_GIDNUMBER_OID,
 					ADS_ATTR_SFU_HOMEDIR_OID,
 					ADS_ATTR_SFU_SHELL_OID,
-					ADS_ATTR_SFU_GECOS_OID,
-					ADS_ATTR_SFU_UID_OID };
+					ADS_ATTR_SFU_GECOS_OID};
 
 	const char *oids_sfu20[] = { 	ADS_ATTR_SFU20_UIDNUMBER_OID,
 					ADS_ATTR_SFU20_GIDNUMBER_OID,
 					ADS_ATTR_SFU20_HOMEDIR_OID,
 					ADS_ATTR_SFU20_SHELL_OID,
-					ADS_ATTR_SFU20_GECOS_OID,
-					ADS_ATTR_SFU20_UID_OID };
+					ADS_ATTR_SFU20_GECOS_OID};
 
 	const char *oids_rfc2307[] = {	ADS_ATTR_RFC2307_UIDNUMBER_OID,
 					ADS_ATTR_RFC2307_GIDNUMBER_OID,
 					ADS_ATTR_RFC2307_HOMEDIR_OID,
 					ADS_ATTR_RFC2307_SHELL_OID,
-					ADS_ATTR_RFC2307_GECOS_OID,
-					ADS_ATTR_RFC2307_UID_OID };
+					ADS_ATTR_RFC2307_GECOS_OID };
 
 	DEBUG(10,("ads_check_posix_schema_mapping for schema mode: %d\n", map_type));
 
@@ -362,12 +359,6 @@
 		    strequal(ADS_ATTR_SFU20_GECOS_OID, oids_out[i])) {
 			schema->posix_gecos_attr = talloc_strdup(schema, names_out[i]);
 		}
-
-		if (strequal(ADS_ATTR_RFC2307_UID_OID, oids_out[i]) ||
-		    strequal(ADS_ATTR_SFU_UID_OID, oids_out[i]) ||
-		    strequal(ADS_ATTR_SFU20_UID_OID, oids_out[i])) {
-			schema->posix_uid_attr = talloc_strdup(schema, names_out[i]);
-		}
 	}
 
 	if (!schema->posix_uidnumber_attr ||

Modified: branches/samba/upstream/source/libgpo/gpo_ini.c
===================================================================
--- branches/samba/upstream/source/libgpo/gpo_ini.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libgpo/gpo_ini.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -57,7 +57,6 @@
 	char *tmp_name = NULL;
 	NTSTATUS status;
 	size_t n = 0;
-	size_t converted_size;
 
 	if (!filename_out) {
 		return NT_STATUS_INVALID_PARAMETER;
@@ -82,9 +81,10 @@
 		goto out;
 	}
 
-	if (!convert_string_talloc(mem_ctx, CH_UTF16LE, CH_UNIX, data_in, n,
-				   &data_out, &converted_size, False))
-	{
+	n = convert_string_talloc(mem_ctx, CH_UTF16LE, CH_UNIX,
+				  data_in, n, &data_out, False);
+
+	if (n == -1) {
 		status = NT_STATUS_INVALID_BUFFER_SIZE;
 		goto out;
 	}
@@ -99,10 +99,10 @@
 		DEBUG(11,("convert_file_from_ucs2: "
 			 "%s skipping utf8 BOM\n", tmp_name));
 		data_out += 3;
-		converted_size -= 3;
+		n -= 3;
 	}
 
-	if (sys_write(tmp_fd, data_out, converted_size) != converted_size) {
+	if (sys_write(tmp_fd, data_out, n) != n) {
 		status = map_nt_error_from_unix(errno);
 		goto out;
 	}

Modified: branches/samba/upstream/source/libgpo/gpo_ldap.c
===================================================================
--- branches/samba/upstream/source/libgpo/gpo_ldap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libgpo/gpo_ldap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -725,7 +725,7 @@
 
 	/* (L)ocal */
 	status = add_local_policy_to_gpo_list(mem_ctx, gpo_list,
-					      GP_LINK_LOCAL);
+					      GP_LINK_UNKOWN);
 	if (!ADS_ERR_OK(status)) {
 		return status;
 	}

Deleted: branches/samba/upstream/source/libgpo/gpo_reg.c
===================================================================
--- branches/samba/upstream/source/libgpo/gpo_reg.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libgpo/gpo_reg.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1009 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  Group Policy Object Support
- *  Copyright (C) Guenther Deschner 2007-2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-
-/****************************************************************
-****************************************************************/
-
-struct nt_user_token *registry_create_system_token(TALLOC_CTX *mem_ctx)
-{
-	struct nt_user_token *token = NULL;
-
-	token = TALLOC_ZERO_P(mem_ctx, struct nt_user_token);
-	if (!token) {
-		DEBUG(1,("talloc failed\n"));
-		return NULL;
-	}
-
-	token->privileges = se_priv_all;
-
-	if (!NT_STATUS_IS_OK(add_sid_to_array(token, &global_sid_System,
-			 &token->user_sids, &token->num_sids))) {
-		DEBUG(1,("Error adding nt-authority system sid to token\n"));
-		return NULL;
-	}
-
-	return token;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_init_reg_ctx(TALLOC_CTX *mem_ctx,
-		       const char *initial_path,
-		       uint32_t desired_access,
-		       const struct nt_user_token *token,
-		       struct gp_registry_context **reg_ctx)
-{
-	struct gp_registry_context *tmp_ctx;
-	WERROR werr;
-
-	if (!reg_ctx) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = registry_init_basic();
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	tmp_ctx = TALLOC_ZERO_P(mem_ctx, struct gp_registry_context);
-	W_ERROR_HAVE_NO_MEMORY(tmp_ctx);
-
-	if (token) {
-		tmp_ctx->token = token;
-	} else {
-		tmp_ctx->token = registry_create_system_token(mem_ctx);
-	}
-	if (!tmp_ctx->token) {
-		TALLOC_FREE(tmp_ctx);
-		return WERR_NOMEM;
-	}
-
-	werr = regdb_open();
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	if (initial_path) {
-		tmp_ctx->path = talloc_strdup(mem_ctx, initial_path);
-		if (!tmp_ctx->path) {
-			TALLOC_FREE(tmp_ctx);
-			return WERR_NOMEM;
-		}
-
-		werr = reg_open_path(mem_ctx, tmp_ctx->path, desired_access,
-				     tmp_ctx->token, &tmp_ctx->curr_key);
-		if (!W_ERROR_IS_OK(werr)) {
-			TALLOC_FREE(tmp_ctx);
-			return werr;
-		}
-	}
-
-	*reg_ctx = tmp_ctx;
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-void gp_free_reg_ctx(struct gp_registry_context *reg_ctx)
-{
-	TALLOC_FREE(reg_ctx);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_store_reg_subkey(TALLOC_CTX *mem_ctx,
-			   const char *subkeyname,
-			   struct registry_key *curr_key,
-			   struct registry_key **new_key)
-{
-	enum winreg_CreateAction action = REG_ACTION_NONE;
-	WERROR werr;
-
-	werr = reg_createkey(mem_ctx, curr_key, subkeyname,
-			     REG_KEY_WRITE, new_key, &action);
-	if (W_ERROR_IS_OK(werr) && (action != REG_CREATED_NEW_KEY)) {
-		return WERR_OK;
-	}
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_read_reg_subkey(TALLOC_CTX *mem_ctx,
-			  struct gp_registry_context *reg_ctx,
-			  const char *subkeyname,
-			  struct registry_key **key)
-{
-	const char *tmp = NULL;
-
-	if (!reg_ctx || !subkeyname || !key) {
-		return WERR_INVALID_PARAM;
-	}
-
-	tmp = talloc_asprintf(mem_ctx, "%s\\%s", reg_ctx->path, subkeyname);
-	W_ERROR_HAVE_NO_MEMORY(tmp);
-
-	return reg_open_path(mem_ctx, tmp, REG_KEY_READ,
-			     reg_ctx->token, key);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_store_reg_val_sz(TALLOC_CTX *mem_ctx,
-			   struct registry_key *key,
-			   const char *val_name,
-			   const char *val)
-{
-	struct registry_value reg_val;
-	ZERO_STRUCT(reg_val);
-
-	/* FIXME: hack */
-	val = val ? val : " ";
-
-	reg_val.type = REG_SZ;
-	reg_val.v.sz.len = strlen(val);
-	reg_val.v.sz.str = talloc_strdup(mem_ctx, val);
-	W_ERROR_HAVE_NO_MEMORY(reg_val.v.sz.str);
-
-	return reg_setvalue(key, val_name, &reg_val);
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_store_reg_val_dword(TALLOC_CTX *mem_ctx,
-				     struct registry_key *key,
-				     const char *val_name,
-				     uint32_t val)
-{
-	struct registry_value reg_val;
-	ZERO_STRUCT(reg_val);
-
-	reg_val.type = REG_DWORD;
-	reg_val.v.dword = val;
-
-	return reg_setvalue(key, val_name, &reg_val);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_read_reg_val_sz(TALLOC_CTX *mem_ctx,
-			  struct registry_key *key,
-			  const char *val_name,
-			  const char **val)
-{
-	WERROR werr;
-	struct registry_value *reg_val = NULL;
-
-	werr = reg_queryvalue(mem_ctx, key, val_name, &reg_val);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	if (reg_val->type != REG_SZ) {
-		return WERR_INVALID_DATATYPE;
-	}
-
-	*val = talloc_strdup(mem_ctx, reg_val->v.sz.str);
-	W_ERROR_HAVE_NO_MEMORY(*val);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_read_reg_val_dword(TALLOC_CTX *mem_ctx,
-				    struct registry_key *key,
-				    const char *val_name,
-				    uint32_t *val)
-{
-	WERROR werr;
-	struct registry_value *reg_val = NULL;
-
-	werr = reg_queryvalue(mem_ctx, key, val_name, &reg_val);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	if (reg_val->type != REG_DWORD) {
-		return WERR_INVALID_DATATYPE;
-	}
-
-	*val = reg_val->v.dword;
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_store_reg_gpovals(TALLOC_CTX *mem_ctx,
-				   struct registry_key *key,
-				   struct GROUP_POLICY_OBJECT *gpo)
-{
-	WERROR werr;
-
-	if (!key || !gpo) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = gp_store_reg_val_dword(mem_ctx, key, "Version",
-				      gpo->version);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_dword(mem_ctx, key, "WQLFilterPass",
-				      true); /* fake */
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_dword(mem_ctx, key, "AccessDenied",
-				      false); /* fake */
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_dword(mem_ctx, key, "GPO-Disabled",
-				      (gpo->options & GPO_FLAG_DISABLE));
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_dword(mem_ctx, key, "Options",
-				      gpo->options);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_sz(mem_ctx, key, "GPOID",
-				   gpo->name);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_sz(mem_ctx, key, "SOM",
-				   gpo->link);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_sz(mem_ctx, key, "DisplayName",
-				   gpo->display_name);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_store_reg_val_sz(mem_ctx, key, "WQL-Id",
-				   NULL);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-static const char *gp_reg_groupmembership_path(TALLOC_CTX *mem_ctx,
-					       const DOM_SID *sid,
-					       uint32_t flags)
-{
-	if (flags & GPO_LIST_FLAG_MACHINE) {
-		return "GroupMembership";
-	}
-
-	return talloc_asprintf(mem_ctx, "%s\\%s", sid_string_tos(sid),
-			       "GroupMembership");
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_reg_del_groupmembership(TALLOC_CTX *mem_ctx,
-					 struct registry_key *key,
-					 const struct nt_user_token *token,
-					 uint32_t flags)
-{
-	const char *path = NULL;
-
-	path = gp_reg_groupmembership_path(mem_ctx, &token->user_sids[0],
-					   flags);
-	W_ERROR_HAVE_NO_MEMORY(path);
-
-	return reg_deletekey_recursive(mem_ctx, key, path);
-
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_reg_store_groupmembership(TALLOC_CTX *mem_ctx,
-					   struct gp_registry_context *reg_ctx,
-					   const struct nt_user_token *token,
-					   uint32_t flags)
-{
-	struct registry_key *key = NULL;
-	WERROR werr;
-	int i = 0;
-	const char *valname = NULL;
-	const char *path = NULL;
-	const char *val = NULL;
-	int count = 0;
-
-	path = gp_reg_groupmembership_path(mem_ctx, &token->user_sids[0],
-					   flags);
-	W_ERROR_HAVE_NO_MEMORY(path);
-
-	gp_reg_del_groupmembership(mem_ctx, reg_ctx->curr_key, token, flags);
-
-	werr = gp_store_reg_subkey(mem_ctx, path,
-				   reg_ctx->curr_key, &key);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	for (i=0; i<token->num_sids; i++) {
-
-		valname = talloc_asprintf(mem_ctx, "Group%d", count++);
-		W_ERROR_HAVE_NO_MEMORY(valname);
-
-		val = sid_string_talloc(mem_ctx, &token->user_sids[i]);
-		W_ERROR_HAVE_NO_MEMORY(val);
-		werr = gp_store_reg_val_sz(mem_ctx, key, valname, val);
-		W_ERROR_NOT_OK_RETURN(werr);
-	}
-
-	werr = gp_store_reg_val_dword(mem_ctx, key, "Count", count);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-#if 0
-/* not used yet */
-static WERROR gp_reg_read_groupmembership(TALLOC_CTX *mem_ctx,
-					  struct gp_registry_context *reg_ctx,
-					  const DOM_SID *object_sid,
-					  struct nt_user_token **token,
-					  uint32_t flags)
-{
-	struct registry_key *key = NULL;
-	WERROR werr;
-	int i = 0;
-	const char *valname = NULL;
-	const char *val = NULL;
-	const char *path = NULL;
-	uint32_t count = 0;
-	int num_token_sids = 0;
-	struct nt_user_token *tmp_token = NULL;
-
-	tmp_token = TALLOC_ZERO_P(mem_ctx, struct nt_user_token);
-	W_ERROR_HAVE_NO_MEMORY(tmp_token);
-
-	path = gp_reg_groupmembership_path(mem_ctx, object_sid, flags);
-	W_ERROR_HAVE_NO_MEMORY(path);
-
-	werr = gp_read_reg_subkey(mem_ctx, reg_ctx, path, &key);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_read_reg_val_dword(mem_ctx, key, "Count", &count);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	for (i=0; i<count; i++) {
-
-		valname = talloc_asprintf(mem_ctx, "Group%d", i);
-		W_ERROR_HAVE_NO_MEMORY(valname);
-
-		werr = gp_read_reg_val_sz(mem_ctx, key, valname, &val);
-		W_ERROR_NOT_OK_RETURN(werr);
-
-		if (!string_to_sid(&tmp_token->user_sids[num_token_sids++],
-				   val)) {
-			return WERR_INSUFFICIENT_BUFFER;
-		}
-	}
-
-	tmp_token->num_sids = num_token_sids;
-
-	*token = tmp_token;
-
-	return WERR_OK;
-}
-#endif
-/****************************************************************
-****************************************************************/
-
-static const char *gp_req_state_path(TALLOC_CTX *mem_ctx,
-				     const DOM_SID *sid,
-				     uint32_t flags)
-{
-	if (flags & GPO_LIST_FLAG_MACHINE) {
-		return GPO_REG_STATE_MACHINE;
-	}
-
-	return talloc_asprintf(mem_ctx, "%s\\%s", "State", sid_string_tos(sid));
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_del_reg_state(TALLOC_CTX *mem_ctx,
-			       struct registry_key *key,
-			       const char *path)
-{
-	return reg_deletesubkeys_recursive(mem_ctx, key, path);
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_reg_state_store(TALLOC_CTX *mem_ctx,
-			  uint32_t flags,
-			  const char *dn,
-			  const struct nt_user_token *token,
-			  struct GROUP_POLICY_OBJECT *gpo_list)
-{
-	struct gp_registry_context *reg_ctx = NULL;
-	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *subkeyname = NULL;
-	struct GROUP_POLICY_OBJECT *gpo;
-	int count = 0;
-	struct registry_key *key;
-
-	werr = gp_init_reg_ctx(mem_ctx, KEY_GROUP_POLICY, REG_KEY_WRITE,
-			       token, &reg_ctx);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_secure_key(mem_ctx, flags, reg_ctx->curr_key,
-			     &token->user_sids[0]);
-	if (!W_ERROR_IS_OK(werr)) {
-		DEBUG(0,("failed to secure key: %s\n", dos_errstr(werr)));
-		goto done;
-	}
-
-	werr = gp_reg_store_groupmembership(mem_ctx, reg_ctx, token, flags);
-	if (!W_ERROR_IS_OK(werr)) {
-		DEBUG(0,("failed to store group membership: %s\n", dos_errstr(werr)));
-		goto done;
-	}
-
-	subkeyname = gp_req_state_path(mem_ctx, &token->user_sids[0], flags);
-	if (!subkeyname) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	werr = gp_del_reg_state(mem_ctx, reg_ctx->curr_key, subkeyname);
-	if (!W_ERROR_IS_OK(werr)) {
-		DEBUG(0,("failed to delete old state: %s\n", dos_errstr(werr)));
-		/* goto done; */
-	}
-
-	werr = gp_store_reg_subkey(mem_ctx, subkeyname,
-				   reg_ctx->curr_key, &reg_ctx->curr_key);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	werr = gp_store_reg_val_sz(mem_ctx, reg_ctx->curr_key,
-				   "Distinguished-Name", dn);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	/* store link list */
-
-	werr = gp_store_reg_subkey(mem_ctx, "GPLink-List",
-				   reg_ctx->curr_key, &key);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	/* store gpo list */
-
-	werr = gp_store_reg_subkey(mem_ctx, "GPO-List",
-				   reg_ctx->curr_key, &reg_ctx->curr_key);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	for (gpo = gpo_list; gpo; gpo = gpo->next) {
-
-		subkeyname = talloc_asprintf(mem_ctx, "%d", count++);
-		if (!subkeyname) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-
-		werr = gp_store_reg_subkey(mem_ctx, subkeyname,
-					   reg_ctx->curr_key, &key);
-		if (!W_ERROR_IS_OK(werr)) {
-			goto done;
-		}
-
-		werr = gp_store_reg_gpovals(mem_ctx, key, gpo);
-		if (!W_ERROR_IS_OK(werr)) {
-			DEBUG(0,("gp_reg_state_store: "
-				"gpo_store_reg_gpovals failed for %s: %s\n",
-				gpo->display_name, dos_errstr(werr)));
-			goto done;
-		}
-	}
- done:
-	gp_free_reg_ctx(reg_ctx);
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_read_reg_gpovals(TALLOC_CTX *mem_ctx,
-				  struct registry_key *key,
-				  struct GROUP_POLICY_OBJECT *gpo)
-{
-	WERROR werr;
-
-	if (!key || !gpo) {
-		return WERR_INVALID_PARAM;
-	}
-
-	werr = gp_read_reg_val_dword(mem_ctx, key, "Version",
-				     &gpo->version);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_read_reg_val_dword(mem_ctx, key, "Options",
-				     &gpo->options);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_read_reg_val_sz(mem_ctx, key, "GPOID",
-				  &gpo->name);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_read_reg_val_sz(mem_ctx, key, "SOM",
-				  &gpo->link);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	werr = gp_read_reg_val_sz(mem_ctx, key, "DisplayName",
-				  &gpo->display_name);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_read_reg_gpo(TALLOC_CTX *mem_ctx,
-			      struct registry_key *key,
-			      struct GROUP_POLICY_OBJECT **gpo_ret)
-{
-	struct GROUP_POLICY_OBJECT *gpo = NULL;
-	WERROR werr;
-
-	if (!gpo_ret || !key) {
-		return WERR_INVALID_PARAM;
-	}
-
-	gpo = TALLOC_ZERO_P(mem_ctx, struct GROUP_POLICY_OBJECT);
-	W_ERROR_HAVE_NO_MEMORY(gpo);
-
-	werr = gp_read_reg_gpovals(mem_ctx, key, gpo);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	*gpo_ret = gpo;
-
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_reg_state_read(TALLOC_CTX *mem_ctx,
-			 uint32_t flags,
-			 const DOM_SID *sid,
-			 struct GROUP_POLICY_OBJECT **gpo_list)
-{
-	struct gp_registry_context *reg_ctx = NULL;
-	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *subkeyname = NULL;
-	struct GROUP_POLICY_OBJECT *gpo = NULL;
-	int count = 0;
-	struct registry_key *key = NULL;
-	const char *path = NULL;
-	const char *gp_state_path = NULL;
-
-	if (!gpo_list) {
-		return WERR_INVALID_PARAM;
-	}
-
-	ZERO_STRUCTP(gpo_list);
-
-	gp_state_path = gp_req_state_path(mem_ctx, sid, flags);
-	if (!gp_state_path) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	path = talloc_asprintf(mem_ctx, "%s\\%s\\%s",
-			       KEY_GROUP_POLICY,
-			       gp_state_path,
-			       "GPO-List");
-	if (!path) {
-		werr = WERR_NOMEM;
-		goto done;
-	}
-
-	werr = gp_init_reg_ctx(mem_ctx, path, REG_KEY_READ, NULL, &reg_ctx);
-	if (!W_ERROR_IS_OK(werr)) {
-		goto done;
-	}
-
-	while (1) {
-
-		subkeyname = talloc_asprintf(mem_ctx, "%d", count++);
-		if (!subkeyname) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-
-		werr = gp_read_reg_subkey(mem_ctx, reg_ctx, subkeyname, &key);
-		if (W_ERROR_EQUAL(werr, WERR_BADFILE)) {
-			werr = WERR_OK;
-			break;
-		}
-		if (!W_ERROR_IS_OK(werr)) {
-			DEBUG(0,("gp_reg_state_read: "
-				"gp_read_reg_subkey gave: %s\n",
-				dos_errstr(werr)));
-			goto done;
-		}
-
-		werr = gp_read_reg_gpo(mem_ctx, key, &gpo);
-		if (!W_ERROR_IS_OK(werr)) {
-			goto done;
-		}
-
-		DLIST_ADD(*gpo_list, gpo);
-	}
-
- done:
-	gp_free_reg_ctx(reg_ctx);
-	return werr;
-}
-
-/****************************************************************
-****************************************************************/
-
-static WERROR gp_reg_generate_sd(TALLOC_CTX *mem_ctx,
-				 const DOM_SID *sid,
-				 struct security_descriptor **sd,
-				 size_t *sd_size)
-{
-	SEC_ACE ace[6];
-	SEC_ACCESS mask;
-
-	SEC_ACL *acl = NULL;
-
-	uint8_t inherit_flags;
-
-	init_sec_access(&mask, REG_KEY_ALL);
-	init_sec_ace(&ace[0],
-		     &global_sid_System,
-		     SEC_ACE_TYPE_ACCESS_ALLOWED,
-		     mask, 0);
-
-	init_sec_access(&mask, REG_KEY_ALL);
-	init_sec_ace(&ace[1],
-		     &global_sid_Builtin_Administrators,
-		     SEC_ACE_TYPE_ACCESS_ALLOWED,
-		     mask, 0);
-
-	init_sec_access(&mask, REG_KEY_READ);
-	init_sec_ace(&ace[2],
-		     sid ? sid : &global_sid_Authenticated_Users,
-		     SEC_ACE_TYPE_ACCESS_ALLOWED,
-		     mask, 0);
-
-	inherit_flags = SEC_ACE_FLAG_OBJECT_INHERIT |
-			SEC_ACE_FLAG_CONTAINER_INHERIT |
-			SEC_ACE_FLAG_INHERIT_ONLY;
-
-	init_sec_access(&mask, REG_KEY_ALL);
-	init_sec_ace(&ace[3],
-		     &global_sid_System,
-		     SEC_ACE_TYPE_ACCESS_ALLOWED,
-		     mask, inherit_flags);
-
-	init_sec_access(&mask, REG_KEY_ALL);
-	init_sec_ace(&ace[4],
-		     &global_sid_Builtin_Administrators,
-		     SEC_ACE_TYPE_ACCESS_ALLOWED,
-		     mask, inherit_flags);
-
-	init_sec_access(&mask, REG_KEY_READ);
-	init_sec_ace(&ace[5],
-		     sid ? sid : &global_sid_Authenticated_Users,
-		     SEC_ACE_TYPE_ACCESS_ALLOWED,
-		     mask, inherit_flags);
-
-	acl = make_sec_acl(mem_ctx, NT4_ACL_REVISION, 6, ace);
-	W_ERROR_HAVE_NO_MEMORY(acl);
-
-	*sd = make_sec_desc(mem_ctx, SEC_DESC_REVISION,
-			    SEC_DESC_SELF_RELATIVE |
-			    SEC_DESC_DACL_AUTO_INHERITED | /* really ? */
-			    SEC_DESC_DACL_AUTO_INHERIT_REQ, /* really ? */
-			    NULL, NULL, NULL,
-			    acl, sd_size);
-	W_ERROR_HAVE_NO_MEMORY(*sd);
-
-	return WERR_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR gp_secure_key(TALLOC_CTX *mem_ctx,
-		     uint32_t flags,
-		     struct registry_key *key,
-		     const DOM_SID *sid)
-{
-	struct security_descriptor *sd = NULL;
-	size_t sd_size = 0;
-	const DOM_SID *sd_sid = NULL;
-	WERROR werr;
-
-	if (!(flags & GPO_LIST_FLAG_MACHINE)) {
-		sd_sid = sid;
-	}
-
-	werr = gp_reg_generate_sd(mem_ctx, sd_sid, &sd, &sd_size);
-	W_ERROR_NOT_OK_RETURN(werr);
-
-	return reg_setkeysecurity(key, sd);
-}
-
-/****************************************************************
-****************************************************************/
-
-void dump_reg_val(int lvl, const char *direction,
-		  const char *key, const char *subkey,
-		  struct registry_value *val)
-{
-	int i = 0;
-	const char *type_str = NULL;
-
-	if (!val) {
-		DEBUG(lvl,("no val!\n"));
-		return;
-	}
-
-	type_str = reg_type_lookup(val->type);
-
-	DEBUG(lvl,("\tdump_reg_val:\t%s '%s'\n\t\t\t'%s' %s: ",
-		direction, key, subkey, type_str));
-
-	switch (val->type) {
-		case REG_DWORD:
-			DEBUG(lvl,("%d (0x%08x)\n",
-				(int)val->v.dword, val->v.dword));
-			break;
-		case REG_QWORD:
-			DEBUG(lvl,("%d (0x%016llx)\n",
-				(int)val->v.qword,
-				(unsigned long long)val->v.qword));
-			break;
-		case REG_SZ:
-			DEBUG(lvl,("%s (length: %d)\n",
-				   val->v.sz.str,
-				   (int)val->v.sz.len));
-			break;
-		case REG_MULTI_SZ:
-			DEBUG(lvl,("(num_strings: %d)\n",
-				   val->v.multi_sz.num_strings));
-			for (i=0; i < val->v.multi_sz.num_strings; i++) {
-				DEBUGADD(lvl,("\t%s\n",
-					val->v.multi_sz.strings[i]));
-			}
-			break;
-		case REG_NONE:
-			DEBUG(lvl,("\n"));
-			break;
-		case REG_BINARY:
-			dump_data(lvl, val->v.binary.data,
-				  val->v.binary.length);
-			break;
-		default:
-			DEBUG(lvl,("unsupported type: %d\n", val->type));
-			break;
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
-void dump_reg_entry(uint32_t flags,
-		    const char *dir,
-		    struct gp_registry_entry *entry)
-{
-	if (!(flags & GPO_INFO_FLAG_VERBOSE))
-		return;
-
-	dump_reg_val(1, dir,
-		     entry->key,
-		     entry->value,
-		     entry->data);
-}
-
-/****************************************************************
-****************************************************************/
-
-void dump_reg_entries(uint32_t flags,
-		      const char *dir,
-		      struct gp_registry_entry *entries,
-		      size_t num_entries)
-{
-	size_t i;
-
-	if (!(flags & GPO_INFO_FLAG_VERBOSE))
-		return;
-
-	for (i=0; i < num_entries; i++) {
-		dump_reg_entry(flags, dir, &entries[i]);
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
-bool add_gp_registry_entry_to_array(TALLOC_CTX *mem_ctx,
-				    struct gp_registry_entry *entry,
-				    struct gp_registry_entry **entries,
-				    size_t *num)
-{
-	*entries = TALLOC_REALLOC_ARRAY(mem_ctx, *entries,
-					struct gp_registry_entry,
-					(*num)+1);
-
-	if (*entries == NULL) {
-		*num = 0;
-		return false;
-	}
-
-	(*entries)[*num].action = entry->action;
-	(*entries)[*num].key = entry->key;
-	(*entries)[*num].value = entry->value;
-	(*entries)[*num].data = entry->data;
-
-	*num += 1;
-	return true;
-}
-
-/****************************************************************
-****************************************************************/
-
-static const char *gp_reg_action_str(enum gp_reg_action action)
-{
-	switch (action) {
-		case GP_REG_ACTION_NONE:
-			return "GP_REG_ACTION_NONE";
-		case GP_REG_ACTION_ADD_VALUE:
-			return "GP_REG_ACTION_ADD_VALUE";
-		case GP_REG_ACTION_ADD_KEY:
-			return "GP_REG_ACTION_ADD_KEY";
-		case GP_REG_ACTION_DEL_VALUES:
-			return "GP_REG_ACTION_DEL_VALUES";
-		case GP_REG_ACTION_DEL_VALUE:
-			return "GP_REG_ACTION_DEL_VALUE";
-		case GP_REG_ACTION_DEL_ALL_VALUES:
-			return "GP_REG_ACTION_DEL_ALL_VALUES";
-		case GP_REG_ACTION_DEL_KEYS:
-			return "GP_REG_ACTION_DEL_KEYS";
-		case GP_REG_ACTION_SEC_KEY_SET:
-			return "GP_REG_ACTION_SEC_KEY_SET";
-		case GP_REG_ACTION_SEC_KEY_RESET:
-			return "GP_REG_ACTION_SEC_KEY_RESET";
-		default:
-			return "unknown";
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
-WERROR reg_apply_registry_entry(TALLOC_CTX *mem_ctx,
-				struct registry_key *root_key,
-				struct gp_registry_context *reg_ctx,
-				struct gp_registry_entry *entry,
-				const struct nt_user_token *token,
-				uint32_t flags)
-{
-	WERROR werr;
-	struct registry_key *key = NULL;
-
-	if (flags & GPO_INFO_FLAG_VERBOSE) {
-		printf("about to store key:    [%s]\n", entry->key);
-		printf("               value:  [%s]\n", entry->value);
-		printf("               data:   [%s]\n", reg_type_lookup(entry->data->type));
-		printf("               action: [%s]\n", gp_reg_action_str(entry->action));
-	}
-
-	werr = gp_store_reg_subkey(mem_ctx, entry->key,
-				   root_key, &key);
-				   /* reg_ctx->curr_key, &key); */
-	if (!W_ERROR_IS_OK(werr)) {
-		DEBUG(0,("gp_store_reg_subkey failed: %s\n", dos_errstr(werr)));
-		return werr;
-	}
-
-	switch (entry->action) {
-		case GP_REG_ACTION_NONE:
-		case GP_REG_ACTION_ADD_KEY:
-			return WERR_OK;
-
-		case GP_REG_ACTION_SEC_KEY_SET:
-			werr = gp_secure_key(mem_ctx, flags,
-					     key,
-					     &token->user_sids[0]);
-			if (!W_ERROR_IS_OK(werr)) {
-				DEBUG(0,("reg_apply_registry_entry: "
-					"gp_secure_key failed: %s\n",
-					dos_errstr(werr)));
-				return werr;
-			}
-			break;
-		case GP_REG_ACTION_ADD_VALUE:
-			werr = reg_setvalue(key, entry->value, entry->data);
-			if (!W_ERROR_IS_OK(werr)) {
-				DEBUG(0,("reg_apply_registry_entry: "
-					"reg_setvalue failed: %s\n",
-					dos_errstr(werr)));
-				dump_reg_entry(flags, "STORE", entry);
-				return werr;
-			}
-			break;
-		case GP_REG_ACTION_DEL_VALUE:
-			werr = reg_deletevalue(key, entry->value);
-			if (!W_ERROR_IS_OK(werr)) {
-				DEBUG(0,("reg_apply_registry_entry: "
-					"reg_deletevalue failed: %s\n",
-					dos_errstr(werr)));
-				dump_reg_entry(flags, "STORE", entry);
-				return werr;
-			}
-			break;
-		case GP_REG_ACTION_DEL_ALL_VALUES:
-			werr = reg_deleteallvalues(key);
-			if (!W_ERROR_IS_OK(werr)) {
-				DEBUG(0,("reg_apply_registry_entry: "
-					"reg_deleteallvalues failed: %s\n",
-					dos_errstr(werr)));
-				dump_reg_entry(flags, "STORE", entry);
-				return werr;
-			}
-			break;
-		case GP_REG_ACTION_DEL_VALUES:
-		case GP_REG_ACTION_DEL_KEYS:
-		case GP_REG_ACTION_SEC_KEY_RESET:
-			DEBUG(0,("reg_apply_registry_entry: "
-				"not yet supported: %s (%d)\n",
-				gp_reg_action_str(entry->action),
-				entry->action));
-			return WERR_NOT_SUPPORTED;
-		default:
-			DEBUG(0,("invalid action: %d\n", entry->action));
-			return WERR_INVALID_PARAM;
-	}
-
-	return werr;
-}
-

Modified: branches/samba/upstream/source/libgpo/gpo_util.c
===================================================================
--- branches/samba/upstream/source/libgpo/gpo_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libgpo/gpo_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,7 +1,7 @@
 /*
  *  Unix SMB/CIFS implementation.
  *  Group Policy Object Support
- *  Copyright (C) Guenther Deschner 2005-2008
+ *  Copyright (C) Guenther Deschner 2005-2007
  *
  *  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
@@ -400,34 +400,21 @@
 /****************************************************************
 ****************************************************************/
 
-static bool gpo_get_gp_ext_from_gpo(TALLOC_CTX *mem_ctx,
-				    uint32_t flags,
-				    struct GROUP_POLICY_OBJECT *gpo,
-				    struct GP_EXT **gp_ext)
+NTSTATUS process_extension(ADS_STRUCT *ads,
+			   TALLOC_CTX *mem_ctx,
+			   uint32_t flags,
+			   const struct nt_user_token *token,
+			   struct GROUP_POLICY_OBJECT *gpo,
+			   const char *extension_guid,
+			   const char *snapin_guid)
 {
-	ZERO_STRUCTP(*gp_ext);
+	DEBUG(0,("process_extension: no extension available for:\n"));
+	DEBUGADD(0,("%s (%s) (snapin: %s)\n",
+		extension_guid,
+		cse_gpo_guid_string_to_name(extension_guid),
+		snapin_guid));
 
-	if (flags & GPO_INFO_FLAG_MACHINE) {
-
-		if (gpo->machine_extensions) {
-
-			if (!ads_parse_gp_ext(mem_ctx, gpo->machine_extensions,
-					      gp_ext)) {
-				return false;
-			}
-		}
-	} else {
-
-		if (gpo->user_extensions) {
-
-			if (!ads_parse_gp_ext(mem_ctx, gpo->user_extensions,
-					      gp_ext)) {
-				return false;
-			}
-		}
-	}
-
-	return true;
+	return NT_STATUS_OK;
 }
 
 /****************************************************************
@@ -436,7 +423,6 @@
 ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
 			     TALLOC_CTX *mem_ctx,
 			     const struct nt_user_token *token,
-			     struct registry_key *root_key,
 			     struct GROUP_POLICY_OBJECT *gpo,
 			     const char *extension_guid_filter,
 			     uint32_t flags)
@@ -447,22 +433,36 @@
 	DEBUG(10,("gpo_process_a_gpo: processing gpo %s (%s)\n",
 		gpo->name, gpo->display_name));
 	if (extension_guid_filter) {
-		DEBUGADD(10,("gpo_process_a_gpo: using filter %s (%s)\n",
-			extension_guid_filter,
-			cse_gpo_guid_string_to_name(extension_guid_filter)));
+		DEBUGADD(10,("gpo_process_a_gpo: using filter %s\n",
+			extension_guid_filter));
 	}
 
-	if (!gpo_get_gp_ext_from_gpo(mem_ctx, flags, gpo, &gp_ext)) {
-		return ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
-	}
+	if (flags & GPO_LIST_FLAG_MACHINE) {
 
-	if (!gp_ext || !gp_ext->num_exts) {
-		if (flags & GPO_INFO_FLAG_VERBOSE) {
-			DEBUG(0,("gpo_process_a_gpo: "
-				"no policies in %s (%s) for this extension\n",
-				gpo->name, gpo->display_name));
+		if (gpo->machine_extensions) {
+
+			if (!ads_parse_gp_ext(mem_ctx, gpo->machine_extensions,
+					      &gp_ext)) {
+				return ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+			}
+
+		} else {
+			/* nothing to apply */
+			return ADS_SUCCESS;
 		}
-		return ADS_SUCCESS;
+
+	} else {
+
+		if (gpo->user_extensions) {
+
+			if (!ads_parse_gp_ext(mem_ctx, gpo->user_extensions,
+					      &gp_ext)) {
+				return ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
+			}
+		} else {
+			/* nothing to apply */
+			return ADS_SUCCESS;
+		}
 	}
 
 	for (i=0; i<gp_ext->num_exts; i++) {
@@ -475,10 +475,10 @@
 			continue;
 		}
 
-		ntstatus = gpext_process_extension(ads, mem_ctx,
-						   flags, token, root_key, gpo,
-						   gp_ext->extensions_guid[i],
-						   gp_ext->snapins_guid[i]);
+		ntstatus = process_extension(ads, mem_ctx,
+					     flags, token, gpo,
+					     gp_ext->extensions_guid[i],
+					     gp_ext->snapins_guid[i]);
 		if (!NT_STATUS_IS_OK(ntstatus)) {
 			ADS_ERROR_NT(ntstatus);
 		}
@@ -490,123 +490,38 @@
 /****************************************************************
 ****************************************************************/
 
-static ADS_STATUS gpo_process_gpo_list_by_ext(ADS_STRUCT *ads,
-					      TALLOC_CTX *mem_ctx,
-					      const struct nt_user_token *token,
-					      struct registry_key *root_key,
-					      struct GROUP_POLICY_OBJECT *gpo_list,
-					      const char *extensions_guid,
-					      uint32_t flags)
+ADS_STATUS gpo_process_gpo_list(ADS_STRUCT *ads,
+				TALLOC_CTX *mem_ctx,
+				const struct nt_user_token *token,
+				struct GROUP_POLICY_OBJECT *gpo_list,
+				const char *extensions_guid,
+				uint32_t flags)
 {
 	ADS_STATUS status;
 	struct GROUP_POLICY_OBJECT *gpo;
 
+	/* FIXME: ok, this is wrong, windows does process the extensions and
+	 * hands the list of gpos to each extension and not process each gpo
+	 * with all extensions (this is how the extension can store the list
+	 * gplist in the registry) */
+
 	for (gpo = gpo_list; gpo; gpo = gpo->next) {
 
-		if (gpo->link_type == GP_LINK_LOCAL) {
-			continue;
-		}
+		status = gpo_process_a_gpo(ads, mem_ctx, token, gpo,
+					   extensions_guid, flags);
 
-
-		/* FIXME: we need to pass down the *list* down to the
-		 * extension, otherwise we cannot store the e.g. the *list* of
-		 * logon-scripts correctly (for more then one GPO) */
-
-		status = gpo_process_a_gpo(ads, mem_ctx, token, root_key,
-					   gpo, extensions_guid, flags);
-
 		if (!ADS_ERR_OK(status)) {
-			DEBUG(0,("failed to process gpo by ext: %s\n",
+			DEBUG(0,("failed to process gpo: %s\n",
 				ads_errstr(status)));
 			return status;
 		}
+
 	}
 
 	return ADS_SUCCESS;
 }
 
 /****************************************************************
-****************************************************************/
-
-ADS_STATUS gpo_process_gpo_list(ADS_STRUCT *ads,
-				TALLOC_CTX *mem_ctx,
-				const struct nt_user_token *token,
-				struct GROUP_POLICY_OBJECT *gpo_list,
-				const char *extensions_guid_filter,
-				uint32_t flags)
-{
-	ADS_STATUS status = ADS_SUCCESS;
-	struct gp_extension *gp_ext_list = NULL;
-	struct gp_extension *gp_ext = NULL;
-	struct registry_key *root_key = NULL;
-	struct gp_registry_context *reg_ctx = NULL;
-	WERROR werr;
-
-	status = ADS_ERROR_NT(init_gp_extensions(mem_ctx));
-	if (!ADS_ERR_OK(status)) {
-		return status;
-	}
-
-	gp_ext_list = get_gp_extension_list();
-	if (!gp_ext_list) {
-		return ADS_ERROR_NT(NT_STATUS_DLL_INIT_FAILED);
-	}
-
-	/* get the key here */
-	if (flags & GPO_LIST_FLAG_MACHINE) {
-		werr = gp_init_reg_ctx(mem_ctx, KEY_HKLM, REG_KEY_WRITE,
-				       get_system_token(),
-				       &reg_ctx);
-	} else {
-		werr = gp_init_reg_ctx(mem_ctx, KEY_HKCU, REG_KEY_WRITE,
-				       token,
-				       &reg_ctx);
-	}
-	if (!W_ERROR_IS_OK(werr)) {
-		gp_free_reg_ctx(reg_ctx);
-		return ADS_ERROR_NT(werror_to_ntstatus(werr));
-	}
-
-	root_key = reg_ctx->curr_key;
-
-	for (gp_ext = gp_ext_list; gp_ext; gp_ext = gp_ext->next) {
-
-		const char *guid_str = NULL;
-
-		guid_str = GUID_string(mem_ctx, gp_ext->guid);
-		if (!guid_str) {
-			status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
-			goto done;
-		}
-
-		if (extensions_guid_filter &&
-		    (!strequal(guid_str, extensions_guid_filter)))  {
-			continue;
-		}
-
-		DEBUG(0,("-------------------------------------------------\n"));
-		DEBUG(0,("gpo_process_gpo_list: processing ext: %s {%s}\n",
-			gp_ext->name, guid_str));
-
-
-		status = gpo_process_gpo_list_by_ext(ads, mem_ctx, token,
-						     root_key, gpo_list,
-						     guid_str, flags);
-		if (!ADS_ERR_OK(status)) {
-			goto done;
-		}
-	}
-
- done:
-	gp_free_reg_ctx(reg_ctx);
-	TALLOC_FREE(root_key);
-	free_gp_extensions();
-
-	return status;
-}
-
-
-/****************************************************************
  check wether the version number in a GROUP_POLICY_OBJECT match those of the
  locally stored version. If not, fetch the required policy via CIFS
 ****************************************************************/
@@ -664,8 +579,7 @@
 					share, "A:",
 					ads->auth.user_name, NULL,
 					ads->auth.password,
-					CLI_FULL_CONNECTION_USE_KERBEROS |
-					CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS,
+					CLI_FULL_CONNECTION_USE_KERBEROS,
 					Undefined, NULL);
 			if (!NT_STATUS_IS_OK(result)) {
 				DEBUG(10,("check_refresh_gpo: "
@@ -707,7 +621,6 @@
 		gpo->version,
 		GPO_VERSION_USER(gpo->version),
 		GPO_VERSION_MACHINE(gpo->version)));
-	DEBUGADD(10,("LDAP GPO link:\t\t%s\n", gpo->link));
 
 	result = NT_STATUS_OK;
 
@@ -755,51 +668,6 @@
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS gpo_get_unix_path(TALLOC_CTX *mem_ctx,
-			   struct GROUP_POLICY_OBJECT *gpo,
-			   char **unix_path)
-{
-	char *server, *share, *nt_path;
-	return gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
-				       &server, &share, &nt_path, unix_path);
-}
-
-/****************************************************************
-****************************************************************/
-
-char *gpo_flag_str(uint32_t flags)
-{
-	fstring str = "";
-
-	if (flags == 0) {
-		return NULL;
-	}
-
-	if (flags & GPO_INFO_FLAG_SLOWLINK)
-		fstrcat(str, "GPO_INFO_FLAG_SLOWLINK ");
-	if (flags & GPO_INFO_FLAG_VERBOSE)
-		fstrcat(str, "GPO_INFO_FLAG_VERBOSE ");
-	if (flags & GPO_INFO_FLAG_SAFEMODE_BOOT)
-		fstrcat(str, "GPO_INFO_FLAG_SAFEMODE_BOOT ");
-	if (flags & GPO_INFO_FLAG_NOCHANGES)
-		fstrcat(str, "GPO_INFO_FLAG_NOCHANGES ");
-	if (flags & GPO_INFO_FLAG_MACHINE)
-		fstrcat(str, "GPO_INFO_FLAG_MACHINE ");
-	if (flags & GPO_INFO_FLAG_LOGRSOP_TRANSITION)
-		fstrcat(str, "GPO_INFO_FLAG_LOGRSOP_TRANSITION ");
-	if (flags & GPO_INFO_FLAG_LINKTRANSITION)
-		fstrcat(str, "GPO_INFO_FLAG_LINKTRANSITION ");
-	if (flags & GPO_INFO_FLAG_FORCED_REFRESH)
-		fstrcat(str, "GPO_INFO_FLAG_FORCED_REFRESH ");
-	if (flags & GPO_INFO_FLAG_BACKGROUND)
-		fstrcat(str, "GPO_INFO_FLAG_BACKGROUND ");
-
-	return SMB_STRDUP(str);
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS gp_find_file(TALLOC_CTX *mem_ctx,
 		      uint32_t flags,
 		      const char *filename,
@@ -825,11 +693,8 @@
 		return NT_STATUS_OK;
 	}
 
-	path = talloc_strdup_upper(mem_ctx, path);
-	NT_STATUS_HAVE_NO_MEMORY(path);
-
-	tmp = talloc_asprintf(mem_ctx, "%s/%s/%s", filename,
-			      path, suffix);
+	tmp = talloc_asprintf_strupper_m(mem_ctx, "%s/%s/%s", filename, path,
+					 suffix);
 	NT_STATUS_HAVE_NO_MEMORY(tmp);
 
 	if (sys_stat(tmp, &sbuf) == 0) {
@@ -840,31 +705,3 @@
 	return NT_STATUS_NO_SUCH_FILE;
 }
 
-/****************************************************************
-****************************************************************/
-
-ADS_STATUS gp_get_machine_token(ADS_STRUCT *ads,
-				TALLOC_CTX *mem_ctx,
-				const char *dn,
-				struct nt_user_token **token)
-{
-	struct nt_user_token *ad_token = NULL;
-	ADS_STATUS status;
-	NTSTATUS ntstatus;
-
-#ifndef HAVE_ADS
-	return ADS_ERROR_NT(NT_STATUS_NOT_SUPPORTED);
-#endif
-	status = ads_get_sid_token(ads, mem_ctx, dn, &ad_token);
-	if (!ADS_ERR_OK(status)) {
-		return status;
-	}
-
-	ntstatus = merge_nt_token(mem_ctx, ad_token, get_system_token(),
-				  token);
-	if (!NT_STATUS_IS_OK(ntstatus)) {
-		return ADS_ERROR_NT(ntstatus);
-	}
-
-	return ADS_SUCCESS;
-}

Modified: branches/samba/upstream/source/libnet/libnet.h
===================================================================
--- branches/samba/upstream/source/libnet/libnet.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,9 +20,6 @@
 #ifndef __LIBNET_H__
 #define __LIBNET_H__
 
-#include "libnet/libnet_keytab.h"
-#include "libnet/libnet_samsync.h"
-#include "libnet/libnet_dssync.h"
 #include "librpc/gen_ndr/libnet_join.h"
 #include "libnet/libnet_proto.h"
 

Deleted: branches/samba/upstream/source/libnet/libnet_dssync.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_dssync.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_dssync.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,720 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-
-   Copyright (C) Stefan (metze) Metzmacher 2005
-   Copyright (C) Guenther Deschner 2008
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#include "includes.h"
-#include "libnet/libnet.h"
-
-/****************************************************************
-****************************************************************/
-
-static int libnet_dssync_free_context(struct dssync_context *ctx)
-{
-	if (!ctx) {
-		return 0;
-	}
-
-	if (is_valid_policy_hnd(&ctx->bind_handle) && ctx->cli) {
-		rpccli_drsuapi_DsUnbind(ctx->cli, ctx, &ctx->bind_handle, NULL);
-	}
-
-	return 0;
-}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS libnet_dssync_init_context(TALLOC_CTX *mem_ctx,
-				    struct dssync_context **ctx_p)
-{
-	struct dssync_context *ctx;
-
-	ctx = TALLOC_ZERO_P(mem_ctx, struct dssync_context);
-	NT_STATUS_HAVE_NO_MEMORY(ctx);
-
-	talloc_set_destructor(ctx, libnet_dssync_free_context);
-	ctx->clean_old_entries = false;
-
-	*ctx_p = ctx;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static DATA_BLOB *decrypt_attr_val(TALLOC_CTX *mem_ctx,
-				   DATA_BLOB *session_key,
-				   uint32_t rid,
-				   enum drsuapi_DsAttributeId id,
-				   DATA_BLOB *raw_data)
-{
-	bool rcrypt = false;
-	DATA_BLOB out_data;
-
-	ZERO_STRUCT(out_data);
-
-	switch (id) {
-		case DRSUAPI_ATTRIBUTE_dBCSPwd:
-		case DRSUAPI_ATTRIBUTE_unicodePwd:
-		case DRSUAPI_ATTRIBUTE_ntPwdHistory:
-		case DRSUAPI_ATTRIBUTE_lmPwdHistory:
-			rcrypt	= true;
-			break;
-		case DRSUAPI_ATTRIBUTE_supplementalCredentials:
-		case DRSUAPI_ATTRIBUTE_priorValue:
-		case DRSUAPI_ATTRIBUTE_currentValue:
-		case DRSUAPI_ATTRIBUTE_trustAuthOutgoing:
-		case DRSUAPI_ATTRIBUTE_trustAuthIncoming:
-		case DRSUAPI_ATTRIBUTE_initialAuthOutgoing:
-		case DRSUAPI_ATTRIBUTE_initialAuthIncoming:
-			break;
-		default:
-			return raw_data;
-	}
-
-	out_data = decrypt_drsuapi_blob(mem_ctx, session_key, rcrypt,
-					  rid, raw_data);
-
-	if (out_data.length) {
-		return (DATA_BLOB *)talloc_memdup(mem_ctx, &out_data, sizeof(DATA_BLOB));
-	}
-
-	return raw_data;
-}
-
-/****************************************************************
-****************************************************************/
-
-static void parse_obj_identifier(struct drsuapi_DsReplicaObjectIdentifier *id,
-				 uint32_t *rid)
-{
-	if (!id || !rid) {
-		return;
-	}
-
-	*rid = 0;
-
-	if (id->sid.num_auths > 0) {
-		*rid = id->sid.sub_auths[id->sid.num_auths - 1];
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
-static void parse_obj_attribute(TALLOC_CTX *mem_ctx,
-				DATA_BLOB *session_key,
-				uint32_t rid,
-				struct drsuapi_DsReplicaAttribute *attr)
-{
-	int i = 0;
-
-	for (i=0; i<attr->value_ctr.num_values; i++) {
-
-		DATA_BLOB *plain_data = NULL;
-
-		plain_data = decrypt_attr_val(mem_ctx,
-					      session_key,
-					      rid,
-					      attr->attid,
-					      attr->value_ctr.values[i].blob);
-
-		attr->value_ctr.values[i].blob = plain_data;
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
-static void libnet_dssync_decrypt_attributes(TALLOC_CTX *mem_ctx,
-					     DATA_BLOB *session_key,
-					     struct drsuapi_DsReplicaObjectListItemEx *cur)
-{
-	for (; cur; cur = cur->next_object) {
-
-		uint32_t i;
-		uint32_t rid = 0;
-
-		parse_obj_identifier(cur->object.identifier, &rid);
-
-		for (i=0; i < cur->object.attribute_ctr.num_attributes; i++) {
-
-			struct drsuapi_DsReplicaAttribute *attr;
-
-			attr = &cur->object.attribute_ctr.attributes[i];
-
-			if (attr->value_ctr.num_values < 1) {
-				continue;
-			}
-
-			if (!attr->value_ctr.values[0].blob) {
-				continue;
-			}
-
-			parse_obj_attribute(mem_ctx,
-					    session_key,
-					    rid,
-					    attr);
-		}
-	}
-}
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnet_dssync_bind(TALLOC_CTX *mem_ctx,
-				   struct dssync_context *ctx)
-{
-	NTSTATUS status;
-	WERROR werr;
-
-	struct GUID bind_guid;
-	struct drsuapi_DsBindInfoCtr bind_info;
-	struct drsuapi_DsBindInfo28 info28;
-
-	ZERO_STRUCT(info28);
-
-	GUID_from_string(DRSUAPI_DS_BIND_GUID, &bind_guid);
-
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_BASE;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT;
-	info28.site_guid		= GUID_zero();
-	info28.pid			= 508;
-	info28.repl_epoch		= 0;
-
-	bind_info.length = 28;
-	bind_info.info.info28 = info28;
-
-	status = rpccli_drsuapi_DsBind(ctx->cli, mem_ctx,
-				       &bind_guid,
-				       &bind_info,
-				       &ctx->bind_handle,
-				       &werr);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (!W_ERROR_IS_OK(werr)) {
-		return werror_to_ntstatus(werr);
-	}
-
-	ZERO_STRUCT(ctx->remote_info28);
-	switch (bind_info.length) {
-	case 24: {
-		struct drsuapi_DsBindInfo24 *info24;
-		info24 = &bind_info.info.info24;
-		ctx->remote_info28.site_guid		= info24->site_guid;
-		ctx->remote_info28.supported_extensions	= info24->supported_extensions;
-		ctx->remote_info28.pid			= info24->pid;
-		ctx->remote_info28.repl_epoch		= 0;
-		break;
-	}
-	case 28:
-		ctx->remote_info28 = bind_info.info.info28;
-		break;
-	case 48: {
-		struct drsuapi_DsBindInfo48 *info48;
-		info48 = &bind_info.info.info48;
-		ctx->remote_info28.site_guid		= info48->site_guid;
-		ctx->remote_info28.supported_extensions	= info48->supported_extensions;
-		ctx->remote_info28.pid			= info48->pid;
-		ctx->remote_info28.repl_epoch		= info48->repl_epoch;
-		break;
-	}
-	default:
-		DEBUG(1, ("Warning: invalid info length in bind info: %d\n",
-			  bind_info.length));
-		break;
-	}
-
-	return status;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnet_dssync_lookup_nc(TALLOC_CTX *mem_ctx,
-					struct dssync_context *ctx)
-{
-	NTSTATUS status;
-	WERROR werr;
-	int32_t level = 1;
-	union drsuapi_DsNameRequest req;
-	int32_t level_out;
-	struct drsuapi_DsNameString names[1];
-	union drsuapi_DsNameCtr ctr;
-
-	names[0].str = talloc_asprintf(mem_ctx, "%s\\", ctx->domain_name);
-	NT_STATUS_HAVE_NO_MEMORY(names[0].str);
-
-	req.req1.codepage	= 1252; /* german */
-	req.req1.language	= 0x00000407; /* german */
-	req.req1.count		= 1;
-	req.req1.names		= names;
-	req.req1.format_flags	= DRSUAPI_DS_NAME_FLAG_NO_FLAGS;
-	req.req1.format_offered	= DRSUAPI_DS_NAME_FORMAT_UKNOWN;
-	req.req1.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779;
-
-	status = rpccli_drsuapi_DsCrackNames(ctx->cli, mem_ctx,
-					     &ctx->bind_handle,
-					     level,
-					     &req,
-					     &level_out,
-					     &ctr,
-					     &werr);
-	if (!NT_STATUS_IS_OK(status)) {
-		ctx->error_message = talloc_asprintf(ctx,
-			"Failed to lookup DN for domain name: %s",
-			get_friendly_werror_msg(werr));
-		return status;
-	}
-
-	if (!W_ERROR_IS_OK(werr)) {
-		return werror_to_ntstatus(werr);
-	}
-
-	if (ctr.ctr1->count != 1) {
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	if (ctr.ctr1->array[0].status != DRSUAPI_DS_NAME_STATUS_OK) {
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	ctx->nc_dn = talloc_strdup(mem_ctx, ctr.ctr1->array[0].result_name);
-	NT_STATUS_HAVE_NO_MEMORY(ctx->nc_dn);
-
-	if (!ctx->dns_domain_name) {
-		ctx->dns_domain_name = talloc_strdup_upper(mem_ctx,
-			ctr.ctr1->array[0].dns_domain_name);
-		NT_STATUS_HAVE_NO_MEMORY(ctx->dns_domain_name);
-	}
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnet_dssync_init(TALLOC_CTX *mem_ctx,
-				   struct dssync_context *ctx)
-{
-	NTSTATUS status;
-
-	status = libnet_dssync_bind(mem_ctx, ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (!ctx->nc_dn) {
-		status = libnet_dssync_lookup_nc(mem_ctx, ctx);
-	}
-
-	return status;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS libnet_dssync_build_request(TALLOC_CTX *mem_ctx,
-					    struct dssync_context *ctx,
-					    const char *dn,
-					    struct replUpToDateVectorBlob *utdv,
-					    int32_t *plevel,
-					    union drsuapi_DsGetNCChangesRequest *preq)
-{
-	NTSTATUS status;
-	uint32_t count;
-	int32_t level;
-	union drsuapi_DsGetNCChangesRequest req;
-	struct dom_sid null_sid;
-	enum drsuapi_DsExtendedOperation extended_op;
-	struct drsuapi_DsReplicaObjectIdentifier *nc = NULL;
-	struct drsuapi_DsReplicaCursorCtrEx *cursors = NULL;
-
-	uint32_t replica_flags	= DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED;
-
-	ZERO_STRUCT(null_sid);
-	ZERO_STRUCT(req);
-
-	if (ctx->remote_info28.supported_extensions
-	    & DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8)
-	{
-		level = 8;
-	} else {
-		level = 5;
-	}
-
-	nc = TALLOC_ZERO_P(mem_ctx, struct drsuapi_DsReplicaObjectIdentifier);
-	if (!nc) {
-		status = NT_STATUS_NO_MEMORY;
-		goto fail;
-	}
-	nc->dn = dn;
-	nc->guid = GUID_zero();
-	nc->sid = null_sid;
-
-	if (!ctx->single_object_replication &&
-	    !ctx->force_full_replication && utdv)
-	{
-		cursors = TALLOC_ZERO_P(mem_ctx,
-					 struct drsuapi_DsReplicaCursorCtrEx);
-		if (!cursors) {
-			status = NT_STATUS_NO_MEMORY;
-			goto fail;
-		}
-
-		switch (utdv->version) {
-		case 1:
-			cursors->count = utdv->ctr.ctr1.count;
-			cursors->cursors = utdv->ctr.ctr1.cursors;
-			break;
-		case 2:
-			cursors->count = utdv->ctr.ctr2.count;
-			cursors->cursors = talloc_array(cursors,
-						struct drsuapi_DsReplicaCursor,
-						cursors->count);
-			if (!cursors->cursors) {
-				status = NT_STATUS_NO_MEMORY;
-				goto fail;
-			}
-			for (count = 0; count < cursors->count; count++) {
-				cursors->cursors[count].source_dsa_invocation_id =
-					utdv->ctr.ctr2.cursors[count].source_dsa_invocation_id;
-				cursors->cursors[count].highest_usn =
-					utdv->ctr.ctr2.cursors[count].highest_usn;
-			}
-			break;
-		}
-	}
-
-	if (ctx->single_object_replication) {
-		extended_op = DRSUAPI_EXOP_REPL_OBJ;
-	} else {
-		extended_op = DRSUAPI_EXOP_NONE;
-	}
-
-	if (level == 8) {
-		req.req8.naming_context		= nc;
-		req.req8.replica_flags		= replica_flags;
-		req.req8.max_object_count	= 402;
-		req.req8.max_ndr_size		= 402116;
-		req.req8.uptodateness_vector	= cursors;
-		req.req8.extended_op		= extended_op;
-	} else if (level == 5) {
-		req.req5.naming_context		= nc;
-		req.req5.replica_flags		= replica_flags;
-		req.req5.max_object_count	= 402;
-		req.req5.max_ndr_size		= 402116;
-		req.req5.uptodateness_vector	= cursors;
-		req.req5.extended_op		= extended_op;
-	} else {
-		status = NT_STATUS_INVALID_PARAMETER;
-		goto fail;
-	}
-
-	if (plevel) {
-		*plevel = level;
-	}
-
-	if (preq) {
-		*preq = req;
-	}
-
-	return NT_STATUS_OK;
-
-fail:
-	TALLOC_FREE(nc);
-	TALLOC_FREE(cursors);
-	return status;
-}
-
-static NTSTATUS libnet_dssync_getncchanges(TALLOC_CTX *mem_ctx,
-					   struct dssync_context *ctx,
-					   int32_t level,
-					   union drsuapi_DsGetNCChangesRequest *req,
-					   struct replUpToDateVectorBlob **pnew_utdv)
-{
-	NTSTATUS status;
-	WERROR werr;
-	union drsuapi_DsGetNCChangesCtr ctr;
-	struct drsuapi_DsGetNCChangesCtr1 *ctr1 = NULL;
-	struct drsuapi_DsGetNCChangesCtr6 *ctr6 = NULL;
-	struct replUpToDateVectorBlob *new_utdv = NULL;
-	int32_t level_out = 0;
-	int32_t out_level = 0;
-	int y;
-	bool last_query;
-
-	if (!ctx->single_object_replication) {
-		new_utdv = TALLOC_ZERO_P(mem_ctx, struct replUpToDateVectorBlob);
-		if (!new_utdv) {
-			status = NT_STATUS_NO_MEMORY;
-			goto out;
-		}
-	}
-
-	for (y=0, last_query = false; !last_query; y++) {
-		struct drsuapi_DsReplicaObjectListItemEx *first_object = NULL;
-		struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr = NULL;
-
-		if (level == 8) {
-			DEBUG(1,("start[%d] tmp_higest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)req->req8.highwatermark.tmp_highest_usn,
-				(long long)req->req8.highwatermark.highest_usn));
-		} else if (level == 5) {
-			DEBUG(1,("start[%d] tmp_higest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)req->req5.highwatermark.tmp_highest_usn,
-				(long long)req->req5.highwatermark.highest_usn));
-		}
-
-		status = rpccli_drsuapi_DsGetNCChanges(ctx->cli, mem_ctx,
-						       &ctx->bind_handle,
-						       level,
-						       req,
-						       &level_out,
-						       &ctr,
-						       &werr);
-		if (!NT_STATUS_IS_OK(status)) {
-			ctx->error_message = talloc_asprintf(ctx,
-				"Failed to get NC Changes: %s",
-				get_friendly_werror_msg(werr));
-			goto out;
-		}
-
-		if (!W_ERROR_IS_OK(werr)) {
-			status = werror_to_ntstatus(werr);
-			goto out;
-		}
-
-		if (level_out == 1) {
-			out_level = 1;
-			ctr1 = &ctr.ctr1;
-		} else if (level_out == 2) {
-			out_level = 1;
-			ctr1 = ctr.ctr2.ctr.mszip1.ctr1;
-		} else if (level_out == 6) {
-			out_level = 6;
-			ctr6 = &ctr.ctr6;
-		} else if (level_out == 7
-			   && ctr.ctr7.level == 6
-			   && ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP) {
-			out_level = 6;
-			ctr6 = ctr.ctr7.ctr.mszip6.ctr6;
-		}
-
-		if (out_level == 1) {
-			DEBUG(1,("end[%d] tmp_highest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)ctr1->new_highwatermark.tmp_highest_usn,
-				(long long)ctr1->new_highwatermark.highest_usn));
-
-			first_object = ctr1->first_object;
-			mapping_ctr = &ctr1->mapping_ctr;
-
-			if (ctr1->more_data) {
-				req->req5.highwatermark = ctr1->new_highwatermark;
-			} else {
-				last_query = true;
-				if (ctr1->uptodateness_vector &&
-				    !ctx->single_object_replication)
-				{
-					new_utdv->version = 1;
-					new_utdv->ctr.ctr1.count =
-						ctr1->uptodateness_vector->count;
-					new_utdv->ctr.ctr1.cursors =
-						ctr1->uptodateness_vector->cursors;
-				}
-			}
-		} else if (out_level == 6) {
-			DEBUG(1,("end[%d] tmp_highest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)ctr6->new_highwatermark.tmp_highest_usn,
-				(long long)ctr6->new_highwatermark.highest_usn));
-
-			first_object = ctr6->first_object;
-			mapping_ctr = &ctr6->mapping_ctr;
-
-			if (ctr6->more_data) {
-				req->req8.highwatermark = ctr6->new_highwatermark;
-			} else {
-				last_query = true;
-				if (ctr6->uptodateness_vector &&
-				    !ctx->single_object_replication)
-				{
-					new_utdv->version = 2;
-					new_utdv->ctr.ctr2.count =
-						ctr6->uptodateness_vector->count;
-					new_utdv->ctr.ctr2.cursors =
-						ctr6->uptodateness_vector->cursors;
-				}
-			}
-		}
-
-		status = cli_get_session_key(mem_ctx, ctx->cli, &ctx->session_key);
-		if (!NT_STATUS_IS_OK(status)) {
-			ctx->error_message = talloc_asprintf(ctx,
-				"Failed to get Session Key: %s",
-				nt_errstr(status));
-			goto out;
-		}
-
-		libnet_dssync_decrypt_attributes(mem_ctx,
-						 &ctx->session_key,
-						 first_object);
-
-		if (ctx->ops->process_objects) {
-			status = ctx->ops->process_objects(ctx, mem_ctx,
-							   first_object,
-							   mapping_ctr);
-			if (!NT_STATUS_IS_OK(status)) {
-				ctx->error_message = talloc_asprintf(ctx,
-					"Failed to call processing function: %s",
-					nt_errstr(status));
-				goto out;
-			}
-		}
-	}
-
-	*pnew_utdv = new_utdv;
-
-out:
-	return status;
-}
-
-static NTSTATUS libnet_dssync_process(TALLOC_CTX *mem_ctx,
-				      struct dssync_context *ctx)
-{
-	NTSTATUS status;
-
-	int32_t level = 0;
-	union drsuapi_DsGetNCChangesRequest req;
-	struct replUpToDateVectorBlob *old_utdv = NULL;
-	struct replUpToDateVectorBlob *pnew_utdv = NULL;
-	const char **dns;
-	uint32_t dn_count;
-	uint32_t count;
-
-	status = ctx->ops->startup(ctx, mem_ctx, &old_utdv);
-	if (!NT_STATUS_IS_OK(status)) {
-		ctx->error_message = talloc_asprintf(ctx,
-			"Failed to call startup operation: %s",
-			nt_errstr(status));
-		goto out;
-	}
-
-	if (ctx->single_object_replication && ctx->object_dns) {
-		dns = ctx->object_dns;
-		dn_count = ctx->object_count;
-	} else {
-		dns = &ctx->nc_dn;
-		dn_count = 1;
-	}
-
-	for (count=0; count < dn_count; count++) {
-		status = libnet_dssync_build_request(mem_ctx, ctx,
-						     dns[count],
-						     old_utdv, &level,
-						     &req);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto out;
-		}
-
-		status = libnet_dssync_getncchanges(mem_ctx, ctx, level, &req,
-						    &pnew_utdv);
-		if (!NT_STATUS_IS_OK(status)) {
-			ctx->error_message = talloc_asprintf(ctx,
-				"Failed to call DsGetNCCHanges: %s",
-				nt_errstr(status));
-			goto out;
-		}
-	}
-
-	status = ctx->ops->finish(ctx, mem_ctx, pnew_utdv);
-	if (!NT_STATUS_IS_OK(status)) {
-		ctx->error_message = talloc_asprintf(ctx,
-			"Failed to call finishing operation: %s",
-			nt_errstr(status));
-		goto out;
-	}
-
- out:
-	return status;
-}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS libnet_dssync(TALLOC_CTX *mem_ctx,
-		       struct dssync_context *ctx)
-{
-	NTSTATUS status;
-	TALLOC_CTX *tmp_ctx;
-
-	tmp_ctx = talloc_new(mem_ctx);
-	if (!tmp_ctx) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	status = libnet_dssync_init(tmp_ctx, ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto out;
-	}
-
-	status = libnet_dssync_process(tmp_ctx, ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto out;
-	}
-
- out:
-	TALLOC_FREE(tmp_ctx);
-	return status;
-}
-

Deleted: branches/samba/upstream/source/libnet/libnet_dssync.h
===================================================================
--- branches/samba/upstream/source/libnet/libnet_dssync.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_dssync.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,57 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  libnet Support
- *  Copyright (C) Guenther Deschner 2008
- *  Copyright (C) Michael Adam 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-struct dssync_context;
-
-struct dssync_ops {
-	NTSTATUS (*startup)(struct dssync_context *ctx, TALLOC_CTX *mem_ctx,
-			    struct replUpToDateVectorBlob **pold_utdv);
-	NTSTATUS (*process_objects)(struct dssync_context *ctx,
-				    TALLOC_CTX *mem_ctx,
-				    struct drsuapi_DsReplicaObjectListItemEx *objects,
-				    struct drsuapi_DsReplicaOIDMapping_Ctr *mappings);
-	NTSTATUS (*finish)(struct dssync_context *ctx, TALLOC_CTX *mem_ctx,
-			   struct replUpToDateVectorBlob *new_utdv);
-};
-
-struct dssync_context {
-	const char *domain_name;
-	const char *dns_domain_name;
-	struct rpc_pipe_client *cli;
-	const char *nc_dn;
-	bool single_object_replication;
-	bool force_full_replication;
-	bool clean_old_entries;
-	uint32_t object_count;
-	const char **object_dns;
-	struct policy_handle bind_handle;
-	DATA_BLOB session_key;
-	const char *output_filename;
-	struct drsuapi_DsBindInfo28 remote_info28;
-
-	void *private_data;
-
-	const struct dssync_ops *ops;
-
-	char *result_message;
-	char *error_message;
-};
-
-extern const struct dssync_ops libnet_dssync_keytab_ops;

Deleted: branches/samba/upstream/source/libnet/libnet_dssync_keytab.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_dssync_keytab.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_dssync_keytab.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,641 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-
-   Copyright (C) Guenther Deschner <gd at samba.org> 2008
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "libnet/libnet.h"
-#include "librpc/gen_ndr/ndr_drsblobs.h"
-
-#if defined(HAVE_ADS) && defined(ENCTYPE_ARCFOUR_HMAC)
-
-/**
- * Internal helper function to add data to the list
- * of keytab entries. It builds the prefix from the input.
- */
-static NTSTATUS add_to_keytab_entries(TALLOC_CTX *mem_ctx,
-				      struct libnet_keytab_context *ctx,
-				      uint32_t kvno,
-				      const char *name,
-				      const char *prefix,
-				      const krb5_enctype enctype,
-				      DATA_BLOB blob)
-{
-	struct libnet_keytab_entry entry;
-
-	entry.kvno = kvno;
-	entry.name = talloc_strdup(mem_ctx, name);
-	entry.principal = talloc_asprintf(mem_ctx, "%s%s%s@%s",
-					  prefix ? prefix : "",
-					  prefix ? "/" : "",
-					  name, ctx->dns_domain_name);
-	entry.enctype = enctype;
-	entry.password = blob;
-	NT_STATUS_HAVE_NO_MEMORY(entry.name);
-	NT_STATUS_HAVE_NO_MEMORY(entry.principal);
-	NT_STATUS_HAVE_NO_MEMORY(entry.password.data);
-
-	ADD_TO_ARRAY(mem_ctx, struct libnet_keytab_entry, entry,
-		     &ctx->entries, &ctx->count);
-	NT_STATUS_HAVE_NO_MEMORY(ctx->entries);
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS keytab_startup(struct dssync_context *ctx, TALLOC_CTX *mem_ctx,
-			       struct replUpToDateVectorBlob **pold_utdv)
-{
-	krb5_error_code ret = 0;
-	struct libnet_keytab_context *keytab_ctx;
-	struct libnet_keytab_entry *entry;
-	struct replUpToDateVectorBlob *old_utdv = NULL;
-	char *principal;
-
-	ret = libnet_keytab_init(mem_ctx, ctx->output_filename, &keytab_ctx);
-	if (ret) {
-		return krb5_to_nt_status(ret);
-	}
-
-	keytab_ctx->dns_domain_name = ctx->dns_domain_name;
-	keytab_ctx->clean_old_entries = ctx->clean_old_entries;
-	ctx->private_data = keytab_ctx;
-
-	principal = talloc_asprintf(mem_ctx, "UTDV/%s@%s",
-				    ctx->nc_dn, ctx->dns_domain_name);
-	NT_STATUS_HAVE_NO_MEMORY(principal);
-
-	entry = libnet_keytab_search(keytab_ctx, principal, 0, ENCTYPE_NULL,
-				     mem_ctx);
-	if (entry) {
-		enum ndr_err_code ndr_err;
-		old_utdv = talloc(mem_ctx, struct replUpToDateVectorBlob);
-
-		ndr_err = ndr_pull_struct_blob(&entry->password, old_utdv,
-				old_utdv,
-				(ndr_pull_flags_fn_t)ndr_pull_replUpToDateVectorBlob);
-		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-			NTSTATUS status = ndr_map_error2ntstatus(ndr_err);
-			ctx->error_message = talloc_asprintf(ctx,
-					"Failed to pull UpToDateVector: %s",
-					nt_errstr(status));
-			return status;
-		}
-
-		if (DEBUGLEVEL >= 10) {
-			NDR_PRINT_DEBUG(replUpToDateVectorBlob, old_utdv);
-		}
-	}
-
-	if (pold_utdv) {
-		*pold_utdv = old_utdv;
-	}
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS keytab_finish(struct dssync_context *ctx, TALLOC_CTX *mem_ctx,
-			      struct replUpToDateVectorBlob *new_utdv)
-{
-	NTSTATUS status = NT_STATUS_OK;
-	krb5_error_code ret = 0;
-	struct libnet_keytab_context *keytab_ctx =
-		(struct libnet_keytab_context *)ctx->private_data;
-
-	if (new_utdv) {
-		enum ndr_err_code ndr_err;
-		DATA_BLOB blob;
-
-		if (DEBUGLEVEL >= 10) {
-			NDR_PRINT_DEBUG(replUpToDateVectorBlob, new_utdv);
-		}
-
-		ndr_err = ndr_push_struct_blob(&blob, mem_ctx, new_utdv,
-				(ndr_push_flags_fn_t)ndr_push_replUpToDateVectorBlob);
-		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-			status = ndr_map_error2ntstatus(ndr_err);
-			ctx->error_message = talloc_asprintf(ctx,
-					"Failed to push UpToDateVector: %s",
-					nt_errstr(status));
-			goto done;
-		}
-
-		status = add_to_keytab_entries(mem_ctx, keytab_ctx, 0,
-					       ctx->nc_dn, "UTDV",
-					       ENCTYPE_NULL,
-					       blob);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto done;
-		}
-	}
-
-	ret = libnet_keytab_add(keytab_ctx);
-	if (ret) {
-		status = krb5_to_nt_status(ret);
-		ctx->error_message = talloc_asprintf(ctx,
-			"Failed to add entries to keytab %s: %s",
-			keytab_ctx->keytab_name, error_message(ret));
-		goto done;
-	}
-
-	ctx->result_message = talloc_asprintf(ctx,
-		"Vampired %d accounts to keytab %s",
-		keytab_ctx->count,
-		keytab_ctx->keytab_name);
-
-done:
-	TALLOC_FREE(keytab_ctx);
-	return status;
-}
-
-/****************************************************************
-****************************************************************/
-
-static  NTSTATUS parse_supplemental_credentials(TALLOC_CTX *mem_ctx,
-			const DATA_BLOB *blob,
-			struct package_PrimaryKerberosCtr3 **pkb3,
-			struct package_PrimaryKerberosCtr4 **pkb4)
-{
-	NTSTATUS status;
-	enum ndr_err_code ndr_err;
-	struct supplementalCredentialsBlob scb;
-	struct supplementalCredentialsPackage *scpk = NULL;
-	DATA_BLOB scpk_blob;
-	struct package_PrimaryKerberosBlob *pkb;
-	bool newer_keys = false;
-	uint32_t j;
-
-	ndr_err = ndr_pull_struct_blob_all(blob, mem_ctx, &scb,
-			(ndr_pull_flags_fn_t)ndr_pull_supplementalCredentialsBlob);
-	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-		status = ndr_map_error2ntstatus(ndr_err);
-		goto done;
-	}
-	if (scb.sub.signature !=
-	    SUPPLEMENTAL_CREDENTIALS_SIGNATURE)
-	{
-		if (DEBUGLEVEL >= 10) {
-			NDR_PRINT_DEBUG(supplementalCredentialsBlob, &scb);
-		}
-		status = NT_STATUS_INVALID_PARAMETER;
-		goto done;
-	}
-	for (j=0; j < scb.sub.num_packages; j++) {
-		if (strcmp("Primary:Kerberos-Newer-Keys",
-		    scb.sub.packages[j].name) == 0)
-		{
-			scpk = &scb.sub.packages[j];
-			if (!scpk->data || !scpk->data[0]) {
-				scpk = NULL;
-				continue;
-			}
-			newer_keys = true;
-			break;
-		} else  if (strcmp("Primary:Kerberos",
-				   scb.sub.packages[j].name) == 0)
-		{
-			/*
-			 * grab this but don't break here:
-			 * there might still be newer-keys ...
-			 */
-			scpk = &scb.sub.packages[j];
-			if (!scpk->data || !scpk->data[0]) {
-				scpk = NULL;
-			}
-		}
-	}
-
-	if (!scpk) {
-		/* no data */
-		status = NT_STATUS_OK;
-		goto done;
-	}
-
-	scpk_blob = strhex_to_data_blob(mem_ctx, scpk->data);
-	if (!scpk_blob.data) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	pkb = TALLOC_ZERO_P(mem_ctx, struct package_PrimaryKerberosBlob);
-	if (!pkb) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-	ndr_err = ndr_pull_struct_blob(&scpk_blob, mem_ctx, pkb,
-			(ndr_pull_flags_fn_t)ndr_pull_package_PrimaryKerberosBlob);
-	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-		status = ndr_map_error2ntstatus(ndr_err);
-		goto done;
-	}
-
-	if (!newer_keys && pkb->version != 3) {
-		status = NT_STATUS_INVALID_PARAMETER;
-		goto done;
-	}
-
-	if (newer_keys && pkb->version != 4) {
-		status = NT_STATUS_INVALID_PARAMETER;
-		goto done;
-	}
-
-	if (pkb->version == 4 && pkb4) {
-		*pkb4 = &pkb->ctr.ctr4;
-	} else if (pkb->version == 3 && pkb3) {
-		*pkb3 = &pkb->ctr.ctr3;
-	}
-
-	status = NT_STATUS_OK;
-
-done:
-	return status;
-}
-
-static NTSTATUS parse_object(TALLOC_CTX *mem_ctx,
-			     struct libnet_keytab_context *ctx,
-			     struct drsuapi_DsReplicaObjectListItemEx *cur)
-{
-	NTSTATUS status = NT_STATUS_OK;
-	uchar nt_passwd[16];
-	DATA_BLOB *blob;
-	int i = 0;
-	struct drsuapi_DsReplicaAttribute *attr;
-	bool got_pwd = false;
-
-	struct package_PrimaryKerberosCtr3 *pkb3 = NULL;
-	struct package_PrimaryKerberosCtr4 *pkb4 = NULL;
-
-	char *object_dn = NULL;
-	char *upn = NULL;
-	char **spn = NULL;
-	uint32_t num_spns = 0;
-	char *name = NULL;
-	uint32_t kvno = 0;
-	uint32_t uacc = 0;
-	uint32_t sam_type = 0;
-
-	uint32_t pwd_history_len = 0;
-	uint8_t *pwd_history = NULL;
-
-	ZERO_STRUCT(nt_passwd);
-
-	object_dn = talloc_strdup(mem_ctx, cur->object.identifier->dn);
-	if (!object_dn) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	DEBUG(3, ("parsing object '%s'\n", object_dn));
-
-	for (i=0; i < cur->object.attribute_ctr.num_attributes; i++) {
-
-		attr = &cur->object.attribute_ctr.attributes[i];
-
-		if (attr->attid == DRSUAPI_ATTRIBUTE_servicePrincipalName) {
-			uint32_t count;
-			num_spns = attr->value_ctr.num_values;
-			spn = TALLOC_ARRAY(mem_ctx, char *, num_spns);
-			for (count = 0; count < num_spns; count++) {
-				blob = attr->value_ctr.values[count].blob;
-				pull_string_talloc(spn, NULL, 0,
-						   &spn[count],
-						   blob->data, blob->length,
-						   STR_UNICODE);
-			}
-		}
-
-		if (attr->value_ctr.num_values != 1) {
-			continue;
-		}
-
-		if (!attr->value_ctr.values[0].blob) {
-			continue;
-		}
-
-		blob = attr->value_ctr.values[0].blob;
-
-		switch (attr->attid) {
-			case DRSUAPI_ATTRIBUTE_unicodePwd:
-
-				if (blob->length != 16) {
-					break;
-				}
-
-				memcpy(&nt_passwd, blob->data, 16);
-				got_pwd = true;
-
-				/* pick the kvno from the meta_data version,
-				 * thanks, metze, for explaining this */
-
-				if (!cur->meta_data_ctr) {
-					break;
-				}
-				if (cur->meta_data_ctr->count !=
-				    cur->object.attribute_ctr.num_attributes) {
-					break;
-				}
-				kvno = cur->meta_data_ctr->meta_data[i].version;
-				break;
-			case DRSUAPI_ATTRIBUTE_ntPwdHistory:
-				pwd_history_len = blob->length / 16;
-				pwd_history = blob->data;
-				break;
-			case DRSUAPI_ATTRIBUTE_userPrincipalName:
-				pull_string_talloc(mem_ctx, NULL, 0, &upn,
-						   blob->data, blob->length,
-						   STR_UNICODE);
-				break;
-			case DRSUAPI_ATTRIBUTE_sAMAccountName:
-				pull_string_talloc(mem_ctx, NULL, 0, &name,
-						   blob->data, blob->length,
-						   STR_UNICODE);
-				break;
-			case DRSUAPI_ATTRIBUTE_sAMAccountType:
-				sam_type = IVAL(blob->data, 0);
-				break;
-			case DRSUAPI_ATTRIBUTE_userAccountControl:
-				uacc = IVAL(blob->data, 0);
-				break;
-			case DRSUAPI_ATTRIBUTE_supplementalCredentials:
-				status = parse_supplemental_credentials(mem_ctx,
-									blob,
-									&pkb3,
-									&pkb4);
-				if (!NT_STATUS_IS_OK(status)) {
-					DEBUG(2, ("parsing of supplemental "
-						  "credentials failed: %s\n",
-						  nt_errstr(status)));
-				}
-				break;
-			default:
-				break;
-		}
-	}
-
-	if (!got_pwd) {
-		DEBUG(10, ("no password (unicodePwd) found - skipping.\n"));
-		return NT_STATUS_OK;
-	}
-
-	if (name) {
-		status = add_to_keytab_entries(mem_ctx, ctx, 0, object_dn,
-					       "SAMACCOUNTNAME",
-					       ENCTYPE_NULL,
-					       data_blob_talloc(mem_ctx, name,
-							strlen(name) + 1));
-		if (!NT_STATUS_IS_OK(status)) {
-			return status;
-		}
-	} else {
-		/* look into keytab ... */
-		struct libnet_keytab_entry *entry = NULL;
-		char *principal = NULL;
-
-		DEBUG(10, ("looking for SAMACCOUNTNAME/%s@%s in keytayb...\n",
-			   object_dn, ctx->dns_domain_name));
-
-		principal = talloc_asprintf(mem_ctx, "%s/%s@%s",
-					    "SAMACCOUNTNAME",
-					    object_dn,
-					    ctx->dns_domain_name);
-		if (!principal) {
-			DEBUG(1, ("talloc failed\n"));
-			return NT_STATUS_NO_MEMORY;
-		}
-		entry = libnet_keytab_search(ctx, principal, 0, ENCTYPE_NULL,
-					     mem_ctx);
-		if (entry) {
-			name = (char *)TALLOC_MEMDUP(mem_ctx,
-						     entry->password.data,
-						     entry->password.length);
-			if (!name) {
-				DEBUG(1, ("talloc failed!"));
-				return NT_STATUS_NO_MEMORY;
-			} else {
-				DEBUG(10, ("found name %s\n", name));
-			}
-			TALLOC_FREE(entry);
-		} else {
-			DEBUG(10, ("entry not found\n"));
-		}
-		TALLOC_FREE(principal);
-	}
-
-	if (!name) {
-		DEBUG(10, ("no name (sAMAccountName) found - skipping.\n"));
-		return NT_STATUS_OK;
-	}
-
-	DEBUG(1,("#%02d: %s:%d, ", ctx->count, name, kvno));
-	DEBUGADD(1,("sAMAccountType: 0x%08x, userAccountControl: 0x%08x",
-		sam_type, uacc));
-	if (upn) {
-		DEBUGADD(1,(", upn: %s", upn));
-	}
-	if (num_spns > 0) {
-		DEBUGADD(1, (", spns: ["));
-		for (i = 0; i < num_spns; i++) {
-			DEBUGADD(1, ("%s%s", spn[i],
-				     (i+1 == num_spns)?"]":", "));
-		}
-	}
-	DEBUGADD(1,("\n"));
-
-	status = add_to_keytab_entries(mem_ctx, ctx, kvno, name, NULL,
-				       ENCTYPE_ARCFOUR_HMAC,
-				       data_blob_talloc(mem_ctx, nt_passwd, 16));
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	/* add kerberos keys (if any) */
-
-	if (pkb4) {
-		for (i=0; i < pkb4->num_keys; i++) {
-			if (!pkb4->keys[i].value) {
-				continue;
-			}
-			status = add_to_keytab_entries(mem_ctx, ctx, kvno,
-						       name,
-						       NULL,
-						       pkb4->keys[i].keytype,
-						       *pkb4->keys[i].value);
-			if (!NT_STATUS_IS_OK(status)) {
-				return status;
-			}
-		}
-		for (i=0; i < pkb4->num_old_keys; i++) {
-			if (!pkb4->old_keys[i].value) {
-				continue;
-			}
-			status = add_to_keytab_entries(mem_ctx, ctx, kvno - 1,
-						       name,
-						       NULL,
-						       pkb4->old_keys[i].keytype,
-						       *pkb4->old_keys[i].value);
-			if (!NT_STATUS_IS_OK(status)) {
-				return status;
-			}
-		}
-		for (i=0; i < pkb4->num_older_keys; i++) {
-			if (!pkb4->older_keys[i].value) {
-				continue;
-			}
-			status = add_to_keytab_entries(mem_ctx, ctx, kvno - 2,
-						       name,
-						       NULL,
-						       pkb4->older_keys[i].keytype,
-						       *pkb4->older_keys[i].value);
-			if (!NT_STATUS_IS_OK(status)) {
-				return status;
-			}
-		}
-	}
-
-	if (pkb3) {
-		for (i=0; i < pkb3->num_keys; i++) {
-			if (!pkb3->keys[i].value) {
-				continue;
-			}
-			status = add_to_keytab_entries(mem_ctx, ctx, kvno, name,
-						       NULL,
-						       pkb3->keys[i].keytype,
-						       *pkb3->keys[i].value);
-			if (!NT_STATUS_IS_OK(status)) {
-				return status;
-			}
-		}
-		for (i=0; i < pkb3->num_old_keys; i++) {
-			if (!pkb3->old_keys[i].value) {
-				continue;
-			}
-			status = add_to_keytab_entries(mem_ctx, ctx, kvno - 1,
-						       name,
-						       NULL,
-						       pkb3->old_keys[i].keytype,
-						       *pkb3->old_keys[i].value);
-			if (!NT_STATUS_IS_OK(status)) {
-				return status;
-			}
-		}
-	}
-
-	if ((kvno < 0) && (kvno < pwd_history_len)) {
-		return status;
-	}
-
-	/* add password history */
-
-	/* skip first entry */
-	if (got_pwd) {
-		kvno--;
-		i = 1;
-	} else {
-		i = 0;
-	}
-
-	for (; i<pwd_history_len; i++) {
-		status = add_to_keytab_entries(mem_ctx, ctx, kvno--, name, NULL,
-				ENCTYPE_ARCFOUR_HMAC,
-				data_blob_talloc(mem_ctx, &pwd_history[i*16], 16));
-		if (!NT_STATUS_IS_OK(status)) {
-			break;
-		}
-	}
-
-	return status;
-}
-
-static bool dn_is_in_object_list(struct dssync_context *ctx,
-				 const char *dn)
-{
-	uint32_t count;
-
-	if (ctx->object_count == 0) {
-		return true;
-	}
-
-	for (count = 0; count < ctx->object_count; count++) {
-		if (strequal(ctx->object_dns[count], dn)) {
-			return true;
-		}
-	}
-
-	return false;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS keytab_process_objects(struct dssync_context *ctx,
-				       TALLOC_CTX *mem_ctx,
-				       struct drsuapi_DsReplicaObjectListItemEx *cur,
-				       struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr)
-{
-	NTSTATUS status = NT_STATUS_OK;
-	struct libnet_keytab_context *keytab_ctx =
-		(struct libnet_keytab_context *)ctx->private_data;
-
-	for (; cur; cur = cur->next_object) {
-		/*
-		 * When not in single object replication mode,
-		 * the object_dn list is used as a positive write filter.
-		 */
-		if (!ctx->single_object_replication &&
-		    !dn_is_in_object_list(ctx, cur->object.identifier->dn))
-		{
-			continue;
-		}
-
-		status = parse_object(mem_ctx, keytab_ctx, cur);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto out;
-		}
-	}
-
- out:
-	return status;
-}
-
-#else
-
-static NTSTATUS keytab_startup(struct dssync_context *ctx, TALLOC_CTX *mem_ctx,
-			       struct replUpToDateVectorBlob **pold_utdv)
-{
-	return NT_STATUS_NOT_SUPPORTED;
-}
-
-static NTSTATUS keytab_finish(struct dssync_context *ctx, TALLOC_CTX *mem_ctx,
-			      struct replUpToDateVectorBlob *new_utdv)
-{
-	return NT_STATUS_NOT_SUPPORTED;
-}
-
-static NTSTATUS keytab_process_objects(struct dssync_context *ctx,
-				       TALLOC_CTX *mem_ctx,
-				       struct drsuapi_DsReplicaObjectListItemEx *cur,
-				       struct drsuapi_DsReplicaOIDMapping_Ctr *mapping_ctr)
-{
-	return NT_STATUS_NOT_SUPPORTED;
-}
-#endif /* defined(HAVE_ADS) && defined(ENCTYPE_ARCFOUR_HMAC) */
-
-const struct dssync_ops libnet_dssync_keytab_ops = {
-	.startup		= keytab_startup,
-	.process_objects	= keytab_process_objects,
-	.finish			= keytab_finish,
-};

Modified: branches/samba/upstream/source/libnet/libnet_join.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_join.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_join.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -124,7 +124,7 @@
 		my_ads->auth.password = SMB_STRDUP(password);
 	}
 
-	status = ads_connect_user_creds(my_ads);
+	status = ads_connect(my_ads);
 	if (!ADS_ERR_OK(status)) {
 		ads_destroy(&my_ads);
 		return status;
@@ -642,37 +642,6 @@
 }
 
 /****************************************************************
- Connect dc's IPC$ share
-****************************************************************/
-
-static NTSTATUS libnet_join_connect_dc_ipc(const char *dc,
-					   const char *user,
-					   const char *pass,
-					   bool use_kerberos,
-					   struct cli_state **cli)
-{
-	int flags = 0;
-
-	if (use_kerberos) {
-		flags |= CLI_FULL_CONNECTION_USE_KERBEROS;
-	}
-
-	if (use_kerberos && pass) {
-		flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS;
-	}
-
-	return cli_full_connection(cli, NULL,
-				   dc,
-				   NULL, 0,
-				   "IPC$", "IPC",
-				   user,
-				   NULL,
-				   pass,
-				   flags,
-				   Undefined, NULL);
-}
-
-/****************************************************************
  Lookup domain dc's info
 ****************************************************************/
 
@@ -685,18 +654,22 @@
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	union lsa_PolicyInformation *info = NULL;
 
-	status = libnet_join_connect_dc_ipc(r->in.dc_name,
-					    r->in.admin_account,
-					    r->in.admin_password,
-					    r->in.use_kerberos,
-					    cli);
+	status = cli_full_connection(cli, NULL,
+				     r->in.dc_name,
+				     NULL, 0,
+				     "IPC$", "IPC",
+				     r->in.admin_account,
+				     NULL,
+				     r->in.admin_password,
+				     0,
+				     Undefined, NULL);
+
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
 	}
 
-	status = cli_rpc_pipe_open_noauth(*cli, &ndr_table_lsarpc.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(*cli, PI_LSARPC, &status);
+	if (!pipe_hnd) {
 		DEBUG(0,("Error connecting to LSA pipe. Error was %s\n",
 			nt_errstr(status)));
 		goto done;
@@ -716,7 +689,6 @@
 		r->out.domain_is_ad = true;
 		r->out.netbios_domain_name = info->dns.name.string;
 		r->out.dns_domain_name = info->dns.dns_domain.string;
-		r->out.forest_name = info->dns.dns_forest.string;
 		r->out.domain_sid = sid_dup_talloc(mem_ctx, info->dns.sid);
 		NT_STATUS_HAVE_NO_MEMORY(r->out.domain_sid);
 	}
@@ -736,7 +708,7 @@
 	}
 
 	rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 
  done:
 	return status;
@@ -757,14 +729,15 @@
 	struct lsa_String lsa_acct_name;
 	uint32_t user_rid;
 	uint32_t acct_flags = ACB_WSTRUST;
+	uchar pwbuf[532];
+	struct MD5Context md5ctx;
+	uchar md5buffer[16];
+	DATA_BLOB digested_session_key;
 	uchar md4_trust_password[16];
 	struct samr_Ids user_rids;
 	struct samr_Ids name_types;
 	union samr_UserInfo user_info;
 
-	struct samr_CryptPassword crypt_pwd;
-	struct samr_CryptPasswordEx crypt_pwd_ex;
-
 	ZERO_STRUCT(sam_pol);
 	ZERO_STRUCT(domain_pol);
 	ZERO_STRUCT(user_pol);
@@ -776,16 +749,15 @@
 
 	/* Open the domain */
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &status);
+	if (!pipe_hnd) {
 		DEBUG(0,("Error connecting to SAM pipe. Error was %s\n",
 			nt_errstr(status)));
 		goto done;
 	}
 
 	status = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      SEC_RIGHTS_MAXIMUM_ALLOWED,
 				      &sam_pol);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -896,11 +868,20 @@
 	/* Create a random machine account password and generate the hash */
 
 	E_md4hash(r->in.machine_password, md4_trust_password);
+	encode_pw_buffer(pwbuf, r->in.machine_password, STR_UNICODE);
 
-	init_samr_CryptPasswordEx(r->in.machine_password,
-				  &cli->user_session_key,
-				  &crypt_pwd_ex);
+	generate_random_buffer((uint8_t*)md5buffer, sizeof(md5buffer));
+	digested_session_key = data_blob_talloc(mem_ctx, 0, 16);
 
+	MD5Init(&md5ctx);
+	MD5Update(&md5ctx, md5buffer, sizeof(md5buffer));
+	MD5Update(&md5ctx, cli->user_session_key.data,
+		  cli->user_session_key.length);
+	MD5Final(digested_session_key.data, &md5ctx);
+
+	SamOEMhashBlob(pwbuf, sizeof(pwbuf), &digested_session_key);
+	memcpy(&pwbuf[516], md5buffer, sizeof(md5buffer));
+
 	/* Fill in the additional account flags now */
 
 	acct_flags |= ACB_PWNOEXP;
@@ -920,8 +901,7 @@
 					       SAMR_FIELD_ACCT_FLAGS;
 
 	user_info.info25.info.acct_flags = acct_flags;
-	memcpy(&user_info.info25.password.data, crypt_pwd_ex.data,
-	       sizeof(crypt_pwd_ex.data));
+	memcpy(&user_info.info25.password.data, pwbuf, sizeof(pwbuf));
 
 	status = rpccli_samr_SetUserInfo(pipe_hnd, mem_ctx,
 					 &user_pol,
@@ -930,14 +910,16 @@
 
 	if (NT_STATUS_EQUAL(status, NT_STATUS(DCERPC_FAULT_INVALID_TAG))) {
 
-		/* retry with level 24 */
+		uchar pwbuf2[516];
 
-		init_samr_CryptPassword(r->in.machine_password,
-					&cli->user_session_key,
-					&crypt_pwd);
+		encode_pw_buffer(pwbuf2, r->in.machine_password, STR_UNICODE);
 
-		init_samr_user_info24(&user_info.info24, crypt_pwd.data, 24);
+		/* retry with level 24 */
+		init_samr_user_info24(&user_info.info24, pwbuf2, 24);
 
+		SamOEMhashBlob(user_info.info24.password.data, 516,
+			       &cli->user_session_key);
+
 		status = rpccli_samr_SetUserInfo2(pipe_hnd, mem_ctx,
 						  &user_pol,
 						  24,
@@ -971,7 +953,7 @@
 	if (is_valid_policy_hnd(&user_pol)) {
 		rpccli_samr_Close(pipe_hnd, mem_ctx, &user_pol);
 	}
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 
 	return status;
 }
@@ -1039,9 +1021,10 @@
 		return status;
 	}
 
-	status = get_schannel_session_key(cli, netbios_domain_name,
-					  &neg_flags, &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
+	netlogon_pipe = get_schannel_session_key(cli,
+						 netbios_domain_name,
+						 &neg_flags, &status);
+	if (!netlogon_pipe) {
 		if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_NETWORK_RESPONSE)) {
 			cli_shutdown(cli);
 			return NT_STATUS_OK;
@@ -1059,13 +1042,15 @@
 		return NT_STATUS_OK;
 	}
 
-	status = cli_rpc_pipe_open_schannel_with_key(
-		cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-		netbios_domain_name, netlogon_pipe->dc, &pipe_hnd);
+	pipe_hnd = cli_rpc_pipe_open_schannel_with_key(cli, PI_NETLOGON,
+						       PIPE_AUTH_LEVEL_PRIVACY,
+						       netbios_domain_name,
+						       netlogon_pipe->dc,
+						       &status);
 
 	cli_shutdown(cli);
 
-	if (!NT_STATUS_IS_OK(status)) {
+	if (!pipe_hnd) {
 		DEBUG(0,("libnet_join_ok: failed to open schannel session "
 			"on netlogon pipe to server %s for domain %s. "
 			"Error was %s\n",
@@ -1135,27 +1120,30 @@
 	ZERO_STRUCT(domain_pol);
 	ZERO_STRUCT(user_pol);
 
-	status = libnet_join_connect_dc_ipc(r->in.dc_name,
-					    r->in.admin_account,
-					    r->in.admin_password,
-					    r->in.use_kerberos,
-					    &cli);
+	status = cli_full_connection(&cli, NULL,
+				     r->in.dc_name,
+				     NULL, 0,
+				     "IPC$", "IPC",
+				     r->in.admin_account,
+				     NULL,
+				     r->in.admin_password,
+				     0, Undefined, NULL);
+
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
 	}
 
 	/* Open the domain */
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &status);
+	if (!pipe_hnd) {
 		DEBUG(0,("Error connecting to SAM pipe. Error was %s\n",
 			nt_errstr(status)));
 		goto done;
 	}
 
 	status = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      SEC_RIGHTS_MAXIMUM_ALLOWED,
 				      &sam_pol);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -1239,7 +1227,7 @@
 		if (is_valid_policy_hnd(&sam_pol)) {
 			rpccli_samr_Close(pipe_hnd, mem_ctx, &sam_pol);
 		}
-		TALLOC_FREE(pipe_hnd);
+		cli_rpc_pipe_close(pipe_hnd);
 	}
 
 	if (cli) {
@@ -1458,37 +1446,6 @@
 /****************************************************************
 ****************************************************************/
 
-static void libnet_join_add_dom_rids_to_builtins(struct dom_sid *domain_sid)
-{
-	NTSTATUS status;
-
-	/* Try adding dom admins to builtin\admins. Only log failures. */
-	status = create_builtin_administrators(domain_sid);
-	if (NT_STATUS_EQUAL(status, NT_STATUS_PROTOCOL_UNREACHABLE)) {
-		DEBUG(10,("Unable to auto-add domain administrators to "
-			  "BUILTIN\\Administrators during join because "
-			  "winbindd must be running."));
-	} else if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(5, ("Failed to auto-add domain administrators to "
-			  "BUILTIN\\Administrators during join: %s\n",
-			  nt_errstr(status)));
-	}
-
-	/* Try adding dom users to builtin\users. Only log failures. */
-	status = create_builtin_users(domain_sid);
-	if (NT_STATUS_EQUAL(status, NT_STATUS_PROTOCOL_UNREACHABLE)) {
-		DEBUG(10,("Unable to auto-add domain users to BUILTIN\\users "
-			  "during join because winbindd must be running."));
-	} else if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(5, ("Failed to auto-add domain administrators to "
-			  "BUILTIN\\Administrators during join: %s\n",
-			  nt_errstr(status)));
-	}
-}
-
-/****************************************************************
-****************************************************************/
-
 static WERROR libnet_join_post_processing(TALLOC_CTX *mem_ctx,
 					  struct libnet_JoinCtx *r)
 {
@@ -1503,25 +1460,10 @@
 		return werr;
 	}
 
-	if (!(r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE)) {
-		return WERR_OK;
+	if (r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE) {
+		saf_store(r->in.domain_name, r->in.dc_name);
 	}
 
-	saf_store(r->in.domain_name, r->in.dc_name);
-
-#ifdef WITH_ADS
-	if (r->out.domain_is_ad) {
-		ADS_STATUS ads_status;
-
-		ads_status  = libnet_join_post_processing_ads(mem_ctx, r);
-		if (!ADS_ERR_OK(ads_status)) {
-			return WERR_GENERAL_FAILURE;
-		}
-	}
-#endif /* WITH_ADS */
-
-	libnet_join_add_dom_rids_to_builtins(r->out.domain_sid);
-
 	return WERR_OK;
 }
 
@@ -1767,6 +1709,16 @@
 		goto done;
 	}
 
+#ifdef WITH_ADS
+	if (r->out.domain_is_ad) {
+		ads_status  = libnet_join_post_processing_ads(mem_ctx, r);
+		if (!ADS_ERR_OK(ads_status)) {
+			werr = WERR_GENERAL_FAILURE;
+			goto done;
+		}
+	}
+#endif /* WITH_ADS */
+
 	werr = WERR_OK;
 
  done:
@@ -1780,8 +1732,8 @@
 /****************************************************************
 ****************************************************************/
 
-static WERROR libnet_join_rollback(TALLOC_CTX *mem_ctx,
-				   struct libnet_JoinCtx *r)
+WERROR libnet_join_rollback(TALLOC_CTX *mem_ctx,
+			    struct libnet_JoinCtx *r)
 {
 	WERROR werr;
 	struct libnet_UnjoinCtx *u = NULL;

Deleted: branches/samba/upstream/source/libnet/libnet_keytab.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_keytab.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_keytab.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,404 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   dump the remote SAM using rpc samsync operations
-
-   Copyright (C) Guenther Deschner 2008.
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "libnet/libnet.h"
-
-#ifdef HAVE_KRB5
-
-/****************************************************************
-****************************************************************/
-
-static int keytab_close(struct libnet_keytab_context *ctx)
-{
-	if (!ctx) {
-		return 0;
-	}
-
-	if (ctx->keytab && ctx->context) {
-		krb5_kt_close(ctx->context, ctx->keytab);
-	}
-
-	if (ctx->context) {
-		krb5_free_context(ctx->context);
-	}
-
-	if (ctx->ads) {
-		ads_destroy(&ctx->ads);
-	}
-
-	TALLOC_FREE(ctx);
-
-	return 0;
-}
-
-/****************************************************************
-****************************************************************/
-
-krb5_error_code libnet_keytab_init(TALLOC_CTX *mem_ctx,
-				   const char *keytab_name,
-				   struct libnet_keytab_context **ctx)
-{
-	krb5_error_code ret = 0;
-	krb5_context context = NULL;
-	krb5_keytab keytab = NULL;
-	const char *keytab_string = NULL;
-
-	struct libnet_keytab_context *r;
-
-	r = TALLOC_ZERO_P(mem_ctx, struct libnet_keytab_context);
-	if (!r) {
-		return ENOMEM;
-	}
-
-	talloc_set_destructor(r, keytab_close);
-
-	initialize_krb5_error_table();
-	ret = krb5_init_context(&context);
-	if (ret) {
-		DEBUG(1,("keytab_init: could not krb5_init_context: %s\n",
-			error_message(ret)));
-		return ret;
-	}
-
-	ret = smb_krb5_open_keytab(context, keytab_name, true, &keytab);
-	if (ret) {
-		DEBUG(1,("keytab_init: smb_krb5_open_keytab failed (%s)\n",
-			error_message(ret)));
-		krb5_free_context(context);
-		return ret;
-	}
-
-	ret = smb_krb5_keytab_name(mem_ctx, context, keytab, &keytab_string);
-	if (ret) {
-		krb5_kt_close(context, keytab);
-		krb5_free_context(context);
-		return ret;
-	}
-
-	r->context = context;
-	r->keytab = keytab;
-	r->keytab_name = keytab_string;
-	r->clean_old_entries = false;
-
-	*ctx = r;
-
-	return 0;
-}
-
-/****************************************************************
-****************************************************************/
-
-/**
- * Remove all entries that have the given principal, kvno and enctype.
- */
-static krb5_error_code libnet_keytab_remove_entries(krb5_context context,
-						    krb5_keytab keytab,
-						    const char *principal,
-						    int kvno,
-						    const krb5_enctype enctype,
-						    bool ignore_kvno)
-{
-	krb5_error_code ret;
-	krb5_kt_cursor cursor;
-	krb5_keytab_entry kt_entry;
-
-	ZERO_STRUCT(kt_entry);
-	ZERO_STRUCT(cursor);
-
-	ret = krb5_kt_start_seq_get(context, keytab, &cursor);
-	if (ret) {
-		return 0;
-	}
-
-	while (krb5_kt_next_entry(context, keytab, &kt_entry, &cursor) == 0)
-	{
-		krb5_keyblock *keyp;
-		char *princ_s = NULL;
-
-		if (kt_entry.vno != kvno && !ignore_kvno) {
-			goto cont;
-		}
-
-		keyp = KRB5_KT_KEY(&kt_entry);
-
-		if (KRB5_KEY_TYPE(keyp) != enctype) {
-			goto cont;
-		}
-
-		ret = smb_krb5_unparse_name(context, kt_entry.principal,
-					    &princ_s);
-		if (ret) {
-			DEBUG(5, ("smb_krb5_unparse_name failed (%s)\n",
-				  error_message(ret)));
-			goto cont;
-		}
-
-		if (strcmp(principal, princ_s) != 0) {
-			goto cont;
-		}
-
-		/* match found - remove */
-
-		DEBUG(10, ("found entry for principal %s, kvno %d, "
-			   "enctype %d - trying to remove it\n",
-			   princ_s, kt_entry.vno, KRB5_KEY_TYPE(keyp)));
-
-		ret = krb5_kt_end_seq_get(context, keytab, &cursor);
-		ZERO_STRUCT(cursor);
-		if (ret) {
-			DEBUG(5, ("krb5_kt_end_seq_get failed (%s)\n",
-				  error_message(ret)));
-			goto cont;
-		}
-
-		ret = krb5_kt_remove_entry(context, keytab,
-					   &kt_entry);
-		if (ret) {
-			DEBUG(5, ("krb5_kt_remove_entry failed (%s)\n",
-				  error_message(ret)));
-			goto cont;
-		}
-		DEBUG(10, ("removed entry for principal %s, kvno %d, "
-			   "enctype %d\n", princ_s, kt_entry.vno,
-			   KRB5_KEY_TYPE(keyp)));
-
-		ret = krb5_kt_start_seq_get(context, keytab, &cursor);
-		if (ret) {
-			DEBUG(5, ("krb5_kt_start_seq_get failed (%s)\n",
-				  error_message(ret)));
-			goto cont;
-		}
-
-cont:
-		smb_krb5_kt_free_entry(context, &kt_entry);
-		SAFE_FREE(princ_s);
-	}
-
-	ret = krb5_kt_end_seq_get(context, keytab, &cursor);
-	if (ret) {
-		DEBUG(5, ("krb5_kt_end_seq_get failed (%s)\n",
-			  error_message(ret)));
-	}
-
-	return ret;
-}
-
-static krb5_error_code libnet_keytab_add_entry(krb5_context context,
-					       krb5_keytab keytab,
-					       krb5_kvno kvno,
-					       const char *princ_s,
-					       krb5_enctype enctype,
-					       krb5_data password)
-{
-	krb5_keyblock *keyp;
-	krb5_keytab_entry kt_entry;
-	krb5_error_code ret;
-
-	/* remove duplicates first ... */
-	ret = libnet_keytab_remove_entries(context, keytab, princ_s, kvno,
-					   enctype, false);
-	if (ret) {
-		DEBUG(1, ("libnet_keytab_remove_entries failed: %s\n",
-			  error_message(ret)));
-	}
-
-	ZERO_STRUCT(kt_entry);
-
-	kt_entry.vno = kvno;
-
-	ret = smb_krb5_parse_name(context, princ_s, &kt_entry.principal);
-	if (ret) {
-		DEBUG(1, ("smb_krb5_parse_name(%s) failed (%s)\n",
-			  princ_s, error_message(ret)));
-		return ret;
-	}
-
-	keyp = KRB5_KT_KEY(&kt_entry);
-
-	if (create_kerberos_key_from_string(context, kt_entry.principal,
-					    &password, keyp, enctype, true))
-	{
-		ret = KRB5KRB_ERR_GENERIC;
-		goto done;
-	}
-
-	ret = krb5_kt_add_entry(context, keytab, &kt_entry);
-	if (ret) {
-		DEBUG(1, ("adding entry to keytab failed (%s)\n",
-			  error_message(ret)));
-	}
-
-done:
-	krb5_free_keyblock_contents(context, keyp);
-	krb5_free_principal(context, kt_entry.principal);
-	ZERO_STRUCT(kt_entry);
-	smb_krb5_kt_free_entry(context, &kt_entry);
-
-	return ret;
-}
-
-krb5_error_code libnet_keytab_add(struct libnet_keytab_context *ctx)
-{
-	krb5_error_code ret = 0;
-	uint32_t i;
-
-
-	if (ctx->clean_old_entries) {
-		DEBUG(0, ("cleaning old entries...\n"));
-		for (i=0; i < ctx->count; i++) {
-			struct libnet_keytab_entry *entry = &ctx->entries[i];
-
-			ret = libnet_keytab_remove_entries(ctx->context,
-							   ctx->keytab,
-							   entry->principal,
-							   0,
-							   entry->enctype,
-							   true);
-			if (ret) {
-				DEBUG(1,("libnet_keytab_add: Failed to remove "
-					 "old entries for %s (enctype %u): %s\n",
-					 entry->principal, entry->enctype,
-					 error_message(ret)));
-				return ret;
-			}
-		}
-	}
-
-	for (i=0; i<ctx->count; i++) {
-
-		struct libnet_keytab_entry *entry = &ctx->entries[i];
-		krb5_data password;
-
-		ZERO_STRUCT(password);
-		password.data = (char *)entry->password.data;
-		password.length = entry->password.length;
-
-		ret = libnet_keytab_add_entry(ctx->context,
-					      ctx->keytab,
-					      entry->kvno,
-					      entry->principal,
-					      entry->enctype,
-					      password);
-		if (ret) {
-			DEBUG(1,("libnet_keytab_add: "
-				"Failed to add entry to keytab file\n"));
-			return ret;
-		}
-	}
-
-	return ret;
-}
-
-struct libnet_keytab_entry *libnet_keytab_search(struct libnet_keytab_context *ctx,
-						 const char *principal,
-						 int kvno,
-						 const krb5_enctype enctype,
-						 TALLOC_CTX *mem_ctx)
-{
-	krb5_error_code ret = 0;
-	krb5_kt_cursor cursor;
-	krb5_keytab_entry kt_entry;
-	struct libnet_keytab_entry *entry = NULL;
-
-	ZERO_STRUCT(kt_entry);
-	ZERO_STRUCT(cursor);
-
-	ret = krb5_kt_start_seq_get(ctx->context, ctx->keytab, &cursor);
-	if (ret) {
-		DEBUG(10, ("krb5_kt_start_seq_get failed: %s",
-			  error_message(ret)));
-		return NULL;
-	}
-
-	while (krb5_kt_next_entry(ctx->context, ctx->keytab, &kt_entry, &cursor) == 0)
-	{
-		krb5_keyblock *keyp;
-		char *princ_s = NULL;
-
-		if (kt_entry.vno != kvno) {
-			goto cont;
-		}
-
-		keyp = KRB5_KT_KEY(&kt_entry);
-
-		if (KRB5_KEY_TYPE(keyp) != enctype) {
-			goto cont;
-		}
-
-		ret = smb_krb5_unparse_name(ctx->context, kt_entry.principal,
-					    &princ_s);
-		if (ret) {
-			goto cont;
-		}
-
-		if (strcmp(principal, princ_s) != 0) {
-			goto cont;
-		}
-
-		entry = talloc_zero(mem_ctx, struct libnet_keytab_entry);
-		if (!entry) {
-			DEBUG(3, ("talloc failed\n"));
-			goto fail;
-		}
-
-		entry->name = talloc_strdup(entry, princ_s);
-		if (!entry->name) {
-			DEBUG(3, ("talloc_strdup_failed\n"));
-			goto fail;
-		}
-
-		entry->principal = talloc_strdup(entry, princ_s);
-		if (!entry->principal) {
-			DEBUG(3, ("talloc_strdup_failed\n"));
-			goto fail;
-		}
-
-		entry->password = data_blob_talloc(entry, KRB5_KEY_DATA(keyp),
-						   KRB5_KEY_LENGTH(keyp));
-		if (!entry->password.data) {
-			DEBUG(3, ("data_blob_talloc failed\n"));
-			goto fail;
-		}
-
-		DEBUG(10, ("found entry\n"));
-
-		smb_krb5_kt_free_entry(ctx->context, &kt_entry);
-		SAFE_FREE(princ_s);
-		break;
-
-fail:
-		smb_krb5_kt_free_entry(ctx->context, &kt_entry);
-		SAFE_FREE(princ_s);
-		TALLOC_FREE(entry);
-		break;
-
-cont:
-		smb_krb5_kt_free_entry(ctx->context, &kt_entry);
-		SAFE_FREE(princ_s);
-		continue;
-	}
-
-	krb5_kt_end_seq_get(ctx->context, ctx->keytab, &cursor);
-	return entry;
-}
-
-#endif /* HAVE_KRB5 */

Deleted: branches/samba/upstream/source/libnet/libnet_keytab.h
===================================================================
--- branches/samba/upstream/source/libnet/libnet_keytab.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_keytab.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,42 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  libnet Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_KRB5
-
-struct libnet_keytab_entry {
-	const char *name;
-	const char *principal;
-	DATA_BLOB password;
-	uint32_t kvno;
-	krb5_enctype enctype;
-};
-
-struct libnet_keytab_context {
-	krb5_context context;
-	krb5_keytab keytab;
-	const char *keytab_name;
-	ADS_STRUCT *ads;
-	const char *dns_domain_name;
-	uint8_t zero_buf[16];
-	uint32_t count;
-	struct libnet_keytab_entry *entries;
-	bool clean_old_entries;
-};
-
-#endif /* HAVE_KRB5 */

Deleted: branches/samba/upstream/source/libnet/libnet_proto.h
===================================================================
--- branches/samba/upstream/source/libnet/libnet_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,78 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _LIBNET_PROTO_H_
-#define _LIBNET_PROTO_H_
-
-
-/* The following definitions come from libnet/libnet_join.c  */
-
-NTSTATUS libnet_join_ok(const char *netbios_domain_name,
-			const char *machine_name,
-			const char *dc_name);
-WERROR libnet_init_JoinCtx(TALLOC_CTX *mem_ctx,
-			   struct libnet_JoinCtx **r);
-WERROR libnet_init_UnjoinCtx(TALLOC_CTX *mem_ctx,
-			     struct libnet_UnjoinCtx **r);
-WERROR libnet_Join(TALLOC_CTX *mem_ctx,
-		   struct libnet_JoinCtx *r);
-WERROR libnet_Unjoin(TALLOC_CTX *mem_ctx,
-		     struct libnet_UnjoinCtx *r);
-
-/* The following definitions come from librpc/gen_ndr/ndr_libnet_join.c  */
-
-_PUBLIC_ void ndr_print_libnet_JoinCtx(struct ndr_print *ndr, const char *name, int flags, const struct libnet_JoinCtx *r);
-_PUBLIC_ void ndr_print_libnet_UnjoinCtx(struct ndr_print *ndr, const char *name, int flags, const struct libnet_UnjoinCtx *r);
-
-/* The following definitions come from libnet/libnet_keytab.c  */
-
-#ifdef HAVE_KRB5
-krb5_error_code libnet_keytab_init(TALLOC_CTX *mem_ctx,
-				   const char *keytab_name,
-				   struct libnet_keytab_context **ctx);
-krb5_error_code libnet_keytab_add(struct libnet_keytab_context *ctx);
-
-struct libnet_keytab_entry *libnet_keytab_search(struct libnet_keytab_context *ctx,
-						 const char *principal, int kvno,
-						 const const krb5_enctype enctype,
-						 TALLOC_CTX *mem_ctx);
-#endif
-
-/* The following definitions come from libnet/libnet_samsync.c  */
-
-NTSTATUS libnet_samsync_init_context(TALLOC_CTX *mem_ctx,
-				     const struct dom_sid *domain_sid,
-				     struct samsync_context **ctx_p);
-NTSTATUS libnet_samsync(enum netr_SamDatabaseID database_id,
-			struct samsync_context *ctx);
-NTSTATUS pull_netr_AcctLockStr(TALLOC_CTX *mem_ctx,
-			       struct lsa_BinaryString *r,
-			       struct netr_AcctLockStr **str_p);
-
-/* The following definitions come from libnet/libnet_dssync.c  */
-
-NTSTATUS libnet_dssync_init_context(TALLOC_CTX *mem_ctx,
-				    struct dssync_context **ctx_p);
-NTSTATUS libnet_dssync(TALLOC_CTX *mem_ctx,
-		       struct dssync_context *ctx);
-
-#endif /*  _LIBNET_PROTO_H_  */

Modified: branches/samba/upstream/source/libnet/libnet_samsync.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_samsync.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_samsync.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,7 +22,6 @@
 
 
 #include "includes.h"
-#include "libnet/libnet.h"
 
 /**
  * Decrypt and extract the user's passwords.
@@ -163,11 +162,11 @@
  * callback need only do the printing or application logic
  */
 
-static NTSTATUS samsync_fix_delta_array(TALLOC_CTX *mem_ctx,
-					DATA_BLOB *session_key,
-					bool rid_crypt,
-					enum netr_SamDatabaseID database_id,
-					struct netr_DELTA_ENUM_ARRAY *r)
+NTSTATUS samsync_fix_delta_array(TALLOC_CTX *mem_ctx,
+				 DATA_BLOB *session_key,
+				 bool rid_crypt,
+				 enum netr_SamDatabaseID database_id,
+				 struct netr_DELTA_ENUM_ARRAY *r)
 {
 	NTSTATUS status;
 	int i;
@@ -186,226 +185,3 @@
 
 	return NT_STATUS_OK;
 }
-
-/**
- * libnet_samsync_init_context
- */
-
-NTSTATUS libnet_samsync_init_context(TALLOC_CTX *mem_ctx,
-				     const struct dom_sid *domain_sid,
-				     struct samsync_context **ctx_p)
-{
-	struct samsync_context *ctx;
-
-	*ctx_p = NULL;
-
-	ctx = TALLOC_ZERO_P(mem_ctx, struct samsync_context);
-	NT_STATUS_HAVE_NO_MEMORY(ctx);
-
-	if (domain_sid) {
-		ctx->domain_sid = sid_dup_talloc(mem_ctx, domain_sid);
-		NT_STATUS_HAVE_NO_MEMORY(ctx->domain_sid);
-
-		ctx->domain_sid_str = sid_string_talloc(mem_ctx, ctx->domain_sid);
-		NT_STATUS_HAVE_NO_MEMORY(ctx->domain_sid_str);
-	}
-
-	*ctx_p = ctx;
-
-	return NT_STATUS_OK;
-}
-
-/**
- * samsync_database_str
- */
-
-static const char *samsync_database_str(enum netr_SamDatabaseID database_id)
-{
-
-	switch (database_id) {
-		case SAM_DATABASE_DOMAIN:
-			return "DOMAIN";
-		case SAM_DATABASE_BUILTIN:
-			return "BUILTIN";
-		case SAM_DATABASE_PRIVS:
-			return "PRIVS";
-		default:
-			return "unknown";
-	}
-}
-
-/**
- * samsync_debug_str
- */
-
-static const char *samsync_debug_str(TALLOC_CTX *mem_ctx,
-				     enum net_samsync_mode mode,
-				     enum netr_SamDatabaseID database_id)
-{
-	const char *action = NULL;
-
-	switch (mode) {
-		case NET_SAMSYNC_MODE_DUMP:
-			action = "Dumping (to stdout)";
-			break;
-		case NET_SAMSYNC_MODE_FETCH_PASSDB:
-			action = "Fetching (to passdb)";
-			break;
-		case NET_SAMSYNC_MODE_FETCH_LDIF:
-			action = "Fetching (to ldif)";
-			break;
-		case NET_SAMSYNC_MODE_FETCH_KEYTAB:
-			action = "Fetching (to keytab)";
-			break;
-		default:
-			action = "Unknown";
-			break;
-	}
-
-	return talloc_asprintf(mem_ctx, "%s %s database",
-				action, samsync_database_str(database_id));
-}
-
-/**
- * libnet_samsync
- */
-
-NTSTATUS libnet_samsync(enum netr_SamDatabaseID database_id,
-			struct samsync_context *ctx)
-{
-	NTSTATUS result;
-	TALLOC_CTX *mem_ctx;
-	const char *logon_server = ctx->cli->desthost;
-	const char *computername = global_myname();
-	struct netr_Authenticator credential;
-	struct netr_Authenticator return_authenticator;
-	uint16_t restart_state = 0;
-	uint32_t sync_context = 0;
-	const char *debug_str;
-	DATA_BLOB session_key;
-
-	ZERO_STRUCT(return_authenticator);
-
-	if (!(mem_ctx = talloc_init("libnet_samsync"))) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	debug_str = samsync_debug_str(mem_ctx, ctx->mode, database_id);
-	if (debug_str) {
-		d_fprintf(stderr, "%s\n", debug_str);
-	}
-
-	do {
-		struct netr_DELTA_ENUM_ARRAY *delta_enum_array = NULL;
-		NTSTATUS callback_status;
-
-		netlogon_creds_client_step(ctx->cli->dc, &credential);
-
-		result = rpccli_netr_DatabaseSync2(ctx->cli, mem_ctx,
-						   logon_server,
-						   computername,
-						   &credential,
-						   &return_authenticator,
-						   database_id,
-						   restart_state,
-						   &sync_context,
-						   &delta_enum_array,
-						   0xffff);
-		if (NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED)) {
-			return result;
-		}
-
-		/* Check returned credentials. */
-		if (!netlogon_creds_client_check(ctx->cli->dc,
-						 &return_authenticator.cred)) {
-			DEBUG(0,("credentials chain check failed\n"));
-			return NT_STATUS_ACCESS_DENIED;
-		}
-
-		if (NT_STATUS_IS_ERR(result)) {
-			break;
-		}
-
-		session_key = data_blob_const(ctx->cli->dc->sess_key, 16);
-
-		samsync_fix_delta_array(mem_ctx,
-					&session_key,
-					false,
-					database_id,
-					delta_enum_array);
-
-		/* Process results */
-		callback_status = ctx->delta_fn(mem_ctx, database_id,
-						delta_enum_array,
-						NT_STATUS_IS_OK(result), ctx);
-		if (!NT_STATUS_IS_OK(callback_status)) {
-			result = callback_status;
-			goto out;
-		}
-
-		TALLOC_FREE(delta_enum_array);
-
-		/* Increment sync_context */
-		sync_context += 1;
-
-	} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
-
- out:
-	if (NT_STATUS_IS_ERR(result) && !ctx->error_message) {
-
-		ctx->error_message = talloc_asprintf(ctx,
-			"Failed to fetch %s database: %s",
-			samsync_database_str(database_id),
-			nt_errstr(result));
-
-		if (NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED)) {
-
-			ctx->error_message =
-				talloc_asprintf_append(ctx->error_message,
-					"\nPerhaps %s is a Windows native mode domain?",
-					ctx->domain_name);
-		}
-	}
-
-	talloc_destroy(mem_ctx);
-
-	return result;
-}
-
-/**
- * pull_netr_AcctLockStr
- */
-
-NTSTATUS pull_netr_AcctLockStr(TALLOC_CTX *mem_ctx,
-			       struct lsa_BinaryString *r,
-			       struct netr_AcctLockStr **str_p)
-{
-	struct netr_AcctLockStr *str;
-	enum ndr_err_code ndr_err;
-	DATA_BLOB blob;
-
-	if (!mem_ctx || !r || !str_p) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	*str_p = NULL;
-
-	str = TALLOC_ZERO_P(mem_ctx, struct netr_AcctLockStr);
-	if (!str) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	blob = data_blob_const(r->array, r->length);
-
-	ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, str,
-		       (ndr_pull_flags_fn_t)ndr_pull_netr_AcctLockStr);
-
-	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-		return ndr_map_error2ntstatus(ndr_err);
-	}
-
-	*str_p = str;
-
-	return NT_STATUS_OK;
-}
-

Deleted: branches/samba/upstream/source/libnet/libnet_samsync.h
===================================================================
--- branches/samba/upstream/source/libnet/libnet_samsync.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_samsync.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,73 +0,0 @@
-/*
- *  Unix SMB/CIFS implementation.
- *  libnet Support
- *  Copyright (C) Guenther Deschner 2008
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-
-enum net_samsync_mode {
-	NET_SAMSYNC_MODE_FETCH_PASSDB = 0,
-	NET_SAMSYNC_MODE_FETCH_LDIF = 1,
-	NET_SAMSYNC_MODE_FETCH_KEYTAB = 2,
-	NET_SAMSYNC_MODE_DUMP = 3
-};
-
-struct samsync_context;
-
-typedef NTSTATUS (*samsync_delta_fn_t)(TALLOC_CTX *,
-				       enum netr_SamDatabaseID,
-				       struct netr_DELTA_ENUM_ARRAY *,
-				       bool,
-				       struct samsync_context *);
-
-struct samsync_context {
-	enum net_samsync_mode mode;
-	const struct dom_sid *domain_sid;
-	const char *domain_sid_str;
-	const char *domain_name;
-	const char *output_filename;
-
-	const char *username;
-	const char *password;
-
-	char *result_message;
-	char *error_message;
-
-	struct rpc_pipe_client *cli;
-	samsync_delta_fn_t delta_fn;
-	void *private_data;
-};
-
-NTSTATUS fetch_sam_entries_ldif(TALLOC_CTX *mem_ctx,
-				enum netr_SamDatabaseID database_id,
-				struct netr_DELTA_ENUM_ARRAY *r,
-				bool last_query,
-				struct samsync_context *ctx);
-NTSTATUS fetch_sam_entries(TALLOC_CTX *mem_ctx,
-			   enum netr_SamDatabaseID database_id,
-			   struct netr_DELTA_ENUM_ARRAY *r,
-			   bool last_query,
-			   struct samsync_context *ctx);
-NTSTATUS display_sam_entries(TALLOC_CTX *mem_ctx,
-			     enum netr_SamDatabaseID database_id,
-			     struct netr_DELTA_ENUM_ARRAY *r,
-			     bool last_query,
-			     struct samsync_context *ctx);
-NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
-				  enum netr_SamDatabaseID database_id,
-				  struct netr_DELTA_ENUM_ARRAY *r,
-				  bool last_query,
-				  struct samsync_context *ctx);

Deleted: branches/samba/upstream/source/libnet/libnet_samsync_display.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_samsync_display.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_samsync_display.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,303 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   dump the remote SAM using rpc samsync operations
-
-   Copyright (C) Andrew Tridgell 2002
-   Copyright (C) Tim Potter 2001,2002
-   Copyright (C) Jim McDonough <jmcd at us.ibm.com> 2005
-   Modified by Volker Lendecke 2002
-   Copyright (C) Jeremy Allison 2005.
-   Copyright (C) Guenther Deschner 2008.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "libnet/libnet.h"
-
-static void display_group_mem_info(uint32_t rid,
-				   struct netr_DELTA_GROUP_MEMBER *r)
-{
-	int i;
-	d_printf("Group mem %u: ", rid);
-	for (i=0; i< r->num_rids; i++) {
-		d_printf("%u ", r->rids[i]);
-	}
-	d_printf("\n");
-}
-
-static void display_alias_info(uint32_t rid,
-			       struct netr_DELTA_ALIAS *r)
-{
-	d_printf("Alias '%s' ", r->alias_name.string);
-	d_printf("desc='%s' rid=%u\n", r->description.string, r->rid);
-}
-
-static void display_alias_mem(uint32_t rid,
-			      struct netr_DELTA_ALIAS_MEMBER *r)
-{
-	int i;
-	d_printf("Alias rid %u: ", rid);
-	for (i=0; i< r->sids.num_sids; i++) {
-		d_printf("%s ", sid_string_tos(r->sids.sids[i].sid));
-	}
-	d_printf("\n");
-}
-
-static void display_account_info(uint32_t rid,
-				 struct netr_DELTA_USER *r)
-{
-	fstring hex_nt_passwd, hex_lm_passwd;
-	uchar lm_passwd[16], nt_passwd[16];
-	static uchar zero_buf[16];
-
-	/* Decode hashes from password hash (if they are not NULL) */
-
-	if (memcmp(r->lmpassword.hash, zero_buf, 16) != 0) {
-		sam_pwd_hash(r->rid, r->lmpassword.hash, lm_passwd, 0);
-		pdb_sethexpwd(hex_lm_passwd, lm_passwd, r->acct_flags);
-	} else {
-		pdb_sethexpwd(hex_lm_passwd, NULL, 0);
-	}
-
-	if (memcmp(r->ntpassword.hash, zero_buf, 16) != 0) {
-		sam_pwd_hash(r->rid, r->ntpassword.hash, nt_passwd, 0);
-		pdb_sethexpwd(hex_nt_passwd, nt_passwd, r->acct_flags);
-	} else {
-		pdb_sethexpwd(hex_nt_passwd, NULL, 0);
-	}
-
-	printf("%s:%d:%s:%s:%s:LCT-0\n",
-		r->account_name.string,
-		r->rid, hex_lm_passwd, hex_nt_passwd,
-		pdb_encode_acct_ctrl(r->acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN));
-}
-
-static void display_domain_info(struct netr_DELTA_DOMAIN *r)
-{
-	time_t u_logout;
-	struct netr_AcctLockStr *lockstr = NULL;
-	NTSTATUS status;
-	TALLOC_CTX *mem_ctx = talloc_tos();
-
-	status = pull_netr_AcctLockStr(mem_ctx, &r->account_lockout,
-				       &lockstr);
-	if (!NT_STATUS_IS_OK(status)) {
-		d_printf("failed to pull account lockout string: %s\n",
-			nt_errstr(status));
-	}
-
-	u_logout = uint64s_nt_time_to_unix_abs((const uint64 *)&r->force_logoff_time);
-
-	d_printf("Domain name: %s\n", r->domain_name.string);
-
-	d_printf("Minimal Password Length: %d\n", r->min_password_length);
-	d_printf("Password History Length: %d\n", r->password_history_length);
-
-	d_printf("Force Logoff: %d\n", (int)u_logout);
-
-	d_printf("Max Password Age: %s\n", display_time(r->max_password_age));
-	d_printf("Min Password Age: %s\n", display_time(r->min_password_age));
-
-	if (lockstr) {
-		d_printf("Lockout Time: %s\n", display_time((NTTIME)lockstr->lockout_duration));
-		d_printf("Lockout Reset Time: %s\n", display_time((NTTIME)lockstr->reset_count));
-		d_printf("Bad Attempt Lockout: %d\n", lockstr->bad_attempt_lockout);
-	}
-
-	d_printf("User must logon to change password: %d\n", r->logon_to_chgpass);
-}
-
-static void display_group_info(uint32_t rid, struct netr_DELTA_GROUP *r)
-{
-	d_printf("Group '%s' ", r->group_name.string);
-	d_printf("desc='%s', rid=%u\n", r->description.string, rid);
-}
-
-static void display_delete_group(uint32_t rid)
-{
-	d_printf("Delete Group '%d' ", rid);
-}
-
-static void display_rename_group(uint32_t rid, struct netr_DELTA_RENAME *r)
-{
-	d_printf("Rename Group '%d' ", rid);
-	d_printf("Rename Group: %s -> %s\n",
-		r->OldName.string, r->NewName.string);
-}
-
-static void display_delete_user(uint32_t rid)
-{
-	d_printf("Delete User '%d' ", rid);
-}
-
-static void display_rename_user(uint32_t rid, struct netr_DELTA_RENAME *r)
-{
-	d_printf("Rename User '%d' ", rid);
-	d_printf("Rename User: %s -> %s\n",
-		r->OldName.string, r->NewName.string);
-}
-
-static void display_delete_alias(uint32_t rid)
-{
-	d_printf("Delete Alias '%d' ", rid);
-}
-
-static void display_rename_alias(uint32_t rid, struct netr_DELTA_RENAME *r)
-{
-	d_printf("Rename Alias '%d' ", rid);
-	d_printf("Rename Alias: %s -> %s\n",
-		r->OldName.string, r->NewName.string);
-}
-
-static NTSTATUS display_sam_entry(TALLOC_CTX *mem_ctx,
-				  enum netr_SamDatabaseID database_id,
-				  struct netr_DELTA_ENUM *r,
-				  bool last_query,
-				  struct samsync_context *ctx)
-{
-	union netr_DELTA_UNION u = r->delta_union;
-	union netr_DELTA_ID_UNION id = r->delta_id_union;
-
-	switch (r->delta_type) {
-	case NETR_DELTA_DOMAIN:
-		display_domain_info(u.domain);
-		break;
-	case NETR_DELTA_GROUP:
-		display_group_info(id.rid, u.group);
-		break;
-	case NETR_DELTA_DELETE_GROUP:
-		display_delete_group(id.rid);
-		break;
-	case NETR_DELTA_RENAME_GROUP:
-		display_rename_group(id.rid, u.rename_group);
-		break;
-	case NETR_DELTA_USER:
-		display_account_info(id.rid, u.user);
-		break;
-	case NETR_DELTA_DELETE_USER:
-		display_delete_user(id.rid);
-		break;
-	case NETR_DELTA_RENAME_USER:
-		display_rename_user(id.rid, u.rename_user);
-		break;
-	case NETR_DELTA_GROUP_MEMBER:
-		display_group_mem_info(id.rid, u.group_member);
-		break;
-	case NETR_DELTA_ALIAS:
-		display_alias_info(id.rid, u.alias);
-		break;
-	case NETR_DELTA_DELETE_ALIAS:
-		display_delete_alias(id.rid);
-		break;
-	case NETR_DELTA_RENAME_ALIAS:
-		display_rename_alias(id.rid, u.rename_alias);
-		break;
-	case NETR_DELTA_ALIAS_MEMBER:
-		display_alias_mem(id.rid, u.alias_member);
-		break;
-	case NETR_DELTA_POLICY:
-		printf("Policy\n");
-		break;
-	case NETR_DELTA_TRUSTED_DOMAIN:
-		printf("Trusted Domain: %s\n",
-			u.trusted_domain->domain_name.string);
-		break;
-	case NETR_DELTA_DELETE_TRUST:
-		printf("Delete Trust: %d\n",
-			u.delete_trust.unknown);
-		break;
-	case NETR_DELTA_ACCOUNT:
-		printf("Account\n");
-		break;
-	case NETR_DELTA_DELETE_ACCOUNT:
-		printf("Delete Account: %d\n",
-			u.delete_account.unknown);
-		break;
-	case NETR_DELTA_SECRET:
-		printf("Secret\n");
-		break;
-	case NETR_DELTA_DELETE_SECRET:
-		printf("Delete Secret: %d\n",
-			u.delete_secret.unknown);
-		break;
-	case NETR_DELTA_DELETE_GROUP2:
-		printf("Delete Group2: %s\n",
-			u.delete_group->account_name);
-		break;
-	case NETR_DELTA_DELETE_USER2:
-		printf("Delete User2: %s\n",
-			u.delete_user->account_name);
-		break;
-	case NETR_DELTA_MODIFY_COUNT:
-		printf("sam sequence update: 0x%016llx\n",
-			(unsigned long long) *u.modified_count);
-		break;
-#if 0
-	/* The following types are recognised but not handled */
-	case NETR_DELTA_POLICY:
-		d_printf("NETR_DELTA_POLICY not handled\n");
-		break;
-	case NETR_DELTA_TRUSTED_DOMAIN:
-		d_printf("NETR_DELTA_TRUSTED_DOMAIN not handled\n");
-		break;
-	case NETR_DELTA_ACCOUNT:
-		d_printf("NETR_DELTA_ACCOUNT not handled\n");
-		break;
-	case NETR_DELTA_SECRET:
-		d_printf("NETR_DELTA_SECRET not handled\n");
-		break;
-	case NETR_DELTA_MODIFY_COUNT:
-		d_printf("NETR_DELTA_MODIFY_COUNT not handled\n");
-		break;
-	case NETR_DELTA_DELETE_TRUST:
-		d_printf("NETR_DELTA_DELETE_TRUST not handled\n");
-		break;
-	case NETR_DELTA_DELETE_ACCOUNT:
-		d_printf("NETR_DELTA_DELETE_ACCOUNT not handled\n");
-		break;
-	case NETR_DELTA_DELETE_SECRET:
-		d_printf("NETR_DELTA_DELETE_SECRET not handled\n");
-		break;
-	case NETR_DELTA_DELETE_GROUP2:
-		d_printf("NETR_DELTA_DELETE_GROUP2 not handled\n");
-		break;
-	case NETR_DELTA_DELETE_USER2:
-		d_printf("NETR_DELTA_DELETE_USER2 not handled\n");
-		break;
-#endif
-	default:
-		printf("unknown delta type 0x%02x\n",
-			r->delta_type);
-		break;
-	}
-
-	return NT_STATUS_OK;
-}
-
-NTSTATUS display_sam_entries(TALLOC_CTX *mem_ctx,
-			     enum netr_SamDatabaseID database_id,
-			     struct netr_DELTA_ENUM_ARRAY *r,
-			     bool last_query,
-			     struct samsync_context *ctx)
-{
-	int i;
-
-	for (i = 0; i < r->num_deltas; i++) {
-		display_sam_entry(mem_ctx, database_id, &r->delta_enum[i],
-				  last_query, ctx);
-	}
-
-	return NT_STATUS_OK;
-}

Deleted: branches/samba/upstream/source/libnet/libnet_samsync_keytab.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_samsync_keytab.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_samsync_keytab.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,194 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   dump the remote SAM using rpc samsync operations
-
-   Copyright (C) Guenther Deschner 2008.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "libnet/libnet.h"
-
-#if defined(HAVE_ADS) && defined(ENCTYPE_ARCFOUR_HMAC)
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS keytab_ad_connect(TALLOC_CTX *mem_ctx,
-				  const char *domain_name,
-				  const char *username,
-				  const char *password,
-				  struct libnet_keytab_context *ctx)
-{
-	NTSTATUS status;
-	ADS_STATUS ad_status;
-	ADS_STRUCT *ads;
-	struct netr_DsRGetDCNameInfo *info = NULL;
-	const char *dc;
-
-	status = dsgetdcname(mem_ctx, NULL, domain_name, NULL, NULL, 0, &info);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	dc = strip_hostname(info->dc_unc);
-
-	ads = ads_init(NULL, domain_name, dc);
-	NT_STATUS_HAVE_NO_MEMORY(ads);
-
-	if (getenv(KRB5_ENV_CCNAME) == NULL) {
-		setenv(KRB5_ENV_CCNAME, "MEMORY:libnet_samsync_keytab", 1);
-	}
-
-	ads->auth.user_name = SMB_STRDUP(username);
-	ads->auth.password = SMB_STRDUP(password);
-
-	ad_status = ads_connect_user_creds(ads);
-	if (!ADS_ERR_OK(ad_status)) {
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	ctx->ads = ads;
-
-	ctx->dns_domain_name = talloc_strdup_upper(mem_ctx, ads->config.realm);
-	NT_STATUS_HAVE_NO_MEMORY(ctx->dns_domain_name);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS fetch_sam_entry_keytab(TALLOC_CTX *mem_ctx,
-				       enum netr_SamDatabaseID database_id,
-				       uint32_t rid,
-				       struct netr_DELTA_USER *r,
-				       bool last_query,
-				       struct libnet_keytab_context *ctx)
-{
-	uchar nt_passwd[16];
-	struct libnet_keytab_entry entry;
-
-	if (memcmp(r->ntpassword.hash, ctx->zero_buf, 16) == 0) {
-		return NT_STATUS_OK;
-	}
-
-	sam_pwd_hash(rid, r->ntpassword.hash, nt_passwd, 0);
-
-	entry.name = talloc_strdup(mem_ctx, r->account_name.string);
-	entry.principal = talloc_asprintf(mem_ctx, "%s@%s",
-					  r->account_name.string,
-					  ctx->dns_domain_name);
-	entry.password = data_blob_talloc(mem_ctx, nt_passwd, 16);
-	entry.kvno = ads_get_kvno(ctx->ads, entry.name);
-	entry.enctype = ENCTYPE_NULL;
-
-	NT_STATUS_HAVE_NO_MEMORY(entry.name);
-	NT_STATUS_HAVE_NO_MEMORY(entry.principal);
-	NT_STATUS_HAVE_NO_MEMORY(entry.password.data);
-
-
-	ADD_TO_ARRAY(mem_ctx, struct libnet_keytab_entry, entry,
-		     &ctx->entries, &ctx->count);
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
-				  enum netr_SamDatabaseID database_id,
-				  struct netr_DELTA_ENUM_ARRAY *r,
-				  bool last_query,
-				  struct samsync_context *ctx)
-{
-	NTSTATUS status = NT_STATUS_OK;
-	krb5_error_code ret = 0;
-	static struct libnet_keytab_context *keytab_ctx = NULL;
-	int i;
-
-	if (!keytab_ctx) {
-		ret = libnet_keytab_init(mem_ctx, ctx->output_filename,
-					 &keytab_ctx);
-		if (ret) {
-			status = krb5_to_nt_status(ret);
-			goto out;
-		}
-	}
-
-	status = keytab_ad_connect(mem_ctx,
-				   ctx->domain_name,
-				   ctx->username,
-				   ctx->password,
-				   keytab_ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto out;
-	}
-
-	for (i = 0; i < r->num_deltas; i++) {
-
-		if (r->delta_enum[i].delta_type != NETR_DELTA_USER) {
-			continue;
-		}
-
-		status = fetch_sam_entry_keytab(mem_ctx, database_id,
-						r->delta_enum[i].delta_id_union.rid,
-						r->delta_enum[i].delta_union.user,
-						last_query,
-						keytab_ctx);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto out;
-		}
-	}
-
-	if (last_query) {
-
-		ret = libnet_keytab_add(keytab_ctx);
-		if (ret) {
-			status = krb5_to_nt_status(ret);
-			ctx->error_message = talloc_asprintf(mem_ctx,
-				"Failed to add entries to keytab %s: %s",
-				keytab_ctx->keytab_name, error_message(ret));
-			goto out;
-		}
-
-		ctx->result_message = talloc_asprintf(mem_ctx,
-			"Vampired %d accounts to keytab %s",
-			keytab_ctx->count,
-			keytab_ctx->keytab_name);
-
-		TALLOC_FREE(keytab_ctx);
-	}
-
-	return NT_STATUS_OK;
- out:
-	TALLOC_FREE(keytab_ctx);
-
-	return status;
-}
-
-#else
-
-NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
-				  enum netr_SamDatabaseID database_id,
-				  struct netr_DELTA_ENUM_ARRAY *r,
-				  bool last_query,
-				  struct samsync_context *ctx)
-{
-	return NT_STATUS_NOT_SUPPORTED;
-}
-
-#endif /* defined(HAVE_ADS) && defined(ENCTYPE_ARCFOUR_HMAC) */

Deleted: branches/samba/upstream/source/libnet/libnet_samsync_ldif.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_samsync_ldif.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_samsync_ldif.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1229 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   dump the remote SAM using rpc samsync operations
-
-   Copyright (C) Andrew Tridgell 2002
-   Copyright (C) Tim Potter 2001,2002
-   Copyright (C) Jim McDonough <jmcd at us.ibm.com> 2005
-   Modified by Volker Lendecke 2002
-   Copyright (C) Jeremy Allison 2005.
-   Copyright (C) Guenther Deschner 2008.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "libnet/libnet_samsync.h"
-
-#ifdef HAVE_LDAP
-
-/* uid's and gid's for writing deltas to ldif */
-static uint32 ldif_gid = 999;
-static uint32 ldif_uid = 999;
-
-/* Structure for mapping accounts to groups */
-/* Array element is the group rid */
-typedef struct _groupmap {
-	uint32_t rid;
-	uint32_t gidNumber;
-	const char *sambaSID;
-	const char *group_dn;
-} GROUPMAP;
-
-typedef struct _accountmap {
-	uint32_t rid;
-	const char *cn;
-} ACCOUNTMAP;
-
-struct samsync_ldif_context {
-	GROUPMAP *groupmap;
-	ACCOUNTMAP *accountmap;
-	bool initialized;
-	const char *add_template;
-	const char *mod_template;
-	char *add_name;
-	char *mod_name;
-	FILE *add_file;
-	FILE *mod_file;
-	FILE *ldif_file;
-	const char *suffix;
-	int num_alloced;
-};
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS populate_ldap_for_ldif(const char *sid,
-				       const char *suffix,
-				       const char *builtin_sid,
-				       FILE *add_fd)
-{
-	const char *user_suffix, *group_suffix, *machine_suffix, *idmap_suffix;
-	char *user_attr=NULL, *group_attr=NULL;
-	char *suffix_attr;
-	int len;
-
-	/* Get the suffix attribute */
-	suffix_attr = sstring_sub(suffix, '=', ',');
-	if (suffix_attr == NULL) {
-		len = strlen(suffix);
-		suffix_attr = (char*)SMB_MALLOC(len+1);
-		memcpy(suffix_attr, suffix, len);
-		suffix_attr[len] = '\0';
-	}
-
-	/* Write the base */
-	fprintf(add_fd, "# %s\n", suffix);
-	fprintf(add_fd, "dn: %s\n", suffix);
-	fprintf(add_fd, "objectClass: dcObject\n");
-	fprintf(add_fd, "objectClass: organization\n");
-	fprintf(add_fd, "o: %s\n", suffix_attr);
-	fprintf(add_fd, "dc: %s\n", suffix_attr);
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	user_suffix = lp_ldap_user_suffix();
-	if (user_suffix == NULL) {
-		SAFE_FREE(suffix_attr);
-		return NT_STATUS_NO_MEMORY;
-	}
-	/* If it exists and is distinct from other containers,
-	   Write the Users entity */
-	if (*user_suffix && strcmp(user_suffix, suffix)) {
-		user_attr = sstring_sub(lp_ldap_user_suffix(), '=', ',');
-		fprintf(add_fd, "# %s\n", user_suffix);
-		fprintf(add_fd, "dn: %s\n", user_suffix);
-		fprintf(add_fd, "objectClass: organizationalUnit\n");
-		fprintf(add_fd, "ou: %s\n", user_attr);
-		fprintf(add_fd, "\n");
-		fflush(add_fd);
-	}
-
-
-	group_suffix = lp_ldap_group_suffix();
-	if (group_suffix == NULL) {
-		SAFE_FREE(suffix_attr);
-		SAFE_FREE(user_attr);
-		return NT_STATUS_NO_MEMORY;
-	}
-	/* If it exists and is distinct from other containers,
-	   Write the Groups entity */
-	if (*group_suffix && strcmp(group_suffix, suffix)) {
-		group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
-		fprintf(add_fd, "# %s\n", group_suffix);
-		fprintf(add_fd, "dn: %s\n", group_suffix);
-		fprintf(add_fd, "objectClass: organizationalUnit\n");
-		fprintf(add_fd, "ou: %s\n", group_attr);
-		fprintf(add_fd, "\n");
-		fflush(add_fd);
-	}
-
-	/* If it exists and is distinct from other containers,
-	   Write the Computers entity */
-	machine_suffix = lp_ldap_machine_suffix();
-	if (machine_suffix == NULL) {
-		SAFE_FREE(suffix_attr);
-		SAFE_FREE(user_attr);
-		SAFE_FREE(group_attr);
-		return NT_STATUS_NO_MEMORY;
-	}
-	if (*machine_suffix && strcmp(machine_suffix, user_suffix) &&
-	    strcmp(machine_suffix, suffix)) {
-		char *machine_ou = NULL;
-		fprintf(add_fd, "# %s\n", machine_suffix);
-		fprintf(add_fd, "dn: %s\n", machine_suffix);
-		fprintf(add_fd, "objectClass: organizationalUnit\n");
-		/* this isn't totally correct as it assumes that
-		   there _must_ be an ou. just fixing memleak now. jmcd */
-		machine_ou = sstring_sub(lp_ldap_machine_suffix(), '=', ',');
-		fprintf(add_fd, "ou: %s\n", machine_ou);
-		SAFE_FREE(machine_ou);
-		fprintf(add_fd, "\n");
-		fflush(add_fd);
-	}
-
-	/* If it exists and is distinct from other containers,
-	   Write the IdMap entity */
-	idmap_suffix = lp_ldap_idmap_suffix();
-	if (idmap_suffix == NULL) {
-		SAFE_FREE(suffix_attr);
-		SAFE_FREE(user_attr);
-		SAFE_FREE(group_attr);
-		return NT_STATUS_NO_MEMORY;
-	}
-	if (*idmap_suffix &&
-	    strcmp(idmap_suffix, user_suffix) &&
-	    strcmp(idmap_suffix, suffix)) {
-		char *s;
-		fprintf(add_fd, "# %s\n", idmap_suffix);
-		fprintf(add_fd, "dn: %s\n", idmap_suffix);
-		fprintf(add_fd, "ObjectClass: organizationalUnit\n");
-		s = sstring_sub(lp_ldap_idmap_suffix(), '=', ',');
-		fprintf(add_fd, "ou: %s\n", s);
-		SAFE_FREE(s);
-		fprintf(add_fd, "\n");
-		fflush(add_fd);
-	}
-
-	/* Write the domain entity */
-	fprintf(add_fd, "# %s, %s\n", lp_workgroup(), suffix);
-	fprintf(add_fd, "dn: sambaDomainName=%s,%s\n", lp_workgroup(),
-		suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_DOMINFO);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_IDPOOL);
-	fprintf(add_fd, "sambaDomainName: %s\n", lp_workgroup());
-	fprintf(add_fd, "sambaSID: %s\n", sid);
-	fprintf(add_fd, "uidNumber: %d\n", ++ldif_uid);
-	fprintf(add_fd, "gidNumber: %d\n", ++ldif_gid);
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Domain Admins entity */
-	fprintf(add_fd, "# Domain Admins, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Domain Admins,ou=%s,%s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "cn: Domain Admins\n");
-	fprintf(add_fd, "memberUid: Administrator\n");
-	fprintf(add_fd, "description: Netbios Domain Administrators\n");
-	fprintf(add_fd, "gidNumber: 512\n");
-	fprintf(add_fd, "sambaSID: %s-512\n", sid);
-	fprintf(add_fd, "sambaGroupType: 2\n");
-	fprintf(add_fd, "displayName: Domain Admins\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Domain Users entity */
-	fprintf(add_fd, "# Domain Users, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Domain Users,ou=%s,%s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "cn: Domain Users\n");
-	fprintf(add_fd, "description: Netbios Domain Users\n");
-	fprintf(add_fd, "gidNumber: 513\n");
-	fprintf(add_fd, "sambaSID: %s-513\n", sid);
-	fprintf(add_fd, "sambaGroupType: 2\n");
-	fprintf(add_fd, "displayName: Domain Users\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Domain Guests entity */
-	fprintf(add_fd, "# Domain Guests, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Domain Guests,ou=%s,%s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "cn: Domain Guests\n");
-	fprintf(add_fd, "description: Netbios Domain Guests\n");
-	fprintf(add_fd, "gidNumber: 514\n");
-	fprintf(add_fd, "sambaSID: %s-514\n", sid);
-	fprintf(add_fd, "sambaGroupType: 2\n");
-	fprintf(add_fd, "displayName: Domain Guests\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Domain Computers entity */
-	fprintf(add_fd, "# Domain Computers, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Domain Computers,ou=%s,%s\n",
-		group_attr, suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "gidNumber: 515\n");
-	fprintf(add_fd, "cn: Domain Computers\n");
-	fprintf(add_fd, "description: Netbios Domain Computers accounts\n");
-	fprintf(add_fd, "sambaSID: %s-515\n", sid);
-	fprintf(add_fd, "sambaGroupType: 2\n");
-	fprintf(add_fd, "displayName: Domain Computers\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Admininistrators Groups entity */
-	fprintf(add_fd, "# Administrators, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Administrators,ou=%s,%s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "gidNumber: 544\n");
-	fprintf(add_fd, "cn: Administrators\n");
-	fprintf(add_fd, "description: Netbios Domain Members can fully administer the computer/sambaDomainName\n");
-	fprintf(add_fd, "sambaSID: %s-544\n", builtin_sid);
-	fprintf(add_fd, "sambaGroupType: 5\n");
-	fprintf(add_fd, "displayName: Administrators\n");
-	fprintf(add_fd, "\n");
-
-	/* Write the Print Operator entity */
-	fprintf(add_fd, "# Print Operators, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Print Operators,ou=%s,%s\n",
-		group_attr, suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "gidNumber: 550\n");
-	fprintf(add_fd, "cn: Print Operators\n");
-	fprintf(add_fd, "description: Netbios Domain Print Operators\n");
-	fprintf(add_fd, "sambaSID: %s-550\n", builtin_sid);
-	fprintf(add_fd, "sambaGroupType: 5\n");
-	fprintf(add_fd, "displayName: Print Operators\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Backup Operators entity */
-	fprintf(add_fd, "# Backup Operators, %s, %s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "dn: cn=Backup Operators,ou=%s,%s\n",
-		group_attr, suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "gidNumber: 551\n");
-	fprintf(add_fd, "cn: Backup Operators\n");
-	fprintf(add_fd, "description: Netbios Domain Members can bypass file security to back up files\n");
-	fprintf(add_fd, "sambaSID: %s-551\n", builtin_sid);
-	fprintf(add_fd, "sambaGroupType: 5\n");
-	fprintf(add_fd, "displayName: Backup Operators\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Write the Replicators entity */
-	fprintf(add_fd, "# Replicators, %s, %s\n", group_attr, suffix);
-	fprintf(add_fd, "dn: cn=Replicators,ou=%s,%s\n", group_attr,
-		suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "gidNumber: 552\n");
-	fprintf(add_fd, "cn: Replicators\n");
-	fprintf(add_fd, "description: Netbios Domain Supports file replication in a sambaDomainName\n");
-	fprintf(add_fd, "sambaSID: %s-552\n", builtin_sid);
-	fprintf(add_fd, "sambaGroupType: 5\n");
-	fprintf(add_fd, "displayName: Replicators\n");
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Deallocate memory, and return */
-	SAFE_FREE(suffix_attr);
-	SAFE_FREE(user_attr);
-	SAFE_FREE(group_attr);
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS map_populate_groups(TALLOC_CTX *mem_ctx,
-				    GROUPMAP *groupmap,
-				    ACCOUNTMAP *accountmap,
-				    const char *sid,
-				    const char *suffix,
-				    const char *builtin_sid)
-{
-	char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
-
-	/* Map the groups created by populate_ldap_for_ldif */
-	groupmap[0].rid		= 512;
-	groupmap[0].gidNumber	= 512;
-	groupmap[0].sambaSID	= talloc_asprintf(mem_ctx, "%s-512", sid);
-	groupmap[0].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Domain Admins,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[0].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[0].group_dn);
-
-	accountmap[0].rid	= 512;
-	accountmap[0].cn	= talloc_strdup(mem_ctx, "Domain Admins");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[0].cn);
-
-	groupmap[1].rid		= 513;
-	groupmap[1].gidNumber	= 513;
-	groupmap[1].sambaSID	= talloc_asprintf(mem_ctx, "%s-513", sid);
-	groupmap[1].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Domain Users,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[1].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[1].group_dn);
-
-	accountmap[1].rid	= 513;
-	accountmap[1].cn	= talloc_strdup(mem_ctx, "Domain Users");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[1].cn);
-
-	groupmap[2].rid		= 514;
-	groupmap[2].gidNumber	= 514;
-	groupmap[2].sambaSID	= talloc_asprintf(mem_ctx, "%s-514", sid);
-	groupmap[2].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Domain Guests,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[2].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[2].group_dn);
-
-	accountmap[2].rid	= 514;
-	accountmap[2].cn	= talloc_strdup(mem_ctx, "Domain Guests");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[2].cn);
-
-	groupmap[3].rid		= 515;
-	groupmap[3].gidNumber	= 515;
-	groupmap[3].sambaSID	= talloc_asprintf(mem_ctx, "%s-515", sid);
-	groupmap[3].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Domain Computers,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[3].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[3].group_dn);
-
-	accountmap[3].rid	= 515;
-	accountmap[3].cn	= talloc_strdup(mem_ctx, "Domain Computers");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[3].cn);
-
-	groupmap[4].rid		= 544;
-	groupmap[4].gidNumber	= 544;
-	groupmap[4].sambaSID	= talloc_asprintf(mem_ctx, "%s-544", builtin_sid);
-	groupmap[4].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Administrators,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[4].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[4].group_dn);
-
-	accountmap[4].rid	= 515;
-	accountmap[4].cn	= talloc_strdup(mem_ctx, "Administrators");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[4].cn);
-
-	groupmap[5].rid		= 550;
-	groupmap[5].gidNumber	= 550;
-	groupmap[5].sambaSID	= talloc_asprintf(mem_ctx, "%s-550", builtin_sid);
-	groupmap[5].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Print Operators,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[5].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[5].group_dn);
-
-	accountmap[5].rid	= 550;
-	accountmap[5].cn	= talloc_strdup(mem_ctx, "Print Operators");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[5].cn);
-
-	groupmap[6].rid		= 551;
-	groupmap[6].gidNumber	= 551;
-	groupmap[6].sambaSID	= talloc_asprintf(mem_ctx, "%s-551", builtin_sid);
-	groupmap[6].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Backup Operators,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[6].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[6].group_dn);
-
-	accountmap[6].rid	= 551;
-	accountmap[6].cn	= talloc_strdup(mem_ctx, "Backup Operators");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[6].cn);
-
-	groupmap[7].rid		= 552;
-	groupmap[7].gidNumber	= 552;
-	groupmap[7].sambaSID	= talloc_asprintf(mem_ctx, "%s-552", builtin_sid);
-	groupmap[7].group_dn	= talloc_asprintf(mem_ctx,
-		"cn=Replicators,ou=%s,%s", group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[7].sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap[7].group_dn);
-
-	accountmap[7].rid	= 551;
-	accountmap[7].cn	= talloc_strdup(mem_ctx, "Replicators");
-	NT_STATUS_HAVE_NO_MEMORY(accountmap[7].cn);
-
-	SAFE_FREE(group_attr);
-
-	return NT_STATUS_OK;
-}
-
-/*
- * This is a crap routine, but I think it's the quickest way to solve the
- * UTF8->base64 problem.
- */
-
-static int fprintf_attr(FILE *add_fd, const char *attr_name,
-			const char *fmt, ...)
-{
-	va_list ap;
-	char *value, *p, *base64;
-	DATA_BLOB base64_blob;
-	bool do_base64 = false;
-	int res;
-
-	va_start(ap, fmt);
-	value = talloc_vasprintf(NULL, fmt, ap);
-	va_end(ap);
-
-	SMB_ASSERT(value != NULL);
-
-	for (p=value; *p; p++) {
-		if (*p & 0x80) {
-			do_base64 = true;
-			break;
-		}
-	}
-
-	if (!do_base64) {
-		bool only_whitespace = true;
-		for (p=value; *p; p++) {
-			/*
-			 * I know that this not multibyte safe, but we break
-			 * on the first non-whitespace character anyway.
-			 */
-			if (!isspace(*p)) {
-				only_whitespace = false;
-				break;
-			}
-		}
-		if (only_whitespace) {
-			do_base64 = true;
-		}
-	}
-
-	if (!do_base64) {
-		res = fprintf(add_fd, "%s: %s\n", attr_name, value);
-		TALLOC_FREE(value);
-		return res;
-	}
-
-	base64_blob.data = (unsigned char *)value;
-	base64_blob.length = strlen(value);
-
-	base64 = base64_encode_data_blob(value, base64_blob);
-	SMB_ASSERT(base64 != NULL);
-
-	res = fprintf(add_fd, "%s:: %s\n", attr_name, base64);
-	TALLOC_FREE(value);
-	return res;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS fetch_group_info_to_ldif(TALLOC_CTX *mem_ctx,
-					 struct netr_DELTA_GROUP *r,
-					 GROUPMAP *groupmap,
-					 FILE *add_fd,
-					 const char *sid,
-					 const char *suffix)
-{
-	const char *groupname = r->group_name.string;
-	uint32 grouptype = 0, g_rid = 0;
-	char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
-
-	/* Set up the group type (always 2 for group info) */
-	grouptype = 2;
-
-	/* These groups are entered by populate_ldap_for_ldif */
-	if (strcmp(groupname, "Domain Admins") == 0 ||
-            strcmp(groupname, "Domain Users") == 0 ||
-	    strcmp(groupname, "Domain Guests") == 0 ||
-	    strcmp(groupname, "Domain Computers") == 0 ||
-	    strcmp(groupname, "Administrators") == 0 ||
-	    strcmp(groupname, "Print Operators") == 0 ||
-	    strcmp(groupname, "Backup Operators") == 0 ||
-	    strcmp(groupname, "Replicators") == 0) {
-		SAFE_FREE(group_attr);
-		return NT_STATUS_OK;
-	} else {
-		/* Increment the gid for the new group */
-	        ldif_gid++;
-	}
-
-	/* Map the group rid, gid, and dn */
-	g_rid = r->rid;
-	groupmap->rid = g_rid;
-	groupmap->gidNumber = ldif_gid;
-	groupmap->sambaSID	= talloc_asprintf(mem_ctx, "%s-%d", sid, g_rid);
-	groupmap->group_dn	= talloc_asprintf(mem_ctx,
-	     "cn=%s,ou=%s,%s", groupname, group_attr, suffix);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap->sambaSID);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap->group_dn);
-
-	/* Write the data to the temporary add ldif file */
-	fprintf(add_fd, "# %s, %s, %s\n", groupname, group_attr,
-		suffix);
-	fprintf_attr(add_fd, "dn", "cn=%s,ou=%s,%s", groupname, group_attr,
-		     suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf_attr(add_fd, "cn", "%s", groupname);
-	fprintf(add_fd, "gidNumber: %d\n", ldif_gid);
-	fprintf(add_fd, "sambaSID: %s\n", groupmap->sambaSID);
-	fprintf(add_fd, "sambaGroupType: %d\n", grouptype);
-	fprintf_attr(add_fd, "displayName", "%s", groupname);
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	SAFE_FREE(group_attr);
-	/* Return */
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS fetch_account_info_to_ldif(TALLOC_CTX *mem_ctx,
-					   struct netr_DELTA_USER *r,
-					   GROUPMAP *groupmap,
-					   ACCOUNTMAP *accountmap,
-					   FILE *add_fd,
-					   const char *sid,
-					   const char *suffix,
-					   int alloced)
-{
-	fstring username, logonscript, homedrive, homepath = "", homedir = "";
-	fstring hex_nt_passwd, hex_lm_passwd;
-	fstring description, profilepath, fullname, sambaSID;
-	uchar lm_passwd[16], nt_passwd[16];
-	char *flags, *user_rdn;
-	const char *ou;
-	const char* nopasswd = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
-	static uchar zero_buf[16];
-	uint32 rid = 0, group_rid = 0, gidNumber = 0;
-	time_t unix_time;
-	int i;
-
-	/* Get the username */
-	fstrcpy(username, r->account_name.string);
-
-	/* Get the rid */
-	rid = r->rid;
-
-	/* Map the rid and username for group member info later */
-	accountmap->rid = rid;
-	accountmap->cn = talloc_strdup(mem_ctx, username);
-	NT_STATUS_HAVE_NO_MEMORY(accountmap->cn);
-
-	/* Get the home directory */
-	if (r->acct_flags & ACB_NORMAL) {
-		fstrcpy(homedir, r->home_directory.string);
-		if (!*homedir) {
-			snprintf(homedir, sizeof(homedir), "/home/%s", username);
-		} else {
-			snprintf(homedir, sizeof(homedir), "/nobodyshomedir");
-		}
-		ou = lp_ldap_user_suffix();
-	} else {
-		ou = lp_ldap_machine_suffix();
-		snprintf(homedir, sizeof(homedir), "/machinehomedir");
-	}
-
-        /* Get the logon script */
-	fstrcpy(logonscript, r->logon_script.string);
-
-        /* Get the home drive */
-	fstrcpy(homedrive, r->home_drive.string);
-
-        /* Get the home path */
-	fstrcpy(homepath, r->home_directory.string);
-
-	/* Get the description */
-	fstrcpy(description, r->description.string);
-
-	/* Get the display name */
-	fstrcpy(fullname, r->full_name.string);
-
-	/* Get the profile path */
-	fstrcpy(profilepath, r->profile_path.string);
-
-	/* Get lm and nt password data */
-	if (memcmp(r->lmpassword.hash, zero_buf, 16) != 0) {
-		sam_pwd_hash(r->rid, r->lmpassword.hash, lm_passwd, 0);
-		pdb_sethexpwd(hex_lm_passwd, lm_passwd, r->acct_flags);
-	} else {
-		pdb_sethexpwd(hex_lm_passwd, NULL, 0);
-	}
-	if (memcmp(r->ntpassword.hash, zero_buf, 16) != 0) {
-		sam_pwd_hash(r->rid, r->ntpassword.hash, nt_passwd, 0);
-		pdb_sethexpwd(hex_nt_passwd, nt_passwd, r->acct_flags);
-	} else {
-		pdb_sethexpwd(hex_nt_passwd, NULL, 0);
-	}
-	unix_time = nt_time_to_unix(r->last_password_change);
-
-	/* Increment the uid for the new user */
-	ldif_uid++;
-
-	/* Set up group id and sambaSID for the user */
-	group_rid = r->primary_gid;
-	for (i=0; i<alloced; i++) {
-		if (groupmap[i].rid == group_rid) break;
-	}
-	if (i == alloced){
-		DEBUG(1, ("Could not find rid %d in groupmap array\n",
-			  group_rid));
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-	gidNumber = groupmap[i].gidNumber;
-	snprintf(sambaSID, sizeof(sambaSID), groupmap[i].sambaSID);
-
-	/* Set up sambaAcctFlags */
-	flags = pdb_encode_acct_ctrl(r->acct_flags,
-				     NEW_PW_FORMAT_SPACE_PADDED_LEN);
-
-	/* Add the user to the temporary add ldif file */
-	/* this isn't quite right...we can't assume there's just OU=. jmcd */
-	user_rdn = sstring_sub(ou, '=', ',');
-	fprintf(add_fd, "# %s, %s, %s\n", username, user_rdn, suffix);
-	fprintf_attr(add_fd, "dn", "uid=%s,ou=%s,%s", username, user_rdn,
-		     suffix);
-	SAFE_FREE(user_rdn);
-	fprintf(add_fd, "ObjectClass: top\n");
-	fprintf(add_fd, "objectClass: inetOrgPerson\n");
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXACCOUNT);
-	fprintf(add_fd, "objectClass: shadowAccount\n");
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_SAMBASAMACCOUNT);
-	fprintf_attr(add_fd, "cn", "%s", username);
-	fprintf_attr(add_fd, "sn", "%s", username);
-	fprintf_attr(add_fd, "uid", "%s", username);
-	fprintf(add_fd, "uidNumber: %d\n", ldif_uid);
-	fprintf(add_fd, "gidNumber: %d\n", gidNumber);
-	fprintf_attr(add_fd, "homeDirectory", "%s", homedir);
-	if (*homepath)
-		fprintf_attr(add_fd, "sambaHomePath", "%s", homepath);
-        if (*homedrive)
-                fprintf_attr(add_fd, "sambaHomeDrive", "%s", homedrive);
-        if (*logonscript)
-                fprintf_attr(add_fd, "sambaLogonScript", "%s", logonscript);
-	fprintf(add_fd, "loginShell: %s\n",
-		((r->acct_flags & ACB_NORMAL) ?
-		 "/bin/bash" : "/bin/false"));
-	fprintf(add_fd, "gecos: System User\n");
-	if (*description)
-		fprintf_attr(add_fd, "description", "%s", description);
-	fprintf(add_fd, "sambaSID: %s-%d\n", sid, rid);
-	fprintf(add_fd, "sambaPrimaryGroupSID: %s\n", sambaSID);
-	if(*fullname)
-		fprintf_attr(add_fd, "displayName", "%s", fullname);
-	if(*profilepath)
-		fprintf_attr(add_fd, "sambaProfilePath", "%s", profilepath);
-	if (strcmp(nopasswd, hex_lm_passwd) != 0)
-		fprintf(add_fd, "sambaLMPassword: %s\n", hex_lm_passwd);
-	if (strcmp(nopasswd, hex_nt_passwd) != 0)
-		fprintf(add_fd, "sambaNTPassword: %s\n", hex_nt_passwd);
-	fprintf(add_fd, "sambaPwdLastSet: %d\n", (int)unix_time);
-	fprintf(add_fd, "sambaAcctFlags: %s\n", flags);
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	/* Return */
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS fetch_alias_info_to_ldif(TALLOC_CTX *mem_ctx,
-					 struct netr_DELTA_ALIAS *r,
-					 GROUPMAP *groupmap,
-					 FILE *add_fd,
-					 const char *sid,
-					 const char *suffix,
-					 enum netr_SamDatabaseID database_id)
-{
-	fstring aliasname, description;
-	uint32 grouptype = 0, g_rid = 0;
-	char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
-
-	/* Get the alias name */
-	fstrcpy(aliasname, r->alias_name.string);
-
-	/* Get the alias description */
-	fstrcpy(description, r->description.string);
-
-	/* Set up the group type */
-	switch (database_id) {
-	case SAM_DATABASE_DOMAIN:
-		grouptype = 4;
-		break;
-	case SAM_DATABASE_BUILTIN:
-		grouptype = 5;
-		break;
-	default:
-		grouptype = 4;
-		break;
-	}
-
-	/*
-	  These groups are entered by populate_ldap_for_ldif
-	  Note that populate creates a group called Relicators,
-	  but NT returns a group called Replicator
-	*/
-	if (strcmp(aliasname, "Domain Admins") == 0 ||
-	    strcmp(aliasname, "Domain Users") == 0 ||
-	    strcmp(aliasname, "Domain Guests") == 0 ||
-	    strcmp(aliasname, "Domain Computers") == 0 ||
-	    strcmp(aliasname, "Administrators") == 0 ||
-	    strcmp(aliasname, "Print Operators") == 0 ||
-	    strcmp(aliasname, "Backup Operators") == 0 ||
-	    strcmp(aliasname, "Replicator") == 0) {
-		SAFE_FREE(group_attr);
-		return NT_STATUS_OK;
-	} else {
-		/* Increment the gid for the new group */
-		ldif_gid++;
-	}
-
-	/* Map the group rid and gid */
-	g_rid = r->rid;
-	groupmap->gidNumber = ldif_gid;
-	groupmap->sambaSID = talloc_asprintf(mem_ctx, "%s-%d", sid, g_rid);
-	NT_STATUS_HAVE_NO_MEMORY(groupmap->sambaSID);
-
-	/* Write the data to the temporary add ldif file */
-	fprintf(add_fd, "# %s, %s, %s\n", aliasname, group_attr,
-		suffix);
-	fprintf_attr(add_fd, "dn", "cn=%s,ou=%s,%s", aliasname, group_attr,
-		     suffix);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_POSIXGROUP);
-	fprintf(add_fd, "objectClass: %s\n", LDAP_OBJ_GROUPMAP);
-	fprintf(add_fd, "cn: %s\n", aliasname);
-	fprintf(add_fd, "gidNumber: %d\n", ldif_gid);
-	fprintf(add_fd, "sambaSID: %s\n", groupmap->sambaSID);
-	fprintf(add_fd, "sambaGroupType: %d\n", grouptype);
-	fprintf_attr(add_fd, "displayName", "%s", aliasname);
-	if (description[0])
-		fprintf_attr(add_fd, "description", "%s", description);
-	fprintf(add_fd, "\n");
-	fflush(add_fd);
-
-	SAFE_FREE(group_attr);
-	/* Return */
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS fetch_groupmem_info_to_ldif(struct netr_DELTA_GROUP_MEMBER *r,
-					    uint32_t id_rid,
-					    GROUPMAP *groupmap,
-					    ACCOUNTMAP *accountmap,
-					    FILE *mod_fd, int alloced)
-{
-	fstring group_dn;
-	uint32 group_rid = 0, rid = 0;
-	int i, j, k;
-
-	/* Get the dn for the group */
-	if (r->num_rids > 0) {
-		group_rid = id_rid;
-		for (j=0; j<alloced; j++) {
-			if (groupmap[j].rid == group_rid) break;
-		}
-		if (j == alloced){
-			DEBUG(1, ("Could not find rid %d in groupmap array\n",
-				  group_rid));
-			return NT_STATUS_UNSUCCESSFUL;
-		}
-		snprintf(group_dn, sizeof(group_dn), "%s", groupmap[j].group_dn);
-		fprintf(mod_fd, "dn: %s\n", group_dn);
-
-		/* Get the cn for each member */
-		for (i=0; i < r->num_rids; i++) {
-			rid = r->rids[i];
-			for (k=0; k<alloced; k++) {
-				if (accountmap[k].rid == rid) break;
-			}
-			if (k == alloced){
-				DEBUG(1, ("Could not find rid %d in "
-					  "accountmap array\n", rid));
-				return NT_STATUS_UNSUCCESSFUL;
-			}
-			fprintf(mod_fd, "memberUid: %s\n", accountmap[k].cn);
-		}
-		fprintf(mod_fd, "\n");
-	}
-	fflush(mod_fd);
-
-	/* Return */
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS ldif_init_context(TALLOC_CTX *mem_ctx,
-				  enum netr_SamDatabaseID database_id,
-				  const char *ldif_filename,
-				  const char *domain_sid_str,
-				  struct samsync_ldif_context **ctx)
-{
-	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-	struct samsync_ldif_context *r;
-	const char *add_template = "/tmp/add.ldif.XXXXXX";
-	const char *mod_template = "/tmp/mod.ldif.XXXXXX";
-	const char *builtin_sid = "S-1-5-32";
-
-	/* Get other smb.conf data */
-	if (!(lp_workgroup()) || !*(lp_workgroup())) {
-		DEBUG(0,("workgroup missing from smb.conf--exiting\n"));
-		exit(1);
-	}
-
-	/* Get the ldap suffix */
-	if (!(lp_ldap_suffix()) || !*(lp_ldap_suffix())) {
-		DEBUG(0,("ldap suffix missing from smb.conf--exiting\n"));
-		exit(1);
-	}
-
-	if (*ctx && (*ctx)->initialized) {
-		return NT_STATUS_OK;
-	}
-
-	r = TALLOC_ZERO_P(mem_ctx, struct samsync_ldif_context);
-	NT_STATUS_HAVE_NO_MEMORY(r);
-
-	/* Get the ldap suffix */
-	r->suffix = lp_ldap_suffix();
-
-	/* Ensure we have an output file */
-	if (ldif_filename) {
-		r->ldif_file = fopen(ldif_filename, "a");
-	} else {
-		r->ldif_file = stdout;
-	}
-
-	if (!r->ldif_file) {
-		fprintf(stderr, "Could not open %s\n", ldif_filename);
-		DEBUG(1, ("Could not open %s\n", ldif_filename));
-		status = NT_STATUS_UNSUCCESSFUL;
-		goto done;
-	}
-
-	r->add_template = talloc_strdup(mem_ctx, add_template);
-	r->mod_template = talloc_strdup(mem_ctx, mod_template);
-	if (!r->add_template || !r->mod_template) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	r->add_name = talloc_strdup(mem_ctx, add_template);
-	r->mod_name = talloc_strdup(mem_ctx, mod_template);
-	if (!r->add_name || !r->mod_name) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	/* Open the add and mod ldif files */
-	if (!(r->add_file = fdopen(smb_mkstemp(r->add_name),"w"))) {
-		DEBUG(1, ("Could not open %s\n", r->add_name));
-		status = NT_STATUS_UNSUCCESSFUL;
-		goto done;
-	}
-	if (!(r->mod_file = fdopen(smb_mkstemp(r->mod_name),"w"))) {
-		DEBUG(1, ("Could not open %s\n", r->mod_name));
-		status = NT_STATUS_UNSUCCESSFUL;
-		goto done;
-	}
-
-	/* Allocate initial memory for groupmap and accountmap arrays */
-	r->groupmap = TALLOC_ZERO_ARRAY(mem_ctx, GROUPMAP, 8);
-	r->accountmap = TALLOC_ZERO_ARRAY(mem_ctx, ACCOUNTMAP, 8);
-	if (r->groupmap == NULL || r->accountmap == NULL) {
-		DEBUG(1,("GROUPMAP talloc failed\n"));
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	/* Remember how many we malloced */
-	r->num_alloced = 8;
-
-	/* Initial database population */
-	if (database_id == SAM_DATABASE_DOMAIN) {
-
-		status = populate_ldap_for_ldif(domain_sid_str,
-						r->suffix,
-						builtin_sid,
-						r->add_file);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto done;
-		}
-
-		status = map_populate_groups(mem_ctx,
-					     r->groupmap,
-					     r->accountmap,
-					     domain_sid_str,
-					     r->suffix,
-					     builtin_sid);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto done;
-		}
-	}
-
-	r->initialized = true;
-
-	*ctx = r;
-
-	return NT_STATUS_OK;
- done:
-	TALLOC_FREE(r);
-	return status;
-}
-
-/****************************************************************
-****************************************************************/
-
-static void ldif_free_context(struct samsync_ldif_context *r)
-{
-	if (!r) {
-		return;
-	}
-
-	/* Close and delete the ldif files */
-	if (r->add_file) {
-		fclose(r->add_file);
-	}
-
-	if ((r->add_name != NULL) &&
-	    strcmp(r->add_name, r->add_template) && (unlink(r->add_name))) {
-		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
-			 r->add_name, strerror(errno)));
-	}
-
-	if (r->mod_file) {
-		fclose(r->mod_file);
-	}
-
-	if ((r->mod_name != NULL) &&
-	    strcmp(r->mod_name, r->mod_template) && (unlink(r->mod_name))) {
-		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
-			 r->mod_name, strerror(errno)));
-	}
-
-	if (r->ldif_file && (r->ldif_file != stdout)) {
-		fclose(r->ldif_file);
-	}
-
-	TALLOC_FREE(r);
-}
-
-/****************************************************************
-****************************************************************/
-
-static void ldif_write_output(enum netr_SamDatabaseID database_id,
-			      struct samsync_ldif_context *l)
-{
-	/* Write ldif data to the user's file */
-	if (database_id == SAM_DATABASE_DOMAIN) {
-		fprintf(l->ldif_file,
-			"# SAM_DATABASE_DOMAIN: ADD ENTITIES\n");
-		fprintf(l->ldif_file,
-			"# =================================\n\n");
-		fflush(l->ldif_file);
-	} else if (database_id == SAM_DATABASE_BUILTIN) {
-		fprintf(l->ldif_file,
-			"# SAM_DATABASE_BUILTIN: ADD ENTITIES\n");
-		fprintf(l->ldif_file,
-			"# ==================================\n\n");
-		fflush(l->ldif_file);
-	}
-	fseek(l->add_file, 0, SEEK_SET);
-	transfer_file(fileno(l->add_file), fileno(l->ldif_file), (size_t) -1);
-
-	if (database_id == SAM_DATABASE_DOMAIN) {
-		fprintf(l->ldif_file,
-			"# SAM_DATABASE_DOMAIN: MODIFY ENTITIES\n");
-		fprintf(l->ldif_file,
-			"# ====================================\n\n");
-		fflush(l->ldif_file);
-	} else if (database_id == SAM_DATABASE_BUILTIN) {
-		fprintf(l->ldif_file,
-			"# SAM_DATABASE_BUILTIN: MODIFY ENTITIES\n");
-		fprintf(l->ldif_file,
-			"# =====================================\n\n");
-		fflush(l->ldif_file);
-	}
-	fseek(l->mod_file, 0, SEEK_SET);
-	transfer_file(fileno(l->mod_file), fileno(l->ldif_file), (size_t) -1);
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS fetch_sam_entry_ldif(TALLOC_CTX *mem_ctx,
-				     enum netr_SamDatabaseID database_id,
-				     struct netr_DELTA_ENUM *r,
-				     struct samsync_context *ctx,
-				     uint32_t *a_index,
-				     uint32_t *g_index)
-{
-	union netr_DELTA_UNION u = r->delta_union;
-	union netr_DELTA_ID_UNION id = r->delta_id_union;
-	struct samsync_ldif_context *l =
-		talloc_get_type_abort(ctx->private_data, struct samsync_ldif_context);
-
-	switch (r->delta_type) {
-		case NETR_DELTA_DOMAIN:
-			break;
-
-		case NETR_DELTA_GROUP:
-			fetch_group_info_to_ldif(mem_ctx,
-						 u.group,
-						 &l->groupmap[*g_index],
-						 l->add_file,
-						 ctx->domain_sid_str,
-						 l->suffix);
-			(*g_index)++;
-			break;
-
-		case NETR_DELTA_USER:
-			fetch_account_info_to_ldif(mem_ctx,
-						   u.user,
-						   l->groupmap,
-						   &l->accountmap[*a_index],
-						   l->add_file,
-						   ctx->domain_sid_str,
-						   l->suffix,
-						   l->num_alloced);
-			(*a_index)++;
-			break;
-
-		case NETR_DELTA_ALIAS:
-			fetch_alias_info_to_ldif(mem_ctx,
-						 u.alias,
-						 &l->groupmap[*g_index],
-						 l->add_file,
-						 ctx->domain_sid_str,
-						 l->suffix,
-						 database_id);
-			(*g_index)++;
-			break;
-
-		case NETR_DELTA_GROUP_MEMBER:
-			fetch_groupmem_info_to_ldif(u.group_member,
-						    id.rid,
-						    l->groupmap,
-						    l->accountmap,
-						    l->mod_file,
-						    l->num_alloced);
-			break;
-
-		case NETR_DELTA_ALIAS_MEMBER:
-		case NETR_DELTA_POLICY:
-		case NETR_DELTA_ACCOUNT:
-		case NETR_DELTA_TRUSTED_DOMAIN:
-		case NETR_DELTA_SECRET:
-		case NETR_DELTA_RENAME_GROUP:
-		case NETR_DELTA_RENAME_USER:
-		case NETR_DELTA_RENAME_ALIAS:
-		case NETR_DELTA_DELETE_GROUP:
-		case NETR_DELTA_DELETE_USER:
-		case NETR_DELTA_MODIFY_COUNT:
-		default:
-			break;
-	} /* end of switch */
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-static NTSTATUS ldif_realloc_maps(TALLOC_CTX *mem_ctx,
-				  struct samsync_ldif_context *l,
-				  uint32_t num_entries)
-{
-	/* Re-allocate memory for groupmap and accountmap arrays */
-	l->groupmap = TALLOC_REALLOC_ARRAY(mem_ctx,
-					   l->groupmap,
-					   GROUPMAP,
-					   num_entries + l->num_alloced);
-
-	l->accountmap = TALLOC_REALLOC_ARRAY(mem_ctx,
-					     l->accountmap,
-					     ACCOUNTMAP,
-					     num_entries + l->num_alloced);
-
-	if (l->groupmap == NULL || l->accountmap == NULL) {
-		DEBUG(1,("GROUPMAP talloc failed\n"));
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	/* Initialize the new records */
-	memset(&(l->groupmap[l->num_alloced]), 0,
-	       sizeof(GROUPMAP) * num_entries);
-	memset(&(l->accountmap[l->num_alloced]), 0,
-	       sizeof(ACCOUNTMAP) * num_entries);
-
-	/* Remember how many we alloced this time */
-	l->num_alloced += num_entries;
-
-	return NT_STATUS_OK;
-}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS fetch_sam_entries_ldif(TALLOC_CTX *mem_ctx,
-				enum netr_SamDatabaseID database_id,
-				struct netr_DELTA_ENUM_ARRAY *r,
-				bool last_query,
-				struct samsync_context *ctx)
-{
-	NTSTATUS status;
-	int i;
-	uint32_t g_index = 0, a_index = 0;
-	struct samsync_ldif_context *ldif_ctx =
-		(struct samsync_ldif_context *)ctx->private_data;
-
-	status = ldif_init_context(mem_ctx,
-				   database_id,
-				   ctx->output_filename,
-				   ctx->domain_sid_str,
-				   &ldif_ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto failed;
-	}
-
-	ctx->private_data = ldif_ctx;
-
-	status = ldif_realloc_maps(mem_ctx, ldif_ctx, r->num_deltas);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto failed;
-	}
-
-	for (i = 0; i < r->num_deltas; i++) {
-		status = fetch_sam_entry_ldif(mem_ctx, database_id,
-					      &r->delta_enum[i], ctx,
-					      &a_index, &g_index);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto failed;
-		}
-	}
-
-	/* This was the last query */
-	if (last_query) {
-		ldif_write_output(database_id, ldif_ctx);
-		if (ldif_ctx->ldif_file != stdout) {
-			ctx->result_message = talloc_asprintf(mem_ctx,
-				"Vampired %d accounts and %d groups to %s",
-				a_index, g_index, ctx->output_filename);
-		}
-		ldif_free_context(ldif_ctx);
-		ctx->private_data = NULL;
-	}
-
-	return NT_STATUS_OK;
-
- failed:
-	ldif_free_context(ldif_ctx);
-	ctx->private_data = NULL;
-
-	return status;
-}
-
-#else /* HAVE_LDAP */
-
-NTSTATUS fetch_sam_entries_ldif(TALLOC_CTX *mem_ctx,
-				enum netr_SamDatabaseID database_id,
-				struct netr_DELTA_ENUM_ARRAY *r,
-				bool last_query,
-				struct samsync_context *ctx)
-{
-	return NT_STATUS_NOT_SUPPORTED;
-}
-
-#endif

Deleted: branches/samba/upstream/source/libnet/libnet_samsync_passdb.c
===================================================================
--- branches/samba/upstream/source/libnet/libnet_samsync_passdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libnet/libnet_samsync_passdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,789 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   dump the remote SAM using rpc samsync operations
-
-   Copyright (C) Andrew Tridgell 2002
-   Copyright (C) Tim Potter 2001,2002
-   Copyright (C) Jim McDonough <jmcd at us.ibm.com> 2005
-   Modified by Volker Lendecke 2002
-   Copyright (C) Jeremy Allison 2005.
-   Copyright (C) Guenther Deschner 2008.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "libnet/libnet.h"
-
-/* Convert a struct samu_DELTA to a struct samu. */
-#define STRING_CHANGED (old_string && !new_string) ||\
-		    (!old_string && new_string) ||\
-		(old_string && new_string && (strcmp(old_string, new_string) != 0))
-
-#define STRING_CHANGED_NC(s1,s2) ((s1) && !(s2)) ||\
-		    (!(s1) && (s2)) ||\
-		((s1) && (s2) && (strcmp((s1), (s2)) != 0))
-
-static NTSTATUS sam_account_from_delta(struct samu *account,
-				       struct netr_DELTA_USER *r)
-{
-	const char *old_string, *new_string;
-	time_t unix_time, stored_time;
-	uchar lm_passwd[16], nt_passwd[16];
-	static uchar zero_buf[16];
-
-	/* Username, fullname, home dir, dir drive, logon script, acct
-	   desc, workstations, profile. */
-
-	if (r->account_name.string) {
-		old_string = pdb_get_nt_username(account);
-		new_string = r->account_name.string;
-
-		if (STRING_CHANGED) {
-			pdb_set_nt_username(account, new_string, PDB_CHANGED);
-		}
-
-		/* Unix username is the same - for sanity */
-		old_string = pdb_get_username( account );
-		if (STRING_CHANGED) {
-			pdb_set_username(account, new_string, PDB_CHANGED);
-		}
-	}
-
-	if (r->full_name.string) {
-		old_string = pdb_get_fullname(account);
-		new_string = r->full_name.string;
-
-		if (STRING_CHANGED)
-			pdb_set_fullname(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->home_directory.string) {
-		old_string = pdb_get_homedir(account);
-		new_string = r->home_directory.string;
-
-		if (STRING_CHANGED)
-			pdb_set_homedir(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->home_drive.string) {
-		old_string = pdb_get_dir_drive(account);
-		new_string = r->home_drive.string;
-
-		if (STRING_CHANGED)
-			pdb_set_dir_drive(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->logon_script.string) {
-		old_string = pdb_get_logon_script(account);
-		new_string = r->logon_script.string;
-
-		if (STRING_CHANGED)
-			pdb_set_logon_script(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->description.string) {
-		old_string = pdb_get_acct_desc(account);
-		new_string = r->description.string;
-
-		if (STRING_CHANGED)
-			pdb_set_acct_desc(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->workstations.string) {
-		old_string = pdb_get_workstations(account);
-		new_string = r->workstations.string;
-
-		if (STRING_CHANGED)
-			pdb_set_workstations(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->profile_path.string) {
-		old_string = pdb_get_profile_path(account);
-		new_string = r->profile_path.string;
-
-		if (STRING_CHANGED)
-			pdb_set_profile_path(account, new_string, PDB_CHANGED);
-	}
-
-	if (r->parameters.string) {
-		DATA_BLOB mung;
-		char *newstr;
-		old_string = pdb_get_munged_dial(account);
-		mung.length = r->parameters.length;
-		mung.data = (uint8 *) r->parameters.string;
-		newstr = (mung.length == 0) ? NULL :
-			base64_encode_data_blob(talloc_tos(), mung);
-
-		if (STRING_CHANGED_NC(old_string, newstr))
-			pdb_set_munged_dial(account, newstr, PDB_CHANGED);
-		TALLOC_FREE(newstr);
-	}
-
-	/* User and group sid */
-	if (pdb_get_user_rid(account) != r->rid)
-		pdb_set_user_sid_from_rid(account, r->rid, PDB_CHANGED);
-	if (pdb_get_group_rid(account) != r->primary_gid)
-		pdb_set_group_sid_from_rid(account, r->primary_gid, PDB_CHANGED);
-
-	/* Logon and password information */
-	if (!nt_time_is_zero(&r->last_logon)) {
-		unix_time = nt_time_to_unix(r->last_logon);
-		stored_time = pdb_get_logon_time(account);
-		if (stored_time != unix_time)
-			pdb_set_logon_time(account, unix_time, PDB_CHANGED);
-	}
-
-	if (!nt_time_is_zero(&r->last_logoff)) {
-		unix_time = nt_time_to_unix(r->last_logoff);
-		stored_time = pdb_get_logoff_time(account);
-		if (stored_time != unix_time)
-			pdb_set_logoff_time(account, unix_time,PDB_CHANGED);
-	}
-
-	/* Logon Divs */
-	if (pdb_get_logon_divs(account) != r->logon_hours.units_per_week)
-		pdb_set_logon_divs(account, r->logon_hours.units_per_week, PDB_CHANGED);
-
-#if 0
-	/* no idea what to do with this one - gd */
-	/* Max Logon Hours */
-	if (delta->unknown1 != pdb_get_unknown_6(account)) {
-		pdb_set_unknown_6(account, delta->unknown1, PDB_CHANGED);
-	}
-#endif
-	/* Logon Hours Len */
-	if (r->logon_hours.units_per_week/8 != pdb_get_hours_len(account)) {
-		pdb_set_hours_len(account, r->logon_hours.units_per_week/8, PDB_CHANGED);
-	}
-
-	/* Logon Hours */
-	if (r->logon_hours.bits) {
-		char oldstr[44], newstr[44];
-		pdb_sethexhours(oldstr, pdb_get_hours(account));
-		pdb_sethexhours(newstr, r->logon_hours.bits);
-		if (!strequal(oldstr, newstr))
-			pdb_set_hours(account, r->logon_hours.bits, PDB_CHANGED);
-	}
-
-	if (pdb_get_bad_password_count(account) != r->bad_password_count)
-		pdb_set_bad_password_count(account, r->bad_password_count, PDB_CHANGED);
-
-	if (pdb_get_logon_count(account) != r->logon_count)
-		pdb_set_logon_count(account, r->logon_count, PDB_CHANGED);
-
-	if (!nt_time_is_zero(&r->last_password_change)) {
-		unix_time = nt_time_to_unix(r->last_password_change);
-		stored_time = pdb_get_pass_last_set_time(account);
-		if (stored_time != unix_time)
-			pdb_set_pass_last_set_time(account, unix_time, PDB_CHANGED);
-	} else {
-		/* no last set time, make it now */
-		pdb_set_pass_last_set_time(account, time(NULL), PDB_CHANGED);
-	}
-
-	if (!nt_time_is_zero(&r->acct_expiry)) {
-		unix_time = nt_time_to_unix(r->acct_expiry);
-		stored_time = pdb_get_kickoff_time(account);
-		if (stored_time != unix_time)
-			pdb_set_kickoff_time(account, unix_time, PDB_CHANGED);
-	}
-
-	/* Decode hashes from password hash
-	   Note that win2000 may send us all zeros for the hashes if it doesn't
-	   think this channel is secure enough - don't set the passwords at all
-	   in that case
-	*/
-	if (memcmp(r->ntpassword.hash, zero_buf, 16) != 0) {
-		sam_pwd_hash(r->rid, r->ntpassword.hash, lm_passwd, 0);
-		pdb_set_lanman_passwd(account, lm_passwd, PDB_CHANGED);
-	}
-
-	if (memcmp(r->lmpassword.hash, zero_buf, 16) != 0) {
-		sam_pwd_hash(r->rid, r->lmpassword.hash, nt_passwd, 0);
-		pdb_set_nt_passwd(account, nt_passwd, PDB_CHANGED);
-	}
-
-	/* TODO: account expiry time */
-
-	pdb_set_acct_ctrl(account, r->acct_flags, PDB_CHANGED);
-
-	pdb_set_domain(account, lp_workgroup(), PDB_CHANGED);
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fetch_account_info(uint32_t rid,
-				   struct netr_DELTA_USER *r)
-{
-
-	NTSTATUS nt_ret = NT_STATUS_UNSUCCESSFUL;
-	fstring account;
-	char *add_script = NULL;
-	struct samu *sam_account=NULL;
-	GROUP_MAP map;
-	struct group *grp;
-	DOM_SID user_sid;
-	DOM_SID group_sid;
-	struct passwd *passwd;
-	fstring sid_string;
-
-	fstrcpy(account, r->account_name.string);
-	d_printf("Creating account: %s\n", account);
-
-	if ( !(sam_account = samu_new( NULL )) ) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	if (!(passwd = Get_Pwnam_alloc(sam_account, account))) {
-		/* Create appropriate user */
-		if (r->acct_flags & ACB_NORMAL) {
-			add_script = talloc_strdup(sam_account,
-					lp_adduser_script());
-		} else if ( (r->acct_flags & ACB_WSTRUST) ||
-			    (r->acct_flags & ACB_SVRTRUST) ||
-			    (r->acct_flags & ACB_DOMTRUST) ) {
-			add_script = talloc_strdup(sam_account,
-					lp_addmachine_script());
-		} else {
-			DEBUG(1, ("Unknown user type: %s\n",
-				  pdb_encode_acct_ctrl(r->acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)));
-			nt_ret = NT_STATUS_UNSUCCESSFUL;
-			goto done;
-		}
-		if (!add_script) {
-			nt_ret = NT_STATUS_NO_MEMORY;
-			goto done;
-		}
-		if (*add_script) {
-			int add_ret;
-			add_script = talloc_all_string_sub(sam_account,
-					add_script,
-					"%u",
-					account);
-			if (!add_script) {
-				nt_ret = NT_STATUS_NO_MEMORY;
-				goto done;
-			}
-			add_ret = smbrun(add_script,NULL);
-			DEBUG(add_ret ? 0 : 1,("fetch_account: Running the command `%s' "
-				 "gave %d\n", add_script, add_ret));
-			if (add_ret == 0) {
-				smb_nscd_flush_user_cache();
-			}
-		}
-
-		/* try and find the possible unix account again */
-		if ( !(passwd = Get_Pwnam_alloc(sam_account, account)) ) {
-			d_fprintf(stderr, "Could not create posix account info for '%s'\n", account);
-			nt_ret = NT_STATUS_NO_SUCH_USER;
-			goto done;
-		}
-	}
-
-	sid_copy(&user_sid, get_global_sam_sid());
-	sid_append_rid(&user_sid, r->rid);
-
-	DEBUG(3, ("Attempting to find SID %s for user %s in the passdb\n",
-		  sid_to_fstring(sid_string, &user_sid), account));
-	if (!pdb_getsampwsid(sam_account, &user_sid)) {
-		sam_account_from_delta(sam_account, r);
-		DEBUG(3, ("Attempting to add user SID %s for user %s in the passdb\n",
-			  sid_to_fstring(sid_string, &user_sid),
-			  pdb_get_username(sam_account)));
-		if (!NT_STATUS_IS_OK(pdb_add_sam_account(sam_account))) {
-			DEBUG(1, ("SAM Account for %s failed to be added to the passdb!\n",
-				  account));
-			return NT_STATUS_ACCESS_DENIED;
-		}
-	} else {
-		sam_account_from_delta(sam_account, r);
-		DEBUG(3, ("Attempting to update user SID %s for user %s in the passdb\n",
-			  sid_to_fstring(sid_string, &user_sid),
-			  pdb_get_username(sam_account)));
-		if (!NT_STATUS_IS_OK(pdb_update_sam_account(sam_account))) {
-			DEBUG(1, ("SAM Account for %s failed to be updated in the passdb!\n",
-				  account));
-			TALLOC_FREE(sam_account);
-			return NT_STATUS_ACCESS_DENIED;
-		}
-	}
-
-	if (pdb_get_group_sid(sam_account) == NULL) {
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	group_sid = *pdb_get_group_sid(sam_account);
-
-	if (!pdb_getgrsid(&map, group_sid)) {
-		DEBUG(0, ("Primary group of %s has no mapping!\n",
-			  pdb_get_username(sam_account)));
-	} else {
-		if (map.gid != passwd->pw_gid) {
-			if (!(grp = getgrgid(map.gid))) {
-				DEBUG(0, ("Could not find unix group %lu for user %s (group SID=%s)\n",
-					  (unsigned long)map.gid, pdb_get_username(sam_account), sid_string_tos(&group_sid)));
-			} else {
-				smb_set_primary_group(grp->gr_name, pdb_get_username(sam_account));
-			}
-		}
-	}
-
-	if ( !passwd ) {
-		DEBUG(1, ("No unix user for this account (%s), cannot adjust mappings\n",
-			pdb_get_username(sam_account)));
-	}
-
- done:
-	TALLOC_FREE(sam_account);
-	return nt_ret;
-}
-
-static NTSTATUS fetch_group_info(uint32_t rid,
-				 struct netr_DELTA_GROUP *r)
-{
-	fstring name;
-	fstring comment;
-	struct group *grp = NULL;
-	DOM_SID group_sid;
-	fstring sid_string;
-	GROUP_MAP map;
-	bool insert = true;
-
-	fstrcpy(name, r->group_name.string);
-	fstrcpy(comment, r->description.string);
-
-	/* add the group to the mapping table */
-	sid_copy(&group_sid, get_global_sam_sid());
-	sid_append_rid(&group_sid, rid);
-	sid_to_fstring(sid_string, &group_sid);
-
-	if (pdb_getgrsid(&map, group_sid)) {
-		if ( map.gid != -1 )
-			grp = getgrgid(map.gid);
-		insert = false;
-	}
-
-	if (grp == NULL) {
-		gid_t gid;
-
-		/* No group found from mapping, find it from its name. */
-		if ((grp = getgrnam(name)) == NULL) {
-
-			/* No appropriate group found, create one */
-
-			d_printf("Creating unix group: '%s'\n", name);
-
-			if (smb_create_group(name, &gid) != 0)
-				return NT_STATUS_ACCESS_DENIED;
-
-			if ((grp = getgrnam(name)) == NULL)
-				return NT_STATUS_ACCESS_DENIED;
-		}
-	}
-
-	map.gid = grp->gr_gid;
-	map.sid = group_sid;
-	map.sid_name_use = SID_NAME_DOM_GRP;
-	fstrcpy(map.nt_name, name);
-	if (r->description.string) {
-		fstrcpy(map.comment, comment);
-	} else {
-		fstrcpy(map.comment, "");
-	}
-
-	if (insert)
-		pdb_add_group_mapping_entry(&map);
-	else
-		pdb_update_group_mapping_entry(&map);
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fetch_group_mem_info(uint32_t rid,
-				     struct netr_DELTA_GROUP_MEMBER *r)
-{
-	int i;
-	TALLOC_CTX *t = NULL;
-	char **nt_members = NULL;
-	char **unix_members;
-	DOM_SID group_sid;
-	GROUP_MAP map;
-	struct group *grp;
-
-	if (r->num_rids == 0) {
-		return NT_STATUS_OK;
-	}
-
-	sid_copy(&group_sid, get_global_sam_sid());
-	sid_append_rid(&group_sid, rid);
-
-	if (!get_domain_group_from_sid(group_sid, &map)) {
-		DEBUG(0, ("Could not find global group %d\n", rid));
-		return NT_STATUS_NO_SUCH_GROUP;
-	}
-
-	if (!(grp = getgrgid(map.gid))) {
-		DEBUG(0, ("Could not find unix group %lu\n", (unsigned long)map.gid));
-		return NT_STATUS_NO_SUCH_GROUP;
-	}
-
-	d_printf("Group members of %s: ", grp->gr_name);
-
-	if (!(t = talloc_init("fetch_group_mem_info"))) {
-		DEBUG(0, ("could not talloc_init\n"));
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	if (r->num_rids) {
-		if ((nt_members = TALLOC_ZERO_ARRAY(t, char *, r->num_rids)) == NULL) {
-			DEBUG(0, ("talloc failed\n"));
-			talloc_free(t);
-			return NT_STATUS_NO_MEMORY;
-		}
-	} else {
-		nt_members = NULL;
-	}
-
-	for (i=0; i < r->num_rids; i++) {
-		struct samu *member = NULL;
-		DOM_SID member_sid;
-
-		if ( !(member = samu_new(t)) ) {
-			talloc_destroy(t);
-			return NT_STATUS_NO_MEMORY;
-		}
-
-		sid_copy(&member_sid, get_global_sam_sid());
-		sid_append_rid(&member_sid, r->rids[i]);
-
-		if (!pdb_getsampwsid(member, &member_sid)) {
-			DEBUG(1, ("Found bogus group member: %d (member_sid=%s group=%s)\n",
-				  r->rids[i], sid_string_tos(&member_sid), grp->gr_name));
-			TALLOC_FREE(member);
-			continue;
-		}
-
-		if (pdb_get_group_rid(member) == rid) {
-			d_printf("%s(primary),", pdb_get_username(member));
-			TALLOC_FREE(member);
-			continue;
-		}
-
-		d_printf("%s,", pdb_get_username(member));
-		nt_members[i] = talloc_strdup(t, pdb_get_username(member));
-		TALLOC_FREE(member);
-	}
-
-	d_printf("\n");
-
-	unix_members = grp->gr_mem;
-
-	while (*unix_members) {
-		bool is_nt_member = false;
-		for (i=0; i < r->num_rids; i++) {
-			if (nt_members[i] == NULL) {
-				/* This was a primary group */
-				continue;
-			}
-
-			if (strcmp(*unix_members, nt_members[i]) == 0) {
-				is_nt_member = true;
-				break;
-			}
-		}
-		if (!is_nt_member) {
-			/* We look at a unix group member that is not
-			   an nt group member. So, remove it. NT is
-			   boss here. */
-			smb_delete_user_group(grp->gr_name, *unix_members);
-		}
-		unix_members += 1;
-	}
-
-	for (i=0; i < r->num_rids; i++) {
-		bool is_unix_member = false;
-
-		if (nt_members[i] == NULL) {
-			/* This was the primary group */
-			continue;
-		}
-
-		unix_members = grp->gr_mem;
-
-		while (*unix_members) {
-			if (strcmp(*unix_members, nt_members[i]) == 0) {
-				is_unix_member = true;
-				break;
-			}
-			unix_members += 1;
-		}
-
-		if (!is_unix_member) {
-			/* We look at a nt group member that is not a
-                           unix group member currently. So, add the nt
-                           group member. */
-			smb_add_user_group(grp->gr_name, nt_members[i]);
-		}
-	}
-
-	talloc_destroy(t);
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fetch_alias_info(uint32_t rid,
-				 struct netr_DELTA_ALIAS *r,
-				 const DOM_SID *dom_sid)
-{
-	fstring name;
-	fstring comment;
-	struct group *grp = NULL;
-	DOM_SID alias_sid;
-	fstring sid_string;
-	GROUP_MAP map;
-	bool insert = true;
-
-	fstrcpy(name, r->alias_name.string);
-	fstrcpy(comment, r->description.string);
-
-	/* Find out whether the group is already mapped */
-	sid_copy(&alias_sid, dom_sid);
-	sid_append_rid(&alias_sid, rid);
-	sid_to_fstring(sid_string, &alias_sid);
-
-	if (pdb_getgrsid(&map, alias_sid)) {
-		grp = getgrgid(map.gid);
-		insert = false;
-	}
-
-	if (grp == NULL) {
-		gid_t gid;
-
-		/* No group found from mapping, find it from its name. */
-		if ((grp = getgrnam(name)) == NULL) {
-			/* No appropriate group found, create one */
-			d_printf("Creating unix group: '%s'\n", name);
-			if (smb_create_group(name, &gid) != 0)
-				return NT_STATUS_ACCESS_DENIED;
-			if ((grp = getgrgid(gid)) == NULL)
-				return NT_STATUS_ACCESS_DENIED;
-		}
-	}
-
-	map.gid = grp->gr_gid;
-	map.sid = alias_sid;
-
-	if (sid_equal(dom_sid, &global_sid_Builtin))
-		map.sid_name_use = SID_NAME_WKN_GRP;
-	else
-		map.sid_name_use = SID_NAME_ALIAS;
-
-	fstrcpy(map.nt_name, name);
-	fstrcpy(map.comment, comment);
-
-	if (insert)
-		pdb_add_group_mapping_entry(&map);
-	else
-		pdb_update_group_mapping_entry(&map);
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fetch_alias_mem(uint32_t rid,
-				struct netr_DELTA_ALIAS_MEMBER *r,
-				const DOM_SID *dom_sid)
-{
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fetch_domain_info(uint32_t rid,
-				  struct netr_DELTA_DOMAIN *r)
-{
-	time_t u_max_age, u_min_age, u_logout;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-	const char *domname;
-	struct netr_AcctLockStr *lockstr = NULL;
-	NTSTATUS status;
-	TALLOC_CTX *mem_ctx = talloc_tos();
-
-	status = pull_netr_AcctLockStr(mem_ctx, &r->account_lockout,
-				       &lockstr);
-	if (!NT_STATUS_IS_OK(status)) {
-		d_printf("failed to pull account lockout string: %s\n",
-			nt_errstr(status));
-	}
-
-	u_max_age = uint64s_nt_time_to_unix_abs((uint64 *)&r->max_password_age);
-	u_min_age = uint64s_nt_time_to_unix_abs((uint64 *)&r->min_password_age);
-	u_logout = uint64s_nt_time_to_unix_abs((uint64 *)&r->force_logoff_time);
-
-	domname = r->domain_name.string;
-	if (!domname) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	/* we don't handle BUILTIN account policies */
-	if (!strequal(domname, get_global_sam_name())) {
-		printf("skipping SAM_DOMAIN_INFO delta for '%s' (is not my domain)\n", domname);
-		return NT_STATUS_OK;
-	}
-
-
-	if (!pdb_set_account_policy(AP_PASSWORD_HISTORY,
-				    r->password_history_length))
-		return nt_status;
-
-	if (!pdb_set_account_policy(AP_MIN_PASSWORD_LEN,
-				    r->min_password_length))
-		return nt_status;
-
-	if (!pdb_set_account_policy(AP_MAX_PASSWORD_AGE, (uint32)u_max_age))
-		return nt_status;
-
-	if (!pdb_set_account_policy(AP_MIN_PASSWORD_AGE, (uint32)u_min_age))
-		return nt_status;
-
-	if (!pdb_set_account_policy(AP_TIME_TO_LOGOUT, (uint32)u_logout))
-		return nt_status;
-
-	if (lockstr) {
-		time_t u_lockoutreset, u_lockouttime;
-
-		u_lockoutreset = uint64s_nt_time_to_unix_abs(&lockstr->reset_count);
-		u_lockouttime = uint64s_nt_time_to_unix_abs((uint64_t *)&lockstr->lockout_duration);
-
-		if (!pdb_set_account_policy(AP_BAD_ATTEMPT_LOCKOUT,
-					    lockstr->bad_attempt_lockout))
-			return nt_status;
-
-		if (!pdb_set_account_policy(AP_RESET_COUNT_TIME, (uint32_t)u_lockoutreset/60))
-			return nt_status;
-
-		if (u_lockouttime != -1)
-			u_lockouttime /= 60;
-
-		if (!pdb_set_account_policy(AP_LOCK_ACCOUNT_DURATION, (uint32_t)u_lockouttime))
-			return nt_status;
-	}
-
-	if (!pdb_set_account_policy(AP_USER_MUST_LOGON_TO_CHG_PASS,
-				    r->logon_to_chgpass))
-		return nt_status;
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fetch_sam_entry(TALLOC_CTX *mem_ctx,
-				enum netr_SamDatabaseID database_id,
-				struct netr_DELTA_ENUM *r,
-				struct samsync_context *ctx)
-{
-	switch(r->delta_type) {
-	case NETR_DELTA_USER:
-		fetch_account_info(r->delta_id_union.rid,
-				   r->delta_union.user);
-		break;
-	case NETR_DELTA_GROUP:
-		fetch_group_info(r->delta_id_union.rid,
-				 r->delta_union.group);
-		break;
-	case NETR_DELTA_GROUP_MEMBER:
-		fetch_group_mem_info(r->delta_id_union.rid,
-				     r->delta_union.group_member);
-		break;
-	case NETR_DELTA_ALIAS:
-		fetch_alias_info(r->delta_id_union.rid,
-				 r->delta_union.alias,
-				 ctx->domain_sid);
-		break;
-	case NETR_DELTA_ALIAS_MEMBER:
-		fetch_alias_mem(r->delta_id_union.rid,
-				r->delta_union.alias_member,
-				ctx->domain_sid);
-		break;
-	case NETR_DELTA_DOMAIN:
-		fetch_domain_info(r->delta_id_union.rid,
-				  r->delta_union.domain);
-		break;
-	/* The following types are recognised but not handled */
-	case NETR_DELTA_RENAME_GROUP:
-		d_printf("NETR_DELTA_RENAME_GROUP not handled\n");
-		break;
-	case NETR_DELTA_RENAME_USER:
-		d_printf("NETR_DELTA_RENAME_USER not handled\n");
-		break;
-	case NETR_DELTA_RENAME_ALIAS:
-		d_printf("NETR_DELTA_RENAME_ALIAS not handled\n");
-		break;
-	case NETR_DELTA_POLICY:
-		d_printf("NETR_DELTA_POLICY not handled\n");
-		break;
-	case NETR_DELTA_TRUSTED_DOMAIN:
-		d_printf("NETR_DELTA_TRUSTED_DOMAIN not handled\n");
-		break;
-	case NETR_DELTA_ACCOUNT:
-		d_printf("NETR_DELTA_ACCOUNT not handled\n");
-		break;
-	case NETR_DELTA_SECRET:
-		d_printf("NETR_DELTA_SECRET not handled\n");
-		break;
-	case NETR_DELTA_DELETE_GROUP:
-		d_printf("NETR_DELTA_DELETE_GROUP not handled\n");
-		break;
-	case NETR_DELTA_DELETE_USER:
-		d_printf("NETR_DELTA_DELETE_USER not handled\n");
-		break;
-	case NETR_DELTA_MODIFY_COUNT:
-		d_printf("NETR_DELTA_MODIFY_COUNT not handled\n");
-		break;
-	case NETR_DELTA_DELETE_ALIAS:
-		d_printf("NETR_DELTA_DELETE_ALIAS not handled\n");
-		break;
-	case NETR_DELTA_DELETE_TRUST:
-		d_printf("NETR_DELTA_DELETE_TRUST not handled\n");
-		break;
-	case NETR_DELTA_DELETE_ACCOUNT:
-		d_printf("NETR_DELTA_DELETE_ACCOUNT not handled\n");
-		break;
-	case NETR_DELTA_DELETE_SECRET:
-		d_printf("NETR_DELTA_DELETE_SECRET not handled\n");
-		break;
-	case NETR_DELTA_DELETE_GROUP2:
-		d_printf("NETR_DELTA_DELETE_GROUP2 not handled\n");
-		break;
-	case NETR_DELTA_DELETE_USER2:
-		d_printf("NETR_DELTA_DELETE_USER2 not handled\n");
-		break;
-	default:
-		d_printf("Unknown delta record type %d\n", r->delta_type);
-		break;
-	}
-
-	return NT_STATUS_OK;
-}
-
-NTSTATUS fetch_sam_entries(TALLOC_CTX *mem_ctx,
-			   enum netr_SamDatabaseID database_id,
-			   struct netr_DELTA_ENUM_ARRAY *r,
-			   bool last_query,
-			   struct samsync_context *ctx)
-{
-	int i;
-
-	for (i = 0; i < r->num_deltas; i++) {
-		fetch_sam_entry(mem_ctx, database_id, &r->delta_enum[i], ctx);
-	}
-
-	return NT_STATUS_OK;
-}

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_dfs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_dfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_dfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,6 +21,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_GETMANAGERVERSION,
 				&r);
@@ -69,6 +70,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ADD,
 				&r);
@@ -116,6 +118,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_REMOVE,
 				&r);
@@ -167,6 +170,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_SETINFO,
 				&r);
@@ -217,6 +221,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_GETINFO,
 				&r);
@@ -267,6 +272,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ENUM,
 				&r);
@@ -314,6 +320,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_RENAME,
 				&r);
@@ -355,6 +362,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_MOVE,
 				&r);
@@ -396,6 +404,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_MANAGERGETCONFIGINFO,
 				&r);
@@ -437,6 +446,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_MANAGERSENDSITEINFO,
 				&r);
@@ -496,6 +506,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ADDFTROOT,
 				&r);
@@ -552,6 +563,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_REMOVEFTROOT,
 				&r);
@@ -604,6 +616,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ADDSTDROOT,
 				&r);
@@ -651,6 +664,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_REMOVESTDROOT,
 				&r);
@@ -696,6 +710,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_MANAGERINITIALIZE,
 				&r);
@@ -745,6 +760,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ADDSTDROOTFORCED,
 				&r);
@@ -794,6 +810,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_GETDCADDRESS,
 				&r);
@@ -846,6 +863,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_SETDCADDRESS,
 				&r);
@@ -891,6 +909,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_FLUSHFTTABLE,
 				&r);
@@ -932,6 +951,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ADD2,
 				&r);
@@ -973,6 +993,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_REMOVE2,
 				&r);
@@ -1024,6 +1045,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_ENUMEX,
 				&r);
@@ -1071,6 +1093,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETDFS,
 				&ndr_table_netdfs,
 				NDR_DFS_SETINFO2,
 				&r);

Deleted: branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1167 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * client auto-generated by pidl. DO NOT MODIFY!
- */
-
-#include "includes.h"
-#include "librpc/gen_ndr/cli_drsuapi.h"
-
-NTSTATUS rpccli_drsuapi_DsBind(struct rpc_pipe_client *cli,
-			       TALLOC_CTX *mem_ctx,
-			       struct GUID *bind_guid /* [in] [unique] */,
-			       struct drsuapi_DsBindInfoCtr *bind_info /* [in,out] [unique] */,
-			       struct policy_handle *bind_handle /* [out] [ref] */,
-			       WERROR *werror)
-{
-	struct drsuapi_DsBind r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_guid = bind_guid;
-	r.in.bind_info = bind_info;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsBind, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSBIND,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsBind, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	if (bind_info && r.out.bind_info) {
-		*bind_info = *r.out.bind_info;
-	}
-	*bind_handle = *r.out.bind_handle;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsUnbind(struct rpc_pipe_client *cli,
-				 TALLOC_CTX *mem_ctx,
-				 struct policy_handle *bind_handle /* [in,out] [ref] */,
-				 WERROR *werror)
-{
-	struct drsuapi_DsUnbind r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsUnbind, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSUNBIND,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsUnbind, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*bind_handle = *r.out.bind_handle;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsReplicaSync(struct rpc_pipe_client *cli,
-				      TALLOC_CTX *mem_ctx,
-				      struct policy_handle *bind_handle /* [in] [ref] */,
-				      int32_t level /* [in]  */,
-				      union drsuapi_DsReplicaSyncRequest req /* [in] [switch_is(level)] */,
-				      WERROR *werror)
-{
-	struct drsuapi_DsReplicaSync r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaSync, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSREPLICASYNC,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaSync, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsGetNCChanges(struct rpc_pipe_client *cli,
-				       TALLOC_CTX *mem_ctx,
-				       struct policy_handle *bind_handle /* [in] [ref] */,
-				       int32_t level /* [in]  */,
-				       union drsuapi_DsGetNCChangesRequest *req /* [in] [ref,switch_is(level)] */,
-				       int32_t *level_out /* [out] [ref] */,
-				       union drsuapi_DsGetNCChangesCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-				       WERROR *werror)
-{
-	struct drsuapi_DsGetNCChanges r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsGetNCChanges, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSGETNCCHANGES,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsGetNCChanges, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsReplicaUpdateRefs(struct rpc_pipe_client *cli,
-					    TALLOC_CTX *mem_ctx,
-					    struct policy_handle *bind_handle /* [in] [ref] */,
-					    int32_t level /* [in]  */,
-					    union drsuapi_DsReplicaUpdateRefsRequest req /* [in] [switch_is(level)] */,
-					    WERROR *werror)
-{
-	struct drsuapi_DsReplicaUpdateRefs r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaUpdateRefs, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSREPLICAUPDATEREFS,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaUpdateRefs, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_REPLICA_ADD(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    WERROR *werror)
-{
-	struct DRSUAPI_REPLICA_ADD r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_ADD, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_REPLICA_ADD,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_ADD, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_REPLICA_DEL(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    WERROR *werror)
-{
-	struct DRSUAPI_REPLICA_DEL r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_DEL, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_REPLICA_DEL,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_DEL, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY(struct rpc_pipe_client *cli,
-				       TALLOC_CTX *mem_ctx,
-				       WERROR *werror)
-{
-	struct DRSUAPI_REPLICA_MODIFY r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_MODIFY, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_REPLICA_MODIFY,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_MODIFY, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_VERIFY_NAMES(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     WERROR *werror)
-{
-	struct DRSUAPI_VERIFY_NAMES r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_VERIFY_NAMES, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_VERIFY_NAMES,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_VERIFY_NAMES, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsGetMemberships(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 int32_t level /* [in]  */,
-					 union drsuapi_DsGetMembershipsRequest *req /* [in] [ref,switch_is(level)] */,
-					 int32_t *level_out /* [out] [ref] */,
-					 union drsuapi_DsGetMembershipsCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-					 WERROR *werror)
-{
-	struct drsuapi_DsGetMemberships r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsGetMemberships, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSGETMEMBERSHIPS,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsGetMemberships, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_INTER_DOMAIN_MOVE(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  WERROR *werror)
-{
-	struct DRSUAPI_INTER_DOMAIN_MOVE r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_INTER_DOMAIN_MOVE, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_INTER_DOMAIN_MOVE,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_INTER_DOMAIN_MOVE, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsGetNT4ChangeLog(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  struct policy_handle *bind_handle /* [in] [ref] */,
-					  uint32_t level /* [in]  */,
-					  union drsuapi_DsGetNT4ChangeLogRequest *req /* [in] [ref,switch_is(level)] */,
-					  uint32_t *level_out /* [out] [ref] */,
-					  union drsuapi_DsGetNT4ChangeLogInfo *info /* [out] [ref,switch_is(*level_out)] */,
-					  WERROR *werror)
-{
-	struct drsuapi_DsGetNT4ChangeLog r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsGetNT4ChangeLog, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSGETNT4CHANGELOG,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsGetNT4ChangeLog, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*info = *r.out.info;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsCrackNames(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     struct policy_handle *bind_handle /* [in] [ref] */,
-				     int32_t level /* [in]  */,
-				     union drsuapi_DsNameRequest *req /* [in] [ref,switch_is(level)] */,
-				     int32_t *level_out /* [out] [ref] */,
-				     union drsuapi_DsNameCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-				     WERROR *werror)
-{
-	struct drsuapi_DsCrackNames r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsCrackNames, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSCRACKNAMES,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsCrackNames, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsWriteAccountSpn(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  struct policy_handle *bind_handle /* [in] [ref] */,
-					  int32_t level /* [in]  */,
-					  union drsuapi_DsWriteAccountSpnRequest *req /* [in] [ref,switch_is(level)] */,
-					  int32_t *level_out /* [out] [ref] */,
-					  union drsuapi_DsWriteAccountSpnResult *res /* [out] [ref,switch_is(*level_out)] */,
-					  WERROR *werror)
-{
-	struct drsuapi_DsWriteAccountSpn r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsWriteAccountSpn, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSWRITEACCOUNTSPN,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsWriteAccountSpn, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*res = *r.out.res;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsRemoveDSServer(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 int32_t level /* [in]  */,
-					 union drsuapi_DsRemoveDSServerRequest *req /* [in] [ref,switch_is(level)] */,
-					 int32_t *level_out /* [out] [ref] */,
-					 union drsuapi_DsRemoveDSServerResult *res /* [out] [ref,switch_is(*level_out)] */,
-					 WERROR *werror)
-{
-	struct drsuapi_DsRemoveDSServer r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsRemoveDSServer, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSREMOVEDSSERVER,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsRemoveDSServer, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*res = *r.out.res;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_REMOVE_DS_DOMAIN(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 WERROR *werror)
-{
-	struct DRSUAPI_REMOVE_DS_DOMAIN r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_REMOVE_DS_DOMAIN, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_REMOVE_DS_DOMAIN,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_REMOVE_DS_DOMAIN, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsGetDomainControllerInfo(struct rpc_pipe_client *cli,
-						  TALLOC_CTX *mem_ctx,
-						  struct policy_handle *bind_handle /* [in] [ref] */,
-						  int32_t level /* [in]  */,
-						  union drsuapi_DsGetDCInfoRequest *req /* [in] [ref,switch_is(level)] */,
-						  int32_t *level_out /* [out] [ref] */,
-						  union drsuapi_DsGetDCInfoCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-						  WERROR *werror)
-{
-	struct drsuapi_DsGetDomainControllerInfo r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsGetDomainControllerInfo, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSGETDOMAINCONTROLLERINFO,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsGetDomainControllerInfo, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsAddEntry(struct rpc_pipe_client *cli,
-				   TALLOC_CTX *mem_ctx,
-				   struct policy_handle *bind_handle /* [in] [ref] */,
-				   int32_t level /* [in]  */,
-				   union drsuapi_DsAddEntryRequest *req /* [in] [ref,switch_is(level)] */,
-				   int32_t *level_out /* [out] [ref] */,
-				   union drsuapi_DsAddEntryCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-				   WERROR *werror)
-{
-	struct drsuapi_DsAddEntry r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsAddEntry, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSADDENTRY,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsAddEntry, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_EXECUTE_KCC(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    WERROR *werror)
-{
-	struct DRSUAPI_EXECUTE_KCC r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_EXECUTE_KCC, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_EXECUTE_KCC,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_EXECUTE_KCC, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsReplicaGetInfo(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 enum drsuapi_DsReplicaGetInfoLevel level /* [in]  */,
-					 union drsuapi_DsReplicaGetInfoRequest *req /* [in] [ref,switch_is(level)] */,
-					 enum drsuapi_DsReplicaInfoType *info_type /* [out] [ref] */,
-					 union drsuapi_DsReplicaInfo *info /* [out] [ref,switch_is(*info_type)] */,
-					 WERROR *werror)
-{
-	struct drsuapi_DsReplicaGetInfo r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsReplicaGetInfo, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSREPLICAGETINFO,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsReplicaGetInfo, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*info_type = *r.out.info_type;
-	*info = *r.out.info;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_ADD_SID_HISTORY(struct rpc_pipe_client *cli,
-					TALLOC_CTX *mem_ctx,
-					WERROR *werror)
-{
-	struct DRSUAPI_ADD_SID_HISTORY r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_ADD_SID_HISTORY, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_ADD_SID_HISTORY,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_ADD_SID_HISTORY, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_DsGetMemberships2(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  struct policy_handle *bind_handle /* [in] [ref] */,
-					  int32_t level /* [in]  */,
-					  union drsuapi_DsGetMemberships2Request *req /* [in] [ref,switch_is(level)] */,
-					  int32_t *level_out /* [out] [ref] */,
-					  union drsuapi_DsGetMemberships2Ctr *ctr /* [out] [ref,switch_is(*level_out)] */,
-					  WERROR *werror)
-{
-	struct drsuapi_DsGetMemberships2 r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_DsGetMemberships2, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_DSGETMEMBERSHIPS2,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_DsGetMemberships2, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_REPLICA_VERIFY_OBJECTS(struct rpc_pipe_client *cli,
-					       TALLOC_CTX *mem_ctx,
-					       WERROR *werror)
-{
-	struct DRSUAPI_REPLICA_VERIFY_OBJECTS r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_REPLICA_VERIFY_OBJECTS, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_REPLICA_VERIFY_OBJECTS,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_REPLICA_VERIFY_OBJECTS, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_DRSUAPI_GET_OBJECT_EXISTENCE(struct rpc_pipe_client *cli,
-					     TALLOC_CTX *mem_ctx,
-					     WERROR *werror)
-{
-	struct DRSUAPI_GET_OBJECT_EXISTENCE r;
-	NTSTATUS status;
-
-	/* In parameters */
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(DRSUAPI_GET_OBJECT_EXISTENCE, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_GET_OBJECT_EXISTENCE,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(DRSUAPI_GET_OBJECT_EXISTENCE, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-
-NTSTATUS rpccli_drsuapi_QuerySitesByCost(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 int32_t level /* [in]  */,
-					 union drsuapi_QuerySitesByCostRequest *req /* [in] [ref,switch_is(level)] */,
-					 int32_t *level_out /* [out] [ref] */,
-					 union drsuapi_QuerySitesByCostCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-					 WERROR *werror)
-{
-	struct drsuapi_QuerySitesByCost r;
-	NTSTATUS status;
-
-	/* In parameters */
-	r.in.bind_handle = bind_handle;
-	r.in.level = level;
-	r.in.req = req;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_IN_DEBUG(drsuapi_QuerySitesByCost, &r);
-	}
-
-	status = cli_do_rpc_ndr(cli,
-				mem_ctx,
-				&ndr_table_drsuapi,
-				NDR_DRSUAPI_QUERYSITESBYCOST,
-				&r);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_OUT_DEBUG(drsuapi_QuerySitesByCost, &r);
-	}
-
-	if (NT_STATUS_IS_ERR(status)) {
-		return status;
-	}
-
-	/* Return variables */
-	*level_out = *r.out.level_out;
-	*ctr = *r.out.ctr;
-
-	/* Return result */
-	if (werror) {
-		*werror = r.out.result;
-	}
-
-	return werror_to_ntstatus(r.out.result);
-}
-

Deleted: branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_drsuapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,144 +0,0 @@
-#include "librpc/gen_ndr/ndr_drsuapi.h"
-#ifndef __CLI_DRSUAPI__
-#define __CLI_DRSUAPI__
-NTSTATUS rpccli_drsuapi_DsBind(struct rpc_pipe_client *cli,
-			       TALLOC_CTX *mem_ctx,
-			       struct GUID *bind_guid /* [in] [unique] */,
-			       struct drsuapi_DsBindInfoCtr *bind_info /* [in,out] [unique] */,
-			       struct policy_handle *bind_handle /* [out] [ref] */,
-			       WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsUnbind(struct rpc_pipe_client *cli,
-				 TALLOC_CTX *mem_ctx,
-				 struct policy_handle *bind_handle /* [in,out] [ref] */,
-				 WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsReplicaSync(struct rpc_pipe_client *cli,
-				      TALLOC_CTX *mem_ctx,
-				      struct policy_handle *bind_handle /* [in] [ref] */,
-				      int32_t level /* [in]  */,
-				      union drsuapi_DsReplicaSyncRequest req /* [in] [switch_is(level)] */,
-				      WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsGetNCChanges(struct rpc_pipe_client *cli,
-				       TALLOC_CTX *mem_ctx,
-				       struct policy_handle *bind_handle /* [in] [ref] */,
-				       int32_t level /* [in]  */,
-				       union drsuapi_DsGetNCChangesRequest *req /* [in] [ref,switch_is(level)] */,
-				       int32_t *level_out /* [out] [ref] */,
-				       union drsuapi_DsGetNCChangesCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-				       WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsReplicaUpdateRefs(struct rpc_pipe_client *cli,
-					    TALLOC_CTX *mem_ctx,
-					    struct policy_handle *bind_handle /* [in] [ref] */,
-					    int32_t level /* [in]  */,
-					    union drsuapi_DsReplicaUpdateRefsRequest req /* [in] [switch_is(level)] */,
-					    WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_REPLICA_ADD(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_REPLICA_DEL(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_REPLICA_MODIFY(struct rpc_pipe_client *cli,
-				       TALLOC_CTX *mem_ctx,
-				       WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_VERIFY_NAMES(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsGetMemberships(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 int32_t level /* [in]  */,
-					 union drsuapi_DsGetMembershipsRequest *req /* [in] [ref,switch_is(level)] */,
-					 int32_t *level_out /* [out] [ref] */,
-					 union drsuapi_DsGetMembershipsCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-					 WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_INTER_DOMAIN_MOVE(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsGetNT4ChangeLog(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  struct policy_handle *bind_handle /* [in] [ref] */,
-					  uint32_t level /* [in]  */,
-					  union drsuapi_DsGetNT4ChangeLogRequest *req /* [in] [ref,switch_is(level)] */,
-					  uint32_t *level_out /* [out] [ref] */,
-					  union drsuapi_DsGetNT4ChangeLogInfo *info /* [out] [ref,switch_is(*level_out)] */,
-					  WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsCrackNames(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     struct policy_handle *bind_handle /* [in] [ref] */,
-				     int32_t level /* [in]  */,
-				     union drsuapi_DsNameRequest *req /* [in] [ref,switch_is(level)] */,
-				     int32_t *level_out /* [out] [ref] */,
-				     union drsuapi_DsNameCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-				     WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsWriteAccountSpn(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  struct policy_handle *bind_handle /* [in] [ref] */,
-					  int32_t level /* [in]  */,
-					  union drsuapi_DsWriteAccountSpnRequest *req /* [in] [ref,switch_is(level)] */,
-					  int32_t *level_out /* [out] [ref] */,
-					  union drsuapi_DsWriteAccountSpnResult *res /* [out] [ref,switch_is(*level_out)] */,
-					  WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsRemoveDSServer(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 int32_t level /* [in]  */,
-					 union drsuapi_DsRemoveDSServerRequest *req /* [in] [ref,switch_is(level)] */,
-					 int32_t *level_out /* [out] [ref] */,
-					 union drsuapi_DsRemoveDSServerResult *res /* [out] [ref,switch_is(*level_out)] */,
-					 WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_REMOVE_DS_DOMAIN(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsGetDomainControllerInfo(struct rpc_pipe_client *cli,
-						  TALLOC_CTX *mem_ctx,
-						  struct policy_handle *bind_handle /* [in] [ref] */,
-						  int32_t level /* [in]  */,
-						  union drsuapi_DsGetDCInfoRequest *req /* [in] [ref,switch_is(level)] */,
-						  int32_t *level_out /* [out] [ref] */,
-						  union drsuapi_DsGetDCInfoCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-						  WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsAddEntry(struct rpc_pipe_client *cli,
-				   TALLOC_CTX *mem_ctx,
-				   struct policy_handle *bind_handle /* [in] [ref] */,
-				   int32_t level /* [in]  */,
-				   union drsuapi_DsAddEntryRequest *req /* [in] [ref,switch_is(level)] */,
-				   int32_t *level_out /* [out] [ref] */,
-				   union drsuapi_DsAddEntryCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-				   WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_EXECUTE_KCC(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx,
-				    WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsReplicaGetInfo(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 enum drsuapi_DsReplicaGetInfoLevel level /* [in]  */,
-					 union drsuapi_DsReplicaGetInfoRequest *req /* [in] [ref,switch_is(level)] */,
-					 enum drsuapi_DsReplicaInfoType *info_type /* [out] [ref] */,
-					 union drsuapi_DsReplicaInfo *info /* [out] [ref,switch_is(*info_type)] */,
-					 WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_ADD_SID_HISTORY(struct rpc_pipe_client *cli,
-					TALLOC_CTX *mem_ctx,
-					WERROR *werror);
-NTSTATUS rpccli_drsuapi_DsGetMemberships2(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  struct policy_handle *bind_handle /* [in] [ref] */,
-					  int32_t level /* [in]  */,
-					  union drsuapi_DsGetMemberships2Request *req /* [in] [ref,switch_is(level)] */,
-					  int32_t *level_out /* [out] [ref] */,
-					  union drsuapi_DsGetMemberships2Ctr *ctr /* [out] [ref,switch_is(*level_out)] */,
-					  WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_REPLICA_VERIFY_OBJECTS(struct rpc_pipe_client *cli,
-					       TALLOC_CTX *mem_ctx,
-					       WERROR *werror);
-NTSTATUS rpccli_DRSUAPI_GET_OBJECT_EXISTENCE(struct rpc_pipe_client *cli,
-					     TALLOC_CTX *mem_ctx,
-					     WERROR *werror);
-NTSTATUS rpccli_drsuapi_QuerySitesByCost(struct rpc_pipe_client *cli,
-					 TALLOC_CTX *mem_ctx,
-					 struct policy_handle *bind_handle /* [in] [ref] */,
-					 int32_t level /* [in]  */,
-					 union drsuapi_QuerySitesByCostRequest *req /* [in] [ref,switch_is(level)] */,
-					 int32_t *level_out /* [out] [ref] */,
-					 union drsuapi_QuerySitesByCostCtr *ctr /* [out] [ref,switch_is(*level_out)] */,
-					 WERROR *werror);
-#endif /* __CLI_DRSUAPI__ */

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_dssetup.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_dssetup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_dssetup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,6 +24,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEGETPRIMARYDOMAININFORMATION,
 				&r);
@@ -68,6 +69,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEDNSNAMETOFLATNAME,
 				&r);
@@ -109,6 +111,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEDCASDC,
 				&r);
@@ -150,6 +153,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEDCASREPLICA,
 				&r);
@@ -191,6 +195,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEDEMOTEDC,
 				&r);
@@ -232,6 +237,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEGETDCOPERATIONPROGRESS,
 				&r);
@@ -273,6 +279,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEGETDCOPERATIONRESULTS,
 				&r);
@@ -314,6 +321,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLECANCEL,
 				&r);
@@ -355,6 +363,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLESERVERSAVESTATEFORUPGRADE,
 				&r);
@@ -396,6 +405,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEUPGRADEDOWNLEVELSERVER,
 				&r);
@@ -437,6 +447,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_DSSETUP,
 				&ndr_table_dssetup,
 				NDR_DSSETUP_DSROLEABORTDOWNLEVELSERVERUPGRADE,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_echo.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_echo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_echo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,6 +23,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_ADDONE,
 				&r);
@@ -65,6 +66,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_ECHODATA,
 				&r);
@@ -106,6 +108,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_SINKDATA,
 				&r);
@@ -145,6 +148,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_SOURCEDATA,
 				&r);
@@ -185,6 +189,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_TESTCALL,
 				&r);
@@ -225,6 +230,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_TESTCALL2,
 				&r);
@@ -264,6 +270,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_TESTSLEEP,
 				&r);
@@ -306,6 +313,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_TESTENUM,
 				&r);
@@ -347,6 +355,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_TESTSURROUNDING,
 				&r);
@@ -386,6 +395,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_RPCECHO,
 				&ndr_table_rpcecho,
 				NDR_ECHO_TESTDOUBLEPOINTER,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_epmapper.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_epmapper.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_epmapper.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -26,6 +26,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_INSERT,
 				&r);
@@ -66,6 +67,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_DELETE,
 				&r);
@@ -116,6 +118,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_LOOKUP,
 				&r);
@@ -165,6 +168,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_MAP,
 				&r);
@@ -206,6 +210,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_LOOKUPHANDLEFREE,
 				&r);
@@ -245,6 +250,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_INQOBJECT,
 				&r);
@@ -287,6 +293,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_MGMTDELETE,
 				&r);
@@ -323,6 +330,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EPMAPPER,
 				&ndr_table_epmapper,
 				NDR_EPM_MAPAUTH,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_eventlog.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_eventlog.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_eventlog.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,6 +24,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_CLEAREVENTLOGW,
 				&r);
@@ -60,6 +61,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_BACKUPEVENTLOGW,
 				&r);
@@ -98,6 +100,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_CLOSEEVENTLOG,
 				&r);
@@ -135,6 +138,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_DEREGISTEREVENTSOURCE,
 				&r);
@@ -174,6 +178,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_GETNUMRECORDS,
 				&r);
@@ -214,6 +219,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_GETOLDESTRECORD,
 				&r);
@@ -251,6 +257,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_CHANGENOTIFY,
 				&r);
@@ -298,6 +305,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_OPENEVENTLOGW,
 				&r);
@@ -335,6 +343,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_REGISTEREVENTSOURCEW,
 				&r);
@@ -371,6 +380,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_OPENBACKUPEVENTLOGW,
 				&r);
@@ -418,6 +428,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_READEVENTLOGW,
 				&r);
@@ -457,6 +468,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_REPORTEVENTW,
 				&r);
@@ -493,6 +505,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_CLEAREVENTLOGA,
 				&r);
@@ -529,6 +542,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_BACKUPEVENTLOGA,
 				&r);
@@ -565,6 +579,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_OPENEVENTLOGA,
 				&r);
@@ -601,6 +616,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_REGISTEREVENTSOURCEA,
 				&r);
@@ -637,6 +653,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_OPENBACKUPEVENTLOGA,
 				&r);
@@ -673,6 +690,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_READEVENTLOGA,
 				&r);
@@ -709,6 +727,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_REPORTEVENTA,
 				&r);
@@ -745,6 +764,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_REGISTERCLUSTERSVC,
 				&r);
@@ -781,6 +801,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_DEREGISTERCLUSTERSVC,
 				&r);
@@ -817,6 +838,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_WRITECLUSTEREVENTS,
 				&r);
@@ -853,6 +875,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_GETLOGINTORMATION,
 				&r);
@@ -891,6 +914,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_EVENTLOG,
 				&ndr_table_eventlog,
 				NDR_EVENTLOG_FLUSHEVENTLOG,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -12,7 +12,7 @@
 				  struct initshutdown_String *message /* [in] [unique] */,
 				  uint32_t timeout /* [in]  */,
 				  uint8_t force_apps /* [in]  */,
-				  uint8_t do_reboot /* [in]  */,
+				  uint8_t reboot /* [in]  */,
 				  WERROR *werror)
 {
 	struct initshutdown_Init r;
@@ -23,7 +23,7 @@
 	r.in.message = message;
 	r.in.timeout = timeout;
 	r.in.force_apps = force_apps;
-	r.in.do_reboot = do_reboot;
+	r.in.reboot = reboot;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(initshutdown_Init, &r);
@@ -31,6 +31,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_INITSHUTDOWN,
 				&ndr_table_initshutdown,
 				NDR_INITSHUTDOWN_INIT,
 				&r);
@@ -74,6 +75,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_INITSHUTDOWN,
 				&ndr_table_initshutdown,
 				NDR_INITSHUTDOWN_ABORT,
 				&r);
@@ -106,7 +108,7 @@
 				    struct initshutdown_String *message /* [in] [unique] */,
 				    uint32_t timeout /* [in]  */,
 				    uint8_t force_apps /* [in]  */,
-				    uint8_t do_reboot /* [in]  */,
+				    uint8_t reboot /* [in]  */,
 				    uint32_t reason /* [in]  */,
 				    WERROR *werror)
 {
@@ -118,7 +120,7 @@
 	r.in.message = message;
 	r.in.timeout = timeout;
 	r.in.force_apps = force_apps;
-	r.in.do_reboot = do_reboot;
+	r.in.reboot = reboot;
 	r.in.reason = reason;
 
 	if (DEBUGLEVEL >= 10) {
@@ -127,6 +129,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_INITSHUTDOWN,
 				&ndr_table_initshutdown,
 				NDR_INITSHUTDOWN_INITEX,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_initshutdown.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -7,7 +7,7 @@
 				  struct initshutdown_String *message /* [in] [unique] */,
 				  uint32_t timeout /* [in]  */,
 				  uint8_t force_apps /* [in]  */,
-				  uint8_t do_reboot /* [in]  */,
+				  uint8_t reboot /* [in]  */,
 				  WERROR *werror);
 NTSTATUS rpccli_initshutdown_Abort(struct rpc_pipe_client *cli,
 				   TALLOC_CTX *mem_ctx,
@@ -19,7 +19,7 @@
 				    struct initshutdown_String *message /* [in] [unique] */,
 				    uint32_t timeout /* [in]  */,
 				    uint8_t force_apps /* [in]  */,
-				    uint8_t do_reboot /* [in]  */,
+				    uint8_t reboot /* [in]  */,
 				    uint32_t reason /* [in]  */,
 				    WERROR *werror);
 #endif /* __CLI_INITSHUTDOWN__ */

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_lsa.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_lsa.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_lsa.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,6 +22,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CLOSE,
 				&r);
@@ -61,6 +62,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_DELETE,
 				&r);
@@ -104,6 +106,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMPRIVS,
 				&r);
@@ -147,6 +150,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYSECURITY,
 				&r);
@@ -190,6 +194,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETSECOBJ,
 				&r);
@@ -226,6 +231,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CHANGEPASSWORD,
 				&r);
@@ -269,6 +275,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_OPENPOLICY,
 				&r);
@@ -311,6 +318,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYINFOPOLICY,
 				&r);
@@ -354,6 +362,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETINFOPOLICY,
 				&r);
@@ -390,6 +399,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CLEARAUDITLOG,
 				&r);
@@ -433,6 +443,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREATEACCOUNT,
 				&r);
@@ -477,6 +488,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMACCOUNTS,
 				&r);
@@ -522,6 +534,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREATETRUSTEDDOMAIN,
 				&r);
@@ -566,6 +579,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMTRUSTDOM,
 				&r);
@@ -617,6 +631,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPNAMES,
 				&r);
@@ -667,6 +682,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPSIDS,
 				&r);
@@ -713,6 +729,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREATESECRET,
 				&r);
@@ -757,6 +774,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_OPENACCOUNT,
 				&r);
@@ -797,6 +815,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMPRIVSACCOUNT,
 				&r);
@@ -838,6 +857,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ADDPRIVILEGESTOACCOUNT,
 				&r);
@@ -880,6 +900,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_REMOVEPRIVILEGESFROMACCOUNT,
 				&r);
@@ -916,6 +937,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_GETQUOTASFORACCOUNT,
 				&r);
@@ -952,6 +974,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETQUOTASFORACCOUNT,
 				&r);
@@ -991,6 +1014,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_GETSYSTEMACCESSACCOUNT,
 				&r);
@@ -1032,6 +1056,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETSYSTEMACCESSACCOUNT,
 				&r);
@@ -1075,6 +1100,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_OPENTRUSTEDDOMAIN,
 				&r);
@@ -1117,6 +1143,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYTRUSTEDDOMAININFO,
 				&r);
@@ -1154,6 +1181,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETINFORMATIONTRUSTEDDOMAIN,
 				&r);
@@ -1197,6 +1225,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_OPENSECRET,
 				&r);
@@ -1240,6 +1269,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETSECRET,
 				&r);
@@ -1286,6 +1316,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYSECRET,
 				&r);
@@ -1339,6 +1370,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPPRIVVALUE,
 				&r);
@@ -1381,6 +1413,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPPRIVNAME,
 				&r);
@@ -1428,6 +1461,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPPRIVDISPLAYNAME,
 				&r);
@@ -1468,6 +1502,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_DELETEOBJECT,
 				&r);
@@ -1510,6 +1545,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMACCOUNTSWITHUSERRIGHT,
 				&r);
@@ -1552,6 +1588,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMACCOUNTRIGHTS,
 				&r);
@@ -1595,6 +1632,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ADDACCOUNTRIGHTS,
 				&r);
@@ -1639,6 +1677,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_REMOVEACCOUNTRIGHTS,
 				&r);
@@ -1682,6 +1721,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYTRUSTEDDOMAININFOBYSID,
 				&r);
@@ -1719,6 +1759,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETTRUSTEDDOMAININFO,
 				&r);
@@ -1759,6 +1800,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_DELETETRUSTEDDOMAIN,
 				&r);
@@ -1795,6 +1837,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_STOREPRIVATEDATA,
 				&r);
@@ -1831,6 +1874,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_RETRIEVEPRIVATEDATA,
 				&r);
@@ -1874,6 +1918,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_OPENPOLICY2,
 				&r);
@@ -1917,6 +1962,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_GETUSERNAME,
 				&r);
@@ -1962,6 +2008,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYINFOPOLICY2,
 				&r);
@@ -2005,6 +2052,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETINFOPOLICY2,
 				&r);
@@ -2048,6 +2096,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYTRUSTEDDOMAININFOBYNAME,
 				&r);
@@ -2093,6 +2142,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETTRUSTEDDOMAININFOBYNAME,
 				&r);
@@ -2136,6 +2186,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_ENUMTRUSTEDDOMAINSEX,
 				&r);
@@ -2174,6 +2225,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREATETRUSTEDDOMAINEX,
 				&r);
@@ -2212,6 +2264,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CLOSETRUSTEDDOMAINEX,
 				&r);
@@ -2254,6 +2307,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_QUERYDOMAININFORMATIONPOLICY,
 				&r);
@@ -2297,6 +2351,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_SETDOMAININFORMATIONPOLICY,
 				&r);
@@ -2340,6 +2395,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_OPENTRUSTEDDOMAINBYNAME,
 				&r);
@@ -2377,6 +2433,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_TESTCALL,
 				&r);
@@ -2428,6 +2485,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPSIDS2,
 				&r);
@@ -2484,6 +2542,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPNAMES2,
 				&r);
@@ -2523,6 +2582,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREATETRUSTEDDOMAINEX2,
 				&r);
@@ -2559,6 +2619,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRWRITE,
 				&r);
@@ -2595,6 +2656,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRREAD,
 				&r);
@@ -2631,6 +2693,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRENUMERATE,
 				&r);
@@ -2667,6 +2730,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRWRITEDOMAINCREDENTIALS,
 				&r);
@@ -2703,6 +2767,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRREADDOMAINCREDENTIALS,
 				&r);
@@ -2739,6 +2804,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRDELETE,
 				&r);
@@ -2775,6 +2841,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRGETTARGETINFO,
 				&r);
@@ -2811,6 +2878,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRPROFILELOADED,
 				&r);
@@ -2864,6 +2932,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPNAMES3,
 				&r);
@@ -2903,6 +2972,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRGETSESSIONTYPES,
 				&r);
@@ -2939,6 +3009,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARREGISTERAUDITEVENT,
 				&r);
@@ -2975,6 +3046,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARGENAUDITEVENT,
 				&r);
@@ -3011,6 +3083,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARUNREGISTERAUDITEVENT,
 				&r);
@@ -3054,6 +3127,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARQUERYFORESTTRUSTINFORMATION,
 				&r);
@@ -3091,6 +3165,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARSETFORESTTRUSTINFORMATION,
 				&r);
@@ -3127,6 +3202,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_CREDRRENAME,
 				&r);
@@ -3176,6 +3252,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPSIDS3,
 				&r);
@@ -3230,6 +3307,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LOOKUPNAMES4,
 				&r);
@@ -3269,6 +3347,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSAROPENPOLICYSCE,
 				&r);
@@ -3305,6 +3384,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARADTREGISTERSECURITYEVENTSOURCE,
 				&r);
@@ -3341,6 +3421,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE,
 				&r);
@@ -3377,6 +3458,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_LSARPC,
 				&ndr_table_lsarpc,
 				NDR_LSA_LSARADTREPORTSECURITYEVENT,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_netlogon.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_netlogon.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_netlogon.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,6 +28,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONUASLOGON,
 				&r);
@@ -77,6 +78,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONUASLOGOFF,
 				&r);
@@ -134,6 +136,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONSAMLOGON,
 				&r);
@@ -187,6 +190,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONSAMLOGOFF,
 				&r);
@@ -233,6 +237,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERREQCHALLENGE,
 				&r);
@@ -281,6 +286,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERAUTHENTICATE,
 				&r);
@@ -331,6 +337,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERPASSWORDSET,
 				&r);
@@ -383,6 +390,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DATABASEDELTAS,
 				&r);
@@ -437,6 +445,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DATABASESYNC,
 				&r);
@@ -496,6 +505,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_ACCOUNTDELTAS,
 				&r);
@@ -557,6 +567,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_ACCOUNTSYNC,
 				&r);
@@ -605,6 +616,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_GETDCNAME,
 				&r);
@@ -654,6 +666,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONCONTROL,
 				&r);
@@ -701,6 +714,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_GETANYDCNAME,
 				&r);
@@ -752,6 +766,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONCONTROL2,
 				&r);
@@ -806,6 +821,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERAUTHENTICATE2,
 				&r);
@@ -861,6 +877,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DATABASESYNC2,
 				&r);
@@ -913,6 +930,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DATABASEREDO,
 				&r);
@@ -961,6 +979,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONCONTROL2EX,
 				&r);
@@ -1006,6 +1025,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRENUMERATETRUSTEDDOMAINS,
 				&r);
@@ -1059,6 +1079,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRGETDCNAME,
 				&r);
@@ -1101,6 +1122,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRLOGONDUMMYROUTINE1,
 				&r);
@@ -1142,6 +1164,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRLOGONSETSERVICEBITS,
 				&r);
@@ -1188,6 +1211,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONGETTRUSTRID,
 				&r);
@@ -1230,6 +1254,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRLOGONCOMPUTESERVERDIGEST,
 				&r);
@@ -1271,6 +1296,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRLOGONCOMPUTECLIENTDIGEST,
 				&r);
@@ -1324,6 +1350,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERAUTHENTICATE3,
 				&r);
@@ -1375,6 +1402,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRGETDCNAMEEX,
 				&r);
@@ -1420,6 +1448,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRGETSITENAME,
 				&r);
@@ -1474,6 +1503,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONGETDOMAININFO,
 				&r);
@@ -1525,6 +1555,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERPASSWORDSET2,
 				&r);
@@ -1575,6 +1606,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERPASSWORDGET,
 				&r);
@@ -1618,6 +1650,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRLOGONSENDTOSAM,
 				&r);
@@ -1666,6 +1699,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRADDRESSTOSITENAMESW,
 				&r);
@@ -1723,6 +1757,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRGETDCNAMEEX2,
 				&r);
@@ -1765,6 +1800,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
 				&r);
@@ -1809,6 +1845,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRENUMERATETRUSTEDDOMAINSEX,
 				&r);
@@ -1858,6 +1895,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRADDRESSTOSITENAMESEXW,
 				&r);
@@ -1903,6 +1941,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRGETDCSITECOVERAGEW,
 				&r);
@@ -1958,6 +1997,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONSAMLOGONEX,
 				&r);
@@ -2003,6 +2043,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRENUMERATEDOMAINTRUSTS,
 				&r);
@@ -2055,6 +2096,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRDEREGISTERDNSHOSTRECORDS,
 				&r);
@@ -2108,6 +2150,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_SERVERTRUSTPASSWORDSGET,
 				&r);
@@ -2155,6 +2198,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_DSRGETFORESTTRUSTINFORMATION,
 				&r);
@@ -2207,6 +2251,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_GETFORESTTRUSTINFORMATION,
 				&r);
@@ -2267,6 +2312,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_LOGONSAMLOGONWITHFLAGS,
 				&r);
@@ -2310,6 +2356,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NETLOGON,
 				&ndr_table_netlogon,
 				NDR_NETR_NETRSERVERGETTRUSTINFO,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,6 +21,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_DISCONNECT,
 				&r);
@@ -62,6 +63,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_CONNECT,
 				&r);
@@ -104,6 +106,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETVERSION,
 				&r);
@@ -146,6 +149,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETGLOBALSTATE,
 				&r);
@@ -187,6 +191,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_INITDETECTION,
 				&r);
@@ -228,6 +233,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_REPORTLOGON,
 				&r);
@@ -273,6 +279,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_VALIDATEDEVICEINSTANCE,
 				&r);
@@ -314,6 +321,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETROOTDEVICEINSTANCE,
 				&r);
@@ -355,6 +363,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETRELATEDDEVICEINSTANCE,
 				&r);
@@ -396,6 +405,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_ENUMERATESUBKEYS,
 				&r);
@@ -437,6 +447,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETDEVICELIST,
 				&r);
@@ -483,6 +494,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETDEVICELISTSIZE,
 				&r);
@@ -525,6 +537,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETDEPTH,
 				&r);
@@ -553,25 +566,12 @@
 
 NTSTATUS rpccli_PNP_GetDeviceRegProp(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
-				     const char *devicepath /* [in] [ref,charset(UTF16)] */,
-				     uint32_t property /* [in]  */,
-				     uint32_t *unknown1 /* [in,out] [ref] */,
-				     uint8_t *buffer /* [out] [ref,length_is(*buffer_size),size_is(*buffer_size)] */,
-				     uint32_t *buffer_size /* [in,out] [ref] */,
-				     uint32_t *needed /* [in,out] [ref] */,
-				     uint32_t unknown3 /* [in]  */,
 				     WERROR *werror)
 {
 	struct PNP_GetDeviceRegProp r;
 	NTSTATUS status;
 
 	/* In parameters */
-	r.in.devicepath = devicepath;
-	r.in.property = property;
-	r.in.unknown1 = unknown1;
-	r.in.buffer_size = buffer_size;
-	r.in.needed = needed;
-	r.in.unknown3 = unknown3;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(PNP_GetDeviceRegProp, &r);
@@ -579,6 +579,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETDEVICEREGPROP,
 				&r);
@@ -596,10 +597,6 @@
 	}
 
 	/* Return variables */
-	*unknown1 = *r.out.unknown1;
-	memcpy(buffer, r.out.buffer, *r.in.buffer_size * sizeof(*buffer));
-	*buffer_size = *r.out.buffer_size;
-	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -624,6 +621,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_SETDEVICEREGPROP,
 				&r);
@@ -665,6 +663,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETCLASSINSTANCE,
 				&r);
@@ -706,6 +705,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_CREATEKEY,
 				&r);
@@ -747,6 +747,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_DELETEREGISTRYKEY,
 				&r);
@@ -788,6 +789,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETCLASSCOUNT,
 				&r);
@@ -829,6 +831,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETCLASSNAME,
 				&r);
@@ -870,6 +873,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_DELETECLASSKEY,
 				&r);
@@ -911,6 +915,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETINTERFACEDEVICEALIAS,
 				&r);
@@ -952,6 +957,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETINTERFACEDEVICELIST,
 				&r);
@@ -993,6 +999,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETINTERFACEDEVICELISTSIZE,
 				&r);
@@ -1034,6 +1041,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_REGISTERDEVICECLASSASSOCIATION,
 				&r);
@@ -1075,6 +1083,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_UNREGISTERDEVICECLASSASSOCIATION,
 				&r);
@@ -1116,6 +1125,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETCLASSREGPROP,
 				&r);
@@ -1157,6 +1167,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_SETCLASSREGPROP,
 				&r);
@@ -1198,6 +1209,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_CREATEDEVINST,
 				&r);
@@ -1239,6 +1251,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_DEVICEINSTANCEACTION,
 				&r);
@@ -1280,6 +1293,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETDEVICESTATUS,
 				&r);
@@ -1321,6 +1335,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_SETDEVICEPROBLEM,
 				&r);
@@ -1362,6 +1377,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_DISABLEDEVINST,
 				&r);
@@ -1403,6 +1419,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_UNINSTALLDEVINST,
 				&r);
@@ -1444,6 +1461,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_ADDID,
 				&r);
@@ -1485,6 +1503,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_REGISTERDRIVER,
 				&r);
@@ -1526,6 +1545,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_QUERYREMOVE,
 				&r);
@@ -1567,6 +1587,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_REQUESTDEVICEEJECT,
 				&r);
@@ -1608,6 +1629,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_ISDOCKSTATIONPRESENT,
 				&r);
@@ -1649,6 +1671,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_REQUESTEJECTPC,
 				&r);
@@ -1707,6 +1730,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_HWPROFFLAGS,
 				&r);
@@ -1763,6 +1787,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETHWPROFINFO,
 				&r);
@@ -1805,6 +1830,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_ADDEMPTYLOGCONF,
 				&r);
@@ -1846,6 +1872,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_FREELOGCONF,
 				&r);
@@ -1887,6 +1914,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETFIRSTLOGCONF,
 				&r);
@@ -1928,6 +1956,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETNEXTLOGCONF,
 				&r);
@@ -1969,6 +1998,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETLOGCONFPRIORITY,
 				&r);
@@ -2010,6 +2040,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_ADDRESDES,
 				&r);
@@ -2051,6 +2082,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_FREERESDES,
 				&r);
@@ -2092,6 +2124,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETNEXTRESDES,
 				&r);
@@ -2133,6 +2166,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETRESDESDATA,
 				&r);
@@ -2174,6 +2208,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETRESDESDATASIZE,
 				&r);
@@ -2215,6 +2250,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_MODIFYRESDES,
 				&r);
@@ -2256,6 +2292,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_DETECTRESOURCELIMIT,
 				&r);
@@ -2297,6 +2334,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_QUERYRESCONFLIST,
 				&r);
@@ -2338,6 +2376,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_SETHWPROF,
 				&r);
@@ -2379,6 +2418,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_QUERYARBITRATORFREEDATA,
 				&r);
@@ -2420,6 +2460,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_QUERYARBITRATORFREESIZE,
 				&r);
@@ -2461,6 +2502,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_RUNDETECTION,
 				&r);
@@ -2502,6 +2544,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_REGISTERNOTIFICATION,
 				&r);
@@ -2543,6 +2586,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_UNREGISTERNOTIFICATION,
 				&r);
@@ -2584,6 +2628,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETCUSTOMDEVPROP,
 				&r);
@@ -2625,6 +2670,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETVERSIONINTERNAL,
 				&r);
@@ -2666,6 +2712,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETBLOCKEDDRIVERINFO,
 				&r);
@@ -2707,6 +2754,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_NTSVCS,
 				&ndr_table_ntsvcs,
 				NDR_PNP_GETSERVERSIDEDEVICEINSTALLFLAGS,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_ntsvcs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -48,13 +48,6 @@
 			     WERROR *werror);
 NTSTATUS rpccli_PNP_GetDeviceRegProp(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
-				     const char *devicepath /* [in] [ref,charset(UTF16)] */,
-				     uint32_t property /* [in]  */,
-				     uint32_t *unknown1 /* [in,out] [ref] */,
-				     uint8_t *buffer /* [out] [ref,length_is(*buffer_size),size_is(*buffer_size)] */,
-				     uint32_t *buffer_size /* [in,out] [ref] */,
-				     uint32_t *needed /* [in,out] [ref] */,
-				     uint32_t unknown3 /* [in]  */,
 				     WERROR *werror);
 NTSTATUS rpccli_PNP_SetDeviceRegProp(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_samr.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_samr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_samr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,6 +25,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CONNECT,
 				&r);
@@ -64,6 +65,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CLOSE,
 				&r);
@@ -107,6 +109,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETSECURITY,
 				&r);
@@ -148,6 +151,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYSECURITY,
 				&r);
@@ -187,6 +191,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SHUTDOWN,
 				&r);
@@ -228,6 +233,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_LOOKUPDOMAIN,
 				&r);
@@ -273,6 +279,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ENUMDOMAINS,
 				&r);
@@ -319,6 +326,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_OPENDOMAIN,
 				&r);
@@ -361,6 +369,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYDOMAININFO,
 				&r);
@@ -404,6 +413,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETDOMAININFO,
 				&r);
@@ -448,6 +458,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CREATEDOMAINGROUP,
 				&r);
@@ -494,6 +505,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ENUMDOMAINGROUPS,
 				&r);
@@ -541,6 +553,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CREATEUSER,
 				&r);
@@ -589,6 +602,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ENUMDOMAINUSERS,
 				&r);
@@ -636,6 +650,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CREATEDOMALIAS,
 				&r);
@@ -682,6 +697,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ENUMDOMAINALIASES,
 				&r);
@@ -726,6 +742,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETALIASMEMBERSHIP,
 				&r);
@@ -771,6 +788,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_LOOKUPNAMES,
 				&r);
@@ -817,6 +835,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_LOOKUPRIDS,
 				&r);
@@ -862,6 +881,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_OPENGROUP,
 				&r);
@@ -904,6 +924,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYGROUPINFO,
 				&r);
@@ -947,6 +968,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETGROUPINFO,
 				&r);
@@ -989,6 +1011,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ADDGROUPMEMBER,
 				&r);
@@ -1027,6 +1050,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_DELETEDOMAINGROUP,
 				&r);
@@ -1068,6 +1092,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_DELETEGROUPMEMBER,
 				&r);
@@ -1107,6 +1132,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYGROUPMEMBER,
 				&r);
@@ -1150,6 +1176,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETMEMBERATTRIBUTESOFGROUP,
 				&r);
@@ -1193,6 +1220,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_OPENALIAS,
 				&r);
@@ -1235,6 +1263,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYALIASINFO,
 				&r);
@@ -1278,6 +1307,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETALIASINFO,
 				&r);
@@ -1316,6 +1346,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_DELETEDOMALIAS,
 				&r);
@@ -1357,6 +1388,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ADDALIASMEMBER,
 				&r);
@@ -1397,6 +1429,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_DELETEALIASMEMBER,
 				&r);
@@ -1436,6 +1469,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETMEMBERSINALIAS,
 				&r);
@@ -1480,6 +1514,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_OPENUSER,
 				&r);
@@ -1519,6 +1554,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_DELETEUSER,
 				&r);
@@ -1561,6 +1597,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYUSERINFO,
 				&r);
@@ -1604,6 +1641,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETUSERINFO,
 				&r);
@@ -1662,6 +1700,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CHANGEPASSWORDUSER,
 				&r);
@@ -1701,6 +1740,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETGROUPSFORUSER,
 				&r);
@@ -1751,6 +1791,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYDISPLAYINFO,
 				&r);
@@ -1797,6 +1838,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETDISPLAYENUMERATIONINDEX,
 				&r);
@@ -1836,6 +1878,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_TESTPRIVATEFUNCTIONSDOMAIN,
 				&r);
@@ -1874,6 +1917,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_TESTPRIVATEFUNCTIONSUSER,
 				&r);
@@ -1913,6 +1957,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETUSERPWINFO,
 				&r);
@@ -1954,6 +1999,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_REMOVEMEMBERFROMFOREIGNDOMAIN,
 				&r);
@@ -1995,6 +2041,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYDOMAININFO2,
 				&r);
@@ -2037,6 +2084,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYUSERINFO2,
 				&r);
@@ -2087,6 +2135,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYDISPLAYINFO2,
 				&r);
@@ -2133,6 +2182,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETDISPLAYENUMERATIONINDEX2,
 				&r);
@@ -2181,6 +2231,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CREATEUSER2,
 				&r);
@@ -2233,6 +2284,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_QUERYDISPLAYINFO3,
 				&r);
@@ -2276,6 +2328,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_ADDMULTIPLEMEMBERSTOALIAS,
 				&r);
@@ -2316,6 +2369,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_REMOVEMULTIPLEMEMBERSFROMALIAS,
 				&r);
@@ -2360,6 +2414,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_OEMCHANGEPASSWORDUSER2,
 				&r);
@@ -2410,6 +2465,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CHANGEPASSWORDUSER2,
 				&r);
@@ -2449,6 +2505,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETDOMPWINFO,
 				&r);
@@ -2491,6 +2548,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CONNECT2,
 				&r);
@@ -2534,6 +2592,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETUSERINFO2,
 				&r);
@@ -2578,6 +2637,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETBOOTKEYINFORMATION,
 				&r);
@@ -2617,6 +2677,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_GETBOOTKEYINFORMATION,
 				&r);
@@ -2661,6 +2722,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CONNECT3,
 				&r);
@@ -2705,6 +2767,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CONNECT4,
 				&r);
@@ -2760,6 +2823,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CHANGEPASSWORDUSER3,
 				&r);
@@ -2809,6 +2873,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_CONNECT5,
 				&r);
@@ -2853,6 +2918,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_RIDTOSID,
 				&r);
@@ -2896,6 +2962,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_SETDSRMPASSWORD,
 				&r);
@@ -2937,6 +3004,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SAMR,
 				&ndr_table_samr,
 				NDR_SAMR_VALIDATEPASSWORD,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_srvsvc.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_srvsvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_srvsvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -32,6 +32,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVENUM,
 				&r);
@@ -86,6 +87,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVGETINFO,
 				&r);
@@ -134,6 +136,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVCONTROL,
 				&r);
@@ -188,6 +191,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVQENUM,
 				&r);
@@ -244,6 +248,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVQGETINFO,
 				&r);
@@ -296,6 +301,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVQSETINFO,
 				&r);
@@ -344,6 +350,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVQPURGE,
 				&r);
@@ -391,6 +398,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCHARDEVQPURGESELF,
 				&r);
@@ -443,6 +451,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETCONNENUM,
 				&r);
@@ -502,6 +511,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETFILEENUM,
 				&r);
@@ -555,6 +565,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETFILEGETINFO,
 				&r);
@@ -601,6 +612,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETFILECLOSE,
 				&r);
@@ -655,6 +667,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSESSENUM,
 				&r);
@@ -707,6 +720,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSESSDEL,
 				&r);
@@ -756,6 +770,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREADD,
 				&r);
@@ -809,6 +824,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREENUMALL,
 				&r);
@@ -862,6 +878,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREGETINFO,
 				&r);
@@ -914,6 +931,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHARESETINFO,
 				&r);
@@ -964,6 +982,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREDEL,
 				&r);
@@ -1011,6 +1030,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREDELSTICKY,
 				&r);
@@ -1057,6 +1077,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHARECHECK,
 				&r);
@@ -1104,6 +1125,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSRVGETINFO,
 				&r);
@@ -1154,6 +1176,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSRVSETINFO,
 				&r);
@@ -1209,6 +1232,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETDISKENUM,
 				&r);
@@ -1264,6 +1288,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSERVERSTATISTICSGET,
 				&r);
@@ -1312,6 +1337,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETTRANSPORTADD,
 				&r);
@@ -1364,6 +1390,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETTRANSPORTENUM,
 				&r);
@@ -1417,6 +1444,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETTRANSPORTDEL,
 				&r);
@@ -1461,6 +1489,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETREMOTETOD,
 				&r);
@@ -1511,6 +1540,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSETSERVICEBITS,
 				&r);
@@ -1559,6 +1589,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETPATHTYPE,
 				&r);
@@ -1614,6 +1645,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETPATHCANONICALIZE,
 				&r);
@@ -1667,6 +1699,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETPATHCOMPARE,
 				&r);
@@ -1716,6 +1749,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETNAMEVALIDATE,
 				&r);
@@ -1757,6 +1791,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRPRNAMECANONICALIZE,
 				&r);
@@ -1808,6 +1843,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETPRNAMECOMPARE,
 				&r);
@@ -1858,6 +1894,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREENUM,
 				&r);
@@ -1911,6 +1948,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREDELSTART,
 				&r);
@@ -1957,6 +1995,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSHAREDELCOMMIT,
 				&r);
@@ -2010,6 +2049,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETGETFILESECURITY,
 				&r);
@@ -2062,6 +2102,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSETFILESECURITY,
 				&r);
@@ -2109,6 +2150,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSERVERTRANSPORTADDEX,
 				&r);
@@ -2162,6 +2204,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETSERVERSETSERVICEBITSEX,
 				&r);
@@ -2203,6 +2246,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSGETVERSION,
 				&r);
@@ -2244,6 +2288,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSCREATELOCALPARTITION,
 				&r);
@@ -2285,6 +2330,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSDELETELOCALPARTITION,
 				&r);
@@ -2326,6 +2372,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE,
 				&r);
@@ -2367,6 +2414,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSSETSERVERINFO,
 				&r);
@@ -2408,6 +2456,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSCREATEEXITPOINT,
 				&r);
@@ -2449,6 +2498,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSDELETEEXITPOINT,
 				&r);
@@ -2490,6 +2540,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSMODIFYPREFIX,
 				&r);
@@ -2531,6 +2582,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSFIXLOCALVOLUME,
 				&r);
@@ -2572,6 +2624,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRDFSMANAGERREPORTSITEINFO,
 				&r);
@@ -2613,6 +2666,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SRVSVC,
 				&ndr_table_srvsvc,
 				NDR_SRVSVC_NETRSERVERTRANSPORTDELEX,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,6 +23,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CLOSESERVICEHANDLE,
 				&r);
@@ -70,6 +71,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CONTROLSERVICE,
 				&r);
@@ -114,6 +116,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_DELETESERVICE,
 				&r);
@@ -158,6 +161,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_LOCKSERVICEDATABASE,
 				&r);
@@ -208,6 +212,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICEOBJECTSECURITY,
 				&r);
@@ -259,6 +264,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_SETSERVICEOBJECTSECURITY,
 				&r);
@@ -303,6 +309,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICESTATUS,
 				&r);
@@ -345,6 +352,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_SETSERVICESTATUS,
 				&r);
@@ -388,6 +396,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_UNLOCKSERVICEDATABASE,
 				&r);
@@ -430,6 +439,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_NOTIFYBOOTCONFIGSTATUS,
 				&r);
@@ -479,6 +489,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_SCSETSERVICEBITSW,
 				&r);
@@ -541,6 +552,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CHANGESERVICECONFIGW,
 				&r);
@@ -614,6 +626,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CREATESERVICEW,
 				&r);
@@ -648,10 +661,10 @@
 					      TALLOC_CTX *mem_ctx,
 					      struct policy_handle *service /* [in] [ref] */,
 					      uint32_t state /* [in]  */,
-					      uint8_t *service_status /* [out] [ref,size_is(buf_size)] */,
-					      uint32_t buf_size /* [in] [range(0,0x40000)] */,
-					      uint32_t *bytes_needed /* [out] [ref,range(0,0x40000)] */,
-					      uint32_t *services_returned /* [out] [ref,range(0,0x40000)] */,
+					      struct ENUM_SERVICE_STATUS *service_status /* [out] [unique] */,
+					      uint32_t buf_size /* [in]  */,
+					      uint32_t *bytes_needed /* [out] [ref] */,
+					      uint32_t *services_returned /* [out] [ref] */,
 					      WERROR *werror)
 {
 	struct svcctl_EnumDependentServicesW r;
@@ -668,6 +681,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_ENUMDEPENDENTSERVICESW,
 				&r);
@@ -685,7 +699,9 @@
 	}
 
 	/* Return variables */
-	memcpy(service_status, r.out.service_status, r.in.buf_size * sizeof(*service_status));
+	if (service_status && r.out.service_status) {
+		*service_status = *r.out.service_status;
+	}
 	*bytes_needed = *r.out.bytes_needed;
 	*services_returned = *r.out.services_returned;
 
@@ -725,6 +741,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_ENUMSERVICESSTATUSW,
 				&r);
@@ -779,6 +796,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_OPENSCMANAGERW,
 				&r);
@@ -828,6 +846,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_OPENSERVICEW,
 				&r);
@@ -876,6 +895,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICECONFIGW,
 				&r);
@@ -925,6 +945,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICELOCKSTATUSW,
 				&r);
@@ -974,6 +995,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_STARTSERVICEW,
 				&r);
@@ -1022,6 +1044,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_GETSERVICEDISPLAYNAMEW,
 				&r);
@@ -1074,6 +1097,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_GETSERVICEKEYNAMEW,
 				&r);
@@ -1127,6 +1151,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_SCSETSERVICEBITSA,
 				&r);
@@ -1189,6 +1214,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CHANGESERVICECONFIGA,
 				&r);
@@ -1256,6 +1282,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CREATESERVICEA,
 				&r);
@@ -1309,6 +1336,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_ENUMDEPENDENTSERVICESA,
 				&r);
@@ -1368,6 +1396,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_ENUMSERVICESSTATUSA,
 				&r);
@@ -1422,6 +1451,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_OPENSCMANAGERA,
 				&r);
@@ -1470,6 +1500,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_OPENSERVICEA,
 				&r);
@@ -1517,6 +1548,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICECONFIGA,
 				&r);
@@ -1566,6 +1598,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICELOCKSTATUSA,
 				&r);
@@ -1615,6 +1648,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_STARTSERVICEA,
 				&r);
@@ -1663,6 +1697,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_GETSERVICEDISPLAYNAMEA,
 				&r);
@@ -1715,6 +1750,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_GETSERVICEKEYNAMEA,
 				&r);
@@ -1760,6 +1796,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_GETCURRENTGROUPESTATEW,
 				&r);
@@ -1801,6 +1838,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_ENUMSERVICEGROUPW,
 				&r);
@@ -1848,6 +1886,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CHANGESERVICECONFIG2A,
 				&r);
@@ -1895,6 +1934,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_CHANGESERVICECONFIG2W,
 				&r);
@@ -1944,6 +1984,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICECONFIG2A,
 				&r);
@@ -1995,6 +2036,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICECONFIG2W,
 				&r);
@@ -2046,6 +2088,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_QUERYSERVICESTATUSEX,
 				&r);
@@ -2105,6 +2148,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_ENUMSERVICESSTATUSEXA,
 				&r);
@@ -2169,6 +2213,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_ENUMSERVICESSTATUSEXW,
 				&r);
@@ -2217,6 +2262,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_SVCCTL,
 				&ndr_table_svcctl,
 				NDR_SVCCTL_SCSENDTSMESSAGE,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_svcctl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -94,10 +94,10 @@
 					      TALLOC_CTX *mem_ctx,
 					      struct policy_handle *service /* [in] [ref] */,
 					      uint32_t state /* [in]  */,
-					      uint8_t *service_status /* [out] [ref,size_is(buf_size)] */,
-					      uint32_t buf_size /* [in] [range(0,0x40000)] */,
-					      uint32_t *bytes_needed /* [out] [ref,range(0,0x40000)] */,
-					      uint32_t *services_returned /* [out] [ref,range(0,0x40000)] */,
+					      struct ENUM_SERVICE_STATUS *service_status /* [out] [unique] */,
+					      uint32_t buf_size /* [in]  */,
+					      uint32_t *bytes_needed /* [out] [ref] */,
+					      uint32_t *services_returned /* [out] [ref] */,
 					      WERROR *werror);
 NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -26,6 +26,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKCR,
 				&r);
@@ -73,6 +74,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKCU,
 				&r);
@@ -120,6 +122,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKLM,
 				&r);
@@ -167,6 +170,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKPD,
 				&r);
@@ -214,6 +218,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKU,
 				&r);
@@ -258,6 +263,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_CLOSEKEY,
 				&r);
@@ -315,6 +321,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_CREATEKEY,
 				&r);
@@ -364,6 +371,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_DELETEKEY,
 				&r);
@@ -409,6 +417,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_DELETEVALUE,
 				&r);
@@ -460,6 +469,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_ENUMKEY,
 				&r);
@@ -522,6 +532,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_ENUMVALUE,
 				&r);
@@ -578,6 +589,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_FLUSHKEY,
 				&r);
@@ -625,6 +637,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_GETKEYSECURITY,
 				&r);
@@ -673,6 +686,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_LOADKEY,
 				&r);
@@ -728,6 +742,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_NOTIFYCHANGEKEYVALUE,
 				&r);
@@ -778,6 +793,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENKEY,
 				&r);
@@ -832,6 +848,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_QUERYINFOKEY,
 				&r);
@@ -894,6 +911,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_QUERYVALUE,
 				&r);
@@ -947,6 +965,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_REPLACEKEY,
 				&r);
@@ -994,6 +1013,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_RESTOREKEY,
 				&r);
@@ -1041,6 +1061,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_SAVEKEY,
 				&r);
@@ -1088,6 +1109,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_SETKEYSECURITY,
 				&r);
@@ -1139,6 +1161,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_SETVALUE,
 				&r);
@@ -1180,6 +1203,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_UNLOADKEY,
 				&r);
@@ -1212,7 +1236,7 @@
 					      struct initshutdown_String *message /* [in] [unique] */,
 					      uint32_t timeout /* [in]  */,
 					      uint8_t force_apps /* [in]  */,
-					      uint8_t do_reboot /* [in]  */,
+					      uint8_t reboot /* [in]  */,
 					      WERROR *werror)
 {
 	struct winreg_InitiateSystemShutdown r;
@@ -1223,7 +1247,7 @@
 	r.in.message = message;
 	r.in.timeout = timeout;
 	r.in.force_apps = force_apps;
-	r.in.do_reboot = do_reboot;
+	r.in.reboot = reboot;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdown, &r);
@@ -1231,6 +1255,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_INITIATESYSTEMSHUTDOWN,
 				&r);
@@ -1274,6 +1299,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_ABORTSYSTEMSHUTDOWN,
 				&r);
@@ -1318,6 +1344,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_GETVERSION,
 				&r);
@@ -1365,6 +1392,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKCC,
 				&r);
@@ -1412,6 +1440,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKDD,
 				&r);
@@ -1464,6 +1493,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_QUERYMULTIPLEVALUES,
 				&r);
@@ -1501,7 +1531,7 @@
 						struct initshutdown_String *message /* [in] [unique] */,
 						uint32_t timeout /* [in]  */,
 						uint8_t force_apps /* [in]  */,
-						uint8_t do_reboot /* [in]  */,
+						uint8_t reboot /* [in]  */,
 						uint32_t reason /* [in]  */,
 						WERROR *werror)
 {
@@ -1513,7 +1543,7 @@
 	r.in.message = message;
 	r.in.timeout = timeout;
 	r.in.force_apps = force_apps;
-	r.in.do_reboot = do_reboot;
+	r.in.reboot = reboot;
 	r.in.reason = reason;
 
 	if (DEBUGLEVEL >= 10) {
@@ -1522,6 +1552,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_INITIATESYSTEMSHUTDOWNEX,
 				&r);
@@ -1563,6 +1594,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_SAVEKEYEX,
 				&r);
@@ -1609,6 +1641,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKPT,
 				&r);
@@ -1656,6 +1689,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_OPENHKPN,
 				&r);
@@ -1698,6 +1732,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WINREG,
 				&ndr_table_winreg,
 				NDR_WINREG_QUERYMULTIPLEVALUES2,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_winreg.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -168,7 +168,7 @@
 					      struct initshutdown_String *message /* [in] [unique] */,
 					      uint32_t timeout /* [in]  */,
 					      uint8_t force_apps /* [in]  */,
-					      uint8_t do_reboot /* [in]  */,
+					      uint8_t reboot /* [in]  */,
 					      WERROR *werror);
 NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,
@@ -205,7 +205,7 @@
 						struct initshutdown_String *message /* [in] [unique] */,
 						uint32_t timeout /* [in]  */,
 						uint8_t force_apps /* [in]  */,
-						uint8_t do_reboot /* [in]  */,
+						uint8_t reboot /* [in]  */,
 						uint32_t reason /* [in]  */,
 						WERROR *werror);
 NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli,

Modified: branches/samba/upstream/source/librpc/gen_ndr/cli_wkssvc.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/cli_wkssvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/cli_wkssvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -26,6 +26,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETWKSTAGETINFO,
 				&r);
@@ -76,6 +77,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETWKSTASETINFO,
 				&r);
@@ -127,6 +129,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETWKSTAENUMUSERS,
 				&r);
@@ -178,6 +181,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRWKSTAUSERGETINFO,
 				&r);
@@ -228,6 +232,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRWKSTAUSERSETINFO,
 				&r);
@@ -281,6 +286,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETWKSTATRANSPORTENUM,
 				&r);
@@ -335,6 +341,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRWKSTATRANSPORTADD,
 				&r);
@@ -385,6 +392,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRWKSTATRANSPORTDEL,
 				&r);
@@ -434,6 +442,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRUSEADD,
 				&r);
@@ -485,6 +494,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRUSEGETINFO,
 				&r);
@@ -533,6 +543,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRUSEDEL,
 				&r);
@@ -583,6 +594,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRUSEENUM,
 				&r);
@@ -639,6 +651,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRMESSAGEBUFFERSEND,
 				&r);
@@ -689,6 +702,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRWORKSTATIONSTATISTICSGET,
 				&r);
@@ -733,6 +747,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRLOGONDOMAINNAMEADD,
 				&r);
@@ -776,6 +791,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRLOGONDOMAINNAMEDEL,
 				&r);
@@ -829,6 +845,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRJOINDOMAIN,
 				&r);
@@ -878,6 +895,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRUNJOINDOMAIN,
 				&r);
@@ -929,6 +947,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN,
 				&r);
@@ -980,6 +999,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRVALIDATENAME,
 				&r);
@@ -1026,6 +1046,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRGETJOININFORMATION,
 				&r);
@@ -1080,6 +1101,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRGETJOINABLEOUS,
 				&r);
@@ -1135,6 +1157,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRJOINDOMAIN2,
 				&r);
@@ -1184,6 +1207,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRUNJOINDOMAIN2,
 				&r);
@@ -1235,6 +1259,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN2,
 				&r);
@@ -1286,6 +1311,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRVALIDATENAME2,
 				&r);
@@ -1338,6 +1364,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRGETJOINABLEOUS2,
 				&r);
@@ -1391,6 +1418,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRADDALTERNATECOMPUTERNAME,
 				&r);
@@ -1442,6 +1470,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME,
 				&r);
@@ -1493,6 +1522,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRSETPRIMARYCOMPUTERNAME,
 				&r);
@@ -1541,6 +1571,7 @@
 
 	status = cli_do_rpc_ndr(cli,
 				mem_ctx,
+				PI_WKSSVC,
 				&ndr_table_wkssvc,
 				NDR_WKSSVC_NETRENUMERATECOMPUTERNAMES,
 				&r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/dfs.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/dfs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/dfs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -11,15 +11,13 @@
  {
 	DFS_MANAGER_VERSION_NT4=1,
 	DFS_MANAGER_VERSION_W2K=2,
-	DFS_MANAGER_VERSION_W2K3=4,
-	DFS_MANAGER_VERSION_W2K8=6
+	DFS_MANAGER_VERSION_W2K3=4
 }
 #else
  { __donnot_use_enum_dfs_ManagerVersion=0x7FFFFFFF}
 #define DFS_MANAGER_VERSION_NT4 ( 1 )
 #define DFS_MANAGER_VERSION_W2K ( 2 )
 #define DFS_MANAGER_VERSION_W2K3 ( 4 )
-#define DFS_MANAGER_VERSION_W2K8 ( 6 )
 #endif
 ;
 

Deleted: branches/samba/upstream/source/librpc/gen_ndr/drsblobs.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/drsblobs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/drsblobs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,427 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/drsuapi.h"
-#include "librpc/gen_ndr/misc.h"
-#ifndef _HEADER_drsblobs
-#define _HEADER_drsblobs
-
-#define SUPPLEMENTAL_CREDENTIALS_PREFIX	( "                                                " )
-enum drsuapi_DsAttributeId;
-
-struct replPropertyMetaData1 {
-	enum drsuapi_DsAttributeId attid;
-	uint32_t version;
-	NTTIME originating_change_time;
-	struct GUID originating_invocation_id;
-	uint64_t originating_usn;
-	uint64_t local_usn;
-};
-
-struct replPropertyMetaDataCtr1 {
-	uint32_t count;
-	uint32_t reserved;
-	struct replPropertyMetaData1 *array;
-};
-
-union replPropertyMetaDataCtr {
-	struct replPropertyMetaDataCtr1 ctr1;/* [case] */
-}/* [nodiscriminant] */;
-
-struct replPropertyMetaDataBlob {
-	uint32_t version;
-	uint32_t reserved;
-	union replPropertyMetaDataCtr ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-struct replUpToDateVectorCtr1 {
-	uint32_t count;
-	uint32_t reserved;
-	struct drsuapi_DsReplicaCursor *cursors;
-};
-
-struct replUpToDateVectorCtr2 {
-	uint32_t count;
-	uint32_t reserved;
-	struct drsuapi_DsReplicaCursor2 *cursors;
-};
-
-union replUpToDateVectorCtr {
-	struct replUpToDateVectorCtr1 ctr1;/* [case] */
-	struct replUpToDateVectorCtr2 ctr2;/* [case(2)] */
-}/* [nodiscriminant] */;
-
-struct replUpToDateVectorBlob {
-	uint32_t version;
-	uint32_t reserved;
-	union replUpToDateVectorCtr ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-struct repsFromTo1OtherInfo {
-	uint32_t __dns_name_size;/* [value(strlen(dns_name)+1)] */
-	const char *dns_name;/* [charset(DOS)] */
-}/* [gensize,public] */;
-
-struct repsFromTo1 {
-	uint32_t blobsize;/* [value(ndr_size_repsFromTo1(this,ndr->flags)+8)] */
-	uint32_t consecutive_sync_failures;
-	NTTIME last_success;
-	NTTIME last_attempt;
-	WERROR result_last_attempt;
-	struct repsFromTo1OtherInfo *other_info;/* [relative] */
-	uint32_t other_info_length;/* [value(ndr_size_repsFromTo1OtherInfo(other_info,ndr->flags))] */
-	uint32_t replica_flags;
-	uint8_t schedule[84];
-	uint32_t reserved;
-	struct drsuapi_DsReplicaHighWaterMark highwatermark;
-	struct GUID source_dsa_obj_guid;
-	struct GUID source_dsa_invocation_id;
-	struct GUID transport_guid;
-}/* [gensize,public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-union repsFromTo {
-	struct repsFromTo1 ctr1;/* [case] */
-}/* [nodiscriminant] */;
-
-struct repsFromToBlob {
-	uint32_t version;
-	uint32_t reserved;
-	union repsFromTo ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-struct partialAttributeSetCtr1 {
-	uint32_t count;
-	enum drsuapi_DsAttributeId *array;
-};
-
-union partialAttributeSetCtr {
-	struct partialAttributeSetCtr1 ctr1;/* [case] */
-}/* [nodiscriminant] */;
-
-struct partialAttributeSetBlob {
-	uint32_t version;
-	uint32_t reserved;
-	union partialAttributeSetCtr ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-enum prefixMapVersion
-#ifndef USE_UINT_ENUMS
- {
-	PREFIX_MAP_VERSION_DSDB=0x44534442
-}
-#else
- { __donnot_use_enum_prefixMapVersion=0x7FFFFFFF}
-#define PREFIX_MAP_VERSION_DSDB ( 0x44534442 )
-#endif
-;
-
-union prefixMapCtr {
-	struct drsuapi_DsReplicaOIDMapping_Ctr dsdb;/* [case(PREFIX_MAP_VERSION_DSDB)] */
-}/* [nodiscriminant] */;
-
-struct prefixMapBlob {
-	enum prefixMapVersion version;
-	uint32_t reserved;
-	union prefixMapCtr ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-union ldapControlDirSyncExtra {
-	struct replUpToDateVectorBlob uptodateness_vector;/* [default] */
-}/* [gensize,nodiscriminant] */;
-
-struct ldapControlDirSyncBlob {
-	uint32_t u1;/* [value(3)] */
-	NTTIME time;
-	uint32_t u2;
-	uint32_t u3;
-	uint32_t extra_length;/* [value(ndr_size_ldapControlDirSyncExtra(&extra,extra.uptodateness_vector.version,0))] */
-	struct drsuapi_DsReplicaHighWaterMark highwatermark;
-	struct GUID guid1;
-	union ldapControlDirSyncExtra extra;/* [switch_is(extra_length)] */
-};
-
-struct ldapControlDirSyncCookie {
-	const char *msds;/* [value("MSDS"),charset(DOS)] */
-	struct ldapControlDirSyncBlob blob;/* [subcontext(0)] */
-}/* [relative_base,public] */;
-
-struct supplementalCredentialsPackage {
-	uint16_t name_len;/* [value(2*strlen_m(name))] */
-	uint16_t data_len;/* [value(strlen(data))] */
-	uint16_t reserved;
-	const char *name;/* [charset(UTF16)] */
-	const char *data;/* [charset(DOS)] */
-};
-
-enum supplementalCredentialsSignature
-#ifndef USE_UINT_ENUMS
- {
-	SUPPLEMENTAL_CREDENTIALS_SIGNATURE=0x0050
-}
-#else
- { __donnot_use_enum_supplementalCredentialsSignature=0x7FFFFFFF}
-#define SUPPLEMENTAL_CREDENTIALS_SIGNATURE ( 0x0050 )
-#endif
-;
-
-struct supplementalCredentialsSubBlob {
-	const char *prefix;/* [value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] */
-	enum supplementalCredentialsSignature signature;/* [value(SUPPLEMENTAL_CREDENTIALS_SIGNATURE)] */
-	uint16_t num_packages;
-	struct supplementalCredentialsPackage *packages;
-}/* [gensize] */;
-
-struct supplementalCredentialsBlob {
-	uint32_t unknown1;/* [value(0)] */
-	uint32_t __ndr_size;/* [value(ndr_size_supplementalCredentialsSubBlob(&sub,ndr->flags))] */
-	uint32_t unknown2;/* [value(0)] */
-	struct supplementalCredentialsSubBlob sub;/* [subcontext_size(__ndr_size),subcontext(0)] */
-	uint8_t unknown3;/* [value(0)] */
-}/* [public] */;
-
-struct package_PackagesBlob {
-	const char ** names;/* [flag(LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING)] */
-}/* [public] */;
-
-struct package_PrimaryKerberosString {
-	uint16_t length;/* [value(2*strlen_m(string))] */
-	uint16_t size;/* [value(2*strlen_m(string))] */
-	const char * string;/* [relative,subcontext_size(size),subcontext(0),flag(LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING)] */
-};
-
-struct package_PrimaryKerberosKey3 {
-	uint16_t reserved1;/* [value(0)] */
-	uint16_t reserved2;/* [value(0)] */
-	uint32_t reserved3;/* [value(0)] */
-	uint32_t keytype;
-	uint32_t value_len;/* [value((value?value->length:0))] */
-	DATA_BLOB *value;/* [relative,subcontext_size(value_len),subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
-};
-
-struct package_PrimaryKerberosCtr3 {
-	uint16_t num_keys;
-	uint16_t num_old_keys;
-	struct package_PrimaryKerberosString salt;
-	struct package_PrimaryKerberosKey3 *keys;
-	struct package_PrimaryKerberosKey3 *old_keys;
-	uint32_t padding1;/* [value(0)] */
-	uint32_t padding2;/* [value(0)] */
-	uint32_t padding3;/* [value(0)] */
-	uint32_t padding4;/* [value(0)] */
-	uint32_t padding5;/* [value(0)] */
-};
-
-struct package_PrimaryKerberosKey4 {
-	uint16_t reserved1;/* [value(0)] */
-	uint16_t reserved2;/* [value(0)] */
-	uint32_t reserved3;/* [value(0)] */
-	uint32_t iteration_count;
-	uint32_t keytype;
-	uint32_t value_len;/* [value((value?value->length:0))] */
-	DATA_BLOB *value;/* [relative,subcontext_size(value_len),subcontext(0),flag(LIBNDR_FLAG_REMAINING)] */
-};
-
-struct package_PrimaryKerberosCtr4 {
-	uint16_t num_keys;
-	uint16_t num_service_keys;/* [value(0)] */
-	uint16_t num_old_keys;
-	uint16_t num_older_keys;
-	struct package_PrimaryKerberosString salt;
-	uint32_t default_iteration_count;
-	struct package_PrimaryKerberosKey4 *keys;
-	struct package_PrimaryKerberosKey4 *service_keys;
-	struct package_PrimaryKerberosKey4 *old_keys;
-	struct package_PrimaryKerberosKey4 *older_keys;
-};
-
-union package_PrimaryKerberosCtr {
-	struct package_PrimaryKerberosCtr3 ctr3;/* [case(3)] */
-	struct package_PrimaryKerberosCtr4 ctr4;/* [case(4)] */
-}/* [nodiscriminant] */;
-
-struct package_PrimaryKerberosBlob {
-	uint16_t version;
-	uint16_t flags;/* [value(0)] */
-	union package_PrimaryKerberosCtr ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-struct package_PrimaryCLEARTEXTBlob {
-	const char * cleartext;/* [flag(LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING)] */
-}/* [public] */;
-
-struct package_PrimaryWDigestHash {
-	uint8_t hash[16];
-}/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct package_PrimaryWDigestBlob {
-	uint16_t unknown1;/* [value(0x31)] */
-	uint8_t unknown2;/* [value(0x01)] */
-	uint8_t num_hashes;
-	uint32_t unknown3;/* [value(0)] */
-	uint64_t uuknown4;/* [value(0)] */
-	struct package_PrimaryWDigestHash *hashes;
-}/* [public] */;
-
-struct trustAuthInOutSecret1 {
-	NTTIME time1;
-	uint32_t unknown1;
-	DATA_BLOB value;
-	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN4)] */
-};
-
-struct trustAuthInOutCtr1 {
-	struct trustAuthInOutSecret1 *value1;/* [relative] */
-	struct trustAuthInOutSecret1 *value2;/* [relative] */
-};
-
-struct trustAuthInOutSecret2V1 {
-	NTTIME time1;
-	uint32_t unknown1;
-	DATA_BLOB value;
-	NTTIME time2;
-	uint32_t unknown2;
-	uint32_t unknown3;
-	uint32_t unknown4;
-	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN4)] */
-};
-
-struct trustAuthInOutSecret2V2 {
-	NTTIME time1;
-	uint32_t unknown1;
-	DATA_BLOB value;
-	NTTIME time2;
-	uint32_t unknown2;
-	uint32_t unknown3;
-	DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN4)] */
-};
-
-struct trustAuthInOutCtr2 {
-	struct trustAuthInOutSecret2V1 *value1;/* [relative] */
-	struct trustAuthInOutSecret2V2 *value2;/* [relative] */
-};
-
-union trustAuthInOutCtr {
-	struct trustAuthInOutCtr1 ctr1;/* [case] */
-	struct trustAuthInOutCtr2 ctr2;/* [case(2)] */
-}/* [nodiscriminant] */;
-
-struct trustAuthInOutBlob {
-	uint32_t version;
-	union trustAuthInOutCtr ctr;/* [switch_is(version)] */
-}/* [public] */;
-
-struct DsCompressedChunk {
-	uint32_t marker;
-	DATA_BLOB data;
-}/* [public] */;
-
-struct DsCompressedBlob {
-	struct DsCompressedChunk chunks[5];
-}/* [public] */;
-
-
-struct decode_replPropertyMetaData {
-	struct {
-		struct replPropertyMetaDataBlob blob;
-	} in;
-
-};
-
-
-struct decode_replUpToDateVector {
-	struct {
-		struct replUpToDateVectorBlob blob;
-	} in;
-
-};
-
-
-struct decode_repsFromTo {
-	struct {
-		struct repsFromToBlob blob;
-	} in;
-
-};
-
-
-struct decode_partialAttributeSet {
-	struct {
-		struct partialAttributeSetBlob blob;
-	} in;
-
-};
-
-
-struct decode_prefixMap {
-	struct {
-		struct prefixMapBlob blob;
-	} in;
-
-};
-
-
-struct decode_ldapControlDirSync {
-	struct {
-		struct ldapControlDirSyncCookie cookie;
-	} in;
-
-};
-
-
-struct decode_supplementalCredentials {
-	struct {
-		struct supplementalCredentialsBlob blob;
-	} in;
-
-};
-
-
-struct decode_Packages {
-	struct {
-		struct package_PackagesBlob blob;
-	} in;
-
-};
-
-
-struct decode_PrimaryKerberos {
-	struct {
-		struct package_PrimaryKerberosBlob blob;
-	} in;
-
-};
-
-
-struct decode_PrimaryCLEARTEXT {
-	struct {
-		struct package_PrimaryCLEARTEXTBlob blob;
-	} in;
-
-};
-
-
-struct decode_PrimaryWDigest {
-	struct {
-		struct package_PrimaryWDigestBlob blob;
-	} in;
-
-};
-
-
-struct decode_trustAuthInOut {
-	struct {
-		struct trustAuthInOutBlob blob;
-	} in;
-
-};
-
-
-struct decode_DsCompressed {
-	struct {
-		struct DsCompressedBlob blob;
-	} in;
-
-};
-
-#endif /* _HEADER_drsblobs */

Deleted: branches/samba/upstream/source/librpc/gen_ndr/drsuapi.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/drsuapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/drsuapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1762 +0,0 @@
-/* header auto-generated by pidl */
-
-#include <stdint.h>
-
-#include "librpc/gen_ndr/security.h"
-#include "librpc/gen_ndr/misc.h"
-#include "librpc/gen_ndr/samr.h"
-#ifndef _HEADER_drsuapi
-#define _HEADER_drsuapi
-
-#define DRSUAPI_DS_BIND_GUID	( "e24d201a-4fd6-11d1-a3da-0000f875ae0d" )
-#define DRSUAPI_DS_BIND_GUID_W2K	( "6abec3d1-3054-41c8-a362-5a0c5b7d5d71" )
-#define DRSUAPI_DS_BIND_GUID_W2K3	( "6afab99c-6e26-464a-975f-f58f105218bc" )
-#define DRSUAPI_DS_MEMBERSHIP_FLAG_GROUP_ATTR	( 0x1 )
-#define DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID	( "E3514235-4B06-11D1-AB04-00C04FC2DCD2" )
-/* bitmap drsuapi_SupportedExtensions */
-#define DRSUAPI_SUPPORTED_EXTENSION_BASE ( 0x00000001 )
-#define DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION ( 0x00000002 )
-#define DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI ( 0x00000004 )
-#define DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 ( 0x00000008 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS ( 0x00000010 )
-#define DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 ( 0x00000020 )
-#define DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION ( 0x00000040 )
-#define DRSUAPI_SUPPORTED_EXTENSION_00000080 ( 0x00000080 )
-#define DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE ( 0x00000100 )
-#define DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 ( 0x00000200 )
-#define DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION ( 0x00000400 )
-#define DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 ( 0x00000800 )
-#define DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD ( 0x00001000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND ( 0x00002000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO ( 0x00004000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION ( 0x00008000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 ( 0x00010000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP ( 0x00020000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY ( 0x00040000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 ( 0x00080000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_00100000 ( 0x00100000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 ( 0x00200000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 ( 0x00400000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS ( 0x00800000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 ( 0x01000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 ( 0x02000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 ( 0x04000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 ( 0x08000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 ( 0x08000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT ( 0x08000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS ( 0x10000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_20000000 ( 0x20000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_40000000 ( 0x40000000 )
-#define DRSUAPI_SUPPORTED_EXTENSION_80000000 ( 0x80000000 )
-
-/* bitmap drsuapi_SupportedExtensionsExt */
-#define DRSUAPI_SUPPORTED_EXTENSION_ADAM ( 0x00000001 )
-#define DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 ( 0x00000002 )
-
-struct drsuapi_DsBindInfo24 {
-	uint32_t supported_extensions;
-	struct GUID site_guid;
-	uint32_t pid;
-};
-
-struct drsuapi_DsBindInfo28 {
-	uint32_t supported_extensions;
-	struct GUID site_guid;
-	uint32_t pid;
-	uint32_t repl_epoch;
-};
-
-struct drsuapi_DsBindInfo48 {
-	uint32_t supported_extensions;
-	struct GUID site_guid;
-	uint32_t pid;
-	uint32_t repl_epoch;
-	uint32_t supported_extensions_ext;
-	struct GUID config_dn_guid;
-};
-
-struct drsuapi_DsBindInfoFallBack {
-	DATA_BLOB info;/* [flag(LIBNDR_FLAG_REMAINING)] */
-};
-
-union drsuapi_DsBindInfo {
-	struct drsuapi_DsBindInfo24 info24;/* [subcontext(4),case(24)] */
-	struct drsuapi_DsBindInfo28 info28;/* [subcontext(4),case(28)] */
-	struct drsuapi_DsBindInfo48 info48;/* [subcontext(4),case(48)] */
-	struct drsuapi_DsBindInfoFallBack FallBack;/* [subcontext(4),default] */
-}/* [nodiscriminant] */;
-
-struct drsuapi_DsBindInfoCtr {
-	uint32_t length;/* [range(1,10000)] */
-	union drsuapi_DsBindInfo info;/* [switch_is(length)] */
-};
-
-struct drsuapi_DsReplicaObjectIdentifier {
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r,ndr->flags)-4)] */
-	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
-	struct GUID guid;
-	struct dom_sid28 sid;
-	uint32_t __ndr_size_dn;/* [value(strlen_m(dn))] */
-	const char *dn;/* [charset(UTF16),size_is(__ndr_size_dn+1)] */
-}/* [gensize,public] */;
-
-/* bitmap drsuapi_DsReplicaSyncOptions */
-#define DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_SYNC_WRITEABLE ( 0x00000002 )
-#define DRSUAPI_DS_REPLICA_SYNC_PERIODIC ( 0x00000004 )
-#define DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING ( 0x00000008 )
-#define DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES ( 0x00000010 )
-#define DRSUAPI_DS_REPLICA_SYNC_FULL ( 0x00000020 )
-#define DRSUAPI_DS_REPLICA_SYNC_URGENT ( 0x00000040 )
-#define DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD ( 0x00000080 )
-#define DRSUAPI_DS_REPLICA_SYNC_FORCE ( 0x00000100 )
-#define DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE ( 0x00000200 )
-#define DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED ( 0x00000400 )
-#define DRSUAPI_DS_REPLICA_SYNC_TWO_WAY ( 0x00000800 )
-#define DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY ( 0x00001000 )
-#define DRSUAPI_DS_REPLICA_SYNC_INITIAL ( 0x00002000 )
-#define DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION ( 0x00004000 )
-#define DRSUAPI_DS_REPLICA_SYNC_ABANDONED ( 0x00008000 )
-#define DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS ( 0x00010000 )
-#define DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET ( 0x00020000 )
-#define DRSUAPI_DS_REPLICA_SYNC_REQUEUE ( 0x00040000 )
-#define DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION ( 0x00080000 )
-#define DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA ( 0x00100000 )
-#define DRSUAPI_DS_REPLICA_SYNC_CRITICAL ( 0x00200000 )
-#define DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS ( 0x00400000 )
-#define DRSUAPI_DS_REPLICA_SYNC_PREEMPTED ( 0x00800000 )
-
-struct drsuapi_DsReplicaSyncRequest1 {
-	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [unique] */
-	struct GUID source_dsa_guid;
-	const char * other_info;/* [unique,flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-	uint32_t options;
-};
-
-union drsuapi_DsReplicaSyncRequest {
-	struct drsuapi_DsReplicaSyncRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsReplicaHighWaterMark {
-	uint64_t tmp_highest_usn;
-	uint64_t reserved_usn;
-	uint64_t highest_usn;
-}/* [public] */;
-
-struct drsuapi_DsReplicaCursor {
-	struct GUID source_dsa_invocation_id;
-	uint64_t highest_usn;
-}/* [public] */;
-
-struct drsuapi_DsReplicaCursorCtrEx {
-	uint32_t version;/* [value] */
-	uint32_t reserved1;/* [value(0)] */
-	uint32_t count;/* [range(0,0x100000)] */
-	uint32_t reserved2;/* [value(0)] */
-	struct drsuapi_DsReplicaCursor *cursors;/* [size_is(count)] */
-};
-
-/* bitmap drsuapi_DsReplicaNeighbourFlags */
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE ( 0x00000010 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP ( 0x00000020 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS ( 0x00000040 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_USE_ASYNC_INTERSIDE_TRANSPORT ( 0x00000080 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_TWO_WAY_SYNC ( 0x00000200 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS ( 0x00000800 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS ( 0x00001000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_NEXT_PACKET ( 0x00002000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED ( 0x00200000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED ( 0x01000000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS ( 0x04000000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC ( 0x08000000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES ( 0x10000000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS ( 0x20000000 )
-#define DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET ( 0x40000000 )
-
-enum drsuapi_DsExtendedOperation
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_EXOP_NONE=0x00000000,
-	DRSUAPI_EXOP_FSMO_REQ_ROLE=0x00000001,
-	DRSUAPI_EXOP_FSMO_RID_ALLOC=0x00000002,
-	DRSUAPI_EXOP_FSMO_RID_REQ_ROLE=0x00000003,
-	DRSUAPI_EXOP_FSMO_REQ_PDC=0x00000004,
-	DRSUAPI_EXOP_FSMO_ABANDON_ROLE=0x00000005,
-	DRSUAPI_EXOP_REPL_OBJ=0x00000006,
-	DRSUAPI_EXOP_REPL_SECRET=0x00000007
-}
-#else
- { __donnot_use_enum_drsuapi_DsExtendedOperation=0x7FFFFFFF}
-#define DRSUAPI_EXOP_NONE ( 0x00000000 )
-#define DRSUAPI_EXOP_FSMO_REQ_ROLE ( 0x00000001 )
-#define DRSUAPI_EXOP_FSMO_RID_ALLOC ( 0x00000002 )
-#define DRSUAPI_EXOP_FSMO_RID_REQ_ROLE ( 0x00000003 )
-#define DRSUAPI_EXOP_FSMO_REQ_PDC ( 0x00000004 )
-#define DRSUAPI_EXOP_FSMO_ABANDON_ROLE ( 0x00000005 )
-#define DRSUAPI_EXOP_REPL_OBJ ( 0x00000006 )
-#define DRSUAPI_EXOP_REPL_SECRET ( 0x00000007 )
-#endif
-;
-
-enum drsuapi_DsExtendedError
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_EXOP_ERR_NONE=0x00000000,
-	DRSUAPI_EXOP_ERR_SUCCESS=0x00000001,
-	DRSUAPI_EXOP_ERR_UNKNOWN_OP=0x00000002,
-	DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER=0x00000003,
-	DRSUAPI_EXOP_ERR_UPDATE_ERR=0x00000004,
-	DRSUAPI_EXOP_ERR_EXCEPTION=0x00000005,
-	DRSUAPI_EXOP_ERR_UNKNOWN_CALLER=0x00000006,
-	DRSUAPI_EXOP_ERR_RID_ALLOC=0x00000007,
-	DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED=0x00000008,
-	DRSUAPI_EXOP_ERR_FMSO_PENDING_OP=0x00000009,
-	DRSUAPI_EXOP_ERR_MISMATCH=0x0000000A,
-	DRSUAPI_EXOP_ERR_COULDNT_CONTACT=0x0000000B,
-	DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES=0x0000000C,
-	DRSUAPI_EXOP_ERR_DIR_ERROR=0x0000000D,
-	DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS=0x0000000E,
-	DRSUAPI_EXOP_ERR_ACCESS_DENIED=0x0000000F,
-	DRSUAPI_EXOP_ERR_PARAM_ERROR=0x00000010
-}
-#else
- { __donnot_use_enum_drsuapi_DsExtendedError=0x7FFFFFFF}
-#define DRSUAPI_EXOP_ERR_NONE ( 0x00000000 )
-#define DRSUAPI_EXOP_ERR_SUCCESS ( 0x00000001 )
-#define DRSUAPI_EXOP_ERR_UNKNOWN_OP ( 0x00000002 )
-#define DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER ( 0x00000003 )
-#define DRSUAPI_EXOP_ERR_UPDATE_ERR ( 0x00000004 )
-#define DRSUAPI_EXOP_ERR_EXCEPTION ( 0x00000005 )
-#define DRSUAPI_EXOP_ERR_UNKNOWN_CALLER ( 0x00000006 )
-#define DRSUAPI_EXOP_ERR_RID_ALLOC ( 0x00000007 )
-#define DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED ( 0x00000008 )
-#define DRSUAPI_EXOP_ERR_FMSO_PENDING_OP ( 0x00000009 )
-#define DRSUAPI_EXOP_ERR_MISMATCH ( 0x0000000A )
-#define DRSUAPI_EXOP_ERR_COULDNT_CONTACT ( 0x0000000B )
-#define DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES ( 0x0000000C )
-#define DRSUAPI_EXOP_ERR_DIR_ERROR ( 0x0000000D )
-#define DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS ( 0x0000000E )
-#define DRSUAPI_EXOP_ERR_ACCESS_DENIED ( 0x0000000F )
-#define DRSUAPI_EXOP_ERR_PARAM_ERROR ( 0x00000010 )
-#endif
-;
-
-struct drsuapi_DsGetNCChangesRequest5 {
-	struct GUID destination_dsa_guid;
-	struct GUID source_dsa_invocation_id;
-	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
-	struct drsuapi_DsReplicaHighWaterMark highwatermark;
-	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
-	uint32_t replica_flags;
-	uint32_t max_object_count;
-	uint32_t max_ndr_size;
-	enum drsuapi_DsExtendedOperation extended_op;
-	uint64_t fsmo_info;
-};
-
-struct drsuapi_DsReplicaOID {
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaOID_oid(oid,0)),range(0,10000)] */
-	const char *oid;/* [unique,charset(DOS),size_is(__ndr_size)] */
-}/* [nopush,nopull] */;
-
-struct drsuapi_DsReplicaOIDMapping {
-	uint32_t id_prefix;
-	struct drsuapi_DsReplicaOID oid;
-};
-
-struct drsuapi_DsReplicaOIDMapping_Ctr {
-	uint32_t num_mappings;/* [range(0,0x100000)] */
-	struct drsuapi_DsReplicaOIDMapping *mappings;/* [unique,size_is(num_mappings)] */
-}/* [public] */;
-
-enum drsuapi_DsObjectClassId
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_OBJECTCLASS_top=0x00010000,
-	DRSUAPI_OBJECTCLASS_classSchema=0x0003000d,
-	DRSUAPI_OBJECTCLASS_attributeSchema=0x0003000e
-}
-#else
- { __donnot_use_enum_drsuapi_DsObjectClassId=0x7FFFFFFF}
-#define DRSUAPI_OBJECTCLASS_top ( 0x00010000 )
-#define DRSUAPI_OBJECTCLASS_classSchema ( 0x0003000d )
-#define DRSUAPI_OBJECTCLASS_attributeSchema ( 0x0003000e )
-#endif
-;
-
-enum drsuapi_DsAttributeId
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_ATTRIBUTE_objectClass=0x00000000,
-	DRSUAPI_ATTRIBUTE_description=0x0000000d,
-	DRSUAPI_ATTRIBUTE_member=0x0000001f,
-	DRSUAPI_ATTRIBUTE_instanceType=0x00020001,
-	DRSUAPI_ATTRIBUTE_whenCreated=0x00020002,
-	DRSUAPI_ATTRIBUTE_hasMasterNCs=0x0002000e,
-	DRSUAPI_ATTRIBUTE_governsID=0x00020016,
-	DRSUAPI_ATTRIBUTE_attributeID=0x0002001e,
-	DRSUAPI_ATTRIBUTE_attributeSyntax=0x00020020,
-	DRSUAPI_ATTRIBUTE_isSingleValued=0x00020021,
-	DRSUAPI_ATTRIBUTE_rangeLower=0x00020022,
-	DRSUAPI_ATTRIBUTE_rangeUpper=0x00020023,
-	DRSUAPI_ATTRIBUTE_dMDLocation=0x00020024,
-	DRSUAPI_ATTRIBUTE_objectVersion=0x0002004c,
-	DRSUAPI_ATTRIBUTE_invocationId=0x00020073,
-	DRSUAPI_ATTRIBUTE_showInAdvancedViewOnly=0x000200a9,
-	DRSUAPI_ATTRIBUTE_adminDisplayName=0x000200c2,
-	DRSUAPI_ATTRIBUTE_adminDescription=0x000200e2,
-	DRSUAPI_ATTRIBUTE_oMSyntax=0x000200e7,
-	DRSUAPI_ATTRIBUTE_ntSecurityDescriptor=0x00020119,
-	DRSUAPI_ATTRIBUTE_searchFlags=0x0002014e,
-	DRSUAPI_ATTRIBUTE_lDAPDisplayName=0x000201cc,
-	DRSUAPI_ATTRIBUTE_name=0x00090001,
-	DRSUAPI_ATTRIBUTE_userAccountControl=0x00090008,
-	DRSUAPI_ATTRIBUTE_currentValue=0x0009001b,
-	DRSUAPI_ATTRIBUTE_homeDirectory=0x0009002c,
-	DRSUAPI_ATTRIBUTE_homeDrive=0x0009002d,
-	DRSUAPI_ATTRIBUTE_scriptPath=0x0009003e,
-	DRSUAPI_ATTRIBUTE_profilePath=0x0009008b,
-	DRSUAPI_ATTRIBUTE_objectSid=0x00090092,
-	DRSUAPI_ATTRIBUTE_schemaIDGUID=0x00090094,
-	DRSUAPI_ATTRIBUTE_dBCSPwd=0x00090037,
-	DRSUAPI_ATTRIBUTE_logonHours=0x00090040,
-	DRSUAPI_ATTRIBUTE_userWorkstations=0x00090056,
-	DRSUAPI_ATTRIBUTE_unicodePwd=0x0009005a,
-	DRSUAPI_ATTRIBUTE_ntPwdHistory=0x0009005e,
-	DRSUAPI_ATTRIBUTE_priorValue=0x00090064,
-	DRSUAPI_ATTRIBUTE_supplementalCredentials=0x0009007d,
-	DRSUAPI_ATTRIBUTE_trustAuthIncoming=0x00090081,
-	DRSUAPI_ATTRIBUTE_trustAuthOutgoing=0x00090087,
-	DRSUAPI_ATTRIBUTE_lmPwdHistory=0x000900a0,
-	DRSUAPI_ATTRIBUTE_sAMAccountName=0x000900dd,
-	DRSUAPI_ATTRIBUTE_sAMAccountType=0x0009012e,
-	DRSUAPI_ATTRIBUTE_fSMORoleOwner=0x00090171,
-	DRSUAPI_ATTRIBUTE_systemFlags=0x00090177,
-	DRSUAPI_ATTRIBUTE_serverReference=0x00090203,
-	DRSUAPI_ATTRIBUTE_serverReferenceBL=0x00090204,
-	DRSUAPI_ATTRIBUTE_initialAuthIncoming=0x0009021b,
-	DRSUAPI_ATTRIBUTE_initialAuthOutgoing=0x0009021c,
-	DRSUAPI_ATTRIBUTE_wellKnownObjects=0x0009026a,
-	DRSUAPI_ATTRIBUTE_dNSHostName=0x0009026b,
-	DRSUAPI_ATTRIBUTE_isMemberOfPartialAttributeSet=0x0009027f,
-	DRSUAPI_ATTRIBUTE_userPrincipalName=0x00090290,
-	DRSUAPI_ATTRIBUTE_groupType=0x000902ee,
-	DRSUAPI_ATTRIBUTE_servicePrincipalName=0x00090303,
-	DRSUAPI_ATTRIBUTE_objectCategory=0x0009030e,
-	DRSUAPI_ATTRIBUTE_gPLink=0x0009037b,
-	DRSUAPI_ATTRIBUTE_msDS_Behavior_Version=0x000905b3,
-	DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber=0x000906f6,
-	DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs=0x0009071c,
-	DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs=0x0009072c
-}
-#else
- { __donnot_use_enum_drsuapi_DsAttributeId=0x7FFFFFFF}
-#define DRSUAPI_ATTRIBUTE_objectClass ( 0x00000000 )
-#define DRSUAPI_ATTRIBUTE_description ( 0x0000000d )
-#define DRSUAPI_ATTRIBUTE_member ( 0x0000001f )
-#define DRSUAPI_ATTRIBUTE_instanceType ( 0x00020001 )
-#define DRSUAPI_ATTRIBUTE_whenCreated ( 0x00020002 )
-#define DRSUAPI_ATTRIBUTE_hasMasterNCs ( 0x0002000e )
-#define DRSUAPI_ATTRIBUTE_governsID ( 0x00020016 )
-#define DRSUAPI_ATTRIBUTE_attributeID ( 0x0002001e )
-#define DRSUAPI_ATTRIBUTE_attributeSyntax ( 0x00020020 )
-#define DRSUAPI_ATTRIBUTE_isSingleValued ( 0x00020021 )
-#define DRSUAPI_ATTRIBUTE_rangeLower ( 0x00020022 )
-#define DRSUAPI_ATTRIBUTE_rangeUpper ( 0x00020023 )
-#define DRSUAPI_ATTRIBUTE_dMDLocation ( 0x00020024 )
-#define DRSUAPI_ATTRIBUTE_objectVersion ( 0x0002004c )
-#define DRSUAPI_ATTRIBUTE_invocationId ( 0x00020073 )
-#define DRSUAPI_ATTRIBUTE_showInAdvancedViewOnly ( 0x000200a9 )
-#define DRSUAPI_ATTRIBUTE_adminDisplayName ( 0x000200c2 )
-#define DRSUAPI_ATTRIBUTE_adminDescription ( 0x000200e2 )
-#define DRSUAPI_ATTRIBUTE_oMSyntax ( 0x000200e7 )
-#define DRSUAPI_ATTRIBUTE_ntSecurityDescriptor ( 0x00020119 )
-#define DRSUAPI_ATTRIBUTE_searchFlags ( 0x0002014e )
-#define DRSUAPI_ATTRIBUTE_lDAPDisplayName ( 0x000201cc )
-#define DRSUAPI_ATTRIBUTE_name ( 0x00090001 )
-#define DRSUAPI_ATTRIBUTE_userAccountControl ( 0x00090008 )
-#define DRSUAPI_ATTRIBUTE_currentValue ( 0x0009001b )
-#define DRSUAPI_ATTRIBUTE_homeDirectory ( 0x0009002c )
-#define DRSUAPI_ATTRIBUTE_homeDrive ( 0x0009002d )
-#define DRSUAPI_ATTRIBUTE_scriptPath ( 0x0009003e )
-#define DRSUAPI_ATTRIBUTE_profilePath ( 0x0009008b )
-#define DRSUAPI_ATTRIBUTE_objectSid ( 0x00090092 )
-#define DRSUAPI_ATTRIBUTE_schemaIDGUID ( 0x00090094 )
-#define DRSUAPI_ATTRIBUTE_dBCSPwd ( 0x00090037 )
-#define DRSUAPI_ATTRIBUTE_logonHours ( 0x00090040 )
-#define DRSUAPI_ATTRIBUTE_userWorkstations ( 0x00090056 )
-#define DRSUAPI_ATTRIBUTE_unicodePwd ( 0x0009005a )
-#define DRSUAPI_ATTRIBUTE_ntPwdHistory ( 0x0009005e )
-#define DRSUAPI_ATTRIBUTE_priorValue ( 0x00090064 )
-#define DRSUAPI_ATTRIBUTE_supplementalCredentials ( 0x0009007d )
-#define DRSUAPI_ATTRIBUTE_trustAuthIncoming ( 0x00090081 )
-#define DRSUAPI_ATTRIBUTE_trustAuthOutgoing ( 0x00090087 )
-#define DRSUAPI_ATTRIBUTE_lmPwdHistory ( 0x000900a0 )
-#define DRSUAPI_ATTRIBUTE_sAMAccountName ( 0x000900dd )
-#define DRSUAPI_ATTRIBUTE_sAMAccountType ( 0x0009012e )
-#define DRSUAPI_ATTRIBUTE_fSMORoleOwner ( 0x00090171 )
-#define DRSUAPI_ATTRIBUTE_systemFlags ( 0x00090177 )
-#define DRSUAPI_ATTRIBUTE_serverReference ( 0x00090203 )
-#define DRSUAPI_ATTRIBUTE_serverReferenceBL ( 0x00090204 )
-#define DRSUAPI_ATTRIBUTE_initialAuthIncoming ( 0x0009021b )
-#define DRSUAPI_ATTRIBUTE_initialAuthOutgoing ( 0x0009021c )
-#define DRSUAPI_ATTRIBUTE_wellKnownObjects ( 0x0009026a )
-#define DRSUAPI_ATTRIBUTE_dNSHostName ( 0x0009026b )
-#define DRSUAPI_ATTRIBUTE_isMemberOfPartialAttributeSet ( 0x0009027f )
-#define DRSUAPI_ATTRIBUTE_userPrincipalName ( 0x00090290 )
-#define DRSUAPI_ATTRIBUTE_groupType ( 0x000902ee )
-#define DRSUAPI_ATTRIBUTE_servicePrincipalName ( 0x00090303 )
-#define DRSUAPI_ATTRIBUTE_objectCategory ( 0x0009030e )
-#define DRSUAPI_ATTRIBUTE_gPLink ( 0x0009037b )
-#define DRSUAPI_ATTRIBUTE_msDS_Behavior_Version ( 0x000905b3 )
-#define DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber ( 0x000906f6 )
-#define DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs ( 0x0009071c )
-#define DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs ( 0x0009072c )
-#endif
-;
-
-struct drsuapi_DsPartialAttributeSet {
-	uint32_t version;/* [value] */
-	uint32_t reserved1;/* [value(0)] */
-	uint32_t num_attids;/* [range(1,0x100000)] */
-	enum drsuapi_DsAttributeId *attids;/* [size_is(num_attids)] */
-};
-
-struct drsuapi_DsGetNCChangesRequest8 {
-	struct GUID destination_dsa_guid;
-	struct GUID source_dsa_invocation_id;
-	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
-	struct drsuapi_DsReplicaHighWaterMark highwatermark;
-	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
-	uint32_t replica_flags;
-	uint32_t max_object_count;
-	uint32_t max_ndr_size;
-	enum drsuapi_DsExtendedOperation extended_op;
-	uint64_t fsmo_info;
-	struct drsuapi_DsPartialAttributeSet *partial_attribute_set;/* [unique] */
-	struct drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;/* [unique] */
-	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-};
-
-union drsuapi_DsGetNCChangesRequest {
-	struct drsuapi_DsGetNCChangesRequest5 req5;/* [case(5)] */
-	struct drsuapi_DsGetNCChangesRequest8 req8;/* [case(8)] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsReplicaCursor2 {
-	struct GUID source_dsa_invocation_id;
-	uint64_t highest_usn;
-	NTTIME last_sync_success;
-}/* [public] */;
-
-struct drsuapi_DsReplicaCursor2CtrEx {
-	uint32_t version;/* [value(2)] */
-	uint32_t reserved1;/* [value(0)] */
-	uint32_t count;/* [range(0,0x100000)] */
-	uint32_t reserved2;/* [value(0)] */
-	struct drsuapi_DsReplicaCursor2 *cursors;/* [size_is(count)] */
-};
-
-struct drsuapi_DsAttributeValue {
-	uint32_t __ndr_size;/* [value(ndr_size_DATA_BLOB(0,blob,0)),range(0,10485760)] */
-	DATA_BLOB *blob;/* [unique] */
-};
-
-struct drsuapi_DsAttributeValueCtr {
-	uint32_t num_values;/* [range(0,10485760)] */
-	struct drsuapi_DsAttributeValue *values;/* [unique,size_is(num_values)] */
-};
-
-struct drsuapi_DsReplicaObjectIdentifier3 {
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r,ndr->flags))] */
-	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
-	struct GUID guid;
-	struct dom_sid28 sid;
-	uint32_t __ndr_size_dn;/* [value(strlen_m(dn))] */
-	const char *dn;/* [charset(UTF16)] */
-}/* [gensize,public] */;
-
-struct drsuapi_DsReplicaObjectIdentifier3Binary {
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(r,ndr->flags))] */
-	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
-	struct GUID guid;
-	struct dom_sid28 sid;
-	uint32_t __ndr_size_dn;/* [value(strlen_m(dn))] */
-	const char *dn;/* [charset(UTF16)] */
-	uint32_t __ndr_size_binary;/* [value(binary.length+4)] */
-	DATA_BLOB binary;/* [flag(LIBNDR_FLAG_REMAINING)] */
-}/* [gensize,public] */;
-
-struct drsuapi_DsReplicaAttribute {
-	enum drsuapi_DsAttributeId attid;
-	struct drsuapi_DsAttributeValueCtr value_ctr;
-}/* [public] */;
-
-struct drsuapi_DsReplicaAttributeCtr {
-	uint32_t num_attributes;/* [range(0,1048576)] */
-	struct drsuapi_DsReplicaAttribute *attributes;/* [unique,size_is(num_attributes)] */
-};
-
-/* bitmap drsuapi_DsReplicaObjectFlags */
-#define DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC ( 0x00000002 )
-#define DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY ( 0x00010000 )
-
-struct drsuapi_DsReplicaObject {
-	struct drsuapi_DsReplicaObjectIdentifier *identifier;/* [unique] */
-	uint32_t flags;
-	struct drsuapi_DsReplicaAttributeCtr attribute_ctr;
-}/* [public] */;
-
-struct drsuapi_DsReplicaMetaData {
-	uint32_t version;
-	NTTIME originating_change_time;
-	struct GUID originating_invocation_id;
-	uint64_t originating_usn;
-};
-
-struct drsuapi_DsReplicaMetaDataCtr {
-	uint32_t count;/* [range(0,1048576)] */
-	struct drsuapi_DsReplicaMetaData *meta_data;/* [size_is(count)] */
-}/* [public] */;
-
-struct drsuapi_DsReplicaObjectListItemEx {
-	struct drsuapi_DsReplicaObjectListItemEx *next_object;/* [unique] */
-	struct drsuapi_DsReplicaObject object;
-	uint32_t is_nc_prefix;
-	struct GUID *parent_object_guid;/* [unique] */
-	struct drsuapi_DsReplicaMetaDataCtr *meta_data_ctr;/* [unique] */
-}/* [noprint,public] */;
-
-struct drsuapi_DsGetNCChangesCtr1 {
-	struct GUID source_dsa_guid;
-	struct GUID source_dsa_invocation_id;
-	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [unique] */
-	struct drsuapi_DsReplicaHighWaterMark old_highwatermark;
-	struct drsuapi_DsReplicaHighWaterMark new_highwatermark;
-	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
-	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-	enum drsuapi_DsExtendedError extended_ret;
-	uint32_t object_count;
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] */
-	struct drsuapi_DsReplicaObjectListItemEx *first_object;/* [unique] */
-	uint32_t more_data;
-}/* [gensize,public] */;
-
-/* bitmap drsuapi_DsLinkedAttributeFlags */
-#define DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE ( 0x00000001 )
-
-struct drsuapi_DsReplicaLinkedAttribute {
-	struct drsuapi_DsReplicaObjectIdentifier *identifier;/* [unique] */
-	enum drsuapi_DsAttributeId attid;
-	struct drsuapi_DsAttributeValue value;
-	uint32_t flags;
-	NTTIME originating_add_time;
-	struct drsuapi_DsReplicaMetaData meta_data;
-}/* [public] */;
-
-struct drsuapi_DsGetNCChangesCtr6 {
-	struct GUID source_dsa_guid;
-	struct GUID source_dsa_invocation_id;
-	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [unique] */
-	struct drsuapi_DsReplicaHighWaterMark old_highwatermark;
-	struct drsuapi_DsReplicaHighWaterMark new_highwatermark;
-	struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;/* [unique] */
-	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-	enum drsuapi_DsExtendedError extended_ret;
-	uint32_t object_count;
-	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] */
-	struct drsuapi_DsReplicaObjectListItemEx *first_object;/* [unique] */
-	uint32_t more_data;
-	uint32_t nc_object_count;
-	uint32_t nc_linked_attributes_count;
-	uint32_t linked_attributes_count;/* [range(0,1048576)] */
-	struct drsuapi_DsReplicaLinkedAttribute *linked_attributes;/* [unique,size_is(linked_attributes_count)] */
-	WERROR drs_error;
-}/* [gensize,public] */;
-
-struct drsuapi_DsGetNCChangesMSZIPCtr1 {
-	uint32_t decompressed_length;
-	uint32_t compressed_length;
-	struct drsuapi_DsGetNCChangesCtr1 *ctr1;/* [unique,compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4)] */
-};
-
-struct drsuapi_DsGetNCChangesMSZIPCtr6 {
-	uint32_t decompressed_length;
-	uint32_t compressed_length;
-	struct drsuapi_DsGetNCChangesCtr6 *ctr6;/* [unique,compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4)] */
-};
-
-struct drsuapi_DsGetNCChangesXPRESSCtr1 {
-	uint32_t decompressed_length;
-	uint32_t compressed_length;
-	struct drsuapi_DsGetNCChangesCtr1 *ctr1;/* [unique,compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4)] */
-};
-
-struct drsuapi_DsGetNCChangesXPRESSCtr6 {
-	uint32_t decompressed_length;
-	uint32_t compressed_length;
-	struct drsuapi_DsGetNCChangesCtr6 *ctr6;/* [unique,compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length),subcontext_size(compressed_length),subcontext(4)] */
-};
-
-enum drsuapi_DsGetNCChangesCompressionType
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_COMPRESSION_TYPE_MSZIP=2,
-	DRSUAPI_COMPRESSION_TYPE_XPRESS=3
-}
-#else
- { __donnot_use_enum_drsuapi_DsGetNCChangesCompressionType=0x7FFFFFFF}
-#define DRSUAPI_COMPRESSION_TYPE_MSZIP ( 2 )
-#define DRSUAPI_COMPRESSION_TYPE_XPRESS ( 3 )
-#endif
-;
-
-union drsuapi_DsGetNCChangesCompressedCtr {
-	struct drsuapi_DsGetNCChangesMSZIPCtr1 mszip1;/* [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] */
-	struct drsuapi_DsGetNCChangesMSZIPCtr6 mszip6;/* [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] */
-	struct drsuapi_DsGetNCChangesXPRESSCtr1 xpress1;/* [case(1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] */
-	struct drsuapi_DsGetNCChangesXPRESSCtr6 xpress6;/* [case(6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))] */
-}/* [nodiscriminant,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
-struct drsuapi_DsGetNCChangesCtr2 {
-	union drsuapi_DsGetNCChangesCompressedCtr ctr;/* [switch_is(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] */
-};
-
-struct drsuapi_DsGetNCChangesCtr7 {
-	int32_t level;/* [range(0,6)] */
-	enum drsuapi_DsGetNCChangesCompressionType type;/* [range(2,3)] */
-	union drsuapi_DsGetNCChangesCompressedCtr ctr;/* [switch_is(level|(type<<16))] */
-};
-
-union drsuapi_DsGetNCChangesCtr {
-	struct drsuapi_DsGetNCChangesCtr1 ctr1;/* [case] */
-	struct drsuapi_DsGetNCChangesCtr2 ctr2;/* [case(2)] */
-	struct drsuapi_DsGetNCChangesCtr6 ctr6;/* [case(6)] */
-	struct drsuapi_DsGetNCChangesCtr7 ctr7;/* [case(7)] */
-}/* [switch_type(int32)] */;
-
-/* bitmap drsuapi_DsReplicaUpdateRefsOptions */
-#define DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE ( 0x00000002 )
-#define DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE ( 0x00000004 )
-#define DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE ( 0x00000008 )
-#define DRSUAPI_DS_REPLICA_UPDATE_0x00000010 ( 0x00000010 )
-
-struct drsuapi_DsReplicaUpdateRefsRequest1 {
-	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
-	const char *dest_dsa_dns_name;/* [ref,charset(DOS)] */
-	struct GUID dest_dsa_guid;
-	uint32_t options;
-};
-
-union drsuapi_DsReplicaUpdateRefsRequest {
-	struct drsuapi_DsReplicaUpdateRefsRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-/* bitmap drsuapi_DsReplicaAddOptions */
-#define DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_ADD_WRITEABLE ( 0x00000002 )
-
-/* bitmap drsuapi_DsReplicaDeleteOptions */
-#define DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_DELETE_WRITEABLE ( 0x00000002 )
-
-/* bitmap drsuapi_DsReplicaModifyOptions */
-#define DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE ( 0x00000002 )
-
-enum drsuapi_DsMembershipType
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS=1,
-	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS=2,
-	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS=3,
-	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2=4,
-	DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS=5,
-	DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS=6,
-	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2=7
-}
-#else
- { __donnot_use_enum_drsuapi_DsMembershipType=0x7FFFFFFF}
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS ( 1 )
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS ( 2 )
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS ( 3 )
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2 ( 4 )
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS ( 5 )
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS ( 6 )
-#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2 ( 7 )
-#endif
-;
-
-struct drsuapi_DsGetMembershipsCtr1 {
-	NTSTATUS status;
-	uint32_t num_memberships;/* [range(0,10000)] */
-	uint32_t num_sids;/* [range(0,10000)] */
-	struct drsuapi_DsReplicaObjectIdentifier **info_array;/* [unique,size_is(num_memberships)] */
-	uint32_t *group_attrs;/* [unique,size_is(num_memberships)] */
-	struct dom_sid28 **sids;/* [unique,size_is(num_sids)] */
-};
-
-union drsuapi_DsGetMembershipsCtr {
-	struct drsuapi_DsGetMembershipsCtr1 ctr1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsGetMembershipsRequest1 {
-	uint32_t count;/* [range(1,10000)] */
-	struct drsuapi_DsReplicaObjectIdentifier **info_array;/* [unique,size_is(count)] */
-	uint32_t flags;
-	enum drsuapi_DsMembershipType type;
-	struct drsuapi_DsReplicaObjectIdentifier *domain;/* [unique] */
-};
-
-union drsuapi_DsGetMembershipsRequest {
-	struct drsuapi_DsGetMembershipsRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsGetNT4ChangeLogRequest1 {
-	uint32_t unknown1;
-	uint32_t unknown2;
-	uint32_t length;/* [range(0,0x00A00000)] */
-	uint8_t *data;/* [unique,size_is(length)] */
-};
-
-union drsuapi_DsGetNT4ChangeLogRequest {
-	struct drsuapi_DsGetNT4ChangeLogRequest1 req1;/* [case] */
-}/* [switch_type(uint32)] */;
-
-struct drsuapi_DsGetNT4ChangeLogInfo1 {
-	uint32_t length1;/* [range(0,0x00A00000)] */
-	uint32_t length2;/* [range(0,0x00A00000)] */
-	uint64_t unknown1;
-	NTTIME time2;
-	uint64_t unknown3;
-	NTTIME time4;
-	uint64_t unknown5;
-	NTTIME time6;
-	NTSTATUS status;
-	uint8_t *data1;/* [unique,size_is(length1)] */
-	uint8_t *data2;/* [unique,size_is(length2)] */
-};
-
-union drsuapi_DsGetNT4ChangeLogInfo {
-	struct drsuapi_DsGetNT4ChangeLogInfo1 info1;/* [case] */
-}/* [switch_type(uint32)] */;
-
-enum drsuapi_DsNameStatus
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_NAME_STATUS_OK=0,
-	DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR=1,
-	DRSUAPI_DS_NAME_STATUS_NOT_FOUND=2,
-	DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE=3,
-	DRSUAPI_DS_NAME_STATUS_NO_MAPPING=4,
-	DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY=5,
-	DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING=6,
-	DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL=7
-}
-#else
- { __donnot_use_enum_drsuapi_DsNameStatus=0x7FFFFFFF}
-#define DRSUAPI_DS_NAME_STATUS_OK ( 0 )
-#define DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR ( 1 )
-#define DRSUAPI_DS_NAME_STATUS_NOT_FOUND ( 2 )
-#define DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE ( 3 )
-#define DRSUAPI_DS_NAME_STATUS_NO_MAPPING ( 4 )
-#define DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY ( 5 )
-#define DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING ( 6 )
-#define DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL ( 7 )
-#endif
-;
-
-enum drsuapi_DsNameFlags
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_NAME_FLAG_NO_FLAGS=0x0,
-	DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY=0x1,
-	DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC=0x2,
-	DRSUAPI_DS_NAME_FLAG_GCVERIFY=0x4,
-	DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL=0x8
-}
-#else
- { __donnot_use_enum_drsuapi_DsNameFlags=0x7FFFFFFF}
-#define DRSUAPI_DS_NAME_FLAG_NO_FLAGS ( 0x0 )
-#define DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY ( 0x1 )
-#define DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC ( 0x2 )
-#define DRSUAPI_DS_NAME_FLAG_GCVERIFY ( 0x4 )
-#define DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL ( 0x8 )
-#endif
-;
-
-enum drsuapi_DsNameFormat
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_NAME_FORMAT_UKNOWN=0,
-	DRSUAPI_DS_NAME_FORMAT_FQDN_1779=1,
-	DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT=2,
-	DRSUAPI_DS_NAME_FORMAT_DISPLAY=3,
-	DRSUAPI_DS_NAME_FORMAT_GUID=6,
-	DRSUAPI_DS_NAME_FORMAT_CANONICAL=7,
-	DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL=8,
-	DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX=9,
-	DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL=10,
-	DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY=11,
-	DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN=12
-}
-#else
- { __donnot_use_enum_drsuapi_DsNameFormat=0x7FFFFFFF}
-#define DRSUAPI_DS_NAME_FORMAT_UKNOWN ( 0 )
-#define DRSUAPI_DS_NAME_FORMAT_FQDN_1779 ( 1 )
-#define DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT ( 2 )
-#define DRSUAPI_DS_NAME_FORMAT_DISPLAY ( 3 )
-#define DRSUAPI_DS_NAME_FORMAT_GUID ( 6 )
-#define DRSUAPI_DS_NAME_FORMAT_CANONICAL ( 7 )
-#define DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL ( 8 )
-#define DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX ( 9 )
-#define DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL ( 10 )
-#define DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY ( 11 )
-#define DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN ( 12 )
-#endif
-;
-
-struct drsuapi_DsNameString {
-	const char *str;/* [unique,charset(UTF16)] */
-};
-
-struct drsuapi_DsNameRequest1 {
-	uint32_t codepage;
-	uint32_t language;
-	enum drsuapi_DsNameFlags format_flags;
-	enum drsuapi_DsNameFormat format_offered;
-	enum drsuapi_DsNameFormat format_desired;
-	uint32_t count;/* [range(1,10000)] */
-	struct drsuapi_DsNameString *names;/* [unique,size_is(count)] */
-};
-
-union drsuapi_DsNameRequest {
-	struct drsuapi_DsNameRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsNameInfo1 {
-	enum drsuapi_DsNameStatus status;
-	const char *dns_domain_name;/* [unique,charset(UTF16)] */
-	const char *result_name;/* [unique,charset(UTF16)] */
-};
-
-struct drsuapi_DsNameCtr1 {
-	uint32_t count;
-	struct drsuapi_DsNameInfo1 *array;/* [unique,size_is(count)] */
-};
-
-union drsuapi_DsNameCtr {
-	struct drsuapi_DsNameCtr1 *ctr1;/* [unique,case] */
-}/* [switch_type(int32)] */;
-
-enum drsuapi_DsSpnOperation
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_SPN_OPERATION_ADD=0,
-	DRSUAPI_DS_SPN_OPERATION_REPLACE=1,
-	DRSUAPI_DS_SPN_OPERATION_DELETE=2
-}
-#else
- { __donnot_use_enum_drsuapi_DsSpnOperation=0x7FFFFFFF}
-#define DRSUAPI_DS_SPN_OPERATION_ADD ( 0 )
-#define DRSUAPI_DS_SPN_OPERATION_REPLACE ( 1 )
-#define DRSUAPI_DS_SPN_OPERATION_DELETE ( 2 )
-#endif
-;
-
-struct drsuapi_DsWriteAccountSpnRequest1 {
-	enum drsuapi_DsSpnOperation operation;
-	uint32_t unknown1;
-	const char *object_dn;/* [unique,charset(UTF16)] */
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsNameString *spn_names;/* [unique,size_is(count)] */
-};
-
-union drsuapi_DsWriteAccountSpnRequest {
-	struct drsuapi_DsWriteAccountSpnRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsWriteAccountSpnResult1 {
-	WERROR status;
-};
-
-union drsuapi_DsWriteAccountSpnResult {
-	struct drsuapi_DsWriteAccountSpnResult1 res1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsRemoveDSServerRequest1 {
-	const char *server_dn;/* [unique,charset(UTF16)] */
-	const char *domain_dn;/* [unique,charset(UTF16)] */
-	uint32_t unknown;
-};
-
-union drsuapi_DsRemoveDSServerRequest {
-	struct drsuapi_DsRemoveDSServerRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsRemoveDSServerResult1 {
-	WERROR status;
-};
-
-union drsuapi_DsRemoveDSServerResult {
-	struct drsuapi_DsRemoveDSServerResult1 res1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsGetDCInfoRequest1 {
-	const char *domain_name;/* [unique,charset(UTF16)] */
-	int32_t level;
-};
-
-union drsuapi_DsGetDCInfoRequest {
-	struct drsuapi_DsGetDCInfoRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsGetDCInfo1 {
-	const char *netbios_name;/* [unique,charset(UTF16)] */
-	const char *dns_name;/* [unique,charset(UTF16)] */
-	const char *site_name;/* [unique,charset(UTF16)] */
-	const char *computer_dn;/* [unique,charset(UTF16)] */
-	const char *server_dn;/* [unique,charset(UTF16)] */
-	uint32_t is_pdc;
-	uint32_t is_enabled;
-};
-
-struct drsuapi_DsGetDCInfoCtr1 {
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsGetDCInfo1 *array;/* [unique,size_is(count)] */
-};
-
-struct drsuapi_DsGetDCInfo2 {
-	const char *netbios_name;/* [unique,charset(UTF16)] */
-	const char *dns_name;/* [unique,charset(UTF16)] */
-	const char *site_name;/* [unique,charset(UTF16)] */
-	const char *site_dn;/* [unique,charset(UTF16)] */
-	const char *computer_dn;/* [unique,charset(UTF16)] */
-	const char *server_dn;/* [unique,charset(UTF16)] */
-	const char *ntds_dn;/* [unique,charset(UTF16)] */
-	uint32_t is_pdc;
-	uint32_t is_enabled;
-	uint32_t is_gc;
-	struct GUID site_guid;
-	struct GUID computer_guid;
-	struct GUID server_guid;
-	struct GUID ntds_guid;
-};
-
-struct drsuapi_DsGetDCInfoCtr2 {
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsGetDCInfo2 *array;/* [unique,size_is(count)] */
-};
-
-struct drsuapi_DsGetDCInfo3 {
-	const char *netbios_name;/* [unique,charset(UTF16)] */
-	const char *dns_name;/* [unique,charset(UTF16)] */
-	const char *site_name;/* [unique,charset(UTF16)] */
-	const char *site_dn;/* [unique,charset(UTF16)] */
-	const char *computer_dn;/* [unique,charset(UTF16)] */
-	const char *server_dn;/* [unique,charset(UTF16)] */
-	const char *ntds_dn;/* [unique,charset(UTF16)] */
-	uint32_t is_pdc;
-	uint32_t is_enabled;
-	uint32_t is_gc;
-	uint32_t is_rodc;
-	struct GUID site_guid;
-	struct GUID computer_guid;
-	struct GUID server_guid;
-	struct GUID ntds_guid;
-};
-
-struct drsuapi_DsGetDCInfoCtr3 {
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsGetDCInfo3 *array;/* [unique,size_is(count)] */
-};
-
-struct drsuapi_DsGetDCConnection01 {
-	const char * client_ip_address;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
-	uint32_t unknown2;
-	uint32_t connection_time;
-	uint32_t unknown4;
-	uint32_t unknown5;
-	uint32_t unknown6;
-	const char *client_account;/* [unique,charset(UTF16)] */
-};
-
-struct drsuapi_DsGetDCConnectionCtr01 {
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsGetDCConnection01 *array;/* [unique,size_is(count)] */
-};
-
-enum drsuapi_DsGetDCInfoCtrLevels
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DC_INFO_CTR_1=1,
-	DRSUAPI_DC_INFO_CTR_2=2,
-	DRSUAPI_DC_INFO_CTR_3=3,
-	DRSUAPI_DC_CONNECTION_CTR_01=-1
-}
-#else
- { __donnot_use_enum_drsuapi_DsGetDCInfoCtrLevels=0x7FFFFFFF}
-#define DRSUAPI_DC_INFO_CTR_1 ( 1 )
-#define DRSUAPI_DC_INFO_CTR_2 ( 2 )
-#define DRSUAPI_DC_INFO_CTR_3 ( 3 )
-#define DRSUAPI_DC_CONNECTION_CTR_01 ( -1 )
-#endif
-;
-
-union drsuapi_DsGetDCInfoCtr {
-	struct drsuapi_DsGetDCInfoCtr1 ctr1;/* [case(DRSUAPI_DC_INFO_CTR_1)] */
-	struct drsuapi_DsGetDCInfoCtr2 ctr2;/* [case(DRSUAPI_DC_INFO_CTR_2)] */
-	struct drsuapi_DsGetDCInfoCtr3 ctr3;/* [case(DRSUAPI_DC_INFO_CTR_3)] */
-	struct drsuapi_DsGetDCConnectionCtr01 ctr01;/* [case(DRSUAPI_DC_CONNECTION_CTR_01)] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsReplicaObjectListItem {
-	struct drsuapi_DsReplicaObjectListItem *next_object;/* [unique] */
-	struct drsuapi_DsReplicaObject object;
-}/* [noprint,public] */;
-
-struct drsuapi_DsAddEntryRequest2 {
-	struct drsuapi_DsReplicaObjectListItem first_object;
-};
-
-union drsuapi_DsAddEntryRequest {
-	struct drsuapi_DsAddEntryRequest2 req2;/* [case(2)] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsAddEntryErrorInfoX {
-	uint32_t unknown1;
-	WERROR status;
-	uint32_t unknown2;
-	uint16_t unknown3;
-};
-
-struct drsuapi_DsAddEntryExtraErrorBuffer {
-	uint32_t size;/* [range(0,10485760)] */
-	uint8_t *data;/* [unique,size_is(size)] */
-};
-
-struct drsuapi_DsAddEntryExtraError1 {
-	struct drsuapi_DsAddEntryErrorInfoX error;
-	enum drsuapi_DsAttributeId attid;
-	uint32_t unknown2;
-	struct drsuapi_DsAddEntryExtraErrorBuffer buffer;
-};
-
-struct drsuapi_DsAddEntryErrorListItem1 {
-	struct drsuapi_DsAddEntryErrorListItem1 *next;/* [unique] */
-	struct drsuapi_DsAddEntryExtraError1 error;
-};
-
-struct drsuapi_DsAddEntryErrorInfo1 {
-	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
-	WERROR status;
-	struct drsuapi_DsAddEntryErrorListItem1 first;
-};
-
-union drsuapi_DsAddEntryErrorInfo {
-	struct drsuapi_DsAddEntryErrorInfo1 error1;/* [case] */
-	struct drsuapi_DsAddEntryErrorInfoX errorX;/* [case(4)] */
-}/* [switch_type(uint32)] */;
-
-struct drsuapi_DsAddEntryError1 {
-	WERROR status;
-	uint32_t level;
-	union drsuapi_DsAddEntryErrorInfo *info;/* [unique,switch_is(level)] */
-};
-
-union drsuapi_DsAddEntryError {
-	struct drsuapi_DsAddEntryError1 info1;/* [case] */
-}/* [switch_type(uint32)] */;
-
-struct drsuapi_DsReplicaObjectIdentifier2 {
-	struct GUID guid;
-	struct dom_sid28 sid;
-};
-
-struct drsuapi_DsAddEntryCtr2 {
-	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
-	uint32_t unknown1;
-	struct drsuapi_DsAddEntryErrorInfoX error;
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsReplicaObjectIdentifier2 *objects;/* [unique,size_is(count)] */
-};
-
-struct drsuapi_DsAddEntryCtr3 {
-	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
-	uint32_t level;
-	union drsuapi_DsAddEntryError *error;/* [unique,switch_is(level)] */
-	uint32_t count;/* [range(0,10000)] */
-	struct drsuapi_DsReplicaObjectIdentifier2 *objects;/* [unique,size_is(count)] */
-};
-
-union drsuapi_DsAddEntryCtr {
-	struct drsuapi_DsAddEntryCtr2 ctr2;/* [case(2)] */
-	struct drsuapi_DsAddEntryCtr3 ctr3;/* [case(3)] */
-}/* [switch_type(int32)] */;
-
-enum drsuapi_DsReplicaGetInfoLevel
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_REPLICA_GET_INFO=1,
-	DRSUAPI_DS_REPLICA_GET_INFO2=2
-}
-#else
- { __donnot_use_enum_drsuapi_DsReplicaGetInfoLevel=0x7FFFFFFF}
-#define DRSUAPI_DS_REPLICA_GET_INFO ( 1 )
-#define DRSUAPI_DS_REPLICA_GET_INFO2 ( 2 )
-#endif
-;
-
-enum drsuapi_DsReplicaInfoType
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_REPLICA_INFO_NEIGHBORS=0,
-	DRSUAPI_DS_REPLICA_INFO_CURSORS=1,
-	DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA=2,
-	DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES=3,
-	DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES=4,
-	DRSUAPI_DS_REPLICA_INFO_PENDING_OPS=5,
-	DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA=6,
-	DRSUAPI_DS_REPLICA_INFO_CURSORS2=7,
-	DRSUAPI_DS_REPLICA_INFO_CURSORS3=8,
-	DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2=9,
-	DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2=10,
-	DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02=-2,
-	DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04=-4,
-	DRSUAPI_DS_REPLICA_INFO_CURSORS05=-5,
-	DRSUAPI_DS_REPLICA_INFO_06=-6
-}
-#else
- { __donnot_use_enum_drsuapi_DsReplicaInfoType=0x7FFFFFFF}
-#define DRSUAPI_DS_REPLICA_INFO_NEIGHBORS ( 0 )
-#define DRSUAPI_DS_REPLICA_INFO_CURSORS ( 1 )
-#define DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA ( 2 )
-#define DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES ( 3 )
-#define DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES ( 4 )
-#define DRSUAPI_DS_REPLICA_INFO_PENDING_OPS ( 5 )
-#define DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA ( 6 )
-#define DRSUAPI_DS_REPLICA_INFO_CURSORS2 ( 7 )
-#define DRSUAPI_DS_REPLICA_INFO_CURSORS3 ( 8 )
-#define DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2 ( 9 )
-#define DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2 ( 10 )
-#define DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02 ( -2 )
-#define DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04 ( -4 )
-#define DRSUAPI_DS_REPLICA_INFO_CURSORS05 ( -5 )
-#define DRSUAPI_DS_REPLICA_INFO_06 ( -6 )
-#endif
-;
-
-struct drsuapi_DsReplicaGetInfoRequest1 {
-	enum drsuapi_DsReplicaInfoType info_type;
-	const char *object_dn;/* [unique,charset(UTF16)] */
-	struct GUID guid1;
-};
-
-struct drsuapi_DsReplicaGetInfoRequest2 {
-	enum drsuapi_DsReplicaInfoType info_type;
-	const char *object_dn;/* [unique,charset(UTF16)] */
-	struct GUID guid1;
-	uint32_t unknown1;
-	const char *string1;/* [unique,charset(UTF16)] */
-	const char *string2;/* [unique,charset(UTF16)] */
-	uint32_t unknown2;
-};
-
-union drsuapi_DsReplicaGetInfoRequest {
-	struct drsuapi_DsReplicaGetInfoRequest1 req1;/* [case(DRSUAPI_DS_REPLICA_GET_INFO)] */
-	struct drsuapi_DsReplicaGetInfoRequest2 req2;/* [case(DRSUAPI_DS_REPLICA_GET_INFO2)] */
-}/* [switch_type(drsuapi_DsReplicaGetInfoLevel)] */;
-
-struct drsuapi_DsReplicaNeighbour {
-	const char *naming_context_dn;/* [unique,charset(UTF16)] */
-	const char *source_dsa_obj_dn;/* [unique,charset(UTF16)] */
-	const char *source_dsa_address;/* [unique,charset(UTF16)] */
-	const char *transport_obj_dn;/* [unique,charset(UTF16)] */
-	uint32_t replica_flags;
-	uint32_t reserved;
-	struct GUID naming_context_obj_guid;
-	struct GUID source_dsa_obj_guid;
-	struct GUID source_dsa_invocation_id;
-	struct GUID transport_obj_guid;
-	uint64_t tmp_highest_usn;
-	uint64_t highest_usn;
-	NTTIME last_success;
-	NTTIME last_attempt;
-	WERROR result_last_attempt;
-	uint32_t consecutive_sync_failures;
-};
-
-struct drsuapi_DsReplicaNeighbourCtr {
-	uint32_t count;
-	uint32_t reserved;
-	struct drsuapi_DsReplicaNeighbour *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaCursorCtr {
-	uint32_t count;
-	uint32_t reserved;
-	struct drsuapi_DsReplicaCursor *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaObjMetaData {
-	const char *attribute_name;/* [unique,charset(UTF16)] */
-	uint32_t version;
-	NTTIME originating_change_time;
-	struct GUID originating_invocation_id;
-	uint64_t originating_usn;
-	uint64_t local_usn;
-};
-
-struct drsuapi_DsReplicaObjMetaDataCtr {
-	uint32_t count;
-	uint32_t reserved;
-	struct drsuapi_DsReplicaObjMetaData *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaKccDsaFailure {
-	const char *dsa_obj_dn;/* [unique,charset(UTF16)] */
-	struct GUID dsa_obj_guid;
-	NTTIME first_failure;
-	uint32_t num_failures;
-	WERROR last_result;
-};
-
-struct drsuapi_DsReplicaKccDsaFailuresCtr {
-	uint32_t count;
-	uint32_t reserved;
-	struct drsuapi_DsReplicaKccDsaFailure *array;/* [size_is(count)] */
-};
-
-enum drsuapi_DsReplicaOpType
-#ifndef USE_UINT_ENUMS
- {
-	DRSUAPI_DS_REPLICA_OP_TYPE_SYNC=0,
-	DRSUAPI_DS_REPLICA_OP_TYPE_ADD=1,
-	DRSUAPI_DS_REPLICA_OP_TYPE_DELETE=2,
-	DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY=3,
-	DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS=4
-}
-#else
- { __donnot_use_enum_drsuapi_DsReplicaOpType=0x7FFFFFFF}
-#define DRSUAPI_DS_REPLICA_OP_TYPE_SYNC ( 0 )
-#define DRSUAPI_DS_REPLICA_OP_TYPE_ADD ( 1 )
-#define DRSUAPI_DS_REPLICA_OP_TYPE_DELETE ( 2 )
-#define DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY ( 3 )
-#define DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS ( 4 )
-#endif
-;
-
-union drsuapi_DsRplicaOpOptions {
-	uint32_t sync;/* [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC)] */
-	uint32_t add;/* [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD)] */
-	uint32_t op_delete;/* [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE)] */
-	uint32_t modify;/* [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY)] */
-	uint32_t update_refs;/* [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS)] */
-	uint32_t unknown;/* [default] */
-}/* [switch_type(drsuapi_DsReplicaOpType)] */;
-
-struct drsuapi_DsReplicaOp {
-	NTTIME operation_start;
-	uint32_t serial_num;
-	uint32_t priority;
-	enum drsuapi_DsReplicaOpType operation_type;
-	union drsuapi_DsRplicaOpOptions options;/* [switch_is(operation_type)] */
-	const char *nc_dn;/* [unique,charset(UTF16)] */
-	const char *remote_dsa_obj_dn;/* [unique,charset(UTF16)] */
-	const char *remote_dsa_address;/* [unique,charset(UTF16)] */
-	struct GUID nc_obj_guid;
-	struct GUID remote_dsa_obj_guid;
-};
-
-struct drsuapi_DsReplicaOpCtr {
-	NTTIME time;
-	uint32_t count;
-	struct drsuapi_DsReplicaOp *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaAttrValMetaData {
-	const char *attribute_name;/* [unique,charset(UTF16)] */
-	const char *object_dn;/* [unique,charset(UTF16)] */
-	uint32_t __ndr_size_binary;/* [value(ndr_size_DATA_BLOB(0,binary,0))] */
-	DATA_BLOB *binary;/* [unique] */
-	NTTIME deleted;
-	NTTIME created;
-	uint32_t version;
-	NTTIME originating_change_time;
-	struct GUID originating_invocation_id;
-	uint64_t originating_usn;
-	uint64_t local_usn;
-};
-
-struct drsuapi_DsReplicaAttrValMetaDataCtr {
-	uint32_t count;
-	int32_t enumeration_context;
-	struct drsuapi_DsReplicaAttrValMetaData *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaCursor2Ctr {
-	uint32_t count;
-	int32_t enumeration_context;
-	struct drsuapi_DsReplicaCursor2 *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaCursor3 {
-	struct GUID source_dsa_invocation_id;
-	uint64_t highest_usn;
-	NTTIME last_sync_success;
-	const char *source_dsa_obj_dn;/* [unique,charset(UTF16)] */
-};
-
-struct drsuapi_DsReplicaCursor3Ctr {
-	uint32_t count;
-	int32_t enumeration_context;
-	struct drsuapi_DsReplicaCursor3 *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaObjMetaData2 {
-	const char *attribute_name;/* [unique,charset(UTF16)] */
-	uint32_t version;
-	NTTIME originating_change_time;
-	struct GUID originating_invocation_id;
-	uint64_t originating_usn;
-	uint64_t local_usn;
-	const char *originating_dsa_dn;/* [unique,charset(UTF16)] */
-};
-
-struct drsuapi_DsReplicaObjMetaData2Ctr {
-	uint32_t count;
-	int32_t enumeration_context;
-	struct drsuapi_DsReplicaObjMetaData2 *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaAttrValMetaData2 {
-	const char *attribute_name;/* [unique,charset(UTF16)] */
-	const char *object_dn;/* [unique,charset(UTF16)] */
-	uint32_t __ndr_size_binary;/* [value(ndr_size_DATA_BLOB(0,binary,0))] */
-	DATA_BLOB *binary;/* [unique] */
-	NTTIME deleted;
-	NTTIME created;
-	uint32_t version;
-	NTTIME originating_change_time;
-	struct GUID originating_invocation_id;
-	uint64_t originating_usn;
-	uint64_t local_usn;
-	const char *originating_dsa_dn;/* [unique,charset(UTF16)] */
-};
-
-struct drsuapi_DsReplicaAttrValMetaData2Ctr {
-	uint32_t count;
-	int32_t enumeration_context;
-	struct drsuapi_DsReplicaAttrValMetaData2 *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplicaConnection04 {
-	uint64_t u1;
-	uint32_t u2;
-	uint32_t u3;
-	struct GUID bind_guid;
-	NTTIME bind_time;
-	const char * client_ip_address;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
-	uint32_t u5;
-};
-
-struct drsuapi_DsReplicaConnection04Ctr {
-	uint32_t count;/* [range(0,10000)] */
-	uint32_t reserved;
-	struct drsuapi_DsReplicaConnection04 *array;/* [size_is(count)] */
-};
-
-struct drsuapi_DsReplica06 {
-	const char *str1;/* [unique,charset(UTF16)] */
-	uint32_t u1;
-	uint32_t u2;
-	uint32_t u3;
-	uint32_t u4;
-	uint32_t u5;
-	uint64_t u6;
-	uint32_t u7;
-};
-
-struct drsuapi_DsReplica06Ctr {
-	uint32_t count;/* [range(0,256)] */
-	uint32_t reserved;
-	struct drsuapi_DsReplica06 *array;/* [size_is(count)] */
-};
-
-union drsuapi_DsReplicaInfo {
-	struct drsuapi_DsReplicaNeighbourCtr *neighbours;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] */
-	struct drsuapi_DsReplicaCursorCtr *cursors;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] */
-	struct drsuapi_DsReplicaObjMetaDataCtr *objmetadata;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] */
-	struct drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] */
-	struct drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] */
-	struct drsuapi_DsReplicaOpCtr *pendingops;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] */
-	struct drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] */
-	struct drsuapi_DsReplicaCursor2Ctr *cursors2;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] */
-	struct drsuapi_DsReplicaCursor3Ctr *cursors3;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] */
-	struct drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] */
-	struct drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] */
-	struct drsuapi_DsReplicaNeighbourCtr *neighbours02;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02)] */
-	struct drsuapi_DsReplicaConnection04Ctr *connections04;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04)] */
-	struct drsuapi_DsReplicaCursorCtrEx *cursors05;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_CURSORS05)] */
-	struct drsuapi_DsReplica06Ctr *i06;/* [unique,case(DRSUAPI_DS_REPLICA_INFO_06)] */
-}/* [switch_type(drsuapi_DsReplicaInfoType)] */;
-
-struct drsuapi_DsGetMemberships2Ctr1 {
-	uint32_t num_entries;/* [range(0,10000)] */
-	struct drsuapi_DsGetMembershipsCtr1 **ctrl_array;/* [unique,size_is(num_entries)] */
-};
-
-union drsuapi_DsGetMemberships2Ctr {
-	struct drsuapi_DsGetMembershipsCtr1 ctr1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsGetMemberships2Request1 {
-	uint32_t num_req;/* [range(1,10000)] */
-	struct drsuapi_DsGetMembershipsRequest1 **req_array;/* [unique,size_is(num_req)] */
-};
-
-union drsuapi_DsGetMemberships2Request {
-	struct drsuapi_DsGetMemberships2Request1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_DsSiteCostInfo {
-	WERROR error_code;
-	uint32_t site_cost;
-};
-
-struct drsuapi_QuerySitesByCostCtr1 {
-	uint32_t num_info;/* [range(0,10000)] */
-	struct drsuapi_DsSiteCostInfo *info;/* [unique,size_is(num_info)] */
-	uint32_t unknown;
-};
-
-union drsuapi_QuerySitesByCostCtr {
-	struct drsuapi_QuerySitesByCostCtr1 ctr1;/* [case] */
-}/* [switch_type(int32)] */;
-
-struct drsuapi_QuerySitesByCostRequest1 {
-	const char *site_from;/* [unique,charset(UTF16)] */
-	uint32_t num_req;/* [range(1,10000)] */
-	const char **site_to;/* [unique,charset(UTF16),size_is(num_req)] */
-	uint32_t flags;
-};
-
-union drsuapi_QuerySitesByCostRequest {
-	struct drsuapi_QuerySitesByCostRequest1 req1;/* [case] */
-}/* [switch_type(int32)] */;
-
-
-struct drsuapi_DsBind {
-	struct {
-		struct GUID *bind_guid;/* [unique] */
-		struct drsuapi_DsBindInfoCtr *bind_info;/* [unique] */
-	} in;
-
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		struct drsuapi_DsBindInfoCtr *bind_info;/* [unique] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsUnbind {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-	} in;
-
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsReplicaSync {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsReplicaSyncRequest req;/* [switch_is(level)] */
-	} in;
-
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsGetNCChanges {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsGetNCChangesRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsGetNCChangesCtr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsReplicaUpdateRefs {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsReplicaUpdateRefsRequest req;/* [switch_is(level)] */
-	} in;
-
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_REPLICA_ADD {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_REPLICA_DEL {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_REPLICA_MODIFY {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_VERIFY_NAMES {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsGetMemberships {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsGetMembershipsRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsGetMembershipsCtr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_INTER_DOMAIN_MOVE {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsGetNT4ChangeLog {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		uint32_t level;
-		union drsuapi_DsGetNT4ChangeLogRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		uint32_t *level_out;/* [ref] */
-		union drsuapi_DsGetNT4ChangeLogInfo *info;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsCrackNames {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsNameRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsNameCtr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsWriteAccountSpn {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsWriteAccountSpnRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsWriteAccountSpnResult *res;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsRemoveDSServer {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsRemoveDSServerRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsRemoveDSServerResult *res;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_REMOVE_DS_DOMAIN {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsGetDomainControllerInfo {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsGetDCInfoRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsGetDCInfoCtr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsAddEntry {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsAddEntryRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsAddEntryCtr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_EXECUTE_KCC {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsReplicaGetInfo {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		enum drsuapi_DsReplicaGetInfoLevel level;
-		union drsuapi_DsReplicaGetInfoRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		enum drsuapi_DsReplicaInfoType *info_type;/* [ref] */
-		union drsuapi_DsReplicaInfo *info;/* [ref,switch_is(*info_type)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_ADD_SID_HISTORY {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_DsGetMemberships2 {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_DsGetMemberships2Request *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_DsGetMemberships2Ctr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_REPLICA_VERIFY_OBJECTS {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct DRSUAPI_GET_OBJECT_EXISTENCE {
-	struct {
-		WERROR result;
-	} out;
-
-};
-
-
-struct drsuapi_QuerySitesByCost {
-	struct {
-		struct policy_handle *bind_handle;/* [ref] */
-		int32_t level;
-		union drsuapi_QuerySitesByCostRequest *req;/* [ref,switch_is(level)] */
-	} in;
-
-	struct {
-		int32_t *level_out;/* [ref] */
-		union drsuapi_QuerySitesByCostCtr *ctr;/* [ref,switch_is(*level_out)] */
-		WERROR result;
-	} out;
-
-};
-
-#endif /* _HEADER_drsuapi */

Modified: branches/samba/upstream/source/librpc/gen_ndr/initshutdown.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/initshutdown.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/initshutdown.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,7 +23,7 @@
 		struct initshutdown_String *message;/* [unique] */
 		uint32_t timeout;
 		uint8_t force_apps;
-		uint8_t do_reboot;
+		uint8_t reboot;
 	} in;
 
 	struct {
@@ -51,7 +51,7 @@
 		struct initshutdown_String *message;/* [unique] */
 		uint32_t timeout;
 		uint8_t force_apps;
-		uint8_t do_reboot;
+		uint8_t reboot;
 		uint32_t reason;
 	} in;
 

Modified: branches/samba/upstream/source/librpc/gen_ndr/libnet_join.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/libnet_join.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/libnet_join.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,7 +27,6 @@
 		uint8_t modify_config;
 		struct ads_struct *ads;/* [ref] */
 		uint8_t debug;
-		uint8_t use_kerberos;
 		enum netr_SchannelType secure_channel_type;
 		struct messaging_context *msg_ctx;/* [noprint,ref] */
 	} in;
@@ -36,7 +35,6 @@
 		const char * account_name;
 		const char * netbios_domain_name;
 		const char * dns_domain_name;
-		const char * forest_name;
 		const char * dn;
 		struct dom_sid *domain_sid;/* [ref] */
 		uint8_t modified_config;
@@ -62,14 +60,12 @@
 		struct dom_sid *domain_sid;/* [ref] */
 		struct ads_struct *ads;/* [ref] */
 		uint8_t debug;
-		uint8_t use_kerberos;
 		struct messaging_context *msg_ctx;/* [noprint,ref] */
 	} in;
 
 	struct {
 		const char * netbios_domain_name;
 		const char * dns_domain_name;
-		const char * forest_name;
 		uint8_t modified_config;
 		const char * error_string;
 		uint8_t disabled_machine_account;

Modified: branches/samba/upstream/source/librpc/gen_ndr/libnetapi.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/libnetapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/libnetapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3,31 +3,10 @@
 #include <stdint.h>
 
 #define LIBNETAPI_LOCAL_SERVER(x) (!x || is_myname_or_ipaddr(x))
-#ifndef MAXSUBAUTHS
-#define MAXSUBAUTHS 15 /* max sub authorities in a SID */
-#endif
 #ifndef _HEADER_libnetapi
 #define _HEADER_libnetapi
 
 #define ERROR_MORE_DATA	( 234L )
-#define USER_PRIV_GUEST	( 0 )
-#define USER_PRIV_USER	( 1 )
-#define USER_PRIV_ADMIN	( 2 )
-#define AF_OP_PRINT	( 0x1 )
-#define AF_OP_COMM	( 0x2 )
-#define AF_OP_SERVER	( 0x4 )
-#define AF_OP_ACCOUNTS	( 0x8 )
-#define AF_SETTABLE_BITS	( (AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS) )
-#define USER_MAXSTORAGE_UNLIMITED	( (uint32_t)-1L )
-#define ENCRYPTED_PWLEN	( 16 )
-#define FILTER_TEMP_DUPLICATE_ACCOUNT	( 0x0001 )
-#define FILTER_NORMAL_ACCOUNT	( 0x0002 )
-#define FILTER_INTERDOMAIN_TRUST_ACCOUNT	( 0x0008 )
-#define FILTER_WORKSTATION_TRUST_ACCOUNT	( 0x0010 )
-#define FILTER_SERVER_TRUST_ACCOUNT	( 0x0020 )
-#define LG_INCLUDE_INDIRECT	( 0x0001 )
-#define TIMEQ_FOREVER	( (uint32_t)-1L )
-#define CSC_MASK	( 0x30 )
 enum NET_API_STATUS
 #ifndef USE_UINT_ENUMS
  {
@@ -39,74 +18,6 @@
 #endif
 ;
 
-struct domsid {
-	uint8_t sid_rev_num;
-	uint8_t num_auths;
-	uint8_t id_auth[6];
-	uint32_t *sub_auths;
-};
-
-/* bitmap NetJoinFlags */
-#define NETSETUP_JOIN_DOMAIN ( 0x00000001 )
-#define NETSETUP_ACCT_CREATE ( 0x00000002 )
-#define NETSETUP_ACCT_DELETE ( 0x00000004 )
-#define NETSETUP_WIN9X_UPGRADE ( 0x00000010 )
-#define NETSETUP_DOMAIN_JOIN_IF_JOINED ( 0x00000020 )
-#define NETSETUP_JOIN_UNSECURE ( 0x00000040 )
-#define NETSETUP_MACHINE_PWD_PASSED ( 0x00000080 )
-#define NETSETUP_DEFER_SPN_SET ( 0x00000100 )
-#define NETSETUP_JOIN_DC_ACCOUNT ( 0x00000200 )
-#define NETSETUP_JOIN_WITH_NEW_NAME ( 0x00000400 )
-#define NETSETUP_INSTALL_INVOCATION ( 0x00040000 )
-#define NETSETUP_IGNORE_UNSUPPORTED_FLAGS ( 0x10000000 )
-
-enum NETSETUP_JOIN_STATUS
-#ifndef USE_UINT_ENUMS
- {
-	NetSetupUnknownStatus=0,
-	NetSetupUnjoined=1,
-	NetSetupWorkgroupName=2,
-	NetSetupDomainName=3
-}
-#else
- { __donnot_use_enum_NETSETUP_JOIN_STATUS=0x7FFFFFFF}
-#define NetSetupUnknownStatus ( 0 )
-#define NetSetupUnjoined ( 1 )
-#define NetSetupWorkgroupName ( 2 )
-#define NetSetupDomainName ( 3 )
-#endif
-;
-
-struct SERVER_INFO_100 {
-	uint32_t sv100_platform_id;
-	const char * sv100_name;
-};
-
-struct SERVER_INFO_101 {
-	uint32_t sv101_platform_id;
-	const char * sv101_name;
-	uint32_t sv101_version_major;
-	uint32_t sv101_version_minor;
-	uint32_t sv101_type;
-	const char * sv101_comment;
-};
-
-struct SERVER_INFO_102 {
-	uint32_t sv102_platform_id;
-	const char * sv102_name;
-	uint32_t sv102_version_major;
-	uint32_t sv102_version_minor;
-	uint32_t sv102_type;
-	const char * sv102_comment;
-	uint32_t sv102_users;
-	uint32_t sv102_disc;
-	uint8_t sv102_hidden;
-	uint32_t sv102_announce;
-	uint32_t sv102_anndelta;
-	uint32_t sv102_licenses;
-	const char * sv102_userpath;
-};
-
 struct SERVER_INFO_1005 {
 	const char * sv1005_comment;
 };
@@ -138,349 +49,6 @@
 	const char * usri1_script_path;
 };
 
-struct USER_INFO_2 {
-	const char * usri2_name;
-	const char * usri2_password;
-	uint32_t usri2_password_age;
-	uint32_t usri2_priv;
-	const char * usri2_home_dir;
-	const char * usri2_comment;
-	uint32_t usri2_flags;
-	const char * usri2_script_path;
-	uint32_t usri2_auth_flags;
-	const char * usri2_full_name;
-	const char * usri2_usr_comment;
-	const char * usri2_parms;
-	const char * usri2_workstations;
-	uint32_t usri2_last_logon;
-	uint32_t usri2_last_logoff;
-	uint32_t usri2_acct_expires;
-	uint32_t usri2_max_storage;
-	uint32_t usri2_units_per_week;
-	uint8_t *usri2_logon_hours;/* [unique] */
-	uint32_t usri2_bad_pw_count;
-	uint32_t usri2_num_logons;
-	const char * usri2_logon_server;
-	uint32_t usri2_country_code;
-	uint32_t usri2_code_page;
-};
-
-struct USER_INFO_3 {
-	const char * usri3_name;
-	uint32_t usri3_password_age;
-	uint32_t usri3_priv;
-	const char * usri3_home_dir;
-	const char * usri3_comment;
-	uint32_t usri3_flags;
-	const char * usri3_script_path;
-	uint32_t usri3_auth_flags;
-	const char * usri3_full_name;
-	const char * usri3_usr_comment;
-	const char * usri3_parms;
-	const char * usri3_workstations;
-	uint32_t usri3_last_logon;
-	uint32_t usri3_last_logoff;
-	uint32_t usri3_acct_expires;
-	uint32_t usri3_max_storage;
-	uint32_t usri3_units_per_week;
-	uint8_t *usri3_logon_hours;/* [unique] */
-	uint32_t usri3_bad_pw_count;
-	uint32_t usri3_num_logons;
-	const char * usri3_logon_server;
-	uint32_t usri3_country_code;
-	uint32_t usri3_code_page;
-	uint32_t usri3_user_id;
-	uint32_t usri3_primary_group_id;
-	const char * usri3_profile;
-	const char * usri3_home_dir_drive;
-	uint32_t usri3_password_expired;
-};
-
-struct USER_INFO_4 {
-	const char * usri4_name;
-	const char * usri4_password;
-	uint32_t usri4_password_age;
-	uint32_t usri4_priv;
-	const char * usri4_home_dir;
-	const char * usri4_comment;
-	uint32_t usri4_flags;
-	const char * usri4_script_path;
-	uint32_t usri4_auth_flags;
-	const char * usri4_full_name;
-	const char * usri4_usr_comment;
-	const char * usri4_parms;
-	const char * usri4_workstations;
-	uint32_t usri4_last_logon;
-	uint32_t usri4_last_logoff;
-	uint32_t usri4_acct_expires;
-	uint32_t usri4_max_storage;
-	uint32_t usri4_units_per_week;
-	uint8_t *usri4_logon_hours;/* [unique] */
-	uint32_t usri4_bad_pw_count;
-	uint32_t usri4_num_logons;
-	const char * usri4_logon_server;
-	uint32_t usri4_country_code;
-	uint32_t usri4_code_page;
-	struct domsid *usri4_user_sid;/* [unique] */
-	uint32_t usri4_primary_group_id;
-	const char * usri4_profile;
-	const char * usri4_home_dir_drive;
-	uint32_t usri4_password_expired;
-};
-
-struct USER_INFO_10 {
-	const char * usri10_name;
-	const char * usri10_comment;
-	const char * usri10_usr_comment;
-	const char * usri10_full_name;
-};
-
-struct USER_INFO_11 {
-	const char * usri11_name;
-	const char * usri11_comment;
-	const char * usri11_usr_comment;
-	const char * usri11_full_name;
-	uint32_t usri11_priv;
-	uint32_t usri11_auth_flags;
-	uint32_t usri11_password_age;
-	const char * usri11_home_dir;
-	const char * usri11_parms;
-	uint32_t usri11_last_logon;
-	uint32_t usri11_last_logoff;
-	uint32_t usri11_bad_pw_count;
-	uint32_t usri11_num_logons;
-	const char * usri11_logon_server;
-	uint32_t usri11_country_code;
-	const char * usri11_workstations;
-	uint32_t usri11_max_storage;
-	uint32_t usri11_units_per_week;
-	uint8_t *usri11_logon_hours;/* [unique] */
-	uint32_t usri11_code_page;
-};
-
-struct USER_INFO_20 {
-	const char * usri20_name;
-	const char * usri20_full_name;
-	const char * usri20_comment;
-	uint32_t usri20_flags;
-	uint32_t usri20_user_id;
-};
-
-struct USER_INFO_21 {
-	uint8_t *usri21_password;
-};
-
-struct USER_INFO_22 {
-	const char * usri22_name;
-	uint8_t *usri22_password;
-	uint32_t usri22_password_age;
-	uint32_t usri22_priv;
-	const char * usri22_home_dir;
-	const char * usri22_comment;
-	uint32_t usri22_flags;
-	uint32_t usri22_script_path;
-	uint32_t usri22_auth_flags;
-	const char * usri22_full_name;
-	const char * usri22_usr_comment;
-	const char * usri22_parms;
-	const char * usri22_workstations;
-	uint32_t usri22_last_logon;
-	uint32_t usri22_last_logoff;
-	uint32_t usri22_acct_expires;
-	uint32_t usri22_max_storage;
-	uint32_t usri22_units_per_week;
-	uint8_t *usri22_logon_hours;/* [unique] */
-	uint32_t usri22_bad_pw_count;
-	uint32_t usri22_num_logons;
-	const char * usri22_logon_server;
-	uint32_t usri22_country_code;
-	uint32_t usri22_code_page;
-};
-
-struct USER_INFO_23 {
-	const char * usri23_name;
-	const char * usri23_full_name;
-	const char * usri23_comment;
-	uint32_t usri23_flags;
-	struct domsid *usri23_user_sid;/* [unique] */
-};
-
-struct USER_INFO_1003 {
-	const char * usri1003_password;
-};
-
-struct USER_INFO_1005 {
-	uint32_t usri1005_priv;
-};
-
-struct USER_INFO_1006 {
-	const char * usri1006_home_dir;
-};
-
-struct USER_INFO_1007 {
-	const char * usri1007_comment;
-};
-
-struct USER_INFO_1008 {
-	uint32_t usri1008_flags;
-};
-
-struct USER_INFO_1009 {
-	const char * usri1009_script_path;
-};
-
-struct USER_INFO_1010 {
-	uint32_t usri1010_auth_flags;
-};
-
-struct USER_INFO_1011 {
-	const char * usri1011_full_name;
-};
-
-struct USER_INFO_1012 {
-	const char * usri1012_usr_comment;
-};
-
-struct USER_INFO_1013 {
-	const char * usri1013_parms;
-};
-
-struct USER_INFO_1014 {
-	const char * usri1014_workstations;
-};
-
-struct USER_INFO_1017 {
-	uint32_t usri1017_acct_expires;
-};
-
-struct USER_INFO_1018 {
-	uint32_t usri1018_max_storage;
-};
-
-struct USER_INFO_1020 {
-	uint32_t usri1020_units_per_week;
-	uint8_t *usri1020_logon_hours;/* [unique] */
-};
-
-struct USER_INFO_1023 {
-	const char * usri1023_logon_server;
-};
-
-struct USER_INFO_1024 {
-	uint32_t usri1024_country_code;
-};
-
-struct USER_INFO_1025 {
-	uint32_t usri1025_code_page;
-};
-
-struct USER_INFO_1051 {
-	uint32_t usri1051_primary_group_id;
-};
-
-struct USER_INFO_1052 {
-	const char * usri1052_profile;
-};
-
-struct USER_INFO_1053 {
-	const char * usri1053_home_dir_drive;
-};
-
-struct USER_INFO_X {
-	const char * usriX_name;
-	const char * usriX_password;
-	uint32_t usriX_password_age;
-	uint32_t usriX_priv;
-	const char * usriX_home_dir;
-	const char * usriX_comment;
-	uint32_t usriX_flags;
-	const char * usriX_script_path;
-	uint32_t usriX_auth_flags;
-	const char * usriX_full_name;
-	const char * usriX_usr_comment;
-	const char * usriX_parms;
-	const char * usriX_workstations;
-	uint32_t usriX_last_logon;
-	uint32_t usriX_last_logoff;
-	uint32_t usriX_acct_expires;
-	uint32_t usriX_max_storage;
-	uint32_t usriX_units_per_week;
-	uint8_t *usriX_logon_hours;/* [unique] */
-	uint32_t usriX_bad_pw_count;
-	uint32_t usriX_num_logons;
-	const char * usriX_logon_server;
-	uint32_t usriX_country_code;
-	uint32_t usriX_code_page;
-	const char * usriX_profile;
-	const char * usriX_home_dir_drive;
-	uint32_t usriX_primary_group_id;
-};
-
-struct GROUP_USERS_INFO_0 {
-	const char * grui0_name;
-};
-
-struct GROUP_USERS_INFO_1 {
-	const char * grui1_name;
-	uint32_t grui1_attributes;
-};
-
-struct LOCALGROUP_USERS_INFO_0 {
-	const char * lgrui0_name;
-};
-
-struct USER_MODALS_INFO_0 {
-	uint32_t usrmod0_min_passwd_len;
-	uint32_t usrmod0_max_passwd_age;
-	uint32_t usrmod0_min_passwd_age;
-	uint32_t usrmod0_force_logoff;
-	uint32_t usrmod0_password_hist_len;
-};
-
-struct USER_MODALS_INFO_1 {
-	uint32_t usrmod1_role;
-	const char * usrmod1_primary;
-};
-
-struct USER_MODALS_INFO_2 {
-	const char * usrmod2_domain_name;
-	struct domsid *usrmod2_domain_id;/* [unique] */
-};
-
-struct USER_MODALS_INFO_3 {
-	uint32_t usrmod3_lockout_duration;
-	uint32_t usrmod3_lockout_observation_window;
-	uint32_t usrmod3_lockout_threshold;
-};
-
-struct USER_MODALS_INFO_1001 {
-	uint32_t usrmod1001_min_passwd_len;
-};
-
-struct USER_MODALS_INFO_1002 {
-	uint32_t usrmod1002_max_passwd_age;
-};
-
-struct USER_MODALS_INFO_1003 {
-	uint32_t usrmod1003_min_passwd_age;
-};
-
-struct USER_MODALS_INFO_1004 {
-	uint32_t usrmod1004_force_logoff;
-};
-
-struct USER_MODALS_INFO_1005 {
-	uint32_t usrmod1005_password_hist_len;
-};
-
-struct USER_MODALS_INFO_1006 {
-	uint32_t usrmod1006_role;
-};
-
-struct USER_MODALS_INFO_1007 {
-	const char * usrmod1007_primary;
-};
-
 struct NET_DISPLAY_USER {
 	const char * usri1_name;
 	const char * usri1_comment;
@@ -506,179 +74,7 @@
 	uint32_t grpi3_next_index;
 };
 
-struct GROUP_INFO_0 {
-	const char * grpi0_name;
-};
 
-struct GROUP_INFO_1 {
-	const char * grpi1_name;
-	const char * grpi1_comment;
-};
-
-struct GROUP_INFO_2 {
-	const char * grpi2_name;
-	const char * grpi2_comment;
-	uint32_t grpi2_group_id;
-	uint32_t grpi2_attributes;
-};
-
-struct GROUP_INFO_3 {
-	const char * grpi3_name;
-	const char * grpi3_comment;
-	struct domsid *grpi3_group_sid;/* [unique] */
-	uint32_t grpi3_attributes;
-};
-
-struct GROUP_INFO_1002 {
-	const char * grpi1002_comment;
-};
-
-struct GROUP_INFO_1005 {
-	uint32_t grpi1005_attributes;
-};
-
-struct LOCALGROUP_INFO_0 {
-	const char * lgrpi0_name;
-};
-
-struct LOCALGROUP_INFO_1 {
-	const char * lgrpi1_name;
-	const char * lgrpi1_comment;
-};
-
-struct LOCALGROUP_INFO_1002 {
-	const char * lgrpi1002_comment;
-};
-
-enum SID_NAME_USE
-#ifndef USE_UINT_ENUMS
- {
-	SidTypeUser=1,
-	SidTypeGroup=2,
-	SidTypeDomain=3,
-	SidTypeAlias=4,
-	SidTypeWellKnownGroup=5,
-	SidTypeDeletedAccount=6,
-	SidTypeInvalid=7,
-	SidTypeUnknown=8,
-	SidTypeComputer=9,
-	SidTypeLabel=10
-}
-#else
- { __donnot_use_enum_SID_NAME_USE=0x7FFFFFFF}
-#define SidTypeUser ( 1 )
-#define SidTypeGroup ( 2 )
-#define SidTypeDomain ( 3 )
-#define SidTypeAlias ( 4 )
-#define SidTypeWellKnownGroup ( 5 )
-#define SidTypeDeletedAccount ( 6 )
-#define SidTypeInvalid ( 7 )
-#define SidTypeUnknown ( 8 )
-#define SidTypeComputer ( 9 )
-#define SidTypeLabel ( 10 )
-#endif
-;
-
-struct LOCALGROUP_MEMBERS_INFO_0 {
-	struct domsid *lgrmi0_sid;/* [unique] */
-};
-
-struct LOCALGROUP_MEMBERS_INFO_1 {
-	struct domsid *lgrmi1_sid;/* [unique] */
-	enum SID_NAME_USE lgrmi1_sidusage;
-	const char * lgrmi1_name;
-};
-
-struct LOCALGROUP_MEMBERS_INFO_2 {
-	struct domsid *lgrmi2_sid;/* [unique] */
-	enum SID_NAME_USE lgrmi2_sidusage;
-	const char * lgrmi2_domainandname;
-};
-
-struct LOCALGROUP_MEMBERS_INFO_3 {
-	const char * lgrmi3_domainandname;
-};
-
-struct TIME_OF_DAY_INFO {
-	uint32_t tod_elapsedt;
-	uint32_t tod_msecs;
-	uint32_t tod_hours;
-	uint32_t tod_mins;
-	uint32_t tod_secs;
-	uint32_t tod_hunds;
-	int32_t tod_timezone;
-	uint32_t tod_tinterval;
-	uint32_t tod_day;
-	uint32_t tod_month;
-	uint32_t tod_year;
-	uint32_t tod_weekday;
-};
-
-struct SHARE_INFO_0 {
-	const char * shi0_netname;
-};
-
-struct SHARE_INFO_1 {
-	const char * shi1_netname;
-	uint32_t shi1_type;
-	const char * shi1_remark;
-};
-
-struct SHARE_INFO_2 {
-	const char * shi2_netname;
-	uint32_t shi2_type;
-	const char * shi2_remark;
-	uint32_t shi2_permissions;
-	uint32_t shi2_max_uses;
-	uint32_t shi2_current_uses;
-	const char * shi2_path;
-	const char * shi2_passwd;
-};
-
-struct SHARE_INFO_501 {
-	const char * shi501_netname;
-	uint32_t shi501_type;
-	const char * shi501_remark;
-	uint32_t shi501_flags;
-};
-
-struct SHARE_INFO_1004 {
-	const char * shi1004_remark;
-};
-
-/* bitmap SHARE_INFO_1005_FLAGS */
-#define SHI1005_FLAGS_DFS ( 0x01 )
-#define SHI1005_FLAGS_DFS_ROOT ( 0x02 )
-#define CSC_CACHE_MANUAL_REINT ( 0x00 )
-#define CSC_CACHE_AUTO_REINT ( 0x10 )
-#define CSC_CACHE_VDO ( 0x20 )
-#define CSC_CACHE_NONE ( 0x30 )
-#define SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS ( 0x0100 )
-#define SHI1005_FLAGS_FORCE_SHARED_DELETE ( 0x0200 )
-#define SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING ( 0x0400 )
-#define SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM ( 0x0800 )
-
-struct SHARE_INFO_1005 {
-	uint32_t shi1005_flags;
-};
-
-struct SHARE_INFO_1006 {
-	uint32_t shi1006_max_uses;
-};
-
-struct FILE_INFO_2 {
-	uint32_t fi2_id;
-};
-
-struct FILE_INFO_3 {
-	uint32_t fi3_id;
-	uint32_t fi3_permissions;
-	uint32_t fi3_num_locks;
-	const char * fi3_pathname;
-	const char * fi3_username;
-};
-
-
 struct NetJoinDomain {
 	struct {
 		const char * server;/* [unique] */
@@ -742,22 +138,6 @@
 };
 
 
-struct NetRenameMachineInDomain {
-	struct {
-		const char * server_name;
-		const char * new_machine_name;
-		const char * account;
-		const char * password;
-		uint32_t rename_options;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
 struct NetServerGetInfo {
 	struct {
 		const char * server_name;/* [unique] */
@@ -880,134 +260,6 @@
 };
 
 
-struct NetUserChangePassword {
-	struct {
-		const char * domain_name;
-		const char * user_name;
-		const char * old_password;
-		const char * new_password;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserGetInfo {
-	struct {
-		const char * server_name;
-		const char * user_name;
-		uint32_t level;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserSetInfo {
-	struct {
-		const char * server_name;
-		const char * user_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserGetGroups {
-	struct {
-		const char * server_name;
-		const char * user_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserSetGroups {
-	struct {
-		const char * server_name;
-		const char * user_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-		uint32_t num_entries;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserGetLocalGroups {
-	struct {
-		const char * server_name;
-		const char * user_name;
-		uint32_t level;
-		uint32_t flags;
-		uint32_t prefmaxlen;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserModalsGet {
-	struct {
-		const char * server_name;
-		uint32_t level;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetUserModalsSet {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
 struct NetQueryDisplayInformation {
 	struct {
 		const char * server_name;/* [unique] */
@@ -1025,433 +277,4 @@
 
 };
 
-
-struct NetGroupAdd {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupDel {
-	struct {
-		const char * server_name;
-		const char * group_name;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupEnum {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-		uint32_t *resume_handle;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		uint32_t *resume_handle;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupSetInfo {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupGetInfo {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupAddUser {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		const char * user_name;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupDelUser {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		const char * user_name;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupGetUsers {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-		uint32_t *resume_handle;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		uint32_t *resume_handle;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetGroupSetUsers {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-		uint32_t num_entries;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupAdd {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupDel {
-	struct {
-		const char * server_name;
-		const char * group_name;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupGetInfo {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupSetInfo {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupEnum {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-		uint32_t *resume_handle;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		uint32_t *resume_handle;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupAddMembers {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-		uint32_t total_entries;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupDelMembers {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-		uint32_t total_entries;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupGetMembers {
-	struct {
-		const char * server_name;
-		const char * local_group_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-		uint32_t *resume_handle;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		uint32_t *resume_handle;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetLocalGroupSetMembers {
-	struct {
-		const char * server_name;
-		const char * group_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-		uint32_t total_entries;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetRemoteTOD {
-	struct {
-		const char * server_name;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetShareAdd {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetShareDel {
-	struct {
-		const char * server_name;
-		const char * net_name;
-		uint32_t reserved;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetShareEnum {
-	struct {
-		const char * server_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-		uint32_t *resume_handle;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		uint32_t *resume_handle;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetShareGetInfo {
-	struct {
-		const char * server_name;
-		const char * net_name;
-		uint32_t level;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetShareSetInfo {
-	struct {
-		const char * server_name;
-		const char * net_name;
-		uint32_t level;
-		uint8_t *buffer;/* [ref] */
-	} in;
-
-	struct {
-		uint32_t *parm_err;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetFileClose {
-	struct {
-		const char * server_name;
-		uint32_t fileid;
-	} in;
-
-	struct {
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetFileGetInfo {
-	struct {
-		const char * server_name;
-		uint32_t fileid;
-		uint32_t level;
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
-
-struct NetFileEnum {
-	struct {
-		const char * server_name;
-		const char * base_path;
-		const char * user_name;
-		uint32_t level;
-		uint32_t prefmaxlen;
-		uint32_t *resume_handle;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t **buffer;/* [ref] */
-		uint32_t *entries_read;/* [ref] */
-		uint32_t *total_entries;/* [ref] */
-		uint32_t *resume_handle;/* [ref] */
-		enum NET_API_STATUS result;
-	} out;
-
-};
-
 #endif /* _HEADER_libnetapi */

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_dfs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_dfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_dfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,7 +25,6 @@
 		case DFS_MANAGER_VERSION_NT4: val = "DFS_MANAGER_VERSION_NT4"; break;
 		case DFS_MANAGER_VERSION_W2K: val = "DFS_MANAGER_VERSION_W2K"; break;
 		case DFS_MANAGER_VERSION_W2K3: val = "DFS_MANAGER_VERSION_W2K3"; break;
-		case DFS_MANAGER_VERSION_W2K8: val = "DFS_MANAGER_VERSION_W2K8"; break;
 	}
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }

Deleted: branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,3534 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_drsblobs.h"
-
-#include "librpc/gen_ndr/ndr_drsuapi.h"
-#include "librpc/gen_ndr/ndr_misc.h"
-static enum ndr_err_code ndr_push_replPropertyMetaData1(struct ndr_push *ndr, int ndr_flags, const struct replPropertyMetaData1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->attid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->originating_change_time));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->originating_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->local_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_replPropertyMetaData1(struct ndr_pull *ndr, int ndr_flags, struct replPropertyMetaData1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->attid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->originating_change_time));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->originating_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->local_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replPropertyMetaData1(struct ndr_print *ndr, const char *name, const struct replPropertyMetaData1 *r)
-{
-	ndr_print_struct(ndr, name, "replPropertyMetaData1");
-	ndr->depth++;
-	ndr_print_drsuapi_DsAttributeId(ndr, "attid", r->attid);
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_NTTIME_1sec(ndr, "originating_change_time", r->originating_change_time);
-	ndr_print_GUID(ndr, "originating_invocation_id", &r->originating_invocation_id);
-	ndr_print_hyper(ndr, "originating_usn", r->originating_usn);
-	ndr_print_hyper(ndr, "local_usn", r->local_usn);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_replPropertyMetaDataCtr1(struct ndr_push *ndr, int ndr_flags, const struct replPropertyMetaDataCtr1 *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_replPropertyMetaData1(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_replPropertyMetaDataCtr1(struct ndr_pull *ndr, int ndr_flags, struct replPropertyMetaDataCtr1 *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, r->count);
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_replPropertyMetaData1(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replPropertyMetaDataCtr1(struct ndr_print *ndr, const char *name, const struct replPropertyMetaDataCtr1 *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "replPropertyMetaDataCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_replPropertyMetaData1(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_replPropertyMetaDataCtr(struct ndr_push *ndr, int ndr_flags, const union replPropertyMetaDataCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_replPropertyMetaDataCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_replPropertyMetaDataCtr(struct ndr_pull *ndr, int ndr_flags, union replPropertyMetaDataCtr *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_replPropertyMetaDataCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replPropertyMetaDataCtr(struct ndr_print *ndr, const char *name, const union replPropertyMetaDataCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "replPropertyMetaDataCtr");
-	switch (level) {
-		case 1:
-			ndr_print_replPropertyMetaDataCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_replPropertyMetaDataBlob(struct ndr_push *ndr, int ndr_flags, const struct replPropertyMetaDataBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_replPropertyMetaDataCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_replPropertyMetaDataBlob(struct ndr_pull *ndr, int ndr_flags, struct replPropertyMetaDataBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_replPropertyMetaDataCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replPropertyMetaDataBlob(struct ndr_print *ndr, const char *name, const struct replPropertyMetaDataBlob *r)
-{
-	ndr_print_struct(ndr, name, "replPropertyMetaDataBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_replPropertyMetaDataCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_replUpToDateVectorCtr1(struct ndr_push *ndr, int ndr_flags, const struct replUpToDateVectorCtr1 *r)
-{
-	uint32_t cntr_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_replUpToDateVectorCtr1(struct ndr_pull *ndr, int ndr_flags, struct replUpToDateVectorCtr1 *r)
-{
-	uint32_t cntr_cursors_0;
-	TALLOC_CTX *_mem_save_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->cursors, r->count);
-		_mem_save_cursors_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->cursors, 0);
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replUpToDateVectorCtr1(struct ndr_print *ndr, const char *name, const struct replUpToDateVectorCtr1 *r)
-{
-	uint32_t cntr_cursors_0;
-	ndr_print_struct(ndr, name, "replUpToDateVectorCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "cursors", (int)r->count);
-	ndr->depth++;
-	for (cntr_cursors_0=0;cntr_cursors_0<r->count;cntr_cursors_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_cursors_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor(ndr, "cursors", &r->cursors[cntr_cursors_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_replUpToDateVectorCtr2(struct ndr_push *ndr, int ndr_flags, const struct replUpToDateVectorCtr2 *r)
-{
-	uint32_t cntr_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor2(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_replUpToDateVectorCtr2(struct ndr_pull *ndr, int ndr_flags, struct replUpToDateVectorCtr2 *r)
-{
-	uint32_t cntr_cursors_0;
-	TALLOC_CTX *_mem_save_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->cursors, r->count);
-		_mem_save_cursors_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->cursors, 0);
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor2(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replUpToDateVectorCtr2(struct ndr_print *ndr, const char *name, const struct replUpToDateVectorCtr2 *r)
-{
-	uint32_t cntr_cursors_0;
-	ndr_print_struct(ndr, name, "replUpToDateVectorCtr2");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "cursors", (int)r->count);
-	ndr->depth++;
-	for (cntr_cursors_0=0;cntr_cursors_0<r->count;cntr_cursors_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_cursors_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor2(ndr, "cursors", &r->cursors[cntr_cursors_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_replUpToDateVectorCtr(struct ndr_push *ndr, int ndr_flags, const union replUpToDateVectorCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_replUpToDateVectorCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_push_replUpToDateVectorCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-			break;
-
-			case 2:
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_replUpToDateVectorCtr(struct ndr_pull *ndr, int ndr_flags, union replUpToDateVectorCtr *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_replUpToDateVectorCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_pull_replUpToDateVectorCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-			break;
-
-			case 2:
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replUpToDateVectorCtr(struct ndr_print *ndr, const char *name, const union replUpToDateVectorCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "replUpToDateVectorCtr");
-	switch (level) {
-		case 1:
-			ndr_print_replUpToDateVectorCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		case 2:
-			ndr_print_replUpToDateVectorCtr2(ndr, "ctr2", &r->ctr2);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_replUpToDateVectorBlob(struct ndr_push *ndr, int ndr_flags, const struct replUpToDateVectorBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_replUpToDateVectorCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_replUpToDateVectorBlob(struct ndr_pull *ndr, int ndr_flags, struct replUpToDateVectorBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_replUpToDateVectorCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_replUpToDateVectorBlob(struct ndr_print *ndr, const char *name, const struct replUpToDateVectorBlob *r)
-{
-	ndr_print_struct(ndr, name, "replUpToDateVectorBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_replUpToDateVectorCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_repsFromTo1OtherInfo(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo1OtherInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen(r->dns_name) + 1));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, strlen(r->dns_name) + 1, sizeof(uint8_t), CH_DOS));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo1OtherInfo(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo1OtherInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__dns_name_size));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, r->__dns_name_size, sizeof(uint8_t), CH_DOS));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_repsFromTo1OtherInfo(struct ndr_print *ndr, const char *name, const struct repsFromTo1OtherInfo *r)
-{
-	ndr_print_struct(ndr, name, "repsFromTo1OtherInfo");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "__dns_name_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->dns_name) + 1:r->__dns_name_size);
-	ndr_print_string(ndr, "dns_name", r->dns_name);
-	ndr->depth--;
-}
-
-_PUBLIC_ size_t ndr_size_repsFromTo1OtherInfo(const struct repsFromTo1OtherInfo *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_repsFromTo1OtherInfo);
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_repsFromTo1(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo1 *r)
-{
-	{
-		uint32_t _flags_save_STRUCT = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		if (ndr_flags & NDR_SCALARS) {
-			NDR_CHECK(ndr_push_align(ndr, 8));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_repsFromTo1(r, ndr->flags) + 8));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->consecutive_sync_failures));
-			NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->last_success));
-			NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->last_attempt));
-			NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->result_last_attempt));
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->other_info));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_repsFromTo1OtherInfo(r->other_info, ndr->flags)));
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, r->replica_flags));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->schedule, 84));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_obj_guid));
-			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->transport_guid));
-		}
-		if (ndr_flags & NDR_BUFFERS) {
-			if (r->other_info) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->other_info));
-				NDR_CHECK(ndr_push_repsFromTo1OtherInfo(ndr, NDR_SCALARS, r->other_info));
-			}
-		}
-		ndr->flags = _flags_save_STRUCT;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_repsFromTo1(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo1 *r)
-{
-	uint32_t _ptr_other_info;
-	TALLOC_CTX *_mem_save_other_info_0;
-	{
-		uint32_t _flags_save_STRUCT = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		if (ndr_flags & NDR_SCALARS) {
-			NDR_CHECK(ndr_pull_align(ndr, 8));
-			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->blobsize));
-			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->consecutive_sync_failures));
-			NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->last_success));
-			NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->last_attempt));
-			NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->result_last_attempt));
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_other_info));
-			if (_ptr_other_info) {
-				NDR_PULL_ALLOC(ndr, r->other_info);
-				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->other_info, _ptr_other_info));
-			} else {
-				r->other_info = NULL;
-			}
-			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->other_info_length));
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, &r->replica_flags));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->schedule, 84));
-			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_obj_guid));
-			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->transport_guid));
-		}
-		if (ndr_flags & NDR_BUFFERS) {
-			if (r->other_info) {
-				uint32_t _relative_save_offset;
-				_relative_save_offset = ndr->offset;
-				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->other_info));
-				_mem_save_other_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, r->other_info, 0);
-				NDR_CHECK(ndr_pull_repsFromTo1OtherInfo(ndr, NDR_SCALARS, r->other_info));
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_other_info_0, 0);
-				ndr->offset = _relative_save_offset;
-			}
-		}
-		ndr->flags = _flags_save_STRUCT;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_repsFromTo1(struct ndr_print *ndr, const char *name, const struct repsFromTo1 *r)
-{
-	ndr_print_struct(ndr, name, "repsFromTo1");
-	{
-		uint32_t _flags_save_STRUCT = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "blobsize", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_repsFromTo1(r, ndr->flags) + 8:r->blobsize);
-		ndr_print_uint32(ndr, "consecutive_sync_failures", r->consecutive_sync_failures);
-		ndr_print_NTTIME_1sec(ndr, "last_success", r->last_success);
-		ndr_print_NTTIME_1sec(ndr, "last_attempt", r->last_attempt);
-		ndr_print_WERROR(ndr, "result_last_attempt", r->result_last_attempt);
-		ndr_print_ptr(ndr, "other_info", r->other_info);
-		ndr->depth++;
-		if (r->other_info) {
-			ndr_print_repsFromTo1OtherInfo(ndr, "other_info", r->other_info);
-		}
-		ndr->depth--;
-		ndr_print_uint32(ndr, "other_info_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_repsFromTo1OtherInfo(r->other_info, ndr->flags):r->other_info_length);
-		ndr_print_drsuapi_DsReplicaNeighbourFlags(ndr, "replica_flags", r->replica_flags);
-		ndr_print_array_uint8(ndr, "schedule", r->schedule, 84);
-		ndr_print_uint32(ndr, "reserved", r->reserved);
-		ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "highwatermark", &r->highwatermark);
-		ndr_print_GUID(ndr, "source_dsa_obj_guid", &r->source_dsa_obj_guid);
-		ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-		ndr_print_GUID(ndr, "transport_guid", &r->transport_guid);
-		ndr->depth--;
-		ndr->flags = _flags_save_STRUCT;
-	}
-}
-
-_PUBLIC_ size_t ndr_size_repsFromTo1(const struct repsFromTo1 *r, int flags)
-{
-	flags |= LIBNDR_PRINT_ARRAY_HEX;
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_repsFromTo1);
-}
-
-static enum ndr_err_code ndr_push_repsFromTo(struct ndr_push *ndr, int ndr_flags, const union repsFromTo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_repsFromTo1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_repsFromTo1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_repsFromTo(struct ndr_pull *ndr, int ndr_flags, union repsFromTo *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_repsFromTo1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_repsFromTo1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_repsFromTo(struct ndr_print *ndr, const char *name, const union repsFromTo *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "repsFromTo");
-	switch (level) {
-		case 1:
-			ndr_print_repsFromTo1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_repsFromToBlob(struct ndr_push *ndr, int ndr_flags, const struct repsFromToBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_repsFromTo(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_repsFromTo(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_repsFromToBlob(struct ndr_pull *ndr, int ndr_flags, struct repsFromToBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_repsFromTo(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_repsFromTo(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_repsFromToBlob(struct ndr_print *ndr, const char *name, const struct repsFromToBlob *r)
-{
-	ndr_print_struct(ndr, name, "repsFromToBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_repsFromTo(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_partialAttributeSetCtr1(struct ndr_push *ndr, int ndr_flags, const struct partialAttributeSetCtr1 *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_partialAttributeSetCtr1(struct ndr_pull *ndr, int ndr_flags, struct partialAttributeSetCtr1 *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_PULL_ALLOC_N(ndr, r->array, r->count);
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_partialAttributeSetCtr1(struct ndr_print *ndr, const char *name, const struct partialAttributeSetCtr1 *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "partialAttributeSetCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsAttributeId(ndr, "array", r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_partialAttributeSetCtr(struct ndr_push *ndr, int ndr_flags, const union partialAttributeSetCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_partialAttributeSetCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_partialAttributeSetCtr(struct ndr_pull *ndr, int ndr_flags, union partialAttributeSetCtr *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_partialAttributeSetCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_partialAttributeSetCtr(struct ndr_print *ndr, const char *name, const union partialAttributeSetCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "partialAttributeSetCtr");
-	switch (level) {
-		case 1:
-			ndr_print_partialAttributeSetCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_partialAttributeSetBlob(struct ndr_push *ndr, int ndr_flags, const struct partialAttributeSetBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_partialAttributeSetCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_partialAttributeSetBlob(struct ndr_pull *ndr, int ndr_flags, struct partialAttributeSetBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_partialAttributeSetCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_partialAttributeSetBlob(struct ndr_print *ndr, const char *name, const struct partialAttributeSetBlob *r)
-{
-	ndr_print_struct(ndr, name, "partialAttributeSetBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_partialAttributeSetCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_prefixMapVersion(struct ndr_push *ndr, int ndr_flags, enum prefixMapVersion r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_prefixMapVersion(struct ndr_pull *ndr, int ndr_flags, enum prefixMapVersion *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_prefixMapVersion(struct ndr_print *ndr, const char *name, enum prefixMapVersion r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case PREFIX_MAP_VERSION_DSDB: val = "PREFIX_MAP_VERSION_DSDB"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_prefixMapCtr(struct ndr_push *ndr, int ndr_flags, const union prefixMapCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case PREFIX_MAP_VERSION_DSDB: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->dsdb));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case PREFIX_MAP_VERSION_DSDB:
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->dsdb));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_prefixMapCtr(struct ndr_pull *ndr, int ndr_flags, union prefixMapCtr *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case PREFIX_MAP_VERSION_DSDB: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->dsdb));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case PREFIX_MAP_VERSION_DSDB:
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->dsdb));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_prefixMapCtr(struct ndr_print *ndr, const char *name, const union prefixMapCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "prefixMapCtr");
-	switch (level) {
-		case PREFIX_MAP_VERSION_DSDB:
-			ndr_print_drsuapi_DsReplicaOIDMapping_Ctr(ndr, "dsdb", &r->dsdb);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_prefixMapBlob(struct ndr_push *ndr, int ndr_flags, const struct prefixMapBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_prefixMapVersion(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_prefixMapCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_prefixMapCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_prefixMapBlob(struct ndr_pull *ndr, int ndr_flags, struct prefixMapBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_prefixMapVersion(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_prefixMapCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_prefixMapCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_prefixMapBlob(struct ndr_print *ndr, const char *name, const struct prefixMapBlob *r)
-{
-	ndr_print_struct(ndr, name, "prefixMapBlob");
-	ndr->depth++;
-	ndr_print_prefixMapVersion(ndr, "version", r->version);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_prefixMapCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_ldapControlDirSyncExtra(struct ndr_push *ndr, int ndr_flags, const union ldapControlDirSyncExtra *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 0: {
-			break; }
-
-			default: {
-				NDR_CHECK(ndr_push_replUpToDateVectorBlob(ndr, NDR_SCALARS, &r->uptodateness_vector));
-			break; }
-
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 0:
-			break;
-
-			default:
-			break;
-
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_ldapControlDirSyncExtra(struct ndr_pull *ndr, int ndr_flags, union ldapControlDirSyncExtra *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 0: {
-			break; }
-
-			default: {
-				NDR_CHECK(ndr_pull_replUpToDateVectorBlob(ndr, NDR_SCALARS, &r->uptodateness_vector));
-			break; }
-
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 0:
-			break;
-
-			default:
-			break;
-
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_ldapControlDirSyncExtra(struct ndr_print *ndr, const char *name, const union ldapControlDirSyncExtra *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "ldapControlDirSyncExtra");
-	switch (level) {
-		case 0:
-		break;
-
-		default:
-			ndr_print_replUpToDateVectorBlob(ndr, "uptodateness_vector", &r->uptodateness_vector);
-		break;
-
-	}
-}
-
-static size_t ndr_size_ldapControlDirSyncExtra(const union ldapControlDirSyncExtra *r, uint32_t level, int flags)
-{
-	return ndr_size_union(r, flags, level, (ndr_push_flags_fn_t)ndr_push_ldapControlDirSyncExtra);
-}
-
-static enum ndr_err_code ndr_push_ldapControlDirSyncBlob(struct ndr_push *ndr, int ndr_flags, const struct ldapControlDirSyncBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 3));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u3));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_ldapControlDirSyncExtra(&r->extra, r->extra.uptodateness_vector.version, 0)));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid1));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->extra, ndr_size_ldapControlDirSyncExtra(&r->extra, r->extra.uptodateness_vector.version, 0)));
-		NDR_CHECK(ndr_push_ldapControlDirSyncExtra(ndr, NDR_SCALARS, &r->extra));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_ldapControlDirSyncExtra(ndr, NDR_BUFFERS, &r->extra));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_ldapControlDirSyncBlob(struct ndr_pull *ndr, int ndr_flags, struct ldapControlDirSyncBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u1));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u3));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->extra_length));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid1));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->extra, r->extra_length));
-		NDR_CHECK(ndr_pull_ldapControlDirSyncExtra(ndr, NDR_SCALARS, &r->extra));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_ldapControlDirSyncExtra(ndr, NDR_BUFFERS, &r->extra));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_ldapControlDirSyncBlob(struct ndr_print *ndr, const char *name, const struct ldapControlDirSyncBlob *r)
-{
-	ndr_print_struct(ndr, name, "ldapControlDirSyncBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "u1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?3:r->u1);
-	ndr_print_NTTIME(ndr, "time", r->time);
-	ndr_print_uint32(ndr, "u2", r->u2);
-	ndr_print_uint32(ndr, "u3", r->u3);
-	ndr_print_uint32(ndr, "extra_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_ldapControlDirSyncExtra(&r->extra, r->extra.uptodateness_vector.version, 0):r->extra_length);
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "highwatermark", &r->highwatermark);
-	ndr_print_GUID(ndr, "guid1", &r->guid1);
-	ndr_print_set_switch_value(ndr, &r->extra, r->extra_length);
-	ndr_print_ldapControlDirSyncExtra(ndr, "extra", &r->extra);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_ldapControlDirSyncCookie(struct ndr_push *ndr, int ndr_flags, const struct ldapControlDirSyncCookie *r)
-{
-	uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_setup_relative_base_offset1(ndr, r, ndr->offset));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, "MSDS", 4, sizeof(uint8_t), CH_DOS));
-		{
-			struct ndr_push *_ndr_blob;
-			NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_blob, 0, -1));
-			NDR_CHECK(ndr_push_ldapControlDirSyncBlob(_ndr_blob, NDR_SCALARS|NDR_BUFFERS, &r->blob));
-			NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_blob, 0, -1));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_setup_relative_base_offset2(ndr, r));
-	}
-	ndr_push_restore_relative_base_offset(ndr, _save_relative_base_offset);
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_ldapControlDirSyncCookie(struct ndr_pull *ndr, int ndr_flags, struct ldapControlDirSyncCookie *r)
-{
-	uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_setup_relative_base_offset1(ndr, r, ndr->offset));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->msds, 4, sizeof(uint8_t), CH_DOS));
-		{
-			struct ndr_pull *_ndr_blob;
-			NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_blob, 0, -1));
-			NDR_CHECK(ndr_pull_ldapControlDirSyncBlob(_ndr_blob, NDR_SCALARS|NDR_BUFFERS, &r->blob));
-			NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_blob, 0, -1));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_setup_relative_base_offset2(ndr, r));
-	}
-	ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_ldapControlDirSyncCookie(struct ndr_print *ndr, const char *name, const struct ldapControlDirSyncCookie *r)
-{
-	ndr_print_struct(ndr, name, "ldapControlDirSyncCookie");
-	ndr->depth++;
-	ndr_print_string(ndr, "msds", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?"MSDS":r->msds);
-	ndr_print_ldapControlDirSyncBlob(ndr, "blob", &r->blob);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_supplementalCredentialsPackage(struct ndr_push *ndr, int ndr_flags, const struct supplementalCredentialsPackage *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 2));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->name)));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->data)));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, 2 * strlen_m(r->name), sizeof(uint8_t), CH_UTF16));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->data, strlen(r->data), sizeof(uint8_t), CH_DOS));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_supplementalCredentialsPackage(struct ndr_pull *ndr, int ndr_flags, struct supplementalCredentialsPackage *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 2));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_len));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->data_len));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, r->name_len, sizeof(uint8_t), CH_UTF16));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->data, r->data_len, sizeof(uint8_t), CH_DOS));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_supplementalCredentialsPackage(struct ndr_print *ndr, const char *name, const struct supplementalCredentialsPackage *r)
-{
-	ndr_print_struct(ndr, name, "supplementalCredentialsPackage");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->name):r->name_len);
-	ndr_print_uint16(ndr, "data_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->data):r->data_len);
-	ndr_print_uint16(ndr, "reserved", r->reserved);
-	ndr_print_string(ndr, "name", r->name);
-	ndr_print_string(ndr, "data", r->data);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_supplementalCredentialsSignature(struct ndr_push *ndr, int ndr_flags, enum supplementalCredentialsSignature r)
-{
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_supplementalCredentialsSignature(struct ndr_pull *ndr, int ndr_flags, enum supplementalCredentialsSignature *r)
-{
-	uint16_t v;
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
-		*r = v;
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_supplementalCredentialsSignature(struct ndr_print *ndr, const char *name, enum supplementalCredentialsSignature r)
-{
-	const char *val = NULL;
-
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		switch (r) {
-			case SUPPLEMENTAL_CREDENTIALS_SIGNATURE: val = "SUPPLEMENTAL_CREDENTIALS_SIGNATURE"; break;
-		}
-		ndr_print_enum(ndr, name, "ENUM", val, r);
-		ndr->flags = _flags_save_ENUM;
-	}
-}
-
-static enum ndr_err_code ndr_push_supplementalCredentialsSubBlob(struct ndr_push *ndr, int ndr_flags, const struct supplementalCredentialsSubBlob *r)
-{
-	uint32_t cntr_packages_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 2));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, SUPPLEMENTAL_CREDENTIALS_PREFIX, 0x30, sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_push_supplementalCredentialsSignature(ndr, NDR_SCALARS, SUPPLEMENTAL_CREDENTIALS_SIGNATURE));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_packages));
-		for (cntr_packages_0 = 0; cntr_packages_0 < r->num_packages; cntr_packages_0++) {
-			NDR_CHECK(ndr_push_supplementalCredentialsPackage(ndr, NDR_SCALARS, &r->packages[cntr_packages_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_supplementalCredentialsSubBlob(struct ndr_pull *ndr, int ndr_flags, struct supplementalCredentialsSubBlob *r)
-{
-	uint32_t cntr_packages_0;
-	TALLOC_CTX *_mem_save_packages_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 2));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->prefix, 0x30, sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_pull_supplementalCredentialsSignature(ndr, NDR_SCALARS, &r->signature));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_packages));
-		NDR_PULL_ALLOC_N(ndr, r->packages, r->num_packages);
-		_mem_save_packages_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->packages, 0);
-		for (cntr_packages_0 = 0; cntr_packages_0 < r->num_packages; cntr_packages_0++) {
-			NDR_CHECK(ndr_pull_supplementalCredentialsPackage(ndr, NDR_SCALARS, &r->packages[cntr_packages_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_packages_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_supplementalCredentialsSubBlob(struct ndr_print *ndr, const char *name, const struct supplementalCredentialsSubBlob *r)
-{
-	uint32_t cntr_packages_0;
-	ndr_print_struct(ndr, name, "supplementalCredentialsSubBlob");
-	ndr->depth++;
-	ndr_print_string(ndr, "prefix", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?SUPPLEMENTAL_CREDENTIALS_PREFIX:r->prefix);
-	ndr_print_supplementalCredentialsSignature(ndr, "signature", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?SUPPLEMENTAL_CREDENTIALS_SIGNATURE:r->signature);
-	ndr_print_uint16(ndr, "num_packages", r->num_packages);
-	ndr->print(ndr, "%s: ARRAY(%d)", "packages", (int)r->num_packages);
-	ndr->depth++;
-	for (cntr_packages_0=0;cntr_packages_0<r->num_packages;cntr_packages_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_packages_0) != -1) {
-			ndr_print_supplementalCredentialsPackage(ndr, "packages", &r->packages[cntr_packages_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static size_t ndr_size_supplementalCredentialsSubBlob(const struct supplementalCredentialsSubBlob *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_supplementalCredentialsSubBlob);
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_supplementalCredentialsBlob(struct ndr_push *ndr, int ndr_flags, const struct supplementalCredentialsBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_supplementalCredentialsSubBlob(&r->sub, ndr->flags)));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		{
-			struct ndr_push *_ndr_sub;
-			NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_sub, 0, ndr_size_supplementalCredentialsSubBlob(&r->sub, ndr->flags)));
-			NDR_CHECK(ndr_push_supplementalCredentialsSubBlob(_ndr_sub, NDR_SCALARS, &r->sub));
-			NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_sub, 0, ndr_size_supplementalCredentialsSubBlob(&r->sub, ndr->flags)));
-		}
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, 0));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_supplementalCredentialsBlob(struct ndr_pull *ndr, int ndr_flags, struct supplementalCredentialsBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		{
-			struct ndr_pull *_ndr_sub;
-			NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sub, 0, r->__ndr_size));
-			NDR_CHECK(ndr_pull_supplementalCredentialsSubBlob(_ndr_sub, NDR_SCALARS, &r->sub));
-			NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sub, 0, r->__ndr_size));
-		}
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->unknown3));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_supplementalCredentialsBlob(struct ndr_print *ndr, const char *name, const struct supplementalCredentialsBlob *r)
-{
-	ndr_print_struct(ndr, name, "supplementalCredentialsBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "unknown1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown1);
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_supplementalCredentialsSubBlob(&r->sub, ndr->flags):r->__ndr_size);
-	ndr_print_uint32(ndr, "unknown2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown2);
-	ndr_print_supplementalCredentialsSubBlob(ndr, "sub", &r->sub);
-	ndr_print_uint8(ndr, "unknown3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown3);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_package_PackagesBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PackagesBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->names));
-			ndr->flags = _flags_save_string_array;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_package_PackagesBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PackagesBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->names));
-			ndr->flags = _flags_save_string_array;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PackagesBlob(struct ndr_print *ndr, const char *name, const struct package_PackagesBlob *r)
-{
-	ndr_print_struct(ndr, name, "package_PackagesBlob");
-	ndr->depth++;
-	ndr_print_string_array(ndr, "names", r->names);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryKerberosString(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosString *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->string)));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 2 * strlen_m(r->string)));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->string));
-			ndr->flags = _flags_save_string;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			if (r->string) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->string));
-				{
-					struct ndr_push *_ndr_string;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_string, 0, 2 * strlen_m(r->string)));
-					NDR_CHECK(ndr_push_string(_ndr_string, NDR_SCALARS, r->string));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_string, 0, 2 * strlen_m(r->string)));
-				}
-			}
-			ndr->flags = _flags_save_string;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryKerberosString(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosString *r)
-{
-	uint32_t _ptr_string;
-	TALLOC_CTX *_mem_save_string_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
-			if (_ptr_string) {
-				NDR_PULL_ALLOC(ndr, r->string);
-				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->string, _ptr_string));
-			} else {
-				r->string = NULL;
-			}
-			ndr->flags = _flags_save_string;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			if (r->string) {
-				uint32_t _relative_save_offset;
-				_relative_save_offset = ndr->offset;
-				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->string));
-				_mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
-				{
-					struct ndr_pull *_ndr_string;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_string, 0, r->size));
-					NDR_CHECK(ndr_pull_string(_ndr_string, NDR_SCALARS, &r->string));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_string, 0, r->size));
-				}
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
-				ndr->offset = _relative_save_offset;
-			}
-			ndr->flags = _flags_save_string;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosString(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosString *r)
-{
-	ndr_print_struct(ndr, name, "package_PrimaryKerberosString");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->string):r->length);
-	ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2 * strlen_m(r->string):r->size);
-	ndr_print_ptr(ndr, "string", r->string);
-	ndr->depth++;
-	if (r->string) {
-		ndr_print_string(ndr, "string", r->string);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryKerberosKey3(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosKey3 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->keytype));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, (r->value?r->value->length:0)));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			if (r->value) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value));
-				{
-					struct ndr_push *_ndr_value;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_value, 0, (r->value?r->value->length:0)));
-					NDR_CHECK(ndr_push_DATA_BLOB(_ndr_value, NDR_SCALARS, *r->value));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_value, 0, (r->value?r->value->length:0)));
-				}
-			}
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryKerberosKey3(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosKey3 *r)
-{
-	uint32_t _ptr_value;
-	TALLOC_CTX *_mem_save_value_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved1));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->keytype));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value_len));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
-			if (_ptr_value) {
-				NDR_PULL_ALLOC(ndr, r->value);
-				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value, _ptr_value));
-			} else {
-				r->value = NULL;
-			}
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			if (r->value) {
-				uint32_t _relative_save_offset;
-				_relative_save_offset = ndr->offset;
-				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value));
-				_mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, r->value, 0);
-				{
-					struct ndr_pull *_ndr_value;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_value, 0, r->value_len));
-					NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_value, NDR_SCALARS, r->value));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_value, 0, r->value_len));
-				}
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
-				ndr->offset = _relative_save_offset;
-			}
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosKey3(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosKey3 *r)
-{
-	ndr_print_struct(ndr, name, "package_PrimaryKerberosKey3");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
-	ndr_print_uint16(ndr, "reserved2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved2);
-	ndr_print_uint32(ndr, "reserved3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved3);
-	ndr_print_uint32(ndr, "keytype", r->keytype);
-	ndr_print_uint32(ndr, "value_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?(r->value?r->value->length:0):r->value_len);
-	ndr_print_ptr(ndr, "value", r->value);
-	ndr->depth++;
-	if (r->value) {
-		ndr_print_DATA_BLOB(ndr, "value", *r->value);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryKerberosCtr3(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosCtr3 *r)
-{
-	uint32_t cntr_keys_0;
-	uint32_t cntr_old_keys_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_keys));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_old_keys));
-		NDR_CHECK(ndr_push_package_PrimaryKerberosString(ndr, NDR_SCALARS, &r->salt));
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey3(ndr, NDR_SCALARS, &r->keys[cntr_keys_0]));
-		}
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey3(ndr, NDR_SCALARS, &r->old_keys[cntr_old_keys_0]));
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_package_PrimaryKerberosString(ndr, NDR_BUFFERS, &r->salt));
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey3(ndr, NDR_BUFFERS, &r->keys[cntr_keys_0]));
-		}
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey3(ndr, NDR_BUFFERS, &r->old_keys[cntr_old_keys_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryKerberosCtr3(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosCtr3 *r)
-{
-	uint32_t cntr_keys_0;
-	TALLOC_CTX *_mem_save_keys_0;
-	uint32_t cntr_old_keys_0;
-	TALLOC_CTX *_mem_save_old_keys_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_keys));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_old_keys));
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosString(ndr, NDR_SCALARS, &r->salt));
-		NDR_PULL_ALLOC_N(ndr, r->keys, r->num_keys);
-		_mem_save_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->keys, 0);
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey3(ndr, NDR_SCALARS, &r->keys[cntr_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keys_0, 0);
-		NDR_PULL_ALLOC_N(ndr, r->old_keys, r->num_old_keys);
-		_mem_save_old_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->old_keys, 0);
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey3(ndr, NDR_SCALARS, &r->old_keys[cntr_old_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_keys_0, 0);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding3));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->padding5));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosString(ndr, NDR_BUFFERS, &r->salt));
-		_mem_save_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->keys, 0);
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey3(ndr, NDR_BUFFERS, &r->keys[cntr_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keys_0, 0);
-		_mem_save_old_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->old_keys, 0);
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey3(ndr, NDR_BUFFERS, &r->old_keys[cntr_old_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_keys_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosCtr3(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosCtr3 *r)
-{
-	uint32_t cntr_keys_0;
-	uint32_t cntr_old_keys_0;
-	ndr_print_struct(ndr, name, "package_PrimaryKerberosCtr3");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "num_keys", r->num_keys);
-	ndr_print_uint16(ndr, "num_old_keys", r->num_old_keys);
-	ndr_print_package_PrimaryKerberosString(ndr, "salt", &r->salt);
-	ndr->print(ndr, "%s: ARRAY(%d)", "keys", (int)r->num_keys);
-	ndr->depth++;
-	for (cntr_keys_0=0;cntr_keys_0<r->num_keys;cntr_keys_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_keys_0) != -1) {
-			ndr_print_package_PrimaryKerberosKey3(ndr, "keys", &r->keys[cntr_keys_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->print(ndr, "%s: ARRAY(%d)", "old_keys", (int)r->num_old_keys);
-	ndr->depth++;
-	for (cntr_old_keys_0=0;cntr_old_keys_0<r->num_old_keys;cntr_old_keys_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_old_keys_0) != -1) {
-			ndr_print_package_PrimaryKerberosKey3(ndr, "old_keys", &r->old_keys[cntr_old_keys_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "padding1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding1);
-	ndr_print_uint32(ndr, "padding2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding2);
-	ndr_print_uint32(ndr, "padding3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding3);
-	ndr_print_uint32(ndr, "padding4", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding4);
-	ndr_print_uint32(ndr, "padding5", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->padding5);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryKerberosKey4(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosKey4 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->iteration_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->keytype));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, (r->value?r->value->length:0)));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			if (r->value) {
-				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value));
-				{
-					struct ndr_push *_ndr_value;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_value, 0, (r->value?r->value->length:0)));
-					NDR_CHECK(ndr_push_DATA_BLOB(_ndr_value, NDR_SCALARS, *r->value));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_value, 0, (r->value?r->value->length:0)));
-				}
-			}
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryKerberosKey4(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosKey4 *r)
-{
-	uint32_t _ptr_value;
-	TALLOC_CTX *_mem_save_value_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved1));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reserved2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved3));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->iteration_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->keytype));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value_len));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
-			if (_ptr_value) {
-				NDR_PULL_ALLOC(ndr, r->value);
-				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value, _ptr_value));
-			} else {
-				r->value = NULL;
-			}
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			if (r->value) {
-				uint32_t _relative_save_offset;
-				_relative_save_offset = ndr->offset;
-				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value));
-				_mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, r->value, 0);
-				{
-					struct ndr_pull *_ndr_value;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_value, 0, r->value_len));
-					NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_value, NDR_SCALARS, r->value));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_value, 0, r->value_len));
-				}
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
-				ndr->offset = _relative_save_offset;
-			}
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosKey4(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosKey4 *r)
-{
-	ndr_print_struct(ndr, name, "package_PrimaryKerberosKey4");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
-	ndr_print_uint16(ndr, "reserved2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved2);
-	ndr_print_uint32(ndr, "reserved3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved3);
-	ndr_print_uint32(ndr, "iteration_count", r->iteration_count);
-	ndr_print_uint32(ndr, "keytype", r->keytype);
-	ndr_print_uint32(ndr, "value_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?(r->value?r->value->length:0):r->value_len);
-	ndr_print_ptr(ndr, "value", r->value);
-	ndr->depth++;
-	if (r->value) {
-		ndr_print_DATA_BLOB(ndr, "value", *r->value);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryKerberosCtr4(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosCtr4 *r)
-{
-	uint32_t cntr_keys_0;
-	uint32_t cntr_service_keys_0;
-	uint32_t cntr_old_keys_0;
-	uint32_t cntr_older_keys_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_keys));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_old_keys));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_older_keys));
-		NDR_CHECK(ndr_push_package_PrimaryKerberosString(ndr, NDR_SCALARS, &r->salt));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->default_iteration_count));
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->keys[cntr_keys_0]));
-		}
-		for (cntr_service_keys_0 = 0; cntr_service_keys_0 < 0; cntr_service_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->service_keys[cntr_service_keys_0]));
-		}
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->old_keys[cntr_old_keys_0]));
-		}
-		for (cntr_older_keys_0 = 0; cntr_older_keys_0 < r->num_older_keys; cntr_older_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->older_keys[cntr_older_keys_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_package_PrimaryKerberosString(ndr, NDR_BUFFERS, &r->salt));
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->keys[cntr_keys_0]));
-		}
-		for (cntr_service_keys_0 = 0; cntr_service_keys_0 < 0; cntr_service_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->service_keys[cntr_service_keys_0]));
-		}
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->old_keys[cntr_old_keys_0]));
-		}
-		for (cntr_older_keys_0 = 0; cntr_older_keys_0 < r->num_older_keys; cntr_older_keys_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->older_keys[cntr_older_keys_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryKerberosCtr4(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosCtr4 *r)
-{
-	uint32_t cntr_keys_0;
-	TALLOC_CTX *_mem_save_keys_0;
-	uint32_t cntr_service_keys_0;
-	TALLOC_CTX *_mem_save_service_keys_0;
-	uint32_t cntr_old_keys_0;
-	TALLOC_CTX *_mem_save_old_keys_0;
-	uint32_t cntr_older_keys_0;
-	TALLOC_CTX *_mem_save_older_keys_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_keys));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_service_keys));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_old_keys));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_older_keys));
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosString(ndr, NDR_SCALARS, &r->salt));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->default_iteration_count));
-		NDR_PULL_ALLOC_N(ndr, r->keys, r->num_keys);
-		_mem_save_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->keys, 0);
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->keys[cntr_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keys_0, 0);
-		NDR_PULL_ALLOC_N(ndr, r->service_keys, r->num_service_keys);
-		_mem_save_service_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->service_keys, 0);
-		for (cntr_service_keys_0 = 0; cntr_service_keys_0 < r->num_service_keys; cntr_service_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->service_keys[cntr_service_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_keys_0, 0);
-		NDR_PULL_ALLOC_N(ndr, r->old_keys, r->num_old_keys);
-		_mem_save_old_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->old_keys, 0);
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->old_keys[cntr_old_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_keys_0, 0);
-		NDR_PULL_ALLOC_N(ndr, r->older_keys, r->num_older_keys);
-		_mem_save_older_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->older_keys, 0);
-		for (cntr_older_keys_0 = 0; cntr_older_keys_0 < r->num_older_keys; cntr_older_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_SCALARS, &r->older_keys[cntr_older_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_older_keys_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosString(ndr, NDR_BUFFERS, &r->salt));
-		_mem_save_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->keys, 0);
-		for (cntr_keys_0 = 0; cntr_keys_0 < r->num_keys; cntr_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->keys[cntr_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keys_0, 0);
-		_mem_save_service_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->service_keys, 0);
-		for (cntr_service_keys_0 = 0; cntr_service_keys_0 < r->num_service_keys; cntr_service_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->service_keys[cntr_service_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_keys_0, 0);
-		_mem_save_old_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->old_keys, 0);
-		for (cntr_old_keys_0 = 0; cntr_old_keys_0 < r->num_old_keys; cntr_old_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->old_keys[cntr_old_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_keys_0, 0);
-		_mem_save_older_keys_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->older_keys, 0);
-		for (cntr_older_keys_0 = 0; cntr_older_keys_0 < r->num_older_keys; cntr_older_keys_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryKerberosKey4(ndr, NDR_BUFFERS, &r->older_keys[cntr_older_keys_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_older_keys_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosCtr4(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosCtr4 *r)
-{
-	uint32_t cntr_keys_0;
-	uint32_t cntr_service_keys_0;
-	uint32_t cntr_old_keys_0;
-	uint32_t cntr_older_keys_0;
-	ndr_print_struct(ndr, name, "package_PrimaryKerberosCtr4");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "num_keys", r->num_keys);
-	ndr_print_uint16(ndr, "num_service_keys", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->num_service_keys);
-	ndr_print_uint16(ndr, "num_old_keys", r->num_old_keys);
-	ndr_print_uint16(ndr, "num_older_keys", r->num_older_keys);
-	ndr_print_package_PrimaryKerberosString(ndr, "salt", &r->salt);
-	ndr_print_uint32(ndr, "default_iteration_count", r->default_iteration_count);
-	ndr->print(ndr, "%s: ARRAY(%d)", "keys", (int)r->num_keys);
-	ndr->depth++;
-	for (cntr_keys_0=0;cntr_keys_0<r->num_keys;cntr_keys_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_keys_0) != -1) {
-			ndr_print_package_PrimaryKerberosKey4(ndr, "keys", &r->keys[cntr_keys_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->print(ndr, "%s: ARRAY(%d)", "service_keys", (int)r->num_service_keys);
-	ndr->depth++;
-	for (cntr_service_keys_0=0;cntr_service_keys_0<r->num_service_keys;cntr_service_keys_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_service_keys_0) != -1) {
-			ndr_print_package_PrimaryKerberosKey4(ndr, "service_keys", &r->service_keys[cntr_service_keys_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->print(ndr, "%s: ARRAY(%d)", "old_keys", (int)r->num_old_keys);
-	ndr->depth++;
-	for (cntr_old_keys_0=0;cntr_old_keys_0<r->num_old_keys;cntr_old_keys_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_old_keys_0) != -1) {
-			ndr_print_package_PrimaryKerberosKey4(ndr, "old_keys", &r->old_keys[cntr_old_keys_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->print(ndr, "%s: ARRAY(%d)", "older_keys", (int)r->num_older_keys);
-	ndr->depth++;
-	for (cntr_older_keys_0=0;cntr_older_keys_0<r->num_older_keys;cntr_older_keys_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_older_keys_0) != -1) {
-			ndr_print_package_PrimaryKerberosKey4(ndr, "older_keys", &r->older_keys[cntr_older_keys_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryKerberosCtr(struct ndr_push *ndr, int ndr_flags, const union package_PrimaryKerberosCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 3: {
-				NDR_CHECK(ndr_push_package_PrimaryKerberosCtr3(ndr, NDR_SCALARS, &r->ctr3));
-			break; }
-
-			case 4: {
-				NDR_CHECK(ndr_push_package_PrimaryKerberosCtr4(ndr, NDR_SCALARS, &r->ctr4));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 3:
-				NDR_CHECK(ndr_push_package_PrimaryKerberosCtr3(ndr, NDR_BUFFERS, &r->ctr3));
-			break;
-
-			case 4:
-				NDR_CHECK(ndr_push_package_PrimaryKerberosCtr4(ndr, NDR_BUFFERS, &r->ctr4));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryKerberosCtr(struct ndr_pull *ndr, int ndr_flags, union package_PrimaryKerberosCtr *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 3: {
-				NDR_CHECK(ndr_pull_package_PrimaryKerberosCtr3(ndr, NDR_SCALARS, &r->ctr3));
-			break; }
-
-			case 4: {
-				NDR_CHECK(ndr_pull_package_PrimaryKerberosCtr4(ndr, NDR_SCALARS, &r->ctr4));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 3:
-				NDR_CHECK(ndr_pull_package_PrimaryKerberosCtr3(ndr, NDR_BUFFERS, &r->ctr3));
-			break;
-
-			case 4:
-				NDR_CHECK(ndr_pull_package_PrimaryKerberosCtr4(ndr, NDR_BUFFERS, &r->ctr4));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosCtr(struct ndr_print *ndr, const char *name, const union package_PrimaryKerberosCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "package_PrimaryKerberosCtr");
-	switch (level) {
-		case 3:
-			ndr_print_package_PrimaryKerberosCtr3(ndr, "ctr3", &r->ctr3);
-		break;
-
-		case 4:
-			ndr_print_package_PrimaryKerberosCtr4(ndr, "ctr4", &r->ctr4);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_package_PrimaryKerberosBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_package_PrimaryKerberosCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_package_PrimaryKerberosCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_package_PrimaryKerberosBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->flags));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryKerberosBlob(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosBlob *r)
-{
-	ndr_print_struct(ndr, name, "package_PrimaryKerberosBlob");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "version", r->version);
-	ndr_print_uint16(ndr, "flags", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->flags);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_package_PrimaryKerberosCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_package_PrimaryCLEARTEXTBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryCLEARTEXTBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->cleartext));
-			ndr->flags = _flags_save_string;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_package_PrimaryCLEARTEXTBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryCLEARTEXTBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->cleartext));
-			ndr->flags = _flags_save_string;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryCLEARTEXTBlob(struct ndr_print *ndr, const char *name, const struct package_PrimaryCLEARTEXTBlob *r)
-{
-	ndr_print_struct(ndr, name, "package_PrimaryCLEARTEXTBlob");
-	ndr->depth++;
-	ndr_print_string(ndr, "cleartext", r->cleartext);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_package_PrimaryWDigestHash(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryWDigestHash *r)
-{
-	{
-		uint32_t _flags_save_STRUCT = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		if (ndr_flags & NDR_SCALARS) {
-			NDR_CHECK(ndr_push_align(ndr, 1));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->hash, 16));
-		}
-		if (ndr_flags & NDR_BUFFERS) {
-		}
-		ndr->flags = _flags_save_STRUCT;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_package_PrimaryWDigestHash(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryWDigestHash *r)
-{
-	{
-		uint32_t _flags_save_STRUCT = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		if (ndr_flags & NDR_SCALARS) {
-			NDR_CHECK(ndr_pull_align(ndr, 1));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->hash, 16));
-		}
-		if (ndr_flags & NDR_BUFFERS) {
-		}
-		ndr->flags = _flags_save_STRUCT;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryWDigestHash(struct ndr_print *ndr, const char *name, const struct package_PrimaryWDigestHash *r)
-{
-	ndr_print_struct(ndr, name, "package_PrimaryWDigestHash");
-	{
-		uint32_t _flags_save_STRUCT = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		ndr->depth++;
-		ndr_print_array_uint8(ndr, "hash", r->hash, 16);
-		ndr->depth--;
-		ndr->flags = _flags_save_STRUCT;
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_package_PrimaryWDigestBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryWDigestBlob *r)
-{
-	uint32_t cntr_hashes_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 0x31));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, 0x01));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->num_hashes));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, 0));
-		for (cntr_hashes_0 = 0; cntr_hashes_0 < r->num_hashes; cntr_hashes_0++) {
-			NDR_CHECK(ndr_push_package_PrimaryWDigestHash(ndr, NDR_SCALARS, &r->hashes[cntr_hashes_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_package_PrimaryWDigestBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryWDigestBlob *r)
-{
-	uint32_t cntr_hashes_0;
-	TALLOC_CTX *_mem_save_hashes_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->num_hashes));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
-		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->uuknown4));
-		NDR_PULL_ALLOC_N(ndr, r->hashes, r->num_hashes);
-		_mem_save_hashes_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->hashes, 0);
-		for (cntr_hashes_0 = 0; cntr_hashes_0 < r->num_hashes; cntr_hashes_0++) {
-			NDR_CHECK(ndr_pull_package_PrimaryWDigestHash(ndr, NDR_SCALARS, &r->hashes[cntr_hashes_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hashes_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_package_PrimaryWDigestBlob(struct ndr_print *ndr, const char *name, const struct package_PrimaryWDigestBlob *r)
-{
-	uint32_t cntr_hashes_0;
-	ndr_print_struct(ndr, name, "package_PrimaryWDigestBlob");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "unknown1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0x31:r->unknown1);
-	ndr_print_uint8(ndr, "unknown2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0x01:r->unknown2);
-	ndr_print_uint8(ndr, "num_hashes", r->num_hashes);
-	ndr_print_uint32(ndr, "unknown3", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->unknown3);
-	ndr_print_udlong(ndr, "uuknown4", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->uuknown4);
-	ndr->print(ndr, "%s: ARRAY(%d)", "hashes", (int)r->num_hashes);
-	ndr->depth++;
-	for (cntr_hashes_0=0;cntr_hashes_0<r->num_hashes;cntr_hashes_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_hashes_0) != -1) {
-			ndr_print_package_PrimaryWDigestHash(ndr, "hashes", &r->hashes[cntr_hashes_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_trustAuthInOutSecret1(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutSecret1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->value));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_trustAuthInOutSecret1(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutSecret1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->value));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutSecret1(struct ndr_print *ndr, const char *name, const struct trustAuthInOutSecret1 *r)
-{
-	ndr_print_struct(ndr, name, "trustAuthInOutSecret1");
-	ndr->depth++;
-	ndr_print_NTTIME(ndr, "time1", r->time1);
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_DATA_BLOB(ndr, "value", r->value);
-	ndr_print_DATA_BLOB(ndr, "_pad", r->_pad);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_trustAuthInOutCtr1(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutCtr1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value1));
-		NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value2));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->value1) {
-			NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value1));
-			NDR_CHECK(ndr_push_trustAuthInOutSecret1(ndr, NDR_SCALARS, r->value1));
-		}
-		if (r->value2) {
-			NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value2));
-			NDR_CHECK(ndr_push_trustAuthInOutSecret1(ndr, NDR_SCALARS, r->value2));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_trustAuthInOutCtr1(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutCtr1 *r)
-{
-	uint32_t _ptr_value1;
-	TALLOC_CTX *_mem_save_value1_0;
-	uint32_t _ptr_value2;
-	TALLOC_CTX *_mem_save_value2_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value1));
-		if (_ptr_value1) {
-			NDR_PULL_ALLOC(ndr, r->value1);
-			NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value1, _ptr_value1));
-		} else {
-			r->value1 = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value2));
-		if (_ptr_value2) {
-			NDR_PULL_ALLOC(ndr, r->value2);
-			NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value2, _ptr_value2));
-		} else {
-			r->value2 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->value1) {
-			uint32_t _relative_save_offset;
-			_relative_save_offset = ndr->offset;
-			NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value1));
-			_mem_save_value1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->value1, 0);
-			NDR_CHECK(ndr_pull_trustAuthInOutSecret1(ndr, NDR_SCALARS, r->value1));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value1_0, 0);
-			ndr->offset = _relative_save_offset;
-		}
-		if (r->value2) {
-			uint32_t _relative_save_offset;
-			_relative_save_offset = ndr->offset;
-			NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value2));
-			_mem_save_value2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->value2, 0);
-			NDR_CHECK(ndr_pull_trustAuthInOutSecret1(ndr, NDR_SCALARS, r->value2));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value2_0, 0);
-			ndr->offset = _relative_save_offset;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutCtr1(struct ndr_print *ndr, const char *name, const struct trustAuthInOutCtr1 *r)
-{
-	ndr_print_struct(ndr, name, "trustAuthInOutCtr1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "value1", r->value1);
-	ndr->depth++;
-	if (r->value1) {
-		ndr_print_trustAuthInOutSecret1(ndr, "value1", r->value1);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "value2", r->value2);
-	ndr->depth++;
-	if (r->value2) {
-		ndr_print_trustAuthInOutSecret1(ndr, "value2", r->value2);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_trustAuthInOutSecret2V1(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutSecret2V1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->value));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_trustAuthInOutSecret2V1(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutSecret2V1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->value));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutSecret2V1(struct ndr_print *ndr, const char *name, const struct trustAuthInOutSecret2V1 *r)
-{
-	ndr_print_struct(ndr, name, "trustAuthInOutSecret2V1");
-	ndr->depth++;
-	ndr_print_NTTIME(ndr, "time1", r->time1);
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_DATA_BLOB(ndr, "value", r->value);
-	ndr_print_NTTIME(ndr, "time2", r->time2);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_uint32(ndr, "unknown3", r->unknown3);
-	ndr_print_uint32(ndr, "unknown4", r->unknown4);
-	ndr_print_DATA_BLOB(ndr, "_pad", r->_pad);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_trustAuthInOutSecret2V2(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutSecret2V2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->value));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_trustAuthInOutSecret2V2(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutSecret2V2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->value));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutSecret2V2(struct ndr_print *ndr, const char *name, const struct trustAuthInOutSecret2V2 *r)
-{
-	ndr_print_struct(ndr, name, "trustAuthInOutSecret2V2");
-	ndr->depth++;
-	ndr_print_NTTIME(ndr, "time1", r->time1);
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_DATA_BLOB(ndr, "value", r->value);
-	ndr_print_NTTIME(ndr, "time2", r->time2);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_uint32(ndr, "unknown3", r->unknown3);
-	ndr_print_DATA_BLOB(ndr, "_pad", r->_pad);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_trustAuthInOutCtr2(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutCtr2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value1));
-		NDR_CHECK(ndr_push_relative_ptr1(ndr, r->value2));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->value1) {
-			NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value1));
-			NDR_CHECK(ndr_push_trustAuthInOutSecret2V1(ndr, NDR_SCALARS, r->value1));
-		}
-		if (r->value2) {
-			NDR_CHECK(ndr_push_relative_ptr2(ndr, r->value2));
-			NDR_CHECK(ndr_push_trustAuthInOutSecret2V2(ndr, NDR_SCALARS, r->value2));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_trustAuthInOutCtr2(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutCtr2 *r)
-{
-	uint32_t _ptr_value1;
-	TALLOC_CTX *_mem_save_value1_0;
-	uint32_t _ptr_value2;
-	TALLOC_CTX *_mem_save_value2_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value1));
-		if (_ptr_value1) {
-			NDR_PULL_ALLOC(ndr, r->value1);
-			NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value1, _ptr_value1));
-		} else {
-			r->value1 = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value2));
-		if (_ptr_value2) {
-			NDR_PULL_ALLOC(ndr, r->value2);
-			NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->value2, _ptr_value2));
-		} else {
-			r->value2 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->value1) {
-			uint32_t _relative_save_offset;
-			_relative_save_offset = ndr->offset;
-			NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value1));
-			_mem_save_value1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->value1, 0);
-			NDR_CHECK(ndr_pull_trustAuthInOutSecret2V1(ndr, NDR_SCALARS, r->value1));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value1_0, 0);
-			ndr->offset = _relative_save_offset;
-		}
-		if (r->value2) {
-			uint32_t _relative_save_offset;
-			_relative_save_offset = ndr->offset;
-			NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->value2));
-			_mem_save_value2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->value2, 0);
-			NDR_CHECK(ndr_pull_trustAuthInOutSecret2V2(ndr, NDR_SCALARS, r->value2));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value2_0, 0);
-			ndr->offset = _relative_save_offset;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutCtr2(struct ndr_print *ndr, const char *name, const struct trustAuthInOutCtr2 *r)
-{
-	ndr_print_struct(ndr, name, "trustAuthInOutCtr2");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "value1", r->value1);
-	ndr->depth++;
-	if (r->value1) {
-		ndr_print_trustAuthInOutSecret2V1(ndr, "value1", r->value1);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "value2", r->value2);
-	ndr->depth++;
-	if (r->value2) {
-		ndr_print_trustAuthInOutSecret2V2(ndr, "value2", r->value2);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_trustAuthInOutCtr(struct ndr_push *ndr, int ndr_flags, const union trustAuthInOutCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_trustAuthInOutCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_push_trustAuthInOutCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_trustAuthInOutCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			case 2:
-				NDR_CHECK(ndr_push_trustAuthInOutCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_trustAuthInOutCtr(struct ndr_pull *ndr, int ndr_flags, union trustAuthInOutCtr *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_trustAuthInOutCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_pull_trustAuthInOutCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_trustAuthInOutCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			case 2:
-				NDR_CHECK(ndr_pull_trustAuthInOutCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutCtr(struct ndr_print *ndr, const char *name, const union trustAuthInOutCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "trustAuthInOutCtr");
-	switch (level) {
-		case 1:
-			ndr_print_trustAuthInOutCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		case 2:
-			ndr_print_trustAuthInOutCtr2(ndr, "ctr2", &r->ctr2);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_trustAuthInOutBlob(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_push_trustAuthInOutCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_trustAuthInOutCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_trustAuthInOutBlob(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutBlob *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
-		NDR_CHECK(ndr_pull_trustAuthInOutCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_trustAuthInOutCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_trustAuthInOutBlob(struct ndr_print *ndr, const char *name, const struct trustAuthInOutBlob *r)
-{
-	ndr_print_struct(ndr, name, "trustAuthInOutBlob");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
-	ndr_print_trustAuthInOutCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_DsCompressedChunk(struct ndr_push *ndr, int ndr_flags, const struct DsCompressedChunk *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->marker));
-		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_DsCompressedChunk(struct ndr_pull *ndr, int ndr_flags, struct DsCompressedChunk *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->marker));
-		NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DsCompressedChunk(struct ndr_print *ndr, const char *name, const struct DsCompressedChunk *r)
-{
-	ndr_print_struct(ndr, name, "DsCompressedChunk");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "marker", r->marker);
-	ndr_print_DATA_BLOB(ndr, "data", r->data);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_DsCompressedBlob(struct ndr_push *ndr, int ndr_flags, const struct DsCompressedBlob *r)
-{
-	uint32_t cntr_chunks_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		for (cntr_chunks_0 = 0; cntr_chunks_0 < 5; cntr_chunks_0++) {
-			NDR_CHECK(ndr_push_DsCompressedChunk(ndr, NDR_SCALARS, &r->chunks[cntr_chunks_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_DsCompressedBlob(struct ndr_pull *ndr, int ndr_flags, struct DsCompressedBlob *r)
-{
-	uint32_t cntr_chunks_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		for (cntr_chunks_0 = 0; cntr_chunks_0 < 5; cntr_chunks_0++) {
-			NDR_CHECK(ndr_pull_DsCompressedChunk(ndr, NDR_SCALARS, &r->chunks[cntr_chunks_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DsCompressedBlob(struct ndr_print *ndr, const char *name, const struct DsCompressedBlob *r)
-{
-	uint32_t cntr_chunks_0;
-	ndr_print_struct(ndr, name, "DsCompressedBlob");
-	ndr->depth++;
-	ndr->print(ndr, "%s: ARRAY(%d)", "chunks", (int)5);
-	ndr->depth++;
-	for (cntr_chunks_0=0;cntr_chunks_0<5;cntr_chunks_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_chunks_0) != -1) {
-			ndr_print_DsCompressedChunk(ndr, "chunks", &r->chunks[cntr_chunks_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_replPropertyMetaData(struct ndr_push *ndr, int flags, const struct decode_replPropertyMetaData *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_replPropertyMetaDataBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_replPropertyMetaData(struct ndr_pull *ndr, int flags, struct decode_replPropertyMetaData *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_replPropertyMetaDataBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_replPropertyMetaData(struct ndr_print *ndr, const char *name, int flags, const struct decode_replPropertyMetaData *r)
-{
-	ndr_print_struct(ndr, name, "decode_replPropertyMetaData");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_replPropertyMetaData");
-		ndr->depth++;
-		ndr_print_replPropertyMetaDataBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_replPropertyMetaData");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_replUpToDateVector(struct ndr_push *ndr, int flags, const struct decode_replUpToDateVector *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_replUpToDateVectorBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_replUpToDateVector(struct ndr_pull *ndr, int flags, struct decode_replUpToDateVector *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_replUpToDateVectorBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_replUpToDateVector(struct ndr_print *ndr, const char *name, int flags, const struct decode_replUpToDateVector *r)
-{
-	ndr_print_struct(ndr, name, "decode_replUpToDateVector");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_replUpToDateVector");
-		ndr->depth++;
-		ndr_print_replUpToDateVectorBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_replUpToDateVector");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_repsFromTo(struct ndr_push *ndr, int flags, const struct decode_repsFromTo *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_repsFromToBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_repsFromTo(struct ndr_pull *ndr, int flags, struct decode_repsFromTo *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_repsFromToBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_repsFromTo(struct ndr_print *ndr, const char *name, int flags, const struct decode_repsFromTo *r)
-{
-	ndr_print_struct(ndr, name, "decode_repsFromTo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_repsFromTo");
-		ndr->depth++;
-		ndr_print_repsFromToBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_repsFromTo");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_partialAttributeSet(struct ndr_push *ndr, int flags, const struct decode_partialAttributeSet *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_partialAttributeSetBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_partialAttributeSet(struct ndr_pull *ndr, int flags, struct decode_partialAttributeSet *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_partialAttributeSetBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_partialAttributeSet(struct ndr_print *ndr, const char *name, int flags, const struct decode_partialAttributeSet *r)
-{
-	ndr_print_struct(ndr, name, "decode_partialAttributeSet");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_partialAttributeSet");
-		ndr->depth++;
-		ndr_print_partialAttributeSetBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_partialAttributeSet");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_prefixMap(struct ndr_push *ndr, int flags, const struct decode_prefixMap *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_prefixMapBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_prefixMap(struct ndr_pull *ndr, int flags, struct decode_prefixMap *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_prefixMapBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_prefixMap(struct ndr_print *ndr, const char *name, int flags, const struct decode_prefixMap *r)
-{
-	ndr_print_struct(ndr, name, "decode_prefixMap");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_prefixMap");
-		ndr->depth++;
-		ndr_print_prefixMapBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_prefixMap");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_ldapControlDirSync(struct ndr_push *ndr, int flags, const struct decode_ldapControlDirSync *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_ldapControlDirSyncCookie(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.cookie));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_ldapControlDirSync(struct ndr_pull *ndr, int flags, struct decode_ldapControlDirSync *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_ldapControlDirSyncCookie(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.cookie));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_ldapControlDirSync(struct ndr_print *ndr, const char *name, int flags, const struct decode_ldapControlDirSync *r)
-{
-	ndr_print_struct(ndr, name, "decode_ldapControlDirSync");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_ldapControlDirSync");
-		ndr->depth++;
-		ndr_print_ldapControlDirSyncCookie(ndr, "cookie", &r->in.cookie);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_ldapControlDirSync");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_supplementalCredentials(struct ndr_push *ndr, int flags, const struct decode_supplementalCredentials *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_supplementalCredentialsBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_supplementalCredentials(struct ndr_pull *ndr, int flags, struct decode_supplementalCredentials *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_supplementalCredentialsBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_supplementalCredentials(struct ndr_print *ndr, const char *name, int flags, const struct decode_supplementalCredentials *r)
-{
-	ndr_print_struct(ndr, name, "decode_supplementalCredentials");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_supplementalCredentials");
-		ndr->depth++;
-		ndr_print_supplementalCredentialsBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_supplementalCredentials");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_Packages(struct ndr_push *ndr, int flags, const struct decode_Packages *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_package_PackagesBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_Packages(struct ndr_pull *ndr, int flags, struct decode_Packages *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_package_PackagesBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_Packages(struct ndr_print *ndr, const char *name, int flags, const struct decode_Packages *r)
-{
-	ndr_print_struct(ndr, name, "decode_Packages");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_Packages");
-		ndr->depth++;
-		ndr_print_package_PackagesBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_Packages");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_PrimaryKerberos(struct ndr_push *ndr, int flags, const struct decode_PrimaryKerberos *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_package_PrimaryKerberosBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_PrimaryKerberos(struct ndr_pull *ndr, int flags, struct decode_PrimaryKerberos *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_package_PrimaryKerberosBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_PrimaryKerberos(struct ndr_print *ndr, const char *name, int flags, const struct decode_PrimaryKerberos *r)
-{
-	ndr_print_struct(ndr, name, "decode_PrimaryKerberos");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_PrimaryKerberos");
-		ndr->depth++;
-		ndr_print_package_PrimaryKerberosBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_PrimaryKerberos");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_PrimaryCLEARTEXT(struct ndr_push *ndr, int flags, const struct decode_PrimaryCLEARTEXT *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_package_PrimaryCLEARTEXTBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_PrimaryCLEARTEXT(struct ndr_pull *ndr, int flags, struct decode_PrimaryCLEARTEXT *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_package_PrimaryCLEARTEXTBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_PrimaryCLEARTEXT(struct ndr_print *ndr, const char *name, int flags, const struct decode_PrimaryCLEARTEXT *r)
-{
-	ndr_print_struct(ndr, name, "decode_PrimaryCLEARTEXT");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_PrimaryCLEARTEXT");
-		ndr->depth++;
-		ndr_print_package_PrimaryCLEARTEXTBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_PrimaryCLEARTEXT");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_PrimaryWDigest(struct ndr_push *ndr, int flags, const struct decode_PrimaryWDigest *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_package_PrimaryWDigestBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_PrimaryWDigest(struct ndr_pull *ndr, int flags, struct decode_PrimaryWDigest *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_package_PrimaryWDigestBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_PrimaryWDigest(struct ndr_print *ndr, const char *name, int flags, const struct decode_PrimaryWDigest *r)
-{
-	ndr_print_struct(ndr, name, "decode_PrimaryWDigest");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_PrimaryWDigest");
-		ndr->depth++;
-		ndr_print_package_PrimaryWDigestBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_PrimaryWDigest");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_trustAuthInOut(struct ndr_push *ndr, int flags, const struct decode_trustAuthInOut *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_trustAuthInOutBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_trustAuthInOut(struct ndr_pull *ndr, int flags, struct decode_trustAuthInOut *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_trustAuthInOutBlob(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_trustAuthInOut(struct ndr_print *ndr, const char *name, int flags, const struct decode_trustAuthInOut *r)
-{
-	ndr_print_struct(ndr, name, "decode_trustAuthInOut");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_trustAuthInOut");
-		ndr->depth++;
-		ndr_print_trustAuthInOutBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_trustAuthInOut");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_decode_DsCompressed(struct ndr_push *ndr, int flags, const struct decode_DsCompressed *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_DsCompressedBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_decode_DsCompressed(struct ndr_pull *ndr, int flags, struct decode_DsCompressed *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_pull_DsCompressedBlob(ndr, NDR_SCALARS, &r->in.blob));
-	}
-	if (flags & NDR_OUT) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_decode_DsCompressed(struct ndr_print *ndr, const char *name, int flags, const struct decode_DsCompressed *r)
-{
-	ndr_print_struct(ndr, name, "decode_DsCompressed");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "decode_DsCompressed");
-		ndr->depth++;
-		ndr_print_DsCompressedBlob(ndr, "blob", &r->in.blob);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "decode_DsCompressed");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static const struct ndr_interface_call drsblobs_calls[] = {
-	{
-		"decode_replPropertyMetaData",
-		sizeof(struct decode_replPropertyMetaData),
-		(ndr_push_flags_fn_t) ndr_push_decode_replPropertyMetaData,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_replPropertyMetaData,
-		(ndr_print_function_t) ndr_print_decode_replPropertyMetaData,
-		false,
-	},
-	{
-		"decode_replUpToDateVector",
-		sizeof(struct decode_replUpToDateVector),
-		(ndr_push_flags_fn_t) ndr_push_decode_replUpToDateVector,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_replUpToDateVector,
-		(ndr_print_function_t) ndr_print_decode_replUpToDateVector,
-		false,
-	},
-	{
-		"decode_repsFromTo",
-		sizeof(struct decode_repsFromTo),
-		(ndr_push_flags_fn_t) ndr_push_decode_repsFromTo,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_repsFromTo,
-		(ndr_print_function_t) ndr_print_decode_repsFromTo,
-		false,
-	},
-	{
-		"decode_partialAttributeSet",
-		sizeof(struct decode_partialAttributeSet),
-		(ndr_push_flags_fn_t) ndr_push_decode_partialAttributeSet,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_partialAttributeSet,
-		(ndr_print_function_t) ndr_print_decode_partialAttributeSet,
-		false,
-	},
-	{
-		"decode_prefixMap",
-		sizeof(struct decode_prefixMap),
-		(ndr_push_flags_fn_t) ndr_push_decode_prefixMap,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_prefixMap,
-		(ndr_print_function_t) ndr_print_decode_prefixMap,
-		false,
-	},
-	{
-		"decode_ldapControlDirSync",
-		sizeof(struct decode_ldapControlDirSync),
-		(ndr_push_flags_fn_t) ndr_push_decode_ldapControlDirSync,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_ldapControlDirSync,
-		(ndr_print_function_t) ndr_print_decode_ldapControlDirSync,
-		false,
-	},
-	{
-		"decode_supplementalCredentials",
-		sizeof(struct decode_supplementalCredentials),
-		(ndr_push_flags_fn_t) ndr_push_decode_supplementalCredentials,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_supplementalCredentials,
-		(ndr_print_function_t) ndr_print_decode_supplementalCredentials,
-		false,
-	},
-	{
-		"decode_Packages",
-		sizeof(struct decode_Packages),
-		(ndr_push_flags_fn_t) ndr_push_decode_Packages,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_Packages,
-		(ndr_print_function_t) ndr_print_decode_Packages,
-		false,
-	},
-	{
-		"decode_PrimaryKerberos",
-		sizeof(struct decode_PrimaryKerberos),
-		(ndr_push_flags_fn_t) ndr_push_decode_PrimaryKerberos,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_PrimaryKerberos,
-		(ndr_print_function_t) ndr_print_decode_PrimaryKerberos,
-		false,
-	},
-	{
-		"decode_PrimaryCLEARTEXT",
-		sizeof(struct decode_PrimaryCLEARTEXT),
-		(ndr_push_flags_fn_t) ndr_push_decode_PrimaryCLEARTEXT,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_PrimaryCLEARTEXT,
-		(ndr_print_function_t) ndr_print_decode_PrimaryCLEARTEXT,
-		false,
-	},
-	{
-		"decode_PrimaryWDigest",
-		sizeof(struct decode_PrimaryWDigest),
-		(ndr_push_flags_fn_t) ndr_push_decode_PrimaryWDigest,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_PrimaryWDigest,
-		(ndr_print_function_t) ndr_print_decode_PrimaryWDigest,
-		false,
-	},
-	{
-		"decode_trustAuthInOut",
-		sizeof(struct decode_trustAuthInOut),
-		(ndr_push_flags_fn_t) ndr_push_decode_trustAuthInOut,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_trustAuthInOut,
-		(ndr_print_function_t) ndr_print_decode_trustAuthInOut,
-		false,
-	},
-	{
-		"decode_DsCompressed",
-		sizeof(struct decode_DsCompressed),
-		(ndr_push_flags_fn_t) ndr_push_decode_DsCompressed,
-		(ndr_pull_flags_fn_t) ndr_pull_decode_DsCompressed,
-		(ndr_print_function_t) ndr_print_decode_DsCompressed,
-		false,
-	},
-	{ NULL, 0, NULL, NULL, NULL, false }
-};
-
-static const char * const drsblobs_endpoint_strings[] = {
-	"ncacn_np:[\\pipe\\drsblobs]", 
-};
-
-static const struct ndr_interface_string_array drsblobs_endpoints = {
-	.count	= 1,
-	.names	= drsblobs_endpoint_strings
-};
-
-static const char * const drsblobs_authservice_strings[] = {
-	"host", 
-};
-
-static const struct ndr_interface_string_array drsblobs_authservices = {
-	.count	= 1,
-	.names	= drsblobs_authservice_strings
-};
-
-
-const struct ndr_interface_table ndr_table_drsblobs = {
-	.name		= "drsblobs",
-	.syntax_id	= {
-		{0x12345778,0x1234,0xabcd,{0x00,0x01},{0x00,0x00,0x00,0x01}},
-		NDR_DRSBLOBS_VERSION
-	},
-	.helpstring	= NDR_DRSBLOBS_HELPSTRING,
-	.num_calls	= 13,
-	.calls		= drsblobs_calls,
-	.endpoints	= &drsblobs_endpoints,
-	.authservices	= &drsblobs_authservices
-};
-

Deleted: branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_drsblobs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,133 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/ndr/libndr.h"
-#include "librpc/gen_ndr/drsblobs.h"
-
-#ifndef _HEADER_NDR_drsblobs
-#define _HEADER_NDR_drsblobs
-
-#define NDR_DRSBLOBS_UUID "12345778-1234-abcd-0001-00000001"
-#define NDR_DRSBLOBS_VERSION 0.0
-#define NDR_DRSBLOBS_NAME "drsblobs"
-#define NDR_DRSBLOBS_HELPSTRING "Active Directory Replication LDAP Blobs"
-extern const struct ndr_interface_table ndr_table_drsblobs;
-#define NDR_DECODE_REPLPROPERTYMETADATA (0x00)
-
-#define NDR_DECODE_REPLUPTODATEVECTOR (0x01)
-
-#define NDR_DECODE_REPSFROMTO (0x02)
-
-#define NDR_DECODE_PARTIALATTRIBUTESET (0x03)
-
-#define NDR_DECODE_PREFIXMAP (0x04)
-
-#define NDR_DECODE_LDAPCONTROLDIRSYNC (0x05)
-
-#define NDR_DECODE_SUPPLEMENTALCREDENTIALS (0x06)
-
-#define NDR_DECODE_PACKAGES (0x07)
-
-#define NDR_DECODE_PRIMARYKERBEROS (0x08)
-
-#define NDR_DECODE_PRIMARYCLEARTEXT (0x09)
-
-#define NDR_DECODE_PRIMARYWDIGEST (0x0a)
-
-#define NDR_DECODE_TRUSTAUTHINOUT (0x0b)
-
-#define NDR_DECODE_DSCOMPRESSED (0x0c)
-
-#define NDR_DRSBLOBS_CALL_COUNT (13)
-void ndr_print_replPropertyMetaData1(struct ndr_print *ndr, const char *name, const struct replPropertyMetaData1 *r);
-void ndr_print_replPropertyMetaDataCtr1(struct ndr_print *ndr, const char *name, const struct replPropertyMetaDataCtr1 *r);
-void ndr_print_replPropertyMetaDataCtr(struct ndr_print *ndr, const char *name, const union replPropertyMetaDataCtr *r);
-enum ndr_err_code ndr_push_replPropertyMetaDataBlob(struct ndr_push *ndr, int ndr_flags, const struct replPropertyMetaDataBlob *r);
-enum ndr_err_code ndr_pull_replPropertyMetaDataBlob(struct ndr_pull *ndr, int ndr_flags, struct replPropertyMetaDataBlob *r);
-void ndr_print_replPropertyMetaDataBlob(struct ndr_print *ndr, const char *name, const struct replPropertyMetaDataBlob *r);
-void ndr_print_replUpToDateVectorCtr1(struct ndr_print *ndr, const char *name, const struct replUpToDateVectorCtr1 *r);
-void ndr_print_replUpToDateVectorCtr2(struct ndr_print *ndr, const char *name, const struct replUpToDateVectorCtr2 *r);
-void ndr_print_replUpToDateVectorCtr(struct ndr_print *ndr, const char *name, const union replUpToDateVectorCtr *r);
-enum ndr_err_code ndr_push_replUpToDateVectorBlob(struct ndr_push *ndr, int ndr_flags, const struct replUpToDateVectorBlob *r);
-enum ndr_err_code ndr_pull_replUpToDateVectorBlob(struct ndr_pull *ndr, int ndr_flags, struct replUpToDateVectorBlob *r);
-void ndr_print_replUpToDateVectorBlob(struct ndr_print *ndr, const char *name, const struct replUpToDateVectorBlob *r);
-enum ndr_err_code ndr_push_repsFromTo1OtherInfo(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo1OtherInfo *r);
-enum ndr_err_code ndr_pull_repsFromTo1OtherInfo(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo1OtherInfo *r);
-void ndr_print_repsFromTo1OtherInfo(struct ndr_print *ndr, const char *name, const struct repsFromTo1OtherInfo *r);
-size_t ndr_size_repsFromTo1OtherInfo(const struct repsFromTo1OtherInfo *r, int flags);
-enum ndr_err_code ndr_push_repsFromTo1(struct ndr_push *ndr, int ndr_flags, const struct repsFromTo1 *r);
-enum ndr_err_code ndr_pull_repsFromTo1(struct ndr_pull *ndr, int ndr_flags, struct repsFromTo1 *r);
-void ndr_print_repsFromTo1(struct ndr_print *ndr, const char *name, const struct repsFromTo1 *r);
-size_t ndr_size_repsFromTo1(const struct repsFromTo1 *r, int flags);
-void ndr_print_repsFromTo(struct ndr_print *ndr, const char *name, const union repsFromTo *r);
-enum ndr_err_code ndr_push_repsFromToBlob(struct ndr_push *ndr, int ndr_flags, const struct repsFromToBlob *r);
-enum ndr_err_code ndr_pull_repsFromToBlob(struct ndr_pull *ndr, int ndr_flags, struct repsFromToBlob *r);
-void ndr_print_repsFromToBlob(struct ndr_print *ndr, const char *name, const struct repsFromToBlob *r);
-void ndr_print_partialAttributeSetCtr1(struct ndr_print *ndr, const char *name, const struct partialAttributeSetCtr1 *r);
-void ndr_print_partialAttributeSetCtr(struct ndr_print *ndr, const char *name, const union partialAttributeSetCtr *r);
-enum ndr_err_code ndr_push_partialAttributeSetBlob(struct ndr_push *ndr, int ndr_flags, const struct partialAttributeSetBlob *r);
-enum ndr_err_code ndr_pull_partialAttributeSetBlob(struct ndr_pull *ndr, int ndr_flags, struct partialAttributeSetBlob *r);
-void ndr_print_partialAttributeSetBlob(struct ndr_print *ndr, const char *name, const struct partialAttributeSetBlob *r);
-void ndr_print_prefixMapVersion(struct ndr_print *ndr, const char *name, enum prefixMapVersion r);
-void ndr_print_prefixMapCtr(struct ndr_print *ndr, const char *name, const union prefixMapCtr *r);
-enum ndr_err_code ndr_push_prefixMapBlob(struct ndr_push *ndr, int ndr_flags, const struct prefixMapBlob *r);
-enum ndr_err_code ndr_pull_prefixMapBlob(struct ndr_pull *ndr, int ndr_flags, struct prefixMapBlob *r);
-void ndr_print_prefixMapBlob(struct ndr_print *ndr, const char *name, const struct prefixMapBlob *r);
-void ndr_print_ldapControlDirSyncExtra(struct ndr_print *ndr, const char *name, const union ldapControlDirSyncExtra *r);
-void ndr_print_ldapControlDirSyncBlob(struct ndr_print *ndr, const char *name, const struct ldapControlDirSyncBlob *r);
-enum ndr_err_code ndr_push_ldapControlDirSyncCookie(struct ndr_push *ndr, int ndr_flags, const struct ldapControlDirSyncCookie *r);
-enum ndr_err_code ndr_pull_ldapControlDirSyncCookie(struct ndr_pull *ndr, int ndr_flags, struct ldapControlDirSyncCookie *r);
-void ndr_print_ldapControlDirSyncCookie(struct ndr_print *ndr, const char *name, const struct ldapControlDirSyncCookie *r);
-void ndr_print_supplementalCredentialsPackage(struct ndr_print *ndr, const char *name, const struct supplementalCredentialsPackage *r);
-void ndr_print_supplementalCredentialsSignature(struct ndr_print *ndr, const char *name, enum supplementalCredentialsSignature r);
-void ndr_print_supplementalCredentialsSubBlob(struct ndr_print *ndr, const char *name, const struct supplementalCredentialsSubBlob *r);
-enum ndr_err_code ndr_push_supplementalCredentialsBlob(struct ndr_push *ndr, int ndr_flags, const struct supplementalCredentialsBlob *r);
-enum ndr_err_code ndr_pull_supplementalCredentialsBlob(struct ndr_pull *ndr, int ndr_flags, struct supplementalCredentialsBlob *r);
-void ndr_print_supplementalCredentialsBlob(struct ndr_print *ndr, const char *name, const struct supplementalCredentialsBlob *r);
-enum ndr_err_code ndr_push_package_PackagesBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PackagesBlob *r);
-enum ndr_err_code ndr_pull_package_PackagesBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PackagesBlob *r);
-void ndr_print_package_PackagesBlob(struct ndr_print *ndr, const char *name, const struct package_PackagesBlob *r);
-void ndr_print_package_PrimaryKerberosString(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosString *r);
-void ndr_print_package_PrimaryKerberosKey3(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosKey3 *r);
-void ndr_print_package_PrimaryKerberosCtr3(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosCtr3 *r);
-void ndr_print_package_PrimaryKerberosKey4(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosKey4 *r);
-void ndr_print_package_PrimaryKerberosCtr4(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosCtr4 *r);
-void ndr_print_package_PrimaryKerberosCtr(struct ndr_print *ndr, const char *name, const union package_PrimaryKerberosCtr *r);
-enum ndr_err_code ndr_push_package_PrimaryKerberosBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryKerberosBlob *r);
-enum ndr_err_code ndr_pull_package_PrimaryKerberosBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryKerberosBlob *r);
-void ndr_print_package_PrimaryKerberosBlob(struct ndr_print *ndr, const char *name, const struct package_PrimaryKerberosBlob *r);
-enum ndr_err_code ndr_push_package_PrimaryCLEARTEXTBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryCLEARTEXTBlob *r);
-enum ndr_err_code ndr_pull_package_PrimaryCLEARTEXTBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryCLEARTEXTBlob *r);
-void ndr_print_package_PrimaryCLEARTEXTBlob(struct ndr_print *ndr, const char *name, const struct package_PrimaryCLEARTEXTBlob *r);
-void ndr_print_package_PrimaryWDigestHash(struct ndr_print *ndr, const char *name, const struct package_PrimaryWDigestHash *r);
-enum ndr_err_code ndr_push_package_PrimaryWDigestBlob(struct ndr_push *ndr, int ndr_flags, const struct package_PrimaryWDigestBlob *r);
-enum ndr_err_code ndr_pull_package_PrimaryWDigestBlob(struct ndr_pull *ndr, int ndr_flags, struct package_PrimaryWDigestBlob *r);
-void ndr_print_package_PrimaryWDigestBlob(struct ndr_print *ndr, const char *name, const struct package_PrimaryWDigestBlob *r);
-void ndr_print_trustAuthInOutSecret1(struct ndr_print *ndr, const char *name, const struct trustAuthInOutSecret1 *r);
-void ndr_print_trustAuthInOutCtr1(struct ndr_print *ndr, const char *name, const struct trustAuthInOutCtr1 *r);
-void ndr_print_trustAuthInOutSecret2V1(struct ndr_print *ndr, const char *name, const struct trustAuthInOutSecret2V1 *r);
-void ndr_print_trustAuthInOutSecret2V2(struct ndr_print *ndr, const char *name, const struct trustAuthInOutSecret2V2 *r);
-void ndr_print_trustAuthInOutCtr2(struct ndr_print *ndr, const char *name, const struct trustAuthInOutCtr2 *r);
-void ndr_print_trustAuthInOutCtr(struct ndr_print *ndr, const char *name, const union trustAuthInOutCtr *r);
-enum ndr_err_code ndr_push_trustAuthInOutBlob(struct ndr_push *ndr, int ndr_flags, const struct trustAuthInOutBlob *r);
-enum ndr_err_code ndr_pull_trustAuthInOutBlob(struct ndr_pull *ndr, int ndr_flags, struct trustAuthInOutBlob *r);
-void ndr_print_trustAuthInOutBlob(struct ndr_print *ndr, const char *name, const struct trustAuthInOutBlob *r);
-enum ndr_err_code ndr_push_DsCompressedChunk(struct ndr_push *ndr, int ndr_flags, const struct DsCompressedChunk *r);
-enum ndr_err_code ndr_pull_DsCompressedChunk(struct ndr_pull *ndr, int ndr_flags, struct DsCompressedChunk *r);
-void ndr_print_DsCompressedChunk(struct ndr_print *ndr, const char *name, const struct DsCompressedChunk *r);
-enum ndr_err_code ndr_push_DsCompressedBlob(struct ndr_push *ndr, int ndr_flags, const struct DsCompressedBlob *r);
-enum ndr_err_code ndr_pull_DsCompressedBlob(struct ndr_pull *ndr, int ndr_flags, struct DsCompressedBlob *r);
-void ndr_print_DsCompressedBlob(struct ndr_print *ndr, const char *name, const struct DsCompressedBlob *r);
-void ndr_print_decode_replPropertyMetaData(struct ndr_print *ndr, const char *name, int flags, const struct decode_replPropertyMetaData *r);
-void ndr_print_decode_replUpToDateVector(struct ndr_print *ndr, const char *name, int flags, const struct decode_replUpToDateVector *r);
-void ndr_print_decode_repsFromTo(struct ndr_print *ndr, const char *name, int flags, const struct decode_repsFromTo *r);
-void ndr_print_decode_partialAttributeSet(struct ndr_print *ndr, const char *name, int flags, const struct decode_partialAttributeSet *r);
-void ndr_print_decode_prefixMap(struct ndr_print *ndr, const char *name, int flags, const struct decode_prefixMap *r);
-void ndr_print_decode_ldapControlDirSync(struct ndr_print *ndr, const char *name, int flags, const struct decode_ldapControlDirSync *r);
-void ndr_print_decode_supplementalCredentials(struct ndr_print *ndr, const char *name, int flags, const struct decode_supplementalCredentials *r);
-void ndr_print_decode_Packages(struct ndr_print *ndr, const char *name, int flags, const struct decode_Packages *r);
-void ndr_print_decode_PrimaryKerberos(struct ndr_print *ndr, const char *name, int flags, const struct decode_PrimaryKerberos *r);
-void ndr_print_decode_PrimaryCLEARTEXT(struct ndr_print *ndr, const char *name, int flags, const struct decode_PrimaryCLEARTEXT *r);
-void ndr_print_decode_PrimaryWDigest(struct ndr_print *ndr, const char *name, int flags, const struct decode_PrimaryWDigest *r);
-void ndr_print_decode_trustAuthInOut(struct ndr_print *ndr, const char *name, int flags, const struct decode_trustAuthInOut *r);
-void ndr_print_decode_DsCompressed(struct ndr_print *ndr, const char *name, int flags, const struct decode_DsCompressed *r);
-#endif /* _HEADER_NDR_drsblobs */

Deleted: branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,14559 +0,0 @@
-/* parser auto-generated by pidl */
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_drsuapi.h"
-
-#include "librpc/gen_ndr/ndr_security.h"
-#include "librpc/gen_ndr/ndr_misc.h"
-#include "librpc/gen_ndr/ndr_samr.h"
-#include "librpc/ndr/ndr_compression.h"
-static enum ndr_err_code ndr_push_drsuapi_SupportedExtensions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_SupportedExtensions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_SupportedExtensions(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_BASE", DRSUAPI_SUPPORTED_EXTENSION_BASE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION", DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI", DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2", DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS", DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1", DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION", DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_00000080", DRSUAPI_SUPPORTED_EXTENSION_00000080, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE", DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2", DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION", DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2", DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD", DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND", DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO", DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION", DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01", DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP", DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY", DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3", DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_00100000", DRSUAPI_SUPPORTED_EXTENSION_00100000, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2", DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6", DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS", DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8", DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5", DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6", DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3", DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7", DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT", DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS", DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_20000000", DRSUAPI_SUPPORTED_EXTENSION_20000000, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_40000000", DRSUAPI_SUPPORTED_EXTENSION_40000000, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_80000000", DRSUAPI_SUPPORTED_EXTENSION_80000000, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_SupportedExtensionsExt(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_SupportedExtensionsExt(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_SupportedExtensionsExt(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_ADAM", DRSUAPI_SUPPORTED_EXTENSION_ADAM, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2", DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsBindInfo24(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsBindInfo24 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_SupportedExtensions(ndr, NDR_SCALARS, r->supported_extensions));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsBindInfo24(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsBindInfo24 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_SupportedExtensions(ndr, NDR_SCALARS, &r->supported_extensions));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBindInfo24(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfo24 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsBindInfo24");
-	ndr->depth++;
-	ndr_print_drsuapi_SupportedExtensions(ndr, "supported_extensions", r->supported_extensions);
-	ndr_print_GUID(ndr, "site_guid", &r->site_guid);
-	ndr_print_uint32(ndr, "pid", r->pid);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsBindInfo28(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsBindInfo28 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_SupportedExtensions(ndr, NDR_SCALARS, r->supported_extensions));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->repl_epoch));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsBindInfo28(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsBindInfo28 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_SupportedExtensions(ndr, NDR_SCALARS, &r->supported_extensions));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->repl_epoch));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBindInfo28(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfo28 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsBindInfo28");
-	ndr->depth++;
-	ndr_print_drsuapi_SupportedExtensions(ndr, "supported_extensions", r->supported_extensions);
-	ndr_print_GUID(ndr, "site_guid", &r->site_guid);
-	ndr_print_uint32(ndr, "pid", r->pid);
-	ndr_print_uint32(ndr, "repl_epoch", r->repl_epoch);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsBindInfo48(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsBindInfo48 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_SupportedExtensions(ndr, NDR_SCALARS, r->supported_extensions));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->repl_epoch));
-		NDR_CHECK(ndr_push_drsuapi_SupportedExtensionsExt(ndr, NDR_SCALARS, r->supported_extensions_ext));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->config_dn_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsBindInfo48(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsBindInfo48 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_SupportedExtensions(ndr, NDR_SCALARS, &r->supported_extensions));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->repl_epoch));
-		NDR_CHECK(ndr_pull_drsuapi_SupportedExtensionsExt(ndr, NDR_SCALARS, &r->supported_extensions_ext));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->config_dn_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBindInfo48(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfo48 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsBindInfo48");
-	ndr->depth++;
-	ndr_print_drsuapi_SupportedExtensions(ndr, "supported_extensions", r->supported_extensions);
-	ndr_print_GUID(ndr, "site_guid", &r->site_guid);
-	ndr_print_uint32(ndr, "pid", r->pid);
-	ndr_print_uint32(ndr, "repl_epoch", r->repl_epoch);
-	ndr_print_drsuapi_SupportedExtensionsExt(ndr, "supported_extensions_ext", r->supported_extensions_ext);
-	ndr_print_GUID(ndr, "config_dn_guid", &r->config_dn_guid);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsBindInfoFallBack(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsBindInfoFallBack *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->info));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsBindInfoFallBack(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsBindInfoFallBack *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->info));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBindInfoFallBack(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfoFallBack *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsBindInfoFallBack");
-	ndr->depth++;
-	ndr_print_DATA_BLOB(ndr, "info", r->info);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsBindInfo(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsBindInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 24: {
-				{
-					struct ndr_push *_ndr_info24;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info24, 4, -1));
-					NDR_CHECK(ndr_push_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info24, 4, -1));
-				}
-			break; }
-
-			case 28: {
-				{
-					struct ndr_push *_ndr_info28;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info28, 4, -1));
-					NDR_CHECK(ndr_push_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info28, 4, -1));
-				}
-			break; }
-
-			case 48: {
-				{
-					struct ndr_push *_ndr_info48;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info48, 4, -1));
-					NDR_CHECK(ndr_push_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info48, 4, -1));
-				}
-			break; }
-
-			default: {
-				{
-					struct ndr_push *_ndr_FallBack;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_FallBack, 4, -1));
-					NDR_CHECK(ndr_push_drsuapi_DsBindInfoFallBack(_ndr_FallBack, NDR_SCALARS, &r->FallBack));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_FallBack, 4, -1));
-				}
-			break; }
-
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 24:
-			break;
-
-			case 28:
-			break;
-
-			case 48:
-			break;
-
-			default:
-			break;
-
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsBindInfo(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsBindInfo *r)
-{
-	int level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		switch (level) {
-			case 24: {
-				{
-					struct ndr_pull *_ndr_info24;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info24, 4, -1));
-					NDR_CHECK(ndr_pull_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info24, 4, -1));
-				}
-			break; }
-
-			case 28: {
-				{
-					struct ndr_pull *_ndr_info28;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info28, 4, -1));
-					NDR_CHECK(ndr_pull_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info28, 4, -1));
-				}
-			break; }
-
-			case 48: {
-				{
-					struct ndr_pull *_ndr_info48;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info48, 4, -1));
-					NDR_CHECK(ndr_pull_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info48, 4, -1));
-				}
-			break; }
-
-			default: {
-				{
-					struct ndr_pull *_ndr_FallBack;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_FallBack, 4, -1));
-					NDR_CHECK(ndr_pull_drsuapi_DsBindInfoFallBack(_ndr_FallBack, NDR_SCALARS, &r->FallBack));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_FallBack, 4, -1));
-				}
-			break; }
-
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 24:
-			break;
-
-			case 28:
-			break;
-
-			case 48:
-			break;
-
-			default:
-			break;
-
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBindInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsBindInfo *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsBindInfo");
-	switch (level) {
-		case 24:
-			ndr_print_drsuapi_DsBindInfo24(ndr, "info24", &r->info24);
-		break;
-
-		case 28:
-			ndr_print_drsuapi_DsBindInfo28(ndr, "info28", &r->info28);
-		break;
-
-		case 48:
-			ndr_print_drsuapi_DsBindInfo48(ndr, "info48", &r->info48);
-		break;
-
-		default:
-			ndr_print_drsuapi_DsBindInfoFallBack(ndr, "FallBack", &r->FallBack);
-		break;
-
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsBindInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsBindInfoCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->length));
-		NDR_CHECK(ndr_push_drsuapi_DsBindInfo(ndr, NDR_SCALARS, &r->info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsBindInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsBindInfoCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
-		if (r->length < 1 || r->length > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->length));
-		NDR_CHECK(ndr_pull_drsuapi_DsBindInfo(ndr, NDR_SCALARS, &r->info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBindInfoCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfoCtr *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsBindInfoCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "length", r->length);
-	ndr_print_set_switch_value(ndr, &r->info, r->length);
-	ndr_print_drsuapi_DsBindInfo(ndr, "info", &r->info);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m(r->dn) + 1));
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags) - 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_dom_sid28(&r->sid, ndr->flags)));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m(r->dn)));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dn, strlen_m(r->dn) + 1, sizeof(uint16_t), CH_UTF16));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->dn));
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_sid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_dn));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dn, ndr_get_array_size(ndr, &r->dn), sizeof(uint16_t), CH_UTF16));
-		if (r->dn) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->dn, r->__ndr_size_dn + 1));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjectIdentifier(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectIdentifier");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags) - 4:r->__ndr_size);
-	ndr_print_uint32(ndr, "__ndr_size_sid", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dom_sid28(&r->sid, ndr->flags):r->__ndr_size_sid);
-	ndr_print_GUID(ndr, "guid", &r->guid);
-	ndr_print_dom_sid28(ndr, "sid", &r->sid);
-	ndr_print_uint32(ndr, "__ndr_size_dn", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->dn):r->__ndr_size_dn);
-	ndr_print_string(ndr, "dn", r->dn);
-	ndr->depth--;
-}
-
-_PUBLIC_ size_t ndr_size_drsuapi_DsReplicaObjectIdentifier(const struct drsuapi_DsReplicaObjectIdentifier *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier);
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaSyncOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaSyncOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaSyncOptions(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION", DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_WRITEABLE", DRSUAPI_DS_REPLICA_SYNC_WRITEABLE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_PERIODIC", DRSUAPI_DS_REPLICA_SYNC_PERIODIC, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING", DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES", DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_FULL", DRSUAPI_DS_REPLICA_SYNC_FULL, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_URGENT", DRSUAPI_DS_REPLICA_SYNC_URGENT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD", DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_FORCE", DRSUAPI_DS_REPLICA_SYNC_FORCE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE", DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED", DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_TWO_WAY", DRSUAPI_DS_REPLICA_SYNC_TWO_WAY, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY", DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_INITIAL", DRSUAPI_DS_REPLICA_SYNC_INITIAL, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION", DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_ABANDONED", DRSUAPI_DS_REPLICA_SYNC_ABANDONED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS", DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET", DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_REQUEUE", DRSUAPI_DS_REPLICA_SYNC_REQUEUE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION", DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA", DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_CRITICAL", DRSUAPI_DS_REPLICA_SYNC_CRITICAL, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS", DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_SYNC_PREEMPTED", DRSUAPI_DS_REPLICA_SYNC_PREEMPTED, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaSyncRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaSyncRequest1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->naming_context));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_guid));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-			NDR_CHECK(ndr_push_unique_ptr(ndr, r->other_info));
-			ndr->flags = _flags_save_string;
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaSyncOptions(ndr, NDR_SCALARS, r->options));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-			if (r->other_info) {
-				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->other_info));
-			}
-			ndr->flags = _flags_save_string;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaSyncRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaSyncRequest1 *r)
-{
-	uint32_t _ptr_naming_context;
-	TALLOC_CTX *_mem_save_naming_context_0;
-	uint32_t _ptr_other_info;
-	TALLOC_CTX *_mem_save_other_info_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_naming_context));
-		if (_ptr_naming_context) {
-			NDR_PULL_ALLOC(ndr, r->naming_context);
-		} else {
-			r->naming_context = NULL;
-		}
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_guid));
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_other_info));
-			if (_ptr_other_info) {
-				NDR_PULL_ALLOC(ndr, r->other_info);
-			} else {
-				r->other_info = NULL;
-			}
-			ndr->flags = _flags_save_string;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaSyncOptions(ndr, NDR_SCALARS, &r->options));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context) {
-			_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->naming_context, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_0, 0);
-		}
-		{
-			uint32_t _flags_save_string = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-			if (r->other_info) {
-				_mem_save_other_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, r->other_info, 0);
-				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->other_info));
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_other_info_0, 0);
-			}
-			ndr->flags = _flags_save_string;
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaSyncRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaSyncRequest1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaSyncRequest1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "naming_context", r->naming_context);
-	ndr->depth++;
-	if (r->naming_context) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "naming_context", r->naming_context);
-	}
-	ndr->depth--;
-	ndr_print_GUID(ndr, "source_dsa_guid", &r->source_dsa_guid);
-	ndr_print_ptr(ndr, "other_info", r->other_info);
-	ndr->depth++;
-	if (r->other_info) {
-		ndr_print_string(ndr, "other_info", r->other_info);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaSyncOptions(ndr, "options", r->options);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaSyncRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsReplicaSyncRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaSyncRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaSyncRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaSyncRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsReplicaSyncRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaSyncRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaSyncRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaSyncRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaSyncRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsReplicaSyncRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsReplicaSyncRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaHighWaterMark(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaHighWaterMark *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->tmp_highest_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->reserved_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->highest_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaHighWaterMark(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaHighWaterMark *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->tmp_highest_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->reserved_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->highest_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaHighWaterMark(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaHighWaterMark *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaHighWaterMark");
-	ndr->depth++;
-	ndr_print_hyper(ndr, "tmp_highest_usn", r->tmp_highest_usn);
-	ndr_print_hyper(ndr, "reserved_usn", r->reserved_usn);
-	ndr_print_hyper(ndr, "highest_usn", r->highest_usn);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->highest_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->highest_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursor(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursor");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_hyper(ndr, "highest_usn", r->highest_usn);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursorCtrEx(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursorCtrEx *r)
-{
-	uint32_t cntr_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursorCtrEx(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursorCtrEx *r)
-{
-	uint32_t cntr_cursors_0;
-	TALLOC_CTX *_mem_save_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->cursors));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 0x100000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
-		NDR_PULL_ALLOC_N(ndr, r->cursors, ndr_get_array_size(ndr, &r->cursors));
-		_mem_save_cursors_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->cursors, 0);
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0);
-		if (r->cursors) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cursors, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursorCtrEx(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursorCtrEx *r)
-{
-	uint32_t cntr_cursors_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursorCtrEx");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->version);
-	ndr_print_uint32(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved2);
-	ndr->print(ndr, "%s: ARRAY(%d)", "cursors", (int)r->count);
-	ndr->depth++;
-	for (cntr_cursors_0=0;cntr_cursors_0<r->count;cntr_cursors_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_cursors_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor(ndr, "cursors", &r->cursors[cntr_cursors_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaNeighbourFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaNeighbourFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaNeighbourFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE", DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP", DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS", DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_USE_ASYNC_INTERSIDE_TRANSPORT", DRSUAPI_DS_REPLICA_NEIGHBOUR_USE_ASYNC_INTERSIDE_TRANSPORT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_TWO_WAY_SYNC", DRSUAPI_DS_REPLICA_NEIGHBOUR_TWO_WAY_SYNC, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS", DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS", DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_NEXT_PACKET", DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_NEXT_PACKET, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED", DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED", DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS", DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC", DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES", DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS", DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET", DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsExtendedOperation(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsExtendedOperation r)
-{
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsExtendedOperation(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsExtendedOperation *r)
-{
-	uint32_t v;
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-		*r = v;
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsExtendedOperation(struct ndr_print *ndr, const char *name, enum drsuapi_DsExtendedOperation r)
-{
-	const char *val = NULL;
-
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		switch (r) {
-			case DRSUAPI_EXOP_NONE: val = "DRSUAPI_EXOP_NONE"; break;
-			case DRSUAPI_EXOP_FSMO_REQ_ROLE: val = "DRSUAPI_EXOP_FSMO_REQ_ROLE"; break;
-			case DRSUAPI_EXOP_FSMO_RID_ALLOC: val = "DRSUAPI_EXOP_FSMO_RID_ALLOC"; break;
-			case DRSUAPI_EXOP_FSMO_RID_REQ_ROLE: val = "DRSUAPI_EXOP_FSMO_RID_REQ_ROLE"; break;
-			case DRSUAPI_EXOP_FSMO_REQ_PDC: val = "DRSUAPI_EXOP_FSMO_REQ_PDC"; break;
-			case DRSUAPI_EXOP_FSMO_ABANDON_ROLE: val = "DRSUAPI_EXOP_FSMO_ABANDON_ROLE"; break;
-			case DRSUAPI_EXOP_REPL_OBJ: val = "DRSUAPI_EXOP_REPL_OBJ"; break;
-			case DRSUAPI_EXOP_REPL_SECRET: val = "DRSUAPI_EXOP_REPL_SECRET"; break;
-		}
-		ndr_print_enum(ndr, name, "ENUM", val, r);
-		ndr->flags = _flags_save_ENUM;
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsExtendedError(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsExtendedError r)
-{
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsExtendedError(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsExtendedError *r)
-{
-	uint32_t v;
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-		*r = v;
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsExtendedError(struct ndr_print *ndr, const char *name, enum drsuapi_DsExtendedError r)
-{
-	const char *val = NULL;
-
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		switch (r) {
-			case DRSUAPI_EXOP_ERR_NONE: val = "DRSUAPI_EXOP_ERR_NONE"; break;
-			case DRSUAPI_EXOP_ERR_SUCCESS: val = "DRSUAPI_EXOP_ERR_SUCCESS"; break;
-			case DRSUAPI_EXOP_ERR_UNKNOWN_OP: val = "DRSUAPI_EXOP_ERR_UNKNOWN_OP"; break;
-			case DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER: val = "DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER"; break;
-			case DRSUAPI_EXOP_ERR_UPDATE_ERR: val = "DRSUAPI_EXOP_ERR_UPDATE_ERR"; break;
-			case DRSUAPI_EXOP_ERR_EXCEPTION: val = "DRSUAPI_EXOP_ERR_EXCEPTION"; break;
-			case DRSUAPI_EXOP_ERR_UNKNOWN_CALLER: val = "DRSUAPI_EXOP_ERR_UNKNOWN_CALLER"; break;
-			case DRSUAPI_EXOP_ERR_RID_ALLOC: val = "DRSUAPI_EXOP_ERR_RID_ALLOC"; break;
-			case DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED: val = "DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED"; break;
-			case DRSUAPI_EXOP_ERR_FMSO_PENDING_OP: val = "DRSUAPI_EXOP_ERR_FMSO_PENDING_OP"; break;
-			case DRSUAPI_EXOP_ERR_MISMATCH: val = "DRSUAPI_EXOP_ERR_MISMATCH"; break;
-			case DRSUAPI_EXOP_ERR_COULDNT_CONTACT: val = "DRSUAPI_EXOP_ERR_COULDNT_CONTACT"; break;
-			case DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES: val = "DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES"; break;
-			case DRSUAPI_EXOP_ERR_DIR_ERROR: val = "DRSUAPI_EXOP_ERR_DIR_ERROR"; break;
-			case DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS: val = "DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS"; break;
-			case DRSUAPI_EXOP_ERR_ACCESS_DENIED: val = "DRSUAPI_EXOP_ERR_ACCESS_DENIED"; break;
-			case DRSUAPI_EXOP_ERR_PARAM_ERROR: val = "DRSUAPI_EXOP_ERR_PARAM_ERROR"; break;
-		}
-		ndr_print_enum(ndr, name, "ENUM", val, r);
-		ndr->flags = _flags_save_ENUM;
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesRequest5(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesRequest5 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->destination_dsa_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		if (r->naming_context == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_ref_ptr(ndr));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->uptodateness_vector));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, r->replica_flags));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_object_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_ndr_size));
-		NDR_CHECK(ndr_push_drsuapi_DsExtendedOperation(ndr, NDR_SCALARS, r->extended_op));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->fsmo_info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		if (r->uptodateness_vector) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesRequest5(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesRequest5 *r)
-{
-	uint32_t _ptr_naming_context;
-	TALLOC_CTX *_mem_save_naming_context_0;
-	uint32_t _ptr_uptodateness_vector;
-	TALLOC_CTX *_mem_save_uptodateness_vector_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->destination_dsa_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_naming_context));
-		if (_ptr_naming_context) {
-			NDR_PULL_ALLOC(ndr, r->naming_context);
-		} else {
-			r->naming_context = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_uptodateness_vector));
-		if (_ptr_uptodateness_vector) {
-			NDR_PULL_ALLOC(ndr, r->uptodateness_vector);
-		} else {
-			r->uptodateness_vector = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, &r->replica_flags));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_object_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_ndr_size));
-		NDR_CHECK(ndr_pull_drsuapi_DsExtendedOperation(ndr, NDR_SCALARS, &r->extended_op));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->fsmo_info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->naming_context, 0);
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_0, 0);
-		if (r->uptodateness_vector) {
-			_mem_save_uptodateness_vector_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->uptodateness_vector, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uptodateness_vector_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesRequest5(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesRequest5 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesRequest5");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "destination_dsa_guid", &r->destination_dsa_guid);
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_ptr(ndr, "naming_context", r->naming_context);
-	ndr->depth++;
-	ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "naming_context", r->naming_context);
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "highwatermark", &r->highwatermark);
-	ndr_print_ptr(ndr, "uptodateness_vector", r->uptodateness_vector);
-	ndr->depth++;
-	if (r->uptodateness_vector) {
-		ndr_print_drsuapi_DsReplicaCursorCtrEx(ndr, "uptodateness_vector", r->uptodateness_vector);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaNeighbourFlags(ndr, "replica_flags", r->replica_flags);
-	ndr_print_uint32(ndr, "max_object_count", r->max_object_count);
-	ndr_print_uint32(ndr, "max_ndr_size", r->max_ndr_size);
-	ndr_print_drsuapi_DsExtendedOperation(ndr, "extended_op", r->extended_op);
-	ndr_print_hyper(ndr, "fsmo_info", r->fsmo_info);
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaOID(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOID *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaOID");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsReplicaOID_oid(r->oid, 0):r->__ndr_size);
-	ndr_print_ptr(ndr, "oid", r->oid);
-	ndr->depth++;
-	if (r->oid) {
-		ndr_print_string(ndr, "oid", r->oid);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaOIDMapping(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOIDMapping *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->id_prefix));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOID(ndr, NDR_SCALARS, &r->oid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOID(ndr, NDR_BUFFERS, &r->oid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaOIDMapping(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOIDMapping *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->id_prefix));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOID(ndr, NDR_SCALARS, &r->oid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOID(ndr, NDR_BUFFERS, &r->oid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaOIDMapping(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOIDMapping *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaOIDMapping");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "id_prefix", r->id_prefix);
-	ndr_print_drsuapi_DsReplicaOID(ndr, "oid", &r->oid);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOIDMapping_Ctr *r)
-{
-	uint32_t cntr_mappings_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_mappings));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->mappings));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->mappings) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_mappings));
-			for (cntr_mappings_1 = 0; cntr_mappings_1 < r->num_mappings; cntr_mappings_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping(ndr, NDR_SCALARS, &r->mappings[cntr_mappings_1]));
-			}
-			for (cntr_mappings_1 = 0; cntr_mappings_1 < r->num_mappings; cntr_mappings_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping(ndr, NDR_BUFFERS, &r->mappings[cntr_mappings_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOIDMapping_Ctr *r)
-{
-	uint32_t _ptr_mappings;
-	uint32_t cntr_mappings_1;
-	TALLOC_CTX *_mem_save_mappings_0;
-	TALLOC_CTX *_mem_save_mappings_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_mappings));
-		if (r->num_mappings < 0 || r->num_mappings > 0x100000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_mappings));
-		if (_ptr_mappings) {
-			NDR_PULL_ALLOC(ndr, r->mappings);
-		} else {
-			r->mappings = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->mappings) {
-			_mem_save_mappings_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->mappings, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->mappings));
-			NDR_PULL_ALLOC_N(ndr, r->mappings, ndr_get_array_size(ndr, &r->mappings));
-			_mem_save_mappings_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->mappings, 0);
-			for (cntr_mappings_1 = 0; cntr_mappings_1 < r->num_mappings; cntr_mappings_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping(ndr, NDR_SCALARS, &r->mappings[cntr_mappings_1]));
-			}
-			for (cntr_mappings_1 = 0; cntr_mappings_1 < r->num_mappings; cntr_mappings_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping(ndr, NDR_BUFFERS, &r->mappings[cntr_mappings_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_mappings_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_mappings_0, 0);
-		}
-		if (r->mappings) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->mappings, r->num_mappings));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOIDMapping_Ctr *r)
-{
-	uint32_t cntr_mappings_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaOIDMapping_Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "num_mappings", r->num_mappings);
-	ndr_print_ptr(ndr, "mappings", r->mappings);
-	ndr->depth++;
-	if (r->mappings) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "mappings", (int)r->num_mappings);
-		ndr->depth++;
-		for (cntr_mappings_1=0;cntr_mappings_1<r->num_mappings;cntr_mappings_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_mappings_1) != -1) {
-				ndr_print_drsuapi_DsReplicaOIDMapping(ndr, "mappings", &r->mappings[cntr_mappings_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsAttributeId(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsAttributeId r)
-{
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsAttributeId(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsAttributeId *r)
-{
-	uint32_t v;
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-		*r = v;
-		ndr->flags = _flags_save_ENUM;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAttributeId(struct ndr_print *ndr, const char *name, enum drsuapi_DsAttributeId r)
-{
-	const char *val = NULL;
-
-	{
-		uint32_t _flags_save_ENUM = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		switch (r) {
-			case DRSUAPI_ATTRIBUTE_objectClass: val = "DRSUAPI_ATTRIBUTE_objectClass"; break;
-			case DRSUAPI_ATTRIBUTE_description: val = "DRSUAPI_ATTRIBUTE_description"; break;
-			case DRSUAPI_ATTRIBUTE_member: val = "DRSUAPI_ATTRIBUTE_member"; break;
-			case DRSUAPI_ATTRIBUTE_instanceType: val = "DRSUAPI_ATTRIBUTE_instanceType"; break;
-			case DRSUAPI_ATTRIBUTE_whenCreated: val = "DRSUAPI_ATTRIBUTE_whenCreated"; break;
-			case DRSUAPI_ATTRIBUTE_hasMasterNCs: val = "DRSUAPI_ATTRIBUTE_hasMasterNCs"; break;
-			case DRSUAPI_ATTRIBUTE_governsID: val = "DRSUAPI_ATTRIBUTE_governsID"; break;
-			case DRSUAPI_ATTRIBUTE_attributeID: val = "DRSUAPI_ATTRIBUTE_attributeID"; break;
-			case DRSUAPI_ATTRIBUTE_attributeSyntax: val = "DRSUAPI_ATTRIBUTE_attributeSyntax"; break;
-			case DRSUAPI_ATTRIBUTE_isSingleValued: val = "DRSUAPI_ATTRIBUTE_isSingleValued"; break;
-			case DRSUAPI_ATTRIBUTE_rangeLower: val = "DRSUAPI_ATTRIBUTE_rangeLower"; break;
-			case DRSUAPI_ATTRIBUTE_rangeUpper: val = "DRSUAPI_ATTRIBUTE_rangeUpper"; break;
-			case DRSUAPI_ATTRIBUTE_dMDLocation: val = "DRSUAPI_ATTRIBUTE_dMDLocation"; break;
-			case DRSUAPI_ATTRIBUTE_objectVersion: val = "DRSUAPI_ATTRIBUTE_objectVersion"; break;
-			case DRSUAPI_ATTRIBUTE_invocationId: val = "DRSUAPI_ATTRIBUTE_invocationId"; break;
-			case DRSUAPI_ATTRIBUTE_showInAdvancedViewOnly: val = "DRSUAPI_ATTRIBUTE_showInAdvancedViewOnly"; break;
-			case DRSUAPI_ATTRIBUTE_adminDisplayName: val = "DRSUAPI_ATTRIBUTE_adminDisplayName"; break;
-			case DRSUAPI_ATTRIBUTE_adminDescription: val = "DRSUAPI_ATTRIBUTE_adminDescription"; break;
-			case DRSUAPI_ATTRIBUTE_oMSyntax: val = "DRSUAPI_ATTRIBUTE_oMSyntax"; break;
-			case DRSUAPI_ATTRIBUTE_ntSecurityDescriptor: val = "DRSUAPI_ATTRIBUTE_ntSecurityDescriptor"; break;
-			case DRSUAPI_ATTRIBUTE_searchFlags: val = "DRSUAPI_ATTRIBUTE_searchFlags"; break;
-			case DRSUAPI_ATTRIBUTE_lDAPDisplayName: val = "DRSUAPI_ATTRIBUTE_lDAPDisplayName"; break;
-			case DRSUAPI_ATTRIBUTE_name: val = "DRSUAPI_ATTRIBUTE_name"; break;
-			case DRSUAPI_ATTRIBUTE_userAccountControl: val = "DRSUAPI_ATTRIBUTE_userAccountControl"; break;
-			case DRSUAPI_ATTRIBUTE_currentValue: val = "DRSUAPI_ATTRIBUTE_currentValue"; break;
-			case DRSUAPI_ATTRIBUTE_homeDirectory: val = "DRSUAPI_ATTRIBUTE_homeDirectory"; break;
-			case DRSUAPI_ATTRIBUTE_homeDrive: val = "DRSUAPI_ATTRIBUTE_homeDrive"; break;
-			case DRSUAPI_ATTRIBUTE_scriptPath: val = "DRSUAPI_ATTRIBUTE_scriptPath"; break;
-			case DRSUAPI_ATTRIBUTE_profilePath: val = "DRSUAPI_ATTRIBUTE_profilePath"; break;
-			case DRSUAPI_ATTRIBUTE_objectSid: val = "DRSUAPI_ATTRIBUTE_objectSid"; break;
-			case DRSUAPI_ATTRIBUTE_schemaIDGUID: val = "DRSUAPI_ATTRIBUTE_schemaIDGUID"; break;
-			case DRSUAPI_ATTRIBUTE_dBCSPwd: val = "DRSUAPI_ATTRIBUTE_dBCSPwd"; break;
-			case DRSUAPI_ATTRIBUTE_logonHours: val = "DRSUAPI_ATTRIBUTE_logonHours"; break;
-			case DRSUAPI_ATTRIBUTE_userWorkstations: val = "DRSUAPI_ATTRIBUTE_userWorkstations"; break;
-			case DRSUAPI_ATTRIBUTE_unicodePwd: val = "DRSUAPI_ATTRIBUTE_unicodePwd"; break;
-			case DRSUAPI_ATTRIBUTE_ntPwdHistory: val = "DRSUAPI_ATTRIBUTE_ntPwdHistory"; break;
-			case DRSUAPI_ATTRIBUTE_priorValue: val = "DRSUAPI_ATTRIBUTE_priorValue"; break;
-			case DRSUAPI_ATTRIBUTE_supplementalCredentials: val = "DRSUAPI_ATTRIBUTE_supplementalCredentials"; break;
-			case DRSUAPI_ATTRIBUTE_trustAuthIncoming: val = "DRSUAPI_ATTRIBUTE_trustAuthIncoming"; break;
-			case DRSUAPI_ATTRIBUTE_trustAuthOutgoing: val = "DRSUAPI_ATTRIBUTE_trustAuthOutgoing"; break;
-			case DRSUAPI_ATTRIBUTE_lmPwdHistory: val = "DRSUAPI_ATTRIBUTE_lmPwdHistory"; break;
-			case DRSUAPI_ATTRIBUTE_sAMAccountName: val = "DRSUAPI_ATTRIBUTE_sAMAccountName"; break;
-			case DRSUAPI_ATTRIBUTE_sAMAccountType: val = "DRSUAPI_ATTRIBUTE_sAMAccountType"; break;
-			case DRSUAPI_ATTRIBUTE_fSMORoleOwner: val = "DRSUAPI_ATTRIBUTE_fSMORoleOwner"; break;
-			case DRSUAPI_ATTRIBUTE_systemFlags: val = "DRSUAPI_ATTRIBUTE_systemFlags"; break;
-			case DRSUAPI_ATTRIBUTE_serverReference: val = "DRSUAPI_ATTRIBUTE_serverReference"; break;
-			case DRSUAPI_ATTRIBUTE_serverReferenceBL: val = "DRSUAPI_ATTRIBUTE_serverReferenceBL"; break;
-			case DRSUAPI_ATTRIBUTE_initialAuthIncoming: val = "DRSUAPI_ATTRIBUTE_initialAuthIncoming"; break;
-			case DRSUAPI_ATTRIBUTE_initialAuthOutgoing: val = "DRSUAPI_ATTRIBUTE_initialAuthOutgoing"; break;
-			case DRSUAPI_ATTRIBUTE_wellKnownObjects: val = "DRSUAPI_ATTRIBUTE_wellKnownObjects"; break;
-			case DRSUAPI_ATTRIBUTE_dNSHostName: val = "DRSUAPI_ATTRIBUTE_dNSHostName"; break;
-			case DRSUAPI_ATTRIBUTE_isMemberOfPartialAttributeSet: val = "DRSUAPI_ATTRIBUTE_isMemberOfPartialAttributeSet"; break;
-			case DRSUAPI_ATTRIBUTE_userPrincipalName: val = "DRSUAPI_ATTRIBUTE_userPrincipalName"; break;
-			case DRSUAPI_ATTRIBUTE_groupType: val = "DRSUAPI_ATTRIBUTE_groupType"; break;
-			case DRSUAPI_ATTRIBUTE_servicePrincipalName: val = "DRSUAPI_ATTRIBUTE_servicePrincipalName"; break;
-			case DRSUAPI_ATTRIBUTE_objectCategory: val = "DRSUAPI_ATTRIBUTE_objectCategory"; break;
-			case DRSUAPI_ATTRIBUTE_gPLink: val = "DRSUAPI_ATTRIBUTE_gPLink"; break;
-			case DRSUAPI_ATTRIBUTE_msDS_Behavior_Version: val = "DRSUAPI_ATTRIBUTE_msDS_Behavior_Version"; break;
-			case DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber: val = "DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber"; break;
-			case DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs: val = "DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs"; break;
-			case DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs: val = "DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs"; break;
-		}
-		ndr_print_enum(ndr, name, "ENUM", val, r);
-		ndr->flags = _flags_save_ENUM;
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsPartialAttributeSet(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsPartialAttributeSet *r)
-{
-	uint32_t cntr_attids_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_attids));
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_attids));
-		for (cntr_attids_0 = 0; cntr_attids_0 < r->num_attids; cntr_attids_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->attids[cntr_attids_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsPartialAttributeSet(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsPartialAttributeSet *r)
-{
-	uint32_t cntr_attids_0;
-	TALLOC_CTX *_mem_save_attids_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->attids));
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_attids));
-		if (r->num_attids < 1 || r->num_attids > 0x100000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_PULL_ALLOC_N(ndr, r->attids, ndr_get_array_size(ndr, &r->attids));
-		_mem_save_attids_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->attids, 0);
-		for (cntr_attids_0 = 0; cntr_attids_0 < r->num_attids; cntr_attids_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->attids[cntr_attids_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attids_0, 0);
-		if (r->attids) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attids, r->num_attids));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsPartialAttributeSet(struct ndr_print *ndr, const char *name, const struct drsuapi_DsPartialAttributeSet *r)
-{
-	uint32_t cntr_attids_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsPartialAttributeSet");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?1:r->version);
-	ndr_print_uint32(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
-	ndr_print_uint32(ndr, "num_attids", r->num_attids);
-	ndr->print(ndr, "%s: ARRAY(%d)", "attids", (int)r->num_attids);
-	ndr->depth++;
-	for (cntr_attids_0=0;cntr_attids_0<r->num_attids;cntr_attids_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_attids_0) != -1) {
-			ndr_print_drsuapi_DsAttributeId(ndr, "attids", r->attids[cntr_attids_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesRequest8(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesRequest8 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->destination_dsa_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		if (r->naming_context == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_ref_ptr(ndr));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->uptodateness_vector));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, r->replica_flags));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_object_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_ndr_size));
-		NDR_CHECK(ndr_push_drsuapi_DsExtendedOperation(ndr, NDR_SCALARS, r->extended_op));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->fsmo_info));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->partial_attribute_set));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->partial_attribute_set_ex));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->mapping_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		if (r->uptodateness_vector) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-		}
-		if (r->partial_attribute_set) {
-			NDR_CHECK(ndr_push_drsuapi_DsPartialAttributeSet(ndr, NDR_SCALARS, r->partial_attribute_set));
-		}
-		if (r->partial_attribute_set_ex) {
-			NDR_CHECK(ndr_push_drsuapi_DsPartialAttributeSet(ndr, NDR_SCALARS, r->partial_attribute_set_ex));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->mapping_ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesRequest8(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesRequest8 *r)
-{
-	uint32_t _ptr_naming_context;
-	TALLOC_CTX *_mem_save_naming_context_0;
-	uint32_t _ptr_uptodateness_vector;
-	TALLOC_CTX *_mem_save_uptodateness_vector_0;
-	uint32_t _ptr_partial_attribute_set;
-	TALLOC_CTX *_mem_save_partial_attribute_set_0;
-	uint32_t _ptr_partial_attribute_set_ex;
-	TALLOC_CTX *_mem_save_partial_attribute_set_ex_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->destination_dsa_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_naming_context));
-		if (_ptr_naming_context) {
-			NDR_PULL_ALLOC(ndr, r->naming_context);
-		} else {
-			r->naming_context = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->highwatermark));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_uptodateness_vector));
-		if (_ptr_uptodateness_vector) {
-			NDR_PULL_ALLOC(ndr, r->uptodateness_vector);
-		} else {
-			r->uptodateness_vector = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, &r->replica_flags));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_object_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_ndr_size));
-		NDR_CHECK(ndr_pull_drsuapi_DsExtendedOperation(ndr, NDR_SCALARS, &r->extended_op));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->fsmo_info));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_partial_attribute_set));
-		if (_ptr_partial_attribute_set) {
-			NDR_PULL_ALLOC(ndr, r->partial_attribute_set);
-		} else {
-			r->partial_attribute_set = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_partial_attribute_set_ex));
-		if (_ptr_partial_attribute_set_ex) {
-			NDR_PULL_ALLOC(ndr, r->partial_attribute_set_ex);
-		} else {
-			r->partial_attribute_set_ex = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->mapping_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->naming_context, 0);
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_0, 0);
-		if (r->uptodateness_vector) {
-			_mem_save_uptodateness_vector_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->uptodateness_vector, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uptodateness_vector_0, 0);
-		}
-		if (r->partial_attribute_set) {
-			_mem_save_partial_attribute_set_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->partial_attribute_set, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsPartialAttributeSet(ndr, NDR_SCALARS, r->partial_attribute_set));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_partial_attribute_set_0, 0);
-		}
-		if (r->partial_attribute_set_ex) {
-			_mem_save_partial_attribute_set_ex_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->partial_attribute_set_ex, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsPartialAttributeSet(ndr, NDR_SCALARS, r->partial_attribute_set_ex));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_partial_attribute_set_ex_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->mapping_ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesRequest8(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesRequest8 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesRequest8");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "destination_dsa_guid", &r->destination_dsa_guid);
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_ptr(ndr, "naming_context", r->naming_context);
-	ndr->depth++;
-	ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "naming_context", r->naming_context);
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "highwatermark", &r->highwatermark);
-	ndr_print_ptr(ndr, "uptodateness_vector", r->uptodateness_vector);
-	ndr->depth++;
-	if (r->uptodateness_vector) {
-		ndr_print_drsuapi_DsReplicaCursorCtrEx(ndr, "uptodateness_vector", r->uptodateness_vector);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaNeighbourFlags(ndr, "replica_flags", r->replica_flags);
-	ndr_print_uint32(ndr, "max_object_count", r->max_object_count);
-	ndr_print_uint32(ndr, "max_ndr_size", r->max_ndr_size);
-	ndr_print_drsuapi_DsExtendedOperation(ndr, "extended_op", r->extended_op);
-	ndr_print_hyper(ndr, "fsmo_info", r->fsmo_info);
-	ndr_print_ptr(ndr, "partial_attribute_set", r->partial_attribute_set);
-	ndr->depth++;
-	if (r->partial_attribute_set) {
-		ndr_print_drsuapi_DsPartialAttributeSet(ndr, "partial_attribute_set", r->partial_attribute_set);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "partial_attribute_set_ex", r->partial_attribute_set_ex);
-	ndr->depth++;
-	if (r->partial_attribute_set_ex) {
-		ndr_print_drsuapi_DsPartialAttributeSet(ndr, "partial_attribute_set_ex", r->partial_attribute_set_ex);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaOIDMapping_Ctr(ndr, "mapping_ctr", &r->mapping_ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetNCChangesRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 5: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesRequest5(ndr, NDR_SCALARS, &r->req5));
-			break; }
-
-			case 8: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesRequest8(ndr, NDR_SCALARS, &r->req8));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 5:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesRequest5(ndr, NDR_BUFFERS, &r->req5));
-			break;
-
-			case 8:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesRequest8(ndr, NDR_BUFFERS, &r->req8));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetNCChangesRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 5: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesRequest5(ndr, NDR_SCALARS, &r->req5));
-			break; }
-
-			case 8: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesRequest8(ndr, NDR_SCALARS, &r->req8));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 5:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesRequest5(ndr, NDR_BUFFERS, &r->req5));
-			break;
-
-			case 8:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesRequest8(ndr, NDR_BUFFERS, &r->req8));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNCChangesRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetNCChangesRequest");
-	switch (level) {
-		case 5:
-			ndr_print_drsuapi_DsGetNCChangesRequest5(ndr, "req5", &r->req5);
-		break;
-
-		case 8:
-			ndr_print_drsuapi_DsGetNCChangesRequest8(ndr, "req8", &r->req8);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->highest_usn));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_sync_success));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->highest_usn));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_sync_success));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursor2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursor2");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_hyper(ndr, "highest_usn", r->highest_usn);
-	ndr_print_NTTIME(ndr, "last_sync_success", r->last_sync_success);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor2CtrEx(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor2CtrEx *r)
-{
-	uint32_t cntr_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor2(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor2CtrEx(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor2CtrEx *r)
-{
-	uint32_t cntr_cursors_0;
-	TALLOC_CTX *_mem_save_cursors_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->cursors));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 0x100000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved2));
-		NDR_PULL_ALLOC_N(ndr, r->cursors, ndr_get_array_size(ndr, &r->cursors));
-		_mem_save_cursors_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->cursors, 0);
-		for (cntr_cursors_0 = 0; cntr_cursors_0 < r->count; cntr_cursors_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor2(ndr, NDR_SCALARS, &r->cursors[cntr_cursors_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0);
-		if (r->cursors) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cursors, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursor2CtrEx(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor2CtrEx *r)
-{
-	uint32_t cntr_cursors_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursor2CtrEx");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->version);
-	ndr_print_uint32(ndr, "reserved1", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved1);
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved2", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved2);
-	ndr->print(ndr, "%s: ARRAY(%d)", "cursors", (int)r->count);
-	ndr->depth++;
-	for (cntr_cursors_0=0;cntr_cursors_0<r->count;cntr_cursors_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_cursors_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor2(ndr, "cursors", &r->cursors[cntr_cursors_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAttributeValue(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAttributeValue *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_DATA_BLOB(0, r->blob, 0)));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->blob));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->blob) {
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->blob));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAttributeValue(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAttributeValue *r)
-{
-	uint32_t _ptr_blob;
-	TALLOC_CTX *_mem_save_blob_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		if (r->__ndr_size < 0 || r->__ndr_size > 10485760) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_blob));
-		if (_ptr_blob) {
-			NDR_PULL_ALLOC(ndr, r->blob);
-		} else {
-			r->blob = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->blob) {
-			_mem_save_blob_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->blob, 0);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->blob));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_blob_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAttributeValue(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAttributeValue *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAttributeValue");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_DATA_BLOB(0, r->blob, 0):r->__ndr_size);
-	ndr_print_ptr(ndr, "blob", r->blob);
-	ndr->depth++;
-	if (r->blob) {
-		ndr_print_DATA_BLOB(ndr, "blob", *r->blob);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAttributeValueCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAttributeValueCtr *r)
-{
-	uint32_t cntr_values_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_values));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->values));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->values) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_values));
-			for (cntr_values_1 = 0; cntr_values_1 < r->num_values; cntr_values_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsAttributeValue(ndr, NDR_SCALARS, &r->values[cntr_values_1]));
-			}
-			for (cntr_values_1 = 0; cntr_values_1 < r->num_values; cntr_values_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsAttributeValue(ndr, NDR_BUFFERS, &r->values[cntr_values_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAttributeValueCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAttributeValueCtr *r)
-{
-	uint32_t _ptr_values;
-	uint32_t cntr_values_1;
-	TALLOC_CTX *_mem_save_values_0;
-	TALLOC_CTX *_mem_save_values_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_values));
-		if (r->num_values < 0 || r->num_values > 10485760) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_values));
-		if (_ptr_values) {
-			NDR_PULL_ALLOC(ndr, r->values);
-		} else {
-			r->values = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->values) {
-			_mem_save_values_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->values, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->values));
-			NDR_PULL_ALLOC_N(ndr, r->values, ndr_get_array_size(ndr, &r->values));
-			_mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->values, 0);
-			for (cntr_values_1 = 0; cntr_values_1 < r->num_values; cntr_values_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsAttributeValue(ndr, NDR_SCALARS, &r->values[cntr_values_1]));
-			}
-			for (cntr_values_1 = 0; cntr_values_1 < r->num_values; cntr_values_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsAttributeValue(ndr, NDR_BUFFERS, &r->values[cntr_values_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_0, 0);
-		}
-		if (r->values) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->values, r->num_values));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAttributeValueCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAttributeValueCtr *r)
-{
-	uint32_t cntr_values_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsAttributeValueCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "num_values", r->num_values);
-	ndr_print_ptr(ndr, "values", r->values);
-	ndr->depth++;
-	if (r->values) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "values", (int)r->num_values);
-		ndr->depth++;
-		for (cntr_values_1=0;cntr_values_1<r->num_values;cntr_values_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_values_1) != -1) {
-				ndr_print_drsuapi_DsAttributeValue(ndr, "values", &r->values[cntr_values_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier3(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier3 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags)));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_dom_sid28(&r->sid, ndr->flags)));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m(r->dn)));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dn, strlen_m(r->dn) + 1, sizeof(uint16_t), CH_UTF16));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier3(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier3 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_sid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_dn));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dn, r->__ndr_size_dn + 1, sizeof(uint16_t), CH_UTF16));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjectIdentifier3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier3 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectIdentifier3");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags):r->__ndr_size);
-	ndr_print_uint32(ndr, "__ndr_size_sid", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dom_sid28(&r->sid, ndr->flags):r->__ndr_size_sid);
-	ndr_print_GUID(ndr, "guid", &r->guid);
-	ndr_print_dom_sid28(ndr, "sid", &r->sid);
-	ndr_print_uint32(ndr, "__ndr_size_dn", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->dn):r->__ndr_size_dn);
-	ndr_print_string(ndr, "dn", r->dn);
-	ndr->depth--;
-}
-
-_PUBLIC_ size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3(const struct drsuapi_DsReplicaObjectIdentifier3 *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier3Binary *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(r, ndr->flags)));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_dom_sid28(&r->sid, ndr->flags)));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m(r->dn)));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dn, strlen_m(r->dn) + 1, sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->binary.length + 4));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier3Binary *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_sid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_dn));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dn, r->__ndr_size_dn + 1, sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_binary));
-		{
-			uint32_t _flags_save_DATA_BLOB = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
-			ndr->flags = _flags_save_DATA_BLOB;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier3Binary *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectIdentifier3Binary");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(r, ndr->flags):r->__ndr_size);
-	ndr_print_uint32(ndr, "__ndr_size_sid", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dom_sid28(&r->sid, ndr->flags):r->__ndr_size_sid);
-	ndr_print_GUID(ndr, "guid", &r->guid);
-	ndr_print_dom_sid28(ndr, "sid", &r->sid);
-	ndr_print_uint32(ndr, "__ndr_size_dn", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->dn):r->__ndr_size_dn);
-	ndr_print_string(ndr, "dn", r->dn);
-	ndr_print_uint32(ndr, "__ndr_size_binary", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->binary.length + 4:r->__ndr_size_binary);
-	ndr_print_DATA_BLOB(ndr, "binary", r->binary);
-	ndr->depth--;
-}
-
-_PUBLIC_ size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(const struct drsuapi_DsReplicaObjectIdentifier3Binary *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary);
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaAttribute(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttribute *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->attid));
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeValueCtr(ndr, NDR_SCALARS, &r->value_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeValueCtr(ndr, NDR_BUFFERS, &r->value_ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttribute(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttribute *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->attid));
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeValueCtr(ndr, NDR_SCALARS, &r->value_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeValueCtr(ndr, NDR_BUFFERS, &r->value_ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttribute(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttribute *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttribute");
-	ndr->depth++;
-	ndr_print_drsuapi_DsAttributeId(ndr, "attid", r->attid);
-	ndr_print_drsuapi_DsAttributeValueCtr(ndr, "value_ctr", &r->value_ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaAttributeCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttributeCtr *r)
-{
-	uint32_t cntr_attributes_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_attributes));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->attributes));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attributes) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_attributes));
-			for (cntr_attributes_1 = 0; cntr_attributes_1 < r->num_attributes; cntr_attributes_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaAttribute(ndr, NDR_SCALARS, &r->attributes[cntr_attributes_1]));
-			}
-			for (cntr_attributes_1 = 0; cntr_attributes_1 < r->num_attributes; cntr_attributes_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaAttribute(ndr, NDR_BUFFERS, &r->attributes[cntr_attributes_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttributeCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttributeCtr *r)
-{
-	uint32_t _ptr_attributes;
-	uint32_t cntr_attributes_1;
-	TALLOC_CTX *_mem_save_attributes_0;
-	TALLOC_CTX *_mem_save_attributes_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_attributes));
-		if (r->num_attributes < 0 || r->num_attributes > 1048576) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attributes));
-		if (_ptr_attributes) {
-			NDR_PULL_ALLOC(ndr, r->attributes);
-		} else {
-			r->attributes = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attributes) {
-			_mem_save_attributes_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->attributes, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->attributes));
-			NDR_PULL_ALLOC_N(ndr, r->attributes, ndr_get_array_size(ndr, &r->attributes));
-			_mem_save_attributes_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->attributes, 0);
-			for (cntr_attributes_1 = 0; cntr_attributes_1 < r->num_attributes; cntr_attributes_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttribute(ndr, NDR_SCALARS, &r->attributes[cntr_attributes_1]));
-			}
-			for (cntr_attributes_1 = 0; cntr_attributes_1 < r->num_attributes; cntr_attributes_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttribute(ndr, NDR_BUFFERS, &r->attributes[cntr_attributes_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attributes_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attributes_0, 0);
-		}
-		if (r->attributes) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attributes, r->num_attributes));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttributeCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttributeCtr *r)
-{
-	uint32_t cntr_attributes_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttributeCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "num_attributes", r->num_attributes);
-	ndr_print_ptr(ndr, "attributes", r->attributes);
-	ndr->depth++;
-	if (r->attributes) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "attributes", (int)r->num_attributes);
-		ndr->depth++;
-		for (cntr_attributes_1=0;cntr_attributes_1<r->num_attributes;cntr_attributes_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_attributes_1) != -1) {
-				ndr_print_drsuapi_DsReplicaAttribute(ndr, "attributes", &r->attributes[cntr_attributes_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjectFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER", DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC", DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY", DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY, r);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObject(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObject *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->identifier));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectFlags(ndr, NDR_SCALARS, r->flags));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaAttributeCtr(ndr, NDR_SCALARS, &r->attribute_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->identifier) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->identifier));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaAttributeCtr(ndr, NDR_BUFFERS, &r->attribute_ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObject(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObject *r)
-{
-	uint32_t _ptr_identifier;
-	TALLOC_CTX *_mem_save_identifier_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_identifier));
-		if (_ptr_identifier) {
-			NDR_PULL_ALLOC(ndr, r->identifier);
-		} else {
-			r->identifier = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectFlags(ndr, NDR_SCALARS, &r->flags));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttributeCtr(ndr, NDR_SCALARS, &r->attribute_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->identifier) {
-			_mem_save_identifier_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->identifier, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->identifier));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_identifier_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttributeCtr(ndr, NDR_BUFFERS, &r->attribute_ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObject(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObject *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObject");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "identifier", r->identifier);
-	ndr->depth++;
-	if (r->identifier) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "identifier", r->identifier);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaObjectFlags(ndr, "flags", r->flags);
-	ndr_print_drsuapi_DsReplicaAttributeCtr(ndr, "attribute_ctr", &r->attribute_ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaMetaData(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaMetaData *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->originating_change_time));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->originating_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaMetaData(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaMetaData *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->originating_change_time));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->originating_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaMetaData(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaMetaData *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaMetaData");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_NTTIME_1sec(ndr, "originating_change_time", r->originating_change_time);
-	ndr_print_GUID(ndr, "originating_invocation_id", &r->originating_invocation_id);
-	ndr_print_hyper(ndr, "originating_usn", r->originating_usn);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaMetaDataCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaMetaDataCtr *r)
-{
-	uint32_t cntr_meta_data_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		for (cntr_meta_data_0 = 0; cntr_meta_data_0 < r->count; cntr_meta_data_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaMetaData(ndr, NDR_SCALARS, &r->meta_data[cntr_meta_data_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaMetaDataCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaMetaDataCtr *r)
-{
-	uint32_t cntr_meta_data_0;
-	TALLOC_CTX *_mem_save_meta_data_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->meta_data));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 1048576) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_PULL_ALLOC_N(ndr, r->meta_data, ndr_get_array_size(ndr, &r->meta_data));
-		_mem_save_meta_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->meta_data, 0);
-		for (cntr_meta_data_0 = 0; cntr_meta_data_0 < r->count; cntr_meta_data_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaMetaData(ndr, NDR_SCALARS, &r->meta_data[cntr_meta_data_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_meta_data_0, 0);
-		if (r->meta_data) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->meta_data, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaMetaDataCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaMetaDataCtr *r)
-{
-	uint32_t cntr_meta_data_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaMetaDataCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr->print(ndr, "%s: ARRAY(%d)", "meta_data", (int)r->count);
-	ndr->depth++;
-	for (cntr_meta_data_0=0;cntr_meta_data_0<r->count;cntr_meta_data_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_meta_data_0) != -1) {
-			ndr_print_drsuapi_DsReplicaMetaData(ndr, "meta_data", &r->meta_data[cntr_meta_data_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectListItemEx(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectListItemEx *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->next_object));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObject(ndr, NDR_SCALARS, &r->object));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_nc_prefix));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->parent_object_guid));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->meta_data_ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->next_object) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectListItemEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->next_object));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObject(ndr, NDR_BUFFERS, &r->object));
-		if (r->parent_object_guid) {
-			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->parent_object_guid));
-		}
-		if (r->meta_data_ctr) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaMetaDataCtr(ndr, NDR_SCALARS, r->meta_data_ctr));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectListItemEx(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectListItemEx *r)
-{
-	uint32_t _ptr_next_object;
-	TALLOC_CTX *_mem_save_next_object_0;
-	uint32_t _ptr_parent_object_guid;
-	TALLOC_CTX *_mem_save_parent_object_guid_0;
-	uint32_t _ptr_meta_data_ctr;
-	TALLOC_CTX *_mem_save_meta_data_ctr_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_next_object));
-		if (_ptr_next_object) {
-			NDR_PULL_ALLOC(ndr, r->next_object);
-		} else {
-			r->next_object = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObject(ndr, NDR_SCALARS, &r->object));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_nc_prefix));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_parent_object_guid));
-		if (_ptr_parent_object_guid) {
-			NDR_PULL_ALLOC(ndr, r->parent_object_guid);
-		} else {
-			r->parent_object_guid = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_meta_data_ctr));
-		if (_ptr_meta_data_ctr) {
-			NDR_PULL_ALLOC(ndr, r->meta_data_ctr);
-		} else {
-			r->meta_data_ctr = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->next_object) {
-			_mem_save_next_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->next_object, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectListItemEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->next_object));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_object_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObject(ndr, NDR_BUFFERS, &r->object));
-		if (r->parent_object_guid) {
-			_mem_save_parent_object_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->parent_object_guid, 0);
-			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->parent_object_guid));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parent_object_guid_0, 0);
-		}
-		if (r->meta_data_ctr) {
-			_mem_save_meta_data_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->meta_data_ctr, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaMetaDataCtr(ndr, NDR_SCALARS, r->meta_data_ctr));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_meta_data_ctr_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesCtr1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->naming_context));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->old_highwatermark));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->new_highwatermark));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->uptodateness_vector));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->mapping_ctr));
-		NDR_CHECK(ndr_push_drsuapi_DsExtendedError(ndr, NDR_SCALARS, r->extended_ret));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->object_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsGetNCChangesCtr1(r, ndr->flags) + 55));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->first_object));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->more_data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		}
-		if (r->uptodateness_vector) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->mapping_ctr));
-		if (r->first_object) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectListItemEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->first_object));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesCtr1 *r)
-{
-	uint32_t _ptr_naming_context;
-	TALLOC_CTX *_mem_save_naming_context_0;
-	uint32_t _ptr_uptodateness_vector;
-	TALLOC_CTX *_mem_save_uptodateness_vector_0;
-	uint32_t _ptr_first_object;
-	TALLOC_CTX *_mem_save_first_object_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_naming_context));
-		if (_ptr_naming_context) {
-			NDR_PULL_ALLOC(ndr, r->naming_context);
-		} else {
-			r->naming_context = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->old_highwatermark));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->new_highwatermark));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_uptodateness_vector));
-		if (_ptr_uptodateness_vector) {
-			NDR_PULL_ALLOC(ndr, r->uptodateness_vector);
-		} else {
-			r->uptodateness_vector = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->mapping_ctr));
-		NDR_CHECK(ndr_pull_drsuapi_DsExtendedError(ndr, NDR_SCALARS, &r->extended_ret));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->object_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_first_object));
-		if (_ptr_first_object) {
-			NDR_PULL_ALLOC(ndr, r->first_object);
-		} else {
-			r->first_object = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->more_data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context) {
-			_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->naming_context, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_0, 0);
-		}
-		if (r->uptodateness_vector) {
-			_mem_save_uptodateness_vector_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->uptodateness_vector, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uptodateness_vector_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->mapping_ctr));
-		if (r->first_object) {
-			_mem_save_first_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->first_object, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectListItemEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->first_object));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_first_object_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesCtr1");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "source_dsa_guid", &r->source_dsa_guid);
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_ptr(ndr, "naming_context", r->naming_context);
-	ndr->depth++;
-	if (r->naming_context) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "naming_context", r->naming_context);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "old_highwatermark", &r->old_highwatermark);
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "new_highwatermark", &r->new_highwatermark);
-	ndr_print_ptr(ndr, "uptodateness_vector", r->uptodateness_vector);
-	ndr->depth++;
-	if (r->uptodateness_vector) {
-		ndr_print_drsuapi_DsReplicaCursorCtrEx(ndr, "uptodateness_vector", r->uptodateness_vector);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaOIDMapping_Ctr(ndr, "mapping_ctr", &r->mapping_ctr);
-	ndr_print_drsuapi_DsExtendedError(ndr, "extended_ret", r->extended_ret);
-	ndr_print_uint32(ndr, "object_count", r->object_count);
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsGetNCChangesCtr1(r, ndr->flags) + 55:r->__ndr_size);
-	ndr_print_ptr(ndr, "first_object", r->first_object);
-	ndr->depth++;
-	if (r->first_object) {
-		ndr_print_drsuapi_DsReplicaObjectListItemEx(ndr, "first_object", r->first_object);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "more_data", r->more_data);
-	ndr->depth--;
-}
-
-_PUBLIC_ size_t ndr_size_drsuapi_DsGetNCChangesCtr1(const struct drsuapi_DsGetNCChangesCtr1 *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr1);
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsLinkedAttributeFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsLinkedAttributeFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsLinkedAttributeFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE", DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE, r);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaLinkedAttribute(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaLinkedAttribute *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->identifier));
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->attid));
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeValue(ndr, NDR_SCALARS, &r->value));
-		NDR_CHECK(ndr_push_drsuapi_DsLinkedAttributeFlags(ndr, NDR_SCALARS, r->flags));
-		NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->originating_add_time));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaMetaData(ndr, NDR_SCALARS, &r->meta_data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->identifier) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->identifier));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeValue(ndr, NDR_BUFFERS, &r->value));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaLinkedAttribute(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaLinkedAttribute *r)
-{
-	uint32_t _ptr_identifier;
-	TALLOC_CTX *_mem_save_identifier_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_identifier));
-		if (_ptr_identifier) {
-			NDR_PULL_ALLOC(ndr, r->identifier);
-		} else {
-			r->identifier = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->attid));
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeValue(ndr, NDR_SCALARS, &r->value));
-		NDR_CHECK(ndr_pull_drsuapi_DsLinkedAttributeFlags(ndr, NDR_SCALARS, &r->flags));
-		NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->originating_add_time));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaMetaData(ndr, NDR_SCALARS, &r->meta_data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->identifier) {
-			_mem_save_identifier_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->identifier, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->identifier));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_identifier_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeValue(ndr, NDR_BUFFERS, &r->value));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaLinkedAttribute(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaLinkedAttribute *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaLinkedAttribute");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "identifier", r->identifier);
-	ndr->depth++;
-	if (r->identifier) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "identifier", r->identifier);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsAttributeId(ndr, "attid", r->attid);
-	ndr_print_drsuapi_DsAttributeValue(ndr, "value", &r->value);
-	ndr_print_drsuapi_DsLinkedAttributeFlags(ndr, "flags", r->flags);
-	ndr_print_NTTIME_1sec(ndr, "originating_add_time", r->originating_add_time);
-	ndr_print_drsuapi_DsReplicaMetaData(ndr, "meta_data", &r->meta_data);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr6(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesCtr6 *r)
-{
-	uint32_t cntr_linked_attributes_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->naming_context));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->old_highwatermark));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->new_highwatermark));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->uptodateness_vector));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->mapping_ctr));
-		NDR_CHECK(ndr_push_drsuapi_DsExtendedError(ndr, NDR_SCALARS, r->extended_ret));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->object_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsGetNCChangesCtr6(r, ndr->flags) + 55));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->first_object));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->more_data));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nc_object_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nc_linked_attributes_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->linked_attributes_count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->linked_attributes));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->drs_error));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		}
-		if (r->uptodateness_vector) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor2CtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->mapping_ctr));
-		if (r->first_object) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectListItemEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->first_object));
-		}
-		if (r->linked_attributes) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->linked_attributes_count));
-			for (cntr_linked_attributes_1 = 0; cntr_linked_attributes_1 < r->linked_attributes_count; cntr_linked_attributes_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaLinkedAttribute(ndr, NDR_SCALARS, &r->linked_attributes[cntr_linked_attributes_1]));
-			}
-			for (cntr_linked_attributes_1 = 0; cntr_linked_attributes_1 < r->linked_attributes_count; cntr_linked_attributes_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaLinkedAttribute(ndr, NDR_BUFFERS, &r->linked_attributes[cntr_linked_attributes_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr6(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesCtr6 *r)
-{
-	uint32_t _ptr_naming_context;
-	TALLOC_CTX *_mem_save_naming_context_0;
-	uint32_t _ptr_uptodateness_vector;
-	TALLOC_CTX *_mem_save_uptodateness_vector_0;
-	uint32_t _ptr_first_object;
-	TALLOC_CTX *_mem_save_first_object_0;
-	uint32_t _ptr_linked_attributes;
-	uint32_t cntr_linked_attributes_1;
-	TALLOC_CTX *_mem_save_linked_attributes_0;
-	TALLOC_CTX *_mem_save_linked_attributes_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_naming_context));
-		if (_ptr_naming_context) {
-			NDR_PULL_ALLOC(ndr, r->naming_context);
-		} else {
-			r->naming_context = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->old_highwatermark));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaHighWaterMark(ndr, NDR_SCALARS, &r->new_highwatermark));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_uptodateness_vector));
-		if (_ptr_uptodateness_vector) {
-			NDR_PULL_ALLOC(ndr, r->uptodateness_vector);
-		} else {
-			r->uptodateness_vector = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_SCALARS, &r->mapping_ctr));
-		NDR_CHECK(ndr_pull_drsuapi_DsExtendedError(ndr, NDR_SCALARS, &r->extended_ret));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->object_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_first_object));
-		if (_ptr_first_object) {
-			NDR_PULL_ALLOC(ndr, r->first_object);
-		} else {
-			r->first_object = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->more_data));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nc_object_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nc_linked_attributes_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->linked_attributes_count));
-		if (r->linked_attributes_count < 0 || r->linked_attributes_count > 1048576) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_linked_attributes));
-		if (_ptr_linked_attributes) {
-			NDR_PULL_ALLOC(ndr, r->linked_attributes);
-		} else {
-			r->linked_attributes = NULL;
-		}
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->drs_error));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context) {
-			_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->naming_context, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_0, 0);
-		}
-		if (r->uptodateness_vector) {
-			_mem_save_uptodateness_vector_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->uptodateness_vector, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor2CtrEx(ndr, NDR_SCALARS, r->uptodateness_vector));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_uptodateness_vector_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(ndr, NDR_BUFFERS, &r->mapping_ctr));
-		if (r->first_object) {
-			_mem_save_first_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->first_object, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectListItemEx(ndr, NDR_SCALARS|NDR_BUFFERS, r->first_object));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_first_object_0, 0);
-		}
-		if (r->linked_attributes) {
-			_mem_save_linked_attributes_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->linked_attributes, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->linked_attributes));
-			NDR_PULL_ALLOC_N(ndr, r->linked_attributes, ndr_get_array_size(ndr, &r->linked_attributes));
-			_mem_save_linked_attributes_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->linked_attributes, 0);
-			for (cntr_linked_attributes_1 = 0; cntr_linked_attributes_1 < r->linked_attributes_count; cntr_linked_attributes_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaLinkedAttribute(ndr, NDR_SCALARS, &r->linked_attributes[cntr_linked_attributes_1]));
-			}
-			for (cntr_linked_attributes_1 = 0; cntr_linked_attributes_1 < r->linked_attributes_count; cntr_linked_attributes_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaLinkedAttribute(ndr, NDR_BUFFERS, &r->linked_attributes[cntr_linked_attributes_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_linked_attributes_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_linked_attributes_0, 0);
-		}
-		if (r->linked_attributes) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->linked_attributes, r->linked_attributes_count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCtr6(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr6 *r)
-{
-	uint32_t cntr_linked_attributes_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesCtr6");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "source_dsa_guid", &r->source_dsa_guid);
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_ptr(ndr, "naming_context", r->naming_context);
-	ndr->depth++;
-	if (r->naming_context) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "naming_context", r->naming_context);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "old_highwatermark", &r->old_highwatermark);
-	ndr_print_drsuapi_DsReplicaHighWaterMark(ndr, "new_highwatermark", &r->new_highwatermark);
-	ndr_print_ptr(ndr, "uptodateness_vector", r->uptodateness_vector);
-	ndr->depth++;
-	if (r->uptodateness_vector) {
-		ndr_print_drsuapi_DsReplicaCursor2CtrEx(ndr, "uptodateness_vector", r->uptodateness_vector);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaOIDMapping_Ctr(ndr, "mapping_ctr", &r->mapping_ctr);
-	ndr_print_drsuapi_DsExtendedError(ndr, "extended_ret", r->extended_ret);
-	ndr_print_uint32(ndr, "object_count", r->object_count);
-	ndr_print_uint32(ndr, "__ndr_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_drsuapi_DsGetNCChangesCtr6(r, ndr->flags) + 55:r->__ndr_size);
-	ndr_print_ptr(ndr, "first_object", r->first_object);
-	ndr->depth++;
-	if (r->first_object) {
-		ndr_print_drsuapi_DsReplicaObjectListItemEx(ndr, "first_object", r->first_object);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "more_data", r->more_data);
-	ndr_print_uint32(ndr, "nc_object_count", r->nc_object_count);
-	ndr_print_uint32(ndr, "nc_linked_attributes_count", r->nc_linked_attributes_count);
-	ndr_print_uint32(ndr, "linked_attributes_count", r->linked_attributes_count);
-	ndr_print_ptr(ndr, "linked_attributes", r->linked_attributes);
-	ndr->depth++;
-	if (r->linked_attributes) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "linked_attributes", (int)r->linked_attributes_count);
-		ndr->depth++;
-		for (cntr_linked_attributes_1=0;cntr_linked_attributes_1<r->linked_attributes_count;cntr_linked_attributes_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_linked_attributes_1) != -1) {
-				ndr_print_drsuapi_DsReplicaLinkedAttribute(ndr, "linked_attributes", &r->linked_attributes[cntr_linked_attributes_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr_print_WERROR(ndr, "drs_error", r->drs_error);
-	ndr->depth--;
-}
-
-_PUBLIC_ size_t ndr_size_drsuapi_DsGetNCChangesCtr6(const struct drsuapi_DsGetNCChangesCtr6 *r, int flags)
-{
-	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_drsuapi_DsGetNCChangesCtr6);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesMSZIPCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesMSZIPCtr1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->decompressed_length));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->compressed_length));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr1) {
-			{
-				struct ndr_push *_ndr_ctr1;
-				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ctr1, 4, r->compressed_length));
-				{
-					struct ndr_push *_ndr_ctr1_compressed;
-					NDR_CHECK(ndr_push_compression_start(_ndr_ctr1, &_ndr_ctr1_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr1(_ndr_ctr1_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
-					NDR_CHECK(ndr_push_compression_end(_ndr_ctr1, _ndr_ctr1_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_ctr1, 4, r->compressed_length));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesMSZIPCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesMSZIPCtr1 *r)
-{
-	uint32_t _ptr_ctr1;
-	TALLOC_CTX *_mem_save_ctr1_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->decompressed_length));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->compressed_length));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
-		if (_ptr_ctr1) {
-			NDR_PULL_ALLOC(ndr, r->ctr1);
-		} else {
-			r->ctr1 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr1) {
-			_mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
-			{
-				struct ndr_pull *_ndr_ctr1;
-				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_ctr1, 4, r->compressed_length));
-				{
-					struct ndr_pull *_ndr_ctr1_compressed;
-					NDR_CHECK(ndr_pull_compression_start(_ndr_ctr1, &_ndr_ctr1_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr1(_ndr_ctr1_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
-					NDR_CHECK(ndr_pull_compression_end(_ndr_ctr1, _ndr_ctr1_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_ctr1, 4, r->compressed_length));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesMSZIPCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesMSZIPCtr1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesMSZIPCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "decompressed_length", r->decompressed_length);
-	ndr_print_uint32(ndr, "compressed_length", r->compressed_length);
-	ndr_print_ptr(ndr, "ctr1", r->ctr1);
-	ndr->depth++;
-	if (r->ctr1) {
-		ndr_print_drsuapi_DsGetNCChangesCtr1(ndr, "ctr1", r->ctr1);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesMSZIPCtr6(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesMSZIPCtr6 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->decompressed_length));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->compressed_length));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr6));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr6) {
-			{
-				struct ndr_push *_ndr_ctr6;
-				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ctr6, 4, r->compressed_length));
-				{
-					struct ndr_push *_ndr_ctr6_compressed;
-					NDR_CHECK(ndr_push_compression_start(_ndr_ctr6, &_ndr_ctr6_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr6(_ndr_ctr6_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr6));
-					NDR_CHECK(ndr_push_compression_end(_ndr_ctr6, _ndr_ctr6_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_ctr6, 4, r->compressed_length));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesMSZIPCtr6(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesMSZIPCtr6 *r)
-{
-	uint32_t _ptr_ctr6;
-	TALLOC_CTX *_mem_save_ctr6_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->decompressed_length));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->compressed_length));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr6));
-		if (_ptr_ctr6) {
-			NDR_PULL_ALLOC(ndr, r->ctr6);
-		} else {
-			r->ctr6 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr6) {
-			_mem_save_ctr6_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->ctr6, 0);
-			{
-				struct ndr_pull *_ndr_ctr6;
-				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_ctr6, 4, r->compressed_length));
-				{
-					struct ndr_pull *_ndr_ctr6_compressed;
-					NDR_CHECK(ndr_pull_compression_start(_ndr_ctr6, &_ndr_ctr6_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr6(_ndr_ctr6_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr6));
-					NDR_CHECK(ndr_pull_compression_end(_ndr_ctr6, _ndr_ctr6_compressed, NDR_COMPRESSION_MSZIP, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_ctr6, 4, r->compressed_length));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr6_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesMSZIPCtr6(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesMSZIPCtr6 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesMSZIPCtr6");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "decompressed_length", r->decompressed_length);
-	ndr_print_uint32(ndr, "compressed_length", r->compressed_length);
-	ndr_print_ptr(ndr, "ctr6", r->ctr6);
-	ndr->depth++;
-	if (r->ctr6) {
-		ndr_print_drsuapi_DsGetNCChangesCtr6(ndr, "ctr6", r->ctr6);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesXPRESSCtr1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->decompressed_length));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->compressed_length));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr1) {
-			{
-				struct ndr_push *_ndr_ctr1;
-				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ctr1, 4, r->compressed_length));
-				{
-					struct ndr_push *_ndr_ctr1_compressed;
-					NDR_CHECK(ndr_push_compression_start(_ndr_ctr1, &_ndr_ctr1_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr1(_ndr_ctr1_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
-					NDR_CHECK(ndr_push_compression_end(_ndr_ctr1, _ndr_ctr1_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_ctr1, 4, r->compressed_length));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesXPRESSCtr1 *r)
-{
-	uint32_t _ptr_ctr1;
-	TALLOC_CTX *_mem_save_ctr1_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->decompressed_length));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->compressed_length));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
-		if (_ptr_ctr1) {
-			NDR_PULL_ALLOC(ndr, r->ctr1);
-		} else {
-			r->ctr1 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr1) {
-			_mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
-			{
-				struct ndr_pull *_ndr_ctr1;
-				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_ctr1, 4, r->compressed_length));
-				{
-					struct ndr_pull *_ndr_ctr1_compressed;
-					NDR_CHECK(ndr_pull_compression_start(_ndr_ctr1, &_ndr_ctr1_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr1(_ndr_ctr1_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
-					NDR_CHECK(ndr_pull_compression_end(_ndr_ctr1, _ndr_ctr1_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_ctr1, 4, r->compressed_length));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesXPRESSCtr1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesXPRESSCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "decompressed_length", r->decompressed_length);
-	ndr_print_uint32(ndr, "compressed_length", r->compressed_length);
-	ndr_print_ptr(ndr, "ctr1", r->ctr1);
-	ndr->depth++;
-	if (r->ctr1) {
-		ndr_print_drsuapi_DsGetNCChangesCtr1(ndr, "ctr1", r->ctr1);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesXPRESSCtr6 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->decompressed_length));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->compressed_length));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr6));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr6) {
-			{
-				struct ndr_push *_ndr_ctr6;
-				NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_ctr6, 4, r->compressed_length));
-				{
-					struct ndr_push *_ndr_ctr6_compressed;
-					NDR_CHECK(ndr_push_compression_start(_ndr_ctr6, &_ndr_ctr6_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr6(_ndr_ctr6_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr6));
-					NDR_CHECK(ndr_push_compression_end(_ndr_ctr6, _ndr_ctr6_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_ctr6, 4, r->compressed_length));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesXPRESSCtr6 *r)
-{
-	uint32_t _ptr_ctr6;
-	TALLOC_CTX *_mem_save_ctr6_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->decompressed_length));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->compressed_length));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr6));
-		if (_ptr_ctr6) {
-			NDR_PULL_ALLOC(ndr, r->ctr6);
-		} else {
-			r->ctr6 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->ctr6) {
-			_mem_save_ctr6_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->ctr6, 0);
-			{
-				struct ndr_pull *_ndr_ctr6;
-				NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_ctr6, 4, r->compressed_length));
-				{
-					struct ndr_pull *_ndr_ctr6_compressed;
-					NDR_CHECK(ndr_pull_compression_start(_ndr_ctr6, &_ndr_ctr6_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr6(_ndr_ctr6_compressed, NDR_SCALARS|NDR_BUFFERS, r->ctr6));
-					NDR_CHECK(ndr_pull_compression_end(_ndr_ctr6, _ndr_ctr6_compressed, NDR_COMPRESSION_XPRESS, r->decompressed_length));
-				}
-				NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_ctr6, 4, r->compressed_length));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr6_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesXPRESSCtr6 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesXPRESSCtr6");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "decompressed_length", r->decompressed_length);
-	ndr_print_uint32(ndr, "compressed_length", r->compressed_length);
-	ndr_print_ptr(ndr, "ctr6", r->ctr6);
-	ndr->depth++;
-	if (r->ctr6) {
-		ndr_print_drsuapi_DsGetNCChangesCtr6(ndr, "ctr6", r->ctr6);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCompressionType(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsGetNCChangesCompressionType r)
-{
-	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCompressionType(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsGetNCChangesCompressionType *r)
-{
-	uint16_t v;
-	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCompressionType(struct ndr_print *ndr, const char *name, enum drsuapi_DsGetNCChangesCompressionType r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_COMPRESSION_TYPE_MSZIP: val = "DRSUAPI_COMPRESSION_TYPE_MSZIP"; break;
-		case DRSUAPI_COMPRESSION_TYPE_XPRESS: val = "DRSUAPI_COMPRESSION_TYPE_XPRESS"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCompressedCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetNCChangesCompressedCtr *r)
-{
-	{
-		uint32_t _flags_save_UNION = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		if (ndr_flags & NDR_SCALARS) {
-			int level = ndr_push_get_switch_value(ndr, r);
-			switch (level) {
-				case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): {
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesMSZIPCtr1(ndr, NDR_SCALARS, &r->mszip1));
-				break; }
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): {
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesMSZIPCtr6(ndr, NDR_SCALARS, &r->mszip6));
-				break; }
-
-				case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): {
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(ndr, NDR_SCALARS, &r->xpress1));
-				break; }
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): {
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesXPRESSCtr6(ndr, NDR_SCALARS, &r->xpress6));
-				break; }
-
-				default:
-					return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-			}
-		}
-		if (ndr_flags & NDR_BUFFERS) {
-			int level = ndr_push_get_switch_value(ndr, r);
-			switch (level) {
-				case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesMSZIPCtr1(ndr, NDR_BUFFERS, &r->mszip1));
-				break;
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesMSZIPCtr6(ndr, NDR_BUFFERS, &r->mszip6));
-				break;
-
-				case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesXPRESSCtr1(ndr, NDR_BUFFERS, &r->xpress1));
-				break;
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
-					NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesXPRESSCtr6(ndr, NDR_BUFFERS, &r->xpress6));
-				break;
-
-				default:
-					return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-			}
-		}
-		ndr->flags = _flags_save_UNION;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCompressedCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetNCChangesCompressedCtr *r)
-{
-	int level;
-	{
-		uint32_t _flags_save_UNION = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		level = ndr_pull_get_switch_value(ndr, r);
-		if (ndr_flags & NDR_SCALARS) {
-			switch (level) {
-				case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): {
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesMSZIPCtr1(ndr, NDR_SCALARS, &r->mszip1));
-				break; }
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16): {
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesMSZIPCtr6(ndr, NDR_SCALARS, &r->mszip6));
-				break; }
-
-				case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): {
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesXPRESSCtr1(ndr, NDR_SCALARS, &r->xpress1));
-				break; }
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16): {
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesXPRESSCtr6(ndr, NDR_SCALARS, &r->xpress6));
-				break; }
-
-				default:
-					return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-			}
-		}
-		if (ndr_flags & NDR_BUFFERS) {
-			switch (level) {
-				case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesMSZIPCtr1(ndr, NDR_BUFFERS, &r->mszip1));
-				break;
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesMSZIPCtr6(ndr, NDR_BUFFERS, &r->mszip6));
-				break;
-
-				case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesXPRESSCtr1(ndr, NDR_BUFFERS, &r->xpress1));
-				break;
-
-				case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
-					NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesXPRESSCtr6(ndr, NDR_BUFFERS, &r->xpress6));
-				break;
-
-				default:
-					return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-			}
-		}
-		ndr->flags = _flags_save_UNION;
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCompressedCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNCChangesCompressedCtr *r)
-{
-	int level;
-	{
-		uint32_t _flags_save_UNION = ndr->flags;
-		ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
-		level = ndr_print_get_switch_value(ndr, r);
-		ndr_print_union(ndr, name, level, "drsuapi_DsGetNCChangesCompressedCtr");
-		switch (level) {
-			case 1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
-				ndr_print_drsuapi_DsGetNCChangesMSZIPCtr1(ndr, "mszip1", &r->mszip1);
-			break;
-
-			case 6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16):
-				ndr_print_drsuapi_DsGetNCChangesMSZIPCtr6(ndr, "mszip6", &r->mszip6);
-			break;
-
-			case 1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
-				ndr_print_drsuapi_DsGetNCChangesXPRESSCtr1(ndr, "xpress1", &r->xpress1);
-			break;
-
-			case 6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16):
-				ndr_print_drsuapi_DsGetNCChangesXPRESSCtr6(ndr, "xpress6", &r->xpress6);
-			break;
-
-			default:
-				ndr_print_bad_level(ndr, name, level);
-		}
-		ndr->flags = _flags_save_UNION;
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesCtr2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, 1 | (DRSUAPI_COMPRESSION_TYPE_MSZIP << 16)));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesCtr2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, 1 | (DRSUAPI_COMPRESSION_TYPE_MSZIP << 16)));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCtr2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesCtr2");
-	ndr->depth++;
-	ndr_print_set_switch_value(ndr, &r->ctr, 1 | (DRSUAPI_COMPRESSION_TYPE_MSZIP << 16));
-	ndr_print_drsuapi_DsGetNCChangesCompressedCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr7(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesCtr7 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->level));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCompressionType(ndr, NDR_SCALARS, r->type));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->level | (r->type << 16)));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr7(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesCtr7 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->level));
-		if (r->level < 0 || r->level > 6) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCompressionType(ndr, NDR_SCALARS, &r->type));
-		if (r->type < 2 || r->type > 3) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->level | (r->type << 16)));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_SCALARS, &r->ctr));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCompressedCtr(ndr, NDR_BUFFERS, &r->ctr));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCtr7(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr7 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChangesCtr7");
-	ndr->depth++;
-	ndr_print_int32(ndr, "level", r->level);
-	ndr_print_drsuapi_DsGetNCChangesCompressionType(ndr, "type", r->type);
-	ndr_print_set_switch_value(ndr, &r->ctr, r->level | (r->type << 16));
-	ndr_print_drsuapi_DsGetNCChangesCompressedCtr(ndr, "ctr", &r->ctr);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetNCChangesCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			case 6: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr6(ndr, NDR_SCALARS, &r->ctr6));
-			break; }
-
-			case 7: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr7(ndr, NDR_SCALARS, &r->ctr7));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			case 2:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			case 6:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr6(ndr, NDR_BUFFERS, &r->ctr6));
-			break;
-
-			case 7:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr7(ndr, NDR_BUFFERS, &r->ctr7));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetNCChangesCtr *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			case 6: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr6(ndr, NDR_SCALARS, &r->ctr6));
-			break; }
-
-			case 7: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr7(ndr, NDR_SCALARS, &r->ctr7));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			case 2:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			case 6:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr6(ndr, NDR_BUFFERS, &r->ctr6));
-			break;
-
-			case 7:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr7(ndr, NDR_BUFFERS, &r->ctr7));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChangesCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNCChangesCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetNCChangesCtr");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetNCChangesCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		case 2:
-			ndr_print_drsuapi_DsGetNCChangesCtr2(ndr, "ctr2", &r->ctr2);
-		break;
-
-		case 6:
-			ndr_print_drsuapi_DsGetNCChangesCtr6(ndr, "ctr6", &r->ctr6);
-		break;
-
-		case 7:
-			ndr_print_drsuapi_DsGetNCChangesCtr7(ndr, "ctr7", &r->ctr7);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaUpdateRefsOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaUpdateRefsOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaUpdateRefsOptions(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION", DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE", DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE", DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_0x00000010", DRSUAPI_DS_REPLICA_UPDATE_0x00000010, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaUpdateRefsRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaUpdateRefsRequest1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		if (r->naming_context == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_ref_ptr(ndr));
-		if (r->dest_dsa_dns_name == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_ref_ptr(ndr));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->dest_dsa_guid));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaUpdateRefsOptions(ndr, NDR_SCALARS, r->options));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dest_dsa_dns_name, CH_DOS)));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dest_dsa_dns_name, CH_DOS)));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dest_dsa_dns_name, ndr_charset_length(r->dest_dsa_dns_name, CH_DOS), sizeof(uint8_t), CH_DOS));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaUpdateRefsRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaUpdateRefsRequest1 *r)
-{
-	uint32_t _ptr_naming_context;
-	TALLOC_CTX *_mem_save_naming_context_0;
-	uint32_t _ptr_dest_dsa_dns_name;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_naming_context));
-		if (_ptr_naming_context) {
-			NDR_PULL_ALLOC(ndr, r->naming_context);
-		} else {
-			r->naming_context = NULL;
-		}
-		NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_dest_dsa_dns_name));
-		if (_ptr_dest_dsa_dns_name) {
-			NDR_PULL_ALLOC(ndr, r->dest_dsa_dns_name);
-		} else {
-			r->dest_dsa_dns_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->dest_dsa_guid));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaUpdateRefsOptions(ndr, NDR_SCALARS, &r->options));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_naming_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->naming_context, 0);
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->naming_context));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_0, 0);
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->dest_dsa_dns_name));
-		NDR_CHECK(ndr_pull_array_length(ndr, &r->dest_dsa_dns_name));
-		if (ndr_get_array_length(ndr, &r->dest_dsa_dns_name) > ndr_get_array_size(ndr, &r->dest_dsa_dns_name)) {
-			return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dest_dsa_dns_name), ndr_get_array_length(ndr, &r->dest_dsa_dns_name));
-		}
-		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dest_dsa_dns_name), sizeof(uint8_t)));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dest_dsa_dns_name, ndr_get_array_length(ndr, &r->dest_dsa_dns_name), sizeof(uint8_t), CH_DOS));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaUpdateRefsRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaUpdateRefsRequest1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaUpdateRefsRequest1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "naming_context", r->naming_context);
-	ndr->depth++;
-	ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "naming_context", r->naming_context);
-	ndr->depth--;
-	ndr_print_ptr(ndr, "dest_dsa_dns_name", r->dest_dsa_dns_name);
-	ndr->depth++;
-	ndr_print_string(ndr, "dest_dsa_dns_name", r->dest_dsa_dns_name);
-	ndr->depth--;
-	ndr_print_GUID(ndr, "dest_dsa_guid", &r->dest_dsa_guid);
-	ndr_print_drsuapi_DsReplicaUpdateRefsOptions(ndr, "options", r->options);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaUpdateRefsRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsReplicaUpdateRefsRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaUpdateRefsRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaUpdateRefsRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaUpdateRefsRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsReplicaUpdateRefsRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaUpdateRefsRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaUpdateRefsRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaUpdateRefsRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaUpdateRefsRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsReplicaUpdateRefsRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsReplicaUpdateRefsRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaAddOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAddOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAddOptions(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION", DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_ADD_WRITEABLE", DRSUAPI_DS_REPLICA_ADD_WRITEABLE, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaDeleteOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaDeleteOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaDeleteOptions(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION", DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_DELETE_WRITEABLE", DRSUAPI_DS_REPLICA_DELETE_WRITEABLE, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaModifyOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaModifyOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaModifyOptions(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION", DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE", DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsMembershipType(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsMembershipType r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsMembershipType(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsMembershipType *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsMembershipType(struct ndr_print *ndr, const char *name, enum drsuapi_DsMembershipType r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS"; break;
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS"; break;
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS"; break;
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2"; break;
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS"; break;
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS"; break;
-		case DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2: val = "DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMembershipsCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetMembershipsCtr1 *r)
-{
-	uint32_t cntr_info_array_1;
-	uint32_t cntr_group_attrs_1;
-	uint32_t cntr_sids_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_memberships));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->info_array));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->group_attrs));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info_array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_memberships));
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->num_memberships; cntr_info_array_1++) {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->info_array[cntr_info_array_1]));
-			}
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->num_memberships; cntr_info_array_1++) {
-				if (r->info_array[cntr_info_array_1]) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->info_array[cntr_info_array_1]));
-				}
-			}
-		}
-		if (r->group_attrs) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_memberships));
-			for (cntr_group_attrs_1 = 0; cntr_group_attrs_1 < r->num_memberships; cntr_group_attrs_1++) {
-				NDR_CHECK(ndr_push_samr_GroupAttrs(ndr, NDR_SCALARS, r->group_attrs[cntr_group_attrs_1]));
-			}
-		}
-		if (r->sids) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sids));
-			for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids[cntr_sids_1]));
-			}
-			for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
-				if (r->sids[cntr_sids_1]) {
-					NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_SCALARS|NDR_BUFFERS, r->sids[cntr_sids_1]));
-				}
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMembershipsCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetMembershipsCtr1 *r)
-{
-	uint32_t _ptr_info_array;
-	uint32_t cntr_info_array_1;
-	TALLOC_CTX *_mem_save_info_array_0;
-	TALLOC_CTX *_mem_save_info_array_1;
-	TALLOC_CTX *_mem_save_info_array_2;
-	uint32_t _ptr_group_attrs;
-	uint32_t cntr_group_attrs_1;
-	TALLOC_CTX *_mem_save_group_attrs_0;
-	TALLOC_CTX *_mem_save_group_attrs_1;
-	uint32_t _ptr_sids;
-	uint32_t cntr_sids_1;
-	TALLOC_CTX *_mem_save_sids_0;
-	TALLOC_CTX *_mem_save_sids_1;
-	TALLOC_CTX *_mem_save_sids_2;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_memberships));
-		if (r->num_memberships < 0 || r->num_memberships > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sids));
-		if (r->num_sids < 0 || r->num_sids > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info_array));
-		if (_ptr_info_array) {
-			NDR_PULL_ALLOC(ndr, r->info_array);
-		} else {
-			r->info_array = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_attrs));
-		if (_ptr_group_attrs) {
-			NDR_PULL_ALLOC(ndr, r->group_attrs);
-		} else {
-			r->group_attrs = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
-		if (_ptr_sids) {
-			NDR_PULL_ALLOC(ndr, r->sids);
-		} else {
-			r->sids = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info_array) {
-			_mem_save_info_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info_array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->info_array));
-			NDR_PULL_ALLOC_N(ndr, r->info_array, ndr_get_array_size(ndr, &r->info_array));
-			_mem_save_info_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info_array, 0);
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->num_memberships; cntr_info_array_1++) {
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info_array));
-				if (_ptr_info_array) {
-					NDR_PULL_ALLOC(ndr, r->info_array[cntr_info_array_1]);
-				} else {
-					r->info_array[cntr_info_array_1] = NULL;
-				}
-			}
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->num_memberships; cntr_info_array_1++) {
-				if (r->info_array[cntr_info_array_1]) {
-					_mem_save_info_array_2 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->info_array[cntr_info_array_1], 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->info_array[cntr_info_array_1]));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_array_2, 0);
-				}
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_array_0, 0);
-		}
-		if (r->group_attrs) {
-			_mem_save_group_attrs_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->group_attrs, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->group_attrs));
-			NDR_PULL_ALLOC_N(ndr, r->group_attrs, ndr_get_array_size(ndr, &r->group_attrs));
-			_mem_save_group_attrs_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->group_attrs, 0);
-			for (cntr_group_attrs_1 = 0; cntr_group_attrs_1 < r->num_memberships; cntr_group_attrs_1++) {
-				NDR_CHECK(ndr_pull_samr_GroupAttrs(ndr, NDR_SCALARS, &r->group_attrs[cntr_group_attrs_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_attrs_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_attrs_0, 0);
-		}
-		if (r->sids) {
-			_mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
-			NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
-			_mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
-			for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
-				if (_ptr_sids) {
-					NDR_PULL_ALLOC(ndr, r->sids[cntr_sids_1]);
-				} else {
-					r->sids[cntr_sids_1] = NULL;
-				}
-			}
-			for (cntr_sids_1 = 0; cntr_sids_1 < r->num_sids; cntr_sids_1++) {
-				if (r->sids[cntr_sids_1]) {
-					_mem_save_sids_2 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->sids[cntr_sids_1], 0);
-					NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_SCALARS|NDR_BUFFERS, r->sids[cntr_sids_1]));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_2, 0);
-				}
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
-		}
-		if (r->info_array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info_array, r->num_memberships));
-		}
-		if (r->group_attrs) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->group_attrs, r->num_memberships));
-		}
-		if (r->sids) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->num_sids));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMembershipsCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMembershipsCtr1 *r)
-{
-	uint32_t cntr_info_array_1;
-	uint32_t cntr_group_attrs_1;
-	uint32_t cntr_sids_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetMembershipsCtr1");
-	ndr->depth++;
-	ndr_print_NTSTATUS(ndr, "status", r->status);
-	ndr_print_uint32(ndr, "num_memberships", r->num_memberships);
-	ndr_print_uint32(ndr, "num_sids", r->num_sids);
-	ndr_print_ptr(ndr, "info_array", r->info_array);
-	ndr->depth++;
-	if (r->info_array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "info_array", (int)r->num_memberships);
-		ndr->depth++;
-		for (cntr_info_array_1=0;cntr_info_array_1<r->num_memberships;cntr_info_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_info_array_1) != -1) {
-				ndr_print_ptr(ndr, "info_array", r->info_array[cntr_info_array_1]);
-				ndr->depth++;
-				if (r->info_array[cntr_info_array_1]) {
-					ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "info_array", r->info_array[cntr_info_array_1]);
-				}
-				ndr->depth--;
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "group_attrs", r->group_attrs);
-	ndr->depth++;
-	if (r->group_attrs) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "group_attrs", (int)r->num_memberships);
-		ndr->depth++;
-		for (cntr_group_attrs_1=0;cntr_group_attrs_1<r->num_memberships;cntr_group_attrs_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_group_attrs_1) != -1) {
-				ndr_print_samr_GroupAttrs(ndr, "group_attrs", r->group_attrs[cntr_group_attrs_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "sids", r->sids);
-	ndr->depth++;
-	if (r->sids) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "sids", (int)r->num_sids);
-		ndr->depth++;
-		for (cntr_sids_1=0;cntr_sids_1<r->num_sids;cntr_sids_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_sids_1) != -1) {
-				ndr_print_ptr(ndr, "sids", r->sids[cntr_sids_1]);
-				ndr->depth++;
-				if (r->sids[cntr_sids_1]) {
-					ndr_print_dom_sid28(ndr, "sids", r->sids[cntr_sids_1]);
-				}
-				ndr->depth--;
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMembershipsCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetMembershipsCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMembershipsCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetMembershipsCtr *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMembershipsCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMembershipsCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetMembershipsCtr");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetMembershipsCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMembershipsRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetMembershipsRequest1 *r)
-{
-	uint32_t cntr_info_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->info_array));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
-		NDR_CHECK(ndr_push_drsuapi_DsMembershipType(ndr, NDR_SCALARS, r->type));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info_array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->count; cntr_info_array_1++) {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->info_array[cntr_info_array_1]));
-			}
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->count; cntr_info_array_1++) {
-				if (r->info_array[cntr_info_array_1]) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->info_array[cntr_info_array_1]));
-				}
-			}
-		}
-		if (r->domain) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMembershipsRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetMembershipsRequest1 *r)
-{
-	uint32_t _ptr_info_array;
-	uint32_t cntr_info_array_1;
-	TALLOC_CTX *_mem_save_info_array_0;
-	TALLOC_CTX *_mem_save_info_array_1;
-	TALLOC_CTX *_mem_save_info_array_2;
-	uint32_t _ptr_domain;
-	TALLOC_CTX *_mem_save_domain_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 1 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info_array));
-		if (_ptr_info_array) {
-			NDR_PULL_ALLOC(ndr, r->info_array);
-		} else {
-			r->info_array = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
-		NDR_CHECK(ndr_pull_drsuapi_DsMembershipType(ndr, NDR_SCALARS, &r->type));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
-		if (_ptr_domain) {
-			NDR_PULL_ALLOC(ndr, r->domain);
-		} else {
-			r->domain = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info_array) {
-			_mem_save_info_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info_array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->info_array));
-			NDR_PULL_ALLOC_N(ndr, r->info_array, ndr_get_array_size(ndr, &r->info_array));
-			_mem_save_info_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info_array, 0);
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->count; cntr_info_array_1++) {
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info_array));
-				if (_ptr_info_array) {
-					NDR_PULL_ALLOC(ndr, r->info_array[cntr_info_array_1]);
-				} else {
-					r->info_array[cntr_info_array_1] = NULL;
-				}
-			}
-			for (cntr_info_array_1 = 0; cntr_info_array_1 < r->count; cntr_info_array_1++) {
-				if (r->info_array[cntr_info_array_1]) {
-					_mem_save_info_array_2 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->info_array[cntr_info_array_1], 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->info_array[cntr_info_array_1]));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_array_2, 0);
-				}
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_array_0, 0);
-		}
-		if (r->domain) {
-			_mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
-		}
-		if (r->info_array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info_array, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMembershipsRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMembershipsRequest1 *r)
-{
-	uint32_t cntr_info_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetMembershipsRequest1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "info_array", r->info_array);
-	ndr->depth++;
-	if (r->info_array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "info_array", (int)r->count);
-		ndr->depth++;
-		for (cntr_info_array_1=0;cntr_info_array_1<r->count;cntr_info_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_info_array_1) != -1) {
-				ndr_print_ptr(ndr, "info_array", r->info_array[cntr_info_array_1]);
-				ndr->depth++;
-				if (r->info_array[cntr_info_array_1]) {
-					ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "info_array", r->info_array[cntr_info_array_1]);
-				}
-				ndr->depth--;
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "flags", r->flags);
-	ndr_print_drsuapi_DsMembershipType(ndr, "type", r->type);
-	ndr_print_ptr(ndr, "domain", r->domain);
-	ndr->depth++;
-	if (r->domain) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "domain", r->domain);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMembershipsRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetMembershipsRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMembershipsRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetMembershipsRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMembershipsRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMembershipsRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetMembershipsRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetMembershipsRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNT4ChangeLogRequest1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNT4ChangeLogRequest1 *r)
-{
-	uint32_t _ptr_data;
-	TALLOC_CTX *_mem_save_data_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
-		if (r->length < 0 || r->length > 0x00A00000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
-		if (_ptr_data) {
-			NDR_PULL_ALLOC(ndr, r->data);
-		} else {
-			r->data = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data) {
-			_mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
-			NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
-		}
-		if (r->data) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNT4ChangeLogRequest1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNT4ChangeLogRequest1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_uint32(ndr, "length", r->length);
-	ndr_print_ptr(ndr, "data", r->data);
-	ndr->depth++;
-	if (r->data) {
-		ndr_print_array_uint8(ndr, "data", r->data, r->length);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetNT4ChangeLogRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetNT4ChangeLogRequest *r)
-{
-	int level;
-	uint32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNT4ChangeLogRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetNT4ChangeLogRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetNT4ChangeLogRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNT4ChangeLogInfo1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length2));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time2));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown3));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time4));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown5));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time6));
-		NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data1));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data2));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data1) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length1));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data1, r->length1));
-		}
-		if (r->data2) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length2));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data2, r->length2));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNT4ChangeLogInfo1 *r)
-{
-	uint32_t _ptr_data1;
-	TALLOC_CTX *_mem_save_data1_0;
-	uint32_t _ptr_data2;
-	TALLOC_CTX *_mem_save_data2_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length1));
-		if (r->length1 < 0 || r->length1 > 0x00A00000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length2));
-		if (r->length2 < 0 || r->length2 > 0x00A00000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time2));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown3));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time4));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown5));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time6));
-		NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data1));
-		if (_ptr_data1) {
-			NDR_PULL_ALLOC(ndr, r->data1);
-		} else {
-			r->data1 = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data2));
-		if (_ptr_data2) {
-			NDR_PULL_ALLOC(ndr, r->data2);
-		} else {
-			r->data2 = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data1) {
-			_mem_save_data1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data1, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data1));
-			NDR_PULL_ALLOC_N(ndr, r->data1, ndr_get_array_size(ndr, &r->data1));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data1, ndr_get_array_size(ndr, &r->data1)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data1_0, 0);
-		}
-		if (r->data2) {
-			_mem_save_data2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data2, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data2));
-			NDR_PULL_ALLOC_N(ndr, r->data2, ndr_get_array_size(ndr, &r->data2));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data2, ndr_get_array_size(ndr, &r->data2)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data2_0, 0);
-		}
-		if (r->data1) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data1, r->length1));
-		}
-		if (r->data2) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data2, r->length2));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNT4ChangeLogInfo1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNT4ChangeLogInfo1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "length1", r->length1);
-	ndr_print_uint32(ndr, "length2", r->length2);
-	ndr_print_hyper(ndr, "unknown1", r->unknown1);
-	ndr_print_NTTIME(ndr, "time2", r->time2);
-	ndr_print_hyper(ndr, "unknown3", r->unknown3);
-	ndr_print_NTTIME(ndr, "time4", r->time4);
-	ndr_print_hyper(ndr, "unknown5", r->unknown5);
-	ndr_print_NTTIME(ndr, "time6", r->time6);
-	ndr_print_NTSTATUS(ndr, "status", r->status);
-	ndr_print_ptr(ndr, "data1", r->data1);
-	ndr->depth++;
-	if (r->data1) {
-		ndr_print_array_uint8(ndr, "data1", r->data1, r->length1);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "data2", r->data2);
-	ndr->depth++;
-	if (r->data2) {
-		ndr_print_array_uint8(ndr, "data2", r->data2, r->length2);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogInfo(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetNT4ChangeLogInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogInfo1(ndr, NDR_SCALARS, &r->info1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogInfo1(ndr, NDR_BUFFERS, &r->info1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogInfo(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetNT4ChangeLogInfo *r)
-{
-	int level;
-	uint32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogInfo1(ndr, NDR_SCALARS, &r->info1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogInfo1(ndr, NDR_BUFFERS, &r->info1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNT4ChangeLogInfo *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetNT4ChangeLogInfo");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetNT4ChangeLogInfo1(ndr, "info1", &r->info1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameStatus(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsNameStatus r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameStatus(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsNameStatus *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameStatus(struct ndr_print *ndr, const char *name, enum drsuapi_DsNameStatus r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_NAME_STATUS_OK: val = "DRSUAPI_DS_NAME_STATUS_OK"; break;
-		case DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR: val = "DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR"; break;
-		case DRSUAPI_DS_NAME_STATUS_NOT_FOUND: val = "DRSUAPI_DS_NAME_STATUS_NOT_FOUND"; break;
-		case DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE: val = "DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE"; break;
-		case DRSUAPI_DS_NAME_STATUS_NO_MAPPING: val = "DRSUAPI_DS_NAME_STATUS_NO_MAPPING"; break;
-		case DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY: val = "DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY"; break;
-		case DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING: val = "DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING"; break;
-		case DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL: val = "DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameFlags(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsNameFlags r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameFlags(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsNameFlags *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameFlags(struct ndr_print *ndr, const char *name, enum drsuapi_DsNameFlags r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_NAME_FLAG_NO_FLAGS: val = "DRSUAPI_DS_NAME_FLAG_NO_FLAGS"; break;
-		case DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY: val = "DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY"; break;
-		case DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC: val = "DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC"; break;
-		case DRSUAPI_DS_NAME_FLAG_GCVERIFY: val = "DRSUAPI_DS_NAME_FLAG_GCVERIFY"; break;
-		case DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL: val = "DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameFormat(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsNameFormat r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameFormat(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsNameFormat *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameFormat(struct ndr_print *ndr, const char *name, enum drsuapi_DsNameFormat r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_NAME_FORMAT_UKNOWN: val = "DRSUAPI_DS_NAME_FORMAT_UKNOWN"; break;
-		case DRSUAPI_DS_NAME_FORMAT_FQDN_1779: val = "DRSUAPI_DS_NAME_FORMAT_FQDN_1779"; break;
-		case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT: val = "DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT"; break;
-		case DRSUAPI_DS_NAME_FORMAT_DISPLAY: val = "DRSUAPI_DS_NAME_FORMAT_DISPLAY"; break;
-		case DRSUAPI_DS_NAME_FORMAT_GUID: val = "DRSUAPI_DS_NAME_FORMAT_GUID"; break;
-		case DRSUAPI_DS_NAME_FORMAT_CANONICAL: val = "DRSUAPI_DS_NAME_FORMAT_CANONICAL"; break;
-		case DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL: val = "DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL"; break;
-		case DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX: val = "DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX"; break;
-		case DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL: val = "DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL"; break;
-		case DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY: val = "DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY"; break;
-		case DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN: val = "DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameString(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsNameString *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->str));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->str) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->str, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->str, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->str, ndr_charset_length(r->str, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameString(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsNameString *r)
-{
-	uint32_t _ptr_str;
-	TALLOC_CTX *_mem_save_str_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_str));
-		if (_ptr_str) {
-			NDR_PULL_ALLOC(ndr, r->str);
-		} else {
-			r->str = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->str) {
-			_mem_save_str_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->str, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->str));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->str));
-			if (ndr_get_array_length(ndr, &r->str) > ndr_get_array_size(ndr, &r->str)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->str), ndr_get_array_length(ndr, &r->str));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->str), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->str, ndr_get_array_length(ndr, &r->str), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_str_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameString(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameString *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsNameString");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "str", r->str);
-	ndr->depth++;
-	if (r->str) {
-		ndr_print_string(ndr, "str", r->str);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsNameRequest1 *r)
-{
-	uint32_t cntr_names_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->codepage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->language));
-		NDR_CHECK(ndr_push_drsuapi_DsNameFlags(ndr, NDR_SCALARS, r->format_flags));
-		NDR_CHECK(ndr_push_drsuapi_DsNameFormat(ndr, NDR_SCALARS, r->format_offered));
-		NDR_CHECK(ndr_push_drsuapi_DsNameFormat(ndr, NDR_SCALARS, r->format_desired));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->names));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->names) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsNameString(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
-			}
-			for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsNameString(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsNameRequest1 *r)
-{
-	uint32_t _ptr_names;
-	uint32_t cntr_names_1;
-	TALLOC_CTX *_mem_save_names_0;
-	TALLOC_CTX *_mem_save_names_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->codepage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->language));
-		NDR_CHECK(ndr_pull_drsuapi_DsNameFlags(ndr, NDR_SCALARS, &r->format_flags));
-		NDR_CHECK(ndr_pull_drsuapi_DsNameFormat(ndr, NDR_SCALARS, &r->format_offered));
-		NDR_CHECK(ndr_pull_drsuapi_DsNameFormat(ndr, NDR_SCALARS, &r->format_desired));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 1 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_names));
-		if (_ptr_names) {
-			NDR_PULL_ALLOC(ndr, r->names);
-		} else {
-			r->names = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->names) {
-			_mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->names));
-			NDR_PULL_ALLOC_N(ndr, r->names, ndr_get_array_size(ndr, &r->names));
-			_mem_save_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
-			for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameString(ndr, NDR_SCALARS, &r->names[cntr_names_1]));
-			}
-			for (cntr_names_1 = 0; cntr_names_1 < r->count; cntr_names_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameString(ndr, NDR_BUFFERS, &r->names[cntr_names_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
-		}
-		if (r->names) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->names, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameRequest1 *r)
-{
-	uint32_t cntr_names_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsNameRequest1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "codepage", r->codepage);
-	ndr_print_uint32(ndr, "language", r->language);
-	ndr_print_drsuapi_DsNameFlags(ndr, "format_flags", r->format_flags);
-	ndr_print_drsuapi_DsNameFormat(ndr, "format_offered", r->format_offered);
-	ndr_print_drsuapi_DsNameFormat(ndr, "format_desired", r->format_desired);
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "names", r->names);
-	ndr->depth++;
-	if (r->names) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "names", (int)r->count);
-		ndr->depth++;
-		for (cntr_names_1=0;cntr_names_1<r->count;cntr_names_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_names_1) != -1) {
-				ndr_print_drsuapi_DsNameString(ndr, "names", &r->names[cntr_names_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsNameRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsNameRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsNameRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsNameRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsNameRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsNameRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsNameRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsNameRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameInfo1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsNameInfo1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsNameStatus(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_domain_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->result_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->dns_domain_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_domain_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_domain_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_domain_name, ndr_charset_length(r->dns_domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->result_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->result_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->result_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->result_name, ndr_charset_length(r->result_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameInfo1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsNameInfo1 *r)
-{
-	uint32_t _ptr_dns_domain_name;
-	TALLOC_CTX *_mem_save_dns_domain_name_0;
-	uint32_t _ptr_result_name;
-	TALLOC_CTX *_mem_save_result_name_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsNameStatus(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_domain_name));
-		if (_ptr_dns_domain_name) {
-			NDR_PULL_ALLOC(ndr, r->dns_domain_name);
-		} else {
-			r->dns_domain_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_result_name));
-		if (_ptr_result_name) {
-			NDR_PULL_ALLOC(ndr, r->result_name);
-		} else {
-			r->result_name = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->dns_domain_name) {
-			_mem_save_dns_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->dns_domain_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_domain_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_domain_name));
-			if (ndr_get_array_length(ndr, &r->dns_domain_name) > ndr_get_array_size(ndr, &r->dns_domain_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_domain_name), ndr_get_array_length(ndr, &r->dns_domain_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_domain_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_domain_name, ndr_get_array_length(ndr, &r->dns_domain_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_domain_name_0, 0);
-		}
-		if (r->result_name) {
-			_mem_save_result_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->result_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->result_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->result_name));
-			if (ndr_get_array_length(ndr, &r->result_name) > ndr_get_array_size(ndr, &r->result_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->result_name), ndr_get_array_length(ndr, &r->result_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->result_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->result_name, ndr_get_array_length(ndr, &r->result_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_result_name_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameInfo1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsNameInfo1");
-	ndr->depth++;
-	ndr_print_drsuapi_DsNameStatus(ndr, "status", r->status);
-	ndr_print_ptr(ndr, "dns_domain_name", r->dns_domain_name);
-	ndr->depth++;
-	if (r->dns_domain_name) {
-		ndr_print_string(ndr, "dns_domain_name", r->dns_domain_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "result_name", r->result_name);
-	ndr->depth++;
-	if (r->result_name) {
-		ndr_print_string(ndr, "result_name", r->result_name);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsNameCtr1 *r)
-{
-	uint32_t cntr_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsNameInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsNameInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsNameCtr1 *r)
-{
-	uint32_t _ptr_array;
-	uint32_t cntr_array_1;
-	TALLOC_CTX *_mem_save_array_0;
-	TALLOC_CTX *_mem_save_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
-		if (_ptr_array) {
-			NDR_PULL_ALLOC(ndr, r->array);
-		} else {
-			r->array = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-			NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-			_mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		}
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameCtr1 *r)
-{
-	uint32_t cntr_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsNameCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "array", r->array);
-	ndr->depth++;
-	if (r->array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-		ndr->depth++;
-		for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
-				ndr_print_drsuapi_DsNameInfo1(ndr, "array", &r->array[cntr_array_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsNameCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsNameCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				if (r->ctr1) {
-					NDR_CHECK(ndr_push_drsuapi_DsNameCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
-				}
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsNameCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsNameCtr *r)
-{
-	int level;
-	int32_t _level;
-	TALLOC_CTX *_mem_save_ctr1_0;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				uint32_t _ptr_ctr1;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr1));
-				if (_ptr_ctr1) {
-					NDR_PULL_ALLOC(ndr, r->ctr1);
-				} else {
-					r->ctr1 = NULL;
-				}
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				if (r->ctr1) {
-					_mem_save_ctr1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->ctr1, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsNameCtr1(ndr, NDR_SCALARS|NDR_BUFFERS, r->ctr1));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr1_0, 0);
-				}
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsNameCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsNameCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsNameCtr");
-	switch (level) {
-		case 1:
-			ndr_print_ptr(ndr, "ctr1", r->ctr1);
-			ndr->depth++;
-			if (r->ctr1) {
-				ndr_print_drsuapi_DsNameCtr1(ndr, "ctr1", r->ctr1);
-			}
-			ndr->depth--;
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsSpnOperation(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsSpnOperation r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsSpnOperation(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsSpnOperation *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsSpnOperation(struct ndr_print *ndr, const char *name, enum drsuapi_DsSpnOperation r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_SPN_OPERATION_ADD: val = "DRSUAPI_DS_SPN_OPERATION_ADD"; break;
-		case DRSUAPI_DS_SPN_OPERATION_REPLACE: val = "DRSUAPI_DS_SPN_OPERATION_REPLACE"; break;
-		case DRSUAPI_DS_SPN_OPERATION_DELETE: val = "DRSUAPI_DS_SPN_OPERATION_DELETE"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsWriteAccountSpnRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsWriteAccountSpnRequest1 *r)
-{
-	uint32_t cntr_spn_names_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsSpnOperation(ndr, NDR_SCALARS, r->operation));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->object_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->spn_names));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->object_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->object_dn, ndr_charset_length(r->object_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->spn_names) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_spn_names_1 = 0; cntr_spn_names_1 < r->count; cntr_spn_names_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsNameString(ndr, NDR_SCALARS, &r->spn_names[cntr_spn_names_1]));
-			}
-			for (cntr_spn_names_1 = 0; cntr_spn_names_1 < r->count; cntr_spn_names_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsNameString(ndr, NDR_BUFFERS, &r->spn_names[cntr_spn_names_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsWriteAccountSpnRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsWriteAccountSpnRequest1 *r)
-{
-	uint32_t _ptr_object_dn;
-	TALLOC_CTX *_mem_save_object_dn_0;
-	uint32_t _ptr_spn_names;
-	uint32_t cntr_spn_names_1;
-	TALLOC_CTX *_mem_save_spn_names_0;
-	TALLOC_CTX *_mem_save_spn_names_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsSpnOperation(ndr, NDR_SCALARS, &r->operation));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object_dn));
-		if (_ptr_object_dn) {
-			NDR_PULL_ALLOC(ndr, r->object_dn);
-		} else {
-			r->object_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_spn_names));
-		if (_ptr_spn_names) {
-			NDR_PULL_ALLOC(ndr, r->spn_names);
-		} else {
-			r->spn_names = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->object_dn) {
-			_mem_save_object_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->object_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->object_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->object_dn));
-			if (ndr_get_array_length(ndr, &r->object_dn) > ndr_get_array_size(ndr, &r->object_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->object_dn), ndr_get_array_length(ndr, &r->object_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->object_dn, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_dn_0, 0);
-		}
-		if (r->spn_names) {
-			_mem_save_spn_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->spn_names, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->spn_names));
-			NDR_PULL_ALLOC_N(ndr, r->spn_names, ndr_get_array_size(ndr, &r->spn_names));
-			_mem_save_spn_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->spn_names, 0);
-			for (cntr_spn_names_1 = 0; cntr_spn_names_1 < r->count; cntr_spn_names_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameString(ndr, NDR_SCALARS, &r->spn_names[cntr_spn_names_1]));
-			}
-			for (cntr_spn_names_1 = 0; cntr_spn_names_1 < r->count; cntr_spn_names_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsNameString(ndr, NDR_BUFFERS, &r->spn_names[cntr_spn_names_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_spn_names_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_spn_names_0, 0);
-		}
-		if (r->spn_names) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->spn_names, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsWriteAccountSpnRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsWriteAccountSpnRequest1 *r)
-{
-	uint32_t cntr_spn_names_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsWriteAccountSpnRequest1");
-	ndr->depth++;
-	ndr_print_drsuapi_DsSpnOperation(ndr, "operation", r->operation);
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_ptr(ndr, "object_dn", r->object_dn);
-	ndr->depth++;
-	if (r->object_dn) {
-		ndr_print_string(ndr, "object_dn", r->object_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "spn_names", r->spn_names);
-	ndr->depth++;
-	if (r->spn_names) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "spn_names", (int)r->count);
-		ndr->depth++;
-		for (cntr_spn_names_1=0;cntr_spn_names_1<r->count;cntr_spn_names_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_spn_names_1) != -1) {
-				ndr_print_drsuapi_DsNameString(ndr, "spn_names", &r->spn_names[cntr_spn_names_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsWriteAccountSpnRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsWriteAccountSpnRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsWriteAccountSpnRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsWriteAccountSpnRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsWriteAccountSpnRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsWriteAccountSpnRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsWriteAccountSpnRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsWriteAccountSpnRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsWriteAccountSpnRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsWriteAccountSpnRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsWriteAccountSpnRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsWriteAccountSpnRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsWriteAccountSpnResult1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsWriteAccountSpnResult1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->status));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsWriteAccountSpnResult1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsWriteAccountSpnResult1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->status));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsWriteAccountSpnResult1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsWriteAccountSpnResult1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsWriteAccountSpnResult1");
-	ndr->depth++;
-	ndr_print_WERROR(ndr, "status", r->status);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsWriteAccountSpnResult(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsWriteAccountSpnResult *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsWriteAccountSpnResult1(ndr, NDR_SCALARS, &r->res1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsWriteAccountSpnResult(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsWriteAccountSpnResult *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsWriteAccountSpnResult1(ndr, NDR_SCALARS, &r->res1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsWriteAccountSpnResult(struct ndr_print *ndr, const char *name, const union drsuapi_DsWriteAccountSpnResult *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsWriteAccountSpnResult");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsWriteAccountSpnResult1(ndr, "res1", &r->res1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsRemoveDSServerRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsRemoveDSServerRequest1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->server_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_dn, ndr_charset_length(r->server_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->domain_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain_dn, ndr_charset_length(r->domain_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsRemoveDSServerRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsRemoveDSServerRequest1 *r)
-{
-	uint32_t _ptr_server_dn;
-	TALLOC_CTX *_mem_save_server_dn_0;
-	uint32_t _ptr_domain_dn;
-	TALLOC_CTX *_mem_save_domain_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_dn));
-		if (_ptr_server_dn) {
-			NDR_PULL_ALLOC(ndr, r->server_dn);
-		} else {
-			r->server_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_dn));
-		if (_ptr_domain_dn) {
-			NDR_PULL_ALLOC(ndr, r->domain_dn);
-		} else {
-			r->domain_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->server_dn) {
-			_mem_save_server_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->server_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->server_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->server_dn));
-			if (ndr_get_array_length(ndr, &r->server_dn) > ndr_get_array_size(ndr, &r->server_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_dn), ndr_get_array_length(ndr, &r->server_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_dn, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_dn_0, 0);
-		}
-		if (r->domain_dn) {
-			_mem_save_domain_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->domain_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->domain_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->domain_dn));
-			if (ndr_get_array_length(ndr, &r->domain_dn) > ndr_get_array_size(ndr, &r->domain_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain_dn), ndr_get_array_length(ndr, &r->domain_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain_dn, ndr_get_array_length(ndr, &r->domain_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsRemoveDSServerRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsRemoveDSServerRequest1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsRemoveDSServerRequest1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "server_dn", r->server_dn);
-	ndr->depth++;
-	if (r->server_dn) {
-		ndr_print_string(ndr, "server_dn", r->server_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "domain_dn", r->domain_dn);
-	ndr->depth++;
-	if (r->domain_dn) {
-		ndr_print_string(ndr, "domain_dn", r->domain_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "unknown", r->unknown);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsRemoveDSServerRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsRemoveDSServerRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsRemoveDSServerRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsRemoveDSServerRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsRemoveDSServerRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsRemoveDSServerRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsRemoveDSServerRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsRemoveDSServerRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsRemoveDSServerRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsRemoveDSServerRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsRemoveDSServerRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsRemoveDSServerRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsRemoveDSServerResult1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsRemoveDSServerResult1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->status));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsRemoveDSServerResult1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsRemoveDSServerResult1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->status));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsRemoveDSServerResult1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsRemoveDSServerResult1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsRemoveDSServerResult1");
-	ndr->depth++;
-	ndr_print_WERROR(ndr, "status", r->status);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsRemoveDSServerResult(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsRemoveDSServerResult *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsRemoveDSServerResult1(ndr, NDR_SCALARS, &r->res1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsRemoveDSServerResult(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsRemoveDSServerResult *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsRemoveDSServerResult1(ndr, NDR_SCALARS, &r->res1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsRemoveDSServerResult(struct ndr_print *ndr, const char *name, const union drsuapi_DsRemoveDSServerResult *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsRemoveDSServerResult");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsRemoveDSServerResult1(ndr, "res1", &r->res1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfoRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfoRequest1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_name));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->level));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->domain_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain_name, ndr_charset_length(r->domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfoRequest1 *r)
-{
-	uint32_t _ptr_domain_name;
-	TALLOC_CTX *_mem_save_domain_name_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
-		if (_ptr_domain_name) {
-			NDR_PULL_ALLOC(ndr, r->domain_name);
-		} else {
-			r->domain_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->level));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->domain_name) {
-			_mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->domain_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->domain_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->domain_name));
-			if (ndr_get_array_length(ndr, &r->domain_name) > ndr_get_array_size(ndr, &r->domain_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain_name), ndr_get_array_length(ndr, &r->domain_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain_name, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfoRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoRequest1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfoRequest1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "domain_name", r->domain_name);
-	ndr->depth++;
-	if (r->domain_name) {
-		ndr_print_string(ndr, "domain_name", r->domain_name);
-	}
-	ndr->depth--;
-	ndr_print_int32(ndr, "level", r->level);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfoRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetDCInfoRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetDCInfoRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfoRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetDCInfoRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetDCInfoRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetDCInfoRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfo1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfo1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->computer_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_pdc));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_enabled));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->netbios_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->dns_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->site_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_name, ndr_charset_length(r->site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->computer_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->computer_dn, ndr_charset_length(r->computer_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->server_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_dn, ndr_charset_length(r->server_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfo1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfo1 *r)
-{
-	uint32_t _ptr_netbios_name;
-	TALLOC_CTX *_mem_save_netbios_name_0;
-	uint32_t _ptr_dns_name;
-	TALLOC_CTX *_mem_save_dns_name_0;
-	uint32_t _ptr_site_name;
-	TALLOC_CTX *_mem_save_site_name_0;
-	uint32_t _ptr_computer_dn;
-	TALLOC_CTX *_mem_save_computer_dn_0;
-	uint32_t _ptr_server_dn;
-	TALLOC_CTX *_mem_save_server_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
-		if (_ptr_netbios_name) {
-			NDR_PULL_ALLOC(ndr, r->netbios_name);
-		} else {
-			r->netbios_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
-		if (_ptr_dns_name) {
-			NDR_PULL_ALLOC(ndr, r->dns_name);
-		} else {
-			r->dns_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
-		if (_ptr_site_name) {
-			NDR_PULL_ALLOC(ndr, r->site_name);
-		} else {
-			r->site_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_dn));
-		if (_ptr_computer_dn) {
-			NDR_PULL_ALLOC(ndr, r->computer_dn);
-		} else {
-			r->computer_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_dn));
-		if (_ptr_server_dn) {
-			NDR_PULL_ALLOC(ndr, r->server_dn);
-		} else {
-			r->server_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_pdc));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_enabled));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->netbios_name) {
-			_mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
-			if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->netbios_name), ndr_get_array_length(ndr, &r->netbios_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
-		}
-		if (r->dns_name) {
-			_mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
-			if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_name), ndr_get_array_length(ndr, &r->dns_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
-		}
-		if (r->site_name) {
-			_mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->site_name));
-			if (ndr_get_array_length(ndr, &r->site_name) > ndr_get_array_size(ndr, &r->site_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_name), ndr_get_array_length(ndr, &r->site_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_name, ndr_get_array_length(ndr, &r->site_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
-		}
-		if (r->computer_dn) {
-			_mem_save_computer_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->computer_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->computer_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->computer_dn));
-			if (ndr_get_array_length(ndr, &r->computer_dn) > ndr_get_array_size(ndr, &r->computer_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->computer_dn), ndr_get_array_length(ndr, &r->computer_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->computer_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->computer_dn, ndr_get_array_length(ndr, &r->computer_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_dn_0, 0);
-		}
-		if (r->server_dn) {
-			_mem_save_server_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->server_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->server_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->server_dn));
-			if (ndr_get_array_length(ndr, &r->server_dn) > ndr_get_array_size(ndr, &r->server_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_dn), ndr_get_array_length(ndr, &r->server_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_dn, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfo1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfo1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
-	ndr->depth++;
-	if (r->netbios_name) {
-		ndr_print_string(ndr, "netbios_name", r->netbios_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "dns_name", r->dns_name);
-	ndr->depth++;
-	if (r->dns_name) {
-		ndr_print_string(ndr, "dns_name", r->dns_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "site_name", r->site_name);
-	ndr->depth++;
-	if (r->site_name) {
-		ndr_print_string(ndr, "site_name", r->site_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "computer_dn", r->computer_dn);
-	ndr->depth++;
-	if (r->computer_dn) {
-		ndr_print_string(ndr, "computer_dn", r->computer_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "server_dn", r->server_dn);
-	ndr->depth++;
-	if (r->server_dn) {
-		ndr_print_string(ndr, "server_dn", r->server_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "is_pdc", r->is_pdc);
-	ndr_print_uint32(ndr, "is_enabled", r->is_enabled);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfoCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfoCtr1 *r)
-{
-	uint32_t cntr_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfoCtr1 *r)
-{
-	uint32_t _ptr_array;
-	uint32_t cntr_array_1;
-	TALLOC_CTX *_mem_save_array_0;
-	TALLOC_CTX *_mem_save_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
-		if (_ptr_array) {
-			NDR_PULL_ALLOC(ndr, r->array);
-		} else {
-			r->array = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-			NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-			_mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfo1(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfo1(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		}
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfoCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoCtr1 *r)
-{
-	uint32_t cntr_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfoCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "array", r->array);
-	ndr->depth++;
-	if (r->array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-		ndr->depth++;
-		for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
-				ndr_print_drsuapi_DsGetDCInfo1(ndr, "array", &r->array[cntr_array_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfo2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfo2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->computer_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->ntds_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_pdc));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_enabled));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_gc));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->computer_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->server_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->ntds_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->netbios_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->dns_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->site_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_name, ndr_charset_length(r->site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->site_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_dn, ndr_charset_length(r->site_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->computer_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->computer_dn, ndr_charset_length(r->computer_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->server_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_dn, ndr_charset_length(r->server_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->ntds_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->ntds_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->ntds_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->ntds_dn, ndr_charset_length(r->ntds_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfo2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfo2 *r)
-{
-	uint32_t _ptr_netbios_name;
-	TALLOC_CTX *_mem_save_netbios_name_0;
-	uint32_t _ptr_dns_name;
-	TALLOC_CTX *_mem_save_dns_name_0;
-	uint32_t _ptr_site_name;
-	TALLOC_CTX *_mem_save_site_name_0;
-	uint32_t _ptr_site_dn;
-	TALLOC_CTX *_mem_save_site_dn_0;
-	uint32_t _ptr_computer_dn;
-	TALLOC_CTX *_mem_save_computer_dn_0;
-	uint32_t _ptr_server_dn;
-	TALLOC_CTX *_mem_save_server_dn_0;
-	uint32_t _ptr_ntds_dn;
-	TALLOC_CTX *_mem_save_ntds_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
-		if (_ptr_netbios_name) {
-			NDR_PULL_ALLOC(ndr, r->netbios_name);
-		} else {
-			r->netbios_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
-		if (_ptr_dns_name) {
-			NDR_PULL_ALLOC(ndr, r->dns_name);
-		} else {
-			r->dns_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
-		if (_ptr_site_name) {
-			NDR_PULL_ALLOC(ndr, r->site_name);
-		} else {
-			r->site_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_dn));
-		if (_ptr_site_dn) {
-			NDR_PULL_ALLOC(ndr, r->site_dn);
-		} else {
-			r->site_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_dn));
-		if (_ptr_computer_dn) {
-			NDR_PULL_ALLOC(ndr, r->computer_dn);
-		} else {
-			r->computer_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_dn));
-		if (_ptr_server_dn) {
-			NDR_PULL_ALLOC(ndr, r->server_dn);
-		} else {
-			r->server_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ntds_dn));
-		if (_ptr_ntds_dn) {
-			NDR_PULL_ALLOC(ndr, r->ntds_dn);
-		} else {
-			r->ntds_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_pdc));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_enabled));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_gc));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->computer_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->server_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->ntds_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->netbios_name) {
-			_mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
-			if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->netbios_name), ndr_get_array_length(ndr, &r->netbios_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
-		}
-		if (r->dns_name) {
-			_mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
-			if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_name), ndr_get_array_length(ndr, &r->dns_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
-		}
-		if (r->site_name) {
-			_mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->site_name));
-			if (ndr_get_array_length(ndr, &r->site_name) > ndr_get_array_size(ndr, &r->site_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_name), ndr_get_array_length(ndr, &r->site_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_name, ndr_get_array_length(ndr, &r->site_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
-		}
-		if (r->site_dn) {
-			_mem_save_site_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->site_dn));
-			if (ndr_get_array_length(ndr, &r->site_dn) > ndr_get_array_size(ndr, &r->site_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_dn), ndr_get_array_length(ndr, &r->site_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_dn, ndr_get_array_length(ndr, &r->site_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_dn_0, 0);
-		}
-		if (r->computer_dn) {
-			_mem_save_computer_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->computer_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->computer_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->computer_dn));
-			if (ndr_get_array_length(ndr, &r->computer_dn) > ndr_get_array_size(ndr, &r->computer_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->computer_dn), ndr_get_array_length(ndr, &r->computer_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->computer_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->computer_dn, ndr_get_array_length(ndr, &r->computer_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_dn_0, 0);
-		}
-		if (r->server_dn) {
-			_mem_save_server_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->server_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->server_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->server_dn));
-			if (ndr_get_array_length(ndr, &r->server_dn) > ndr_get_array_size(ndr, &r->server_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_dn), ndr_get_array_length(ndr, &r->server_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_dn, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_dn_0, 0);
-		}
-		if (r->ntds_dn) {
-			_mem_save_ntds_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->ntds_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->ntds_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->ntds_dn));
-			if (ndr_get_array_length(ndr, &r->ntds_dn) > ndr_get_array_size(ndr, &r->ntds_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->ntds_dn), ndr_get_array_length(ndr, &r->ntds_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->ntds_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->ntds_dn, ndr_get_array_length(ndr, &r->ntds_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ntds_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfo2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfo2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfo2");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
-	ndr->depth++;
-	if (r->netbios_name) {
-		ndr_print_string(ndr, "netbios_name", r->netbios_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "dns_name", r->dns_name);
-	ndr->depth++;
-	if (r->dns_name) {
-		ndr_print_string(ndr, "dns_name", r->dns_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "site_name", r->site_name);
-	ndr->depth++;
-	if (r->site_name) {
-		ndr_print_string(ndr, "site_name", r->site_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "site_dn", r->site_dn);
-	ndr->depth++;
-	if (r->site_dn) {
-		ndr_print_string(ndr, "site_dn", r->site_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "computer_dn", r->computer_dn);
-	ndr->depth++;
-	if (r->computer_dn) {
-		ndr_print_string(ndr, "computer_dn", r->computer_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "server_dn", r->server_dn);
-	ndr->depth++;
-	if (r->server_dn) {
-		ndr_print_string(ndr, "server_dn", r->server_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "ntds_dn", r->ntds_dn);
-	ndr->depth++;
-	if (r->ntds_dn) {
-		ndr_print_string(ndr, "ntds_dn", r->ntds_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "is_pdc", r->is_pdc);
-	ndr_print_uint32(ndr, "is_enabled", r->is_enabled);
-	ndr_print_uint32(ndr, "is_gc", r->is_gc);
-	ndr_print_GUID(ndr, "site_guid", &r->site_guid);
-	ndr_print_GUID(ndr, "computer_guid", &r->computer_guid);
-	ndr_print_GUID(ndr, "server_guid", &r->server_guid);
-	ndr_print_GUID(ndr, "ntds_guid", &r->ntds_guid);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfoCtr2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfoCtr2 *r)
-{
-	uint32_t cntr_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfoCtr2 *r)
-{
-	uint32_t _ptr_array;
-	uint32_t cntr_array_1;
-	TALLOC_CTX *_mem_save_array_0;
-	TALLOC_CTX *_mem_save_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
-		if (_ptr_array) {
-			NDR_PULL_ALLOC(ndr, r->array);
-		} else {
-			r->array = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-			NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-			_mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfo2(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfo2(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		}
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfoCtr2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoCtr2 *r)
-{
-	uint32_t cntr_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfoCtr2");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "array", r->array);
-	ndr->depth++;
-	if (r->array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-		ndr->depth++;
-		for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
-				ndr_print_drsuapi_DsGetDCInfo2(ndr, "array", &r->array[cntr_array_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfo3(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfo3 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->computer_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->ntds_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_pdc));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_enabled));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_gc));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_rodc));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->computer_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->server_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->ntds_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->netbios_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->dns_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->site_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_name, ndr_charset_length(r->site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->site_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_dn, ndr_charset_length(r->site_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->computer_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->computer_dn, ndr_charset_length(r->computer_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->server_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->server_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_dn, ndr_charset_length(r->server_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->ntds_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->ntds_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->ntds_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->ntds_dn, ndr_charset_length(r->ntds_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfo3(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfo3 *r)
-{
-	uint32_t _ptr_netbios_name;
-	TALLOC_CTX *_mem_save_netbios_name_0;
-	uint32_t _ptr_dns_name;
-	TALLOC_CTX *_mem_save_dns_name_0;
-	uint32_t _ptr_site_name;
-	TALLOC_CTX *_mem_save_site_name_0;
-	uint32_t _ptr_site_dn;
-	TALLOC_CTX *_mem_save_site_dn_0;
-	uint32_t _ptr_computer_dn;
-	TALLOC_CTX *_mem_save_computer_dn_0;
-	uint32_t _ptr_server_dn;
-	TALLOC_CTX *_mem_save_server_dn_0;
-	uint32_t _ptr_ntds_dn;
-	TALLOC_CTX *_mem_save_ntds_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
-		if (_ptr_netbios_name) {
-			NDR_PULL_ALLOC(ndr, r->netbios_name);
-		} else {
-			r->netbios_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
-		if (_ptr_dns_name) {
-			NDR_PULL_ALLOC(ndr, r->dns_name);
-		} else {
-			r->dns_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
-		if (_ptr_site_name) {
-			NDR_PULL_ALLOC(ndr, r->site_name);
-		} else {
-			r->site_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_dn));
-		if (_ptr_site_dn) {
-			NDR_PULL_ALLOC(ndr, r->site_dn);
-		} else {
-			r->site_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_dn));
-		if (_ptr_computer_dn) {
-			NDR_PULL_ALLOC(ndr, r->computer_dn);
-		} else {
-			r->computer_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_dn));
-		if (_ptr_server_dn) {
-			NDR_PULL_ALLOC(ndr, r->server_dn);
-		} else {
-			r->server_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ntds_dn));
-		if (_ptr_ntds_dn) {
-			NDR_PULL_ALLOC(ndr, r->ntds_dn);
-		} else {
-			r->ntds_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_pdc));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_enabled));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_gc));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_rodc));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->site_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->computer_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->server_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->ntds_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->netbios_name) {
-			_mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
-			if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->netbios_name), ndr_get_array_length(ndr, &r->netbios_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
-		}
-		if (r->dns_name) {
-			_mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
-			if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_name), ndr_get_array_length(ndr, &r->dns_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
-		}
-		if (r->site_name) {
-			_mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->site_name));
-			if (ndr_get_array_length(ndr, &r->site_name) > ndr_get_array_size(ndr, &r->site_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_name), ndr_get_array_length(ndr, &r->site_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_name, ndr_get_array_length(ndr, &r->site_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
-		}
-		if (r->site_dn) {
-			_mem_save_site_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->site_dn));
-			if (ndr_get_array_length(ndr, &r->site_dn) > ndr_get_array_size(ndr, &r->site_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_dn), ndr_get_array_length(ndr, &r->site_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_dn, ndr_get_array_length(ndr, &r->site_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_dn_0, 0);
-		}
-		if (r->computer_dn) {
-			_mem_save_computer_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->computer_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->computer_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->computer_dn));
-			if (ndr_get_array_length(ndr, &r->computer_dn) > ndr_get_array_size(ndr, &r->computer_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->computer_dn), ndr_get_array_length(ndr, &r->computer_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->computer_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->computer_dn, ndr_get_array_length(ndr, &r->computer_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_dn_0, 0);
-		}
-		if (r->server_dn) {
-			_mem_save_server_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->server_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->server_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->server_dn));
-			if (ndr_get_array_length(ndr, &r->server_dn) > ndr_get_array_size(ndr, &r->server_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_dn), ndr_get_array_length(ndr, &r->server_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_dn, ndr_get_array_length(ndr, &r->server_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_dn_0, 0);
-		}
-		if (r->ntds_dn) {
-			_mem_save_ntds_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->ntds_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->ntds_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->ntds_dn));
-			if (ndr_get_array_length(ndr, &r->ntds_dn) > ndr_get_array_size(ndr, &r->ntds_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->ntds_dn), ndr_get_array_length(ndr, &r->ntds_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->ntds_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->ntds_dn, ndr_get_array_length(ndr, &r->ntds_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ntds_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfo3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfo3 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfo3");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
-	ndr->depth++;
-	if (r->netbios_name) {
-		ndr_print_string(ndr, "netbios_name", r->netbios_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "dns_name", r->dns_name);
-	ndr->depth++;
-	if (r->dns_name) {
-		ndr_print_string(ndr, "dns_name", r->dns_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "site_name", r->site_name);
-	ndr->depth++;
-	if (r->site_name) {
-		ndr_print_string(ndr, "site_name", r->site_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "site_dn", r->site_dn);
-	ndr->depth++;
-	if (r->site_dn) {
-		ndr_print_string(ndr, "site_dn", r->site_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "computer_dn", r->computer_dn);
-	ndr->depth++;
-	if (r->computer_dn) {
-		ndr_print_string(ndr, "computer_dn", r->computer_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "server_dn", r->server_dn);
-	ndr->depth++;
-	if (r->server_dn) {
-		ndr_print_string(ndr, "server_dn", r->server_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "ntds_dn", r->ntds_dn);
-	ndr->depth++;
-	if (r->ntds_dn) {
-		ndr_print_string(ndr, "ntds_dn", r->ntds_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "is_pdc", r->is_pdc);
-	ndr_print_uint32(ndr, "is_enabled", r->is_enabled);
-	ndr_print_uint32(ndr, "is_gc", r->is_gc);
-	ndr_print_uint32(ndr, "is_rodc", r->is_rodc);
-	ndr_print_GUID(ndr, "site_guid", &r->site_guid);
-	ndr_print_GUID(ndr, "computer_guid", &r->computer_guid);
-	ndr_print_GUID(ndr, "server_guid", &r->server_guid);
-	ndr_print_GUID(ndr, "ntds_guid", &r->ntds_guid);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfoCtr3(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCInfoCtr3 *r)
-{
-	uint32_t cntr_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfo3(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfo3(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr3(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCInfoCtr3 *r)
-{
-	uint32_t _ptr_array;
-	uint32_t cntr_array_1;
-	TALLOC_CTX *_mem_save_array_0;
-	TALLOC_CTX *_mem_save_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
-		if (_ptr_array) {
-			NDR_PULL_ALLOC(ndr, r->array);
-		} else {
-			r->array = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-			NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-			_mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfo3(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfo3(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		}
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfoCtr3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoCtr3 *r)
-{
-	uint32_t cntr_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCInfoCtr3");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "array", r->array);
-	ndr->depth++;
-	if (r->array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-		ndr->depth++;
-		for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
-				ndr_print_drsuapi_DsGetDCInfo3(ndr, "array", &r->array[cntr_array_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCConnection01(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCConnection01 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		{
-			uint32_t _flags_save_ipv4address = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
-			NDR_CHECK(ndr_push_ipv4address(ndr, NDR_SCALARS, r->client_ip_address));
-			ndr->flags = _flags_save_ipv4address;
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->connection_time));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_account));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->client_account) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_account, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_account, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_account, ndr_charset_length(r->client_account, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCConnection01(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCConnection01 *r)
-{
-	uint32_t _ptr_client_account;
-	TALLOC_CTX *_mem_save_client_account_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		{
-			uint32_t _flags_save_ipv4address = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
-			NDR_CHECK(ndr_pull_ipv4address(ndr, NDR_SCALARS, &r->client_ip_address));
-			ndr->flags = _flags_save_ipv4address;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->connection_time));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_account));
-		if (_ptr_client_account) {
-			NDR_PULL_ALLOC(ndr, r->client_account);
-		} else {
-			r->client_account = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->client_account) {
-			_mem_save_client_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->client_account, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->client_account));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->client_account));
-			if (ndr_get_array_length(ndr, &r->client_account) > ndr_get_array_size(ndr, &r->client_account)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_account), ndr_get_array_length(ndr, &r->client_account));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_account), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_account, ndr_get_array_length(ndr, &r->client_account), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_account_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCConnection01(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCConnection01 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCConnection01");
-	ndr->depth++;
-	ndr_print_ipv4address(ndr, "client_ip_address", r->client_ip_address);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_uint32(ndr, "connection_time", r->connection_time);
-	ndr_print_uint32(ndr, "unknown4", r->unknown4);
-	ndr_print_uint32(ndr, "unknown5", r->unknown5);
-	ndr_print_uint32(ndr, "unknown6", r->unknown6);
-	ndr_print_ptr(ndr, "client_account", r->client_account);
-	ndr->depth++;
-	if (r->client_account) {
-		ndr_print_string(ndr, "client_account", r->client_account);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCConnectionCtr01(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetDCConnectionCtr01 *r)
-{
-	uint32_t cntr_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCConnection01(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCConnection01(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCConnectionCtr01(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetDCConnectionCtr01 *r)
-{
-	uint32_t _ptr_array;
-	uint32_t cntr_array_1;
-	TALLOC_CTX *_mem_save_array_0;
-	TALLOC_CTX *_mem_save_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
-		if (_ptr_array) {
-			NDR_PULL_ALLOC(ndr, r->array);
-		} else {
-			r->array = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->array) {
-			_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-			NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-			_mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCConnection01(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
-			}
-			for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCConnection01(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		}
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCConnectionCtr01(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCConnectionCtr01 *r)
-{
-	uint32_t cntr_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDCConnectionCtr01");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "array", r->array);
-	ndr->depth++;
-	if (r->array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-		ndr->depth++;
-		for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
-				ndr_print_drsuapi_DsGetDCConnection01(ndr, "array", &r->array[cntr_array_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDCInfoCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetDCInfoCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case DRSUAPI_DC_INFO_CTR_1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case DRSUAPI_DC_INFO_CTR_2: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			case DRSUAPI_DC_INFO_CTR_3: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr3(ndr, NDR_SCALARS, &r->ctr3));
-			break; }
-
-			case DRSUAPI_DC_CONNECTION_CTR_01: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCConnectionCtr01(ndr, NDR_SCALARS, &r->ctr01));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case DRSUAPI_DC_INFO_CTR_1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			case DRSUAPI_DC_INFO_CTR_2:
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			case DRSUAPI_DC_INFO_CTR_3:
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr3(ndr, NDR_BUFFERS, &r->ctr3));
-			break;
-
-			case DRSUAPI_DC_CONNECTION_CTR_01:
-				NDR_CHECK(ndr_push_drsuapi_DsGetDCConnectionCtr01(ndr, NDR_BUFFERS, &r->ctr01));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDCInfoCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetDCInfoCtr *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case DRSUAPI_DC_INFO_CTR_1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			case DRSUAPI_DC_INFO_CTR_2: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			case DRSUAPI_DC_INFO_CTR_3: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr3(ndr, NDR_SCALARS, &r->ctr3));
-			break; }
-
-			case DRSUAPI_DC_CONNECTION_CTR_01: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCConnectionCtr01(ndr, NDR_SCALARS, &r->ctr01));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case DRSUAPI_DC_INFO_CTR_1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			case DRSUAPI_DC_INFO_CTR_2:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			case DRSUAPI_DC_INFO_CTR_3:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr3(ndr, NDR_BUFFERS, &r->ctr3));
-			break;
-
-			case DRSUAPI_DC_CONNECTION_CTR_01:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetDCConnectionCtr01(ndr, NDR_BUFFERS, &r->ctr01));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDCInfoCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetDCInfoCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetDCInfoCtr");
-	switch (level) {
-		case DRSUAPI_DC_INFO_CTR_1:
-			ndr_print_drsuapi_DsGetDCInfoCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		case DRSUAPI_DC_INFO_CTR_2:
-			ndr_print_drsuapi_DsGetDCInfoCtr2(ndr, "ctr2", &r->ctr2);
-		break;
-
-		case DRSUAPI_DC_INFO_CTR_3:
-			ndr_print_drsuapi_DsGetDCInfoCtr3(ndr, "ctr3", &r->ctr3);
-		break;
-
-		case DRSUAPI_DC_CONNECTION_CTR_01:
-			ndr_print_drsuapi_DsGetDCConnectionCtr01(ndr, "ctr01", &r->ctr01);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectListItem(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectListItem *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->next_object));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObject(ndr, NDR_SCALARS, &r->object));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->next_object) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectListItem(ndr, NDR_SCALARS|NDR_BUFFERS, r->next_object));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObject(ndr, NDR_BUFFERS, &r->object));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectListItem(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectListItem *r)
-{
-	uint32_t _ptr_next_object;
-	TALLOC_CTX *_mem_save_next_object_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_next_object));
-		if (_ptr_next_object) {
-			NDR_PULL_ALLOC(ndr, r->next_object);
-		} else {
-			r->next_object = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObject(ndr, NDR_SCALARS, &r->object));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->next_object) {
-			_mem_save_next_object_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->next_object, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectListItem(ndr, NDR_SCALARS|NDR_BUFFERS, r->next_object));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_object_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObject(ndr, NDR_BUFFERS, &r->object));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryRequest2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryRequest2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectListItem(ndr, NDR_SCALARS, &r->first_object));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectListItem(ndr, NDR_BUFFERS, &r->first_object));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryRequest2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryRequest2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectListItem(ndr, NDR_SCALARS, &r->first_object));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectListItem(ndr, NDR_BUFFERS, &r->first_object));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryRequest2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryRequest2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryRequest2");
-	ndr->depth++;
-	ndr_print_drsuapi_DsReplicaObjectListItem(ndr, "first_object", &r->first_object);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsAddEntryRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 2: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryRequest2(ndr, NDR_SCALARS, &r->req2));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 2:
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryRequest2(ndr, NDR_BUFFERS, &r->req2));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsAddEntryRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 2: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryRequest2(ndr, NDR_SCALARS, &r->req2));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 2:
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryRequest2(ndr, NDR_BUFFERS, &r->req2));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsAddEntryRequest");
-	switch (level) {
-		case 2:
-			ndr_print_drsuapi_DsAddEntryRequest2(ndr, "req2", &r->req2);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryErrorInfoX(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryErrorInfoX *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown3));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryErrorInfoX(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryErrorInfoX *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown3));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryErrorInfoX(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryErrorInfoX *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryErrorInfoX");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_WERROR(ndr, "status", r->status);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_uint16(ndr, "unknown3", r->unknown3);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryExtraErrorBuffer(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryExtraErrorBuffer *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->size));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryExtraErrorBuffer(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryExtraErrorBuffer *r)
-{
-	uint32_t _ptr_data;
-	TALLOC_CTX *_mem_save_data_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
-		if (r->size < 0 || r->size > 10485760) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
-		if (_ptr_data) {
-			NDR_PULL_ALLOC(ndr, r->data);
-		} else {
-			r->data = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data) {
-			_mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
-			NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
-		}
-		if (r->data) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryExtraErrorBuffer(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryExtraErrorBuffer *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryExtraErrorBuffer");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "size", r->size);
-	ndr_print_ptr(ndr, "data", r->data);
-	ndr->depth++;
-	if (r->data) {
-		ndr_print_array_uint8(ndr, "data", r->data, r->size);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryExtraError1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryExtraError1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->error));
-		NDR_CHECK(ndr_push_drsuapi_DsAttributeId(ndr, NDR_SCALARS, r->attid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryExtraErrorBuffer(ndr, NDR_SCALARS, &r->buffer));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryExtraErrorBuffer(ndr, NDR_BUFFERS, &r->buffer));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryExtraError1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryExtraError1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->error));
-		NDR_CHECK(ndr_pull_drsuapi_DsAttributeId(ndr, NDR_SCALARS, &r->attid));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryExtraErrorBuffer(ndr, NDR_SCALARS, &r->buffer));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryExtraErrorBuffer(ndr, NDR_BUFFERS, &r->buffer));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryExtraError1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryExtraError1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryExtraError1");
-	ndr->depth++;
-	ndr_print_drsuapi_DsAddEntryErrorInfoX(ndr, "error", &r->error);
-	ndr_print_drsuapi_DsAttributeId(ndr, "attid", r->attid);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_drsuapi_DsAddEntryExtraErrorBuffer(ndr, "buffer", &r->buffer);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryErrorListItem1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryErrorListItem1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->next));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryExtraError1(ndr, NDR_SCALARS, &r->error));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->next) {
-			NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorListItem1(ndr, NDR_SCALARS|NDR_BUFFERS, r->next));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryExtraError1(ndr, NDR_BUFFERS, &r->error));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryErrorListItem1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryErrorListItem1 *r)
-{
-	uint32_t _ptr_next;
-	TALLOC_CTX *_mem_save_next_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_next));
-		if (_ptr_next) {
-			NDR_PULL_ALLOC(ndr, r->next);
-		} else {
-			r->next = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryExtraError1(ndr, NDR_SCALARS, &r->error));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->next) {
-			_mem_save_next_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->next, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorListItem1(ndr, NDR_SCALARS|NDR_BUFFERS, r->next));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryExtraError1(ndr, NDR_BUFFERS, &r->error));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryErrorListItem1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryErrorListItem1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryErrorListItem1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "next", r->next);
-	ndr->depth++;
-	if (r->next) {
-		ndr_print_drsuapi_DsAddEntryErrorListItem1(ndr, "next", r->next);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsAddEntryExtraError1(ndr, "error", &r->error);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryErrorInfo1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryErrorInfo1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->id));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorListItem1(ndr, NDR_SCALARS, &r->first));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->id) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->id));
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorListItem1(ndr, NDR_BUFFERS, &r->first));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryErrorInfo1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryErrorInfo1 *r)
-{
-	uint32_t _ptr_id;
-	TALLOC_CTX *_mem_save_id_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_id));
-		if (_ptr_id) {
-			NDR_PULL_ALLOC(ndr, r->id);
-		} else {
-			r->id = NULL;
-		}
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorListItem1(ndr, NDR_SCALARS, &r->first));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->id) {
-			_mem_save_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->id, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->id));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_id_0, 0);
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorListItem1(ndr, NDR_BUFFERS, &r->first));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryErrorInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryErrorInfo1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryErrorInfo1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "id", r->id);
-	ndr->depth++;
-	if (r->id) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "id", r->id);
-	}
-	ndr->depth--;
-	ndr_print_WERROR(ndr, "status", r->status);
-	ndr_print_drsuapi_DsAddEntryErrorListItem1(ndr, "first", &r->first);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryErrorInfo(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsAddEntryErrorInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfo1(ndr, NDR_SCALARS, &r->error1));
-			break; }
-
-			case 4: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			case 5: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			case 6: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			case 7: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfo1(ndr, NDR_BUFFERS, &r->error1));
-			break;
-
-			case 4:
-			break;
-
-			case 5:
-			break;
-
-			case 6:
-			break;
-
-			case 7:
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryErrorInfo(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsAddEntryErrorInfo *r)
-{
-	int level;
-	uint32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfo1(ndr, NDR_SCALARS, &r->error1));
-			break; }
-
-			case 4: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			case 5: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			case 6: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			case 7: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->errorX));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfo1(ndr, NDR_BUFFERS, &r->error1));
-			break;
-
-			case 4:
-			break;
-
-			case 5:
-			break;
-
-			case 6:
-			break;
-
-			case 7:
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryErrorInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryErrorInfo *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsAddEntryErrorInfo");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsAddEntryErrorInfo1(ndr, "error1", &r->error1);
-		break;
-
-		case 4:
-			ndr_print_drsuapi_DsAddEntryErrorInfoX(ndr, "errorX", &r->errorX);
-		break;
-
-		case 5:
-			ndr_print_drsuapi_DsAddEntryErrorInfoX(ndr, "errorX", &r->errorX);
-		break;
-
-		case 6:
-			ndr_print_drsuapi_DsAddEntryErrorInfoX(ndr, "errorX", &r->errorX);
-		break;
-
-		case 7:
-			ndr_print_drsuapi_DsAddEntryErrorInfoX(ndr, "errorX", &r->errorX);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryError1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryError1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info) {
-			NDR_CHECK(ndr_push_set_switch_value(ndr, r->info, r->level));
-			NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->info));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryError1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryError1 *r)
-{
-	uint32_t _ptr_info;
-	TALLOC_CTX *_mem_save_info_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
-		if (_ptr_info) {
-			NDR_PULL_ALLOC(ndr, r->info);
-		} else {
-			r->info = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info) {
-			_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
-			NDR_CHECK(ndr_pull_set_switch_value(ndr, r->info, r->level));
-			NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->info));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryError1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryError1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryError1");
-	ndr->depth++;
-	ndr_print_WERROR(ndr, "status", r->status);
-	ndr_print_uint32(ndr, "level", r->level);
-	ndr_print_ptr(ndr, "info", r->info);
-	ndr->depth++;
-	if (r->info) {
-		ndr_print_set_switch_value(ndr, r->info, r->level);
-		ndr_print_drsuapi_DsAddEntryErrorInfo(ndr, "info", r->info);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryError(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsAddEntryError *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryError1(ndr, NDR_SCALARS, &r->info1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryError1(ndr, NDR_BUFFERS, &r->info1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryError(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsAddEntryError *r)
-{
-	int level;
-	uint32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryError1(ndr, NDR_SCALARS, &r->info1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryError1(ndr, NDR_BUFFERS, &r->info1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryError(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryError *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsAddEntryError");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsAddEntryError1(ndr, "info1", &r->info1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_SCALARS, &r->sid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_dom_sid28(ndr, NDR_BUFFERS, &r->sid));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjectIdentifier2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectIdentifier2");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "guid", &r->guid);
-	ndr_print_dom_sid28(ndr, "sid", &r->sid);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryCtr2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryCtr2 *r)
-{
-	uint32_t cntr_objects_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->id));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->error));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->objects));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->id) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->id));
-		}
-		if (r->objects) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_SCALARS, &r->objects[cntr_objects_1]));
-			}
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_BUFFERS, &r->objects[cntr_objects_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryCtr2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryCtr2 *r)
-{
-	uint32_t _ptr_id;
-	TALLOC_CTX *_mem_save_id_0;
-	uint32_t _ptr_objects;
-	uint32_t cntr_objects_1;
-	TALLOC_CTX *_mem_save_objects_0;
-	TALLOC_CTX *_mem_save_objects_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_id));
-		if (_ptr_id) {
-			NDR_PULL_ALLOC(ndr, r->id);
-		} else {
-			r->id = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryErrorInfoX(ndr, NDR_SCALARS, &r->error));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_objects));
-		if (_ptr_objects) {
-			NDR_PULL_ALLOC(ndr, r->objects);
-		} else {
-			r->objects = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->id) {
-			_mem_save_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->id, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->id));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_id_0, 0);
-		}
-		if (r->objects) {
-			_mem_save_objects_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->objects, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->objects));
-			NDR_PULL_ALLOC_N(ndr, r->objects, ndr_get_array_size(ndr, &r->objects));
-			_mem_save_objects_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->objects, 0);
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_SCALARS, &r->objects[cntr_objects_1]));
-			}
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_BUFFERS, &r->objects[cntr_objects_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_objects_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_objects_0, 0);
-		}
-		if (r->objects) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->objects, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryCtr2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryCtr2 *r)
-{
-	uint32_t cntr_objects_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryCtr2");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "id", r->id);
-	ndr->depth++;
-	if (r->id) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "id", r->id);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_drsuapi_DsAddEntryErrorInfoX(ndr, "error", &r->error);
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "objects", r->objects);
-	ndr->depth++;
-	if (r->objects) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "objects", (int)r->count);
-		ndr->depth++;
-		for (cntr_objects_1=0;cntr_objects_1<r->count;cntr_objects_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_objects_1) != -1) {
-				ndr_print_drsuapi_DsReplicaObjectIdentifier2(ndr, "objects", &r->objects[cntr_objects_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryCtr3(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsAddEntryCtr3 *r)
-{
-	uint32_t cntr_objects_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->id));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->error));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->objects));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->id) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->id));
-		}
-		if (r->error) {
-			NDR_CHECK(ndr_push_set_switch_value(ndr, r->error, r->level));
-			NDR_CHECK(ndr_push_drsuapi_DsAddEntryError(ndr, NDR_SCALARS|NDR_BUFFERS, r->error));
-		}
-		if (r->objects) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_SCALARS, &r->objects[cntr_objects_1]));
-			}
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_BUFFERS, &r->objects[cntr_objects_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryCtr3(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsAddEntryCtr3 *r)
-{
-	uint32_t _ptr_id;
-	TALLOC_CTX *_mem_save_id_0;
-	uint32_t _ptr_error;
-	TALLOC_CTX *_mem_save_error_0;
-	uint32_t _ptr_objects;
-	uint32_t cntr_objects_1;
-	TALLOC_CTX *_mem_save_objects_0;
-	TALLOC_CTX *_mem_save_objects_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_id));
-		if (_ptr_id) {
-			NDR_PULL_ALLOC(ndr, r->id);
-		} else {
-			r->id = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_error));
-		if (_ptr_error) {
-			NDR_PULL_ALLOC(ndr, r->error);
-		} else {
-			r->error = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_objects));
-		if (_ptr_objects) {
-			NDR_PULL_ALLOC(ndr, r->objects);
-		} else {
-			r->objects = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->id) {
-			_mem_save_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->id, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier(ndr, NDR_SCALARS|NDR_BUFFERS, r->id));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_id_0, 0);
-		}
-		if (r->error) {
-			_mem_save_error_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->error, 0);
-			NDR_CHECK(ndr_pull_set_switch_value(ndr, r->error, r->level));
-			NDR_CHECK(ndr_pull_drsuapi_DsAddEntryError(ndr, NDR_SCALARS|NDR_BUFFERS, r->error));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_error_0, 0);
-		}
-		if (r->objects) {
-			_mem_save_objects_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->objects, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->objects));
-			NDR_PULL_ALLOC_N(ndr, r->objects, ndr_get_array_size(ndr, &r->objects));
-			_mem_save_objects_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->objects, 0);
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_SCALARS, &r->objects[cntr_objects_1]));
-			}
-			for (cntr_objects_1 = 0; cntr_objects_1 < r->count; cntr_objects_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjectIdentifier2(ndr, NDR_BUFFERS, &r->objects[cntr_objects_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_objects_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_objects_0, 0);
-		}
-		if (r->objects) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->objects, r->count));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryCtr3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryCtr3 *r)
-{
-	uint32_t cntr_objects_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntryCtr3");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "id", r->id);
-	ndr->depth++;
-	if (r->id) {
-		ndr_print_drsuapi_DsReplicaObjectIdentifier(ndr, "id", r->id);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "level", r->level);
-	ndr_print_ptr(ndr, "error", r->error);
-	ndr->depth++;
-	if (r->error) {
-		ndr_print_set_switch_value(ndr, r->error, r->level);
-		ndr_print_drsuapi_DsAddEntryError(ndr, "error", r->error);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_ptr(ndr, "objects", r->objects);
-	ndr->depth++;
-	if (r->objects) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "objects", (int)r->count);
-		ndr->depth++;
-		for (cntr_objects_1=0;cntr_objects_1<r->count;cntr_objects_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_objects_1) != -1) {
-				ndr_print_drsuapi_DsReplicaObjectIdentifier2(ndr, "objects", &r->objects[cntr_objects_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsAddEntryCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsAddEntryCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 2: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			case 3: {
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryCtr3(ndr, NDR_SCALARS, &r->ctr3));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 2:
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			case 3:
-				NDR_CHECK(ndr_push_drsuapi_DsAddEntryCtr3(ndr, NDR_BUFFERS, &r->ctr3));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsAddEntryCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsAddEntryCtr *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 2: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryCtr2(ndr, NDR_SCALARS, &r->ctr2));
-			break; }
-
-			case 3: {
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryCtr3(ndr, NDR_SCALARS, &r->ctr3));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 2:
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryCtr2(ndr, NDR_BUFFERS, &r->ctr2));
-			break;
-
-			case 3:
-				NDR_CHECK(ndr_pull_drsuapi_DsAddEntryCtr3(ndr, NDR_BUFFERS, &r->ctr3));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntryCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsAddEntryCtr");
-	switch (level) {
-		case 2:
-			ndr_print_drsuapi_DsAddEntryCtr2(ndr, "ctr2", &r->ctr2);
-		break;
-
-		case 3:
-			ndr_print_drsuapi_DsAddEntryCtr3(ndr, "ctr3", &r->ctr3);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaGetInfoLevel(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsReplicaGetInfoLevel r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaGetInfoLevel(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsReplicaGetInfoLevel *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaGetInfoLevel(struct ndr_print *ndr, const char *name, enum drsuapi_DsReplicaGetInfoLevel r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_REPLICA_GET_INFO: val = "DRSUAPI_DS_REPLICA_GET_INFO"; break;
-		case DRSUAPI_DS_REPLICA_GET_INFO2: val = "DRSUAPI_DS_REPLICA_GET_INFO2"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaInfoType(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsReplicaInfoType r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaInfoType(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsReplicaInfoType *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaInfoType(struct ndr_print *ndr, const char *name, enum drsuapi_DsReplicaInfoType r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS: val = "DRSUAPI_DS_REPLICA_INFO_NEIGHBORS"; break;
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS: val = "DRSUAPI_DS_REPLICA_INFO_CURSORS"; break;
-		case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA: val = "DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA"; break;
-		case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES: val = "DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES"; break;
-		case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES: val = "DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES"; break;
-		case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS: val = "DRSUAPI_DS_REPLICA_INFO_PENDING_OPS"; break;
-		case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA: val = "DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA"; break;
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS2: val = "DRSUAPI_DS_REPLICA_INFO_CURSORS2"; break;
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS3: val = "DRSUAPI_DS_REPLICA_INFO_CURSORS3"; break;
-		case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2: val = "DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2"; break;
-		case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2: val = "DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2"; break;
-		case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02: val = "DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02"; break;
-		case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04: val = "DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04"; break;
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS05: val = "DRSUAPI_DS_REPLICA_INFO_CURSORS05"; break;
-		case DRSUAPI_DS_REPLICA_INFO_06: val = "DRSUAPI_DS_REPLICA_INFO_06"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaGetInfoRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaGetInfoRequest1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, r->info_type));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->object_dn));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid1));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->object_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->object_dn, ndr_charset_length(r->object_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaGetInfoRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaGetInfoRequest1 *r)
-{
-	uint32_t _ptr_object_dn;
-	TALLOC_CTX *_mem_save_object_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, &r->info_type));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object_dn));
-		if (_ptr_object_dn) {
-			NDR_PULL_ALLOC(ndr, r->object_dn);
-		} else {
-			r->object_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid1));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->object_dn) {
-			_mem_save_object_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->object_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->object_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->object_dn));
-			if (ndr_get_array_length(ndr, &r->object_dn) > ndr_get_array_size(ndr, &r->object_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->object_dn), ndr_get_array_length(ndr, &r->object_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->object_dn, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaGetInfoRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaGetInfoRequest1 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaGetInfoRequest1");
-	ndr->depth++;
-	ndr_print_drsuapi_DsReplicaInfoType(ndr, "info_type", r->info_type);
-	ndr_print_ptr(ndr, "object_dn", r->object_dn);
-	ndr->depth++;
-	if (r->object_dn) {
-		ndr_print_string(ndr, "object_dn", r->object_dn);
-	}
-	ndr->depth--;
-	ndr_print_GUID(ndr, "guid1", &r->guid1);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaGetInfoRequest2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaGetInfoRequest2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, r->info_type));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->object_dn));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->string1));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->string2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->object_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->object_dn, ndr_charset_length(r->object_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->string1) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->string1, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->string1, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string1, ndr_charset_length(r->string1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->string2) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->string2, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->string2, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string2, ndr_charset_length(r->string2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaGetInfoRequest2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaGetInfoRequest2 *r)
-{
-	uint32_t _ptr_object_dn;
-	TALLOC_CTX *_mem_save_object_dn_0;
-	uint32_t _ptr_string1;
-	TALLOC_CTX *_mem_save_string1_0;
-	uint32_t _ptr_string2;
-	TALLOC_CTX *_mem_save_string2_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, &r->info_type));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object_dn));
-		if (_ptr_object_dn) {
-			NDR_PULL_ALLOC(ndr, r->object_dn);
-		} else {
-			r->object_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string1));
-		if (_ptr_string1) {
-			NDR_PULL_ALLOC(ndr, r->string1);
-		} else {
-			r->string1 = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string2));
-		if (_ptr_string2) {
-			NDR_PULL_ALLOC(ndr, r->string2);
-		} else {
-			r->string2 = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->object_dn) {
-			_mem_save_object_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->object_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->object_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->object_dn));
-			if (ndr_get_array_length(ndr, &r->object_dn) > ndr_get_array_size(ndr, &r->object_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->object_dn), ndr_get_array_length(ndr, &r->object_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->object_dn, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_dn_0, 0);
-		}
-		if (r->string1) {
-			_mem_save_string1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->string1, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->string1));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->string1));
-			if (ndr_get_array_length(ndr, &r->string1) > ndr_get_array_size(ndr, &r->string1)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string1), ndr_get_array_length(ndr, &r->string1));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->string1), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string1, ndr_get_array_length(ndr, &r->string1), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string1_0, 0);
-		}
-		if (r->string2) {
-			_mem_save_string2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->string2, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->string2));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->string2));
-			if (ndr_get_array_length(ndr, &r->string2) > ndr_get_array_size(ndr, &r->string2)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string2), ndr_get_array_length(ndr, &r->string2));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->string2), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string2, ndr_get_array_length(ndr, &r->string2), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string2_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaGetInfoRequest2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaGetInfoRequest2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaGetInfoRequest2");
-	ndr->depth++;
-	ndr_print_drsuapi_DsReplicaInfoType(ndr, "info_type", r->info_type);
-	ndr_print_ptr(ndr, "object_dn", r->object_dn);
-	ndr->depth++;
-	if (r->object_dn) {
-		ndr_print_string(ndr, "object_dn", r->object_dn);
-	}
-	ndr->depth--;
-	ndr_print_GUID(ndr, "guid1", &r->guid1);
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_ptr(ndr, "string1", r->string1);
-	ndr->depth++;
-	if (r->string1) {
-		ndr_print_string(ndr, "string1", r->string1);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "string2", r->string2);
-	ndr->depth++;
-	if (r->string2) {
-		ndr_print_string(ndr, "string2", r->string2);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaGetInfoRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsReplicaGetInfoRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoLevel(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_GET_INFO: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_GET_INFO2: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoRequest2(ndr, NDR_SCALARS, &r->req2));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_GET_INFO:
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			case DRSUAPI_DS_REPLICA_GET_INFO2:
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoRequest2(ndr, NDR_BUFFERS, &r->req2));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaGetInfoRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsReplicaGetInfoRequest *r)
-{
-	int level;
-	uint32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_GET_INFO: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaGetInfoRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_GET_INFO2: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaGetInfoRequest2(ndr, NDR_SCALARS, &r->req2));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_GET_INFO:
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaGetInfoRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			case DRSUAPI_DS_REPLICA_GET_INFO2:
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaGetInfoRequest2(ndr, NDR_BUFFERS, &r->req2));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaGetInfoRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaGetInfoRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsReplicaGetInfoRequest");
-	switch (level) {
-		case DRSUAPI_DS_REPLICA_GET_INFO:
-			ndr_print_drsuapi_DsReplicaGetInfoRequest1(ndr, "req1", &r->req1);
-		break;
-
-		case DRSUAPI_DS_REPLICA_GET_INFO2:
-			ndr_print_drsuapi_DsReplicaGetInfoRequest2(ndr, "req2", &r->req2);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaNeighbour(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaNeighbour *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->naming_context_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->source_dsa_obj_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->source_dsa_address));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->transport_obj_dn));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, r->replica_flags));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->naming_context_obj_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_obj_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->transport_obj_guid));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->tmp_highest_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->highest_usn));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_success));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_attempt));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->result_last_attempt));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->consecutive_sync_failures));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->naming_context_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->naming_context_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->naming_context_dn, ndr_charset_length(r->naming_context_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->source_dsa_obj_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->source_dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->source_dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->source_dsa_obj_dn, ndr_charset_length(r->source_dsa_obj_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->source_dsa_address) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->source_dsa_address, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->source_dsa_address, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->source_dsa_address, ndr_charset_length(r->source_dsa_address, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->transport_obj_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->transport_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->transport_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->transport_obj_dn, ndr_charset_length(r->transport_obj_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaNeighbour(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaNeighbour *r)
-{
-	uint32_t _ptr_naming_context_dn;
-	TALLOC_CTX *_mem_save_naming_context_dn_0;
-	uint32_t _ptr_source_dsa_obj_dn;
-	TALLOC_CTX *_mem_save_source_dsa_obj_dn_0;
-	uint32_t _ptr_source_dsa_address;
-	TALLOC_CTX *_mem_save_source_dsa_address_0;
-	uint32_t _ptr_transport_obj_dn;
-	TALLOC_CTX *_mem_save_transport_obj_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_naming_context_dn));
-		if (_ptr_naming_context_dn) {
-			NDR_PULL_ALLOC(ndr, r->naming_context_dn);
-		} else {
-			r->naming_context_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_source_dsa_obj_dn));
-		if (_ptr_source_dsa_obj_dn) {
-			NDR_PULL_ALLOC(ndr, r->source_dsa_obj_dn);
-		} else {
-			r->source_dsa_obj_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_source_dsa_address));
-		if (_ptr_source_dsa_address) {
-			NDR_PULL_ALLOC(ndr, r->source_dsa_address);
-		} else {
-			r->source_dsa_address = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_transport_obj_dn));
-		if (_ptr_transport_obj_dn) {
-			NDR_PULL_ALLOC(ndr, r->transport_obj_dn);
-		} else {
-			r->transport_obj_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourFlags(ndr, NDR_SCALARS, &r->replica_flags));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->naming_context_obj_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_obj_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->transport_obj_guid));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->tmp_highest_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->highest_usn));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_success));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_attempt));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->result_last_attempt));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->consecutive_sync_failures));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->naming_context_dn) {
-			_mem_save_naming_context_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->naming_context_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->naming_context_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->naming_context_dn));
-			if (ndr_get_array_length(ndr, &r->naming_context_dn) > ndr_get_array_size(ndr, &r->naming_context_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->naming_context_dn), ndr_get_array_length(ndr, &r->naming_context_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->naming_context_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->naming_context_dn, ndr_get_array_length(ndr, &r->naming_context_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_naming_context_dn_0, 0);
-		}
-		if (r->source_dsa_obj_dn) {
-			_mem_save_source_dsa_obj_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->source_dsa_obj_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->source_dsa_obj_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->source_dsa_obj_dn));
-			if (ndr_get_array_length(ndr, &r->source_dsa_obj_dn) > ndr_get_array_size(ndr, &r->source_dsa_obj_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->source_dsa_obj_dn), ndr_get_array_length(ndr, &r->source_dsa_obj_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->source_dsa_obj_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->source_dsa_obj_dn, ndr_get_array_length(ndr, &r->source_dsa_obj_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_source_dsa_obj_dn_0, 0);
-		}
-		if (r->source_dsa_address) {
-			_mem_save_source_dsa_address_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->source_dsa_address, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->source_dsa_address));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->source_dsa_address));
-			if (ndr_get_array_length(ndr, &r->source_dsa_address) > ndr_get_array_size(ndr, &r->source_dsa_address)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->source_dsa_address), ndr_get_array_length(ndr, &r->source_dsa_address));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->source_dsa_address), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->source_dsa_address, ndr_get_array_length(ndr, &r->source_dsa_address), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_source_dsa_address_0, 0);
-		}
-		if (r->transport_obj_dn) {
-			_mem_save_transport_obj_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->transport_obj_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->transport_obj_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->transport_obj_dn));
-			if (ndr_get_array_length(ndr, &r->transport_obj_dn) > ndr_get_array_size(ndr, &r->transport_obj_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->transport_obj_dn), ndr_get_array_length(ndr, &r->transport_obj_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->transport_obj_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->transport_obj_dn, ndr_get_array_length(ndr, &r->transport_obj_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transport_obj_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaNeighbour(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaNeighbour *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaNeighbour");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "naming_context_dn", r->naming_context_dn);
-	ndr->depth++;
-	if (r->naming_context_dn) {
-		ndr_print_string(ndr, "naming_context_dn", r->naming_context_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "source_dsa_obj_dn", r->source_dsa_obj_dn);
-	ndr->depth++;
-	if (r->source_dsa_obj_dn) {
-		ndr_print_string(ndr, "source_dsa_obj_dn", r->source_dsa_obj_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "source_dsa_address", r->source_dsa_address);
-	ndr->depth++;
-	if (r->source_dsa_address) {
-		ndr_print_string(ndr, "source_dsa_address", r->source_dsa_address);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "transport_obj_dn", r->transport_obj_dn);
-	ndr->depth++;
-	if (r->transport_obj_dn) {
-		ndr_print_string(ndr, "transport_obj_dn", r->transport_obj_dn);
-	}
-	ndr->depth--;
-	ndr_print_drsuapi_DsReplicaNeighbourFlags(ndr, "replica_flags", r->replica_flags);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr_print_GUID(ndr, "naming_context_obj_guid", &r->naming_context_obj_guid);
-	ndr_print_GUID(ndr, "source_dsa_obj_guid", &r->source_dsa_obj_guid);
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_GUID(ndr, "transport_obj_guid", &r->transport_obj_guid);
-	ndr_print_hyper(ndr, "tmp_highest_usn", r->tmp_highest_usn);
-	ndr_print_hyper(ndr, "highest_usn", r->highest_usn);
-	ndr_print_NTTIME(ndr, "last_success", r->last_success);
-	ndr_print_NTTIME(ndr, "last_attempt", r->last_attempt);
-	ndr_print_WERROR(ndr, "result_last_attempt", r->result_last_attempt);
-	ndr_print_uint32(ndr, "consecutive_sync_failures", r->consecutive_sync_failures);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaNeighbourCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaNeighbourCtr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbour(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbour(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaNeighbourCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaNeighbourCtr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbour(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbour(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaNeighbourCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaNeighbourCtr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaNeighbourCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaNeighbour(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursorCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursorCtr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursorCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursorCtr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursorCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursorCtr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursorCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaObjMetaData(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjMetaData *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribute_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->originating_change_time));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->originating_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->local_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->attribute_name, ndr_charset_length(r->attribute_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjMetaData(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjMetaData *r)
-{
-	uint32_t _ptr_attribute_name;
-	TALLOC_CTX *_mem_save_attribute_name_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribute_name));
-		if (_ptr_attribute_name) {
-			NDR_PULL_ALLOC(ndr, r->attribute_name);
-		} else {
-			r->attribute_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->originating_change_time));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->originating_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->local_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			_mem_save_attribute_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->attribute_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->attribute_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->attribute_name));
-			if (ndr_get_array_length(ndr, &r->attribute_name) > ndr_get_array_size(ndr, &r->attribute_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->attribute_name), ndr_get_array_length(ndr, &r->attribute_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->attribute_name, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribute_name_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjMetaData(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaData *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjMetaData");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "attribute_name", r->attribute_name);
-	ndr->depth++;
-	if (r->attribute_name) {
-		ndr_print_string(ndr, "attribute_name", r->attribute_name);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_NTTIME(ndr, "originating_change_time", r->originating_change_time);
-	ndr_print_GUID(ndr, "originating_invocation_id", &r->originating_invocation_id);
-	ndr_print_hyper(ndr, "originating_usn", r->originating_usn);
-	ndr_print_hyper(ndr, "local_usn", r->local_usn);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaObjMetaDataCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjMetaDataCtr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjMetaData(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjMetaData(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjMetaDataCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjMetaDataCtr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjMetaData(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjMetaData(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjMetaDataCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaDataCtr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjMetaDataCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaObjMetaData(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaKccDsaFailure(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaKccDsaFailure *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->dsa_obj_dn));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->dsa_obj_guid));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->first_failure));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_failures));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->last_result));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->dsa_obj_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dsa_obj_dn, ndr_charset_length(r->dsa_obj_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaKccDsaFailure(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaKccDsaFailure *r)
-{
-	uint32_t _ptr_dsa_obj_dn;
-	TALLOC_CTX *_mem_save_dsa_obj_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dsa_obj_dn));
-		if (_ptr_dsa_obj_dn) {
-			NDR_PULL_ALLOC(ndr, r->dsa_obj_dn);
-		} else {
-			r->dsa_obj_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->dsa_obj_guid));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->first_failure));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_failures));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->last_result));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->dsa_obj_dn) {
-			_mem_save_dsa_obj_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->dsa_obj_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->dsa_obj_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->dsa_obj_dn));
-			if (ndr_get_array_length(ndr, &r->dsa_obj_dn) > ndr_get_array_size(ndr, &r->dsa_obj_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dsa_obj_dn), ndr_get_array_length(ndr, &r->dsa_obj_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dsa_obj_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dsa_obj_dn, ndr_get_array_length(ndr, &r->dsa_obj_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dsa_obj_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaKccDsaFailure(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaKccDsaFailure *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaKccDsaFailure");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "dsa_obj_dn", r->dsa_obj_dn);
-	ndr->depth++;
-	if (r->dsa_obj_dn) {
-		ndr_print_string(ndr, "dsa_obj_dn", r->dsa_obj_dn);
-	}
-	ndr->depth--;
-	ndr_print_GUID(ndr, "dsa_obj_guid", &r->dsa_obj_guid);
-	ndr_print_NTTIME(ndr, "first_failure", r->first_failure);
-	ndr_print_uint32(ndr, "num_failures", r->num_failures);
-	ndr_print_WERROR(ndr, "last_result", r->last_result);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaKccDsaFailuresCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaKccDsaFailuresCtr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaKccDsaFailure(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaKccDsaFailure(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaKccDsaFailuresCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaKccDsaFailuresCtr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaKccDsaFailure(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaKccDsaFailure(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaKccDsaFailuresCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaKccDsaFailuresCtr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaKccDsaFailuresCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaKccDsaFailure(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaOpType(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsReplicaOpType r)
-{
-	NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaOpType(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsReplicaOpType *r)
-{
-	uint16_t v;
-	NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaOpType(struct ndr_print *ndr, const char *name, enum drsuapi_DsReplicaOpType r)
-{
-	const char *val = NULL;
-
-	switch (r) {
-		case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC: val = "DRSUAPI_DS_REPLICA_OP_TYPE_SYNC"; break;
-		case DRSUAPI_DS_REPLICA_OP_TYPE_ADD: val = "DRSUAPI_DS_REPLICA_OP_TYPE_ADD"; break;
-		case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE: val = "DRSUAPI_DS_REPLICA_OP_TYPE_DELETE"; break;
-		case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY: val = "DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY"; break;
-		case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS: val = "DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS"; break;
-	}
-	ndr_print_enum(ndr, name, "ENUM", val, r);
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsRplicaOpOptions(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsRplicaOpOptions *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOpType(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaSyncOptions(ndr, NDR_SCALARS, r->sync));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_ADD: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaAddOptions(ndr, NDR_SCALARS, r->add));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaDeleteOptions(ndr, NDR_SCALARS, r->op_delete));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaModifyOptions(ndr, NDR_SCALARS, r->modify));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS: {
-				NDR_CHECK(ndr_push_drsuapi_DsReplicaUpdateRefsOptions(ndr, NDR_SCALARS, r->update_refs));
-			break; }
-
-			default: {
-				NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
-			break; }
-
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_ADD:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS:
-			break;
-
-			default:
-			break;
-
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsRplicaOpOptions(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsRplicaOpOptions *r)
-{
-	int level;
-	uint16_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaSyncOptions(ndr, NDR_SCALARS, &r->sync));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_ADD: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaAddOptions(ndr, NDR_SCALARS, &r->add));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaDeleteOptions(ndr, NDR_SCALARS, &r->op_delete));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaModifyOptions(ndr, NDR_SCALARS, &r->modify));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS: {
-				NDR_CHECK(ndr_pull_drsuapi_DsReplicaUpdateRefsOptions(ndr, NDR_SCALARS, &r->update_refs));
-			break; }
-
-			default: {
-				NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
-			break; }
-
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_ADD:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY:
-			break;
-
-			case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS:
-			break;
-
-			default:
-			break;
-
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsRplicaOpOptions(struct ndr_print *ndr, const char *name, const union drsuapi_DsRplicaOpOptions *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsRplicaOpOptions");
-	switch (level) {
-		case DRSUAPI_DS_REPLICA_OP_TYPE_SYNC:
-			ndr_print_drsuapi_DsReplicaSyncOptions(ndr, "sync", r->sync);
-		break;
-
-		case DRSUAPI_DS_REPLICA_OP_TYPE_ADD:
-			ndr_print_drsuapi_DsReplicaAddOptions(ndr, "add", r->add);
-		break;
-
-		case DRSUAPI_DS_REPLICA_OP_TYPE_DELETE:
-			ndr_print_drsuapi_DsReplicaDeleteOptions(ndr, "op_delete", r->op_delete);
-		break;
-
-		case DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY:
-			ndr_print_drsuapi_DsReplicaModifyOptions(ndr, "modify", r->modify);
-		break;
-
-		case DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS:
-			ndr_print_drsuapi_DsReplicaUpdateRefsOptions(ndr, "update_refs", r->update_refs);
-		break;
-
-		default:
-			ndr_print_uint32(ndr, "unknown", r->unknown);
-		break;
-
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaOp(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOp *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->operation_start));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_num));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priority));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaOpType(ndr, NDR_SCALARS, r->operation_type));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->options, r->operation_type));
-		NDR_CHECK(ndr_push_drsuapi_DsRplicaOpOptions(ndr, NDR_SCALARS, &r->options));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->nc_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->remote_dsa_obj_dn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->remote_dsa_address));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->nc_obj_guid));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->remote_dsa_obj_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->nc_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->nc_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->nc_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->nc_dn, ndr_charset_length(r->nc_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->remote_dsa_obj_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->remote_dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->remote_dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->remote_dsa_obj_dn, ndr_charset_length(r->remote_dsa_obj_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->remote_dsa_address) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->remote_dsa_address, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->remote_dsa_address, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->remote_dsa_address, ndr_charset_length(r->remote_dsa_address, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaOp(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOp *r)
-{
-	uint32_t _ptr_nc_dn;
-	TALLOC_CTX *_mem_save_nc_dn_0;
-	uint32_t _ptr_remote_dsa_obj_dn;
-	TALLOC_CTX *_mem_save_remote_dsa_obj_dn_0;
-	uint32_t _ptr_remote_dsa_address;
-	TALLOC_CTX *_mem_save_remote_dsa_address_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->operation_start));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_num));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priority));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaOpType(ndr, NDR_SCALARS, &r->operation_type));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->options, r->operation_type));
-		NDR_CHECK(ndr_pull_drsuapi_DsRplicaOpOptions(ndr, NDR_SCALARS, &r->options));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_nc_dn));
-		if (_ptr_nc_dn) {
-			NDR_PULL_ALLOC(ndr, r->nc_dn);
-		} else {
-			r->nc_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_remote_dsa_obj_dn));
-		if (_ptr_remote_dsa_obj_dn) {
-			NDR_PULL_ALLOC(ndr, r->remote_dsa_obj_dn);
-		} else {
-			r->remote_dsa_obj_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_remote_dsa_address));
-		if (_ptr_remote_dsa_address) {
-			NDR_PULL_ALLOC(ndr, r->remote_dsa_address);
-		} else {
-			r->remote_dsa_address = NULL;
-		}
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->nc_obj_guid));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->remote_dsa_obj_guid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->nc_dn) {
-			_mem_save_nc_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->nc_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->nc_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->nc_dn));
-			if (ndr_get_array_length(ndr, &r->nc_dn) > ndr_get_array_size(ndr, &r->nc_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->nc_dn), ndr_get_array_length(ndr, &r->nc_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->nc_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->nc_dn, ndr_get_array_length(ndr, &r->nc_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_nc_dn_0, 0);
-		}
-		if (r->remote_dsa_obj_dn) {
-			_mem_save_remote_dsa_obj_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->remote_dsa_obj_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->remote_dsa_obj_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->remote_dsa_obj_dn));
-			if (ndr_get_array_length(ndr, &r->remote_dsa_obj_dn) > ndr_get_array_size(ndr, &r->remote_dsa_obj_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->remote_dsa_obj_dn), ndr_get_array_length(ndr, &r->remote_dsa_obj_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->remote_dsa_obj_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->remote_dsa_obj_dn, ndr_get_array_length(ndr, &r->remote_dsa_obj_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_remote_dsa_obj_dn_0, 0);
-		}
-		if (r->remote_dsa_address) {
-			_mem_save_remote_dsa_address_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->remote_dsa_address, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->remote_dsa_address));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->remote_dsa_address));
-			if (ndr_get_array_length(ndr, &r->remote_dsa_address) > ndr_get_array_size(ndr, &r->remote_dsa_address)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->remote_dsa_address), ndr_get_array_length(ndr, &r->remote_dsa_address));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->remote_dsa_address), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->remote_dsa_address, ndr_get_array_length(ndr, &r->remote_dsa_address), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_remote_dsa_address_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaOp(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOp *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaOp");
-	ndr->depth++;
-	ndr_print_NTTIME(ndr, "operation_start", r->operation_start);
-	ndr_print_uint32(ndr, "serial_num", r->serial_num);
-	ndr_print_uint32(ndr, "priority", r->priority);
-	ndr_print_drsuapi_DsReplicaOpType(ndr, "operation_type", r->operation_type);
-	ndr_print_set_switch_value(ndr, &r->options, r->operation_type);
-	ndr_print_drsuapi_DsRplicaOpOptions(ndr, "options", &r->options);
-	ndr_print_ptr(ndr, "nc_dn", r->nc_dn);
-	ndr->depth++;
-	if (r->nc_dn) {
-		ndr_print_string(ndr, "nc_dn", r->nc_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "remote_dsa_obj_dn", r->remote_dsa_obj_dn);
-	ndr->depth++;
-	if (r->remote_dsa_obj_dn) {
-		ndr_print_string(ndr, "remote_dsa_obj_dn", r->remote_dsa_obj_dn);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "remote_dsa_address", r->remote_dsa_address);
-	ndr->depth++;
-	if (r->remote_dsa_address) {
-		ndr_print_string(ndr, "remote_dsa_address", r->remote_dsa_address);
-	}
-	ndr->depth--;
-	ndr_print_GUID(ndr, "nc_obj_guid", &r->nc_obj_guid);
-	ndr_print_GUID(ndr, "remote_dsa_obj_guid", &r->remote_dsa_obj_guid);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaOpCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOpCtr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaOp(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaOp(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaOpCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOpCtr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaOp(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaOp(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaOpCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOpCtr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaOpCtr");
-	ndr->depth++;
-	ndr_print_NTTIME(ndr, "time", r->time);
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaOp(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaAttrValMetaData(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttrValMetaData *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribute_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->object_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_DATA_BLOB(0, r->binary, 0)));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->binary));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->deleted));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->created));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->originating_change_time));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->originating_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->local_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->attribute_name, ndr_charset_length(r->attribute_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->object_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->object_dn, ndr_charset_length(r->object_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->binary) {
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->binary));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttrValMetaData(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttrValMetaData *r)
-{
-	uint32_t _ptr_attribute_name;
-	TALLOC_CTX *_mem_save_attribute_name_0;
-	uint32_t _ptr_object_dn;
-	TALLOC_CTX *_mem_save_object_dn_0;
-	uint32_t _ptr_binary;
-	TALLOC_CTX *_mem_save_binary_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribute_name));
-		if (_ptr_attribute_name) {
-			NDR_PULL_ALLOC(ndr, r->attribute_name);
-		} else {
-			r->attribute_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object_dn));
-		if (_ptr_object_dn) {
-			NDR_PULL_ALLOC(ndr, r->object_dn);
-		} else {
-			r->object_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_binary));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary));
-		if (_ptr_binary) {
-			NDR_PULL_ALLOC(ndr, r->binary);
-		} else {
-			r->binary = NULL;
-		}
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->deleted));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->created));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->originating_change_time));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->originating_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->local_usn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			_mem_save_attribute_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->attribute_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->attribute_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->attribute_name));
-			if (ndr_get_array_length(ndr, &r->attribute_name) > ndr_get_array_size(ndr, &r->attribute_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->attribute_name), ndr_get_array_length(ndr, &r->attribute_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->attribute_name, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribute_name_0, 0);
-		}
-		if (r->object_dn) {
-			_mem_save_object_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->object_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->object_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->object_dn));
-			if (ndr_get_array_length(ndr, &r->object_dn) > ndr_get_array_size(ndr, &r->object_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->object_dn), ndr_get_array_length(ndr, &r->object_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->object_dn, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_dn_0, 0);
-		}
-		if (r->binary) {
-			_mem_save_binary_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->binary, 0);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttrValMetaData(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaData *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttrValMetaData");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "attribute_name", r->attribute_name);
-	ndr->depth++;
-	if (r->attribute_name) {
-		ndr_print_string(ndr, "attribute_name", r->attribute_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "object_dn", r->object_dn);
-	ndr->depth++;
-	if (r->object_dn) {
-		ndr_print_string(ndr, "object_dn", r->object_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "__ndr_size_binary", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_DATA_BLOB(0, r->binary, 0):r->__ndr_size_binary);
-	ndr_print_ptr(ndr, "binary", r->binary);
-	ndr->depth++;
-	if (r->binary) {
-		ndr_print_DATA_BLOB(ndr, "binary", *r->binary);
-	}
-	ndr->depth--;
-	ndr_print_NTTIME(ndr, "deleted", r->deleted);
-	ndr_print_NTTIME(ndr, "created", r->created);
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_NTTIME(ndr, "originating_change_time", r->originating_change_time);
-	ndr_print_GUID(ndr, "originating_invocation_id", &r->originating_invocation_id);
-	ndr_print_hyper(ndr, "originating_usn", r->originating_usn);
-	ndr_print_hyper(ndr, "local_usn", r->local_usn);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaAttrValMetaDataCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttrValMetaDataCtr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->enumeration_context));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaAttrValMetaData(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaAttrValMetaData(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttrValMetaDataCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttrValMetaDataCtr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->enumeration_context));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttrValMetaData(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttrValMetaData(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttrValMetaDataCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaDataCtr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttrValMetaDataCtr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_int32(ndr, "enumeration_context", r->enumeration_context);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaAttrValMetaData(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor2Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->enumeration_context));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor2(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor2Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->enumeration_context));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor2(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursor2Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursor2Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_int32(ndr, "enumeration_context", r->enumeration_context);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor2(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor3(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor3 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->highest_usn));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_sync_success));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->source_dsa_obj_dn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->source_dsa_obj_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->source_dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->source_dsa_obj_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->source_dsa_obj_dn, ndr_charset_length(r->source_dsa_obj_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor3(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor3 *r)
-{
-	uint32_t _ptr_source_dsa_obj_dn;
-	TALLOC_CTX *_mem_save_source_dsa_obj_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->source_dsa_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->highest_usn));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_sync_success));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_source_dsa_obj_dn));
-		if (_ptr_source_dsa_obj_dn) {
-			NDR_PULL_ALLOC(ndr, r->source_dsa_obj_dn);
-		} else {
-			r->source_dsa_obj_dn = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->source_dsa_obj_dn) {
-			_mem_save_source_dsa_obj_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->source_dsa_obj_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->source_dsa_obj_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->source_dsa_obj_dn));
-			if (ndr_get_array_length(ndr, &r->source_dsa_obj_dn) > ndr_get_array_size(ndr, &r->source_dsa_obj_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->source_dsa_obj_dn), ndr_get_array_length(ndr, &r->source_dsa_obj_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->source_dsa_obj_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->source_dsa_obj_dn, ndr_get_array_length(ndr, &r->source_dsa_obj_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_source_dsa_obj_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursor3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor3 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursor3");
-	ndr->depth++;
-	ndr_print_GUID(ndr, "source_dsa_invocation_id", &r->source_dsa_invocation_id);
-	ndr_print_hyper(ndr, "highest_usn", r->highest_usn);
-	ndr_print_NTTIME(ndr, "last_sync_success", r->last_sync_success);
-	ndr_print_ptr(ndr, "source_dsa_obj_dn", r->source_dsa_obj_dn);
-	ndr->depth++;
-	if (r->source_dsa_obj_dn) {
-		ndr_print_string(ndr, "source_dsa_obj_dn", r->source_dsa_obj_dn);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor3Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor3Ctr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->enumeration_context));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor3(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor3(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor3Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor3Ctr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->enumeration_context));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor3(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor3(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaCursor3Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor3Ctr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaCursor3Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_int32(ndr, "enumeration_context", r->enumeration_context);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaCursor3(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaObjMetaData2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjMetaData2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribute_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->originating_change_time));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->originating_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->local_usn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->originating_dsa_dn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->attribute_name, ndr_charset_length(r->attribute_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->originating_dsa_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->originating_dsa_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->originating_dsa_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->originating_dsa_dn, ndr_charset_length(r->originating_dsa_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjMetaData2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjMetaData2 *r)
-{
-	uint32_t _ptr_attribute_name;
-	TALLOC_CTX *_mem_save_attribute_name_0;
-	uint32_t _ptr_originating_dsa_dn;
-	TALLOC_CTX *_mem_save_originating_dsa_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribute_name));
-		if (_ptr_attribute_name) {
-			NDR_PULL_ALLOC(ndr, r->attribute_name);
-		} else {
-			r->attribute_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->originating_change_time));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->originating_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->local_usn));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_originating_dsa_dn));
-		if (_ptr_originating_dsa_dn) {
-			NDR_PULL_ALLOC(ndr, r->originating_dsa_dn);
-		} else {
-			r->originating_dsa_dn = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			_mem_save_attribute_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->attribute_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->attribute_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->attribute_name));
-			if (ndr_get_array_length(ndr, &r->attribute_name) > ndr_get_array_size(ndr, &r->attribute_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->attribute_name), ndr_get_array_length(ndr, &r->attribute_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->attribute_name, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribute_name_0, 0);
-		}
-		if (r->originating_dsa_dn) {
-			_mem_save_originating_dsa_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->originating_dsa_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->originating_dsa_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->originating_dsa_dn));
-			if (ndr_get_array_length(ndr, &r->originating_dsa_dn) > ndr_get_array_size(ndr, &r->originating_dsa_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->originating_dsa_dn), ndr_get_array_length(ndr, &r->originating_dsa_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->originating_dsa_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->originating_dsa_dn, ndr_get_array_length(ndr, &r->originating_dsa_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_originating_dsa_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjMetaData2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaData2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjMetaData2");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "attribute_name", r->attribute_name);
-	ndr->depth++;
-	if (r->attribute_name) {
-		ndr_print_string(ndr, "attribute_name", r->attribute_name);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_NTTIME(ndr, "originating_change_time", r->originating_change_time);
-	ndr_print_GUID(ndr, "originating_invocation_id", &r->originating_invocation_id);
-	ndr_print_hyper(ndr, "originating_usn", r->originating_usn);
-	ndr_print_hyper(ndr, "local_usn", r->local_usn);
-	ndr_print_ptr(ndr, "originating_dsa_dn", r->originating_dsa_dn);
-	ndr->depth++;
-	if (r->originating_dsa_dn) {
-		ndr_print_string(ndr, "originating_dsa_dn", r->originating_dsa_dn);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaObjMetaData2Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjMetaData2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->enumeration_context));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjMetaData2(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaObjMetaData2(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjMetaData2Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjMetaData2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->enumeration_context));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjMetaData2(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjMetaData2(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaObjMetaData2Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaData2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjMetaData2Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_int32(ndr, "enumeration_context", r->enumeration_context);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaObjMetaData2(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaAttrValMetaData2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttrValMetaData2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribute_name));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->object_dn));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_DATA_BLOB(0, r->binary, 0)));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->binary));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->deleted));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->created));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->originating_change_time));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->originating_usn));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->local_usn));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->originating_dsa_dn));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->attribute_name, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->attribute_name, ndr_charset_length(r->attribute_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->object_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->object_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->object_dn, ndr_charset_length(r->object_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->binary) {
-			NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, *r->binary));
-		}
-		if (r->originating_dsa_dn) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->originating_dsa_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->originating_dsa_dn, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->originating_dsa_dn, ndr_charset_length(r->originating_dsa_dn, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttrValMetaData2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttrValMetaData2 *r)
-{
-	uint32_t _ptr_attribute_name;
-	TALLOC_CTX *_mem_save_attribute_name_0;
-	uint32_t _ptr_object_dn;
-	TALLOC_CTX *_mem_save_object_dn_0;
-	uint32_t _ptr_binary;
-	TALLOC_CTX *_mem_save_binary_0;
-	uint32_t _ptr_originating_dsa_dn;
-	TALLOC_CTX *_mem_save_originating_dsa_dn_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribute_name));
-		if (_ptr_attribute_name) {
-			NDR_PULL_ALLOC(ndr, r->attribute_name);
-		} else {
-			r->attribute_name = NULL;
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_object_dn));
-		if (_ptr_object_dn) {
-			NDR_PULL_ALLOC(ndr, r->object_dn);
-		} else {
-			r->object_dn = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size_binary));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary));
-		if (_ptr_binary) {
-			NDR_PULL_ALLOC(ndr, r->binary);
-		} else {
-			r->binary = NULL;
-		}
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->deleted));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->created));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->originating_change_time));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->originating_invocation_id));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->originating_usn));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->local_usn));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_originating_dsa_dn));
-		if (_ptr_originating_dsa_dn) {
-			NDR_PULL_ALLOC(ndr, r->originating_dsa_dn);
-		} else {
-			r->originating_dsa_dn = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->attribute_name) {
-			_mem_save_attribute_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->attribute_name, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->attribute_name));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->attribute_name));
-			if (ndr_get_array_length(ndr, &r->attribute_name) > ndr_get_array_size(ndr, &r->attribute_name)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->attribute_name), ndr_get_array_length(ndr, &r->attribute_name));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->attribute_name, ndr_get_array_length(ndr, &r->attribute_name), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribute_name_0, 0);
-		}
-		if (r->object_dn) {
-			_mem_save_object_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->object_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->object_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->object_dn));
-			if (ndr_get_array_length(ndr, &r->object_dn) > ndr_get_array_size(ndr, &r->object_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->object_dn), ndr_get_array_length(ndr, &r->object_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->object_dn, ndr_get_array_length(ndr, &r->object_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_object_dn_0, 0);
-		}
-		if (r->binary) {
-			_mem_save_binary_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->binary, 0);
-			NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_0, 0);
-		}
-		if (r->originating_dsa_dn) {
-			_mem_save_originating_dsa_dn_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->originating_dsa_dn, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->originating_dsa_dn));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->originating_dsa_dn));
-			if (ndr_get_array_length(ndr, &r->originating_dsa_dn) > ndr_get_array_size(ndr, &r->originating_dsa_dn)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->originating_dsa_dn), ndr_get_array_length(ndr, &r->originating_dsa_dn));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->originating_dsa_dn), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->originating_dsa_dn, ndr_get_array_length(ndr, &r->originating_dsa_dn), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_originating_dsa_dn_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttrValMetaData2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaData2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttrValMetaData2");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "attribute_name", r->attribute_name);
-	ndr->depth++;
-	if (r->attribute_name) {
-		ndr_print_string(ndr, "attribute_name", r->attribute_name);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "object_dn", r->object_dn);
-	ndr->depth++;
-	if (r->object_dn) {
-		ndr_print_string(ndr, "object_dn", r->object_dn);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "__ndr_size_binary", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_DATA_BLOB(0, r->binary, 0):r->__ndr_size_binary);
-	ndr_print_ptr(ndr, "binary", r->binary);
-	ndr->depth++;
-	if (r->binary) {
-		ndr_print_DATA_BLOB(ndr, "binary", *r->binary);
-	}
-	ndr->depth--;
-	ndr_print_NTTIME(ndr, "deleted", r->deleted);
-	ndr_print_NTTIME(ndr, "created", r->created);
-	ndr_print_uint32(ndr, "version", r->version);
-	ndr_print_NTTIME(ndr, "originating_change_time", r->originating_change_time);
-	ndr_print_GUID(ndr, "originating_invocation_id", &r->originating_invocation_id);
-	ndr_print_hyper(ndr, "originating_usn", r->originating_usn);
-	ndr_print_hyper(ndr, "local_usn", r->local_usn);
-	ndr_print_ptr(ndr, "originating_dsa_dn", r->originating_dsa_dn);
-	ndr->depth++;
-	if (r->originating_dsa_dn) {
-		ndr_print_string(ndr, "originating_dsa_dn", r->originating_dsa_dn);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaAttrValMetaData2Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttrValMetaData2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->enumeration_context));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaAttrValMetaData2(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaAttrValMetaData2(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttrValMetaData2Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttrValMetaData2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->enumeration_context));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttrValMetaData2(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttrValMetaData2(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaAttrValMetaData2Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaData2Ctr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaAttrValMetaData2Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_int32(ndr, "enumeration_context", r->enumeration_context);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaAttrValMetaData2(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaConnection04(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaConnection04 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->u1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u3));
-		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->bind_guid));
-		NDR_CHECK(ndr_push_NTTIME_1sec(ndr, NDR_SCALARS, r->bind_time));
-		{
-			uint32_t _flags_save_ipv4address = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
-			NDR_CHECK(ndr_push_ipv4address(ndr, NDR_SCALARS, r->client_ip_address));
-			ndr->flags = _flags_save_ipv4address;
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u5));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaConnection04(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaConnection04 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->u1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u3));
-		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->bind_guid));
-		NDR_CHECK(ndr_pull_NTTIME_1sec(ndr, NDR_SCALARS, &r->bind_time));
-		{
-			uint32_t _flags_save_ipv4address = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
-			NDR_CHECK(ndr_pull_ipv4address(ndr, NDR_SCALARS, &r->client_ip_address));
-			ndr->flags = _flags_save_ipv4address;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u5));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaConnection04(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaConnection04 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaConnection04");
-	ndr->depth++;
-	ndr_print_hyper(ndr, "u1", r->u1);
-	ndr_print_uint32(ndr, "u2", r->u2);
-	ndr_print_uint32(ndr, "u3", r->u3);
-	ndr_print_GUID(ndr, "bind_guid", &r->bind_guid);
-	ndr_print_NTTIME_1sec(ndr, "bind_time", r->bind_time);
-	ndr_print_ipv4address(ndr, "client_ip_address", r->client_ip_address);
-	ndr_print_uint32(ndr, "u5", r->u5);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaConnection04Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaConnection04Ctr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplicaConnection04(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaConnection04Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaConnection04Ctr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplicaConnection04(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaConnection04Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaConnection04Ctr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaConnection04Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplicaConnection04(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplica06(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplica06 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->str1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u3));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u5));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->u6));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->u7));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->str1) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->str1, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->str1, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->str1, ndr_charset_length(r->str1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplica06(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplica06 *r)
-{
-	uint32_t _ptr_str1;
-	TALLOC_CTX *_mem_save_str1_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_str1));
-		if (_ptr_str1) {
-			NDR_PULL_ALLOC(ndr, r->str1);
-		} else {
-			r->str1 = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u3));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u5));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->u6));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->u7));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->str1) {
-			_mem_save_str1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->str1, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->str1));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->str1));
-			if (ndr_get_array_length(ndr, &r->str1) > ndr_get_array_size(ndr, &r->str1)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->str1), ndr_get_array_length(ndr, &r->str1));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->str1), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->str1, ndr_get_array_length(ndr, &r->str1), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_str1_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplica06(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplica06 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplica06");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "str1", r->str1);
-	ndr->depth++;
-	if (r->str1) {
-		ndr_print_string(ndr, "str1", r->str1);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "u1", r->u1);
-	ndr_print_uint32(ndr, "u2", r->u2);
-	ndr_print_uint32(ndr, "u3", r->u3);
-	ndr_print_uint32(ndr, "u4", r->u4);
-	ndr_print_uint32(ndr, "u5", r->u5);
-	ndr_print_hyper(ndr, "u6", r->u6);
-	ndr_print_uint32(ndr, "u7", r->u7);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplica06Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplica06Ctr *r)
-{
-	uint32_t cntr_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reserved));
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplica06(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_push_drsuapi_DsReplica06(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplica06Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplica06Ctr *r)
-{
-	uint32_t cntr_array_0;
-	TALLOC_CTX *_mem_save_array_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
-		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
-		if (r->count < 0 || r->count > 256) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reserved));
-		NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplica06(ndr, NDR_SCALARS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-		if (r->array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		_mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
-		for (cntr_array_0 = 0; cntr_array_0 < r->count; cntr_array_0++) {
-			NDR_CHECK(ndr_pull_drsuapi_DsReplica06(ndr, NDR_BUFFERS, &r->array[cntr_array_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplica06Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplica06Ctr *r)
-{
-	uint32_t cntr_array_0;
-	ndr_print_struct(ndr, name, "drsuapi_DsReplica06Ctr");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "count", r->count);
-	ndr_print_uint32(ndr, "reserved", r->reserved);
-	ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
-	ndr->depth++;
-	for (cntr_array_0=0;cntr_array_0<r->count;cntr_array_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_array_0) != -1) {
-			ndr_print_drsuapi_DsReplica06(ndr, "array", &r->array[cntr_array_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaInfo(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsReplicaInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->neighbours));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->cursors));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->objmetadata));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->connectfailures));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->linkfailures));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->pendingops));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->attrvalmetadata));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS2: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->cursors2));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS3: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->cursors3));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->objmetadata2));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->attrvalmetadata2));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->neighbours02));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->connections04));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS05: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->cursors05));
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_06: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->i06));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
-				if (r->neighbours) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->neighbours));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS:
-				if (r->cursors) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaCursorCtr(ndr, NDR_SCALARS, r->cursors));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
-				if (r->objmetadata) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaObjMetaDataCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->objmetadata));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
-				if (r->connectfailures) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaKccDsaFailuresCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->connectfailures));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
-				if (r->linkfailures) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaKccDsaFailuresCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->linkfailures));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
-				if (r->pendingops) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaOpCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->pendingops));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
-				if (r->attrvalmetadata) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaAttrValMetaDataCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->attrvalmetadata));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
-				if (r->cursors2) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor2Ctr(ndr, NDR_SCALARS, r->cursors2));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
-				if (r->cursors3) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaCursor3Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->cursors3));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
-				if (r->objmetadata2) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaObjMetaData2Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->objmetadata2));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
-				if (r->attrvalmetadata2) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaAttrValMetaData2Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->attrvalmetadata2));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02:
-				if (r->neighbours02) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaNeighbourCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->neighbours02));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04:
-				if (r->connections04) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaConnection04Ctr(ndr, NDR_SCALARS, r->connections04));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS05:
-				if (r->cursors05) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->cursors05));
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_06:
-				if (r->i06) {
-					NDR_CHECK(ndr_push_drsuapi_DsReplica06Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->i06));
-				}
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaInfo(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsReplicaInfo *r)
-{
-	int level;
-	uint32_t _level;
-	TALLOC_CTX *_mem_save_neighbours_0;
-	TALLOC_CTX *_mem_save_cursors_0;
-	TALLOC_CTX *_mem_save_objmetadata_0;
-	TALLOC_CTX *_mem_save_connectfailures_0;
-	TALLOC_CTX *_mem_save_linkfailures_0;
-	TALLOC_CTX *_mem_save_pendingops_0;
-	TALLOC_CTX *_mem_save_attrvalmetadata_0;
-	TALLOC_CTX *_mem_save_cursors2_0;
-	TALLOC_CTX *_mem_save_cursors3_0;
-	TALLOC_CTX *_mem_save_objmetadata2_0;
-	TALLOC_CTX *_mem_save_attrvalmetadata2_0;
-	TALLOC_CTX *_mem_save_neighbours02_0;
-	TALLOC_CTX *_mem_save_connections04_0;
-	TALLOC_CTX *_mem_save_cursors05_0;
-	TALLOC_CTX *_mem_save_i06_0;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS: {
-				uint32_t _ptr_neighbours;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_neighbours));
-				if (_ptr_neighbours) {
-					NDR_PULL_ALLOC(ndr, r->neighbours);
-				} else {
-					r->neighbours = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS: {
-				uint32_t _ptr_cursors;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cursors));
-				if (_ptr_cursors) {
-					NDR_PULL_ALLOC(ndr, r->cursors);
-				} else {
-					r->cursors = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA: {
-				uint32_t _ptr_objmetadata;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_objmetadata));
-				if (_ptr_objmetadata) {
-					NDR_PULL_ALLOC(ndr, r->objmetadata);
-				} else {
-					r->objmetadata = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES: {
-				uint32_t _ptr_connectfailures;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_connectfailures));
-				if (_ptr_connectfailures) {
-					NDR_PULL_ALLOC(ndr, r->connectfailures);
-				} else {
-					r->connectfailures = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES: {
-				uint32_t _ptr_linkfailures;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_linkfailures));
-				if (_ptr_linkfailures) {
-					NDR_PULL_ALLOC(ndr, r->linkfailures);
-				} else {
-					r->linkfailures = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS: {
-				uint32_t _ptr_pendingops;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pendingops));
-				if (_ptr_pendingops) {
-					NDR_PULL_ALLOC(ndr, r->pendingops);
-				} else {
-					r->pendingops = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA: {
-				uint32_t _ptr_attrvalmetadata;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attrvalmetadata));
-				if (_ptr_attrvalmetadata) {
-					NDR_PULL_ALLOC(ndr, r->attrvalmetadata);
-				} else {
-					r->attrvalmetadata = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS2: {
-				uint32_t _ptr_cursors2;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cursors2));
-				if (_ptr_cursors2) {
-					NDR_PULL_ALLOC(ndr, r->cursors2);
-				} else {
-					r->cursors2 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS3: {
-				uint32_t _ptr_cursors3;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cursors3));
-				if (_ptr_cursors3) {
-					NDR_PULL_ALLOC(ndr, r->cursors3);
-				} else {
-					r->cursors3 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2: {
-				uint32_t _ptr_objmetadata2;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_objmetadata2));
-				if (_ptr_objmetadata2) {
-					NDR_PULL_ALLOC(ndr, r->objmetadata2);
-				} else {
-					r->objmetadata2 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2: {
-				uint32_t _ptr_attrvalmetadata2;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attrvalmetadata2));
-				if (_ptr_attrvalmetadata2) {
-					NDR_PULL_ALLOC(ndr, r->attrvalmetadata2);
-				} else {
-					r->attrvalmetadata2 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02: {
-				uint32_t _ptr_neighbours02;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_neighbours02));
-				if (_ptr_neighbours02) {
-					NDR_PULL_ALLOC(ndr, r->neighbours02);
-				} else {
-					r->neighbours02 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04: {
-				uint32_t _ptr_connections04;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_connections04));
-				if (_ptr_connections04) {
-					NDR_PULL_ALLOC(ndr, r->connections04);
-				} else {
-					r->connections04 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS05: {
-				uint32_t _ptr_cursors05;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cursors05));
-				if (_ptr_cursors05) {
-					NDR_PULL_ALLOC(ndr, r->cursors05);
-				} else {
-					r->cursors05 = NULL;
-				}
-			break; }
-
-			case DRSUAPI_DS_REPLICA_INFO_06: {
-				uint32_t _ptr_i06;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_i06));
-				if (_ptr_i06) {
-					NDR_PULL_ALLOC(ndr, r->i06);
-				} else {
-					r->i06 = NULL;
-				}
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
-				if (r->neighbours) {
-					_mem_save_neighbours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->neighbours, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->neighbours));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_neighbours_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS:
-				if (r->cursors) {
-					_mem_save_cursors_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->cursors, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursorCtr(ndr, NDR_SCALARS, r->cursors));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
-				if (r->objmetadata) {
-					_mem_save_objmetadata_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->objmetadata, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjMetaDataCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->objmetadata));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_objmetadata_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
-				if (r->connectfailures) {
-					_mem_save_connectfailures_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->connectfailures, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaKccDsaFailuresCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->connectfailures));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_connectfailures_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
-				if (r->linkfailures) {
-					_mem_save_linkfailures_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->linkfailures, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaKccDsaFailuresCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->linkfailures));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_linkfailures_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
-				if (r->pendingops) {
-					_mem_save_pendingops_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->pendingops, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaOpCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->pendingops));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pendingops_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
-				if (r->attrvalmetadata) {
-					_mem_save_attrvalmetadata_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->attrvalmetadata, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttrValMetaDataCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->attrvalmetadata));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attrvalmetadata_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
-				if (r->cursors2) {
-					_mem_save_cursors2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->cursors2, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor2Ctr(ndr, NDR_SCALARS, r->cursors2));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors2_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
-				if (r->cursors3) {
-					_mem_save_cursors3_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->cursors3, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursor3Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->cursors3));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors3_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
-				if (r->objmetadata2) {
-					_mem_save_objmetadata2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->objmetadata2, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaObjMetaData2Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->objmetadata2));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_objmetadata2_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
-				if (r->attrvalmetadata2) {
-					_mem_save_attrvalmetadata2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->attrvalmetadata2, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaAttrValMetaData2Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->attrvalmetadata2));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attrvalmetadata2_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02:
-				if (r->neighbours02) {
-					_mem_save_neighbours02_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->neighbours02, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaNeighbourCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->neighbours02));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_neighbours02_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04:
-				if (r->connections04) {
-					_mem_save_connections04_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->connections04, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaConnection04Ctr(ndr, NDR_SCALARS, r->connections04));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_connections04_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_CURSORS05:
-				if (r->cursors05) {
-					_mem_save_cursors05_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->cursors05, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplicaCursorCtrEx(ndr, NDR_SCALARS, r->cursors05));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cursors05_0, 0);
-				}
-			break;
-
-			case DRSUAPI_DS_REPLICA_INFO_06:
-				if (r->i06) {
-					_mem_save_i06_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->i06, 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsReplica06Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->i06));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_i06_0, 0);
-				}
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaInfo *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsReplicaInfo");
-	switch (level) {
-		case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS:
-			ndr_print_ptr(ndr, "neighbours", r->neighbours);
-			ndr->depth++;
-			if (r->neighbours) {
-				ndr_print_drsuapi_DsReplicaNeighbourCtr(ndr, "neighbours", r->neighbours);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS:
-			ndr_print_ptr(ndr, "cursors", r->cursors);
-			ndr->depth++;
-			if (r->cursors) {
-				ndr_print_drsuapi_DsReplicaCursorCtr(ndr, "cursors", r->cursors);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA:
-			ndr_print_ptr(ndr, "objmetadata", r->objmetadata);
-			ndr->depth++;
-			if (r->objmetadata) {
-				ndr_print_drsuapi_DsReplicaObjMetaDataCtr(ndr, "objmetadata", r->objmetadata);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES:
-			ndr_print_ptr(ndr, "connectfailures", r->connectfailures);
-			ndr->depth++;
-			if (r->connectfailures) {
-				ndr_print_drsuapi_DsReplicaKccDsaFailuresCtr(ndr, "connectfailures", r->connectfailures);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES:
-			ndr_print_ptr(ndr, "linkfailures", r->linkfailures);
-			ndr->depth++;
-			if (r->linkfailures) {
-				ndr_print_drsuapi_DsReplicaKccDsaFailuresCtr(ndr, "linkfailures", r->linkfailures);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_PENDING_OPS:
-			ndr_print_ptr(ndr, "pendingops", r->pendingops);
-			ndr->depth++;
-			if (r->pendingops) {
-				ndr_print_drsuapi_DsReplicaOpCtr(ndr, "pendingops", r->pendingops);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA:
-			ndr_print_ptr(ndr, "attrvalmetadata", r->attrvalmetadata);
-			ndr->depth++;
-			if (r->attrvalmetadata) {
-				ndr_print_drsuapi_DsReplicaAttrValMetaDataCtr(ndr, "attrvalmetadata", r->attrvalmetadata);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS2:
-			ndr_print_ptr(ndr, "cursors2", r->cursors2);
-			ndr->depth++;
-			if (r->cursors2) {
-				ndr_print_drsuapi_DsReplicaCursor2Ctr(ndr, "cursors2", r->cursors2);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS3:
-			ndr_print_ptr(ndr, "cursors3", r->cursors3);
-			ndr->depth++;
-			if (r->cursors3) {
-				ndr_print_drsuapi_DsReplicaCursor3Ctr(ndr, "cursors3", r->cursors3);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2:
-			ndr_print_ptr(ndr, "objmetadata2", r->objmetadata2);
-			ndr->depth++;
-			if (r->objmetadata2) {
-				ndr_print_drsuapi_DsReplicaObjMetaData2Ctr(ndr, "objmetadata2", r->objmetadata2);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2:
-			ndr_print_ptr(ndr, "attrvalmetadata2", r->attrvalmetadata2);
-			ndr->depth++;
-			if (r->attrvalmetadata2) {
-				ndr_print_drsuapi_DsReplicaAttrValMetaData2Ctr(ndr, "attrvalmetadata2", r->attrvalmetadata2);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02:
-			ndr_print_ptr(ndr, "neighbours02", r->neighbours02);
-			ndr->depth++;
-			if (r->neighbours02) {
-				ndr_print_drsuapi_DsReplicaNeighbourCtr(ndr, "neighbours02", r->neighbours02);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04:
-			ndr_print_ptr(ndr, "connections04", r->connections04);
-			ndr->depth++;
-			if (r->connections04) {
-				ndr_print_drsuapi_DsReplicaConnection04Ctr(ndr, "connections04", r->connections04);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_CURSORS05:
-			ndr_print_ptr(ndr, "cursors05", r->cursors05);
-			ndr->depth++;
-			if (r->cursors05) {
-				ndr_print_drsuapi_DsReplicaCursorCtrEx(ndr, "cursors05", r->cursors05);
-			}
-			ndr->depth--;
-		break;
-
-		case DRSUAPI_DS_REPLICA_INFO_06:
-			ndr_print_ptr(ndr, "i06", r->i06);
-			ndr->depth++;
-			if (r->i06) {
-				ndr_print_drsuapi_DsReplica06Ctr(ndr, "i06", r->i06);
-			}
-			ndr->depth--;
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMemberships2Ctr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetMemberships2Ctr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMemberships2Ctr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetMemberships2Ctr *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMemberships2Ctr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMemberships2Ctr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetMemberships2Ctr");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetMembershipsCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMemberships2Request1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetMemberships2Request1 *r)
-{
-	uint32_t cntr_req_array_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_req));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->req_array));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->req_array) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_req));
-			for (cntr_req_array_1 = 0; cntr_req_array_1 < r->num_req; cntr_req_array_1++) {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->req_array[cntr_req_array_1]));
-			}
-			for (cntr_req_array_1 = 0; cntr_req_array_1 < r->num_req; cntr_req_array_1++) {
-				if (r->req_array[cntr_req_array_1]) {
-					NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsRequest1(ndr, NDR_SCALARS|NDR_BUFFERS, r->req_array[cntr_req_array_1]));
-				}
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMemberships2Request1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetMemberships2Request1 *r)
-{
-	uint32_t _ptr_req_array;
-	uint32_t cntr_req_array_1;
-	TALLOC_CTX *_mem_save_req_array_0;
-	TALLOC_CTX *_mem_save_req_array_1;
-	TALLOC_CTX *_mem_save_req_array_2;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_req));
-		if (r->num_req < 1 || r->num_req > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_req_array));
-		if (_ptr_req_array) {
-			NDR_PULL_ALLOC(ndr, r->req_array);
-		} else {
-			r->req_array = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->req_array) {
-			_mem_save_req_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->req_array, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->req_array));
-			NDR_PULL_ALLOC_N(ndr, r->req_array, ndr_get_array_size(ndr, &r->req_array));
-			_mem_save_req_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->req_array, 0);
-			for (cntr_req_array_1 = 0; cntr_req_array_1 < r->num_req; cntr_req_array_1++) {
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_req_array));
-				if (_ptr_req_array) {
-					NDR_PULL_ALLOC(ndr, r->req_array[cntr_req_array_1]);
-				} else {
-					r->req_array[cntr_req_array_1] = NULL;
-				}
-			}
-			for (cntr_req_array_1 = 0; cntr_req_array_1 < r->num_req; cntr_req_array_1++) {
-				if (r->req_array[cntr_req_array_1]) {
-					_mem_save_req_array_2 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->req_array[cntr_req_array_1], 0);
-					NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsRequest1(ndr, NDR_SCALARS|NDR_BUFFERS, r->req_array[cntr_req_array_1]));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_array_2, 0);
-				}
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_array_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_array_0, 0);
-		}
-		if (r->req_array) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->req_array, r->num_req));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMemberships2Request1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMemberships2Request1 *r)
-{
-	uint32_t cntr_req_array_1;
-	ndr_print_struct(ndr, name, "drsuapi_DsGetMemberships2Request1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "num_req", r->num_req);
-	ndr_print_ptr(ndr, "req_array", r->req_array);
-	ndr->depth++;
-	if (r->req_array) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "req_array", (int)r->num_req);
-		ndr->depth++;
-		for (cntr_req_array_1=0;cntr_req_array_1<r->num_req;cntr_req_array_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_req_array_1) != -1) {
-				ndr_print_ptr(ndr, "req_array", r->req_array[cntr_req_array_1]);
-				ndr->depth++;
-				if (r->req_array[cntr_req_array_1]) {
-					ndr_print_drsuapi_DsGetMembershipsRequest1(ndr, "req_array", r->req_array[cntr_req_array_1]);
-				}
-				ndr->depth--;
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMemberships2Request(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsGetMemberships2Request *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_DsGetMemberships2Request1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_DsGetMemberships2Request1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMemberships2Request(struct ndr_pull *ndr, int ndr_flags, union drsuapi_DsGetMemberships2Request *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMemberships2Request1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_DsGetMemberships2Request1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMemberships2Request(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMemberships2Request *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_DsGetMemberships2Request");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_DsGetMemberships2Request1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsSiteCostInfo(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsSiteCostInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->error_code));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->site_cost));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsSiteCostInfo(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsSiteCostInfo *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->error_code));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->site_cost));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsSiteCostInfo(struct ndr_print *ndr, const char *name, const struct drsuapi_DsSiteCostInfo *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsSiteCostInfo");
-	ndr->depth++;
-	ndr_print_WERROR(ndr, "error_code", r->error_code);
-	ndr_print_uint32(ndr, "site_cost", r->site_cost);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_QuerySitesByCostCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_QuerySitesByCostCtr1 *r)
-{
-	uint32_t cntr_info_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_info));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_info));
-			for (cntr_info_1 = 0; cntr_info_1 < r->num_info; cntr_info_1++) {
-				NDR_CHECK(ndr_push_drsuapi_DsSiteCostInfo(ndr, NDR_SCALARS, &r->info[cntr_info_1]));
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCostCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_QuerySitesByCostCtr1 *r)
-{
-	uint32_t _ptr_info;
-	uint32_t cntr_info_1;
-	TALLOC_CTX *_mem_save_info_0;
-	TALLOC_CTX *_mem_save_info_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_info));
-		if (r->num_info < 0 || r->num_info > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
-		if (_ptr_info) {
-			NDR_PULL_ALLOC(ndr, r->info);
-		} else {
-			r->info = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->info) {
-			_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->info));
-			NDR_PULL_ALLOC_N(ndr, r->info, ndr_get_array_size(ndr, &r->info));
-			_mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
-			for (cntr_info_1 = 0; cntr_info_1 < r->num_info; cntr_info_1++) {
-				NDR_CHECK(ndr_pull_drsuapi_DsSiteCostInfo(ndr, NDR_SCALARS, &r->info[cntr_info_1]));
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
-		}
-		if (r->info) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->info, r->num_info));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_QuerySitesByCostCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_QuerySitesByCostCtr1 *r)
-{
-	uint32_t cntr_info_1;
-	ndr_print_struct(ndr, name, "drsuapi_QuerySitesByCostCtr1");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "num_info", r->num_info);
-	ndr_print_ptr(ndr, "info", r->info);
-	ndr->depth++;
-	if (r->info) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "info", (int)r->num_info);
-		ndr->depth++;
-		for (cntr_info_1=0;cntr_info_1<r->num_info;cntr_info_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_info_1) != -1) {
-				ndr_print_drsuapi_DsSiteCostInfo(ndr, "info", &r->info[cntr_info_1]);
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "unknown", r->unknown);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_QuerySitesByCostCtr(struct ndr_push *ndr, int ndr_flags, const union drsuapi_QuerySitesByCostCtr *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_QuerySitesByCostCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_QuerySitesByCostCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCostCtr(struct ndr_pull *ndr, int ndr_flags, union drsuapi_QuerySitesByCostCtr *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_QuerySitesByCostCtr1(ndr, NDR_SCALARS, &r->ctr1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_QuerySitesByCostCtr1(ndr, NDR_BUFFERS, &r->ctr1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_QuerySitesByCostCtr(struct ndr_print *ndr, const char *name, const union drsuapi_QuerySitesByCostCtr *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_QuerySitesByCostCtr");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_QuerySitesByCostCtr1(ndr, "ctr1", &r->ctr1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-static enum ndr_err_code ndr_push_drsuapi_QuerySitesByCostRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_QuerySitesByCostRequest1 *r)
-{
-	uint32_t cntr_site_to_1;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_from));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_req));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_to));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->site_from) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_from, CH_UTF16)));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_from, CH_UTF16)));
-			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_from, ndr_charset_length(r->site_from, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		}
-		if (r->site_to) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_req));
-			for (cntr_site_to_1 = 0; cntr_site_to_1 < r->num_req; cntr_site_to_1++) {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->site_to[cntr_site_to_1]));
-			}
-			for (cntr_site_to_1 = 0; cntr_site_to_1 < r->num_req; cntr_site_to_1++) {
-				if (r->site_to[cntr_site_to_1]) {
-					NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_to[cntr_site_to_1], CH_UTF16)));
-					NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-					NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->site_to[cntr_site_to_1], CH_UTF16)));
-					NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->site_to[cntr_site_to_1], ndr_charset_length(r->site_to[cntr_site_to_1], CH_UTF16), sizeof(uint16_t), CH_UTF16));
-				}
-			}
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCostRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_QuerySitesByCostRequest1 *r)
-{
-	uint32_t _ptr_site_from;
-	TALLOC_CTX *_mem_save_site_from_0;
-	uint32_t _ptr_site_to;
-	uint32_t cntr_site_to_1;
-	TALLOC_CTX *_mem_save_site_to_0;
-	TALLOC_CTX *_mem_save_site_to_1;
-	TALLOC_CTX *_mem_save_site_to_2;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_from));
-		if (_ptr_site_from) {
-			NDR_PULL_ALLOC(ndr, r->site_from);
-		} else {
-			r->site_from = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_req));
-		if (r->num_req < 1 || r->num_req > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_to));
-		if (_ptr_site_to) {
-			NDR_PULL_ALLOC(ndr, r->site_to);
-		} else {
-			r->site_to = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->site_from) {
-			_mem_save_site_from_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_from, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_from));
-			NDR_CHECK(ndr_pull_array_length(ndr, &r->site_from));
-			if (ndr_get_array_length(ndr, &r->site_from) > ndr_get_array_size(ndr, &r->site_from)) {
-				return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_from), ndr_get_array_length(ndr, &r->site_from));
-			}
-			NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_from), sizeof(uint16_t)));
-			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_from, ndr_get_array_length(ndr, &r->site_from), sizeof(uint16_t), CH_UTF16));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_from_0, 0);
-		}
-		if (r->site_to) {
-			_mem_save_site_to_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_to, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->site_to));
-			NDR_PULL_ALLOC_N(ndr, r->site_to, ndr_get_array_size(ndr, &r->site_to));
-			_mem_save_site_to_1 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->site_to, 0);
-			for (cntr_site_to_1 = 0; cntr_site_to_1 < r->num_req; cntr_site_to_1++) {
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_to));
-				if (_ptr_site_to) {
-					NDR_PULL_ALLOC(ndr, r->site_to[cntr_site_to_1]);
-				} else {
-					r->site_to[cntr_site_to_1] = NULL;
-				}
-			}
-			for (cntr_site_to_1 = 0; cntr_site_to_1 < r->num_req; cntr_site_to_1++) {
-				if (r->site_to[cntr_site_to_1]) {
-					_mem_save_site_to_2 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->site_to[cntr_site_to_1], 0);
-					NDR_CHECK(ndr_pull_array_size(ndr, &r->site_to[cntr_site_to_1]));
-					NDR_CHECK(ndr_pull_array_length(ndr, &r->site_to[cntr_site_to_1]));
-					if (ndr_get_array_length(ndr, &r->site_to[cntr_site_to_1]) > ndr_get_array_size(ndr, &r->site_to[cntr_site_to_1])) {
-						return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->site_to[cntr_site_to_1]), ndr_get_array_length(ndr, &r->site_to[cntr_site_to_1]));
-					}
-					NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->site_to[cntr_site_to_1]), sizeof(uint16_t)));
-					NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->site_to[cntr_site_to_1], ndr_get_array_length(ndr, &r->site_to[cntr_site_to_1]), sizeof(uint16_t), CH_UTF16));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_to_2, 0);
-				}
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_to_1, 0);
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_to_0, 0);
-		}
-		if (r->site_to) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->site_to, r->num_req));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_QuerySitesByCostRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_QuerySitesByCostRequest1 *r)
-{
-	uint32_t cntr_site_to_1;
-	ndr_print_struct(ndr, name, "drsuapi_QuerySitesByCostRequest1");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "site_from", r->site_from);
-	ndr->depth++;
-	if (r->site_from) {
-		ndr_print_string(ndr, "site_from", r->site_from);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "num_req", r->num_req);
-	ndr_print_ptr(ndr, "site_to", r->site_to);
-	ndr->depth++;
-	if (r->site_to) {
-		ndr->print(ndr, "%s: ARRAY(%d)", "site_to", (int)r->num_req);
-		ndr->depth++;
-		for (cntr_site_to_1=0;cntr_site_to_1<r->num_req;cntr_site_to_1++) {
-			char *idx_1=NULL;
-			if (asprintf(&idx_1, "[%d]", cntr_site_to_1) != -1) {
-				ndr_print_ptr(ndr, "site_to", r->site_to[cntr_site_to_1]);
-				ndr->depth++;
-				if (r->site_to[cntr_site_to_1]) {
-					ndr_print_string(ndr, "site_to", r->site_to[cntr_site_to_1]);
-				}
-				ndr->depth--;
-				free(idx_1);
-			}
-		}
-		ndr->depth--;
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "flags", r->flags);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_QuerySitesByCostRequest(struct ndr_push *ndr, int ndr_flags, const union drsuapi_QuerySitesByCostRequest *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_drsuapi_QuerySitesByCostRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_push_drsuapi_QuerySitesByCostRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCostRequest(struct ndr_pull *ndr, int ndr_flags, union drsuapi_QuerySitesByCostRequest *r)
-{
-	int level;
-	int32_t _level;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_pull_drsuapi_QuerySitesByCostRequest1(ndr, NDR_SCALARS, &r->req1));
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				NDR_CHECK(ndr_pull_drsuapi_QuerySitesByCostRequest1(ndr, NDR_BUFFERS, &r->req1));
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_QuerySitesByCostRequest(struct ndr_print *ndr, const char *name, const union drsuapi_QuerySitesByCostRequest *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "drsuapi_QuerySitesByCostRequest");
-	switch (level) {
-		case 1:
-			ndr_print_drsuapi_QuerySitesByCostRequest1(ndr, "req1", &r->req1);
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsBind(struct ndr_push *ndr, int flags, const struct drsuapi_DsBind *r)
-{
-	if (flags & NDR_IN) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.bind_guid));
-		if (r->in.bind_guid) {
-			NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.bind_guid));
-		}
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.bind_info));
-		if (r->in.bind_info) {
-			NDR_CHECK(ndr_push_drsuapi_DsBindInfoCtr(ndr, NDR_SCALARS, r->in.bind_info));
-		}
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.bind_info));
-		if (r->out.bind_info) {
-			NDR_CHECK(ndr_push_drsuapi_DsBindInfoCtr(ndr, NDR_SCALARS, r->out.bind_info));
-		}
-		if (r->out.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.bind_handle));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsBind(struct ndr_pull *ndr, int flags, struct drsuapi_DsBind *r)
-{
-	uint32_t _ptr_bind_guid;
-	uint32_t _ptr_bind_info;
-	TALLOC_CTX *_mem_save_bind_guid_0;
-	TALLOC_CTX *_mem_save_bind_info_0;
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_bind_guid));
-		if (_ptr_bind_guid) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_guid);
-		} else {
-			r->in.bind_guid = NULL;
-		}
-		if (r->in.bind_guid) {
-			_mem_save_bind_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_guid, 0);
-			NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.bind_guid));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_guid_0, 0);
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_bind_info));
-		if (_ptr_bind_info) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_info);
-		} else {
-			r->in.bind_info = NULL;
-		}
-		if (r->in.bind_info) {
-			_mem_save_bind_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_info, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsBindInfoCtr(ndr, NDR_SCALARS, r->in.bind_info));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_info_0, 0);
-		}
-		NDR_PULL_ALLOC(ndr, r->out.bind_handle);
-		ZERO_STRUCTP(r->out.bind_handle);
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_bind_info));
-		if (_ptr_bind_info) {
-			NDR_PULL_ALLOC(ndr, r->out.bind_info);
-		} else {
-			r->out.bind_info = NULL;
-		}
-		if (r->out.bind_info) {
-			_mem_save_bind_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->out.bind_info, 0);
-			NDR_CHECK(ndr_pull_drsuapi_DsBindInfoCtr(ndr, NDR_SCALARS, r->out.bind_info));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_info_0, 0);
-		}
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsBind(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsBind *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsBind");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsBind");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_guid", r->in.bind_guid);
-		ndr->depth++;
-		if (r->in.bind_guid) {
-			ndr_print_GUID(ndr, "bind_guid", r->in.bind_guid);
-		}
-		ndr->depth--;
-		ndr_print_ptr(ndr, "bind_info", r->in.bind_info);
-		ndr->depth++;
-		if (r->in.bind_info) {
-			ndr_print_drsuapi_DsBindInfoCtr(ndr, "bind_info", r->in.bind_info);
-		}
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsBind");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_info", r->out.bind_info);
-		ndr->depth++;
-		if (r->out.bind_info) {
-			ndr_print_drsuapi_DsBindInfoCtr(ndr, "bind_info", r->out.bind_info);
-		}
-		ndr->depth--;
-		ndr_print_ptr(ndr, "bind_handle", r->out.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->out.bind_handle);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsUnbind(struct ndr_push *ndr, int flags, const struct drsuapi_DsUnbind *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.bind_handle));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsUnbind(struct ndr_pull *ndr, int flags, struct drsuapi_DsUnbind *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.bind_handle);
-		*r->out.bind_handle = *r->in.bind_handle;
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsUnbind(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsUnbind *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsUnbind");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsUnbind");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsUnbind");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->out.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->out.bind_handle);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaSync(struct ndr_push *ndr, int flags, const struct drsuapi_DsReplicaSync *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaSyncRequest(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaSync(struct ndr_pull *ndr, int flags, struct drsuapi_DsReplicaSync *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	if (flags & NDR_IN) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaSyncRequest(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaSync(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsReplicaSync *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaSync");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsReplicaSync");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_set_switch_value(ndr, &r->in.req, r->in.level);
-		ndr_print_drsuapi_DsReplicaSyncRequest(ndr, "req", &r->in.req);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsReplicaSync");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNCChanges(struct ndr_push *ndr, int flags, const struct drsuapi_DsGetNCChanges *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNCChangesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNCChanges(struct ndr_pull *ndr, int flags, struct drsuapi_DsGetNCChanges *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNCChangesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNCChanges(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetNCChanges *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNCChanges");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsGetNCChanges");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsGetNCChangesRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsGetNCChanges");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_DsGetNCChangesCtr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaUpdateRefs(struct ndr_push *ndr, int flags, const struct drsuapi_DsReplicaUpdateRefs *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaUpdateRefsRequest(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaUpdateRefs(struct ndr_pull *ndr, int flags, struct drsuapi_DsReplicaUpdateRefs *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	if (flags & NDR_IN) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaUpdateRefsRequest(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaUpdateRefs(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsReplicaUpdateRefs *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaUpdateRefs");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsReplicaUpdateRefs");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_set_switch_value(ndr, &r->in.req, r->in.level);
-		ndr_print_drsuapi_DsReplicaUpdateRefsRequest(ndr, "req", &r->in.req);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsReplicaUpdateRefs");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_REPLICA_ADD(struct ndr_push *ndr, int flags, const struct DRSUAPI_REPLICA_ADD *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_REPLICA_ADD(struct ndr_pull *ndr, int flags, struct DRSUAPI_REPLICA_ADD *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_REPLICA_ADD(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_ADD *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_REPLICA_ADD");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_REPLICA_ADD");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_REPLICA_ADD");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_REPLICA_DEL(struct ndr_push *ndr, int flags, const struct DRSUAPI_REPLICA_DEL *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_REPLICA_DEL(struct ndr_pull *ndr, int flags, struct DRSUAPI_REPLICA_DEL *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_REPLICA_DEL(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_DEL *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_REPLICA_DEL");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_REPLICA_DEL");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_REPLICA_DEL");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_REPLICA_MODIFY(struct ndr_push *ndr, int flags, const struct DRSUAPI_REPLICA_MODIFY *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_REPLICA_MODIFY(struct ndr_pull *ndr, int flags, struct DRSUAPI_REPLICA_MODIFY *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_REPLICA_MODIFY(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_MODIFY *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_REPLICA_MODIFY");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_REPLICA_MODIFY");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_REPLICA_MODIFY");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_VERIFY_NAMES(struct ndr_push *ndr, int flags, const struct DRSUAPI_VERIFY_NAMES *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_VERIFY_NAMES(struct ndr_pull *ndr, int flags, struct DRSUAPI_VERIFY_NAMES *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_VERIFY_NAMES(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_VERIFY_NAMES *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_VERIFY_NAMES");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_VERIFY_NAMES");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_VERIFY_NAMES");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMemberships(struct ndr_push *ndr, int flags, const struct drsuapi_DsGetMemberships *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsGetMembershipsCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMemberships(struct ndr_pull *ndr, int flags, struct drsuapi_DsGetMemberships *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetMembershipsCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMemberships(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetMemberships *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetMemberships");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsGetMemberships");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsGetMembershipsRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsGetMemberships");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_DsGetMembershipsCtr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_INTER_DOMAIN_MOVE(struct ndr_push *ndr, int flags, const struct DRSUAPI_INTER_DOMAIN_MOVE *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_INTER_DOMAIN_MOVE(struct ndr_pull *ndr, int flags, struct DRSUAPI_INTER_DOMAIN_MOVE *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_INTER_DOMAIN_MOVE(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_INTER_DOMAIN_MOVE *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_INTER_DOMAIN_MOVE");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_INTER_DOMAIN_MOVE");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_INTER_DOMAIN_MOVE");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLog(struct ndr_push *ndr, int flags, const struct drsuapi_DsGetNT4ChangeLog *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.info == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLog(struct ndr_pull *ndr, int flags, struct drsuapi_DsGetNT4ChangeLog *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_info_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.info);
-		ZERO_STRUCTP(r->out.info);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.info);
-		}
-		_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLog(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetNT4ChangeLog *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetNT4ChangeLog");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsGetNT4ChangeLog");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsGetNT4ChangeLogRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsGetNT4ChangeLog");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "info", r->out.info);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.info, *r->out.level_out);
-		ndr_print_drsuapi_DsGetNT4ChangeLogInfo(ndr, "info", r->out.info);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsCrackNames(struct ndr_push *ndr, int flags, const struct drsuapi_DsCrackNames *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsNameRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsNameCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsCrackNames(struct ndr_pull *ndr, int flags, struct drsuapi_DsCrackNames *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsNameRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsNameCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsCrackNames(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsCrackNames *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsCrackNames");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsCrackNames");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsNameRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsCrackNames");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_DsNameCtr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsWriteAccountSpn(struct ndr_push *ndr, int flags, const struct drsuapi_DsWriteAccountSpn *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsWriteAccountSpnRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.res == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.res, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsWriteAccountSpnResult(ndr, NDR_SCALARS, r->out.res));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsWriteAccountSpn(struct ndr_pull *ndr, int flags, struct drsuapi_DsWriteAccountSpn *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_res_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsWriteAccountSpnRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.res);
-		ZERO_STRUCTP(r->out.res);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.res);
-		}
-		_mem_save_res_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.res, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.res, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsWriteAccountSpnResult(ndr, NDR_SCALARS, r->out.res));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_res_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsWriteAccountSpn(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsWriteAccountSpn *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsWriteAccountSpn");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsWriteAccountSpn");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsWriteAccountSpnRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsWriteAccountSpn");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "res", r->out.res);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.res, *r->out.level_out);
-		ndr_print_drsuapi_DsWriteAccountSpnResult(ndr, "res", r->out.res);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsRemoveDSServer(struct ndr_push *ndr, int flags, const struct drsuapi_DsRemoveDSServer *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsRemoveDSServerRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.res == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.res, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsRemoveDSServerResult(ndr, NDR_SCALARS, r->out.res));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsRemoveDSServer(struct ndr_pull *ndr, int flags, struct drsuapi_DsRemoveDSServer *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_res_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsRemoveDSServerRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.res);
-		ZERO_STRUCTP(r->out.res);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.res);
-		}
-		_mem_save_res_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.res, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.res, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsRemoveDSServerResult(ndr, NDR_SCALARS, r->out.res));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_res_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsRemoveDSServer(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsRemoveDSServer *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsRemoveDSServer");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsRemoveDSServer");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsRemoveDSServerRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsRemoveDSServer");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "res", r->out.res);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.res, *r->out.level_out);
-		ndr_print_drsuapi_DsRemoveDSServerResult(ndr, "res", r->out.res);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_REMOVE_DS_DOMAIN(struct ndr_push *ndr, int flags, const struct DRSUAPI_REMOVE_DS_DOMAIN *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_REMOVE_DS_DOMAIN(struct ndr_pull *ndr, int flags, struct DRSUAPI_REMOVE_DS_DOMAIN *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_REMOVE_DS_DOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REMOVE_DS_DOMAIN *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_REMOVE_DS_DOMAIN");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_REMOVE_DS_DOMAIN");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_REMOVE_DS_DOMAIN");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetDomainControllerInfo(struct ndr_push *ndr, int flags, const struct drsuapi_DsGetDomainControllerInfo *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsGetDCInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetDomainControllerInfo(struct ndr_pull *ndr, int flags, struct drsuapi_DsGetDomainControllerInfo *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetDCInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetDomainControllerInfo(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetDomainControllerInfo *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetDomainControllerInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsGetDomainControllerInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsGetDCInfoRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsGetDomainControllerInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_DsGetDCInfoCtr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_drsuapi_DsAddEntry(struct ndr_push *ndr, int flags, const struct drsuapi_DsAddEntry *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsAddEntryCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_drsuapi_DsAddEntry(struct ndr_pull *ndr, int flags, struct drsuapi_DsAddEntry *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsAddEntryCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsAddEntry(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsAddEntry *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsAddEntry");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsAddEntry");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsAddEntryRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsAddEntry");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_DsAddEntryCtr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_EXECUTE_KCC(struct ndr_push *ndr, int flags, const struct DRSUAPI_EXECUTE_KCC *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_EXECUTE_KCC(struct ndr_pull *ndr, int flags, struct DRSUAPI_EXECUTE_KCC *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_EXECUTE_KCC(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_EXECUTE_KCC *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_EXECUTE_KCC");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_EXECUTE_KCC");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_EXECUTE_KCC");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsReplicaGetInfo(struct ndr_push *ndr, int flags, const struct drsuapi_DsReplicaGetInfo *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoLevel(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaGetInfoRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.info_type == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, *r->out.info_type));
-		if (r->out.info == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, *r->out.info_type));
-		NDR_CHECK(ndr_push_drsuapi_DsReplicaInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsReplicaGetInfo(struct ndr_pull *ndr, int flags, struct drsuapi_DsReplicaGetInfo *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_info_type_0;
-	TALLOC_CTX *_mem_save_info_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaGetInfoLevel(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaGetInfoRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.info_type);
-		ZERO_STRUCTP(r->out.info_type);
-		NDR_PULL_ALLOC(ndr, r->out.info);
-		ZERO_STRUCTP(r->out.info);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.info_type);
-		}
-		_mem_save_info_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.info_type, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaInfoType(ndr, NDR_SCALARS, r->out.info_type));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_type_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.info);
-		}
-		_mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, *r->out.info_type));
-		NDR_CHECK(ndr_pull_drsuapi_DsReplicaInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsReplicaGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsReplicaGetInfo *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaGetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsReplicaGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_drsuapi_DsReplicaGetInfoLevel(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsReplicaGetInfoRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsReplicaGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "info_type", r->out.info_type);
-		ndr->depth++;
-		ndr_print_drsuapi_DsReplicaInfoType(ndr, "info_type", *r->out.info_type);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "info", r->out.info);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.info, *r->out.info_type);
-		ndr_print_drsuapi_DsReplicaInfo(ndr, "info", r->out.info);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_ADD_SID_HISTORY(struct ndr_push *ndr, int flags, const struct DRSUAPI_ADD_SID_HISTORY *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_ADD_SID_HISTORY(struct ndr_pull *ndr, int flags, struct DRSUAPI_ADD_SID_HISTORY *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_ADD_SID_HISTORY(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_ADD_SID_HISTORY *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_ADD_SID_HISTORY");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_ADD_SID_HISTORY");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_ADD_SID_HISTORY");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_DsGetMemberships2(struct ndr_push *ndr, int flags, const struct drsuapi_DsGetMemberships2 *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_DsGetMemberships2Request(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_DsGetMemberships2Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_DsGetMemberships2(struct ndr_pull *ndr, int flags, struct drsuapi_DsGetMemberships2 *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetMemberships2Request(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_DsGetMemberships2Ctr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_DsGetMemberships2(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetMemberships2 *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsGetMemberships2");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_DsGetMemberships2");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_DsGetMemberships2Request(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_DsGetMemberships2");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_DsGetMemberships2Ctr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_REPLICA_VERIFY_OBJECTS(struct ndr_push *ndr, int flags, const struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_REPLICA_VERIFY_OBJECTS(struct ndr_pull *ndr, int flags, struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_REPLICA_VERIFY_OBJECTS(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_REPLICA_VERIFY_OBJECTS");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_REPLICA_VERIFY_OBJECTS");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_REPLICA_VERIFY_OBJECTS");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_DRSUAPI_GET_OBJECT_EXISTENCE(struct ndr_push *ndr, int flags, const struct DRSUAPI_GET_OBJECT_EXISTENCE *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_DRSUAPI_GET_OBJECT_EXISTENCE(struct ndr_pull *ndr, int flags, struct DRSUAPI_GET_OBJECT_EXISTENCE *r)
-{
-	if (flags & NDR_IN) {
-	}
-	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_DRSUAPI_GET_OBJECT_EXISTENCE(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_GET_OBJECT_EXISTENCE *r)
-{
-	ndr_print_struct(ndr, name, "DRSUAPI_GET_OBJECT_EXISTENCE");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "DRSUAPI_GET_OBJECT_EXISTENCE");
-		ndr->depth++;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "DRSUAPI_GET_OBJECT_EXISTENCE");
-		ndr->depth++;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_drsuapi_QuerySitesByCost(struct ndr_push *ndr, int flags, const struct drsuapi_QuerySitesByCost *r)
-{
-	if (flags & NDR_IN) {
-		if (r->in.bind_handle == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->in.level));
-		if (r->in.req == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_push_drsuapi_QuerySitesByCostRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-	}
-	if (flags & NDR_OUT) {
-		if (r->out.level_out == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, *r->out.level_out));
-		if (r->out.ctr == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_push_drsuapi_QuerySitesByCostCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_drsuapi_QuerySitesByCost(struct ndr_pull *ndr, int flags, struct drsuapi_QuerySitesByCost *r)
-{
-	TALLOC_CTX *_mem_save_bind_handle_0;
-	TALLOC_CTX *_mem_save_req_0;
-	TALLOC_CTX *_mem_save_level_out_0;
-	TALLOC_CTX *_mem_save_ctr_0;
-	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.bind_handle);
-		}
-		_mem_save_bind_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.bind_handle, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.bind_handle));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bind_handle_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->in.level));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.req);
-		}
-		_mem_save_req_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.req, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.req, r->in.level));
-		NDR_CHECK(ndr_pull_drsuapi_QuerySitesByCostRequest(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.req));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_req_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_PULL_ALLOC(ndr, r->out.level_out);
-		ZERO_STRUCTP(r->out.level_out);
-		NDR_PULL_ALLOC(ndr, r->out.ctr);
-		ZERO_STRUCTP(r->out.ctr);
-	}
-	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.level_out);
-		}
-		_mem_save_level_out_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.level_out, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, r->out.level_out));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_out_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.ctr);
-		}
-		_mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level_out));
-		NDR_CHECK(ndr_pull_drsuapi_QuerySitesByCostCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_drsuapi_QuerySitesByCost(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_QuerySitesByCost *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_QuerySitesByCost");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "drsuapi_QuerySitesByCost");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth++;
-		ndr_print_policy_handle(ndr, "bind_handle", r->in.bind_handle);
-		ndr->depth--;
-		ndr_print_int32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "req", r->in.req);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->in.req, r->in.level);
-		ndr_print_drsuapi_QuerySitesByCostRequest(ndr, "req", r->in.req);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "drsuapi_QuerySitesByCost");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "level_out", r->out.level_out);
-		ndr->depth++;
-		ndr_print_int32(ndr, "level_out", *r->out.level_out);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "ctr", r->out.ctr);
-		ndr->depth++;
-		ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level_out);
-		ndr_print_drsuapi_QuerySitesByCostCtr(ndr, "ctr", r->out.ctr);
-		ndr->depth--;
-		ndr_print_WERROR(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-static const struct ndr_interface_call drsuapi_calls[] = {
-	{
-		"drsuapi_DsBind",
-		sizeof(struct drsuapi_DsBind),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsBind,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsBind,
-		(ndr_print_function_t) ndr_print_drsuapi_DsBind,
-		false,
-	},
-	{
-		"drsuapi_DsUnbind",
-		sizeof(struct drsuapi_DsUnbind),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsUnbind,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsUnbind,
-		(ndr_print_function_t) ndr_print_drsuapi_DsUnbind,
-		false,
-	},
-	{
-		"drsuapi_DsReplicaSync",
-		sizeof(struct drsuapi_DsReplicaSync),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsReplicaSync,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsReplicaSync,
-		(ndr_print_function_t) ndr_print_drsuapi_DsReplicaSync,
-		false,
-	},
-	{
-		"drsuapi_DsGetNCChanges",
-		sizeof(struct drsuapi_DsGetNCChanges),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsGetNCChanges,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsGetNCChanges,
-		(ndr_print_function_t) ndr_print_drsuapi_DsGetNCChanges,
-		false,
-	},
-	{
-		"drsuapi_DsReplicaUpdateRefs",
-		sizeof(struct drsuapi_DsReplicaUpdateRefs),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsReplicaUpdateRefs,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsReplicaUpdateRefs,
-		(ndr_print_function_t) ndr_print_drsuapi_DsReplicaUpdateRefs,
-		false,
-	},
-	{
-		"DRSUAPI_REPLICA_ADD",
-		sizeof(struct DRSUAPI_REPLICA_ADD),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_REPLICA_ADD,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_REPLICA_ADD,
-		(ndr_print_function_t) ndr_print_DRSUAPI_REPLICA_ADD,
-		false,
-	},
-	{
-		"DRSUAPI_REPLICA_DEL",
-		sizeof(struct DRSUAPI_REPLICA_DEL),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_REPLICA_DEL,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_REPLICA_DEL,
-		(ndr_print_function_t) ndr_print_DRSUAPI_REPLICA_DEL,
-		false,
-	},
-	{
-		"DRSUAPI_REPLICA_MODIFY",
-		sizeof(struct DRSUAPI_REPLICA_MODIFY),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_REPLICA_MODIFY,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_REPLICA_MODIFY,
-		(ndr_print_function_t) ndr_print_DRSUAPI_REPLICA_MODIFY,
-		false,
-	},
-	{
-		"DRSUAPI_VERIFY_NAMES",
-		sizeof(struct DRSUAPI_VERIFY_NAMES),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_VERIFY_NAMES,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_VERIFY_NAMES,
-		(ndr_print_function_t) ndr_print_DRSUAPI_VERIFY_NAMES,
-		false,
-	},
-	{
-		"drsuapi_DsGetMemberships",
-		sizeof(struct drsuapi_DsGetMemberships),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsGetMemberships,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsGetMemberships,
-		(ndr_print_function_t) ndr_print_drsuapi_DsGetMemberships,
-		false,
-	},
-	{
-		"DRSUAPI_INTER_DOMAIN_MOVE",
-		sizeof(struct DRSUAPI_INTER_DOMAIN_MOVE),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_INTER_DOMAIN_MOVE,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_INTER_DOMAIN_MOVE,
-		(ndr_print_function_t) ndr_print_DRSUAPI_INTER_DOMAIN_MOVE,
-		false,
-	},
-	{
-		"drsuapi_DsGetNT4ChangeLog",
-		sizeof(struct drsuapi_DsGetNT4ChangeLog),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsGetNT4ChangeLog,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsGetNT4ChangeLog,
-		(ndr_print_function_t) ndr_print_drsuapi_DsGetNT4ChangeLog,
-		false,
-	},
-	{
-		"drsuapi_DsCrackNames",
-		sizeof(struct drsuapi_DsCrackNames),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsCrackNames,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsCrackNames,
-		(ndr_print_function_t) ndr_print_drsuapi_DsCrackNames,
-		false,
-	},
-	{
-		"drsuapi_DsWriteAccountSpn",
-		sizeof(struct drsuapi_DsWriteAccountSpn),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsWriteAccountSpn,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsWriteAccountSpn,
-		(ndr_print_function_t) ndr_print_drsuapi_DsWriteAccountSpn,
-		false,
-	},
-	{
-		"drsuapi_DsRemoveDSServer",
-		sizeof(struct drsuapi_DsRemoveDSServer),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsRemoveDSServer,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsRemoveDSServer,
-		(ndr_print_function_t) ndr_print_drsuapi_DsRemoveDSServer,
-		false,
-	},
-	{
-		"DRSUAPI_REMOVE_DS_DOMAIN",
-		sizeof(struct DRSUAPI_REMOVE_DS_DOMAIN),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_REMOVE_DS_DOMAIN,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_REMOVE_DS_DOMAIN,
-		(ndr_print_function_t) ndr_print_DRSUAPI_REMOVE_DS_DOMAIN,
-		false,
-	},
-	{
-		"drsuapi_DsGetDomainControllerInfo",
-		sizeof(struct drsuapi_DsGetDomainControllerInfo),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsGetDomainControllerInfo,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsGetDomainControllerInfo,
-		(ndr_print_function_t) ndr_print_drsuapi_DsGetDomainControllerInfo,
-		false,
-	},
-	{
-		"drsuapi_DsAddEntry",
-		sizeof(struct drsuapi_DsAddEntry),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsAddEntry,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsAddEntry,
-		(ndr_print_function_t) ndr_print_drsuapi_DsAddEntry,
-		false,
-	},
-	{
-		"DRSUAPI_EXECUTE_KCC",
-		sizeof(struct DRSUAPI_EXECUTE_KCC),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_EXECUTE_KCC,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_EXECUTE_KCC,
-		(ndr_print_function_t) ndr_print_DRSUAPI_EXECUTE_KCC,
-		false,
-	},
-	{
-		"drsuapi_DsReplicaGetInfo",
-		sizeof(struct drsuapi_DsReplicaGetInfo),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsReplicaGetInfo,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsReplicaGetInfo,
-		(ndr_print_function_t) ndr_print_drsuapi_DsReplicaGetInfo,
-		false,
-	},
-	{
-		"DRSUAPI_ADD_SID_HISTORY",
-		sizeof(struct DRSUAPI_ADD_SID_HISTORY),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_ADD_SID_HISTORY,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_ADD_SID_HISTORY,
-		(ndr_print_function_t) ndr_print_DRSUAPI_ADD_SID_HISTORY,
-		false,
-	},
-	{
-		"drsuapi_DsGetMemberships2",
-		sizeof(struct drsuapi_DsGetMemberships2),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_DsGetMemberships2,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_DsGetMemberships2,
-		(ndr_print_function_t) ndr_print_drsuapi_DsGetMemberships2,
-		false,
-	},
-	{
-		"DRSUAPI_REPLICA_VERIFY_OBJECTS",
-		sizeof(struct DRSUAPI_REPLICA_VERIFY_OBJECTS),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_REPLICA_VERIFY_OBJECTS,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_REPLICA_VERIFY_OBJECTS,
-		(ndr_print_function_t) ndr_print_DRSUAPI_REPLICA_VERIFY_OBJECTS,
-		false,
-	},
-	{
-		"DRSUAPI_GET_OBJECT_EXISTENCE",
-		sizeof(struct DRSUAPI_GET_OBJECT_EXISTENCE),
-		(ndr_push_flags_fn_t) ndr_push_DRSUAPI_GET_OBJECT_EXISTENCE,
-		(ndr_pull_flags_fn_t) ndr_pull_DRSUAPI_GET_OBJECT_EXISTENCE,
-		(ndr_print_function_t) ndr_print_DRSUAPI_GET_OBJECT_EXISTENCE,
-		false,
-	},
-	{
-		"drsuapi_QuerySitesByCost",
-		sizeof(struct drsuapi_QuerySitesByCost),
-		(ndr_push_flags_fn_t) ndr_push_drsuapi_QuerySitesByCost,
-		(ndr_pull_flags_fn_t) ndr_pull_drsuapi_QuerySitesByCost,
-		(ndr_print_function_t) ndr_print_drsuapi_QuerySitesByCost,
-		false,
-	},
-	{ NULL, 0, NULL, NULL, NULL, false }
-};
-
-static const char * const drsuapi_endpoint_strings[] = {
-	"ncacn_np:[\\pipe\\lsass]", 
-	"ncacn_np:[\\pipe\\protected_storage]", 
-	"ncacn_ip_tcp:", 
-	"ncalrpc:", 
-};
-
-static const struct ndr_interface_string_array drsuapi_endpoints = {
-	.count	= 4,
-	.names	= drsuapi_endpoint_strings
-};
-
-static const char * const drsuapi_authservice_strings[] = {
-	"ldap", 
-};
-
-static const struct ndr_interface_string_array drsuapi_authservices = {
-	.count	= 1,
-	.names	= drsuapi_authservice_strings
-};
-
-
-const struct ndr_interface_table ndr_table_drsuapi = {
-	.name		= "drsuapi",
-	.syntax_id	= {
-		{0xe3514235,0x4b06,0x11d1,{0xab,0x04},{0x00,0xc0,0x4f,0xc2,0xdc,0xd2}},
-		NDR_DRSUAPI_VERSION
-	},
-	.helpstring	= NDR_DRSUAPI_HELPSTRING,
-	.num_calls	= 25,
-	.calls		= drsuapi_calls,
-	.endpoints	= &drsuapi_endpoints,
-	.authservices	= &drsuapi_authservices
-};
-

Deleted: branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_drsuapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,291 +0,0 @@
-/* header auto-generated by pidl */
-
-#include "librpc/ndr/libndr.h"
-#include "librpc/gen_ndr/drsuapi.h"
-
-#ifndef _HEADER_NDR_drsuapi
-#define _HEADER_NDR_drsuapi
-
-#include "librpc/ndr/ndr_drsuapi.h"
-#define NDR_DRSUAPI_UUID "e3514235-4b06-11d1-ab04-00c04fc2dcd2"
-#define NDR_DRSUAPI_VERSION 4.0
-#define NDR_DRSUAPI_NAME "drsuapi"
-#define NDR_DRSUAPI_HELPSTRING "Active Directory Replication"
-extern const struct ndr_interface_table ndr_table_drsuapi;
-#define NDR_DRSUAPI_DSBIND (0x00)
-
-#define NDR_DRSUAPI_DSUNBIND (0x01)
-
-#define NDR_DRSUAPI_DSREPLICASYNC (0x02)
-
-#define NDR_DRSUAPI_DSGETNCCHANGES (0x03)
-
-#define NDR_DRSUAPI_DSREPLICAUPDATEREFS (0x04)
-
-#define NDR_DRSUAPI_REPLICA_ADD (0x05)
-
-#define NDR_DRSUAPI_REPLICA_DEL (0x06)
-
-#define NDR_DRSUAPI_REPLICA_MODIFY (0x07)
-
-#define NDR_DRSUAPI_VERIFY_NAMES (0x08)
-
-#define NDR_DRSUAPI_DSGETMEMBERSHIPS (0x09)
-
-#define NDR_DRSUAPI_INTER_DOMAIN_MOVE (0x0a)
-
-#define NDR_DRSUAPI_DSGETNT4CHANGELOG (0x0b)
-
-#define NDR_DRSUAPI_DSCRACKNAMES (0x0c)
-
-#define NDR_DRSUAPI_DSWRITEACCOUNTSPN (0x0d)
-
-#define NDR_DRSUAPI_DSREMOVEDSSERVER (0x0e)
-
-#define NDR_DRSUAPI_REMOVE_DS_DOMAIN (0x0f)
-
-#define NDR_DRSUAPI_DSGETDOMAINCONTROLLERINFO (0x10)
-
-#define NDR_DRSUAPI_DSADDENTRY (0x11)
-
-#define NDR_DRSUAPI_EXECUTE_KCC (0x12)
-
-#define NDR_DRSUAPI_DSREPLICAGETINFO (0x13)
-
-#define NDR_DRSUAPI_ADD_SID_HISTORY (0x14)
-
-#define NDR_DRSUAPI_DSGETMEMBERSHIPS2 (0x15)
-
-#define NDR_DRSUAPI_REPLICA_VERIFY_OBJECTS (0x16)
-
-#define NDR_DRSUAPI_GET_OBJECT_EXISTENCE (0x17)
-
-#define NDR_DRSUAPI_QUERYSITESBYCOST (0x18)
-
-#define NDR_DRSUAPI_CALL_COUNT (25)
-void ndr_print_drsuapi_SupportedExtensions(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_SupportedExtensionsExt(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsBindInfo24(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfo24 *r);
-void ndr_print_drsuapi_DsBindInfo28(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfo28 *r);
-void ndr_print_drsuapi_DsBindInfo48(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfo48 *r);
-void ndr_print_drsuapi_DsBindInfoFallBack(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfoFallBack *r);
-void ndr_print_drsuapi_DsBindInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsBindInfo *r);
-void ndr_print_drsuapi_DsBindInfoCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsBindInfoCtr *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier *r);
-void ndr_print_drsuapi_DsReplicaObjectIdentifier(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier *r);
-size_t ndr_size_drsuapi_DsReplicaObjectIdentifier(const struct drsuapi_DsReplicaObjectIdentifier *r, int flags);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaSyncOptions(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaSyncOptions(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_drsuapi_DsReplicaSyncOptions(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsReplicaSyncRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaSyncRequest1 *r);
-void ndr_print_drsuapi_DsReplicaSyncRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaSyncRequest *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaHighWaterMark(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaHighWaterMark *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaHighWaterMark(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaHighWaterMark *r);
-void ndr_print_drsuapi_DsReplicaHighWaterMark(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaHighWaterMark *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor *r);
-void ndr_print_drsuapi_DsReplicaCursor(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor *r);
-void ndr_print_drsuapi_DsReplicaCursorCtrEx(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursorCtrEx *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaNeighbourFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaNeighbourFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_drsuapi_DsReplicaNeighbourFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsExtendedOperation(struct ndr_print *ndr, const char *name, enum drsuapi_DsExtendedOperation r);
-void ndr_print_drsuapi_DsExtendedError(struct ndr_print *ndr, const char *name, enum drsuapi_DsExtendedError r);
-void ndr_print_drsuapi_DsGetNCChangesRequest5(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesRequest5 *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaOID(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOID *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaOID(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOID *r);
-void ndr_print_drsuapi_DsReplicaOID(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOID *r);
-void ndr_print_drsuapi_DsReplicaOIDMapping(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOIDMapping *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOIDMapping_Ctr *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOIDMapping_Ctr *r);
-void ndr_print_drsuapi_DsReplicaOIDMapping_Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOIDMapping_Ctr *r);
-enum ndr_err_code ndr_push_drsuapi_DsAttributeId(struct ndr_push *ndr, int ndr_flags, enum drsuapi_DsAttributeId r);
-enum ndr_err_code ndr_pull_drsuapi_DsAttributeId(struct ndr_pull *ndr, int ndr_flags, enum drsuapi_DsAttributeId *r);
-void ndr_print_drsuapi_DsAttributeId(struct ndr_print *ndr, const char *name, enum drsuapi_DsAttributeId r);
-void ndr_print_drsuapi_DsPartialAttributeSet(struct ndr_print *ndr, const char *name, const struct drsuapi_DsPartialAttributeSet *r);
-void ndr_print_drsuapi_DsGetNCChangesRequest8(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesRequest8 *r);
-void ndr_print_drsuapi_DsGetNCChangesRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNCChangesRequest *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaCursor2(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaCursor2 *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaCursor2(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaCursor2 *r);
-void ndr_print_drsuapi_DsReplicaCursor2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor2 *r);
-void ndr_print_drsuapi_DsReplicaCursor2CtrEx(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor2CtrEx *r);
-void ndr_print_drsuapi_DsAttributeValue(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAttributeValue *r);
-void ndr_print_drsuapi_DsAttributeValueCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAttributeValueCtr *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier3(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier3 *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier3(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier3 *r);
-void ndr_print_drsuapi_DsReplicaObjectIdentifier3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier3 *r);
-size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3(const struct drsuapi_DsReplicaObjectIdentifier3 *r, int flags);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectIdentifier3Binary *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectIdentifier3Binary *r);
-void ndr_print_drsuapi_DsReplicaObjectIdentifier3Binary(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier3Binary *r);
-size_t ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(const struct drsuapi_DsReplicaObjectIdentifier3Binary *r, int flags);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaAttribute(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaAttribute *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaAttribute(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaAttribute *r);
-void ndr_print_drsuapi_DsReplicaAttribute(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttribute *r);
-void ndr_print_drsuapi_DsReplicaAttributeCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttributeCtr *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_drsuapi_DsReplicaObjectFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObject(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObject *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObject(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObject *r);
-void ndr_print_drsuapi_DsReplicaObject(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObject *r);
-void ndr_print_drsuapi_DsReplicaMetaData(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaMetaData *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaMetaDataCtr(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaMetaDataCtr *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaMetaDataCtr(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaMetaDataCtr *r);
-void ndr_print_drsuapi_DsReplicaMetaDataCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaMetaDataCtr *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectListItemEx(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectListItemEx *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectListItemEx(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectListItemEx *r);
-void ndr_print_drsuapi_DsReplicaObjectListItemEx(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectListItemEx *r);
-enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesCtr1 *r);
-enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesCtr1 *r);
-void ndr_print_drsuapi_DsGetNCChangesCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr1 *r);
-size_t ndr_size_drsuapi_DsGetNCChangesCtr1(const struct drsuapi_DsGetNCChangesCtr1 *r, int flags);
-enum ndr_err_code ndr_push_drsuapi_DsLinkedAttributeFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-enum ndr_err_code ndr_pull_drsuapi_DsLinkedAttributeFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_drsuapi_DsLinkedAttributeFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaLinkedAttribute(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaLinkedAttribute *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaLinkedAttribute(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaLinkedAttribute *r);
-void ndr_print_drsuapi_DsReplicaLinkedAttribute(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaLinkedAttribute *r);
-enum ndr_err_code ndr_push_drsuapi_DsGetNCChangesCtr6(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNCChangesCtr6 *r);
-enum ndr_err_code ndr_pull_drsuapi_DsGetNCChangesCtr6(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNCChangesCtr6 *r);
-void ndr_print_drsuapi_DsGetNCChangesCtr6(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr6 *r);
-size_t ndr_size_drsuapi_DsGetNCChangesCtr6(const struct drsuapi_DsGetNCChangesCtr6 *r, int flags);
-void ndr_print_drsuapi_DsGetNCChangesMSZIPCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesMSZIPCtr1 *r);
-void ndr_print_drsuapi_DsGetNCChangesMSZIPCtr6(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesMSZIPCtr6 *r);
-void ndr_print_drsuapi_DsGetNCChangesXPRESSCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesXPRESSCtr1 *r);
-void ndr_print_drsuapi_DsGetNCChangesXPRESSCtr6(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesXPRESSCtr6 *r);
-void ndr_print_drsuapi_DsGetNCChangesCompressionType(struct ndr_print *ndr, const char *name, enum drsuapi_DsGetNCChangesCompressionType r);
-void ndr_print_drsuapi_DsGetNCChangesCompressedCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNCChangesCompressedCtr *r);
-void ndr_print_drsuapi_DsGetNCChangesCtr2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr2 *r);
-void ndr_print_drsuapi_DsGetNCChangesCtr7(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNCChangesCtr7 *r);
-void ndr_print_drsuapi_DsGetNCChangesCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNCChangesCtr *r);
-void ndr_print_drsuapi_DsReplicaUpdateRefsOptions(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsReplicaUpdateRefsRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaUpdateRefsRequest1 *r);
-void ndr_print_drsuapi_DsReplicaUpdateRefsRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaUpdateRefsRequest *r);
-void ndr_print_drsuapi_DsReplicaAddOptions(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsReplicaDeleteOptions(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsReplicaModifyOptions(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_drsuapi_DsMembershipType(struct ndr_print *ndr, const char *name, enum drsuapi_DsMembershipType r);
-void ndr_print_drsuapi_DsGetMembershipsCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMembershipsCtr1 *r);
-void ndr_print_drsuapi_DsGetMembershipsCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMembershipsCtr *r);
-void ndr_print_drsuapi_DsGetMembershipsRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMembershipsRequest1 *r);
-void ndr_print_drsuapi_DsGetMembershipsRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMembershipsRequest *r);
-void ndr_print_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNT4ChangeLogRequest1 *r);
-void ndr_print_drsuapi_DsGetNT4ChangeLogRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNT4ChangeLogRequest *r);
-void ndr_print_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNT4ChangeLogInfo1 *r);
-void ndr_print_drsuapi_DsGetNT4ChangeLogInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNT4ChangeLogInfo *r);
-void ndr_print_drsuapi_DsNameStatus(struct ndr_print *ndr, const char *name, enum drsuapi_DsNameStatus r);
-void ndr_print_drsuapi_DsNameFlags(struct ndr_print *ndr, const char *name, enum drsuapi_DsNameFlags r);
-void ndr_print_drsuapi_DsNameFormat(struct ndr_print *ndr, const char *name, enum drsuapi_DsNameFormat r);
-void ndr_print_drsuapi_DsNameString(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameString *r);
-void ndr_print_drsuapi_DsNameRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameRequest1 *r);
-void ndr_print_drsuapi_DsNameRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsNameRequest *r);
-void ndr_print_drsuapi_DsNameInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameInfo1 *r);
-void ndr_print_drsuapi_DsNameCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsNameCtr1 *r);
-void ndr_print_drsuapi_DsNameCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsNameCtr *r);
-void ndr_print_drsuapi_DsSpnOperation(struct ndr_print *ndr, const char *name, enum drsuapi_DsSpnOperation r);
-void ndr_print_drsuapi_DsWriteAccountSpnRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsWriteAccountSpnRequest1 *r);
-void ndr_print_drsuapi_DsWriteAccountSpnRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsWriteAccountSpnRequest *r);
-void ndr_print_drsuapi_DsWriteAccountSpnResult1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsWriteAccountSpnResult1 *r);
-void ndr_print_drsuapi_DsWriteAccountSpnResult(struct ndr_print *ndr, const char *name, const union drsuapi_DsWriteAccountSpnResult *r);
-void ndr_print_drsuapi_DsRemoveDSServerRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsRemoveDSServerRequest1 *r);
-void ndr_print_drsuapi_DsRemoveDSServerRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsRemoveDSServerRequest *r);
-void ndr_print_drsuapi_DsRemoveDSServerResult1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsRemoveDSServerResult1 *r);
-void ndr_print_drsuapi_DsRemoveDSServerResult(struct ndr_print *ndr, const char *name, const union drsuapi_DsRemoveDSServerResult *r);
-void ndr_print_drsuapi_DsGetDCInfoRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoRequest1 *r);
-void ndr_print_drsuapi_DsGetDCInfoRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetDCInfoRequest *r);
-void ndr_print_drsuapi_DsGetDCInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfo1 *r);
-void ndr_print_drsuapi_DsGetDCInfoCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoCtr1 *r);
-void ndr_print_drsuapi_DsGetDCInfo2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfo2 *r);
-void ndr_print_drsuapi_DsGetDCInfoCtr2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoCtr2 *r);
-void ndr_print_drsuapi_DsGetDCInfo3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfo3 *r);
-void ndr_print_drsuapi_DsGetDCInfoCtr3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCInfoCtr3 *r);
-void ndr_print_drsuapi_DsGetDCConnection01(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCConnection01 *r);
-void ndr_print_drsuapi_DsGetDCConnectionCtr01(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetDCConnectionCtr01 *r);
-void ndr_print_drsuapi_DsGetDCInfoCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetDCInfoCtr *r);
-enum ndr_err_code ndr_push_drsuapi_DsReplicaObjectListItem(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaObjectListItem *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaObjectListItem(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaObjectListItem *r);
-void ndr_print_drsuapi_DsReplicaObjectListItem(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectListItem *r);
-void ndr_print_drsuapi_DsAddEntryRequest2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryRequest2 *r);
-void ndr_print_drsuapi_DsAddEntryRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryRequest *r);
-void ndr_print_drsuapi_DsAddEntryErrorInfoX(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryErrorInfoX *r);
-void ndr_print_drsuapi_DsAddEntryExtraErrorBuffer(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryExtraErrorBuffer *r);
-void ndr_print_drsuapi_DsAddEntryExtraError1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryExtraError1 *r);
-void ndr_print_drsuapi_DsAddEntryErrorListItem1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryErrorListItem1 *r);
-void ndr_print_drsuapi_DsAddEntryErrorInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryErrorInfo1 *r);
-void ndr_print_drsuapi_DsAddEntryErrorInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryErrorInfo *r);
-void ndr_print_drsuapi_DsAddEntryError1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryError1 *r);
-void ndr_print_drsuapi_DsAddEntryError(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryError *r);
-void ndr_print_drsuapi_DsReplicaObjectIdentifier2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectIdentifier2 *r);
-void ndr_print_drsuapi_DsAddEntryCtr2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryCtr2 *r);
-void ndr_print_drsuapi_DsAddEntryCtr3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsAddEntryCtr3 *r);
-void ndr_print_drsuapi_DsAddEntryCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsAddEntryCtr *r);
-void ndr_print_drsuapi_DsReplicaGetInfoLevel(struct ndr_print *ndr, const char *name, enum drsuapi_DsReplicaGetInfoLevel r);
-void ndr_print_drsuapi_DsReplicaInfoType(struct ndr_print *ndr, const char *name, enum drsuapi_DsReplicaInfoType r);
-void ndr_print_drsuapi_DsReplicaGetInfoRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaGetInfoRequest1 *r);
-void ndr_print_drsuapi_DsReplicaGetInfoRequest2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaGetInfoRequest2 *r);
-void ndr_print_drsuapi_DsReplicaGetInfoRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaGetInfoRequest *r);
-void ndr_print_drsuapi_DsReplicaNeighbour(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaNeighbour *r);
-void ndr_print_drsuapi_DsReplicaNeighbourCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaNeighbourCtr *r);
-void ndr_print_drsuapi_DsReplicaCursorCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursorCtr *r);
-void ndr_print_drsuapi_DsReplicaObjMetaData(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaData *r);
-void ndr_print_drsuapi_DsReplicaObjMetaDataCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaDataCtr *r);
-void ndr_print_drsuapi_DsReplicaKccDsaFailure(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaKccDsaFailure *r);
-void ndr_print_drsuapi_DsReplicaKccDsaFailuresCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaKccDsaFailuresCtr *r);
-void ndr_print_drsuapi_DsReplicaOpType(struct ndr_print *ndr, const char *name, enum drsuapi_DsReplicaOpType r);
-void ndr_print_drsuapi_DsRplicaOpOptions(struct ndr_print *ndr, const char *name, const union drsuapi_DsRplicaOpOptions *r);
-void ndr_print_drsuapi_DsReplicaOp(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOp *r);
-void ndr_print_drsuapi_DsReplicaOpCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaOpCtr *r);
-void ndr_print_drsuapi_DsReplicaAttrValMetaData(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaData *r);
-void ndr_print_drsuapi_DsReplicaAttrValMetaDataCtr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaDataCtr *r);
-void ndr_print_drsuapi_DsReplicaCursor2Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor2Ctr *r);
-void ndr_print_drsuapi_DsReplicaCursor3(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor3 *r);
-void ndr_print_drsuapi_DsReplicaCursor3Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaCursor3Ctr *r);
-void ndr_print_drsuapi_DsReplicaObjMetaData2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaData2 *r);
-void ndr_print_drsuapi_DsReplicaObjMetaData2Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjMetaData2Ctr *r);
-void ndr_print_drsuapi_DsReplicaAttrValMetaData2(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaData2 *r);
-void ndr_print_drsuapi_DsReplicaAttrValMetaData2Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaAttrValMetaData2Ctr *r);
-void ndr_print_drsuapi_DsReplicaConnection04(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaConnection04 *r);
-void ndr_print_drsuapi_DsReplicaConnection04Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaConnection04Ctr *r);
-void ndr_print_drsuapi_DsReplica06(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplica06 *r);
-void ndr_print_drsuapi_DsReplica06Ctr(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplica06Ctr *r);
-void ndr_print_drsuapi_DsReplicaInfo(struct ndr_print *ndr, const char *name, const union drsuapi_DsReplicaInfo *r);
-void ndr_print_drsuapi_DsGetMemberships2Ctr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMemberships2Ctr *r);
-void ndr_print_drsuapi_DsGetMemberships2Request1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMemberships2Request1 *r);
-void ndr_print_drsuapi_DsGetMemberships2Request(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMemberships2Request *r);
-void ndr_print_drsuapi_DsSiteCostInfo(struct ndr_print *ndr, const char *name, const struct drsuapi_DsSiteCostInfo *r);
-void ndr_print_drsuapi_QuerySitesByCostCtr1(struct ndr_print *ndr, const char *name, const struct drsuapi_QuerySitesByCostCtr1 *r);
-void ndr_print_drsuapi_QuerySitesByCostCtr(struct ndr_print *ndr, const char *name, const union drsuapi_QuerySitesByCostCtr *r);
-void ndr_print_drsuapi_QuerySitesByCostRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_QuerySitesByCostRequest1 *r);
-void ndr_print_drsuapi_QuerySitesByCostRequest(struct ndr_print *ndr, const char *name, const union drsuapi_QuerySitesByCostRequest *r);
-enum ndr_err_code ndr_push_drsuapi_DsBind(struct ndr_push *ndr, int flags, const struct drsuapi_DsBind *r);
-enum ndr_err_code ndr_pull_drsuapi_DsBind(struct ndr_pull *ndr, int flags, struct drsuapi_DsBind *r);
-void ndr_print_drsuapi_DsBind(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsBind *r);
-void ndr_print_drsuapi_DsUnbind(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsUnbind *r);
-void ndr_print_drsuapi_DsReplicaSync(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsReplicaSync *r);
-void ndr_print_drsuapi_DsGetNCChanges(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetNCChanges *r);
-void ndr_print_drsuapi_DsReplicaUpdateRefs(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsReplicaUpdateRefs *r);
-void ndr_print_DRSUAPI_REPLICA_ADD(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_ADD *r);
-void ndr_print_DRSUAPI_REPLICA_DEL(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_DEL *r);
-void ndr_print_DRSUAPI_REPLICA_MODIFY(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_MODIFY *r);
-void ndr_print_DRSUAPI_VERIFY_NAMES(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_VERIFY_NAMES *r);
-void ndr_print_drsuapi_DsGetMemberships(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetMemberships *r);
-void ndr_print_DRSUAPI_INTER_DOMAIN_MOVE(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_INTER_DOMAIN_MOVE *r);
-void ndr_print_drsuapi_DsGetNT4ChangeLog(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetNT4ChangeLog *r);
-void ndr_print_drsuapi_DsCrackNames(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsCrackNames *r);
-void ndr_print_drsuapi_DsWriteAccountSpn(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsWriteAccountSpn *r);
-void ndr_print_drsuapi_DsRemoveDSServer(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsRemoveDSServer *r);
-void ndr_print_DRSUAPI_REMOVE_DS_DOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REMOVE_DS_DOMAIN *r);
-void ndr_print_drsuapi_DsGetDomainControllerInfo(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetDomainControllerInfo *r);
-enum ndr_err_code ndr_push_drsuapi_DsAddEntry(struct ndr_push *ndr, int flags, const struct drsuapi_DsAddEntry *r);
-enum ndr_err_code ndr_pull_drsuapi_DsAddEntry(struct ndr_pull *ndr, int flags, struct drsuapi_DsAddEntry *r);
-void ndr_print_drsuapi_DsAddEntry(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsAddEntry *r);
-void ndr_print_DRSUAPI_EXECUTE_KCC(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_EXECUTE_KCC *r);
-void ndr_print_drsuapi_DsReplicaGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsReplicaGetInfo *r);
-void ndr_print_DRSUAPI_ADD_SID_HISTORY(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_ADD_SID_HISTORY *r);
-void ndr_print_drsuapi_DsGetMemberships2(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_DsGetMemberships2 *r);
-void ndr_print_DRSUAPI_REPLICA_VERIFY_OBJECTS(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r);
-void ndr_print_DRSUAPI_GET_OBJECT_EXISTENCE(struct ndr_print *ndr, const char *name, int flags, const struct DRSUAPI_GET_OBJECT_EXISTENCE *r);
-void ndr_print_drsuapi_QuerySitesByCost(struct ndr_print *ndr, const char *name, int flags, const struct drsuapi_QuerySitesByCost *r);
-#endif /* _HEADER_NDR_drsuapi */

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_initshutdown.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_initshutdown.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_initshutdown.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -116,7 +116,7 @@
 		}
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
 		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
@@ -157,7 +157,7 @@
 		}
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
 		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
+		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
@@ -189,7 +189,7 @@
 		ndr->depth--;
 		ndr_print_uint32(ndr, "timeout", r->in.timeout);
 		ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
-		ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
+		ndr_print_uint8(ndr, "reboot", r->in.reboot);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -279,7 +279,7 @@
 		}
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
 		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reason));
 	}
 	if (flags & NDR_OUT) {
@@ -321,7 +321,7 @@
 		}
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
 		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
+		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reason));
 	}
 	if (flags & NDR_OUT) {
@@ -354,7 +354,7 @@
 		ndr->depth--;
 		ndr_print_uint32(ndr, "timeout", r->in.timeout);
 		ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
-		ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
+		ndr_print_uint8(ndr, "reboot", r->in.reboot);
 		ndr_print_uint32(ndr, "reason", r->in.reason);
 		ndr->depth--;
 	}

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_libnet_join.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_libnet_join.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_libnet_join.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -41,7 +41,6 @@
 		ndr_print_ads_struct(ndr, "ads", r->in.ads);
 		ndr->depth--;
 		ndr_print_uint8(ndr, "debug", r->in.debug);
-		ndr_print_uint8(ndr, "use_kerberos", r->in.use_kerberos);
 		ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
 		ndr->depth--;
 	}
@@ -51,7 +50,6 @@
 		ndr_print_string(ndr, "account_name", r->out.account_name);
 		ndr_print_string(ndr, "netbios_domain_name", r->out.netbios_domain_name);
 		ndr_print_string(ndr, "dns_domain_name", r->out.dns_domain_name);
-		ndr_print_string(ndr, "forest_name", r->out.forest_name);
 		ndr_print_string(ndr, "dn", r->out.dn);
 		ndr_print_ptr(ndr, "domain_sid", r->out.domain_sid);
 		ndr->depth++;
@@ -99,7 +97,6 @@
 		ndr_print_ads_struct(ndr, "ads", r->in.ads);
 		ndr->depth--;
 		ndr_print_uint8(ndr, "debug", r->in.debug);
-		ndr_print_uint8(ndr, "use_kerberos", r->in.use_kerberos);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -107,7 +104,6 @@
 		ndr->depth++;
 		ndr_print_string(ndr, "netbios_domain_name", r->out.netbios_domain_name);
 		ndr_print_string(ndr, "dns_domain_name", r->out.dns_domain_name);
-		ndr_print_string(ndr, "forest_name", r->out.forest_name);
 		ndr_print_uint8(ndr, "modified_config", r->out.modified_config);
 		ndr_print_string(ndr, "error_string", r->out.error_string);
 		ndr_print_uint8(ndr, "disabled_machine_account", r->out.disabled_machine_account);

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,243 +27,6 @@
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
 
-_PUBLIC_ enum ndr_err_code ndr_push_domsid(struct ndr_push *ndr, int ndr_flags, const struct domsid *r)
-{
-	uint32_t cntr_sub_auths_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->sid_rev_num));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->num_auths));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
-		for (cntr_sub_auths_0 = 0; cntr_sub_auths_0 < MAXSUBAUTHS; cntr_sub_auths_0++) {
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sub_auths[cntr_sub_auths_0]));
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_domsid(struct ndr_pull *ndr, int ndr_flags, struct domsid *r)
-{
-	uint32_t cntr_sub_auths_0;
-	TALLOC_CTX *_mem_save_sub_auths_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->sid_rev_num));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->num_auths));
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
-		NDR_PULL_ALLOC_N(ndr, r->sub_auths, MAXSUBAUTHS);
-		_mem_save_sub_auths_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->sub_auths, 0);
-		for (cntr_sub_auths_0 = 0; cntr_sub_auths_0 < MAXSUBAUTHS; cntr_sub_auths_0++) {
-			NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sub_auths[cntr_sub_auths_0]));
-		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sub_auths_0, 0);
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_domsid(struct ndr_print *ndr, const char *name, const struct domsid *r)
-{
-	uint32_t cntr_sub_auths_0;
-	ndr_print_struct(ndr, name, "domsid");
-	ndr->depth++;
-	ndr_print_uint8(ndr, "sid_rev_num", r->sid_rev_num);
-	ndr_print_uint8(ndr, "num_auths", r->num_auths);
-	ndr_print_array_uint8(ndr, "id_auth", r->id_auth, 6);
-	ndr->print(ndr, "%s: ARRAY(%d)", "sub_auths", (int)MAXSUBAUTHS);
-	ndr->depth++;
-	for (cntr_sub_auths_0=0;cntr_sub_auths_0<MAXSUBAUTHS;cntr_sub_auths_0++) {
-		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_sub_auths_0) != -1) {
-			ndr_print_uint32(ndr, "sub_auths", r->sub_auths[cntr_sub_auths_0]);
-			free(idx_0);
-		}
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_NetJoinFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_NetJoinFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_NetJoinFlags(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_JOIN_DOMAIN", NETSETUP_JOIN_DOMAIN, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_ACCT_CREATE", NETSETUP_ACCT_CREATE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_ACCT_DELETE", NETSETUP_ACCT_DELETE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_WIN9X_UPGRADE", NETSETUP_WIN9X_UPGRADE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_DOMAIN_JOIN_IF_JOINED", NETSETUP_DOMAIN_JOIN_IF_JOINED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_JOIN_UNSECURE", NETSETUP_JOIN_UNSECURE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_MACHINE_PWD_PASSED", NETSETUP_MACHINE_PWD_PASSED, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_DEFER_SPN_SET", NETSETUP_DEFER_SPN_SET, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_JOIN_DC_ACCOUNT", NETSETUP_JOIN_DC_ACCOUNT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_JOIN_WITH_NEW_NAME", NETSETUP_JOIN_WITH_NEW_NAME, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_INSTALL_INVOCATION", NETSETUP_INSTALL_INVOCATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETSETUP_IGNORE_UNSUPPORTED_FLAGS", NETSETUP_IGNORE_UNSUPPORTED_FLAGS, r);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_100(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_100 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv100_platform_id));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv100_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_SERVER_INFO_100(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_100 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv100_platform_id));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv100_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_SERVER_INFO_100(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_100 *r)
-{
-	ndr_print_struct(ndr, name, "SERVER_INFO_100");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "sv100_platform_id", r->sv100_platform_id);
-	ndr_print_string(ndr, "sv100_name", r->sv100_name);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_101(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_101 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_platform_id));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv101_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_version_major));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_version_minor));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv101_type));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv101_comment));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_SERVER_INFO_101(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_101 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_platform_id));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv101_name));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_version_major));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_version_minor));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv101_type));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv101_comment));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_SERVER_INFO_101(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_101 *r)
-{
-	ndr_print_struct(ndr, name, "SERVER_INFO_101");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "sv101_platform_id", r->sv101_platform_id);
-	ndr_print_string(ndr, "sv101_name", r->sv101_name);
-	ndr_print_uint32(ndr, "sv101_version_major", r->sv101_version_major);
-	ndr_print_uint32(ndr, "sv101_version_minor", r->sv101_version_minor);
-	ndr_print_uint32(ndr, "sv101_type", r->sv101_type);
-	ndr_print_string(ndr, "sv101_comment", r->sv101_comment);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_102(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_102 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_platform_id));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv102_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_version_major));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_version_minor));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_type));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv102_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_users));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_disc));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->sv102_hidden));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_announce));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_anndelta));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sv102_licenses));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->sv102_userpath));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_SERVER_INFO_102(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_102 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_platform_id));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv102_name));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_version_major));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_version_minor));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_type));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv102_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_users));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_disc));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->sv102_hidden));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_announce));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_anndelta));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sv102_licenses));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->sv102_userpath));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_SERVER_INFO_102(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_102 *r)
-{
-	ndr_print_struct(ndr, name, "SERVER_INFO_102");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "sv102_platform_id", r->sv102_platform_id);
-	ndr_print_string(ndr, "sv102_name", r->sv102_name);
-	ndr_print_uint32(ndr, "sv102_version_major", r->sv102_version_major);
-	ndr_print_uint32(ndr, "sv102_version_minor", r->sv102_version_minor);
-	ndr_print_uint32(ndr, "sv102_type", r->sv102_type);
-	ndr_print_string(ndr, "sv102_comment", r->sv102_comment);
-	ndr_print_uint32(ndr, "sv102_users", r->sv102_users);
-	ndr_print_uint32(ndr, "sv102_disc", r->sv102_disc);
-	ndr_print_uint8(ndr, "sv102_hidden", r->sv102_hidden);
-	ndr_print_uint32(ndr, "sv102_announce", r->sv102_announce);
-	ndr_print_uint32(ndr, "sv102_anndelta", r->sv102_anndelta);
-	ndr_print_uint32(ndr, "sv102_licenses", r->sv102_licenses);
-	ndr_print_string(ndr, "sv102_userpath", r->sv102_userpath);
-	ndr->depth--;
-}
-
 _PUBLIC_ enum ndr_err_code ndr_push_SERVER_INFO_1005(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_1005 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -429,1634 +192,6 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_2(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_2 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_password));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_password_age));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_priv));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_home_dir));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_script_path));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_auth_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_parms));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_workstations));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_last_logon));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_last_logoff));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_acct_expires));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_max_storage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri2_logon_hours));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_bad_pw_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_num_logons));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri2_logon_server));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_country_code));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri2_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri2_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usri2_logon_hours));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_2(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_2 *r)
-{
-	uint32_t _ptr_usri2_logon_hours;
-	TALLOC_CTX *_mem_save_usri2_logon_hours_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_password));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_password_age));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_priv));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_home_dir));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_script_path));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_auth_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_parms));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_workstations));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_last_logon));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_last_logoff));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_acct_expires));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_max_storage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri2_logon_hours));
-		if (_ptr_usri2_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usri2_logon_hours);
-		} else {
-			r->usri2_logon_hours = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_bad_pw_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_num_logons));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri2_logon_server));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_country_code));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri2_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri2_logon_hours) {
-			_mem_save_usri2_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri2_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usri2_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri2_logon_hours_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_2(struct ndr_print *ndr, const char *name, const struct USER_INFO_2 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_2");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri2_name", r->usri2_name);
-	ndr_print_string(ndr, "usri2_password", r->usri2_password);
-	ndr_print_uint32(ndr, "usri2_password_age", r->usri2_password_age);
-	ndr_print_uint32(ndr, "usri2_priv", r->usri2_priv);
-	ndr_print_string(ndr, "usri2_home_dir", r->usri2_home_dir);
-	ndr_print_string(ndr, "usri2_comment", r->usri2_comment);
-	ndr_print_uint32(ndr, "usri2_flags", r->usri2_flags);
-	ndr_print_string(ndr, "usri2_script_path", r->usri2_script_path);
-	ndr_print_uint32(ndr, "usri2_auth_flags", r->usri2_auth_flags);
-	ndr_print_string(ndr, "usri2_full_name", r->usri2_full_name);
-	ndr_print_string(ndr, "usri2_usr_comment", r->usri2_usr_comment);
-	ndr_print_string(ndr, "usri2_parms", r->usri2_parms);
-	ndr_print_string(ndr, "usri2_workstations", r->usri2_workstations);
-	ndr_print_uint32(ndr, "usri2_last_logon", r->usri2_last_logon);
-	ndr_print_uint32(ndr, "usri2_last_logoff", r->usri2_last_logoff);
-	ndr_print_uint32(ndr, "usri2_acct_expires", r->usri2_acct_expires);
-	ndr_print_uint32(ndr, "usri2_max_storage", r->usri2_max_storage);
-	ndr_print_uint32(ndr, "usri2_units_per_week", r->usri2_units_per_week);
-	ndr_print_ptr(ndr, "usri2_logon_hours", r->usri2_logon_hours);
-	ndr->depth++;
-	if (r->usri2_logon_hours) {
-		ndr_print_uint8(ndr, "usri2_logon_hours", *r->usri2_logon_hours);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usri2_bad_pw_count", r->usri2_bad_pw_count);
-	ndr_print_uint32(ndr, "usri2_num_logons", r->usri2_num_logons);
-	ndr_print_string(ndr, "usri2_logon_server", r->usri2_logon_server);
-	ndr_print_uint32(ndr, "usri2_country_code", r->usri2_country_code);
-	ndr_print_uint32(ndr, "usri2_code_page", r->usri2_code_page);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_3(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_3 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_password_age));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_priv));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_home_dir));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_script_path));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_auth_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_parms));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_workstations));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_last_logon));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_last_logoff));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_acct_expires));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_max_storage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri3_logon_hours));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_bad_pw_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_num_logons));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_logon_server));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_country_code));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_code_page));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_user_id));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_primary_group_id));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_profile));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri3_home_dir_drive));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri3_password_expired));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri3_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usri3_logon_hours));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_3(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_3 *r)
-{
-	uint32_t _ptr_usri3_logon_hours;
-	TALLOC_CTX *_mem_save_usri3_logon_hours_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_name));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_password_age));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_priv));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_home_dir));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_script_path));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_auth_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_parms));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_workstations));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_last_logon));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_last_logoff));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_acct_expires));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_max_storage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri3_logon_hours));
-		if (_ptr_usri3_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usri3_logon_hours);
-		} else {
-			r->usri3_logon_hours = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_bad_pw_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_num_logons));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_logon_server));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_country_code));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_code_page));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_user_id));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_primary_group_id));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_profile));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri3_home_dir_drive));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri3_password_expired));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri3_logon_hours) {
-			_mem_save_usri3_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri3_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usri3_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri3_logon_hours_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_3(struct ndr_print *ndr, const char *name, const struct USER_INFO_3 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_3");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri3_name", r->usri3_name);
-	ndr_print_uint32(ndr, "usri3_password_age", r->usri3_password_age);
-	ndr_print_uint32(ndr, "usri3_priv", r->usri3_priv);
-	ndr_print_string(ndr, "usri3_home_dir", r->usri3_home_dir);
-	ndr_print_string(ndr, "usri3_comment", r->usri3_comment);
-	ndr_print_uint32(ndr, "usri3_flags", r->usri3_flags);
-	ndr_print_string(ndr, "usri3_script_path", r->usri3_script_path);
-	ndr_print_uint32(ndr, "usri3_auth_flags", r->usri3_auth_flags);
-	ndr_print_string(ndr, "usri3_full_name", r->usri3_full_name);
-	ndr_print_string(ndr, "usri3_usr_comment", r->usri3_usr_comment);
-	ndr_print_string(ndr, "usri3_parms", r->usri3_parms);
-	ndr_print_string(ndr, "usri3_workstations", r->usri3_workstations);
-	ndr_print_uint32(ndr, "usri3_last_logon", r->usri3_last_logon);
-	ndr_print_uint32(ndr, "usri3_last_logoff", r->usri3_last_logoff);
-	ndr_print_uint32(ndr, "usri3_acct_expires", r->usri3_acct_expires);
-	ndr_print_uint32(ndr, "usri3_max_storage", r->usri3_max_storage);
-	ndr_print_uint32(ndr, "usri3_units_per_week", r->usri3_units_per_week);
-	ndr_print_ptr(ndr, "usri3_logon_hours", r->usri3_logon_hours);
-	ndr->depth++;
-	if (r->usri3_logon_hours) {
-		ndr_print_uint8(ndr, "usri3_logon_hours", *r->usri3_logon_hours);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usri3_bad_pw_count", r->usri3_bad_pw_count);
-	ndr_print_uint32(ndr, "usri3_num_logons", r->usri3_num_logons);
-	ndr_print_string(ndr, "usri3_logon_server", r->usri3_logon_server);
-	ndr_print_uint32(ndr, "usri3_country_code", r->usri3_country_code);
-	ndr_print_uint32(ndr, "usri3_code_page", r->usri3_code_page);
-	ndr_print_uint32(ndr, "usri3_user_id", r->usri3_user_id);
-	ndr_print_uint32(ndr, "usri3_primary_group_id", r->usri3_primary_group_id);
-	ndr_print_string(ndr, "usri3_profile", r->usri3_profile);
-	ndr_print_string(ndr, "usri3_home_dir_drive", r->usri3_home_dir_drive);
-	ndr_print_uint32(ndr, "usri3_password_expired", r->usri3_password_expired);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_4(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_4 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_password));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_password_age));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_priv));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_home_dir));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_script_path));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_auth_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_parms));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_workstations));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_last_logon));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_last_logoff));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_acct_expires));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_max_storage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri4_logon_hours));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_bad_pw_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_num_logons));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_logon_server));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_country_code));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_code_page));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri4_user_sid));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_primary_group_id));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_profile));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri4_home_dir_drive));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri4_password_expired));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri4_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usri4_logon_hours));
-		}
-		if (r->usri4_user_sid) {
-			NDR_CHECK(ndr_push_domsid(ndr, NDR_SCALARS, r->usri4_user_sid));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_4(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_4 *r)
-{
-	uint32_t _ptr_usri4_logon_hours;
-	TALLOC_CTX *_mem_save_usri4_logon_hours_0;
-	uint32_t _ptr_usri4_user_sid;
-	TALLOC_CTX *_mem_save_usri4_user_sid_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_password));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_password_age));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_priv));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_home_dir));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_script_path));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_auth_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_parms));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_workstations));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_last_logon));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_last_logoff));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_acct_expires));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_max_storage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri4_logon_hours));
-		if (_ptr_usri4_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usri4_logon_hours);
-		} else {
-			r->usri4_logon_hours = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_bad_pw_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_num_logons));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_logon_server));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_country_code));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_code_page));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri4_user_sid));
-		if (_ptr_usri4_user_sid) {
-			NDR_PULL_ALLOC(ndr, r->usri4_user_sid);
-		} else {
-			r->usri4_user_sid = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_primary_group_id));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_profile));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri4_home_dir_drive));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri4_password_expired));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri4_logon_hours) {
-			_mem_save_usri4_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri4_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usri4_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri4_logon_hours_0, 0);
-		}
-		if (r->usri4_user_sid) {
-			_mem_save_usri4_user_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri4_user_sid, 0);
-			NDR_CHECK(ndr_pull_domsid(ndr, NDR_SCALARS, r->usri4_user_sid));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri4_user_sid_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_4(struct ndr_print *ndr, const char *name, const struct USER_INFO_4 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_4");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri4_name", r->usri4_name);
-	ndr_print_string(ndr, "usri4_password", r->usri4_password);
-	ndr_print_uint32(ndr, "usri4_password_age", r->usri4_password_age);
-	ndr_print_uint32(ndr, "usri4_priv", r->usri4_priv);
-	ndr_print_string(ndr, "usri4_home_dir", r->usri4_home_dir);
-	ndr_print_string(ndr, "usri4_comment", r->usri4_comment);
-	ndr_print_uint32(ndr, "usri4_flags", r->usri4_flags);
-	ndr_print_string(ndr, "usri4_script_path", r->usri4_script_path);
-	ndr_print_uint32(ndr, "usri4_auth_flags", r->usri4_auth_flags);
-	ndr_print_string(ndr, "usri4_full_name", r->usri4_full_name);
-	ndr_print_string(ndr, "usri4_usr_comment", r->usri4_usr_comment);
-	ndr_print_string(ndr, "usri4_parms", r->usri4_parms);
-	ndr_print_string(ndr, "usri4_workstations", r->usri4_workstations);
-	ndr_print_uint32(ndr, "usri4_last_logon", r->usri4_last_logon);
-	ndr_print_uint32(ndr, "usri4_last_logoff", r->usri4_last_logoff);
-	ndr_print_uint32(ndr, "usri4_acct_expires", r->usri4_acct_expires);
-	ndr_print_uint32(ndr, "usri4_max_storage", r->usri4_max_storage);
-	ndr_print_uint32(ndr, "usri4_units_per_week", r->usri4_units_per_week);
-	ndr_print_ptr(ndr, "usri4_logon_hours", r->usri4_logon_hours);
-	ndr->depth++;
-	if (r->usri4_logon_hours) {
-		ndr_print_uint8(ndr, "usri4_logon_hours", *r->usri4_logon_hours);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usri4_bad_pw_count", r->usri4_bad_pw_count);
-	ndr_print_uint32(ndr, "usri4_num_logons", r->usri4_num_logons);
-	ndr_print_string(ndr, "usri4_logon_server", r->usri4_logon_server);
-	ndr_print_uint32(ndr, "usri4_country_code", r->usri4_country_code);
-	ndr_print_uint32(ndr, "usri4_code_page", r->usri4_code_page);
-	ndr_print_ptr(ndr, "usri4_user_sid", r->usri4_user_sid);
-	ndr->depth++;
-	if (r->usri4_user_sid) {
-		ndr_print_domsid(ndr, "usri4_user_sid", r->usri4_user_sid);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usri4_primary_group_id", r->usri4_primary_group_id);
-	ndr_print_string(ndr, "usri4_profile", r->usri4_profile);
-	ndr_print_string(ndr, "usri4_home_dir_drive", r->usri4_home_dir_drive);
-	ndr_print_uint32(ndr, "usri4_password_expired", r->usri4_password_expired);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_10(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_10 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri10_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri10_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri10_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri10_full_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_10(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_10 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri10_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri10_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri10_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri10_full_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_10(struct ndr_print *ndr, const char *name, const struct USER_INFO_10 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_10");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri10_name", r->usri10_name);
-	ndr_print_string(ndr, "usri10_comment", r->usri10_comment);
-	ndr_print_string(ndr, "usri10_usr_comment", r->usri10_usr_comment);
-	ndr_print_string(ndr, "usri10_full_name", r->usri10_full_name);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_11(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_11 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_full_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_priv));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_auth_flags));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_password_age));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_home_dir));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_parms));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_last_logon));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_last_logoff));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_bad_pw_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_num_logons));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_logon_server));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_country_code));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri11_workstations));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_max_storage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri11_logon_hours));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri11_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri11_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usri11_logon_hours));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_11(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_11 *r)
-{
-	uint32_t _ptr_usri11_logon_hours;
-	TALLOC_CTX *_mem_save_usri11_logon_hours_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_full_name));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_priv));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_auth_flags));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_password_age));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_home_dir));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_parms));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_last_logon));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_last_logoff));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_bad_pw_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_num_logons));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_logon_server));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_country_code));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri11_workstations));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_max_storage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri11_logon_hours));
-		if (_ptr_usri11_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usri11_logon_hours);
-		} else {
-			r->usri11_logon_hours = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri11_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri11_logon_hours) {
-			_mem_save_usri11_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri11_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usri11_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri11_logon_hours_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_11(struct ndr_print *ndr, const char *name, const struct USER_INFO_11 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_11");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri11_name", r->usri11_name);
-	ndr_print_string(ndr, "usri11_comment", r->usri11_comment);
-	ndr_print_string(ndr, "usri11_usr_comment", r->usri11_usr_comment);
-	ndr_print_string(ndr, "usri11_full_name", r->usri11_full_name);
-	ndr_print_uint32(ndr, "usri11_priv", r->usri11_priv);
-	ndr_print_uint32(ndr, "usri11_auth_flags", r->usri11_auth_flags);
-	ndr_print_uint32(ndr, "usri11_password_age", r->usri11_password_age);
-	ndr_print_string(ndr, "usri11_home_dir", r->usri11_home_dir);
-	ndr_print_string(ndr, "usri11_parms", r->usri11_parms);
-	ndr_print_uint32(ndr, "usri11_last_logon", r->usri11_last_logon);
-	ndr_print_uint32(ndr, "usri11_last_logoff", r->usri11_last_logoff);
-	ndr_print_uint32(ndr, "usri11_bad_pw_count", r->usri11_bad_pw_count);
-	ndr_print_uint32(ndr, "usri11_num_logons", r->usri11_num_logons);
-	ndr_print_string(ndr, "usri11_logon_server", r->usri11_logon_server);
-	ndr_print_uint32(ndr, "usri11_country_code", r->usri11_country_code);
-	ndr_print_string(ndr, "usri11_workstations", r->usri11_workstations);
-	ndr_print_uint32(ndr, "usri11_max_storage", r->usri11_max_storage);
-	ndr_print_uint32(ndr, "usri11_units_per_week", r->usri11_units_per_week);
-	ndr_print_ptr(ndr, "usri11_logon_hours", r->usri11_logon_hours);
-	ndr->depth++;
-	if (r->usri11_logon_hours) {
-		ndr_print_uint8(ndr, "usri11_logon_hours", *r->usri11_logon_hours);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usri11_code_page", r->usri11_code_page);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_20(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_20 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri20_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri20_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri20_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri20_flags));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri20_user_id));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_20(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_20 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri20_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri20_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri20_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri20_flags));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri20_user_id));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_20(struct ndr_print *ndr, const char *name, const struct USER_INFO_20 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_20");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri20_name", r->usri20_name);
-	ndr_print_string(ndr, "usri20_full_name", r->usri20_full_name);
-	ndr_print_string(ndr, "usri20_comment", r->usri20_comment);
-	ndr_print_uint32(ndr, "usri20_flags", r->usri20_flags);
-	ndr_print_uint32(ndr, "usri20_user_id", r->usri20_user_id);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_21(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_21 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 1));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->usri21_password, ENCRYPTED_PWLEN));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_21(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_21 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 1));
-		NDR_PULL_ALLOC_N(ndr, r->usri21_password, ENCRYPTED_PWLEN);
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->usri21_password, ENCRYPTED_PWLEN));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_21(struct ndr_print *ndr, const char *name, const struct USER_INFO_21 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_21");
-	ndr->depth++;
-	ndr_print_array_uint8(ndr, "usri21_password", r->usri21_password, ENCRYPTED_PWLEN);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_22(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_22 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_name));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->usri22_password, ENCRYPTED_PWLEN));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_password_age));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_priv));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_home_dir));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_flags));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_script_path));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_auth_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_parms));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_workstations));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_last_logon));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_last_logoff));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_acct_expires));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_max_storage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri22_logon_hours));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_bad_pw_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_num_logons));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri22_logon_server));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_country_code));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri22_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri22_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usri22_logon_hours));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_22(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_22 *r)
-{
-	uint32_t _ptr_usri22_logon_hours;
-	TALLOC_CTX *_mem_save_usri22_logon_hours_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_name));
-		NDR_PULL_ALLOC_N(ndr, r->usri22_password, ENCRYPTED_PWLEN);
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->usri22_password, ENCRYPTED_PWLEN));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_password_age));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_priv));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_home_dir));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_flags));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_script_path));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_auth_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_parms));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_workstations));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_last_logon));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_last_logoff));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_acct_expires));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_max_storage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri22_logon_hours));
-		if (_ptr_usri22_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usri22_logon_hours);
-		} else {
-			r->usri22_logon_hours = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_bad_pw_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_num_logons));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri22_logon_server));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_country_code));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri22_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri22_logon_hours) {
-			_mem_save_usri22_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri22_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usri22_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri22_logon_hours_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_22(struct ndr_print *ndr, const char *name, const struct USER_INFO_22 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_22");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri22_name", r->usri22_name);
-	ndr_print_array_uint8(ndr, "usri22_password", r->usri22_password, ENCRYPTED_PWLEN);
-	ndr_print_uint32(ndr, "usri22_password_age", r->usri22_password_age);
-	ndr_print_uint32(ndr, "usri22_priv", r->usri22_priv);
-	ndr_print_string(ndr, "usri22_home_dir", r->usri22_home_dir);
-	ndr_print_string(ndr, "usri22_comment", r->usri22_comment);
-	ndr_print_uint32(ndr, "usri22_flags", r->usri22_flags);
-	ndr_print_uint32(ndr, "usri22_script_path", r->usri22_script_path);
-	ndr_print_uint32(ndr, "usri22_auth_flags", r->usri22_auth_flags);
-	ndr_print_string(ndr, "usri22_full_name", r->usri22_full_name);
-	ndr_print_string(ndr, "usri22_usr_comment", r->usri22_usr_comment);
-	ndr_print_string(ndr, "usri22_parms", r->usri22_parms);
-	ndr_print_string(ndr, "usri22_workstations", r->usri22_workstations);
-	ndr_print_uint32(ndr, "usri22_last_logon", r->usri22_last_logon);
-	ndr_print_uint32(ndr, "usri22_last_logoff", r->usri22_last_logoff);
-	ndr_print_uint32(ndr, "usri22_acct_expires", r->usri22_acct_expires);
-	ndr_print_uint32(ndr, "usri22_max_storage", r->usri22_max_storage);
-	ndr_print_uint32(ndr, "usri22_units_per_week", r->usri22_units_per_week);
-	ndr_print_ptr(ndr, "usri22_logon_hours", r->usri22_logon_hours);
-	ndr->depth++;
-	if (r->usri22_logon_hours) {
-		ndr_print_uint8(ndr, "usri22_logon_hours", *r->usri22_logon_hours);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usri22_bad_pw_count", r->usri22_bad_pw_count);
-	ndr_print_uint32(ndr, "usri22_num_logons", r->usri22_num_logons);
-	ndr_print_string(ndr, "usri22_logon_server", r->usri22_logon_server);
-	ndr_print_uint32(ndr, "usri22_country_code", r->usri22_country_code);
-	ndr_print_uint32(ndr, "usri22_code_page", r->usri22_code_page);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_23(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_23 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri23_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri23_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri23_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri23_flags));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri23_user_sid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri23_user_sid) {
-			NDR_CHECK(ndr_push_domsid(ndr, NDR_SCALARS, r->usri23_user_sid));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_23(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_23 *r)
-{
-	uint32_t _ptr_usri23_user_sid;
-	TALLOC_CTX *_mem_save_usri23_user_sid_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri23_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri23_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri23_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri23_flags));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri23_user_sid));
-		if (_ptr_usri23_user_sid) {
-			NDR_PULL_ALLOC(ndr, r->usri23_user_sid);
-		} else {
-			r->usri23_user_sid = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri23_user_sid) {
-			_mem_save_usri23_user_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri23_user_sid, 0);
-			NDR_CHECK(ndr_pull_domsid(ndr, NDR_SCALARS, r->usri23_user_sid));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri23_user_sid_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_23(struct ndr_print *ndr, const char *name, const struct USER_INFO_23 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_23");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri23_name", r->usri23_name);
-	ndr_print_string(ndr, "usri23_full_name", r->usri23_full_name);
-	ndr_print_string(ndr, "usri23_comment", r->usri23_comment);
-	ndr_print_uint32(ndr, "usri23_flags", r->usri23_flags);
-	ndr_print_ptr(ndr, "usri23_user_sid", r->usri23_user_sid);
-	ndr->depth++;
-	if (r->usri23_user_sid) {
-		ndr_print_domsid(ndr, "usri23_user_sid", r->usri23_user_sid);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1003(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1003 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1003_password));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1003(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1003 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1003_password));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1003(struct ndr_print *ndr, const char *name, const struct USER_INFO_1003 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1003");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1003_password", r->usri1003_password);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1005(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1005 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1005_priv));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1005(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1005 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1005_priv));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1005(struct ndr_print *ndr, const char *name, const struct USER_INFO_1005 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1005");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1005_priv", r->usri1005_priv);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1006(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1006 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1006_home_dir));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1006(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1006 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1006_home_dir));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1006(struct ndr_print *ndr, const char *name, const struct USER_INFO_1006 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1006");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1006_home_dir", r->usri1006_home_dir);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1007(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1007 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1007_comment));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1007(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1007 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1007_comment));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1007(struct ndr_print *ndr, const char *name, const struct USER_INFO_1007 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1007");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1007_comment", r->usri1007_comment);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1008(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1008 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1008_flags));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1008(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1008 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1008_flags));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1008(struct ndr_print *ndr, const char *name, const struct USER_INFO_1008 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1008");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1008_flags", r->usri1008_flags);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1009(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1009 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1009_script_path));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1009(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1009 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1009_script_path));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1009(struct ndr_print *ndr, const char *name, const struct USER_INFO_1009 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1009");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1009_script_path", r->usri1009_script_path);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1010(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1010 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1010_auth_flags));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1010(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1010 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1010_auth_flags));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1010(struct ndr_print *ndr, const char *name, const struct USER_INFO_1010 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1010");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1010_auth_flags", r->usri1010_auth_flags);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1011(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1011 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1011_full_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1011(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1011 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1011_full_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1011(struct ndr_print *ndr, const char *name, const struct USER_INFO_1011 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1011");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1011_full_name", r->usri1011_full_name);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1012(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1012 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1012_usr_comment));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1012(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1012 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1012_usr_comment));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1012(struct ndr_print *ndr, const char *name, const struct USER_INFO_1012 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1012");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1012_usr_comment", r->usri1012_usr_comment);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1013(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1013 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1013_parms));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1013(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1013 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1013_parms));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1013(struct ndr_print *ndr, const char *name, const struct USER_INFO_1013 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1013");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1013_parms", r->usri1013_parms);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1014(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1014 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1014_workstations));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1014(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1014 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1014_workstations));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1014(struct ndr_print *ndr, const char *name, const struct USER_INFO_1014 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1014");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1014_workstations", r->usri1014_workstations);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1017(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1017 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1017_acct_expires));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1017(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1017 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1017_acct_expires));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1017(struct ndr_print *ndr, const char *name, const struct USER_INFO_1017 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1017");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1017_acct_expires", r->usri1017_acct_expires);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1018(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1018 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1018_max_storage));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1018(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1018 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1018_max_storage));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1018(struct ndr_print *ndr, const char *name, const struct USER_INFO_1018 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1018");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1018_max_storage", r->usri1018_max_storage);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1020(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1020 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1020_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usri1020_logon_hours));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri1020_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usri1020_logon_hours));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1020(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1020 *r)
-{
-	uint32_t _ptr_usri1020_logon_hours;
-	TALLOC_CTX *_mem_save_usri1020_logon_hours_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1020_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usri1020_logon_hours));
-		if (_ptr_usri1020_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usri1020_logon_hours);
-		} else {
-			r->usri1020_logon_hours = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usri1020_logon_hours) {
-			_mem_save_usri1020_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usri1020_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usri1020_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usri1020_logon_hours_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1020(struct ndr_print *ndr, const char *name, const struct USER_INFO_1020 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1020");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1020_units_per_week", r->usri1020_units_per_week);
-	ndr_print_ptr(ndr, "usri1020_logon_hours", r->usri1020_logon_hours);
-	ndr->depth++;
-	if (r->usri1020_logon_hours) {
-		ndr_print_uint8(ndr, "usri1020_logon_hours", *r->usri1020_logon_hours);
-	}
-	ndr->depth--;
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1023(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1023 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1023_logon_server));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1023(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1023 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1023_logon_server));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1023(struct ndr_print *ndr, const char *name, const struct USER_INFO_1023 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1023");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1023_logon_server", r->usri1023_logon_server);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1024(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1024 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1024_country_code));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1024(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1024 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1024_country_code));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1024(struct ndr_print *ndr, const char *name, const struct USER_INFO_1024 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1024");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1024_country_code", r->usri1024_country_code);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1025(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1025 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1025_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1025(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1025 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1025_code_page));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1025(struct ndr_print *ndr, const char *name, const struct USER_INFO_1025 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1025");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1025_code_page", r->usri1025_code_page);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1051(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1051 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usri1051_primary_group_id));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1051(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1051 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usri1051_primary_group_id));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1051(struct ndr_print *ndr, const char *name, const struct USER_INFO_1051 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1051");
-	ndr->depth++;
-	ndr_print_uint32(ndr, "usri1051_primary_group_id", r->usri1051_primary_group_id);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1052(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1052 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1052_profile));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1052(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1052 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1052_profile));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1052(struct ndr_print *ndr, const char *name, const struct USER_INFO_1052 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1052");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1052_profile", r->usri1052_profile);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_1053(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1053 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usri1053_home_dir_drive));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_1053(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1053 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usri1053_home_dir_drive));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_1053(struct ndr_print *ndr, const char *name, const struct USER_INFO_1053 *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_1053");
-	ndr->depth++;
-	ndr_print_string(ndr, "usri1053_home_dir_drive", r->usri1053_home_dir_drive);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_USER_INFO_X(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_X *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_password));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_password_age));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_priv));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_home_dir));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_comment));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_script_path));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_auth_flags));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_full_name));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_usr_comment));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_parms));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_workstations));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_last_logon));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_last_logoff));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_acct_expires));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_max_storage));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_units_per_week));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->usriX_logon_hours));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_bad_pw_count));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_num_logons));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_logon_server));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_country_code));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_code_page));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_profile));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->usriX_home_dir_drive));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->usriX_primary_group_id));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usriX_logon_hours) {
-			NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->usriX_logon_hours));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_USER_INFO_X(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_X *r)
-{
-	uint32_t _ptr_usriX_logon_hours;
-	TALLOC_CTX *_mem_save_usriX_logon_hours_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_password));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_password_age));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_priv));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_home_dir));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_comment));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_script_path));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_auth_flags));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_full_name));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_usr_comment));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_parms));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_workstations));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_last_logon));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_last_logoff));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_acct_expires));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_max_storage));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_units_per_week));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_usriX_logon_hours));
-		if (_ptr_usriX_logon_hours) {
-			NDR_PULL_ALLOC(ndr, r->usriX_logon_hours);
-		} else {
-			r->usriX_logon_hours = NULL;
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_bad_pw_count));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_num_logons));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_logon_server));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_country_code));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_code_page));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_profile));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->usriX_home_dir_drive));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->usriX_primary_group_id));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->usriX_logon_hours) {
-			_mem_save_usriX_logon_hours_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->usriX_logon_hours, 0);
-			NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->usriX_logon_hours));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_usriX_logon_hours_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_USER_INFO_X(struct ndr_print *ndr, const char *name, const struct USER_INFO_X *r)
-{
-	ndr_print_struct(ndr, name, "USER_INFO_X");
-	ndr->depth++;
-	ndr_print_string(ndr, "usriX_name", r->usriX_name);
-	ndr_print_string(ndr, "usriX_password", r->usriX_password);
-	ndr_print_uint32(ndr, "usriX_password_age", r->usriX_password_age);
-	ndr_print_uint32(ndr, "usriX_priv", r->usriX_priv);
-	ndr_print_string(ndr, "usriX_home_dir", r->usriX_home_dir);
-	ndr_print_string(ndr, "usriX_comment", r->usriX_comment);
-	ndr_print_uint32(ndr, "usriX_flags", r->usriX_flags);
-	ndr_print_string(ndr, "usriX_script_path", r->usriX_script_path);
-	ndr_print_uint32(ndr, "usriX_auth_flags", r->usriX_auth_flags);
-	ndr_print_string(ndr, "usriX_full_name", r->usriX_full_name);
-	ndr_print_string(ndr, "usriX_usr_comment", r->usriX_usr_comment);
-	ndr_print_string(ndr, "usriX_parms", r->usriX_parms);
-	ndr_print_string(ndr, "usriX_workstations", r->usriX_workstations);
-	ndr_print_uint32(ndr, "usriX_last_logon", r->usriX_last_logon);
-	ndr_print_uint32(ndr, "usriX_last_logoff", r->usriX_last_logoff);
-	ndr_print_uint32(ndr, "usriX_acct_expires", r->usriX_acct_expires);
-	ndr_print_uint32(ndr, "usriX_max_storage", r->usriX_max_storage);
-	ndr_print_uint32(ndr, "usriX_units_per_week", r->usriX_units_per_week);
-	ndr_print_ptr(ndr, "usriX_logon_hours", r->usriX_logon_hours);
-	ndr->depth++;
-	if (r->usriX_logon_hours) {
-		ndr_print_uint8(ndr, "usriX_logon_hours", *r->usriX_logon_hours);
-	}
-	ndr->depth--;
-	ndr_print_uint32(ndr, "usriX_bad_pw_count", r->usriX_bad_pw_count);
-	ndr_print_uint32(ndr, "usriX_num_logons", r->usriX_num_logons);
-	ndr_print_string(ndr, "usriX_logon_server", r->usriX_logon_server);
-	ndr_print_uint32(ndr, "usriX_country_code", r->usriX_country_code);
-	ndr_print_uint32(ndr, "usriX_code_page", r->usriX_code_page);
-	ndr_print_string(ndr, "usriX_profile", r->usriX_profile);
-	ndr_print_string(ndr, "usriX_home_dir_drive", r->usriX_home_dir_drive);
-	ndr_print_uint32(ndr, "usriX_primary_group_id", r->usriX_primary_group_id);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_GROUP_USERS_INFO_0(struct ndr_push *ndr, int ndr_flags, const struct GROUP_USERS_INFO_0 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->grui0_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_GROUP_USERS_INFO_0(struct ndr_pull *ndr, int ndr_flags, struct GROUP_USERS_INFO_0 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->grui0_name));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_GROUP_USERS_INFO_0(struct ndr_print *ndr, const char *name, const struct GROUP_USERS_INFO_0 *r)
-{
-	ndr_print_struct(ndr, name, "GROUP_USERS_INFO_0");
-	ndr->depth++;
-	ndr_print_string(ndr, "grui0_name", r->grui0_name);
-	ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_GROUP_USERS_INFO_1(struct ndr_push *ndr, int ndr_flags, const struct GROUP_USERS_INFO_1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->grui1_name));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->grui1_attributes));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_GROUP_USERS_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct GROUP_USERS_INFO_1 *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->grui1_name));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->grui1_attributes));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_GROUP_USERS_INFO_1(struct ndr_print *ndr, const char *name, const struct GROUP_USERS_INFO_1 *r)
-{
-	ndr_print_struct(ndr, name, "GROUP_USERS_INFO_1");
-	ndr->depth++;
-	ndr_print_string(ndr, "grui1_name", r->grui1_name);
-	ndr_print_uint32(ndr, "grui1_attributes", r->grui1_attributes);
-	ndr->depth--;
-}
-
 _PUBLIC_ enum ndr_err_code ndr_push_NET_DISPLAY_USER(struct ndr_push *ndr, int ndr_flags, const struct NET_DISPLAY_USER *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -2186,37 +321,6 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ enum ndr_err_code ndr_push_SHARE_INFO_1005_FLAGS(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_SHARE_INFO_1005_FLAGS(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_SHARE_INFO_1005_FLAGS(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHI1005_FLAGS_DFS", SHI1005_FLAGS_DFS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHI1005_FLAGS_DFS_ROOT", SHI1005_FLAGS_DFS_ROOT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "CSC_CACHE_MANUAL_REINT", CSC_CACHE_MANUAL_REINT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "CSC_CACHE_AUTO_REINT", CSC_CACHE_AUTO_REINT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "CSC_CACHE_VDO", CSC_CACHE_VDO, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "CSC_CACHE_NONE", CSC_CACHE_NONE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS", SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHI1005_FLAGS_FORCE_SHARED_DELETE", SHI1005_FLAGS_FORCE_SHARED_DELETE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING", SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM", SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM, r);
-	ndr->depth--;
-}
-
 _PUBLIC_ void ndr_print_NetJoinDomain(struct ndr_print *ndr, const char *name, int flags, const struct NetJoinDomain *r)
 {
 	ndr_print_struct(ndr, name, "NetJoinDomain");
@@ -2255,7 +359,7 @@
 			ndr_print_string(ndr, "password", r->in.password);
 		}
 		ndr->depth--;
-		ndr_print_NetJoinFlags(ndr, "join_flags", r->in.join_flags);
+		ndr_print_uint32(ndr, "join_flags", r->in.join_flags);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -2295,7 +399,7 @@
 			ndr_print_string(ndr, "password", r->in.password);
 		}
 		ndr->depth--;
-		ndr_print_NetJoinFlags(ndr, "unjoin_flags", r->in.unjoin_flags);
+		ndr_print_uint32(ndr, "unjoin_flags", r->in.unjoin_flags);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -2408,32 +512,6 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ void ndr_print_NetRenameMachineInDomain(struct ndr_print *ndr, const char *name, int flags, const struct NetRenameMachineInDomain *r)
-{
-	ndr_print_struct(ndr, name, "NetRenameMachineInDomain");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetRenameMachineInDomain");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "new_machine_name", r->in.new_machine_name);
-		ndr_print_string(ndr, "account", r->in.account);
-		ndr_print_string(ndr, "password", r->in.password);
-		ndr_print_uint32(ndr, "rename_options", r->in.rename_options);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetRenameMachineInDomain");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
 _PUBLIC_ void ndr_print_NetServerGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetServerGetInfo *r)
 {
 	ndr_print_struct(ndr, name, "NetServerGetInfo");
@@ -2766,273 +844,6 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ void ndr_print_NetUserChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct NetUserChangePassword *r)
-{
-	ndr_print_struct(ndr, name, "NetUserChangePassword");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserChangePassword");
-		ndr->depth++;
-		ndr_print_string(ndr, "domain_name", r->in.domain_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_string(ndr, "old_password", r->in.old_password);
-		ndr_print_string(ndr, "new_password", r->in.new_password);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserChangePassword");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetUserGetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetUserGetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserGetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetUserSetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetUserSetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserSetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserSetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserGetGroups(struct ndr_print *ndr, const char *name, int flags, const struct NetUserGetGroups *r)
-{
-	ndr_print_struct(ndr, name, "NetUserGetGroups");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserGetGroups");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserGetGroups");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserSetGroups(struct ndr_print *ndr, const char *name, int flags, const struct NetUserSetGroups *r)
-{
-	ndr_print_struct(ndr, name, "NetUserSetGroups");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserSetGroups");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "num_entries", r->in.num_entries);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserSetGroups");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserGetLocalGroups(struct ndr_print *ndr, const char *name, int flags, const struct NetUserGetLocalGroups *r)
-{
-	ndr_print_struct(ndr, name, "NetUserGetLocalGroups");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserGetLocalGroups");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "flags", r->in.flags);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserGetLocalGroups");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserModalsGet(struct ndr_print *ndr, const char *name, int flags, const struct NetUserModalsGet *r)
-{
-	ndr_print_struct(ndr, name, "NetUserModalsGet");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserModalsGet");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserModalsGet");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetUserModalsSet(struct ndr_print *ndr, const char *name, int flags, const struct NetUserModalsSet *r)
-{
-	ndr_print_struct(ndr, name, "NetUserModalsSet");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetUserModalsSet");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetUserModalsSet");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
 _PUBLIC_ void ndr_print_NetQueryDisplayInformation(struct ndr_print *ndr, const char *name, int flags, const struct NetQueryDisplayInformation *r)
 {
 	ndr_print_struct(ndr, name, "NetQueryDisplayInformation");
@@ -3068,910 +879,3 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ void ndr_print_NetGroupAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupAdd *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupAdd");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupAdd");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupAdd");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupDel(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupDel *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupDel");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupDel");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupDel");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupEnum *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupEnum");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupEnum");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupEnum");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupSetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupSetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupSetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupSetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupGetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupGetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupGetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupAddUser(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupAddUser *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupAddUser");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupAddUser");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupAddUser");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupDelUser(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupDelUser *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupDelUser");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupDelUser");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupDelUser");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupGetUsers(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupGetUsers *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupGetUsers");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupGetUsers");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupGetUsers");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetGroupSetUsers(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupSetUsers *r)
-{
-	ndr_print_struct(ndr, name, "NetGroupSetUsers");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetGroupSetUsers");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "num_entries", r->in.num_entries);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetGroupSetUsers");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupAdd *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupAdd");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupAdd");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupAdd");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupDel(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupDel *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupDel");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupDel");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupDel");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupGetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupGetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupGetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupSetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupSetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupSetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupSetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupEnum *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupEnum");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupEnum");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupEnum");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupAddMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupAddMembers *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupAddMembers");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupAddMembers");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "total_entries", r->in.total_entries);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupAddMembers");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupDelMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupDelMembers *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupDelMembers");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupDelMembers");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "total_entries", r->in.total_entries);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupDelMembers");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupGetMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupGetMembers *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupGetMembers");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupGetMembers");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "local_group_name", r->in.local_group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupGetMembers");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetLocalGroupSetMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupSetMembers *r)
-{
-	ndr_print_struct(ndr, name, "NetLocalGroupSetMembers");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetLocalGroupSetMembers");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "group_name", r->in.group_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "total_entries", r->in.total_entries);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetLocalGroupSetMembers");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetRemoteTOD(struct ndr_print *ndr, const char *name, int flags, const struct NetRemoteTOD *r)
-{
-	ndr_print_struct(ndr, name, "NetRemoteTOD");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetRemoteTOD");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetRemoteTOD");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetShareAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetShareAdd *r)
-{
-	ndr_print_struct(ndr, name, "NetShareAdd");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetShareAdd");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetShareAdd");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetShareDel(struct ndr_print *ndr, const char *name, int flags, const struct NetShareDel *r)
-{
-	ndr_print_struct(ndr, name, "NetShareDel");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetShareDel");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "net_name", r->in.net_name);
-		ndr_print_uint32(ndr, "reserved", r->in.reserved);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetShareDel");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetShareEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetShareEnum *r)
-{
-	ndr_print_struct(ndr, name, "NetShareEnum");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetShareEnum");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetShareEnum");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetShareGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetShareGetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetShareGetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetShareGetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "net_name", r->in.net_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetShareGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetShareSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetShareSetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetShareSetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetShareSetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "net_name", r->in.net_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_ptr(ndr, "buffer", r->in.buffer);
-		ndr->depth++;
-		ndr_print_uint8(ndr, "buffer", *r->in.buffer);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetShareSetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "parm_err", r->out.parm_err);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "parm_err", *r->out.parm_err);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetFileClose(struct ndr_print *ndr, const char *name, int flags, const struct NetFileClose *r)
-{
-	ndr_print_struct(ndr, name, "NetFileClose");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetFileClose");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "fileid", r->in.fileid);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetFileClose");
-		ndr->depth++;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetFileGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetFileGetInfo *r)
-{
-	ndr_print_struct(ndr, name, "NetFileGetInfo");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetFileGetInfo");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_uint32(ndr, "fileid", r->in.fileid);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetFileGetInfo");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-
-_PUBLIC_ void ndr_print_NetFileEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetFileEnum *r)
-{
-	ndr_print_struct(ndr, name, "NetFileEnum");
-	ndr->depth++;
-	if (flags & NDR_SET_VALUES) {
-		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
-	}
-	if (flags & NDR_IN) {
-		ndr_print_struct(ndr, "in", "NetFileEnum");
-		ndr->depth++;
-		ndr_print_string(ndr, "server_name", r->in.server_name);
-		ndr_print_string(ndr, "base_path", r->in.base_path);
-		ndr_print_string(ndr, "user_name", r->in.user_name);
-		ndr_print_uint32(ndr, "level", r->in.level);
-		ndr_print_uint32(ndr, "prefmaxlen", r->in.prefmaxlen);
-		ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
-		ndr->depth--;
-		ndr->depth--;
-	}
-	if (flags & NDR_OUT) {
-		ndr_print_struct(ndr, "out", "NetFileEnum");
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_ptr(ndr, "buffer", *r->out.buffer);
-		ndr->depth++;
-		if (*r->out.buffer) {
-			ndr_print_uint8(ndr, "buffer", **r->out.buffer);
-		}
-		ndr->depth--;
-		ndr->depth--;
-		ndr_print_ptr(ndr, "entries_read", r->out.entries_read);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "entries_read", *r->out.entries_read);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
-		ndr->depth--;
-		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
-		ndr->depth--;
-	}
-	ndr->depth--;
-}
-

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_libnetapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -14,115 +14,28 @@
 
 #define NDR_NETGETJOINABLEOUS (0x03)
 
-#define NDR_NETRENAMEMACHINEINDOMAIN (0x04)
+#define NDR_NETSERVERGETINFO (0x04)
 
-#define NDR_NETSERVERGETINFO (0x05)
+#define NDR_NETSERVERSETINFO (0x05)
 
-#define NDR_NETSERVERSETINFO (0x06)
+#define NDR_NETGETDCNAME (0x06)
 
-#define NDR_NETGETDCNAME (0x07)
+#define NDR_NETGETANYDCNAME (0x07)
 
-#define NDR_NETGETANYDCNAME (0x08)
+#define NDR_DSGETDCNAME (0x08)
 
-#define NDR_DSGETDCNAME (0x09)
+#define NDR_NETUSERADD (0x09)
 
-#define NDR_NETUSERADD (0x0a)
+#define NDR_NETUSERDEL (0x0a)
 
-#define NDR_NETUSERDEL (0x0b)
+#define NDR_NETUSERENUM (0x0b)
 
-#define NDR_NETUSERENUM (0x0c)
+#define NDR_NETQUERYDISPLAYINFORMATION (0x0c)
 
-#define NDR_NETUSERCHANGEPASSWORD (0x0d)
-
-#define NDR_NETUSERGETINFO (0x0e)
-
-#define NDR_NETUSERSETINFO (0x0f)
-
-#define NDR_NETUSERGETGROUPS (0x10)
-
-#define NDR_NETUSERSETGROUPS (0x11)
-
-#define NDR_NETUSERGETLOCALGROUPS (0x12)
-
-#define NDR_NETUSERMODALSGET (0x13)
-
-#define NDR_NETUSERMODALSSET (0x14)
-
-#define NDR_NETQUERYDISPLAYINFORMATION (0x15)
-
-#define NDR_NETGROUPADD (0x16)
-
-#define NDR_NETGROUPDEL (0x17)
-
-#define NDR_NETGROUPENUM (0x18)
-
-#define NDR_NETGROUPSETINFO (0x19)
-
-#define NDR_NETGROUPGETINFO (0x1a)
-
-#define NDR_NETGROUPADDUSER (0x1b)
-
-#define NDR_NETGROUPDELUSER (0x1c)
-
-#define NDR_NETGROUPGETUSERS (0x1d)
-
-#define NDR_NETGROUPSETUSERS (0x1e)
-
-#define NDR_NETLOCALGROUPADD (0x1f)
-
-#define NDR_NETLOCALGROUPDEL (0x20)
-
-#define NDR_NETLOCALGROUPGETINFO (0x21)
-
-#define NDR_NETLOCALGROUPSETINFO (0x22)
-
-#define NDR_NETLOCALGROUPENUM (0x23)
-
-#define NDR_NETLOCALGROUPADDMEMBERS (0x24)
-
-#define NDR_NETLOCALGROUPDELMEMBERS (0x25)
-
-#define NDR_NETLOCALGROUPGETMEMBERS (0x26)
-
-#define NDR_NETLOCALGROUPSETMEMBERS (0x27)
-
-#define NDR_NETREMOTETOD (0x28)
-
-#define NDR_NETSHAREADD (0x29)
-
-#define NDR_NETSHAREDEL (0x2a)
-
-#define NDR_NETSHAREENUM (0x2b)
-
-#define NDR_NETSHAREGETINFO (0x2c)
-
-#define NDR_NETSHARESETINFO (0x2d)
-
-#define NDR_NETFILECLOSE (0x2e)
-
-#define NDR_NETFILEGETINFO (0x2f)
-
-#define NDR_NETFILEENUM (0x30)
-
-#define NDR_LIBNETAPI_CALL_COUNT (49)
+#define NDR_LIBNETAPI_CALL_COUNT (13)
 enum ndr_err_code ndr_push_NET_API_STATUS(struct ndr_push *ndr, int ndr_flags, enum NET_API_STATUS r);
 enum ndr_err_code ndr_pull_NET_API_STATUS(struct ndr_pull *ndr, int ndr_flags, enum NET_API_STATUS *r);
 void ndr_print_NET_API_STATUS(struct ndr_print *ndr, const char *name, enum NET_API_STATUS r);
-enum ndr_err_code ndr_push_domsid(struct ndr_push *ndr, int ndr_flags, const struct domsid *r);
-enum ndr_err_code ndr_pull_domsid(struct ndr_pull *ndr, int ndr_flags, struct domsid *r);
-void ndr_print_domsid(struct ndr_print *ndr, const char *name, const struct domsid *r);
-enum ndr_err_code ndr_push_NetJoinFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-enum ndr_err_code ndr_pull_NetJoinFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_NetJoinFlags(struct ndr_print *ndr, const char *name, uint32_t r);
-enum ndr_err_code ndr_push_SERVER_INFO_100(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_100 *r);
-enum ndr_err_code ndr_pull_SERVER_INFO_100(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_100 *r);
-void ndr_print_SERVER_INFO_100(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_100 *r);
-enum ndr_err_code ndr_push_SERVER_INFO_101(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_101 *r);
-enum ndr_err_code ndr_pull_SERVER_INFO_101(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_101 *r);
-void ndr_print_SERVER_INFO_101(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_101 *r);
-enum ndr_err_code ndr_push_SERVER_INFO_102(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_102 *r);
-enum ndr_err_code ndr_pull_SERVER_INFO_102(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_102 *r);
-void ndr_print_SERVER_INFO_102(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_102 *r);
 enum ndr_err_code ndr_push_SERVER_INFO_1005(struct ndr_push *ndr, int ndr_flags, const struct SERVER_INFO_1005 *r);
 enum ndr_err_code ndr_pull_SERVER_INFO_1005(struct ndr_pull *ndr, int ndr_flags, struct SERVER_INFO_1005 *r);
 void ndr_print_SERVER_INFO_1005(struct ndr_print *ndr, const char *name, const struct SERVER_INFO_1005 *r);
@@ -135,102 +48,6 @@
 enum ndr_err_code ndr_push_USER_INFO_1(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1 *r);
 enum ndr_err_code ndr_pull_USER_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1 *r);
 void ndr_print_USER_INFO_1(struct ndr_print *ndr, const char *name, const struct USER_INFO_1 *r);
-enum ndr_err_code ndr_push_USER_INFO_2(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_2 *r);
-enum ndr_err_code ndr_pull_USER_INFO_2(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_2 *r);
-void ndr_print_USER_INFO_2(struct ndr_print *ndr, const char *name, const struct USER_INFO_2 *r);
-enum ndr_err_code ndr_push_USER_INFO_3(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_3 *r);
-enum ndr_err_code ndr_pull_USER_INFO_3(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_3 *r);
-void ndr_print_USER_INFO_3(struct ndr_print *ndr, const char *name, const struct USER_INFO_3 *r);
-enum ndr_err_code ndr_push_USER_INFO_4(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_4 *r);
-enum ndr_err_code ndr_pull_USER_INFO_4(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_4 *r);
-void ndr_print_USER_INFO_4(struct ndr_print *ndr, const char *name, const struct USER_INFO_4 *r);
-enum ndr_err_code ndr_push_USER_INFO_10(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_10 *r);
-enum ndr_err_code ndr_pull_USER_INFO_10(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_10 *r);
-void ndr_print_USER_INFO_10(struct ndr_print *ndr, const char *name, const struct USER_INFO_10 *r);
-enum ndr_err_code ndr_push_USER_INFO_11(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_11 *r);
-enum ndr_err_code ndr_pull_USER_INFO_11(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_11 *r);
-void ndr_print_USER_INFO_11(struct ndr_print *ndr, const char *name, const struct USER_INFO_11 *r);
-enum ndr_err_code ndr_push_USER_INFO_20(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_20 *r);
-enum ndr_err_code ndr_pull_USER_INFO_20(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_20 *r);
-void ndr_print_USER_INFO_20(struct ndr_print *ndr, const char *name, const struct USER_INFO_20 *r);
-enum ndr_err_code ndr_push_USER_INFO_21(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_21 *r);
-enum ndr_err_code ndr_pull_USER_INFO_21(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_21 *r);
-void ndr_print_USER_INFO_21(struct ndr_print *ndr, const char *name, const struct USER_INFO_21 *r);
-enum ndr_err_code ndr_push_USER_INFO_22(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_22 *r);
-enum ndr_err_code ndr_pull_USER_INFO_22(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_22 *r);
-void ndr_print_USER_INFO_22(struct ndr_print *ndr, const char *name, const struct USER_INFO_22 *r);
-enum ndr_err_code ndr_push_USER_INFO_23(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_23 *r);
-enum ndr_err_code ndr_pull_USER_INFO_23(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_23 *r);
-void ndr_print_USER_INFO_23(struct ndr_print *ndr, const char *name, const struct USER_INFO_23 *r);
-enum ndr_err_code ndr_push_USER_INFO_1003(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1003 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1003(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1003 *r);
-void ndr_print_USER_INFO_1003(struct ndr_print *ndr, const char *name, const struct USER_INFO_1003 *r);
-enum ndr_err_code ndr_push_USER_INFO_1005(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1005 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1005(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1005 *r);
-void ndr_print_USER_INFO_1005(struct ndr_print *ndr, const char *name, const struct USER_INFO_1005 *r);
-enum ndr_err_code ndr_push_USER_INFO_1006(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1006 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1006(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1006 *r);
-void ndr_print_USER_INFO_1006(struct ndr_print *ndr, const char *name, const struct USER_INFO_1006 *r);
-enum ndr_err_code ndr_push_USER_INFO_1007(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1007 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1007(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1007 *r);
-void ndr_print_USER_INFO_1007(struct ndr_print *ndr, const char *name, const struct USER_INFO_1007 *r);
-enum ndr_err_code ndr_push_USER_INFO_1008(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1008 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1008(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1008 *r);
-void ndr_print_USER_INFO_1008(struct ndr_print *ndr, const char *name, const struct USER_INFO_1008 *r);
-enum ndr_err_code ndr_push_USER_INFO_1009(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1009 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1009(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1009 *r);
-void ndr_print_USER_INFO_1009(struct ndr_print *ndr, const char *name, const struct USER_INFO_1009 *r);
-enum ndr_err_code ndr_push_USER_INFO_1010(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1010 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1010(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1010 *r);
-void ndr_print_USER_INFO_1010(struct ndr_print *ndr, const char *name, const struct USER_INFO_1010 *r);
-enum ndr_err_code ndr_push_USER_INFO_1011(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1011 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1011(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1011 *r);
-void ndr_print_USER_INFO_1011(struct ndr_print *ndr, const char *name, const struct USER_INFO_1011 *r);
-enum ndr_err_code ndr_push_USER_INFO_1012(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1012 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1012(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1012 *r);
-void ndr_print_USER_INFO_1012(struct ndr_print *ndr, const char *name, const struct USER_INFO_1012 *r);
-enum ndr_err_code ndr_push_USER_INFO_1013(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1013 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1013(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1013 *r);
-void ndr_print_USER_INFO_1013(struct ndr_print *ndr, const char *name, const struct USER_INFO_1013 *r);
-enum ndr_err_code ndr_push_USER_INFO_1014(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1014 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1014(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1014 *r);
-void ndr_print_USER_INFO_1014(struct ndr_print *ndr, const char *name, const struct USER_INFO_1014 *r);
-enum ndr_err_code ndr_push_USER_INFO_1017(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1017 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1017(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1017 *r);
-void ndr_print_USER_INFO_1017(struct ndr_print *ndr, const char *name, const struct USER_INFO_1017 *r);
-enum ndr_err_code ndr_push_USER_INFO_1018(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1018 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1018(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1018 *r);
-void ndr_print_USER_INFO_1018(struct ndr_print *ndr, const char *name, const struct USER_INFO_1018 *r);
-enum ndr_err_code ndr_push_USER_INFO_1020(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1020 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1020(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1020 *r);
-void ndr_print_USER_INFO_1020(struct ndr_print *ndr, const char *name, const struct USER_INFO_1020 *r);
-enum ndr_err_code ndr_push_USER_INFO_1023(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1023 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1023(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1023 *r);
-void ndr_print_USER_INFO_1023(struct ndr_print *ndr, const char *name, const struct USER_INFO_1023 *r);
-enum ndr_err_code ndr_push_USER_INFO_1024(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1024 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1024(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1024 *r);
-void ndr_print_USER_INFO_1024(struct ndr_print *ndr, const char *name, const struct USER_INFO_1024 *r);
-enum ndr_err_code ndr_push_USER_INFO_1025(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1025 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1025(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1025 *r);
-void ndr_print_USER_INFO_1025(struct ndr_print *ndr, const char *name, const struct USER_INFO_1025 *r);
-enum ndr_err_code ndr_push_USER_INFO_1051(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1051 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1051(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1051 *r);
-void ndr_print_USER_INFO_1051(struct ndr_print *ndr, const char *name, const struct USER_INFO_1051 *r);
-enum ndr_err_code ndr_push_USER_INFO_1052(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1052 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1052(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1052 *r);
-void ndr_print_USER_INFO_1052(struct ndr_print *ndr, const char *name, const struct USER_INFO_1052 *r);
-enum ndr_err_code ndr_push_USER_INFO_1053(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1053 *r);
-enum ndr_err_code ndr_pull_USER_INFO_1053(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1053 *r);
-void ndr_print_USER_INFO_1053(struct ndr_print *ndr, const char *name, const struct USER_INFO_1053 *r);
-enum ndr_err_code ndr_push_USER_INFO_X(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_X *r);
-enum ndr_err_code ndr_pull_USER_INFO_X(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_X *r);
-void ndr_print_USER_INFO_X(struct ndr_print *ndr, const char *name, const struct USER_INFO_X *r);
-enum ndr_err_code ndr_push_GROUP_USERS_INFO_0(struct ndr_push *ndr, int ndr_flags, const struct GROUP_USERS_INFO_0 *r);
-enum ndr_err_code ndr_pull_GROUP_USERS_INFO_0(struct ndr_pull *ndr, int ndr_flags, struct GROUP_USERS_INFO_0 *r);
-void ndr_print_GROUP_USERS_INFO_0(struct ndr_print *ndr, const char *name, const struct GROUP_USERS_INFO_0 *r);
-enum ndr_err_code ndr_push_GROUP_USERS_INFO_1(struct ndr_push *ndr, int ndr_flags, const struct GROUP_USERS_INFO_1 *r);
-enum ndr_err_code ndr_pull_GROUP_USERS_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct GROUP_USERS_INFO_1 *r);
-void ndr_print_GROUP_USERS_INFO_1(struct ndr_print *ndr, const char *name, const struct GROUP_USERS_INFO_1 *r);
 enum ndr_err_code ndr_push_NET_DISPLAY_USER(struct ndr_push *ndr, int ndr_flags, const struct NET_DISPLAY_USER *r);
 enum ndr_err_code ndr_pull_NET_DISPLAY_USER(struct ndr_pull *ndr, int ndr_flags, struct NET_DISPLAY_USER *r);
 void ndr_print_NET_DISPLAY_USER(struct ndr_print *ndr, const char *name, const struct NET_DISPLAY_USER *r);
@@ -240,9 +57,6 @@
 enum ndr_err_code ndr_push_NET_DISPLAY_GROUP(struct ndr_push *ndr, int ndr_flags, const struct NET_DISPLAY_GROUP *r);
 enum ndr_err_code ndr_pull_NET_DISPLAY_GROUP(struct ndr_pull *ndr, int ndr_flags, struct NET_DISPLAY_GROUP *r);
 void ndr_print_NET_DISPLAY_GROUP(struct ndr_print *ndr, const char *name, const struct NET_DISPLAY_GROUP *r);
-enum ndr_err_code ndr_push_SHARE_INFO_1005_FLAGS(struct ndr_push *ndr, int ndr_flags, uint32_t r);
-enum ndr_err_code ndr_pull_SHARE_INFO_1005_FLAGS(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
-void ndr_print_SHARE_INFO_1005_FLAGS(struct ndr_print *ndr, const char *name, uint32_t r);
 enum ndr_err_code ndr_push_NetJoinDomain(struct ndr_push *ndr, int flags, const struct NetJoinDomain *r);
 enum ndr_err_code ndr_pull_NetJoinDomain(struct ndr_pull *ndr, int flags, struct NetJoinDomain *r);
 void ndr_print_NetJoinDomain(struct ndr_print *ndr, const char *name, int flags, const struct NetJoinDomain *r);
@@ -255,9 +69,6 @@
 enum ndr_err_code ndr_push_NetGetJoinableOUs(struct ndr_push *ndr, int flags, const struct NetGetJoinableOUs *r);
 enum ndr_err_code ndr_pull_NetGetJoinableOUs(struct ndr_pull *ndr, int flags, struct NetGetJoinableOUs *r);
 void ndr_print_NetGetJoinableOUs(struct ndr_print *ndr, const char *name, int flags, const struct NetGetJoinableOUs *r);
-enum ndr_err_code ndr_push_NetRenameMachineInDomain(struct ndr_push *ndr, int flags, const struct NetRenameMachineInDomain *r);
-enum ndr_err_code ndr_pull_NetRenameMachineInDomain(struct ndr_pull *ndr, int flags, struct NetRenameMachineInDomain *r);
-void ndr_print_NetRenameMachineInDomain(struct ndr_print *ndr, const char *name, int flags, const struct NetRenameMachineInDomain *r);
 enum ndr_err_code ndr_push_NetServerGetInfo(struct ndr_push *ndr, int flags, const struct NetServerGetInfo *r);
 enum ndr_err_code ndr_pull_NetServerGetInfo(struct ndr_pull *ndr, int flags, struct NetServerGetInfo *r);
 void ndr_print_NetServerGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetServerGetInfo *r);
@@ -282,112 +93,7 @@
 enum ndr_err_code ndr_push_NetUserEnum(struct ndr_push *ndr, int flags, const struct NetUserEnum *r);
 enum ndr_err_code ndr_pull_NetUserEnum(struct ndr_pull *ndr, int flags, struct NetUserEnum *r);
 void ndr_print_NetUserEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetUserEnum *r);
-enum ndr_err_code ndr_push_NetUserChangePassword(struct ndr_push *ndr, int flags, const struct NetUserChangePassword *r);
-enum ndr_err_code ndr_pull_NetUserChangePassword(struct ndr_pull *ndr, int flags, struct NetUserChangePassword *r);
-void ndr_print_NetUserChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct NetUserChangePassword *r);
-enum ndr_err_code ndr_push_NetUserGetInfo(struct ndr_push *ndr, int flags, const struct NetUserGetInfo *r);
-enum ndr_err_code ndr_pull_NetUserGetInfo(struct ndr_pull *ndr, int flags, struct NetUserGetInfo *r);
-void ndr_print_NetUserGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetUserGetInfo *r);
-enum ndr_err_code ndr_push_NetUserSetInfo(struct ndr_push *ndr, int flags, const struct NetUserSetInfo *r);
-enum ndr_err_code ndr_pull_NetUserSetInfo(struct ndr_pull *ndr, int flags, struct NetUserSetInfo *r);
-void ndr_print_NetUserSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetUserSetInfo *r);
-enum ndr_err_code ndr_push_NetUserGetGroups(struct ndr_push *ndr, int flags, const struct NetUserGetGroups *r);
-enum ndr_err_code ndr_pull_NetUserGetGroups(struct ndr_pull *ndr, int flags, struct NetUserGetGroups *r);
-void ndr_print_NetUserGetGroups(struct ndr_print *ndr, const char *name, int flags, const struct NetUserGetGroups *r);
-enum ndr_err_code ndr_push_NetUserSetGroups(struct ndr_push *ndr, int flags, const struct NetUserSetGroups *r);
-enum ndr_err_code ndr_pull_NetUserSetGroups(struct ndr_pull *ndr, int flags, struct NetUserSetGroups *r);
-void ndr_print_NetUserSetGroups(struct ndr_print *ndr, const char *name, int flags, const struct NetUserSetGroups *r);
-enum ndr_err_code ndr_push_NetUserGetLocalGroups(struct ndr_push *ndr, int flags, const struct NetUserGetLocalGroups *r);
-enum ndr_err_code ndr_pull_NetUserGetLocalGroups(struct ndr_pull *ndr, int flags, struct NetUserGetLocalGroups *r);
-void ndr_print_NetUserGetLocalGroups(struct ndr_print *ndr, const char *name, int flags, const struct NetUserGetLocalGroups *r);
-enum ndr_err_code ndr_push_NetUserModalsGet(struct ndr_push *ndr, int flags, const struct NetUserModalsGet *r);
-enum ndr_err_code ndr_pull_NetUserModalsGet(struct ndr_pull *ndr, int flags, struct NetUserModalsGet *r);
-void ndr_print_NetUserModalsGet(struct ndr_print *ndr, const char *name, int flags, const struct NetUserModalsGet *r);
-enum ndr_err_code ndr_push_NetUserModalsSet(struct ndr_push *ndr, int flags, const struct NetUserModalsSet *r);
-enum ndr_err_code ndr_pull_NetUserModalsSet(struct ndr_pull *ndr, int flags, struct NetUserModalsSet *r);
-void ndr_print_NetUserModalsSet(struct ndr_print *ndr, const char *name, int flags, const struct NetUserModalsSet *r);
 enum ndr_err_code ndr_push_NetQueryDisplayInformation(struct ndr_push *ndr, int flags, const struct NetQueryDisplayInformation *r);
 enum ndr_err_code ndr_pull_NetQueryDisplayInformation(struct ndr_pull *ndr, int flags, struct NetQueryDisplayInformation *r);
 void ndr_print_NetQueryDisplayInformation(struct ndr_print *ndr, const char *name, int flags, const struct NetQueryDisplayInformation *r);
-enum ndr_err_code ndr_push_NetGroupAdd(struct ndr_push *ndr, int flags, const struct NetGroupAdd *r);
-enum ndr_err_code ndr_pull_NetGroupAdd(struct ndr_pull *ndr, int flags, struct NetGroupAdd *r);
-void ndr_print_NetGroupAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupAdd *r);
-enum ndr_err_code ndr_push_NetGroupDel(struct ndr_push *ndr, int flags, const struct NetGroupDel *r);
-enum ndr_err_code ndr_pull_NetGroupDel(struct ndr_pull *ndr, int flags, struct NetGroupDel *r);
-void ndr_print_NetGroupDel(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupDel *r);
-enum ndr_err_code ndr_push_NetGroupEnum(struct ndr_push *ndr, int flags, const struct NetGroupEnum *r);
-enum ndr_err_code ndr_pull_NetGroupEnum(struct ndr_pull *ndr, int flags, struct NetGroupEnum *r);
-void ndr_print_NetGroupEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupEnum *r);
-enum ndr_err_code ndr_push_NetGroupSetInfo(struct ndr_push *ndr, int flags, const struct NetGroupSetInfo *r);
-enum ndr_err_code ndr_pull_NetGroupSetInfo(struct ndr_pull *ndr, int flags, struct NetGroupSetInfo *r);
-void ndr_print_NetGroupSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupSetInfo *r);
-enum ndr_err_code ndr_push_NetGroupGetInfo(struct ndr_push *ndr, int flags, const struct NetGroupGetInfo *r);
-enum ndr_err_code ndr_pull_NetGroupGetInfo(struct ndr_pull *ndr, int flags, struct NetGroupGetInfo *r);
-void ndr_print_NetGroupGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupGetInfo *r);
-enum ndr_err_code ndr_push_NetGroupAddUser(struct ndr_push *ndr, int flags, const struct NetGroupAddUser *r);
-enum ndr_err_code ndr_pull_NetGroupAddUser(struct ndr_pull *ndr, int flags, struct NetGroupAddUser *r);
-void ndr_print_NetGroupAddUser(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupAddUser *r);
-enum ndr_err_code ndr_push_NetGroupDelUser(struct ndr_push *ndr, int flags, const struct NetGroupDelUser *r);
-enum ndr_err_code ndr_pull_NetGroupDelUser(struct ndr_pull *ndr, int flags, struct NetGroupDelUser *r);
-void ndr_print_NetGroupDelUser(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupDelUser *r);
-enum ndr_err_code ndr_push_NetGroupGetUsers(struct ndr_push *ndr, int flags, const struct NetGroupGetUsers *r);
-enum ndr_err_code ndr_pull_NetGroupGetUsers(struct ndr_pull *ndr, int flags, struct NetGroupGetUsers *r);
-void ndr_print_NetGroupGetUsers(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupGetUsers *r);
-enum ndr_err_code ndr_push_NetGroupSetUsers(struct ndr_push *ndr, int flags, const struct NetGroupSetUsers *r);
-enum ndr_err_code ndr_pull_NetGroupSetUsers(struct ndr_pull *ndr, int flags, struct NetGroupSetUsers *r);
-void ndr_print_NetGroupSetUsers(struct ndr_print *ndr, const char *name, int flags, const struct NetGroupSetUsers *r);
-enum ndr_err_code ndr_push_NetLocalGroupAdd(struct ndr_push *ndr, int flags, const struct NetLocalGroupAdd *r);
-enum ndr_err_code ndr_pull_NetLocalGroupAdd(struct ndr_pull *ndr, int flags, struct NetLocalGroupAdd *r);
-void ndr_print_NetLocalGroupAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupAdd *r);
-enum ndr_err_code ndr_push_NetLocalGroupDel(struct ndr_push *ndr, int flags, const struct NetLocalGroupDel *r);
-enum ndr_err_code ndr_pull_NetLocalGroupDel(struct ndr_pull *ndr, int flags, struct NetLocalGroupDel *r);
-void ndr_print_NetLocalGroupDel(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupDel *r);
-enum ndr_err_code ndr_push_NetLocalGroupGetInfo(struct ndr_push *ndr, int flags, const struct NetLocalGroupGetInfo *r);
-enum ndr_err_code ndr_pull_NetLocalGroupGetInfo(struct ndr_pull *ndr, int flags, struct NetLocalGroupGetInfo *r);
-void ndr_print_NetLocalGroupGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupGetInfo *r);
-enum ndr_err_code ndr_push_NetLocalGroupSetInfo(struct ndr_push *ndr, int flags, const struct NetLocalGroupSetInfo *r);
-enum ndr_err_code ndr_pull_NetLocalGroupSetInfo(struct ndr_pull *ndr, int flags, struct NetLocalGroupSetInfo *r);
-void ndr_print_NetLocalGroupSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupSetInfo *r);
-enum ndr_err_code ndr_push_NetLocalGroupEnum(struct ndr_push *ndr, int flags, const struct NetLocalGroupEnum *r);
-enum ndr_err_code ndr_pull_NetLocalGroupEnum(struct ndr_pull *ndr, int flags, struct NetLocalGroupEnum *r);
-void ndr_print_NetLocalGroupEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupEnum *r);
-enum ndr_err_code ndr_push_NetLocalGroupAddMembers(struct ndr_push *ndr, int flags, const struct NetLocalGroupAddMembers *r);
-enum ndr_err_code ndr_pull_NetLocalGroupAddMembers(struct ndr_pull *ndr, int flags, struct NetLocalGroupAddMembers *r);
-void ndr_print_NetLocalGroupAddMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupAddMembers *r);
-enum ndr_err_code ndr_push_NetLocalGroupDelMembers(struct ndr_push *ndr, int flags, const struct NetLocalGroupDelMembers *r);
-enum ndr_err_code ndr_pull_NetLocalGroupDelMembers(struct ndr_pull *ndr, int flags, struct NetLocalGroupDelMembers *r);
-void ndr_print_NetLocalGroupDelMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupDelMembers *r);
-enum ndr_err_code ndr_push_NetLocalGroupGetMembers(struct ndr_push *ndr, int flags, const struct NetLocalGroupGetMembers *r);
-enum ndr_err_code ndr_pull_NetLocalGroupGetMembers(struct ndr_pull *ndr, int flags, struct NetLocalGroupGetMembers *r);
-void ndr_print_NetLocalGroupGetMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupGetMembers *r);
-enum ndr_err_code ndr_push_NetLocalGroupSetMembers(struct ndr_push *ndr, int flags, const struct NetLocalGroupSetMembers *r);
-enum ndr_err_code ndr_pull_NetLocalGroupSetMembers(struct ndr_pull *ndr, int flags, struct NetLocalGroupSetMembers *r);
-void ndr_print_NetLocalGroupSetMembers(struct ndr_print *ndr, const char *name, int flags, const struct NetLocalGroupSetMembers *r);
-enum ndr_err_code ndr_push_NetRemoteTOD(struct ndr_push *ndr, int flags, const struct NetRemoteTOD *r);
-enum ndr_err_code ndr_pull_NetRemoteTOD(struct ndr_pull *ndr, int flags, struct NetRemoteTOD *r);
-void ndr_print_NetRemoteTOD(struct ndr_print *ndr, const char *name, int flags, const struct NetRemoteTOD *r);
-enum ndr_err_code ndr_push_NetShareAdd(struct ndr_push *ndr, int flags, const struct NetShareAdd *r);
-enum ndr_err_code ndr_pull_NetShareAdd(struct ndr_pull *ndr, int flags, struct NetShareAdd *r);
-void ndr_print_NetShareAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetShareAdd *r);
-enum ndr_err_code ndr_push_NetShareDel(struct ndr_push *ndr, int flags, const struct NetShareDel *r);
-enum ndr_err_code ndr_pull_NetShareDel(struct ndr_pull *ndr, int flags, struct NetShareDel *r);
-void ndr_print_NetShareDel(struct ndr_print *ndr, const char *name, int flags, const struct NetShareDel *r);
-enum ndr_err_code ndr_push_NetShareEnum(struct ndr_push *ndr, int flags, const struct NetShareEnum *r);
-enum ndr_err_code ndr_pull_NetShareEnum(struct ndr_pull *ndr, int flags, struct NetShareEnum *r);
-void ndr_print_NetShareEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetShareEnum *r);
-enum ndr_err_code ndr_push_NetShareGetInfo(struct ndr_push *ndr, int flags, const struct NetShareGetInfo *r);
-enum ndr_err_code ndr_pull_NetShareGetInfo(struct ndr_pull *ndr, int flags, struct NetShareGetInfo *r);
-void ndr_print_NetShareGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetShareGetInfo *r);
-enum ndr_err_code ndr_push_NetShareSetInfo(struct ndr_push *ndr, int flags, const struct NetShareSetInfo *r);
-enum ndr_err_code ndr_pull_NetShareSetInfo(struct ndr_pull *ndr, int flags, struct NetShareSetInfo *r);
-void ndr_print_NetShareSetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetShareSetInfo *r);
-enum ndr_err_code ndr_push_NetFileClose(struct ndr_push *ndr, int flags, const struct NetFileClose *r);
-enum ndr_err_code ndr_pull_NetFileClose(struct ndr_pull *ndr, int flags, struct NetFileClose *r);
-void ndr_print_NetFileClose(struct ndr_print *ndr, const char *name, int flags, const struct NetFileClose *r);
-enum ndr_err_code ndr_push_NetFileGetInfo(struct ndr_push *ndr, int flags, const struct NetFileGetInfo *r);
-enum ndr_err_code ndr_pull_NetFileGetInfo(struct ndr_pull *ndr, int flags, struct NetFileGetInfo *r);
-void ndr_print_NetFileGetInfo(struct ndr_print *ndr, const char *name, int flags, const struct NetFileGetInfo *r);
-enum ndr_err_code ndr_push_NetFileEnum(struct ndr_push *ndr, int flags, const struct NetFileEnum *r);
-enum ndr_err_code ndr_pull_NetFileEnum(struct ndr_pull *ndr, int flags, struct NetFileEnum *r);
-void ndr_print_NetFileEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetFileEnum *r);
 #endif /* _HEADER_NDR_libnetapi */

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_nbt.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_nbt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_nbt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -266,7 +266,7 @@
 	ndr_print_struct(ndr, name, "nbt_rdata_netbios");
 	ndr->depth++;
 	ndr_print_uint16(ndr, "length", r->length);
-	ndr->print(ndr, "%s: ARRAY(%d)", "addresses", (int)r->length / 6);
+	ndr->print(ndr, "%s: ARRAY(%d)", "addresses", r->length / 6);
 	ndr->depth++;
 	for (cntr_addresses_0=0;cntr_addresses_0<r->length / 6;cntr_addresses_0++) {
 		char *idx_0=NULL;
@@ -448,7 +448,7 @@
 	ndr->depth++;
 	ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->num_names * 18 + 47:r->length);
 	ndr_print_uint8(ndr, "num_names", r->num_names);
-	ndr->print(ndr, "%s: ARRAY(%d)", "names", (int)r->num_names);
+	ndr->print(ndr, "%s: ARRAY(%d)", "names", r->num_names);
 	ndr->depth++;
 	for (cntr_names_0=0;cntr_names_0<r->num_names;cntr_names_0++) {
 		char *idx_0=NULL;
@@ -772,7 +772,7 @@
 		ndr_print_uint16(ndr, "ancount", r->ancount);
 		ndr_print_uint16(ndr, "nscount", r->nscount);
 		ndr_print_uint16(ndr, "arcount", r->arcount);
-		ndr->print(ndr, "%s: ARRAY(%d)", "questions", (int)r->qdcount);
+		ndr->print(ndr, "%s: ARRAY(%d)", "questions", r->qdcount);
 		ndr->depth++;
 		for (cntr_questions_0=0;cntr_questions_0<r->qdcount;cntr_questions_0++) {
 			char *idx_0=NULL;
@@ -782,7 +782,7 @@
 			}
 		}
 		ndr->depth--;
-		ndr->print(ndr, "%s: ARRAY(%d)", "answers", (int)r->ancount);
+		ndr->print(ndr, "%s: ARRAY(%d)", "answers", r->ancount);
 		ndr->depth++;
 		for (cntr_answers_0=0;cntr_answers_0<r->ancount;cntr_answers_0++) {
 			char *idx_0=NULL;
@@ -792,7 +792,7 @@
 			}
 		}
 		ndr->depth--;
-		ndr->print(ndr, "%s: ARRAY(%d)", "nsrecs", (int)r->nscount);
+		ndr->print(ndr, "%s: ARRAY(%d)", "nsrecs", r->nscount);
 		ndr->depth++;
 		for (cntr_nsrecs_0=0;cntr_nsrecs_0<r->nscount;cntr_nsrecs_0++) {
 			char *idx_0=NULL;
@@ -802,7 +802,7 @@
 			}
 		}
 		ndr->depth--;
-		ndr->print(ndr, "%s: ARRAY(%d)", "additional", (int)r->arcount);
+		ndr->print(ndr, "%s: ARRAY(%d)", "additional", r->arcount);
 		ndr->depth++;
 		for (cntr_additional_0=0;cntr_additional_0<r->arcount;cntr_additional_0++) {
 			char *idx_0=NULL;
@@ -1792,7 +1792,7 @@
 	ndr_print_string(ndr, "computer_name", r->computer_name);
 	ndr_print_string(ndr, "user_name", r->user_name);
 	ndr_print_string(ndr, "mailslot_name", r->mailslot_name);
-	ndr->print(ndr, "%s: ARRAY(%d)", "unknown", (int)2);
+	ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 2);
 	ndr->depth++;
 	for (cntr_unknown_0=0;cntr_unknown_0<2;cntr_unknown_0++) {
 		char *idx_0=NULL;
@@ -2254,7 +2254,7 @@
 	ndr_print_string(ndr, "unicode_pdc_name", r->unicode_pdc_name);
 	ndr_print_string(ndr, "unicode_domain", r->unicode_domain);
 	ndr_print_uint32(ndr, "db_count", r->db_count);
-	ndr->print(ndr, "%s: ARRAY(%d)", "dbchange", (int)r->db_count);
+	ndr->print(ndr, "%s: ARRAY(%d)", "dbchange", r->db_count);
 	ndr->depth++;
 	for (cntr_dbchange_0=0;cntr_dbchange_0<r->db_count;cntr_dbchange_0++) {
 		char *idx_0=NULL;
@@ -4274,7 +4274,7 @@
 	ndr->depth++;
 	ndr_print_uint8(ndr, "BackupCount", r->BackupCount);
 	ndr_print_uint32(ndr, "Token", r->Token);
-	ndr->print(ndr, "%s: ARRAY(%d)", "BackupServerList", (int)r->BackupCount);
+	ndr->print(ndr, "%s: ARRAY(%d)", "BackupServerList", r->BackupCount);
 	ndr->depth++;
 	for (cntr_BackupServerList_0=0;cntr_BackupServerList_0<r->BackupCount;cntr_BackupServerList_0++) {
 		char *idx_0=NULL;

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_ntsvcs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_ntsvcs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_ntsvcs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -688,48 +688,8 @@
 static enum ndr_err_code ndr_push_PNP_GetDeviceRegProp(struct ndr_push *ndr, int flags, const struct PNP_GetDeviceRegProp *r)
 {
 	if (flags & NDR_IN) {
-		if (r->in.devicepath == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.devicepath, CH_UTF16)));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.devicepath, CH_UTF16)));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.devicepath, ndr_charset_length(r->in.devicepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.property));
-		if (r->in.unknown1 == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.unknown1));
-		if (r->in.buffer_size == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
-		if (r->in.needed == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.needed));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown3));
 	}
 	if (flags & NDR_OUT) {
-		if (r->out.unknown1 == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.unknown1));
-		if (r->out.buffer == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, *r->out.buffer_size));
-		if (r->out.buffer_size == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
-		if (r->out.needed == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -737,89 +697,10 @@
 
 static enum ndr_err_code ndr_pull_PNP_GetDeviceRegProp(struct ndr_pull *ndr, int flags, struct PNP_GetDeviceRegProp *r)
 {
-	TALLOC_CTX *_mem_save_unknown1_0;
-	TALLOC_CTX *_mem_save_buffer_size_0;
-	TALLOC_CTX *_mem_save_needed_0;
 	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->in.devicepath));
-		NDR_CHECK(ndr_pull_array_length(ndr, &r->in.devicepath));
-		if (ndr_get_array_length(ndr, &r->in.devicepath) > ndr_get_array_size(ndr, &r->in.devicepath)) {
-			return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.devicepath), ndr_get_array_length(ndr, &r->in.devicepath));
-		}
-		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.devicepath), sizeof(uint16_t)));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.devicepath, ndr_get_array_length(ndr, &r->in.devicepath), sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.property));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.unknown1);
-		}
-		_mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown1, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.unknown1));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.buffer_size);
-		}
-		_mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer_size, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.needed);
-		}
-		_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.needed, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.needed));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown3));
-		NDR_PULL_ALLOC(ndr, r->out.unknown1);
-		*r->out.unknown1 = *r->in.unknown1;
-		NDR_PULL_ALLOC_N(ndr, r->out.buffer, *r->in.buffer_size);
-		memset(r->out.buffer, 0, (*r->in.buffer_size) * sizeof(*r->out.buffer));
-		NDR_PULL_ALLOC(ndr, r->out.buffer_size);
-		*r->out.buffer_size = *r->in.buffer_size;
-		NDR_PULL_ALLOC(ndr, r->out.needed);
-		*r->out.needed = *r->in.needed;
 	}
 	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.unknown1);
-		}
-		_mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.unknown1, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.unknown1));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
-		NDR_CHECK(ndr_pull_array_length(ndr, &r->out.buffer));
-		if (ndr_get_array_length(ndr, &r->out.buffer) > ndr_get_array_size(ndr, &r->out.buffer)) {
-			return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.buffer), ndr_get_array_length(ndr, &r->out.buffer));
-		}
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
-		}
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_length(ndr, &r->out.buffer)));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.buffer_size);
-		}
-		_mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer_size, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.buffer_size));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.needed);
-		}
-		_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-		if (r->out.buffer) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
-		}
-		if (r->out.buffer) {
-			NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
-		}
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -834,45 +715,11 @@
 	if (flags & NDR_IN) {
 		ndr_print_struct(ndr, "in", "PNP_GetDeviceRegProp");
 		ndr->depth++;
-		ndr_print_ptr(ndr, "devicepath", r->in.devicepath);
-		ndr->depth++;
-		ndr_print_string(ndr, "devicepath", r->in.devicepath);
 		ndr->depth--;
-		ndr_print_uint32(ndr, "property", r->in.property);
-		ndr_print_ptr(ndr, "unknown1", r->in.unknown1);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "unknown1", *r->in.unknown1);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer_size", r->in.buffer_size);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "buffer_size", *r->in.buffer_size);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "needed", r->in.needed);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "needed", *r->in.needed);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "unknown3", r->in.unknown3);
-		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "PNP_GetDeviceRegProp");
 		ndr->depth++;
-		ndr_print_ptr(ndr, "unknown1", r->out.unknown1);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "unknown1", *r->out.unknown1);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_array_uint8(ndr, "buffer", r->out.buffer, *r->out.buffer_size);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer_size", r->out.buffer_size);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "buffer_size", *r->out.buffer_size);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "needed", r->out.needed);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "needed", *r->out.needed);
-		ndr->depth--;
 		ndr_print_WERROR(ndr, "result", r->out.result);
 		ndr->depth--;
 	}

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -295,63 +295,6 @@
 	ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
-	ndr->depth--;
-}
-
 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
 {
 	if (flags & NDR_IN) {
@@ -1750,11 +1693,10 @@
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
 	}
 	if (flags & NDR_OUT) {
-		if (r->out.service_status == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
+		if (r->out.service_status) {
+			NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
 		if (r->out.bytes_needed == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
@@ -1770,7 +1712,9 @@
 
 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
 {
+	uint32_t _ptr_service_status;
 	TALLOC_CTX *_mem_save_service_0;
+	TALLOC_CTX *_mem_save_service_status_0;
 	TALLOC_CTX *_mem_save_bytes_needed_0;
 	TALLOC_CTX *_mem_save_services_returned_0;
 	if (flags & NDR_IN) {
@@ -1785,31 +1729,30 @@
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
-		if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
-		memset(r->out.service_status, 0, (r->in.buf_size) * sizeof(*r->out.service_status));
 		NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
 		ZERO_STRUCTP(r->out.bytes_needed);
 		NDR_PULL_ALLOC(ndr, r->out.services_returned);
 		ZERO_STRUCTP(r->out.services_returned);
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
+		if (_ptr_service_status) {
+			NDR_PULL_ALLOC(ndr, r->out.service_status);
+		} else {
+			r->out.service_status = NULL;
 		}
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
+		if (r->out.service_status) {
+			_mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
+			NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
+		}
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
 		}
 		_mem_save_bytes_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
 		NDR_PULL_SET_MEM_CTX(ndr, r->out.bytes_needed, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.bytes_needed));
-		if (*r->out.bytes_needed < 0 || *r->out.bytes_needed > 0x40000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bytes_needed_0, LIBNDR_FLAG_REF_ALLOC);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.services_returned);
@@ -1817,14 +1760,8 @@
 		_mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
 		NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
-		if (*r->out.services_returned < 0 || *r->out.services_returned > 0x40000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
-		if (r->out.service_status) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.buf_size));
-		}
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -1852,7 +1789,9 @@
 		ndr->depth++;
 		ndr_print_ptr(ndr, "service_status", r->out.service_status);
 		ndr->depth++;
-		ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.buf_size);
+		if (r->out.service_status) {
+			ndr_print_ENUM_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
+		}
 		ndr->depth--;
 		ndr_print_ptr(ndr, "bytes_needed", r->out.bytes_needed);
 		ndr->depth++;
@@ -2044,7 +1983,7 @@
 			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
 			NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 		}
-		NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
 	}
 	if (flags & NDR_OUT) {
 		if (r->out.handle == NULL) {
@@ -2102,7 +2041,7 @@
 			NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
 		}
-		NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
 		NDR_PULL_ALLOC(ndr, r->out.handle);
 		ZERO_STRUCTP(r->out.handle);
 	}
@@ -2141,7 +2080,7 @@
 			ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
 		}
 		ndr->depth--;
-		ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
+		ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -2168,7 +2107,7 @@
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
 		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
 	}
 	if (flags & NDR_OUT) {
 		if (r->out.handle == NULL) {
@@ -2201,7 +2140,7 @@
 		}
 		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
 		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
 		NDR_PULL_ALLOC(ndr, r->out.handle);
 		ZERO_STRUCTP(r->out.handle);
 	}
@@ -2233,7 +2172,7 @@
 		ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
 		ndr->depth--;
 		ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
-		ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
+		ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_svcctl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -106,8 +106,6 @@
 enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r);
 enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
 void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
-void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r);
 void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r);
 void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r);
 void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r);

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_winreg.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_winreg.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_winreg.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3185,7 +3185,7 @@
 		}
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
 		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
@@ -3226,7 +3226,7 @@
 		}
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
 		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
+		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
@@ -3258,7 +3258,7 @@
 		ndr->depth--;
 		ndr_print_uint32(ndr, "timeout", r->in.timeout);
 		ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
-		ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
+		ndr_print_uint8(ndr, "reboot", r->in.reboot);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -3876,7 +3876,7 @@
 		}
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
 		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
-		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
+		NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.reboot));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reason));
 	}
 	if (flags & NDR_OUT) {
@@ -3918,7 +3918,7 @@
 		}
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
 		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
-		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
+		NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.reboot));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reason));
 	}
 	if (flags & NDR_OUT) {
@@ -3951,7 +3951,7 @@
 		ndr->depth--;
 		ndr_print_uint32(ndr, "timeout", r->in.timeout);
 		ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
-		ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
+		ndr_print_uint8(ndr, "reboot", r->in.reboot);
 		ndr_print_uint32(ndr, "reason", r->in.reason);
 		ndr->depth--;
 	}

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_wkssvc.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_wkssvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_wkssvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5474,10 +5474,10 @@
 	const char *val = NULL;
 
 	switch (r) {
-		case NET_SETUP_UNKNOWN_STATUS: val = "NET_SETUP_UNKNOWN_STATUS"; break;
-		case NET_SETUP_UNJOINED: val = "NET_SETUP_UNJOINED"; break;
-		case NET_SETUP_WORKGROUP_NAME: val = "NET_SETUP_WORKGROUP_NAME"; break;
-		case NET_SETUP_DOMAIN_NAME: val = "NET_SETUP_DOMAIN_NAME"; break;
+		case NetSetupUnknownStatus: val = "NetSetupUnknownStatus"; break;
+		case NetSetupUnjoined: val = "NetSetupUnjoined"; break;
+		case NetSetupWorkgroupName: val = "NetSetupWorkgroupName"; break;
+		case NetSetupDomainName: val = "NetSetupDomainName"; break;
 	}
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -100,228 +100,3 @@
 	ndr->depth--;
 }
 
-_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_timestamp(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor_timestamp *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_changed));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->sd) {
-			NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_timestamp(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor_timestamp *r)
-{
-	uint32_t _ptr_sd;
-	TALLOC_CTX *_mem_save_sd_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
-		if (_ptr_sd) {
-			NDR_PULL_ALLOC(ndr, r->sd);
-		} else {
-			r->sd = NULL;
-		}
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_changed));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->sd) {
-			_mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
-			NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_security_descriptor_timestamp(struct ndr_print *ndr, const char *name, const struct security_descriptor_timestamp *r)
-{
-	ndr_print_struct(ndr, name, "security_descriptor_timestamp");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "sd", r->sd);
-	ndr->depth++;
-	if (r->sd) {
-		ndr_print_security_descriptor(ndr, "sd", r->sd);
-	}
-	ndr->depth--;
-	ndr_print_NTTIME(ndr, "last_changed", r->last_changed);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_xattr_NTACL_Info(struct ndr_push *ndr, int ndr_flags, const union xattr_NTACL_Info *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
-		switch (level) {
-			case 1: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
-			break; }
-
-			case 2: {
-				NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd_ts));
-			break; }
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		int level = ndr_push_get_switch_value(ndr, r);
-		switch (level) {
-			case 1:
-				if (r->sd) {
-					NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
-				}
-			break;
-
-			case 2:
-				if (r->sd_ts) {
-					NDR_CHECK(ndr_push_security_descriptor_timestamp(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_ts));
-				}
-			break;
-
-			default:
-				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_xattr_NTACL_Info(struct ndr_pull *ndr, int ndr_flags, union xattr_NTACL_Info *r)
-{
-	int level;
-	uint16_t _level;
-	TALLOC_CTX *_mem_save_sd_0;
-	TALLOC_CTX *_mem_save_sd_ts_0;
-	level = ndr_pull_get_switch_value(ndr, r);
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
-		if (_level != level) {
-			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
-		}
-		switch (level) {
-			case 1: {
-				uint32_t _ptr_sd;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
-				if (_ptr_sd) {
-					NDR_PULL_ALLOC(ndr, r->sd);
-				} else {
-					r->sd = NULL;
-				}
-			break; }
-
-			case 2: {
-				uint32_t _ptr_sd_ts;
-				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd_ts));
-				if (_ptr_sd_ts) {
-					NDR_PULL_ALLOC(ndr, r->sd_ts);
-				} else {
-					r->sd_ts = NULL;
-				}
-			break; }
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		switch (level) {
-			case 1:
-				if (r->sd) {
-					_mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
-					NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
-				}
-			break;
-
-			case 2:
-				if (r->sd_ts) {
-					_mem_save_sd_ts_0 = NDR_PULL_GET_MEM_CTX(ndr);
-					NDR_PULL_SET_MEM_CTX(ndr, r->sd_ts, 0);
-					NDR_CHECK(ndr_pull_security_descriptor_timestamp(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_ts));
-					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_ts_0, 0);
-				}
-			break;
-
-			default:
-				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_xattr_NTACL_Info(struct ndr_print *ndr, const char *name, const union xattr_NTACL_Info *r)
-{
-	int level;
-	level = ndr_print_get_switch_value(ndr, r);
-	ndr_print_union(ndr, name, level, "xattr_NTACL_Info");
-	switch (level) {
-		case 1:
-			ndr_print_ptr(ndr, "sd", r->sd);
-			ndr->depth++;
-			if (r->sd) {
-				ndr_print_security_descriptor(ndr, "sd", r->sd);
-			}
-			ndr->depth--;
-		break;
-
-		case 2:
-			ndr_print_ptr(ndr, "sd_ts", r->sd_ts);
-			ndr->depth++;
-			if (r->sd_ts) {
-				ndr_print_security_descriptor_timestamp(ndr, "sd_ts", r->sd_ts);
-			}
-			ndr->depth--;
-		break;
-
-		default:
-			ndr_print_bad_level(ndr, name, level);
-	}
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_xattr_NTACL(struct ndr_push *ndr, int ndr_flags, const struct xattr_NTACL *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version));
-		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->version));
-		NDR_CHECK(ndr_push_xattr_NTACL_Info(ndr, NDR_SCALARS, &r->info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_push_xattr_NTACL_Info(ndr, NDR_BUFFERS, &r->info));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_xattr_NTACL(struct ndr_pull *ndr, int ndr_flags, struct xattr_NTACL *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version));
-		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version));
-		NDR_CHECK(ndr_pull_xattr_NTACL_Info(ndr, NDR_SCALARS, &r->info));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		NDR_CHECK(ndr_pull_xattr_NTACL_Info(ndr, NDR_BUFFERS, &r->info));
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_xattr_NTACL(struct ndr_print *ndr, const char *name, const struct xattr_NTACL *r)
-{
-	ndr_print_struct(ndr, name, "xattr_NTACL");
-	ndr->depth++;
-	ndr_print_uint16(ndr, "version", r->version);
-	ndr_print_set_switch_value(ndr, &r->info, r->version);
-	ndr_print_xattr_NTACL_Info(ndr, "info", &r->info);
-	ndr->depth--;
-}
-

Modified: branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ndr_xattr.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -13,11 +13,4 @@
 enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattrs *r);
 enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattrs *r);
 void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, const struct tdb_xattrs *r);
-enum ndr_err_code ndr_push_security_descriptor_timestamp(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor_timestamp *r);
-enum ndr_err_code ndr_pull_security_descriptor_timestamp(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor_timestamp *r);
-void ndr_print_security_descriptor_timestamp(struct ndr_print *ndr, const char *name, const struct security_descriptor_timestamp *r);
-void ndr_print_xattr_NTACL_Info(struct ndr_print *ndr, const char *name, const union xattr_NTACL_Info *r);
-enum ndr_err_code ndr_push_xattr_NTACL(struct ndr_push *ndr, int ndr_flags, const struct xattr_NTACL *r);
-enum ndr_err_code ndr_pull_xattr_NTACL(struct ndr_pull *ndr, int ndr_flags, struct xattr_NTACL *r);
-void ndr_print_xattr_NTACL(struct ndr_print *ndr, const char *name, const struct xattr_NTACL *r);
 #endif /* _HEADER_NDR_xattr */

Modified: branches/samba/upstream/source/librpc/gen_ndr/ntsvcs.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/ntsvcs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/ntsvcs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5,7 +5,6 @@
 #ifndef _HEADER_ntsvcs
 #define _HEADER_ntsvcs
 
-#define DEV_REGPROP_DESC	( 1 )
 struct PNP_HwProfInfo {
 	uint32_t unknown1;
 	uint16_t unknown2[160];
@@ -131,19 +130,6 @@
 
 struct PNP_GetDeviceRegProp {
 	struct {
-		const char *devicepath;/* [ref,charset(UTF16)] */
-		uint32_t property;
-		uint32_t unknown3;
-		uint32_t *unknown1;/* [ref] */
-		uint32_t *buffer_size;/* [ref] */
-		uint32_t *needed;/* [ref] */
-	} in;
-
-	struct {
-		uint8_t *buffer;/* [ref,length_is(*buffer_size),size_is(*buffer_size)] */
-		uint32_t *unknown1;/* [ref] */
-		uint32_t *buffer_size;/* [ref] */
-		uint32_t *needed;/* [ref] */
 		WERROR result;
 	} out;
 

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_dfs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_dfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_dfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1750,5 +1750,5 @@
 
 NTSTATUS rpc_netdfs_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netdfs", "netdfs", &ndr_table_netdfs.syntax_id, api_netdfs_cmds, sizeof(api_netdfs_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netdfs", "netdfs", api_netdfs_cmds, sizeof(api_netdfs_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_dssetup.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_dssetup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_dssetup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -841,5 +841,5 @@
 
 NTSTATUS rpc_dssetup_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "dssetup", "dssetup", &ndr_table_dssetup.syntax_id, api_dssetup_cmds, sizeof(api_dssetup_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "dssetup", "dssetup", api_dssetup_cmds, sizeof(api_dssetup_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_echo.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_echo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_echo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -801,5 +801,5 @@
 
 NTSTATUS rpc_rpcecho_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "rpcecho", "rpcecho", &ndr_table_rpcecho.syntax_id, api_rpcecho_cmds, sizeof(api_rpcecho_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "rpcecho", "rpcecho", api_rpcecho_cmds, sizeof(api_rpcecho_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_epmapper.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_epmapper.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_epmapper.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -642,5 +642,5 @@
 
 NTSTATUS rpc_epmapper_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "epmapper", "epmapper", &ndr_table_epmapper.syntax_id, api_epmapper_cmds, sizeof(api_epmapper_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "epmapper", "epmapper", api_epmapper_cmds, sizeof(api_epmapper_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_eventlog.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_eventlog.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_eventlog.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1838,5 +1838,5 @@
 
 NTSTATUS rpc_eventlog_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "eventlog", "eventlog", &ndr_table_eventlog.syntax_id, api_eventlog_cmds, sizeof(api_eventlog_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "eventlog", "eventlog", api_eventlog_cmds, sizeof(api_eventlog_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_initshutdown.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_initshutdown.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_initshutdown.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -242,5 +242,5 @@
 
 NTSTATUS rpc_initshutdown_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "initshutdown", "initshutdown", &ndr_table_initshutdown.syntax_id, api_initshutdown_cmds, sizeof(api_initshutdown_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "initshutdown", "initshutdown", api_initshutdown_cmds, sizeof(api_initshutdown_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_lsa.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_lsa.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_lsa.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -6371,5 +6371,5 @@
 
 NTSTATUS rpc_lsarpc_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "lsarpc", "lsarpc", &ndr_table_lsarpc.syntax_id, api_lsarpc_cmds, sizeof(api_lsarpc_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "lsarpc", "lsarpc", api_lsarpc_cmds, sizeof(api_lsarpc_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_netlogon.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_netlogon.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_netlogon.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3862,5 +3862,5 @@
 
 NTSTATUS rpc_netlogon_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netlogon", "netlogon", &ndr_table_netlogon.syntax_id, api_netlogon_cmds, sizeof(api_netlogon_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "netlogon", "netlogon", api_netlogon_cmds, sizeof(api_netlogon_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_ntsvcs.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_ntsvcs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_ntsvcs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1007,16 +1007,6 @@
 		NDR_PRINT_IN_DEBUG(PNP_GetDeviceRegProp, r);
 	}
 
-	ZERO_STRUCT(r->out);
-	r->out.unknown1 = r->in.unknown1;
-	r->out.buffer = talloc_zero_array(r, uint8_t, *r->out.buffer_size);
-	if (r->out.buffer == NULL) {
-		talloc_free(r);
-		return false;
-	}
-
-	r->out.buffer_size = r->in.buffer_size;
-	r->out.needed = r->in.needed;
 	r->out.result = _PNP_GetDeviceRegProp(p, r);
 
 	if (p->rng_fault_state) {
@@ -4865,5 +4855,5 @@
 
 NTSTATUS rpc_ntsvcs_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "ntsvcs", "ntsvcs", &ndr_table_ntsvcs.syntax_id, api_ntsvcs_cmds, sizeof(api_ntsvcs_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "ntsvcs", "ntsvcs", api_ntsvcs_cmds, sizeof(api_ntsvcs_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_samr.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_samr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_samr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5478,5 +5478,5 @@
 
 NTSTATUS rpc_samr_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "samr", "samr", &ndr_table_samr.syntax_id, api_samr_cmds, sizeof(api_samr_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "samr", "samr", api_samr_cmds, sizeof(api_samr_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_srvsvc.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_srvsvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_srvsvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -4195,5 +4195,5 @@
 
 NTSTATUS rpc_srvsvc_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "srvsvc", "srvsvc", &ndr_table_srvsvc.syntax_id, api_srvsvc_cmds, sizeof(api_srvsvc_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "srvsvc", "srvsvc", api_srvsvc_cmds, sizeof(api_srvsvc_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_svcctl.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_svcctl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_svcctl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1047,7 +1047,7 @@
 	}
 
 	ZERO_STRUCT(r->out);
-	r->out.service_status = talloc_zero_array(r, uint8_t, r->in.buf_size);
+	r->out.service_status = talloc_zero(r, struct ENUM_SERVICE_STATUS);
 	if (r->out.service_status == NULL) {
 		talloc_free(r);
 		return false;
@@ -3617,5 +3617,5 @@
 
 NTSTATUS rpc_svcctl_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "svcctl", "svcctl", &ndr_table_svcctl.syntax_id, api_svcctl_cmds, sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "svcctl", "svcctl", api_svcctl_cmds, sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_winreg.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_winreg.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_winreg.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -2768,5 +2768,5 @@
 
 NTSTATUS rpc_winreg_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "winreg", "winreg", &ndr_table_winreg.syntax_id, api_winreg_cmds, sizeof(api_winreg_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "winreg", "winreg", api_winreg_cmds, sizeof(api_winreg_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/srv_wkssvc.c
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/srv_wkssvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/srv_wkssvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -2408,5 +2408,5 @@
 
 NTSTATUS rpc_wkssvc_init(void)
 {
-	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "wkssvc", "wkssvc", &ndr_table_wkssvc.syntax_id, api_wkssvc_cmds, sizeof(api_wkssvc_cmds) / sizeof(struct api_struct));
+	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "wkssvc", "wkssvc", api_wkssvc_cmds, sizeof(api_wkssvc_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/librpc/gen_ndr/svcctl.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/svcctl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/svcctl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -79,26 +79,7 @@
 #endif
 ;
 
-/* bitmap svcctl_MgrAccessMask */
-#define SC_RIGHT_MGR_CONNECT ( 0x0001 )
-#define SC_RIGHT_MGR_CREATE_SERVICE ( 0x0002 )
-#define SC_RIGHT_MGR_ENUMERATE_SERVICE ( 0x0004 )
-#define SC_RIGHT_MGR_LOCK ( 0x0008 )
-#define SC_RIGHT_MGR_QUERY_LOCK_STATUS ( 0x0010 )
-#define SC_RIGHT_MGR_MODIFY_BOOT_CONFIG ( 0x0020 )
 
-/* bitmap svcctl_ServiceAccessMask */
-#define SC_RIGHT_SVC_QUERY_CONFIG ( 0x0001 )
-#define SC_RIGHT_SVC_CHANGE_CONFIG ( 0x0002 )
-#define SC_RIGHT_SVC_QUERY_STATUS ( 0x0004 )
-#define SC_RIGHT_SVC_ENUMERATE_DEPENDENTS ( 0x0008 )
-#define SC_RIGHT_SVC_START ( 0x0010 )
-#define SC_RIGHT_SVC_STOP ( 0x0020 )
-#define SC_RIGHT_SVC_PAUSE_CONTINUE ( 0x0040 )
-#define SC_RIGHT_SVC_INTERROGATE ( 0x0080 )
-#define SC_RIGHT_SVC_USER_DEFINED_CONTROL ( 0x0100 )
-
-
 struct svcctl_CloseServiceHandle {
 	struct {
 		struct policy_handle *handle;/* [ref] */
@@ -293,13 +274,13 @@
 	struct {
 		struct policy_handle *service;/* [ref] */
 		uint32_t state;
-		uint32_t buf_size;/* [range(0,0x40000)] */
+		uint32_t buf_size;
 	} in;
 
 	struct {
-		uint8_t *service_status;/* [ref,size_is(buf_size)] */
-		uint32_t *bytes_needed;/* [ref,range(0,0x40000)] */
-		uint32_t *services_returned;/* [ref,range(0,0x40000)] */
+		struct ENUM_SERVICE_STATUS *service_status;/* [unique] */
+		uint32_t *bytes_needed;/* [ref] */
+		uint32_t *services_returned;/* [ref] */
 		WERROR result;
 	} out;
 

Modified: branches/samba/upstream/source/librpc/gen_ndr/winreg.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/winreg.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/winreg.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -479,7 +479,7 @@
 		struct initshutdown_String *message;/* [unique] */
 		uint32_t timeout;
 		uint8_t force_apps;
-		uint8_t do_reboot;
+		uint8_t reboot;
 	} in;
 
 	struct {
@@ -567,7 +567,7 @@
 		struct initshutdown_String *message;/* [unique] */
 		uint32_t timeout;
 		uint8_t force_apps;
-		uint8_t do_reboot;
+		uint8_t reboot;
 		uint32_t reason;
 	} in;
 

Modified: branches/samba/upstream/source/librpc/gen_ndr/wkssvc.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/wkssvc.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/wkssvc.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -439,17 +439,17 @@
 enum wkssvc_NetJoinStatus
 #ifndef USE_UINT_ENUMS
  {
-	NET_SETUP_UNKNOWN_STATUS=0,
-	NET_SETUP_UNJOINED=1,
-	NET_SETUP_WORKGROUP_NAME=2,
-	NET_SETUP_DOMAIN_NAME=3
+	NetSetupUnknownStatus=0,
+	NetSetupUnjoined=1,
+	NetSetupWorkgroupName=2,
+	NetSetupDomainName=3
 }
 #else
  { __donnot_use_enum_wkssvc_NetJoinStatus=0x7FFFFFFF}
-#define NET_SETUP_UNKNOWN_STATUS ( 0 )
-#define NET_SETUP_UNJOINED ( 1 )
-#define NET_SETUP_WORKGROUP_NAME ( 2 )
-#define NET_SETUP_DOMAIN_NAME ( 3 )
+#define NetSetupUnknownStatus ( 0 )
+#define NetSetupUnjoined ( 1 )
+#define NetSetupWorkgroupName ( 2 )
+#define NetSetupDomainName ( 3 )
 #endif
 ;
 

Modified: branches/samba/upstream/source/librpc/gen_ndr/xattr.h
===================================================================
--- branches/samba/upstream/source/librpc/gen_ndr/xattr.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/gen_ndr/xattr.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -5,7 +5,6 @@
 #ifndef _HEADER_xattr
 #define _HEADER_xattr
 
-#define XATTR_NTACL_NAME	( "security.NTACL" )
 struct tdb_xattr {
 	const char * name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
 	DATA_BLOB value;
@@ -16,19 +15,4 @@
 	struct tdb_xattr *xattrs;
 }/* [public] */;
 
-struct security_descriptor_timestamp {
-	struct security_descriptor *sd;/* [unique] */
-	NTTIME last_changed;
-}/* [public] */;
-
-union xattr_NTACL_Info {
-	struct security_descriptor *sd;/* [unique,case] */
-	struct security_descriptor_timestamp *sd_ts;/* [unique,case(2)] */
-}/* [switch_type(uint16)] */;
-
-struct xattr_NTACL {
-	uint16_t version;
-	union xattr_NTACL_Info info;/* [switch_is(version)] */
-}/* [public] */;
-
 #endif /* _HEADER_xattr */

Modified: branches/samba/upstream/source/librpc/idl/dfs.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/dfs.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/dfs.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -14,8 +14,7 @@
 	typedef [v1_enum] enum {
 		DFS_MANAGER_VERSION_NT4		= 1,
 		DFS_MANAGER_VERSION_W2K		= 2,
-		DFS_MANAGER_VERSION_W2K3	= 4,
-		DFS_MANAGER_VERSION_W2K8	= 6
+		DFS_MANAGER_VERSION_W2K3	= 4
 	} dfs_ManagerVersion;
 
 	[public] void dfs_GetManagerVersion(

Deleted: branches/samba/upstream/source/librpc/idl/drsblobs.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/drsblobs.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/drsblobs.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,436 +0,0 @@
-#include "idl_types.h"
-
-import "drsuapi.idl", "misc.idl";
-
-[
-  uuid("12345778-1234-abcd-0001-00000001"),
-  version(0.0),
-  pointer_default(unique),
-  helpstring("Active Directory Replication LDAP Blobs")
-]
-interface drsblobs {
-	typedef bitmap drsuapi_DsReplicaSyncOptions drsuapi_DsReplicaSyncOptions;
-	typedef bitmap drsuapi_DsReplicaNeighbourFlags drsuapi_DsReplicaNeighbourFlags;
-	typedef [v1_enum] enum drsuapi_DsAttributeId drsuapi_DsAttributeId;
-
-	/*
-	 * replPropertyMetaData
-	 * w2k  uses version 1
-	 * w2k3 uses version 1
-	 */
-	typedef struct {
-		drsuapi_DsAttributeId attid;
-		uint32 version;
-		NTTIME_1sec originating_change_time;
-		GUID originating_invocation_id;
-		hyper originating_usn;
-		hyper local_usn;
-	} replPropertyMetaData1;
-
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		replPropertyMetaData1 array[count];
-	} replPropertyMetaDataCtr1;
-
-	typedef [nodiscriminant] union {
-		[case(1)] replPropertyMetaDataCtr1 ctr1;
-	} replPropertyMetaDataCtr;
-
-	typedef [public] struct {
-		uint32 version;
-		uint32 reserved;
-		[switch_is(version)] replPropertyMetaDataCtr ctr;
-	} replPropertyMetaDataBlob;
-
-	void decode_replPropertyMetaData(
-		[in] replPropertyMetaDataBlob blob
-		);
-
-	/*
-	 * replUpToDateVector
-	 * w2k  uses version 1
-	 * w2k3 uses version 2
-	 */
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		drsuapi_DsReplicaCursor cursors[count];
-	} replUpToDateVectorCtr1;
-
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		drsuapi_DsReplicaCursor2 cursors[count];
-	} replUpToDateVectorCtr2;
-
-	typedef [nodiscriminant] union {
-		[case(1)] replUpToDateVectorCtr1 ctr1;
-		[case(2)] replUpToDateVectorCtr2 ctr2;
-	} replUpToDateVectorCtr;
-
-	typedef [public] struct {
-		uint32 version;
-		uint32 reserved;
-		[switch_is(version)] replUpToDateVectorCtr ctr;
-	} replUpToDateVectorBlob;
-
-	void decode_replUpToDateVector(
-		[in] replUpToDateVectorBlob blob
-		);
-
-	/*
-	 * repsFrom/repsTo
-	 * w2k  uses version 1
-	 * w2k3 uses version 1
-	 */
-	typedef [public,gensize] struct {
-		[value(strlen(dns_name)+1)] uint32 __dns_name_size;
-		[charset(DOS)] uint8 dns_name[__dns_name_size];
-	} repsFromTo1OtherInfo;
-
-	typedef [public,gensize,flag(NDR_PAHEX)] struct {
-		/* this includes the 8 bytes of the repsFromToBlob header */
-		[value(ndr_size_repsFromTo1(this, ndr->flags)+8)] uint32 blobsize;
-		uint32 consecutive_sync_failures;
-		NTTIME_1sec last_success;
-		NTTIME_1sec last_attempt;
-		WERROR result_last_attempt;
-		[relative] repsFromTo1OtherInfo *other_info;
-		[value(ndr_size_repsFromTo1OtherInfo(other_info, ndr->flags))] uint32 other_info_length;
-		drsuapi_DsReplicaNeighbourFlags replica_flags;
-		uint8 schedule[84];
-		uint32 reserved;
-		drsuapi_DsReplicaHighWaterMark highwatermark;
-		GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		GUID transport_guid;
-	} repsFromTo1;
-
-	typedef [nodiscriminant] union {
-		[case(1)] repsFromTo1 ctr1;
-	} repsFromTo;
-
-	typedef [public] struct {
-		uint32 version;
-		uint32 reserved;
-		[switch_is(version)] repsFromTo ctr;
-	} repsFromToBlob;
-
-	void decode_repsFromTo(
-		[in] repsFromToBlob blob
-		);
-
-	/*
-	 * partialAttributeSet
-	 * w2k  uses version 1
-	 * w2k3 uses version 1
-	 */
-	typedef struct {
-		uint32 count;
-		drsuapi_DsAttributeId array[count];
-	} partialAttributeSetCtr1;
-
-	typedef [nodiscriminant] union {
-		[case(1)] partialAttributeSetCtr1 ctr1;
-	} partialAttributeSetCtr;
-
-	typedef [public] struct {
-		uint32 version;
-		uint32 reserved;
-		[switch_is(version)] partialAttributeSetCtr ctr;
-	} partialAttributeSetBlob;
-
-	void decode_partialAttributeSet(
-		[in] partialAttributeSetBlob blob
-		);
-
-	/*
-	 * prefixMap
-	 * w2k  unknown
-	 * w2k3 unknown
-	 * samba4 uses 0x44534442 'DSDB'
-	 *
-	 * as we windows don't return the prefixMap attribute when you ask for
-	 * we don't know the format, but the attribute is not replicated
-	 * so that we can choose our own format...
-	 */
-	typedef [v1_enum] enum {
-		PREFIX_MAP_VERSION_DSDB = 0x44534442
-	} prefixMapVersion;
-
-	typedef [nodiscriminant] union {
-		[case(PREFIX_MAP_VERSION_DSDB)] drsuapi_DsReplicaOIDMapping_Ctr dsdb;
-	} prefixMapCtr;
-
-	typedef [public] struct {
-		prefixMapVersion version;
-		uint32 reserved;
-		[switch_is(version)] prefixMapCtr ctr;
-	} prefixMapBlob;
-
-	void decode_prefixMap(
-		[in] prefixMapBlob blob
-		);
-
-	/*
-	 * the cookie for the LDAP dirsync control
-	 */
-	typedef [nodiscriminant,gensize] union {
-		[case(0)];
-		[default] replUpToDateVectorBlob uptodateness_vector;
-	} ldapControlDirSyncExtra;
-
-	typedef struct {
-		[value(3)] uint32 u1;
-		NTTIME time;
-		uint32 u2;
-		uint32 u3;
-		[value(ndr_size_ldapControlDirSyncExtra(&extra, extra.uptodateness_vector.version, 0))]
-			uint32 extra_length;
-		drsuapi_DsReplicaHighWaterMark highwatermark;
-		GUID guid1;
-		[switch_is(extra_length)] ldapControlDirSyncExtra extra;
-	} ldapControlDirSyncBlob;
-
-	typedef [public,relative_base] struct {
-		[charset(DOS),value("MSDS")] uint8 msds[4];
-		[subcontext(0)] ldapControlDirSyncBlob blob;
-	} ldapControlDirSyncCookie;
-
-	void decode_ldapControlDirSync(
-		[in] ldapControlDirSyncCookie cookie
-		);
-
-	typedef struct {
-		[value(2*strlen_m(name))] uint16 name_len;
-		[value(strlen(data))] uint16 data_len;
-		uint16 reserved; /* 2 for 'Packages', 1 for 'Primary:*', but should be ignored */
-		[charset(UTF16)] uint8 name[name_len];
-		/*
-		 * the data field contains data as HEX strings
-		 *
-		 * 'Packages':
-		 *   data contains the list of packages
-		 *   as non termiated UTF16 strings with
-		 *   a UTF16 NULL byte as separator
-		 *
-		 * 'Primary:Kerberos-Newer-Keys':
-		 *    ...
-		 *
-		 * 'Primary:Kerberos':
-		 *    ...
-		 *
-		 * 'Primary:WDigest':
-		 *    ...
-		 *
-		 * 'Primary:CLEARTEXT':
-		 *    data contains the cleartext password
-		 *    as UTF16 string encoded as HEX string
-		 */
-		[charset(DOS)] uint8 data[data_len];
-	} supplementalCredentialsPackage;
-
-	/* this are 0x30 (48) whitespaces (0x20) */
-	const string SUPPLEMENTAL_CREDENTIALS_PREFIX = "                                                ";
-
-	typedef [flag(NDR_PAHEX)] enum {
-		SUPPLEMENTAL_CREDENTIALS_SIGNATURE = 0x0050
-	} supplementalCredentialsSignature;
-
-	typedef [gensize] struct {
-		[value(SUPPLEMENTAL_CREDENTIALS_PREFIX),charset(UTF16)] uint16 prefix[0x30];
-		[value(SUPPLEMENTAL_CREDENTIALS_SIGNATURE)] supplementalCredentialsSignature signature;
-		uint16 num_packages;
-		supplementalCredentialsPackage packages[num_packages];
-	} supplementalCredentialsSubBlob;
-
-	typedef [public] struct {
-		[value(0)] uint32 unknown1;
-		[value(ndr_size_supplementalCredentialsSubBlob(&sub, ndr->flags))] uint32 __ndr_size;
-		[value(0)] uint32 unknown2;
-		[subcontext(0),subcontext_size(__ndr_size)] supplementalCredentialsSubBlob sub;
-		[value(0)] uint8 unknown3;
-	} supplementalCredentialsBlob;
-
-	void decode_supplementalCredentials(
-		[in] supplementalCredentialsBlob blob
-		);
-
-	typedef [public] struct {
-		[flag(STR_NOTERM|NDR_REMAINING)] string_array names;
-	} package_PackagesBlob;
-
-	void decode_Packages(
-		[in] package_PackagesBlob blob
-		);
-
-	typedef struct {
-		[value(2*strlen_m(string))] uint16 length;
-		[value(2*strlen_m(string))] uint16 size;
-		[relative,subcontext(0),subcontext_size(size),flag(STR_NOTERM|NDR_REMAINING)] string *string;
-	} package_PrimaryKerberosString;
-
-	typedef struct {
-		[value(0)] uint16 reserved1;
-		[value(0)] uint16 reserved2;
-		[value(0)] uint32 reserved3;
-		uint32 keytype;
-		[value((value?value->length:0))] uint32 value_len;
-		[relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value;
-	} package_PrimaryKerberosKey3;
-
-	typedef struct {
-		uint16 num_keys;
-		uint16 num_old_keys;
-		package_PrimaryKerberosString salt;
-		package_PrimaryKerberosKey3 keys[num_keys];
-		package_PrimaryKerberosKey3 old_keys[num_old_keys];
-		[value(0)] uint32 padding1;
-		[value(0)] uint32 padding2;
-		[value(0)] uint32 padding3;
-		[value(0)] uint32 padding4;
-		[value(0)] uint32 padding5;
-	} package_PrimaryKerberosCtr3;
-
-	typedef struct {
-		[value(0)] uint16 reserved1;
-		[value(0)] uint16 reserved2;
-		[value(0)] uint32 reserved3;
-		uint32 iteration_count;
-		uint32 keytype;
-		[value((value?value->length:0))] uint32 value_len;
-		[relative,subcontext(0),subcontext_size(value_len),flag(NDR_REMAINING)] DATA_BLOB *value;
-	} package_PrimaryKerberosKey4;
-
-	typedef struct {
-		uint16 num_keys;
-		[value(0)] uint16 num_service_keys;
-		uint16 num_old_keys;
-		uint16 num_older_keys;
-		package_PrimaryKerberosString salt;
-		uint32 default_iteration_count;
-		package_PrimaryKerberosKey4 keys[num_keys];
-		package_PrimaryKerberosKey4 service_keys[num_service_keys];
-		package_PrimaryKerberosKey4 old_keys[num_old_keys];
-		package_PrimaryKerberosKey4 older_keys[num_older_keys];
-	} package_PrimaryKerberosCtr4;
-
-	typedef [nodiscriminant] union {
-		[case(3)] package_PrimaryKerberosCtr3 ctr3;
-		[case(4)] package_PrimaryKerberosCtr4 ctr4;
-	} package_PrimaryKerberosCtr;
-
-	typedef [public] struct {
-		uint16 version;
-		[value(0)] uint16 flags;
-		[switch_is(version)] package_PrimaryKerberosCtr ctr;
-	} package_PrimaryKerberosBlob;
-
-	void decode_PrimaryKerberos(
-		[in] package_PrimaryKerberosBlob blob
-		);
-
-	typedef [public] struct {
-		[flag(STR_NOTERM|NDR_REMAINING)] string cleartext;
-	} package_PrimaryCLEARTEXTBlob;
-
-	void decode_PrimaryCLEARTEXT(
-		[in] package_PrimaryCLEARTEXTBlob blob
-		);
-
-	typedef [flag(NDR_PAHEX)] struct {
-		uint8 hash[16];
-	} package_PrimaryWDigestHash;
-
-	typedef [public] struct {
-		[value(0x31)] uint16 unknown1;
-		[value(0x01)] uint8  unknown2;
-		uint8  num_hashes;
-		[value(0)] uint32 unknown3;
-		[value(0)] udlong uuknown4;
-		package_PrimaryWDigestHash hashes[num_hashes];
-	} package_PrimaryWDigestBlob;
-
-	void decode_PrimaryWDigest(
-		[in] package_PrimaryWDigestBlob blob
-		);
-
-	typedef struct {
-		NTTIME time1;
-		uint32 unknown1;
-		/*
-		 * the secret value is encoded as UTF16 if it's a string
-		 * but krb5 trusts have random bytes here, so converting to UTF16
-		 * mayfail...
-		 *
-		 * TODO: We should try handle the case of a random buffer in all places
-		 *       we deal with cleartext passwords from windows
-		 *
-		 * so we don't use this:
-		 *
-		 * uint32 value_len;
-		 * [charset(UTF16)] uint8 value[value_len];
-		 */
-		DATA_BLOB value;
-		[flag(NDR_ALIGN4)] DATA_BLOB _pad;
-	} trustAuthInOutSecret1;
-
-	typedef struct {
-		[relative] trustAuthInOutSecret1 *value1;
-		[relative] trustAuthInOutSecret1 *value2;
-	} trustAuthInOutCtr1;
-
-	typedef struct {
-		NTTIME time1;
-		uint32 unknown1;
-		DATA_BLOB value;
-		NTTIME time2;
-		uint32 unknown2;
-		uint32 unknown3;
-		uint32 unknown4;
-		[flag(NDR_ALIGN4)] DATA_BLOB _pad;
-	} trustAuthInOutSecret2V1;
-
-	typedef struct {
-		NTTIME time1;
-		uint32 unknown1;
-		DATA_BLOB value;
-		NTTIME time2;
-		uint32 unknown2;
-		uint32 unknown3;
-		[flag(NDR_ALIGN4)] DATA_BLOB _pad;
-	} trustAuthInOutSecret2V2;
-
-	typedef struct {
-		[relative] trustAuthInOutSecret2V1 *value1;
-		[relative] trustAuthInOutSecret2V2 *value2;
-	} trustAuthInOutCtr2;
-
-	typedef [nodiscriminant] union {
-		[case(1)] trustAuthInOutCtr1 ctr1;
-		[case(2)] trustAuthInOutCtr2 ctr2;
-	} trustAuthInOutCtr;
-
-	typedef [public] struct {
-		uint32 version;
-		[switch_is(version)] trustAuthInOutCtr ctr;
-	} trustAuthInOutBlob;
-
-	void decode_trustAuthInOut(
-		[in] trustAuthInOutBlob blob
-		);
-
-	typedef [public] struct {
-		uint32 marker;
-		DATA_BLOB data;
-	} DsCompressedChunk;
-
-	typedef [public] struct {
-		DsCompressedChunk chunks[5];
-	} DsCompressedBlob;
-
-	void decode_DsCompressed(
-		[in] DsCompressedBlob blob
-		);
-}

Deleted: branches/samba/upstream/source/librpc/idl/drsuapi.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/drsuapi.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/drsuapi.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,1601 +0,0 @@
-#include "idl_types.h"
-
-import "security.idl", "misc.idl", "samr.idl";
-
-[ 
-  uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
-  version(4.0),
-  endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]", "ncacn_ip_tcp:", "ncalrpc:"),
-  authservice("ldap"),
-  helpstring("Active Directory Replication"),
-  helper("librpc/ndr/ndr_drsuapi.h"),
-  pointer_default(unique)
-]
-interface drsuapi
-{
-	typedef bitmap samr_GroupAttrs samr_GroupAttrs;
-
-	/*****************/
-        /* Function 0x00 */
-        typedef [bitmap32bit] bitmap {
-		DRSUAPI_SUPPORTED_EXTENSION_BASE			= 0x00000001,
-		DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION		= 0x00000002,
-		DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI			= 0x00000004,
-		DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2			= 0x00000008,
-		DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS		= 0x00000010,
-		DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1			= 0x00000020,
-		DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION	= 0x00000040,
-		DRSUAPI_SUPPORTED_EXTENSION_00000080			= 0x00000080,
-		DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE			= 0x00000100,
-		DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2			= 0x00000200,
-		DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION	= 0x00000400,
-		DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2			= 0x00000800,
-		DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD= 0x00001000,
-		DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND			= 0x00002000,
-		DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO		= 0x00004000,
-		DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION		= 0x00008000,
-		DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01			= 0x00010000,
-		DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP	= 0x00020000,
-		DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY		= 0x00040000,
-		DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3			= 0x00080000,
-		DRSUAPI_SUPPORTED_EXTENSION_00100000			= 0x00100000,
-		DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2		= 0x00200000,
-		DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6		= 0x00400000,
-		DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS		= 0x00800000,
-		DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8		= 0x01000000,
-		DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5		= 0x02000000,
-		DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6		= 0x04000000,
-		/*
-		 * the following 3 have the same value
-		 * repadmin.exe /bind says that
-		 */
-		DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3		= 0x08000000,
-		DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7		= 0x08000000,
-		DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT		= 0x08000000,
-		DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS		= 0x10000000,
-		DRSUAPI_SUPPORTED_EXTENSION_20000000			= 0x20000000,
-		DRSUAPI_SUPPORTED_EXTENSION_40000000			= 0x40000000,
-		DRSUAPI_SUPPORTED_EXTENSION_80000000			= 0x80000000
-	} drsuapi_SupportedExtensions;
-
-	typedef [bitmap32bit] bitmap {
-		DRSUAPI_SUPPORTED_EXTENSION_ADAM			= 0x00000001,
-		DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2			= 0x00000002
-	} drsuapi_SupportedExtensionsExt;
-
-	/* this is used by w2k */
-	typedef struct {
-		drsuapi_SupportedExtensions supported_extensions;
-		GUID site_guid;
-		uint32 pid;
-	} drsuapi_DsBindInfo24;
-
-	/* this is used by w2k3 */
-	typedef struct {
-		drsuapi_SupportedExtensions supported_extensions;
-		GUID site_guid;
-		uint32 pid;
-		uint32 repl_epoch;
-	} drsuapi_DsBindInfo28;
-
-	/* this is used by w2k8 */
-	typedef struct {
-		drsuapi_SupportedExtensions supported_extensions;
-		GUID site_guid;
-		uint32 pid;
-		uint32 repl_epoch;
-		drsuapi_SupportedExtensionsExt supported_extensions_ext;
-		GUID config_dn_guid;
-	} drsuapi_DsBindInfo48;
-
-	typedef struct {
-		[flag(NDR_REMAINING)] DATA_BLOB info;
-	} drsuapi_DsBindInfoFallBack;
-
-	typedef [nodiscriminant] union {
-		[case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24;
-		[case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28;
-		[case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48;
-		[default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;
-	} drsuapi_DsBindInfo;
-
-	/* the drsuapi_DsBindInfoCtr was this before
-	 * typedef [flag(NDR_PAHEX)] struct {
-	 *	[range(1,10000)] uint32 length;
-	 *	[size_is(length)] uint8 data[];
-	 * } drsuapi_DsBindInfo;
-	 *
-	 * but we don't want the caller to manually decode this blob,
-	 * so we're doing it here
-	 */
-
-	typedef struct {
-		[range(1,10000)] uint32 length;
-		[switch_is(length)] drsuapi_DsBindInfo info;
-	} drsuapi_DsBindInfoCtr;
-
-	/* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
-	 * 
-	 * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
-	 */
-	const char *DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
-	/* 
-	 * this magic guid are needed to fetch the whole tree with drsuapi_DsGetNCChanges()
-	 * as administrator and this values are also used in the destination_dsa_guid field
-	 * of drsuapi_DsGetNCChangesReq5/8 and the source_dsa_guid is zero.
-	 */
-	const char *DRSUAPI_DS_BIND_GUID_W2K	= "6abec3d1-3054-41c8-a362-5a0c5b7d5d71";
-	const char *DRSUAPI_DS_BIND_GUID_W2K3	= "6afab99c-6e26-464a-975f-f58f105218bc";
-
-	[public] WERROR drsuapi_DsBind(
-		[in,unique]	    GUID *bind_guid,
-		[in,out,unique]    drsuapi_DsBindInfoCtr *bind_info,
-		[out]   policy_handle *bind_handle
-		);
-
-	/*****************/
-        /* Function 0x01 */
-	WERROR drsuapi_DsUnbind(
-		[in,out] policy_handle *bind_handle
-		);
-
-	/*****************/
-	/* Function 0x02 */
-	typedef [public,gensize] struct {
-		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags)-4)] uint32 __ndr_size;
-		[value(ndr_size_dom_sid28(&sid, ndr->flags))]  uint32 __ndr_size_sid;
-		GUID guid;
-		dom_sid28 sid;
-		[value(strlen_m(dn))] uint32 __ndr_size_dn;
-		[charset(UTF16),size_is(__ndr_size_dn+1)] uint16 dn[];
-	} drsuapi_DsReplicaObjectIdentifier;
-
-	typedef [public] bitmap {
-		DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION	= 0x00000001,
-		DRSUAPI_DS_REPLICA_SYNC_WRITEABLE		= 0x00000002,
-		DRSUAPI_DS_REPLICA_SYNC_PERIODIC		= 0x00000004,
-		DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING	= 0x00000008,
-		DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES		= 0x00000010,
-		DRSUAPI_DS_REPLICA_SYNC_FULL			= 0x00000020,
-		DRSUAPI_DS_REPLICA_SYNC_URGENT			= 0x00000040,
-		DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD		= 0x00000080,
-		DRSUAPI_DS_REPLICA_SYNC_FORCE			= 0x00000100,
-		DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE		= 0x00000200,
-		DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED		= 0x00000400,
-		DRSUAPI_DS_REPLICA_SYNC_TWO_WAY			= 0x00000800,
-		DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY		= 0x00001000,
-		DRSUAPI_DS_REPLICA_SYNC_INITIAL			= 0x00002000,
-		DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION		= 0x00004000,
-		DRSUAPI_DS_REPLICA_SYNC_ABANDONED		= 0x00008000,
-		DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS	= 0x00010000,
-		DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET	= 0x00020000,
-		DRSUAPI_DS_REPLICA_SYNC_REQUEUE			= 0x00040000,
-		DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION		= 0x00080000,
-		DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA	= 0x00100000,
-		DRSUAPI_DS_REPLICA_SYNC_CRITICAL		= 0x00200000,
-		DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS	= 0x00400000,
-		DRSUAPI_DS_REPLICA_SYNC_PREEMPTED		= 0x00800000
-	} drsuapi_DsReplicaSyncOptions;
-
-	typedef struct {
-		drsuapi_DsReplicaObjectIdentifier *naming_context;
-		GUID source_dsa_guid;
-		astring *other_info; /* I assume this is related to the repsFromTo1OtherInfo dns_name */
-		drsuapi_DsReplicaSyncOptions options;
-	} drsuapi_DsReplicaSyncRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsReplicaSyncRequest1 req1;
-	} drsuapi_DsReplicaSyncRequest;
-
-	WERROR drsuapi_DsReplicaSync(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,switch_is(level)] drsuapi_DsReplicaSyncRequest req
-		);
-
-	/*****************/
-	/* Function 0x03 */
-	typedef [public] struct {
-		hyper tmp_highest_usn; /* updated after each object update */
-		hyper reserved_usn;
-		hyper highest_usn; /* updated after a full replication cycle */
-	} drsuapi_DsReplicaHighWaterMark;
-
-	typedef [public] struct {
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		hyper highest_usn;  /* updated after a full replication cycle */
-	} drsuapi_DsReplicaCursor;
-
-	typedef struct {
-		[value(1)] uint32 version;
-		[value(0)] uint32 reserved1;
-		[range(0,0x100000)] uint32 count;
-		[value(0)] uint32 reserved2;
-		[size_is(count)] drsuapi_DsReplicaCursor cursors[];
-	} drsuapi_DsReplicaCursorCtrEx;
-
-	typedef [public] bitmap {
-		/* the _WRITEABLE flag indicates a replication with all attributes
-		 *
-		 * --metze
-		 */
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE				= 0x00000010,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP			= 0x00000020,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS			= 0x00000040,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_USE_ASYNC_INTERSIDE_TRANSPORT	= 0x00000080,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_TWO_WAY_SYNC			= 0x00000200,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS		= 0x00000800,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS			= 0x00001000, /* was 0x00010000, */
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_NEXT_PACKET			= 0x00002000, /* was 0x00020000, */
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED			= 0x00200000,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED				= 0x01000000,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS	= 0x04000000,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC		= 0x08000000,
-		/* 
-		 * the following NOTE applies to DsGetNCChangesRequest5:
-		 *  - the data is only compressed when 10 or more objects are replicated
-		 *  - but there could also be a size limit of 35 KBytes or something like that
-		 *  - the reply is DsGetNCChangesCtr2
-		 *  - maybe the same applies to DsGetNCChangesRequest8...
-		 *
-		 *  --metze
-		 */
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES			= 0x10000000,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS		= 0x20000000,
-		DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET		= 0x40000000
-	} drsuapi_DsReplicaNeighbourFlags;
-
-	typedef [flag(NDR_PAHEX),v1_enum] enum {
-		DRSUAPI_EXOP_NONE				= 0x00000000,
-		DRSUAPI_EXOP_FSMO_REQ_ROLE			= 0x00000001,
-		DRSUAPI_EXOP_FSMO_RID_ALLOC			= 0x00000002,
-		DRSUAPI_EXOP_FSMO_RID_REQ_ROLE			= 0x00000003,
-		DRSUAPI_EXOP_FSMO_REQ_PDC			= 0x00000004,
-		DRSUAPI_EXOP_FSMO_ABANDON_ROLE			= 0x00000005,
-		DRSUAPI_EXOP_REPL_OBJ				= 0x00000006,
-		DRSUAPI_EXOP_REPL_SECRET			= 0x00000007
-	} drsuapi_DsExtendedOperation;
-
-	typedef [flag(NDR_PAHEX),v1_enum] enum {
-		DRSUAPI_EXOP_ERR_NONE				= 0x00000000,
-		DRSUAPI_EXOP_ERR_SUCCESS			= 0x00000001,
-		DRSUAPI_EXOP_ERR_UNKNOWN_OP			= 0x00000002,
-		DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER			= 0x00000003,
-		DRSUAPI_EXOP_ERR_UPDATE_ERR			= 0x00000004,
-		DRSUAPI_EXOP_ERR_EXCEPTION			= 0x00000005,
-		DRSUAPI_EXOP_ERR_UNKNOWN_CALLER			= 0x00000006,
-		DRSUAPI_EXOP_ERR_RID_ALLOC			= 0x00000007,
-		DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED		= 0x00000008,
-		DRSUAPI_EXOP_ERR_FMSO_PENDING_OP		= 0x00000009,
-		DRSUAPI_EXOP_ERR_MISMATCH			= 0x0000000A,
-		DRSUAPI_EXOP_ERR_COULDNT_CONTACT		= 0x0000000B,
-		DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES		= 0x0000000C,
-		DRSUAPI_EXOP_ERR_DIR_ERROR			= 0x0000000D,
-		DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS		= 0x0000000E,
-		DRSUAPI_EXOP_ERR_ACCESS_DENIED			= 0x0000000F,
-		DRSUAPI_EXOP_ERR_PARAM_ERROR			= 0x00000010
-	} drsuapi_DsExtendedError;
-
-	typedef struct {
-		GUID destination_dsa_guid;
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		[ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
-		drsuapi_DsReplicaHighWaterMark highwatermark;
-		drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
-		drsuapi_DsReplicaNeighbourFlags replica_flags;
-		uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
-		uint32 max_ndr_size; /* w2k3 seems to ignore this */
-		drsuapi_DsExtendedOperation extended_op;
-		hyper fsmo_info;
-	} drsuapi_DsGetNCChangesRequest5;
-
-	/*
-	 * In DRSUAPI all attributes with syntax 2.5.5.2
-	 * are identified by uint32 values
-	 *
-	 * the following table shows the mapping used between the two representations
-	 * e.g. - objectClass 'nTDSDSA' has governsID: 1.2.840.113556.1.5.7000.47
-	 *        and a UINT32-ID of '0x0017002F'.
-	 *      - so the OID 1.2.840.113556.1.5.7000.47 is splitted into a
-	 *        OID-prefix: 1.2.840.113556.1.5.7000
-	 *	  and a value: 47 => 0x2F
-	 *      - the mapping table gives a UINT32-prefix: 0x00170000
-	 *      - and the UINT32-ID is 0x0017002F = 0x00170000 | 0x2F
-	 *
-	 * This prefix mapping table is replied in the drsuapi_DsReplicaOIDMapping_Ctr
-	 * array. The following are the default mappings of w2k3
-	 *
-	 * OID-prefix			=> UINT32-Id prefix
-	 *
-	 * 2.5.4.*			=> 0x00000000 (standard attributes RFC2256 core.schema)
-	 * 2.5.6.*			=> 0x00010000 (standard object classes RFC2256 core.schema)
-	 * 1.2.840.113556.1.2.*   	=> 0x00020000
-	 * 1.2.840.113556.1.3.*		=> 0x00030000
-	 * 2.5.5.*			=> 0x00080000 (attributeSyntax OID's)
-	 * 1.2.840.113556.1.4.*		=> 0x00090000
-	 * 1.2.840.113556.1.5.*		=> 0x000A0000
-	 * 2.16.840.1.113730.3.*	=> 0x00140000
-	 * 0.9.2342.19200300.100.1.*	=> 0x00150000
-	 * 2.16.840.1.113730.3.1.*	=> 0x00160000
-	 * 1.2.840.113556.1.5.7000.*	=> 0x00170000
-	 * 2.5.21.*			=> 0x00180000 (attrs for SubSchema)
-	 * 2.5.18.*			=> 0x00190000 (createTimeStamp,modifyTimeStamp, SubSchema)
-	 * 2.5.20.*			=> 0x001A0000
-	 * 1.3.6.1.4.1.1466.101.119.*	=> 0x001B0000 (dynamicObject, entryTTL)
-	 * 2.16.840.1.113730.3.2.*	=> 0x001C0000
-	 * 1.3.6.1.4.1.250.1.*		=> 0x001D0000
-	 * 1.2.840.113549.1.9.*   	=> 0x001E0000 (unstructuredAddress,unstructuredName)
-	 * 0.9.2342.19200300.100.4.*	=> 0x001F0000
-	 *
-	 * Here's a list of used 'attributeSyntax' OID's
-	 *
-	 * 2.5.5.1	=> Object(DS-DN) string
-	 *		   struct drsuapi_DsObjectIdentifier3
-	 *
-	 * 2.5.5.2	=> OID-string
-	 *		=> all values are represented as uint32 values in drsuapi
-	 *		=> governsID, attributeID and attributeSyntax returned as OID-Strings in LDAP
-	 *		=> mayContain, mustContain and all other attributes with 2.5.5.2 syntax
-	 *		   are returned as attribute names
-	 *
-	 * 2.5.5.4	=> String(Teletex) case-insensitive string with teletex charset
-	 *
-	 * 2.5.5.5	=> String(IA5) case-sensitive string
-	 *
-	 * 2.5.5.6	=> String(Numeric)
-	 *		=> eg. internationalISDNNumber
-	 *
-	 * 2.5.5.7	=> Object(DN-Binary) B:<byte count>:<bytes>:<object DN>
-	 *		=> e.g. wellKnownObjects
-	 *
-	 * 2.5.5.8	=> BOOL
-	 *
-	 * 2.5.5.9	=> int32
-	 *
-	 * 2.5.5.10	=> DATA_BLOB
-	 *		=> struct GUID
-	 *
-	 * 2.5.5.11	=> LDAP timestring
-	 *		=> NTTIME_1sec
-	 *
-	 * 2.5.5.12	=> String(Unicode) case-insensitive string
-	 *		=> 'standard strings'
-	 *
-	 * 2.5.5.13	=> Object(Presentation-Address) string
-	 *		=> used in objectClass applicationEntity
-	 *
-	 * 2.5.5.14	=> Object(DN-String) S:<char count>:<string>:<object DN>
-	 *		=> not used
-	 *
-	 * 2.5.5.15	=> ntSecurityDescriptor
-	 *
-	 * 2.5.5.16	=> int64
-	 *
-	 * 2.5.5.17	=> dom_sid
-	 */
-	typedef [nopush,nopull] struct {
-		[range(0,10000),value(ndr_size_drsuapi_DsReplicaOID_oid(oid, 0))] uint32 __ndr_size;
-		[size_is(__ndr_size),charset(DOS)] uint8 *oid; /* it's encoded with asn1_write_OID_String() */
-	} drsuapi_DsReplicaOID;
-
-	typedef struct {
-		uint32 id_prefix;
-		drsuapi_DsReplicaOID oid;
-	} drsuapi_DsReplicaOIDMapping;
-
-	typedef [public] struct {
-		[range(0,0x100000)] uint32 num_mappings;
-		[size_is(num_mappings)] drsuapi_DsReplicaOIDMapping *mappings;
-	} drsuapi_DsReplicaOIDMapping_Ctr;
-
-	typedef [flag(NDR_PAHEX),v1_enum] enum {
-		DRSUAPI_OBJECTCLASS_top			= 0x00010000,
-		DRSUAPI_OBJECTCLASS_classSchema		= 0x0003000d,
-		DRSUAPI_OBJECTCLASS_attributeSchema	= 0x0003000e
-	} drsuapi_DsObjectClassId;
-
-	typedef [flag(NDR_PAHEX),v1_enum,public] enum {
-		DRSUAPI_ATTRIBUTE_objectClass			= 0x00000000,
-		DRSUAPI_ATTRIBUTE_description			= 0x0000000d,
-		DRSUAPI_ATTRIBUTE_member			= 0x0000001f,
-		DRSUAPI_ATTRIBUTE_instanceType			= 0x00020001,
-		DRSUAPI_ATTRIBUTE_whenCreated			= 0x00020002,
-		DRSUAPI_ATTRIBUTE_hasMasterNCs			= 0x0002000e,
-		DRSUAPI_ATTRIBUTE_governsID			= 0x00020016,
-		DRSUAPI_ATTRIBUTE_attributeID			= 0x0002001e,
-		DRSUAPI_ATTRIBUTE_attributeSyntax		= 0x00020020,
-		DRSUAPI_ATTRIBUTE_isSingleValued		= 0x00020021,
-		DRSUAPI_ATTRIBUTE_rangeLower			= 0x00020022,
-		DRSUAPI_ATTRIBUTE_rangeUpper			= 0x00020023,
-		DRSUAPI_ATTRIBUTE_dMDLocation			= 0x00020024,
-		DRSUAPI_ATTRIBUTE_objectVersion			= 0x0002004c,
-		DRSUAPI_ATTRIBUTE_invocationId			= 0x00020073,
-		DRSUAPI_ATTRIBUTE_showInAdvancedViewOnly	= 0x000200a9,
-		DRSUAPI_ATTRIBUTE_adminDisplayName		= 0x000200c2,
-		DRSUAPI_ATTRIBUTE_adminDescription		= 0x000200e2,
-		DRSUAPI_ATTRIBUTE_oMSyntax			= 0x000200e7,
-		DRSUAPI_ATTRIBUTE_ntSecurityDescriptor		= 0x00020119,
-		DRSUAPI_ATTRIBUTE_searchFlags			= 0x0002014e,
-		DRSUAPI_ATTRIBUTE_lDAPDisplayName		= 0x000201cc,
-		DRSUAPI_ATTRIBUTE_name				= 0x00090001,
-		DRSUAPI_ATTRIBUTE_userAccountControl		= 0x00090008,
-		DRSUAPI_ATTRIBUTE_currentValue			= 0x0009001b,
-		DRSUAPI_ATTRIBUTE_homeDirectory			= 0x0009002c,
-		DRSUAPI_ATTRIBUTE_homeDrive			= 0x0009002d,
-		DRSUAPI_ATTRIBUTE_scriptPath			= 0x0009003e,
-		DRSUAPI_ATTRIBUTE_profilePath			= 0x0009008b,
-		DRSUAPI_ATTRIBUTE_objectSid			= 0x00090092,
-		DRSUAPI_ATTRIBUTE_schemaIDGUID			= 0x00090094,
-		DRSUAPI_ATTRIBUTE_dBCSPwd			= 0x00090037,/* lmPwdHash */
-		DRSUAPI_ATTRIBUTE_logonHours			= 0x00090040,
-		DRSUAPI_ATTRIBUTE_userWorkstations		= 0x00090056,
-		DRSUAPI_ATTRIBUTE_unicodePwd			= 0x0009005a,/* ntPwdHash */
-		DRSUAPI_ATTRIBUTE_ntPwdHistory			= 0x0009005e,
-		DRSUAPI_ATTRIBUTE_priorValue			= 0x00090064,
-		DRSUAPI_ATTRIBUTE_supplementalCredentials	= 0x0009007d,
-		DRSUAPI_ATTRIBUTE_trustAuthIncoming		= 0x00090081,
-		DRSUAPI_ATTRIBUTE_trustAuthOutgoing		= 0x00090087,
-		DRSUAPI_ATTRIBUTE_lmPwdHistory			= 0x000900a0,
-		DRSUAPI_ATTRIBUTE_sAMAccountName		= 0x000900dd,
-		DRSUAPI_ATTRIBUTE_sAMAccountType		= 0x0009012e,
-		DRSUAPI_ATTRIBUTE_fSMORoleOwner			= 0x00090171,
-		DRSUAPI_ATTRIBUTE_systemFlags			= 0x00090177,
-		DRSUAPI_ATTRIBUTE_serverReference		= 0x00090203,
-		DRSUAPI_ATTRIBUTE_serverReferenceBL		= 0x00090204,
-		DRSUAPI_ATTRIBUTE_initialAuthIncoming		= 0x0009021b,
-		DRSUAPI_ATTRIBUTE_initialAuthOutgoing		= 0x0009021c,
-		DRSUAPI_ATTRIBUTE_wellKnownObjects		= 0x0009026a,
-		DRSUAPI_ATTRIBUTE_dNSHostName			= 0x0009026b,
-		DRSUAPI_ATTRIBUTE_isMemberOfPartialAttributeSet	= 0x0009027f,
-		DRSUAPI_ATTRIBUTE_userPrincipalName		= 0x00090290,
-		DRSUAPI_ATTRIBUTE_groupType			= 0x000902ee,
-		DRSUAPI_ATTRIBUTE_servicePrincipalName		= 0x00090303,
-		DRSUAPI_ATTRIBUTE_objectCategory		= 0x0009030e,
-		DRSUAPI_ATTRIBUTE_gPLink			= 0x0009037b,
-		DRSUAPI_ATTRIBUTE_msDS_Behavior_Version		= 0x000905b3,
-		DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber		= 0x000906f6,		
-		DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs		= 0x0009071c,
-		DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs		= 0x0009072c
-	} drsuapi_DsAttributeId;
-
-	typedef struct {
-		[value(1)] uint32 version;
-		[value(0)] uint32 reserved1;
-		[range(1,0x100000)] uint32 num_attids;
-		[size_is(num_attids)] drsuapi_DsAttributeId attids[];
-	} drsuapi_DsPartialAttributeSet;
-
-	typedef struct {
-		GUID destination_dsa_guid;
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		[ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
-		drsuapi_DsReplicaHighWaterMark highwatermark;
-		drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
-		drsuapi_DsReplicaNeighbourFlags replica_flags;
-		uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
-		uint32 max_ndr_size; /* w2k3 seems to ignore this */
-		drsuapi_DsExtendedOperation extended_op;
-		hyper fsmo_info;
-		drsuapi_DsPartialAttributeSet *partial_attribute_set;
-		drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;
-		drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-	} drsuapi_DsGetNCChangesRequest8;
-
-	typedef [switch_type(int32)] union {
-		[case(5)] drsuapi_DsGetNCChangesRequest5 req5;
-		[case(8)] drsuapi_DsGetNCChangesRequest8 req8;
-	} drsuapi_DsGetNCChangesRequest;
-
-	typedef [public] struct {
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		hyper highest_usn;  /* updated after a full replication cycle */
-		NTTIME last_sync_success;
-	} drsuapi_DsReplicaCursor2;
-
-	typedef struct {
-		[value(2)] uint32 version;
-		[value(0)] uint32 reserved1;
-		[range(0,0x100000)] uint32 count;
-		[value(0)] uint32 reserved2;
-		[size_is(count)] drsuapi_DsReplicaCursor2 cursors[];
-	} drsuapi_DsReplicaCursor2CtrEx;
-
-	/* Generic DATA_BLOB values */
-	typedef struct {
-		[range(0,10485760),value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size;
-		DATA_BLOB *blob;
-	} drsuapi_DsAttributeValue;
-
-	typedef struct {
-		[range(0,10485760)] uint32 num_values;
-		[size_is(num_values)] drsuapi_DsAttributeValue *values;
-	} drsuapi_DsAttributeValueCtr;
-
-	/* DN String values */
-	typedef [public,gensize] struct {
-		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags))] uint32 __ndr_size;
-		[value(ndr_size_dom_sid28(&sid,ndr->flags))]  uint32 __ndr_size_sid;
-		GUID guid;
-		dom_sid28 sid;
-		[value(strlen_m(dn))] uint32 __ndr_size_dn;
-		[charset(UTF16)] uint16 dn[__ndr_size_dn+1];
-	} drsuapi_DsReplicaObjectIdentifier3;
-
-	typedef [public,gensize] struct {
-		[value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary(r, ndr->flags))] uint32 __ndr_size;
-		[value(ndr_size_dom_sid28(&sid,ndr->flags))]  uint32 __ndr_size_sid;
-		GUID guid;
-		dom_sid28 sid;
-		[value(strlen_m(dn))] uint32 __ndr_size_dn;
-		[charset(UTF16)] uint16 dn[__ndr_size_dn+1];
-		[value(binary.length + 4)] uint32 __ndr_size_binary;
-		[flag(NDR_REMAINING)] DATA_BLOB binary;
-	} drsuapi_DsReplicaObjectIdentifier3Binary;
-
-	typedef [public] struct {
-		drsuapi_DsAttributeId attid;
-		drsuapi_DsAttributeValueCtr value_ctr;
-	} drsuapi_DsReplicaAttribute;
-
-	typedef struct {
-		[range(0,1048576)] uint32 num_attributes;
-		[size_is(num_attributes)]  drsuapi_DsReplicaAttribute *attributes;
-	} drsuapi_DsReplicaAttributeCtr;
-
-	typedef [public] bitmap {
-		DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER	= 0x00000001,
-		DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC	= 0x00000002,
-		DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY	= 0x00010000
-	} drsuapi_DsReplicaObjectFlags;
-
-	typedef [public] struct {
-		drsuapi_DsReplicaObjectIdentifier *identifier;
-		drsuapi_DsReplicaObjectFlags flags;
-		drsuapi_DsReplicaAttributeCtr attribute_ctr;
-	} drsuapi_DsReplicaObject;
-
-	typedef struct {
-		uint32 version;
-		NTTIME_1sec originating_change_time;
-		GUID originating_invocation_id;
-		hyper originating_usn;
-	} drsuapi_DsReplicaMetaData;
-
-	typedef [public] struct {
-		[range(0,1048576)] uint32 count;
-		[size_is(count)] drsuapi_DsReplicaMetaData meta_data[];
-	} drsuapi_DsReplicaMetaDataCtr;
-
-	typedef [public,noprint] struct {
-		drsuapi_DsReplicaObjectListItemEx *next_object;
-		drsuapi_DsReplicaObject object;
-		boolean32 is_nc_prefix;
-		GUID *parent_object_guid;
-		drsuapi_DsReplicaMetaDataCtr *meta_data_ctr;
-	} drsuapi_DsReplicaObjectListItemEx;
-
-	typedef [public,gensize] struct {
-		GUID source_dsa_guid; /* the 'objectGUID' field of the CN=NTDS Settings object */
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		drsuapi_DsReplicaObjectIdentifier *naming_context;
-		drsuapi_DsReplicaHighWaterMark old_highwatermark;
-		drsuapi_DsReplicaHighWaterMark new_highwatermark;
-		drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
-		drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-		drsuapi_DsExtendedError extended_ret; /* w2k sends the nc_object_count value here */
-		uint32 object_count;
-		/* this +55 is sometimes +56, so I don't know where this comes from... --metze */
-		[value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] uint32 __ndr_size;
-		drsuapi_DsReplicaObjectListItemEx *first_object;
-		boolean32 more_data;
-	} drsuapi_DsGetNCChangesCtr1;
-
-	/*
-	 * if the DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE flag
-	 * isn't there it means the value is deleted
-	 */
-	typedef [public] bitmap {
-		DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE	= 0x00000001
-	} drsuapi_DsLinkedAttributeFlags;
-
-	typedef [public] struct {
-		drsuapi_DsReplicaObjectIdentifier *identifier;
-		drsuapi_DsAttributeId attid;
-		drsuapi_DsAttributeValue value;
-		drsuapi_DsLinkedAttributeFlags flags;
-		NTTIME_1sec originating_add_time;
-		drsuapi_DsReplicaMetaData meta_data;
-	} drsuapi_DsReplicaLinkedAttribute;
-
-	typedef [public,gensize] struct {
-		GUID source_dsa_guid; /* the 'objectGUID' field of the CN=NTDS Settings object */
-		GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
-		drsuapi_DsReplicaObjectIdentifier *naming_context;
-		drsuapi_DsReplicaHighWaterMark old_highwatermark;
-		drsuapi_DsReplicaHighWaterMark new_highwatermark;
-		drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;
-		drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
-		drsuapi_DsExtendedError extended_ret;
-		uint32 object_count;
-		/* this +55 is sometimes +56, so I don't know where this comes from... --metze */
-		[value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] uint32 __ndr_size;
-		drsuapi_DsReplicaObjectListItemEx *first_object;
-		boolean32 more_data;
-		uint32 nc_object_count; /* estimated amount of objects in the whole NC */
-		uint32 nc_linked_attributes_count;  /* estimated amount of linked values in the whole NC */
-		[range(0,1048576)] uint32 linked_attributes_count;
-		[size_is(linked_attributes_count)] drsuapi_DsReplicaLinkedAttribute *linked_attributes;
-		WERROR drs_error;
-	} drsuapi_DsGetNCChangesCtr6;
-
-	typedef struct {
-		uint32 decompressed_length;
-		uint32 compressed_length;
-		[subcontext(4),subcontext_size(compressed_length),
-		 compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)]
-		 drsuapi_DsGetNCChangesCtr1 *ctr1;
-	} drsuapi_DsGetNCChangesMSZIPCtr1;
-
-	typedef struct {
-		uint32 decompressed_length;
-		uint32 compressed_length;
-		[subcontext(4),subcontext_size(compressed_length),
-		 compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)]
-		 drsuapi_DsGetNCChangesCtr6 *ctr6;
-	} drsuapi_DsGetNCChangesMSZIPCtr6;
-
-	typedef struct {
-		uint32 decompressed_length;
-		uint32 compressed_length;
-		[subcontext(4),subcontext_size(compressed_length),
-		 compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)]
-		 drsuapi_DsGetNCChangesCtr1 *ctr1;
-	} drsuapi_DsGetNCChangesXPRESSCtr1;
-
-	typedef struct {
-		uint32 decompressed_length;
-		uint32 compressed_length;
-		[subcontext(4),subcontext_size(compressed_length),
-		 compression(NDR_COMPRESSION_XPRESS,compressed_length,decompressed_length)]
-		 drsuapi_DsGetNCChangesCtr6 *ctr6;
-	} drsuapi_DsGetNCChangesXPRESSCtr6;
-
-	typedef [enum16bit] enum {
-		DRSUAPI_COMPRESSION_TYPE_MSZIP	= 2,
-		DRSUAPI_COMPRESSION_TYPE_XPRESS	= 3
-	} drsuapi_DsGetNCChangesCompressionType;
-
-	typedef [nodiscriminant,flag(NDR_PAHEX)] union {
-		[case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))]	drsuapi_DsGetNCChangesMSZIPCtr1 mszip1;
-		[case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))]	drsuapi_DsGetNCChangesMSZIPCtr6 mszip6;
-		[case(1|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))]	drsuapi_DsGetNCChangesXPRESSCtr1 xpress1;
-		[case(6|(DRSUAPI_COMPRESSION_TYPE_XPRESS<<16))]	drsuapi_DsGetNCChangesXPRESSCtr6 xpress6;
-	} drsuapi_DsGetNCChangesCompressedCtr;
-
-	typedef struct {
-		/* 
-		 * this is a bit ugly, as the compression depends on the flags
-		 * in the DsBind(), but only w2k uses DsGetNCChangesReq5
-		 * and will get DsGetNCChangesCtr2 replies, and w2k only knowns
-		 * about MSZIP and level 1 replies
-		 */
-		[switch_is(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesCompressedCtr ctr;
-	} drsuapi_DsGetNCChangesCtr2;
-
-	typedef struct {
-		[range(0,6)] int32 level;
-		[range(2,3)] drsuapi_DsGetNCChangesCompressionType type;
-		[switch_is(level | (type<<16))] drsuapi_DsGetNCChangesCompressedCtr ctr;
-	} drsuapi_DsGetNCChangesCtr7;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsGetNCChangesCtr1 ctr1;
-		[case(2)] drsuapi_DsGetNCChangesCtr2 ctr2;
-		[case(6)] drsuapi_DsGetNCChangesCtr6 ctr6;
-		[case(7)] drsuapi_DsGetNCChangesCtr7 ctr7;
-	} drsuapi_DsGetNCChangesCtr;
-
-	WERROR drsuapi_DsGetNCChanges(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref,switch_is(level)] drsuapi_DsGetNCChangesRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref,switch_is(*level_out)] drsuapi_DsGetNCChangesCtr *ctr
-		);
-
-	/*****************/
-        /* Function 0x04 */
-	typedef bitmap {
-		DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION	= 0x00000001,
-		DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE			= 0x00000002,
-		DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE			= 0x00000004,
-		DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE		= 0x00000008,
-		DRSUAPI_DS_REPLICA_UPDATE_0x00000010			= 0x00000010
-	} drsuapi_DsReplicaUpdateRefsOptions;
-
-	typedef struct {
-		[ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
-		[ref,charset(DOS),string] uint8 *dest_dsa_dns_name;
-		GUID dest_dsa_guid;
-		drsuapi_DsReplicaUpdateRefsOptions options;
-	} drsuapi_DsReplicaUpdateRefsRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1;
-	} drsuapi_DsReplicaUpdateRefsRequest;
-
-	WERROR drsuapi_DsReplicaUpdateRefs(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req
-		);
-
-	/*****************/
-        /* Function 0x05 */
-	typedef bitmap {
-		DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION	= 0x00000001,
-		DRSUAPI_DS_REPLICA_ADD_WRITEABLE		= 0x00000002
-		/* TODO ... */
-	} drsuapi_DsReplicaAddOptions;
-
-	WERROR DRSUAPI_REPLICA_ADD();
-
-	/*****************/
-        /* Function 0x06 */
-	typedef bitmap {
-		DRSUAPI_DS_REPLICA_DELETE_ASYNCHRONOUS_OPERATION	= 0x00000001,
-		DRSUAPI_DS_REPLICA_DELETE_WRITEABLE			= 0x00000002
-		/* TODO ... */
-	} drsuapi_DsReplicaDeleteOptions;
-
-	WERROR DRSUAPI_REPLICA_DEL();
-
-	/*****************/
-        /* Function 0x07 */
-	typedef bitmap {
-		DRSUAPI_DS_REPLICA_MODIFY_ASYNCHRONOUS_OPERATION	= 0x00000001,
-		DRSUAPI_DS_REPLICA_MODIFY_WRITEABLE			= 0x00000002
-	} drsuapi_DsReplicaModifyOptions;
-
-	WERROR DRSUAPI_REPLICA_MODIFY();
-
-	/*****************/
-        /* Function 0x08 */
-	WERROR DRSUAPI_VERIFY_NAMES();
-
-	/*****************/
-        /* Function 0x09 */
-
-	/* how are type 4 and 7 different from 2 and 3 ? */
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS = 1,
-		DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS 	= 2,
-		DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS	= 3,
-		DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2	= 4,
-		DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS	= 5,
-		DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS		= 6,
-		DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2	= 7
-	} drsuapi_DsMembershipType;
-
-	typedef struct {
-		NTSTATUS status;
-		[range(0,10000)] uint32 num_memberships;
-		[range(0,10000)] uint32 num_sids;
-		[size_is(num_memberships)] drsuapi_DsReplicaObjectIdentifier **info_array;
-		[size_is(num_memberships)] samr_GroupAttrs *group_attrs;
-		[size_is(num_sids)] dom_sid28 **sids;
-	} drsuapi_DsGetMembershipsCtr1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsGetMembershipsCtr1 ctr1;
-	} drsuapi_DsGetMembershipsCtr;
-
-	const int DRSUAPI_DS_MEMBERSHIP_FLAG_GROUP_ATTR	= 0x1;
-
-	typedef struct {
-		[range(1,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsReplicaObjectIdentifier **info_array;
-		uint32 flags;
-		drsuapi_DsMembershipType type;
-		drsuapi_DsReplicaObjectIdentifier *domain;
-	} drsuapi_DsGetMembershipsRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsGetMembershipsRequest1 req1;
-	} drsuapi_DsGetMembershipsRequest;
-
-	WERROR drsuapi_DsGetMemberships(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref] [switch_is(level)] drsuapi_DsGetMembershipsRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref] [switch_is(*level_out)] drsuapi_DsGetMembershipsCtr *ctr
-		);
-
-	/*****************/
-        /* Function 0x0a */
-	WERROR DRSUAPI_INTER_DOMAIN_MOVE();
-
-	/*****************/
-        /* Function 0x0b */
-	typedef struct {
-		uint32 unknown1;
-		uint32 unknown2;
-		[range(0,0x00A00000)] uint32 length;
-		[size_is(length)] uint8 *data;
-	} drsuapi_DsGetNT4ChangeLogRequest1;
-
-	typedef [switch_type(uint32)] union {
-		[case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1;
-	} drsuapi_DsGetNT4ChangeLogRequest;
-
-	typedef struct {
-		[range(0,0x00A00000)] uint32 length1;
-		[range(0,0x00A00000)] uint32 length2;
-		hyper unknown1;
-		NTTIME time2;
-		hyper unknown3;
-		NTTIME time4;
-		hyper unknown5;
-		NTTIME time6;
-		NTSTATUS status;
-		[size_is(length1)] uint8 *data1;
-		[size_is(length2)] uint8 *data2;
-	} drsuapi_DsGetNT4ChangeLogInfo1;
-
-	typedef [switch_type(uint32)] union {
-		[case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1;
-	} drsuapi_DsGetNT4ChangeLogInfo;
-
-	WERROR drsuapi_DsGetNT4ChangeLog(
-		[in] policy_handle *bind_handle,
-		[in] uint32 level,
-		[in,ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *req,
-		[out,ref] uint32 *level_out,
-		[out,ref] [switch_is(*level_out)] drsuapi_DsGetNT4ChangeLogInfo *info
-		);
-
-	/*****************/
-	/* Function 0x0c */
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_NAME_STATUS_OK			= 0,
-		DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR		= 1,
-		DRSUAPI_DS_NAME_STATUS_NOT_FOUND		= 2,
-		DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE		= 3,
-		DRSUAPI_DS_NAME_STATUS_NO_MAPPING		= 4,
-		DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY		= 5,
-		DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING	= 6,
-		DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL		= 7
-	} drsuapi_DsNameStatus;
-
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_NAME_FLAG_NO_FLAGS			= 0x0,
-		DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY		= 0x1,
-		DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC			= 0x2,
-		DRSUAPI_DS_NAME_FLAG_GCVERIFY			= 0x4,
-		DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL		= 0x8
-	} drsuapi_DsNameFlags;
-
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_NAME_FORMAT_UKNOWN			= 0,
-		DRSUAPI_DS_NAME_FORMAT_FQDN_1779		= 1,
-		DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT		= 2,
-		DRSUAPI_DS_NAME_FORMAT_DISPLAY			= 3,
-		DRSUAPI_DS_NAME_FORMAT_GUID 			= 6,
-		DRSUAPI_DS_NAME_FORMAT_CANONICAL		= 7,
-		DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL		= 8,
-		DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX		= 9,
-		DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL	= 10,
-		DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY	= 11,
-		DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN		= 12
-	} drsuapi_DsNameFormat;
-
-	typedef struct {
-		[string,charset(UTF16)] uint16 *str;
-	} drsuapi_DsNameString;
-
-	typedef struct {
-		uint32 codepage; /* 0x000004e4 - 1252 is german codepage*/
-		uint32 language; /* 0x00000407 - german language ID*/
-		drsuapi_DsNameFlags format_flags;
-		drsuapi_DsNameFormat format_offered;
-		drsuapi_DsNameFormat format_desired;
-		[range(1,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsNameString *names;
-	} drsuapi_DsNameRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsNameRequest1 req1;
-	} drsuapi_DsNameRequest;
-
-	typedef struct {
-		drsuapi_DsNameStatus status;
-		[charset(UTF16),string] uint16 *dns_domain_name;
-		[charset(UTF16),string] uint16 *result_name;
-	} drsuapi_DsNameInfo1;
-
-	typedef struct {
-		uint32 count;
-		[size_is(count)] drsuapi_DsNameInfo1 *array;
-	} drsuapi_DsNameCtr1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsNameCtr1 *ctr1;
-	} drsuapi_DsNameCtr;
-
-	WERROR drsuapi_DsCrackNames(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref,switch_is(level)] drsuapi_DsNameRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref,switch_is(*level_out)] drsuapi_DsNameCtr *ctr
-		);
-
-	/*****************/
-	/* Function 0x0d */
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_SPN_OPERATION_ADD	= 0,
-		DRSUAPI_DS_SPN_OPERATION_REPLACE= 1,
-		DRSUAPI_DS_SPN_OPERATION_DELETE	= 2
-	} drsuapi_DsSpnOperation;
-
-	typedef struct {
-		drsuapi_DsSpnOperation operation;
-		uint32 unknown1;
-		[charset(UTF16),string] uint16 *object_dn;
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsNameString *spn_names;
-	} drsuapi_DsWriteAccountSpnRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsWriteAccountSpnRequest1 req1;
-	} drsuapi_DsWriteAccountSpnRequest;
-
-	typedef struct {
-		WERROR status;
-	} drsuapi_DsWriteAccountSpnResult1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsWriteAccountSpnResult1 res1;
-	} drsuapi_DsWriteAccountSpnResult;
-
-	WERROR drsuapi_DsWriteAccountSpn(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref,switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref,switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res
-		);
-
-	/*****************/
-        /* Function 0x0e */
-	typedef struct {
-		[charset(UTF16),string] uint16 *server_dn;
-		[charset(UTF16),string] uint16 *domain_dn;
-		uint32 unknown; /* 0x000000001 */
-	} drsuapi_DsRemoveDSServerRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsRemoveDSServerRequest1 req1;
-	} drsuapi_DsRemoveDSServerRequest;
-
-	typedef struct {
-		WERROR status;
-	} drsuapi_DsRemoveDSServerResult1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsRemoveDSServerResult1 res1;
-	} drsuapi_DsRemoveDSServerResult;
-
-	WERROR drsuapi_DsRemoveDSServer(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref,switch_is(level)] drsuapi_DsRemoveDSServerRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref,switch_is(*level_out)] drsuapi_DsRemoveDSServerResult *res
-		);
-
-	/*****************/
-        /* Function 0x0f */
-	WERROR DRSUAPI_REMOVE_DS_DOMAIN();
-
-	/*****************/
-        /* Function 0x10 */
-	typedef struct {
-		[charset(UTF16),string] uint16 *domain_name; /* netbios or dns */
-		int32 level; /* specifies the switch level for the request */
-	} drsuapi_DsGetDCInfoRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsGetDCInfoRequest1 req1;
-	} drsuapi_DsGetDCInfoRequest;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *netbios_name;
-		[charset(UTF16),string] uint16 *dns_name;
-		[charset(UTF16),string] uint16 *site_name;
-		[charset(UTF16),string] uint16 *computer_dn;
-		[charset(UTF16),string] uint16 *server_dn;
-		uint32 is_pdc;
-		uint32 is_enabled;
-	} drsuapi_DsGetDCInfo1;
-
-	typedef struct {
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsGetDCInfo1 *array;
-	} drsuapi_DsGetDCInfoCtr1;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *netbios_name;
-		[charset(UTF16),string] uint16 *dns_name;
-		[charset(UTF16),string] uint16 *site_name;
-		[charset(UTF16),string] uint16 *site_dn;
-		[charset(UTF16),string] uint16 *computer_dn;
-		[charset(UTF16),string] uint16 *server_dn;
-		[charset(UTF16),string] uint16 *ntds_dn;
-		uint32 is_pdc;
-		uint32 is_enabled;
-		uint32 is_gc;
-		GUID site_guid;
-		GUID computer_guid;
-		GUID server_guid;
-		GUID ntds_guid;
-	} drsuapi_DsGetDCInfo2;
-
-	typedef struct {
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsGetDCInfo2 *array;
-	} drsuapi_DsGetDCInfoCtr2;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *netbios_name;
-		[charset(UTF16),string] uint16 *dns_name;
-		[charset(UTF16),string] uint16 *site_name;
-		[charset(UTF16),string] uint16 *site_dn;
-		[charset(UTF16),string] uint16 *computer_dn;
-		[charset(UTF16),string] uint16 *server_dn;
-		[charset(UTF16),string] uint16 *ntds_dn;
-		uint32 is_pdc;
-		uint32 is_enabled;
-		uint32 is_gc;
-		uint32 is_rodc;
-		GUID site_guid;
-		GUID computer_guid;
-		GUID server_guid;
-		GUID ntds_guid;
-	} drsuapi_DsGetDCInfo3;
-
-	typedef struct {
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsGetDCInfo3 *array;
-	} drsuapi_DsGetDCInfoCtr3;
-
-	/*
-	 * this represents an active connection to the
-	 * Directory System Agent (DSA)
-	 * this can be via LDAP or DRSUAPI
-	 */
-	typedef struct {
-		[flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address;
-		uint32 unknown2;
-		uint32 connection_time; /* in seconds */
-		uint32 unknown4;
-		uint32 unknown5;
-		uint32 unknown6;
-		/*
-		 * client_account can be the following:
-		 * "W2K3\Administrator"
-		 * "Administrator at W2K3"
-		 * "cn=Administrator,cn=Users,DC=w2k3,DC=vmnet1,DC=vm,DC=base"
-		 * ""
-		 * or NULL
-		 */
-		[charset(UTF16),string] uint16 *client_account;
-	} drsuapi_DsGetDCConnection01;
-
-	typedef struct {
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsGetDCConnection01 *array;
-	} drsuapi_DsGetDCConnectionCtr01;
-
-	typedef [v1_enum] enum {
-		DRSUAPI_DC_INFO_CTR_1  = 1,
-		DRSUAPI_DC_INFO_CTR_2  = 2,
-		DRSUAPI_DC_INFO_CTR_3  = 3,
-		DRSUAPI_DC_CONNECTION_CTR_01 = -1
-	} drsuapi_DsGetDCInfoCtrLevels;
-
-        typedef [switch_type(int32)] union {
-		[case(DRSUAPI_DC_INFO_CTR_1)]  drsuapi_DsGetDCInfoCtr1  ctr1;
-		[case(DRSUAPI_DC_INFO_CTR_2)]  drsuapi_DsGetDCInfoCtr2  ctr2;
-		[case(DRSUAPI_DC_INFO_CTR_3)]  drsuapi_DsGetDCInfoCtr3  ctr3;
-		[case(DRSUAPI_DC_CONNECTION_CTR_01)] drsuapi_DsGetDCConnectionCtr01 ctr01;
-	} drsuapi_DsGetDCInfoCtr;
-
-	WERROR drsuapi_DsGetDomainControllerInfo(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref,switch_is(level)] drsuapi_DsGetDCInfoRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref,switch_is(*level_out)] drsuapi_DsGetDCInfoCtr *ctr
-		);
-
-	/*****************/
-        /* Function 0x11 */
-	typedef [public,noprint] struct {
-		drsuapi_DsReplicaObjectListItem *next_object;
-		drsuapi_DsReplicaObject object;
-	} drsuapi_DsReplicaObjectListItem;
-
-	/*
-	 * The DsAddEntry() call which creates a nTDSDSA object,
-	 * also adds a servicePrincipalName in the following form
-	 * to the computer account of the new domain controller
-	 * referenced by the "serverReferenece" attribute.
-	 *
-	 * E3514235-4B06-11D1-AB04-00C04FC2DCD2/<new-ntdsdsa-object-guid-as-string>/<domain-dns-name>
-	 *
-	 * also note that the "serverReference" isn't added to the new object!
-	 */
-	const char *DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID = "E3514235-4B06-11D1-AB04-00C04FC2DCD2";
-
-	/*
-	 * please note the the current idl
-	 * for DsAddEntry does only parse 
-	 * what I saw between 2 w2k3 boxes
-	 * in my dssync experiments I got some other replies
-	 * so all I want to say is that this is very incomplete yet...
-	 * --metze
-	 */
-	typedef struct {
-		drsuapi_DsReplicaObjectListItem first_object;
-	} drsuapi_DsAddEntryRequest2;
-
-	typedef [switch_type(int32)] union {
-		[case(2)] drsuapi_DsAddEntryRequest2 req2;
-	} drsuapi_DsAddEntryRequest;
-
-	typedef struct {
-		uint32 unknown1;
-		WERROR status;
-		uint32 unknown2;
-		uint16 unknown3;
-	} drsuapi_DsAddEntryErrorInfoX;
-
-	typedef struct {
-		[range(0,10485760)] uint32 size;
-		[size_is(size)] uint8 *data;
-	} drsuapi_DsAddEntryExtraErrorBuffer;
-
-	typedef struct {
-		drsuapi_DsAddEntryErrorInfoX error;
-		drsuapi_DsAttributeId attid;
-		uint32 unknown2;
-		drsuapi_DsAddEntryExtraErrorBuffer buffer;
-	} drsuapi_DsAddEntryExtraError1;
-
-	typedef /*[noprint]*/ struct {
-		drsuapi_DsAddEntryErrorListItem1 *next;
-		drsuapi_DsAddEntryExtraError1 error;
-	} drsuapi_DsAddEntryErrorListItem1;
-
-	typedef struct {
-		drsuapi_DsReplicaObjectIdentifier *id;
-		WERROR status;
-		drsuapi_DsAddEntryErrorListItem1 first;
-	} drsuapi_DsAddEntryErrorInfo1;
-
-	typedef [switch_type(uint32)] union {
-		[case(1)] drsuapi_DsAddEntryErrorInfo1 error1;
-/*		[case(2)] drsuapi_DsAddEntryErrorInfo2 error2;
-		[case(3)] drsuapi_DsAddEntryErrorInfo3 error3;
-*/		[case(4)] drsuapi_DsAddEntryErrorInfoX errorX;
-		[case(5)] drsuapi_DsAddEntryErrorInfoX errorX;
-		[case(6)] drsuapi_DsAddEntryErrorInfoX errorX;
-		[case(7)] drsuapi_DsAddEntryErrorInfoX errorX;
-	} drsuapi_DsAddEntryErrorInfo;
-
-	typedef struct {
-		WERROR status;
-		uint32 level;
-		[switch_is(level)] drsuapi_DsAddEntryErrorInfo *info;
-	} drsuapi_DsAddEntryError1;
-
-	typedef [switch_type(uint32)] union {
-		[case(1)] drsuapi_DsAddEntryError1 info1;
-	} drsuapi_DsAddEntryError;
-
-	typedef struct {
-		GUID guid;
-		dom_sid28 sid;
-	} drsuapi_DsReplicaObjectIdentifier2;
-
-	typedef struct {
-		drsuapi_DsReplicaObjectIdentifier *id;
-		uint32 unknown1;
-		drsuapi_DsAddEntryErrorInfoX error;
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects;
-	} drsuapi_DsAddEntryCtr2;
-
-	typedef struct {
-		drsuapi_DsReplicaObjectIdentifier *id;
-		uint32 level;
-		[switch_is(level)] drsuapi_DsAddEntryError *error;
-		[range(0,10000)] uint32 count;
-		[size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects;
-	} drsuapi_DsAddEntryCtr3;
-
-	typedef [switch_type(int32)] union {
-		[case(2)] drsuapi_DsAddEntryCtr2 ctr2;
-		[case(3)] drsuapi_DsAddEntryCtr3 ctr3;
-	} drsuapi_DsAddEntryCtr;
-
-	[public] WERROR drsuapi_DsAddEntry(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref,switch_is(level)] drsuapi_DsAddEntryRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref,switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr
-		);
-
-	/*****************/
-        /* Function 0x12 */
-	WERROR DRSUAPI_EXECUTE_KCC();
-
-	/*****************/
-	/* Function 0x13 */
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_REPLICA_GET_INFO				= 1,
-		DRSUAPI_DS_REPLICA_GET_INFO2				= 2
-	} drsuapi_DsReplicaGetInfoLevel;
-
-	typedef [v1_enum] enum {
-		DRSUAPI_DS_REPLICA_INFO_NEIGHBORS			= 0,
-		DRSUAPI_DS_REPLICA_INFO_CURSORS				= 1,
-		DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA			= 2,
-		DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES	= 3,
-		DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES 		= 4,
-		DRSUAPI_DS_REPLICA_INFO_PENDING_OPS 			= 5,
-		DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA	= 6,
-		DRSUAPI_DS_REPLICA_INFO_CURSORS2			= 7,
-		DRSUAPI_DS_REPLICA_INFO_CURSORS3			= 8,
-		DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2			= 9,
-		DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2	= 10,
-		DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02			= -2,
-		DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04			= -4,
-		DRSUAPI_DS_REPLICA_INFO_CURSORS05			= -5,
-		DRSUAPI_DS_REPLICA_INFO_06				= -6
-	} drsuapi_DsReplicaInfoType;
-
-	typedef struct {
-		drsuapi_DsReplicaInfoType info_type;
-		[charset(UTF16),string] uint16 *object_dn;
-		GUID guid1;
-	} drsuapi_DsReplicaGetInfoRequest1;
-
-	typedef struct {
-		drsuapi_DsReplicaInfoType info_type;
-		[charset(UTF16),string] uint16 *object_dn;
-		GUID guid1;
-		uint32 unknown1;
-		[charset(UTF16),string] uint16 *string1;
-		[charset(UTF16),string] uint16 *string2;
-		uint32 unknown2;
-	} drsuapi_DsReplicaGetInfoRequest2;
-
-	typedef [switch_type(drsuapi_DsReplicaGetInfoLevel)] union {
-		[case(DRSUAPI_DS_REPLICA_GET_INFO)] drsuapi_DsReplicaGetInfoRequest1 req1;
-		[case(DRSUAPI_DS_REPLICA_GET_INFO2)] drsuapi_DsReplicaGetInfoRequest2 req2;
-	} drsuapi_DsReplicaGetInfoRequest;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *naming_context_dn;
-		[charset(UTF16),string] uint16 *source_dsa_obj_dn;
-		[charset(UTF16),string] uint16 *source_dsa_address;
-		[charset(UTF16),string] uint16 *transport_obj_dn;
-		drsuapi_DsReplicaNeighbourFlags replica_flags;
-		uint32 reserved;
-		GUID naming_context_obj_guid;
-		GUID source_dsa_obj_guid;
-		GUID source_dsa_invocation_id;
-		GUID transport_obj_guid;
-		hyper tmp_highest_usn;
-		hyper highest_usn;
-		NTTIME last_success;
-		NTTIME last_attempt;
-		WERROR result_last_attempt;
-		uint32 consecutive_sync_failures;
-	} drsuapi_DsReplicaNeighbour;
-
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		[size_is(count)] drsuapi_DsReplicaNeighbour array[];
-	} drsuapi_DsReplicaNeighbourCtr;
-
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		[size_is(count)] drsuapi_DsReplicaCursor array[];
-	} drsuapi_DsReplicaCursorCtr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *attribute_name;
-		uint32 version;
-		NTTIME originating_change_time;
-		GUID originating_invocation_id;
-		hyper originating_usn;
-		hyper local_usn;
-	} drsuapi_DsReplicaObjMetaData;
-
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		[size_is(count)] drsuapi_DsReplicaObjMetaData array[];
-	} drsuapi_DsReplicaObjMetaDataCtr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *dsa_obj_dn;
-		GUID dsa_obj_guid;
-		NTTIME first_failure;
-		uint32 num_failures;
-		WERROR last_result;
-	} drsuapi_DsReplicaKccDsaFailure;
-
-	typedef struct {
-		uint32 count;
-		uint32 reserved;
-		[size_is(count)] drsuapi_DsReplicaKccDsaFailure array[];
-	} drsuapi_DsReplicaKccDsaFailuresCtr;
-
-	typedef enum {
-		DRSUAPI_DS_REPLICA_OP_TYPE_SYNC		= 0,
-		DRSUAPI_DS_REPLICA_OP_TYPE_ADD		= 1,
-		DRSUAPI_DS_REPLICA_OP_TYPE_DELETE	= 2,
-		DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY	= 3,
-		DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS	= 4
-	} drsuapi_DsReplicaOpType;
-
-	typedef [switch_type(drsuapi_DsReplicaOpType)] union {
-		[case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC)]		drsuapi_DsReplicaSyncOptions sync;
-		[case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD)]		drsuapi_DsReplicaAddOptions add;
-		[case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE)]	drsuapi_DsReplicaDeleteOptions op_delete;
-		[case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY)]	drsuapi_DsReplicaModifyOptions modify;
-		[case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS)]	drsuapi_DsReplicaUpdateRefsOptions update_refs;
-		[default] uint32 unknown;
-	} drsuapi_DsRplicaOpOptions;
-
-	typedef struct {
-		NTTIME operation_start;
-		uint32 serial_num; /* unique till reboot */
-		uint32 priority;
-		drsuapi_DsReplicaOpType operation_type;
-		[switch_is(operation_type)] drsuapi_DsRplicaOpOptions options;
-		[charset(UTF16),string] uint16 *nc_dn;
-		[charset(UTF16),string] uint16 *remote_dsa_obj_dn;
-		[charset(UTF16),string] uint16 *remote_dsa_address;
-		GUID nc_obj_guid;
-		GUID remote_dsa_obj_guid;
-	} drsuapi_DsReplicaOp;
-
-	typedef struct {
-		NTTIME time;
-		uint32 count;
-		[size_is(count)] drsuapi_DsReplicaOp array[];
-	} drsuapi_DsReplicaOpCtr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *attribute_name;
-		[charset(UTF16),string] uint16 *object_dn;
-		[value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary;
-		DATA_BLOB *binary;
-		NTTIME deleted;
-		NTTIME created;
-		uint32 version;
-		NTTIME originating_change_time;
-		GUID originating_invocation_id;
-		hyper originating_usn;
-		hyper local_usn;
-	} drsuapi_DsReplicaAttrValMetaData;
-
-	typedef struct {
-		uint32 count;
-		int32 enumeration_context;
-		[size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
-	} drsuapi_DsReplicaAttrValMetaDataCtr;
-
-	typedef struct {
-		uint32 count;
-		int32 enumeration_context;
-		[size_is(count)] drsuapi_DsReplicaCursor2 array[];
-	} drsuapi_DsReplicaCursor2Ctr;
-
-	typedef struct {
-		GUID source_dsa_invocation_id;
-		hyper highest_usn;
-		NTTIME last_sync_success;
-		[charset(UTF16),string] uint16 *source_dsa_obj_dn;
-	} drsuapi_DsReplicaCursor3;
-
-	typedef struct {
-		uint32 count;
-		int32 enumeration_context;
-		[size_is(count)] drsuapi_DsReplicaCursor3 array[];
-	} drsuapi_DsReplicaCursor3Ctr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *attribute_name;
-		uint32 version;
-		NTTIME originating_change_time;
-		GUID originating_invocation_id;
-		hyper originating_usn;
-		hyper local_usn;
-		[charset(UTF16),string] uint16 *originating_dsa_dn;
-	} drsuapi_DsReplicaObjMetaData2;
-
-	typedef struct {
-		uint32 count;
-		int32 enumeration_context;
-		[size_is(count)] drsuapi_DsReplicaObjMetaData2 array[];
-	} drsuapi_DsReplicaObjMetaData2Ctr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *attribute_name;
-		[charset(UTF16),string] uint16 *object_dn;
-		[value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary;
-		DATA_BLOB *binary;
-		NTTIME deleted;
-		NTTIME created;
-		uint32 version;
-		NTTIME originating_change_time;
-		GUID originating_invocation_id;
-		hyper originating_usn;
-		hyper local_usn;
-		[charset(UTF16),string] uint16 *originating_dsa_dn;
-	} drsuapi_DsReplicaAttrValMetaData2;
-
-	typedef struct {
-		uint32 count;
-		int32 enumeration_context;
-		[size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[];
-	} drsuapi_DsReplicaAttrValMetaData2Ctr;
-
-	typedef struct {
-		hyper u1; /* session number? */
-		uint32 u2;
-		uint32 u3;
-		GUID bind_guid;
-		NTTIME_1sec bind_time;
-		[flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address;
-		uint32 u5; /* this is the same value the client used as pid in the DsBindInfoX struct */
-	} drsuapi_DsReplicaConnection04;
-
-	typedef struct {
-		[range(0,10000)] uint32 count;
-		uint32 reserved;
-		[size_is(count)] drsuapi_DsReplicaConnection04 array[];
-	} drsuapi_DsReplicaConnection04Ctr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *str1;
-		uint32 u1;
-		uint32 u2;
-		uint32 u3;
-		uint32 u4;
-		uint32 u5;
-		hyper u6;
-		uint32 u7;
-	} drsuapi_DsReplica06;
-
-	typedef struct {
-		[range(0,256)] uint32 count;
-		uint32 reserved;
-		[size_is(count)] drsuapi_DsReplica06 array[];
-	} drsuapi_DsReplica06Ctr;
-
-	typedef [switch_type(drsuapi_DsReplicaInfoType)] union {
-		[case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] drsuapi_DsReplicaNeighbourCtr *neighbours;
-		[case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] drsuapi_DsReplicaCursorCtr *cursors;
-		[case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] drsuapi_DsReplicaObjMetaDataCtr *objmetadata;
-		[case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures;
-		[case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures;
-		[case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] drsuapi_DsReplicaOpCtr *pendingops;
-		[case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata;
-		[case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] drsuapi_DsReplicaCursor2Ctr *cursors2;
-		[case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] drsuapi_DsReplicaCursor3Ctr *cursors3;
-		[case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;
-		[case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;
-		[case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02)] drsuapi_DsReplicaNeighbourCtr *neighbours02;
-		[case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04)] drsuapi_DsReplicaConnection04Ctr *connections04;
-		[case(DRSUAPI_DS_REPLICA_INFO_CURSORS05)] drsuapi_DsReplicaCursorCtrEx *cursors05;
-		[case(DRSUAPI_DS_REPLICA_INFO_06)] drsuapi_DsReplica06Ctr *i06;
-	} drsuapi_DsReplicaInfo;
-
-	WERROR drsuapi_DsReplicaGetInfo(
-		[in] policy_handle *bind_handle,
-		[in] drsuapi_DsReplicaGetInfoLevel level,
-		[in,ref,switch_is(level)] drsuapi_DsReplicaGetInfoRequest *req,
-		[out,ref] drsuapi_DsReplicaInfoType *info_type,
-		[out,ref,switch_is(*info_type)] drsuapi_DsReplicaInfo *info
-		);
-
-	/*****************/
-        /* Function 0x14 */
-	WERROR DRSUAPI_ADD_SID_HISTORY();
-
-	/*****************/
-        /* Function 0x15 */
-
-	typedef struct {
-		[range(0,10000)] uint32 num_entries;
-		[size_is(num_entries)] drsuapi_DsGetMembershipsCtr1 **ctrl_array;
-	} drsuapi_DsGetMemberships2Ctr1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsGetMembershipsCtr1 ctr1;
-	} drsuapi_DsGetMemberships2Ctr;
-
-	typedef struct {
-		[range(1,10000)] uint32 num_req;
-		[size_is(num_req)] drsuapi_DsGetMembershipsRequest1 **req_array;
-	} drsuapi_DsGetMemberships2Request1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_DsGetMemberships2Request1 req1;
-	} drsuapi_DsGetMemberships2Request;
-
-	WERROR drsuapi_DsGetMemberships2(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref] [switch_is(level)] drsuapi_DsGetMemberships2Request *req,
-		[out,ref] int32 *level_out,
-		[out,ref] [switch_is(*level_out)] drsuapi_DsGetMemberships2Ctr *ctr
-		);
-
-
-	/*****************/
-        /* Function 0x16 */
-	WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
-
-	/*****************/
-        /* Function 0x17 */
-	WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
-
-	/*****************/
-        /* Function 0x18 */
-	typedef struct {
-		WERROR error_code;
-		uint32 site_cost;
-	} drsuapi_DsSiteCostInfo;
-
-	typedef struct {
-		[range(0,10000)] uint32 num_info;
-		[size_is(num_info)] drsuapi_DsSiteCostInfo *info;
-		uint32 unknown;
-	} drsuapi_QuerySitesByCostCtr1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_QuerySitesByCostCtr1 ctr1;
-	} drsuapi_QuerySitesByCostCtr;
-
-	typedef struct {
-		[charset(UTF16),string] uint16 *site_from;
-		[range(1,10000)] uint32 num_req;
-		[size_is(num_req)] [charset(UTF16),string] uint16 **site_to;
-		uint32 flags;
-	} drsuapi_QuerySitesByCostRequest1;
-
-	typedef [switch_type(int32)] union {
-		[case(1)] drsuapi_QuerySitesByCostRequest1 req1;
-	} drsuapi_QuerySitesByCostRequest;
-
-	WERROR drsuapi_QuerySitesByCost(
-		[in] policy_handle *bind_handle,
-		[in] int32 level,
-		[in,ref] [switch_is(level)] drsuapi_QuerySitesByCostRequest *req,
-		[out,ref] int32 *level_out,
-		[out,ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *ctr
-	);
-}

Modified: branches/samba/upstream/source/librpc/idl/initshutdown.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/initshutdown.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/initshutdown.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,7 +28,7 @@
 		[in,unique] initshutdown_String *message,
 		[in] uint32 timeout,
 		[in] uint8 force_apps,
-		[in] uint8 do_reboot
+		[in] uint8 reboot
 	);
 
 	WERROR initshutdown_Abort(
@@ -40,7 +40,7 @@
 		[in,unique] initshutdown_String *message,
 		[in] uint32 timeout,
 		[in] uint8 force_apps,
-		[in] uint8 do_reboot,
+		[in] uint8 reboot,
 		[in] uint32 reason
 	);
 }

Modified: branches/samba/upstream/source/librpc/idl/libnet_join.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/libnet_join.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/libnet_join.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -30,13 +30,11 @@
 		[in] boolean8 modify_config,
 		[in] ads_struct *ads,
 		[in] boolean8 debug,
-		[in] boolean8 use_kerberos,
 		[in] netr_SchannelType secure_channel_type,
 		[in,noprint] messaging_context *msg_ctx,
 		[out] string account_name,
 		[out] string netbios_domain_name,
 		[out] string dns_domain_name,
-		[out] string forest_name,
 		[out] string dn,
 		[out] dom_sid *domain_sid,
 		[out] boolean8 modified_config,
@@ -57,11 +55,9 @@
 		[in] dom_sid *domain_sid,
 		[in] ads_struct *ads,
 		[in] boolean8 debug,
-		[in] boolean8 use_kerberos,
 		[in,noprint] messaging_context *msg_ctx,
 		[out] string netbios_domain_name,
 		[out] string dns_domain_name,
-		[out] string forest_name,
 		[out] boolean8 modified_config,
 		[out] string error_string,
 		[out] boolean8 disabled_machine_account,

Modified: branches/samba/upstream/source/librpc/idl/libnetapi.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/libnetapi.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/libnetapi.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3,9 +3,6 @@
 */
 
 cpp_quote("#define LIBNETAPI_LOCAL_SERVER(x) (!x || is_myname_or_ipaddr(x))")
-cpp_quote("#ifndef MAXSUBAUTHS")
-cpp_quote("#define MAXSUBAUTHS 15 /* max sub authorities in a SID */")
-cpp_quote("#endif")
 
 [
 	pointer_default(unique)
@@ -18,73 +15,28 @@
 		NERR_Success=0
 	} NET_API_STATUS;
 
-	[public] typedef struct {
-		uint8 sid_rev_num;
-		uint8 num_auths;
-		uint8 id_auth[6];
-		uint32 sub_auths[MAXSUBAUTHS];
-	} domsid;
-
-	/*******************************************/
-	/* NetJoinDomain                           */
-	/*******************************************/
-
-	typedef [public,bitmap32bit] bitmap {
-		NETSETUP_JOIN_DOMAIN			= 0x00000001,
-		NETSETUP_ACCT_CREATE			= 0x00000002,
-		NETSETUP_ACCT_DELETE			= 0x00000004,
-		NETSETUP_WIN9X_UPGRADE			= 0x00000010,
-		NETSETUP_DOMAIN_JOIN_IF_JOINED		= 0x00000020,
-		NETSETUP_JOIN_UNSECURE			= 0x00000040,
-		NETSETUP_MACHINE_PWD_PASSED		= 0x00000080,
-		NETSETUP_DEFER_SPN_SET			= 0x00000100,
-		NETSETUP_JOIN_DC_ACCOUNT		= 0x00000200,
-		NETSETUP_JOIN_WITH_NEW_NAME		= 0x00000400,
-		NETSETUP_INSTALL_INVOCATION		= 0x00040000,
-		NETSETUP_IGNORE_UNSUPPORTED_FLAGS	= 0x10000000
-	} NetJoinFlags;
-
 	[nopush,nopull] NET_API_STATUS NetJoinDomain(
 		[in,unique] string *server,
 		[in,ref] string *domain,
 		[in,unique] string *account_ou,
 		[in,unique] string *account,
 		[in,unique] string *password,
-		[in] NetJoinFlags join_flags
+		[in] uint32 join_flags
 		);
 
-	/*******************************************/
-	/* NetUnjoinDomain                         */
-	/*******************************************/
-
 	[nopush,nopull] NET_API_STATUS NetUnjoinDomain(
 		[in,unique] string *server_name,
 		[in,unique] string *account,
 		[in,unique] string *password,
-		[in] NetJoinFlags unjoin_flags
+		[in] uint32 unjoin_flags
 		);
 
-	/*******************************************/
-	/* NetGetJoinInformation                   */
-	/*******************************************/
-
-	typedef enum {
-		NetSetupUnknownStatus = 0,
-		NetSetupUnjoined = 1,
-		NetSetupWorkgroupName = 2,
-		NetSetupDomainName = 3
-	} NETSETUP_JOIN_STATUS;
-
 	[nopush,nopull] NET_API_STATUS NetGetJoinInformation(
 		[in,unique] string *server_name,
 		[out] string **name_buffer,
 		[out] uint16 *name_type
 		);
 
-	/*******************************************/
-	/* NetGetJoinableOUs                       */
-	/*******************************************/
-
 	[nopush,nopull] NET_API_STATUS NetGetJoinableOUs(
 		[in,unique] string *server_name,
 		[in,ref] string *domain,
@@ -94,53 +46,7 @@
 		[out] string ***ous
 		);
 
-	/*******************************************/
-	/* NetRenameMachineInDomain                */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetRenameMachineInDomain(
-		[in] string server_name,
-		[in] string new_machine_name,
-		[in] string account,
-		[in] string password,
-		[in] uint32 rename_options
-		);
-
-	/*******************************************/
-	/* NetServerGetInfo                        */
-	/*******************************************/
-
 	[public] typedef struct {
-		uint32 sv100_platform_id;
-		string sv100_name;
-	} SERVER_INFO_100;
-
-	[public] typedef struct {
-		uint32 sv101_platform_id;
-		string sv101_name;
-		uint32 sv101_version_major;
-		uint32 sv101_version_minor;
-		uint32 sv101_type;
-		string sv101_comment;
-	} SERVER_INFO_101;
-
-	[public] typedef struct {
-		uint32 sv102_platform_id;
-		string sv102_name;
-		uint32 sv102_version_major;
-		uint32 sv102_version_minor;
-		uint32 sv102_type;
-		string sv102_comment;
-		uint32 sv102_users;
-		uint32 sv102_disc;
-		boolean8 sv102_hidden;
-		uint32 sv102_announce;
-		uint32 sv102_anndelta;
-		uint32 sv102_licenses;
-		string sv102_userpath;
-	} SERVER_INFO_102;
-
-	[public] typedef struct {
 		string sv1005_comment;
 	} SERVER_INFO_1005;
 
@@ -150,10 +56,6 @@
 		[out] uint8 **buffer
 		);
 
-	/*******************************************/
-	/* NetServerSetInfo                        */
-	/*******************************************/
-
 	[nopush,nopull] NET_API_STATUS NetServerSetInfo(
 		[in,unique] string *server_name,
 		[in] uint32 level,
@@ -161,30 +63,18 @@
 		[out] uint32 *parm_error
 		);
 
-	/*******************************************/
-	/* NetGetDCName                            */
-	/*******************************************/
-
 	[nopush,nopull] NET_API_STATUS NetGetDCName(
 		[in,unique] string *server_name,
 		[in,unique] string *domain_name,
 		[out] uint8 **buffer
 		);
 
-	/*******************************************/
-	/* NetGetAnyDCName                         */
-	/*******************************************/
-
 	[nopush,nopull] NET_API_STATUS NetGetAnyDCName(
 		[in,unique] string *server_name,
 		[in,unique] string *domain_name,
 		[out] uint8 **buffer
 		);
 
-	/*******************************************/
-	/* DsGetDcName                             */
-	/*******************************************/
-
 	[public] typedef struct {
 		string domain_controller_name;
 		string domain_controller_address;
@@ -206,19 +96,10 @@
 		[out,ref] DOMAIN_CONTROLLER_INFO **dc_info
 		);
 
-	/*******************************************/
-	/* NetUserAdd                              */
-	/*******************************************/
-
 	[public] typedef struct {
 		string usri0_name;
 	} USER_INFO_0;
 
-	/* priv */
-	const int USER_PRIV_GUEST	= 0;
-	const int USER_PRIV_USER	= 1;
-	const int USER_PRIV_ADMIN	= 2;
-
 	[public] typedef struct {
 		string usri1_name;
 		string usri1_password;
@@ -230,296 +111,6 @@
 		string usri1_script_path;
 	} USER_INFO_1;
 
-	/* auth_flags in USER_INFO_2 */
-
-	const int AF_OP_PRINT		= 0x1;
-	const int AF_OP_COMM		= 0x2;
-	const int AF_OP_SERVER		= 0x4;
-	const int AF_OP_ACCOUNTS	= 0x8;
-	const int AF_SETTABLE_BITS	= (AF_OP_PRINT | AF_OP_COMM | AF_OP_SERVER | AF_OP_ACCOUNTS);
-
-	const int USER_MAXSTORAGE_UNLIMITED = (uint32_t)-1L;
-
-	[public] typedef struct {
-		string usri2_name;
-		string usri2_password;
-		uint32 usri2_password_age;
-		uint32 usri2_priv;
-		string usri2_home_dir;
-		string usri2_comment;
-		uint32 usri2_flags;
-		string usri2_script_path;
-		uint32 usri2_auth_flags;
-		string usri2_full_name;
-		string usri2_usr_comment;
-		string usri2_parms;
-		string usri2_workstations;
-		uint32 usri2_last_logon;
-		uint32 usri2_last_logoff;
-		uint32 usri2_acct_expires;
-		uint32 usri2_max_storage;
-		uint32 usri2_units_per_week;
-		uint8 *usri2_logon_hours;
-		uint32 usri2_bad_pw_count;
-		uint32 usri2_num_logons;
-		string usri2_logon_server;
-		uint32 usri2_country_code;
-		uint32 usri2_code_page;
-	} USER_INFO_2;
-
-	[public] typedef struct {
-		string usri3_name;
-		uint32 usri3_password_age;
-		uint32 usri3_priv;
-		string usri3_home_dir;
-		string usri3_comment;
-		uint32 usri3_flags;
-		string usri3_script_path;
-		uint32 usri3_auth_flags;
-		string usri3_full_name;
-		string usri3_usr_comment;
-		string usri3_parms;
-		string usri3_workstations;
-		uint32 usri3_last_logon;
-		uint32 usri3_last_logoff;
-		uint32 usri3_acct_expires;
-		uint32 usri3_max_storage;
-		uint32 usri3_units_per_week;
-		uint8 *usri3_logon_hours;
-		uint32 usri3_bad_pw_count;
-		uint32 usri3_num_logons;
-		string usri3_logon_server;
-		uint32 usri3_country_code;
-		uint32 usri3_code_page;
-		uint32 usri3_user_id;
-		uint32 usri3_primary_group_id;
-		string usri3_profile;
-		string usri3_home_dir_drive;
-		uint32 usri3_password_expired;
-	} USER_INFO_3;
-
-	[public] typedef struct {
-		string usri4_name;
-		string usri4_password;
-		uint32 usri4_password_age;
-		uint32 usri4_priv;
-		string usri4_home_dir;
-		string usri4_comment;
-		uint32 usri4_flags;
-		string usri4_script_path;
-		uint32 usri4_auth_flags;
-		string usri4_full_name;
-		string usri4_usr_comment;
-		string usri4_parms;
-		string usri4_workstations;
-		uint32 usri4_last_logon;
-		uint32 usri4_last_logoff;
-		uint32 usri4_acct_expires;
-		uint32 usri4_max_storage;
-		uint32 usri4_units_per_week;
-		uint8 *usri4_logon_hours;
-		uint32 usri4_bad_pw_count;
-		uint32 usri4_num_logons;
-		string usri4_logon_server;
-		uint32 usri4_country_code;
-		uint32 usri4_code_page;
-		domsid *usri4_user_sid;
-		uint32 usri4_primary_group_id;
-		string usri4_profile;
-		string usri4_home_dir_drive;
-		uint32 usri4_password_expired;
-	} USER_INFO_4;
-
-	[public] typedef struct {
-		string usri10_name;
-		string usri10_comment;
-		string usri10_usr_comment;
-		string usri10_full_name;
-	} USER_INFO_10;
-
-	[public] typedef struct {
-		string usri11_name;
-		string usri11_comment;
-		string usri11_usr_comment;
-		string usri11_full_name;
-		uint32 usri11_priv;
-		uint32 usri11_auth_flags;
-		uint32 usri11_password_age;
-		string usri11_home_dir;
-		string usri11_parms;
-		uint32 usri11_last_logon;
-		uint32 usri11_last_logoff;
-		uint32 usri11_bad_pw_count;
-		uint32 usri11_num_logons;
-		string usri11_logon_server;
-		uint32 usri11_country_code;
-		string usri11_workstations;
-		uint32 usri11_max_storage;
-		uint32 usri11_units_per_week;
-		uint8 *usri11_logon_hours;
-		uint32 usri11_code_page;
-	} USER_INFO_11;
-
-	[public] typedef struct {
-		string usri20_name;
-		string usri20_full_name;
-		string usri20_comment;
-		uint32 usri20_flags;
-		uint32 usri20_user_id;
-	} USER_INFO_20;
-
-	const int ENCRYPTED_PWLEN = 16;
-
-	[public] typedef struct {
-		uint8 usri21_password[ENCRYPTED_PWLEN];
-	} USER_INFO_21;
-
-	[public] typedef struct {
-		string usri22_name;
-		uint8 usri22_password[ENCRYPTED_PWLEN];
-		uint32 usri22_password_age;
-		uint32 usri22_priv;
-		string usri22_home_dir;
-		string usri22_comment;
-		uint32 usri22_flags;
-		uint32 usri22_script_path;
-		uint32 usri22_auth_flags;
-		string usri22_full_name;
-		string usri22_usr_comment;
-		string usri22_parms;
-		string usri22_workstations;
-		uint32 usri22_last_logon;
-		uint32 usri22_last_logoff;
-		uint32 usri22_acct_expires;
-		uint32 usri22_max_storage;
-		uint32 usri22_units_per_week;
-		uint8 *usri22_logon_hours;
-		uint32 usri22_bad_pw_count;
-		uint32 usri22_num_logons;
-		string usri22_logon_server;
-		uint32 usri22_country_code;
-		uint32 usri22_code_page;
-	} USER_INFO_22;
-
-	[public] typedef struct {
-		string usri23_name;
-		string usri23_full_name;
-		string usri23_comment;
-		uint32 usri23_flags;
-		domsid *usri23_user_sid;
-	} USER_INFO_23;
-
-	[public] typedef struct {
-		string usri1003_password;
-	} USER_INFO_1003;
-
-	[public] typedef struct {
-		uint32 usri1005_priv;
-	} USER_INFO_1005;
-
-	[public] typedef struct {
-		string usri1006_home_dir;
-	} USER_INFO_1006;
-
-	[public] typedef struct {
-		string usri1007_comment;
-	} USER_INFO_1007;
-
-	[public] typedef struct {
-		uint32 usri1008_flags;
-	} USER_INFO_1008;
-
-	[public] typedef struct {
-		string usri1009_script_path;
-	} USER_INFO_1009;
-
-	[public] typedef struct {
-		uint32 usri1010_auth_flags;
-	} USER_INFO_1010;
-
-	[public] typedef struct {
-		string usri1011_full_name;
-	} USER_INFO_1011;
-
-	[public] typedef struct {
-		string usri1012_usr_comment;
-	} USER_INFO_1012;
-
-	[public] typedef struct {
-		string usri1013_parms;
-	} USER_INFO_1013;
-
-	[public] typedef struct {
-		string usri1014_workstations;
-	} USER_INFO_1014;
-
-	[public] typedef struct {
-		uint32 usri1017_acct_expires;
-	} USER_INFO_1017;
-
-	[public] typedef struct {
-		uint32 usri1018_max_storage;
-	} USER_INFO_1018;
-
-	[public] typedef struct {
-		uint32 usri1020_units_per_week;
-		uint8 *usri1020_logon_hours;
-	} USER_INFO_1020;
-
-	[public] typedef struct {
-		string usri1023_logon_server;
-	} USER_INFO_1023;
-
-	[public] typedef struct {
-		uint32 usri1024_country_code;
-	} USER_INFO_1024;
-
-	[public] typedef struct {
-		uint32 usri1025_code_page;
-	} USER_INFO_1025;
-
-	[public] typedef struct {
-		uint32 usri1051_primary_group_id;
-	} USER_INFO_1051;
-
-	[public] typedef struct {
-		string usri1052_profile;
-	} USER_INFO_1052;
-
-	[public] typedef struct {
-		string usri1053_home_dir_drive;
-	} USER_INFO_1053;
-
-	[public] typedef struct {
-		string usriX_name;
-		string usriX_password;
-		uint32 usriX_password_age;
-		uint32 usriX_priv;
-		string usriX_home_dir;
-		string usriX_comment;
-		uint32 usriX_flags;
-		string usriX_script_path;
-		uint32 usriX_auth_flags;
-		string usriX_full_name;
-		string usriX_usr_comment;
-		string usriX_parms;
-		string usriX_workstations;
-		uint32 usriX_last_logon;
-		uint32 usriX_last_logoff;
-		uint32 usriX_acct_expires;
-		uint32 usriX_max_storage;
-		uint32 usriX_units_per_week;
-		uint8 *usriX_logon_hours;
-		uint32 usriX_bad_pw_count;
-		uint32 usriX_num_logons;
-		string usriX_logon_server;
-		uint32 usriX_country_code;
-		uint32 usriX_code_page;
-		string usriX_profile;
-		string usriX_home_dir_drive;
-		uint32 usriX_primary_group_id;
-	} USER_INFO_X;
-
 	[nopush,nopull] NET_API_STATUS NetUserAdd(
 		[in,unique] string *server_name,
 		[in] uint32 level,
@@ -527,25 +118,11 @@
 		[out,ref] uint32 *parm_error
 		);
 
-	/*******************************************/
-	/* NetUserDel                              */
-	/*******************************************/
-
 	[nopush,nopull] NET_API_STATUS NetUserDel(
 		[in,unique] string *server_name,
 		[in,ref] string *user_name
 		);
 
-	/*******************************************/
-	/* NetUserEnum                             */
-	/*******************************************/
-
-	const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
-	const int FILTER_NORMAL_ACCOUNT = 0x0002;
-	const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
-	const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
-	const int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
-
 	[nopush,nopull] NET_API_STATUS NetUserEnum(
 		[in,unique] string *server_name,
 		[in] uint32 level,
@@ -557,176 +134,7 @@
 		[in,out,ref] uint32 *resume_handle
 		);
 
-	/*******************************************/
-	/* NetUserChangePassword                   */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetUserChangePassword(
-		[in] string domain_name,
-		[in] string user_name,
-		[in] string old_password,
-		[in] string new_password
-		);
-
-	/*******************************************/
-	/* NetUserGetInfo                          */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetUserGetInfo(
-		[in] string server_name,
-		[in] string user_name,
-		[in] uint32 level,
-		[out] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetUserSetInfo                          */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetUserSetInfo(
-		[in] string server_name,
-		[in] string user_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetUserGetGroups                        */
-	/*******************************************/
-
 	[public] typedef struct {
-		string grui0_name;
-	} GROUP_USERS_INFO_0;
-
-	[public] typedef struct {
-		string grui1_name;
-		uint32 grui1_attributes;
-	} GROUP_USERS_INFO_1;
-
-	[nopush,nopull] NET_API_STATUS NetUserGetGroups(
-		[in] string server_name,
-		[in] string user_name,
-		[in] uint32 level,
-		[out] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out,ref] uint32 *entries_read,
-		[out,ref] uint32 *total_entries
-		);
-
-	/*******************************************/
-	/* NetUserSetGroups                        */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetUserSetGroups(
-		[in] string server_name,
-		[in] string user_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[in] uint32 num_entries
-		);
-
-	/*******************************************/
-	/* NetUserGetLocalGroups                   */
-	/*******************************************/
-
-	const int LG_INCLUDE_INDIRECT = 0x0001;
-
-	typedef struct {
-		string lgrui0_name;
-	} LOCALGROUP_USERS_INFO_0;
-
-	[nopush,nopull] NET_API_STATUS NetUserGetLocalGroups(
-		[in] string server_name,
-		[in] string user_name,
-		[in] uint32 level,
-		[in] uint32 flags,
-		[out] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out,ref] uint32 *entries_read,
-		[out,ref] uint32 *total_entries
-		);
-
-	/*******************************************/
-	/* NetUserModalsGet                        */
-	/*******************************************/
-
-	const int TIMEQ_FOREVER = (uint32_t)-1L;
-
-	typedef struct {
-		uint32 usrmod0_min_passwd_len;
-		uint32 usrmod0_max_passwd_age;
-		uint32 usrmod0_min_passwd_age;
-		uint32 usrmod0_force_logoff;
-		uint32 usrmod0_password_hist_len;
-	} USER_MODALS_INFO_0;
-
-	typedef struct {
-		uint32 usrmod1_role;
-		string usrmod1_primary;
-	} USER_MODALS_INFO_1;
-
-	typedef struct {
-		string usrmod2_domain_name;
-		domsid *usrmod2_domain_id;
-	} USER_MODALS_INFO_2;
-
-	typedef struct {
-		uint32 usrmod3_lockout_duration;
-		uint32 usrmod3_lockout_observation_window;
-		uint32 usrmod3_lockout_threshold;
-	} USER_MODALS_INFO_3;
-
-	typedef struct {
-		uint32 usrmod1001_min_passwd_len;
-	} USER_MODALS_INFO_1001;
-
-	typedef struct {
-		uint32 usrmod1002_max_passwd_age;
-	} USER_MODALS_INFO_1002;
-
-	typedef struct {
-		uint32 usrmod1003_min_passwd_age;
-	} USER_MODALS_INFO_1003;
-
-	typedef struct {
-		uint32 usrmod1004_force_logoff;
-	} USER_MODALS_INFO_1004;
-
-	typedef struct {
-		uint32 usrmod1005_password_hist_len;
-	} USER_MODALS_INFO_1005;
-
-	typedef struct {
-		uint32 usrmod1006_role;
-	} USER_MODALS_INFO_1006;
-
-	typedef struct {
-		string usrmod1007_primary;
-	} USER_MODALS_INFO_1007;
-
-	[nopush,nopull] NET_API_STATUS NetUserModalsGet(
-		[in] string server_name,
-		[in] uint32 level,
-		[out,ref] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetUserModalsSet                        */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetUserModalsSet(
-		[in] string server_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out,ref] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetQueryDisplayInformation              */
-	/*******************************************/
-
-	[public] typedef struct {
 		string usri1_name;
 		string usri1_comment;
 		uint32 usri1_flags;
@@ -760,478 +168,4 @@
 		[out,ref] uint32 *entries_read,
 		[out,ref,noprint] void **buffer
 		);
-
-	/*******************************************/
-	/* NetGroupAdd                             */
-	/*******************************************/
-
-	typedef struct {
-		string grpi0_name;
-	} GROUP_INFO_0;
-
-	typedef struct {
-		string grpi1_name;
-		string grpi1_comment;
-	} GROUP_INFO_1;
-
-	typedef struct {
-		string grpi2_name;
-		string grpi2_comment;
-		uint32 grpi2_group_id;
-		uint32 grpi2_attributes;
-	} GROUP_INFO_2;
-
-	typedef struct {
-		string grpi3_name;
-		string grpi3_comment;
-		domsid *grpi3_group_sid;
-		uint32 grpi3_attributes;
-	} GROUP_INFO_3;
-
-	typedef struct {
-		string grpi1002_comment;
-	} GROUP_INFO_1002;
-
-	typedef struct {
-		uint32 grpi1005_attributes;
-	} GROUP_INFO_1005;
-
-	[nopush,nopull] NET_API_STATUS NetGroupAdd(
-		[in] string server_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetGroupDel                             */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupDel(
-		[in] string server_name,
-		[in] string group_name
-		);
-
-	/*******************************************/
-	/* NetGroupEnum                            */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupEnum(
-		[in] string server_name,
-		[in] uint32 level,
-		[out,ref] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out,ref] uint32 *entries_read,
-		[out,ref] uint32 *total_entries,
-		[in,out,ref] uint32 *resume_handle
-		);
-
-	/*******************************************/
-	/* NetGroupSetInfo                         */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupSetInfo(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetGroupGetInfo                         */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupGetInfo(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[out] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetGroupAddUser                         */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupAddUser(
-		[in] string server_name,
-		[in] string group_name,
-		[in] string user_name
-		);
-
-	/*******************************************/
-	/* NetGroupDelUser                         */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupDelUser(
-		[in] string server_name,
-		[in] string group_name,
-		[in] string user_name
-		);
-
-	/*******************************************/
-	/* NetGroupGetUsers                        */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupGetUsers(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[out] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out,ref] uint32 *entries_read,
-		[out,ref] uint32 *total_entries,
-		[in,out,ref] uint32 *resume_handle
-		);
-
-	/*******************************************/
-	/* NetGroupSetUsers                        */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetGroupSetUsers(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[in] uint32 num_entries
-		);
-
-	/*******************************************/
-	/* NetLocalGroupAdd                        */
-	/*******************************************/
-
-	typedef struct {
-		string lgrpi0_name;
-	} LOCALGROUP_INFO_0;
-
-	typedef struct {
-		string lgrpi1_name;
-		string lgrpi1_comment;
-	} LOCALGROUP_INFO_1;
-
-	typedef struct {
-		string lgrpi1002_comment;
-	} LOCALGROUP_INFO_1002;
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupAdd(
-		[in] string server_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out,ref] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetLocalGroupDel                        */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupDel(
-		[in] string server_name,
-		[in] string group_name
-		);
-
-	/*******************************************/
-	/* NetLocalGroupGetInfo                    */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[out,ref] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetLocalGroupSetInfo                    */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupSetInfo(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[in,ref] uint8 *buffer,
-		[out,ref] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetLocalGroupEnum                       */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupEnum(
-		[in] string server_name,
-		[in] uint32 level,
-		[out,ref] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out,ref] uint32 *entries_read,
-		[out,ref] uint32 *total_entries,
-		[in,out,ref] uint32 *resume_handle
-		);
-
-	/*******************************************/
-	/* NetLocalGroupAddMembers                 */
-	/*******************************************/
-
-	typedef enum {
-		SidTypeUser		= 1,
-		SidTypeGroup		= 2,
-		SidTypeDomain		= 3,
-		SidTypeAlias		= 4,
-		SidTypeWellKnownGroup	= 5,
-		SidTypeDeletedAccount	= 6,
-		SidTypeInvalid		= 7,
-		SidTypeUnknown		= 8,
-		SidTypeComputer		= 9,
-		SidTypeLabel		= 10
-	} SID_NAME_USE;
-
-	typedef struct {
-		domsid *lgrmi0_sid;
-	} LOCALGROUP_MEMBERS_INFO_0;
-
-	typedef struct {
-		domsid *lgrmi1_sid;
-		SID_NAME_USE lgrmi1_sidusage;
-		string lgrmi1_name;
-	} LOCALGROUP_MEMBERS_INFO_1;
-
-	typedef struct {
-		domsid *lgrmi2_sid;
-		SID_NAME_USE lgrmi2_sidusage;
-		string lgrmi2_domainandname;
-	} LOCALGROUP_MEMBERS_INFO_2;
-
-	typedef struct {
-		string lgrmi3_domainandname;
-	} LOCALGROUP_MEMBERS_INFO_3;
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupAddMembers(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[in] uint32 total_entries
-		);
-
-	/*******************************************/
-	/* NetLocalGroupDelMembers                 */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupDelMembers(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[in] uint32 total_entries
-		);
-
-	/*******************************************/
-	/* NetLocalGroupGetMembers                 */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupGetMembers(
-		[in] string server_name,
-		[in] string local_group_name,
-		[in] uint32 level,
-		[out] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out] uint32 *entries_read,
-		[out] uint32 *total_entries,
-		[in,out] uint32 *resume_handle
-		);
-
-	/*******************************************/
-	/* NetLocalGroupSetMembers                 */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetLocalGroupSetMembers(
-		[in] string server_name,
-		[in] string group_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[in] uint32 total_entries
-		);
-
-	/*******************************************/
-	/* NetRemoteTOD                            */
-	/*******************************************/
-
-	typedef struct {
-		uint32 tod_elapsedt;
-		uint32 tod_msecs;
-		uint32 tod_hours;
-		uint32 tod_mins;
-		uint32 tod_secs;
-		uint32 tod_hunds;
-		int32 tod_timezone;
-		uint32 tod_tinterval;
-		uint32 tod_day;
-		uint32 tod_month;
-		uint32 tod_year;
-		uint32 tod_weekday;
-	} TIME_OF_DAY_INFO;
-
-	[nopush,nopull] NET_API_STATUS NetRemoteTOD(
-		[in] string server_name,
-		[out,ref] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetShareAdd                             */
-	/*******************************************/
-
-	typedef struct {
-		string shi0_netname;
-	} SHARE_INFO_0;
-
-	typedef struct {
-		string shi1_netname;
-		uint32 shi1_type;
-		string shi1_remark;
-	} SHARE_INFO_1;
-
-	typedef struct {
-		string shi2_netname;
-		uint32 shi2_type;
-		string shi2_remark;
-		uint32 shi2_permissions;
-		uint32 shi2_max_uses;
-		uint32 shi2_current_uses;
-		string shi2_path;
-		string shi2_passwd;
-	} SHARE_INFO_2;
-
-	typedef struct {
-		string shi501_netname;
-		uint32 shi501_type;
-		string shi501_remark;
-		uint32 shi501_flags;
-	} SHARE_INFO_501;
-
-	typedef struct {
-		string shi1004_remark;
-	} SHARE_INFO_1004;
-
-	const int CSC_MASK = 0x30;
-
-	typedef [public,bitmap32bit] bitmap {
-		SHI1005_FLAGS_DFS				= 0x01,
-		SHI1005_FLAGS_DFS_ROOT				= 0x02,
-		CSC_CACHE_MANUAL_REINT				= 0x00,
-		CSC_CACHE_AUTO_REINT				= 0x10,
-		CSC_CACHE_VDO					= 0x20,
-		CSC_CACHE_NONE					= 0x30,
-		SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS		= 0x0100,
-		SHI1005_FLAGS_FORCE_SHARED_DELETE		= 0x0200,
-		SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING		= 0x0400,
-		SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM	= 0x0800
-	} SHARE_INFO_1005_FLAGS;
-
-	typedef struct {
-		SHARE_INFO_1005_FLAGS shi1005_flags;
-	} SHARE_INFO_1005;
-
-	typedef struct {
-		uint32 shi1006_max_uses;
-	} SHARE_INFO_1006;
-
-	[nopush,nopull] NET_API_STATUS NetShareAdd(
-		[in] string server_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetShareDel                             */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetShareDel(
-		[in] string server_name,
-		[in] string net_name,
-		[in] uint32 reserved
-		);
-
-	/*******************************************/
-	/* NetShareEnum                            */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetShareEnum(
-		[in] string server_name,
-		[in] uint32 level,
-		[out] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out] uint32 *entries_read,
-		[out] uint32 *total_entries,
-		[in,out] uint32 *resume_handle
-		);
-
-	/*******************************************/
-	/* NetShareGetInfo                         */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetShareGetInfo(
-		[in] string server_name,
-		[in] string net_name,
-		[in] uint32 level,
-		[out] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetShareSetInfo                         */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetShareSetInfo(
-		[in] string server_name,
-		[in] string net_name,
-		[in] uint32 level,
-		[in] uint8 *buffer,
-		[out] uint32 *parm_err
-		);
-
-	/*******************************************/
-	/* NetFileClose                            */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetFileClose(
-		[in] string server_name,
-		[in] uint32 fileid
-		);
-
-	/*******************************************/
-	/* NetFileGetInfo                          */
-	/*******************************************/
-
-	typedef struct {
-		uint32 fi2_id;
-	} FILE_INFO_2;
-
-	typedef struct {
-		uint32 fi3_id;
-		uint32 fi3_permissions;
-		uint32 fi3_num_locks;
-		string fi3_pathname;
-		string fi3_username;
-	} FILE_INFO_3;
-
-	[nopush,nopull] NET_API_STATUS NetFileGetInfo(
-		[in] string server_name,
-		[in] uint32 fileid,
-		[in] uint32 level,
-		[out] uint8 **buffer
-		);
-
-	/*******************************************/
-	/* NetFileEnum                             */
-	/*******************************************/
-
-	[nopush,nopull] NET_API_STATUS NetFileEnum(
-		[in] string server_name,
-		[in] string base_path,
-		[in] string user_name,
-		[in] uint32 level,
-		[out] uint8 **buffer,
-		[in] uint32 prefmaxlen,
-		[out] uint32 *entries_read,
-		[out] uint32 *total_entries,
-		[in,out] uint32 *resume_handle
-		);
 }

Modified: branches/samba/upstream/source/librpc/idl/ntsvcs.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/ntsvcs.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/ntsvcs.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,6 +1,7 @@
 /*
   plug and play services
 */
+
 [
   uuid("8d9f4e40-a03d-11ce-8f69-08003e30051b"),
   version(1.0),
@@ -85,18 +86,8 @@
 	/******************/
 	/* Function: 0x0d */
 
-	const int DEV_REGPROP_DESC = 1;
+	WERROR PNP_GetDeviceRegProp();
 
-	WERROR PNP_GetDeviceRegProp(
-		[in,ref] [string,charset(UTF16)] uint16 *devicepath,
-		[in] uint32 property,
-		[in,out,ref] uint32 *unknown1,
-		[out,ref] [size_is(*buffer_size)] [length_is(*buffer_size)] uint8 *buffer,
-		[in,out,ref] uint32 *buffer_size,
-		[in,out,ref] uint32 *needed,
-		[in] uint32 unknown3
-		);
-
 	/******************/
 	/* Function: 0x0e */
 

Modified: branches/samba/upstream/source/librpc/idl/svcctl.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/svcctl.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/svcctl.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -205,10 +205,10 @@
 	WERROR svcctl_EnumDependentServicesW(
 		[in,ref] policy_handle *service,
 		[in] uint32 state,
-		[out,ref,size_is(buf_size)] uint8 *service_status,
-		[in,range(0,0x40000)] uint32 buf_size,
-		[out,ref,range(0,0x40000)] uint32 *bytes_needed,
-		[out,ref,range(0,0x40000)] uint32 *services_returned
+		[out,unique] ENUM_SERVICE_STATUS *service_status,
+		[in] uint32 buf_size,
+		[out,ref] uint32 *bytes_needed,
+		[out,ref] uint32 *services_returned
 	);
 
 	/*****************/
@@ -226,40 +226,19 @@
 
 	/*****************/
 	/* Function 0x0f */
-	typedef [bitmap32bit] bitmap {
-		SC_RIGHT_MGR_CONNECT		= 0x0001,
-		SC_RIGHT_MGR_CREATE_SERVICE	= 0x0002,
-		SC_RIGHT_MGR_ENUMERATE_SERVICE	= 0x0004,
-		SC_RIGHT_MGR_LOCK		= 0x0008,
-		SC_RIGHT_MGR_QUERY_LOCK_STATUS	= 0x0010,
-		SC_RIGHT_MGR_MODIFY_BOOT_CONFIG	= 0x0020
-	} svcctl_MgrAccessMask;
-
 	WERROR svcctl_OpenSCManagerW(
 		[in,unique] [string,charset(UTF16)] uint16 *MachineName,
 		[in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
-		[in] svcctl_MgrAccessMask access_mask,
+		[in] uint32 access_mask,
 		[out,ref] policy_handle *handle
 	);
 
 	/*****************/
 	/* Function 0x10 */
-	typedef [bitmap32bit] bitmap {
-		SC_RIGHT_SVC_QUERY_CONFIG		= 0x0001,
-		SC_RIGHT_SVC_CHANGE_CONFIG		= 0x0002,
-		SC_RIGHT_SVC_QUERY_STATUS		= 0x0004,
-		SC_RIGHT_SVC_ENUMERATE_DEPENDENTS	= 0x0008,
-		SC_RIGHT_SVC_START			= 0x0010,
-		SC_RIGHT_SVC_STOP			= 0x0020,
-		SC_RIGHT_SVC_PAUSE_CONTINUE		= 0x0040,
-		SC_RIGHT_SVC_INTERROGATE		= 0x0080,
-		SC_RIGHT_SVC_USER_DEFINED_CONTROL	= 0x0100
-	} svcctl_ServiceAccessMask;
-
 	WERROR svcctl_OpenServiceW(
 		[in,ref] policy_handle *scmanager_handle,
 		[in] [string,charset(UTF16)] uint16 ServiceName[],
-		[in] svcctl_ServiceAccessMask access_mask,
+		[in] uint32 access_mask,
 		[out,ref] policy_handle *handle
 	);
 

Modified: branches/samba/upstream/source/librpc/idl/winreg.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/winreg.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/winreg.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -307,7 +307,7 @@
 		[in,unique] initshutdown_String *message,
 		[in]	uint32 timeout,
 		[in]	uint8 force_apps,
-		[in]	uint8 do_reboot
+		[in]	uint8 reboot
 	);
 
 	/******************/
@@ -363,7 +363,7 @@
 		[in,unique] initshutdown_String *message,
 		[in] uint32 timeout,
 		[in] uint8 force_apps,
-		[in] uint8 do_reboot,
+		[in] uint8 reboot,
 		[in] uint32 reason
 	);
 

Modified: branches/samba/upstream/source/librpc/idl/wkssvc.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/wkssvc.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/wkssvc.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -627,10 +627,10 @@
 	/*****************************/
 	/* Function        0x14      */
 	typedef enum {
-		NET_SETUP_UNKNOWN_STATUS = 0,
-		NET_SETUP_UNJOINED = 1,
-		NET_SETUP_WORKGROUP_NAME = 2,
-		NET_SETUP_DOMAIN_NAME = 3
+		NetSetupUnknownStatus = 0,
+		NetSetupUnjoined = 1,
+		NetSetupWorkgroupName = 2,
+		NetSetupDomainName = 3
 	} wkssvc_NetJoinStatus;
 
 	WERROR wkssvc_NetrGetJoinInformation(

Modified: branches/samba/upstream/source/librpc/idl/xattr.idl
===================================================================
--- branches/samba/upstream/source/librpc/idl/xattr.idl	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/idl/xattr.idl	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,35 +20,4 @@
 		uint32 num_xattrs;
 		tdb_xattr xattrs[num_xattrs];
 	} tdb_xattrs;
-
-	/* we store the NT ACL a NTACL xattr. It is versioned so we
-	   can later add other acl attribs (such as posix acl mapping)
-
-	   we put this xattr in the security namespace to ensure that
-	   only trusted users can write to the ACL
-
-	   stored in "security.NTACL"
-
-	   Version 1. raw SD stored as Samba4 does it.
-	   Version 2. raw SD + last changed timestamp so we
-		      can discard if this doesn't match the POSIX st_ctime.
-        */
-
-	const char *XATTR_NTACL_NAME = "security.NTACL";
-
-	typedef [public] struct {
-		security_descriptor *sd;
-		NTTIME last_changed;
-	} security_descriptor_timestamp;
-
-        typedef [switch_type(uint16)] union {
-                [case(1)] security_descriptor *sd;
-		[case(2)] security_descriptor_timestamp *sd_ts;
-        } xattr_NTACL_Info;
-
-        typedef [public] struct {
-                uint16 version;
-                [switch_is(version)] xattr_NTACL_Info info;
-        } xattr_NTACL;
-
 }

Modified: branches/samba/upstream/source/librpc/ndr/libndr.h
===================================================================
--- branches/samba/upstream/source/librpc/ndr/libndr.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/libndr.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -348,7 +348,4 @@
 void ndr_print_ ## name(struct ndr_print *ndr, const char *var_name, const type *v);
 
 
-void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
-size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags);
-
 #endif /* __LIBNDR_H__ */

Deleted: branches/samba/upstream/source/librpc/ndr/ndr_compression.c
===================================================================
--- branches/samba/upstream/source/librpc/ndr/ndr_compression.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/ndr_compression.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,293 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-
-   libndr compression support
-
-   Copyright (C) Stefan Metzmacher 2005
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "lib/compression/mszip.h"
-#include "librpc/ndr/libndr.h"
-#include "librpc/ndr/ndr_compression.h"
-
-static enum ndr_err_code ndr_pull_compression_mszip_chunk(struct ndr_pull *ndrpull,
-						 struct ndr_push *ndrpush,
-						 struct decomp_state *decomp_state,
-						 bool *last)
-{
-	DATA_BLOB comp_chunk;
-	uint32_t comp_chunk_offset;
-	uint32_t comp_chunk_size;
-	DATA_BLOB plain_chunk;
-	uint32_t plain_chunk_offset;
-	uint32_t plain_chunk_size;
-	int ret;
-
-	NDR_CHECK(ndr_pull_uint32(ndrpull, NDR_SCALARS, &plain_chunk_size));
-	if (plain_chunk_size > 0x00008000) {
-		return ndr_pull_error(ndrpull, NDR_ERR_COMPRESSION, "Bad MSZIP plain chunk size %08X > 0x00008000 (PULL)",
-				      plain_chunk_size);
-	}
-
-	NDR_CHECK(ndr_pull_uint32(ndrpull, NDR_SCALARS, &comp_chunk_size));
-
-	DEBUG(10,("MSZIP plain_chunk_size: %08X (%u) comp_chunk_size: %08X (%u)\n",
-		  plain_chunk_size, plain_chunk_size, comp_chunk_size, comp_chunk_size));
-
-	comp_chunk_offset = ndrpull->offset;
-	NDR_CHECK(ndr_pull_advance(ndrpull, comp_chunk_size));
-	comp_chunk.length = comp_chunk_size;
-	comp_chunk.data = ndrpull->data + comp_chunk_offset;
-
-	plain_chunk_offset = ndrpush->offset;
-	NDR_CHECK(ndr_push_zero(ndrpush, plain_chunk_size));
-	plain_chunk.length = plain_chunk_size;
-	plain_chunk.data = ndrpush->data + plain_chunk_offset;
-
-	ret = ZIPdecompress(decomp_state, &comp_chunk, &plain_chunk);
-	if (ret != DECR_OK) {
-		return ndr_pull_error(ndrpull, NDR_ERR_COMPRESSION, "Bad ZIPdecompress() error %d (PULL)",
-				      ret);
-	}
-
-	if ((plain_chunk_size < 0x00008000) || (ndrpull->offset+4 >= ndrpull->data_size)) {
-		/* this is the last chunk */
-		*last = true;
-	}
-
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_compression_mszip(struct ndr_pull *subndr,
-					   struct ndr_pull **_comndr,
-					   ssize_t decompressed_len)
-{
-	struct ndr_push *ndrpush;
-	struct ndr_pull *comndr;
-	DATA_BLOB uncompressed;
-	uint32_t payload_header[4];
-	uint32_t payload_size;
-	uint32_t payload_offset;
-	uint8_t *payload;
-	struct decomp_state *decomp_state;
-	bool last = false;
-
-	ndrpush = ndr_push_init_ctx(subndr);
-	NDR_ERR_HAVE_NO_MEMORY(ndrpush);
-
-	decomp_state = ZIPdecomp_state(subndr);
-	NDR_ERR_HAVE_NO_MEMORY(decomp_state);
-
-	while (!last) {
-		NDR_CHECK(ndr_pull_compression_mszip_chunk(subndr, ndrpush, decomp_state, &last));
-	}
-
-	uncompressed = ndr_push_blob(ndrpush);
-
-	if (uncompressed.length != decompressed_len) {
-		return ndr_pull_error(subndr, NDR_ERR_COMPRESSION, "Bad MSZIP uncompressed_len [%u] != [%d] (PULL)",
-				      (int)uncompressed.length, (int)decompressed_len);
-	}
-
-	comndr = talloc_zero(subndr, struct ndr_pull);
-	NDR_ERR_HAVE_NO_MEMORY(comndr);
-	comndr->flags		= subndr->flags;
-	comndr->current_mem_ctx	= subndr->current_mem_ctx;
-
-	comndr->data		= uncompressed.data;
-	comndr->data_size	= uncompressed.length;
-	comndr->offset		= 0;
-
-	NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[0]));
-	NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[1]));
-	NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[2]));
-	NDR_CHECK(ndr_pull_uint32(comndr, NDR_SCALARS, &payload_header[3]));
-
-	if (payload_header[0] != 0x00081001) {
-		return ndr_pull_error(subndr, NDR_ERR_COMPRESSION, "Bad MSZIP payload_header[0] [0x%08X] != [0x00081001] (PULL)",
-				      payload_header[0]);
-	}
-	if (payload_header[1] != 0xCCCCCCCC) {
-		return ndr_pull_error(subndr, NDR_ERR_COMPRESSION, "Bad MSZIP payload_header[1] [0x%08X] != [0xCCCCCCCC] (PULL)",
-				      payload_header[1]);
-	}
-
-	payload_size = payload_header[2];
-
-	if (payload_header[3] != 0x00000000) {
-		return ndr_pull_error(subndr, NDR_ERR_COMPRESSION, "Bad MSZIP payload_header[3] [0x%08X] != [0x00000000] (PULL)",
-				      payload_header[3]);
-	}
-
-	payload_offset = comndr->offset;
-	NDR_CHECK(ndr_pull_advance(comndr, payload_size));
-	payload = comndr->data + payload_offset;
-
-	comndr->data		= payload;
-	comndr->data_size	= payload_size;
-	comndr->offset		= 0;
-
-	*_comndr = comndr;
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_push_compression_mszip(struct ndr_push *subndr,
-					   struct ndr_push *comndr)
-{
-	return ndr_push_error(subndr, NDR_ERR_COMPRESSION, "Sorry MSZIP compression is not supported yet (PUSH)");
-}
-
-static enum ndr_err_code ndr_pull_compression_xpress_chunk(struct ndr_pull *ndrpull,
-						  struct ndr_push *ndrpush,
-						  bool *last)
-{
-	DATA_BLOB comp_chunk;
-	uint32_t comp_chunk_offset;
-	uint32_t comp_chunk_size;
-	uint32_t plain_chunk_size;
-
-	comp_chunk_offset = ndrpull->offset;
-
-	NDR_CHECK(ndr_pull_uint32(ndrpull, NDR_SCALARS, &plain_chunk_size));
-	if (plain_chunk_size > 0x00010000) {
-		return ndr_pull_error(ndrpull, NDR_ERR_COMPRESSION, "Bad XPRESS plain chunk size %08X > 0x00010000 (PULL)",
-				      plain_chunk_size);
-	}
-
-	NDR_CHECK(ndr_pull_uint32(ndrpull, NDR_SCALARS, &comp_chunk_size));
-
-	NDR_CHECK(ndr_pull_advance(ndrpull, comp_chunk_size));
-	comp_chunk.length = comp_chunk_size + 8;
-	comp_chunk.data = ndrpull->data + comp_chunk_offset;
-
-	DEBUG(10,("XPRESS plain_chunk_size: %08X (%u) comp_chunk_size: %08X (%u)\n",
-		  plain_chunk_size, plain_chunk_size, comp_chunk_size, comp_chunk_size));
-
-	/* For now, we just copy over the compressed blob */
-	NDR_CHECK(ndr_push_bytes(ndrpush, comp_chunk.data, comp_chunk.length));
-
-	if ((plain_chunk_size < 0x00010000) || (ndrpull->offset+4 >= ndrpull->data_size)) {
-		/* this is the last chunk */
-		*last = true;
-	}
-
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_compression_xpress(struct ndr_pull *subndr,
-					    struct ndr_pull **_comndr,
-					    ssize_t decompressed_len)
-{
-	struct ndr_push *ndrpush;
-	struct ndr_pull *comndr;
-	DATA_BLOB uncompressed;
-	bool last = false;
-
-	ndrpush = ndr_push_init_ctx(subndr);
-	NDR_ERR_HAVE_NO_MEMORY(ndrpush);
-
-	while (!last) {
-		NDR_CHECK(ndr_pull_compression_xpress_chunk(subndr, ndrpush, &last));
-	}
-
-	uncompressed = ndr_push_blob(ndrpush);
-
-	comndr = talloc_zero(subndr, struct ndr_pull);
-	NDR_ERR_HAVE_NO_MEMORY(comndr);
-	comndr->flags		= subndr->flags;
-	comndr->current_mem_ctx	= subndr->current_mem_ctx;
-
-	comndr->data		= uncompressed.data;
-	comndr->data_size	= uncompressed.length;
-	comndr->offset		= 0;
-
-	*_comndr = comndr;
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_push_compression_xpress(struct ndr_push *subndr,
-					    struct ndr_push *comndr)
-{
-	return ndr_push_error(subndr, NDR_ERR_COMPRESSION, "XPRESS compression is not supported yet (PUSH)");
-}
-
-/*
-  handle compressed subcontext buffers, which in midl land are user-marshalled, but
-  we use magic in pidl to make them easier to cope with
-*/
-enum ndr_err_code ndr_pull_compression_start(struct ndr_pull *subndr,
-				    struct ndr_pull **_comndr,
-				    enum ndr_compression_alg compression_alg,
-				    ssize_t decompressed_len)
-{
-	switch (compression_alg) {
-	case NDR_COMPRESSION_MSZIP:
-		return ndr_pull_compression_mszip(subndr, _comndr, decompressed_len);
-	case NDR_COMPRESSION_XPRESS:
-		return ndr_pull_compression_xpress(subndr, _comndr, decompressed_len);
-	default:
-		return ndr_pull_error(subndr, NDR_ERR_COMPRESSION, "Bad compression algorithm %d (PULL)",
-				      compression_alg);
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_compression_end(struct ndr_pull *subndr,
-				  struct ndr_pull *comndr,
-				  enum ndr_compression_alg compression_alg,
-				  ssize_t decompressed_len)
-{
-	return NDR_ERR_SUCCESS;
-}
-
-/*
-  push a compressed subcontext
-*/
-enum ndr_err_code ndr_push_compression_start(struct ndr_push *subndr,
-				    struct ndr_push **_comndr,
-				    enum ndr_compression_alg compression_alg,
-				    ssize_t decompressed_len)
-{
-	struct ndr_push *comndr;
-
-	comndr = ndr_push_init_ctx(subndr);
-	NDR_ERR_HAVE_NO_MEMORY(comndr);
-	comndr->flags	= subndr->flags;
-
-	*_comndr = comndr;
-	return NDR_ERR_SUCCESS;
-}
-
-/*
-  push a compressed subcontext
-*/
-enum ndr_err_code ndr_push_compression_end(struct ndr_push *subndr,
-				  struct ndr_push *comndr,
-				  enum ndr_compression_alg compression_alg,
-				  ssize_t decompressed_len)
-{
-	switch (compression_alg) {
-	case NDR_COMPRESSION_MSZIP:
-		return ndr_push_compression_mszip(subndr, comndr);
-	case NDR_COMPRESSION_XPRESS:
-		return ndr_push_compression_xpress(subndr, comndr);
-	default:
-		return ndr_push_error(subndr, NDR_ERR_COMPRESSION, "Bad compression algorithm %d (PUSH)",
-				      compression_alg);
-	}
-	return NDR_ERR_SUCCESS;
-}

Deleted: branches/samba/upstream/source/librpc/ndr/ndr_compression.h
===================================================================
--- branches/samba/upstream/source/librpc/ndr/ndr_compression.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/ndr_compression.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,51 +0,0 @@
-#ifndef __LIBRPC_NDR_NDR_COMPRESSION_H__
-#define __LIBRPC_NDR_NDR_COMPRESSION_H__
-
-#undef _PRINTF_ATTRIBUTE
-#define _PRINTF_ATTRIBUTE(a1, a2) PRINTF_ATTRIBUTE(a1, a2)
-/* This file was automatically generated by mkproto.pl. DO NOT EDIT */
-
-#ifndef _PUBLIC_
-#define _PUBLIC_
-#endif
-
-#ifndef _PURE_
-#define _PURE_
-#endif
-
-#ifndef _NORETURN_
-#define _NORETURN_
-#endif
-
-#ifndef _DEPRECATED_
-#define _DEPRECATED_
-#endif
-
-#ifndef _WARN_UNUSED_RESULT_
-#define _WARN_UNUSED_RESULT_
-#endif
-
-
-/* The following definitions come from librpc/ndr/ndr_compression.c  */
-
-enum ndr_err_code ndr_pull_compression_start(struct ndr_pull *subndr,
-				    struct ndr_pull **_comndr,
-				    enum ndr_compression_alg compression_alg,
-				    ssize_t decompressed_len);
-enum ndr_err_code ndr_pull_compression_end(struct ndr_pull *subndr,
-				  struct ndr_pull *comndr,
-				  enum ndr_compression_alg compression_alg,
-				  ssize_t decompressed_len);
-enum ndr_err_code ndr_push_compression_start(struct ndr_push *subndr,
-				    struct ndr_push **_comndr,
-				    enum ndr_compression_alg compression_alg,
-				    ssize_t decompressed_len);
-enum ndr_err_code ndr_push_compression_end(struct ndr_push *subndr,
-				  struct ndr_push *comndr,
-				  enum ndr_compression_alg compression_alg,
-				  ssize_t decompressed_len);
-#undef _PRINTF_ATTRIBUTE
-#define _PRINTF_ATTRIBUTE(a1, a2)
-
-#endif /* __LIBRPC_NDR_NDR_COMPRESSION_H__ */
-

Deleted: branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.c
===================================================================
--- branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,177 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-
-   routines for printing some linked list structs in DRSUAPI
-
-   Copyright (C) Stefan (metze) Metzmacher 2005
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#include "includes.h"
-#include "librpc/gen_ndr/ndr_drsuapi.h"
-#include "librpc/gen_ndr/ndr_misc.h"
-
-void ndr_print_drsuapi_DsReplicaObjectListItem(struct ndr_print *ndr, const char *name,
-					       const struct drsuapi_DsReplicaObjectListItem *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectListItem");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "next_object", r->next_object);
-	ndr_print_drsuapi_DsReplicaObject(ndr, "object", &r->object);
-	ndr->depth--;
-	if (r->next_object) {
-		ndr_print_drsuapi_DsReplicaObjectListItem(ndr, "next_object", r->next_object);
-	}
-}
-
-void ndr_print_drsuapi_DsReplicaObjectListItemEx(struct ndr_print *ndr, const char *name, const struct drsuapi_DsReplicaObjectListItemEx *r)
-{
-	ndr_print_struct(ndr, name, "drsuapi_DsReplicaObjectListItemEx");
-	ndr->depth++;
-	ndr_print_ptr(ndr, "next_object", r->next_object);
-	ndr_print_drsuapi_DsReplicaObject(ndr, "object", &r->object);
-	ndr_print_uint32(ndr, "is_nc_prefix", r->is_nc_prefix);
-	ndr_print_ptr(ndr, "parent_object_guid", r->parent_object_guid);
-	ndr->depth++;
-	if (r->parent_object_guid) {
-		ndr_print_GUID(ndr, "parent_object_guid", r->parent_object_guid);
-	}
-	ndr->depth--;
-	ndr_print_ptr(ndr, "meta_data_ctr", r->meta_data_ctr);
-	ndr->depth++;
-	if (r->meta_data_ctr) {
-		ndr_print_drsuapi_DsReplicaMetaDataCtr(ndr, "meta_data_ctr", r->meta_data_ctr);
-	}
-	ndr->depth--;
-	ndr->depth--;
-	if (r->next_object) {
-		ndr_print_drsuapi_DsReplicaObjectListItemEx(ndr, "next_object", r->next_object);
-	}
-}
-
-#define _OID_PUSH_CHECK(call) do { \
-	bool _status; \
-	_status = call; \
-	if (_status != true) { \
-		return ndr_push_error(ndr, NDR_ERR_SUBCONTEXT, "OID Conversion Error: %s\n", __location__); \
-	} \
-} while (0)
-
-#define _OID_PULL_CHECK(call) do { \
-	bool _status; \
-	_status = call; \
-	if (_status != true) { \
-		return ndr_pull_error(ndr, NDR_ERR_SUBCONTEXT, "OID Conversion Error: %s\n", __location__); \
-	} \
-} while (0)
-
-enum ndr_err_code ndr_push_drsuapi_DsReplicaOID(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOID *r)
-{
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_drsuapi_DsReplicaOID_oid(r->oid, 0)));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->oid));
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->oid) {
-			DATA_BLOB blob;
-
-			if (StrnCaseCmp("ff", r->oid, 2) == 0) {
-				blob = strhex_to_data_blob(NULL, r->oid);
-				if (!blob.data) {
-					return ndr_push_error(ndr, NDR_ERR_SUBCONTEXT,
-							      "HEX String Conversion Error: %s\n",
-							      __location__);
-				}
-			} else {
-				_OID_PUSH_CHECK(ber_write_OID_String(&blob, r->oid));
-			}
-			talloc_steal(ndr, blob.data);
-
-			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, blob.length));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, blob.data, blob.length));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaOID(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOID *r)
-{
-	uint32_t _ptr_oid;
-	TALLOC_CTX *_mem_save_oid_0;
-	if (ndr_flags & NDR_SCALARS) {
-		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__ndr_size));
-		if (r->__ndr_size < 0 || r->__ndr_size > 10000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_oid));
-		if (_ptr_oid) {
-			NDR_PULL_ALLOC(ndr, r->oid);
-		} else {
-			r->oid = NULL;
-		}
-	}
-	if (ndr_flags & NDR_BUFFERS) {
-		if (r->oid) {
-			DATA_BLOB _oid_array;
-			const char *_oid;
-
-			_mem_save_oid_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, ndr, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->oid));
-			_oid_array.length = ndr_get_array_size(ndr, &r->oid);
-			NDR_PULL_ALLOC_N(ndr, _oid_array.data, _oid_array.length);
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, _oid_array.data, _oid_array.length));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_oid_0, 0);
-
-			if (_oid_array.length && _oid_array.data[0] == 0xFF) {
-				_oid = data_blob_hex_string(ndr, &_oid_array);
-				NDR_ERR_HAVE_NO_MEMORY(_oid);
-			} else {
-				_OID_PULL_CHECK(ber_read_OID_String(ndr, _oid_array, &_oid));
-			}
-			TALLOC_FREE(_oid_array.data);
-			talloc_steal(r->oid, _oid);
-			r->oid = _oid;
-		}
-		if (r->oid) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->oid, r->__ndr_size));
-		}
-	}
-	return NDR_ERR_SUCCESS;
-}
-
-size_t ndr_size_drsuapi_DsReplicaOID_oid(const char *oid, int flags)
-{
-	DATA_BLOB _blob;
-	size_t ret = 0;
-
-	if (!oid) return 0;
-
-	if (StrnCaseCmp("ff", oid, 2) == 0) {
-		_blob = strhex_to_data_blob(NULL, oid);
-		if (_blob.data) {
-			ret = _blob.length;
-		}
-	} else {
-		if (ber_write_OID_String(&_blob, oid)) {
-			ret = _blob.length;
-		}
-	}
-	data_blob_free(&_blob);
-	return ret;
-}

Deleted: branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.h
===================================================================
--- branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/ndr_drsuapi.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,35 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   routines for printing some linked list structs in DRSUAPI
-
-   Copyright (C) Stefan (metze) Metzmacher 2005-2006
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _LIBRPC_NDR_NDR_DRSUAPI_H
-#define _LIBRPC_NDR_NDR_DRSUAPI_H
-
-void ndr_print_drsuapi_DsReplicaObjectListItem(struct ndr_print *ndr, const char *name, 
-					       const struct drsuapi_DsReplicaObjectListItem *r);
-
-void ndr_print_drsuapi_DsReplicaObjectListItemEx(struct ndr_print *ndr, const char *name,
-						 const struct drsuapi_DsReplicaObjectListItemEx *r);
-
-enum ndr_err_code ndr_push_drsuapi_DsReplicaOID(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsReplicaOID *r);
-enum ndr_err_code ndr_pull_drsuapi_DsReplicaOID(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsReplicaOID *r);
-size_t ndr_size_drsuapi_DsReplicaOID_oid(const char *oid, int flags);
-
-#endif /* _LIBRPC_NDR_NDR_DRSUAPI_H */

Modified: branches/samba/upstream/source/librpc/ndr/ndr_misc.c
===================================================================
--- branches/samba/upstream/source/librpc/ndr/ndr_misc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/ndr_misc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -43,13 +43,6 @@
 	ndr->print(ndr, "%-25s: %s", name, GUID_string(ndr, guid));
 }
 
-bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1,
-			 const struct ndr_syntax_id *i2)
-{
-	return GUID_equal(&i1->uuid, &i2->uuid)
-		&& (i1->if_version == i2->if_version);
-}
-
 enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r)
 {
 	if (ndr_flags & NDR_SCALARS) {

Modified: branches/samba/upstream/source/librpc/ndr/ndr_string.c
===================================================================
--- branches/samba/upstream/source/librpc/ndr/ndr_string.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/librpc/ndr/ndr_string.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -30,7 +30,7 @@
 	char *as=NULL;
 	uint32_t len1, ofs, len2;
 	uint16_t len3;
-	size_t converted_size;
+	int ret;
 	int chset = CH_UTF16;
 	unsigned byte_mul = 2;
 	unsigned flags = ndr->flags;
@@ -81,15 +81,15 @@
 		if (len2 == 0) {
 			as = talloc_strdup(ndr->current_mem_ctx, "");
 		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx, chset,
-						   CH_UNIX,
-						   ndr->data+ndr->offset,
-						   (len2 + c_len_term)*byte_mul,
-						   (void **)(void *)&as,
-						   &converted_size, false))
-			{
-				return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
-						      "Bad char conversion");
+			ret = convert_string_talloc(ndr->current_mem_ctx,
+						    chset, CH_UNIX, 
+						    ndr->data+ndr->offset, 
+						    (len2 + c_len_term)*byte_mul,
+						    (void **)(void *)&as,
+						    false);
+			if (ret == -1) {
+				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
+						      "Bad character conversion");
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len2 + c_len_term)*byte_mul));
@@ -119,15 +119,15 @@
 		if (len1 == 0) {
 			as = talloc_strdup(ndr->current_mem_ctx, "");
 		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx, chset,
-						   CH_UNIX,
-						   ndr->data+ndr->offset,
-						   (len1 + c_len_term)*byte_mul,
-						   (void **)(void *)&as,
-						   &converted_size, false))
-			{
+			ret = convert_string_talloc(ndr->current_mem_ctx,
+						    chset, CH_UNIX, 
+						    ndr->data+ndr->offset, 
+						    (len1 + c_len_term)*byte_mul,
+						    (void **)(void *)&as,
+						    false);
+			if (ret == -1) {
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad char conversion");
+						      "Bad character conversion");
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
@@ -158,15 +158,15 @@
 		if (len1 == 0) {
 			as = talloc_strdup(ndr->current_mem_ctx, "");
 		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx, chset,
-						   CH_UNIX,
-						   ndr->data+ndr->offset,
-						   (len1 + c_len_term)*byte_mul,
-						   (void **)(void *)&as,
-						   &converted_size, false))
-			{
+			ret = convert_string_talloc(ndr->current_mem_ctx,
+						    chset, CH_UNIX, 
+						    ndr->data+ndr->offset, 
+						    (len1 + c_len_term)*byte_mul,
+						    (void **)(void *)&as,
+						    false);
+			if (ret == -1) {
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad char conversion");
+						      "Bad character conversion");
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
@@ -193,15 +193,15 @@
 		if (len3 == 0) {
 			as = talloc_strdup(ndr->current_mem_ctx, "");
 		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx, chset,
-						   CH_UNIX,
-						   ndr->data+ndr->offset,
-						   (len3 + c_len_term)*byte_mul,
-						   (void **)(void *)&as,
-						   &converted_size, false))
-			{
+			ret = convert_string_talloc(ndr->current_mem_ctx,
+						    chset, CH_UNIX, 
+						    ndr->data+ndr->offset, 
+						    (len3 + c_len_term)*byte_mul,
+						    (void **)(void *)&as,
+						    false);
+			if (ret == -1) {
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad char conversion");
+						      "Bad character conversion");
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len3 + c_len_term)*byte_mul));
@@ -226,14 +226,15 @@
 		if (len3 == 0) {
 			as = talloc_strdup(ndr->current_mem_ctx, "");
 		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx, chset,
-						   CH_UNIX,
-						   ndr->data+ndr->offset, len3,
-						   (void **)(void *)&as,
-						   &converted_size, false))
-			{
+			ret = convert_string_talloc(ndr->current_mem_ctx,
+						    chset, CH_UNIX, 
+						    ndr->data+ndr->offset, 
+						    len3,
+						    (void **)(void *)&as,
+						    false);
+			if (ret == -1) {
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad char conversion");
+						      "Bad character conversion");
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len3));
@@ -246,13 +247,15 @@
 		} else {
 			len1 = utf16_len_n(ndr->data+ndr->offset, ndr->data_size - ndr->offset);
 		}
-		if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
-					   ndr->data+ndr->offset, len1,
-					   (void **)(void *)&as,
-					   &converted_size, false))
-		{
+		ret = convert_string_talloc(ndr->current_mem_ctx,
+					    chset, CH_UNIX, 
+					    ndr->data+ndr->offset, 
+					    len1,
+					    (void **)(void *)&as,
+					    false);
+		if (ret == -1) {
 			return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-					      "Bad char conversion");
+					      "Bad character conversion");
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len1));
 		*s = as;
@@ -262,13 +265,15 @@
 	case LIBNDR_FLAG_STR_FIXLEN32:
 		len1 = (flags & LIBNDR_FLAG_STR_FIXLEN32)?32:15;
 		NDR_PULL_NEED_BYTES(ndr, len1*byte_mul);
-		if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
-					   ndr->data+ndr->offset, len1*byte_mul,
-					   (void **)(void *)&as,
-					   &converted_size, false))
-		{
+		ret = convert_string_talloc(ndr->current_mem_ctx,
+					    chset, CH_UNIX, 
+					    ndr->data+ndr->offset, 
+					    len1*byte_mul,
+					    (void **)(void *)&as,
+					    false);
+		if (ret == -1) {
 			return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-					      "Bad char conversion");
+					      "Bad character conversion");
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len1*byte_mul));
 		*s = as;
@@ -286,14 +291,15 @@
 		if (len1 == 0) {
 			as = talloc_strdup(ndr->current_mem_ctx, "");
 		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx, chset,
-						   CH_UNIX,
-						   ndr->data+ndr->offset, len1,
-						   (void **)(void *)&as,
-						   &converted_size, false))
-			{
+			ret = convert_string_talloc(ndr->current_mem_ctx,
+						    chset, CH_UNIX, 
+						    ndr->data+ndr->offset, 
+						    len1,
+						    (void **)(void *)&as,
+						    false);
+			if (ret == -1) {
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad char conversion");
+						      "Bad character conversion");
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len1));
@@ -315,8 +321,7 @@
 */
 _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags, const char *s)
 {
-	ssize_t s_len, c_len;
-	size_t d_len;
+	ssize_t s_len, c_len, d_len;
 	int chset = CH_UTF16;
 	unsigned flags = ndr->flags;
 	unsigned byte_mul = 2;
@@ -352,11 +357,11 @@
 	       LIBNDR_FLAG_STR_FIXLEN32))) {
 		s_len++;
 	}
-	if (!convert_string_talloc(ndr, CH_UNIX, chset, s, s_len,
-				   (void **)(void *)&dest, &d_len, false))
-	{
+	d_len = convert_string_talloc(ndr, CH_UNIX, chset, s, s_len,
+				      (void **)(void *)&dest, false);
+	if (d_len == -1) {
 		return ndr_push_error(ndr, NDR_ERR_CHARCNV, 
-				      "Bad char conversion");
+				      "Bad character conversion");
 	}
 
 	if (flags & LIBNDR_FLAG_STR_BYTESIZE) {
@@ -403,7 +408,7 @@
 		uint32_t pad_len = fix_len - d_len;
 		if (d_len > fix_len) {
 			return ndr_push_error(ndr, NDR_ERR_CHARCNV, 
-					      "Bad char conversion");
+					      "Bad character conversion");
 		}
 		NDR_CHECK(ndr_push_bytes(ndr, dest, d_len));
 		if (pad_len != 0) {
@@ -674,8 +679,7 @@
 
 _PUBLIC_ enum ndr_err_code ndr_pull_charset(struct ndr_pull *ndr, int ndr_flags, const char **var, uint32_t length, uint8_t byte_mul, charset_t chset)
 {
-	size_t converted_size;
-
+	int ret;
 	if (length == 0) {
 		*var = talloc_strdup(ndr->current_mem_ctx, "");
 		return NDR_ERR_SUCCESS;
@@ -687,13 +691,14 @@
 
 	NDR_PULL_NEED_BYTES(ndr, length*byte_mul);
 
-	if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
-				   ndr->data+ndr->offset, length*byte_mul,
-				   discard_const_p(void *, var),
-				   &converted_size, false))
-	{
+	ret = convert_string_talloc(ndr->current_mem_ctx,
+				    chset, CH_UNIX, 
+				    ndr->data+ndr->offset, 
+				    length*byte_mul,
+				    discard_const_p(void *, var), false);
+	if (ret == -1) {
 		return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-				      "Bad char conversion");
+				      "Bad character conversion");
 	}
 	NDR_CHECK(ndr_pull_advance(ndr, length*byte_mul));
 
@@ -716,7 +721,7 @@
 			     ndr->data+ndr->offset, required, false);
 	if (ret == -1) {
 		return ndr_push_error(ndr, NDR_ERR_CHARCNV, 
-				      "Bad char conversion");
+				      "Bad character conversion");
 	}
 
 	/* Make sure the remaining part of the string is filled with zeroes */

Modified: branches/samba/upstream/source/libsmb/asn1.c
===================================================================
--- branches/samba/upstream/source/libsmb/asn1.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/asn1.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -517,87 +517,3 @@
 	asn1_pop_tag(data);
 	return !data->has_error;
 }
-
-bool ber_write_OID_String(DATA_BLOB *blob, const char *OID)
-{
-	uint_t v, v2;
-	const char *p = (const char *)OID;
-	char *newp;
-	int i;
-
-	v = strtoul(p, &newp, 10);
-	if (newp[0] != '.') return false;
-	p = newp + 1;
-
-	v2 = strtoul(p, &newp, 10);
-	if (newp[0] != '.') return false;
-	p = newp + 1;
-
-	/*the ber representation can't use more space then the string one */
-	*blob = data_blob(NULL, strlen(OID));
-	if (!blob->data) return false;
-
-	blob->data[0] = 40*v + v2;
-
-	i = 1;
-	while (*p) {
-		v = strtoul(p, &newp, 10);
-		if (newp[0] == '.') {
-			p = newp + 1;
-		} else if (newp[0] == '\0') {
-			p = newp;
-		} else {
-			data_blob_free(blob);
-			return false;
-		}
-		if (v >= (1<<28)) blob->data[i++] = (0x80 | ((v>>28)&0x7f));
-		if (v >= (1<<21)) blob->data[i++] = (0x80 | ((v>>21)&0x7f));
-		if (v >= (1<<14)) blob->data[i++] = (0x80 | ((v>>14)&0x7f));
-		if (v >= (1<<7)) blob->data[i++] = (0x80 | ((v>>7)&0x7f));
-		blob->data[i++] = (v&0x7f);
-	}
-
-	blob->length = i;
-
-	return true;
-}
-
-/* read an object ID from a data blob */
-bool ber_read_OID_String(TALLOC_CTX *mem_ctx, DATA_BLOB blob, const char **OID)
-{
-	int i;
-	uint8_t *b;
-	uint_t v;
-	char *tmp_oid = NULL;
-
-	if (blob.length < 2) return false;
-
-	b = blob.data;
-
-	tmp_oid = talloc_asprintf(mem_ctx, "%u",  b[0]/40);
-	if (!tmp_oid) goto nomem;
-	tmp_oid = talloc_asprintf_append_buffer(tmp_oid, ".%u",  b[0]%40);
-	if (!tmp_oid) goto nomem;
-
-	for(i = 1, v = 0; i < blob.length; i++) {
-		v = (v<<7) | (b[i]&0x7f);
-		if ( ! (b[i] & 0x80)) {
-			tmp_oid = talloc_asprintf_append_buffer(tmp_oid, ".%u",  v);
-			v = 0;
-		}
-		if (!tmp_oid) goto nomem;
-	}
-
-	if (v != 0) {
-		talloc_free(tmp_oid);
-		return false;
-	}
-
-	*OID = tmp_oid;
-	return true;
-
-nomem:
-	return false;
-}
-
-

Modified: branches/samba/upstream/source/libsmb/cliconnect.c
===================================================================
--- branches/samba/upstream/source/libsmb/cliconnect.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/cliconnect.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1506,6 +1506,8 @@
 	}
 
 	fstrcpy(cli->desthost, host);
+	fstr_sprintf(cli->srv_name_slash, "\\\\%s", cli->desthost);
+	strupper_m(cli->srv_name_slash);
 
 	/* allow hostnames of the form NAME#xx and do a netbios lookup */
 	if ((p = strchr(cli->desthost, '#'))) {

Modified: branches/samba/upstream/source/libsmb/clientgen.c
===================================================================
--- branches/samba/upstream/source/libsmb/clientgen.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/clientgen.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -534,16 +534,54 @@
 }
 
 /****************************************************************************
+ External interface.
+ Close an open named pipe over SMB. Free any authentication data.
+ Returns false if the cli_close call failed.
+ ****************************************************************************/
+
+bool cli_rpc_pipe_close(struct rpc_pipe_client *cli)
+{
+	bool ret;
+
+	if (!cli) {
+		return false;
+	}
+
+	ret = cli_close(cli->cli, cli->fnum);
+
+	if (!ret) {
+		DEBUG(1,("cli_rpc_pipe_close: cli_close failed on pipe %s, "
+                         "fnum 0x%x "
+                         "to machine %s.  Error was %s\n",
+                         cli->pipe_name,
+                         (int) cli->fnum,
+                         cli->cli->desthost,
+                         cli_errstr(cli->cli)));
+	}
+
+	if (cli->auth.cli_auth_data_free_func) {
+		(*cli->auth.cli_auth_data_free_func)(&cli->auth);
+	}
+
+	DEBUG(10,("cli_rpc_pipe_close: closed pipe %s to machine %s\n",
+		cli->pipe_name, cli->cli->desthost ));
+
+	DLIST_REMOVE(cli->cli->pipe_list, cli);
+	talloc_destroy(cli->mem_ctx);
+	return ret;
+}
+
+/****************************************************************************
  Close all pipes open on this session.
 ****************************************************************************/
 
 void cli_nt_pipes_close(struct cli_state *cli)
 {
-	while (cli->pipe_list != NULL) {
-		/*
-		 * No TALLOC_FREE here!
-		 */
-		talloc_free(cli->pipe_list);
+	struct rpc_pipe_client *cp, *next;
+
+	for (cp = cli->pipe_list; cp; cp = next) {
+		next = cp->next;
+		cli_rpc_pipe_close(cp);
 	}
 }
 

Modified: branches/samba/upstream/source/libsmb/clifile.c
===================================================================
--- branches/samba/upstream/source/libsmb/clifile.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/clifile.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -715,10 +715,10 @@
 ****************************************************************************/
 
 int cli_nt_create_full(struct cli_state *cli, const char *fname,
-		       uint32 CreatFlags, uint32 DesiredAccess,
-		       uint32 FileAttributes, uint32 ShareAccess,
-		       uint32 CreateDisposition, uint32 CreateOptions,
-		       uint8 SecurityFlags)
+		 uint32 CreatFlags, uint32 DesiredAccess,
+		 uint32 FileAttributes, uint32 ShareAccess,
+		 uint32 CreateDisposition, uint32 CreateOptions,
+		 uint8 SecuityFlags)
 {
 	char *p;
 	int len;
@@ -744,7 +744,7 @@
 	SIVAL(cli->outbuf,smb_ntcreate_CreateDisposition, CreateDisposition);
 	SIVAL(cli->outbuf,smb_ntcreate_CreateOptions, CreateOptions);
 	SIVAL(cli->outbuf,smb_ntcreate_ImpersonationLevel, 0x02);
-	SCVAL(cli->outbuf,smb_ntcreate_SecurityFlags, SecurityFlags);
+	SCVAL(cli->outbuf,smb_ntcreate_SecurityFlags, SecuityFlags);
 
 	p = smb_buf(cli->outbuf);
 	/* this alignment and termination is critical for netapp filers. Don't change */

Modified: branches/samba/upstream/source/libsmb/clikrb5.c
===================================================================
--- branches/samba/upstream/source/libsmb/clikrb5.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/clikrb5.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,6 +27,16 @@
 
 #ifdef HAVE_KRB5
 
+#ifdef HAVE_KRB5_KEYBLOCK_KEYVALUE /* Heimdal */
+#define KRB5_KEY_TYPE(k)	((k)->keytype) 
+#define KRB5_KEY_LENGTH(k)	((k)->keyvalue.length)
+#define KRB5_KEY_DATA(k)	((k)->keyvalue.data)
+#else /* MIT */
+#define	KRB5_KEY_TYPE(k)	((k)->enctype)
+#define KRB5_KEY_LENGTH(k)	((k)->length)
+#define KRB5_KEY_DATA(k)	((k)->contents)
+#endif /* HAVE_KRB5_KEYBLOCK_KEYVALUE */
+
 #define GSSAPI_CHECKSUM      0x8003             /* Checksum type value for Kerberos */
 #define GSSAPI_BNDLENGTH     16                 /* Bind Length (rfc-1964 pg.3) */
 #define GSSAPI_CHECKSUM_SIZE (12+GSSAPI_BNDLENGTH)
@@ -54,9 +64,8 @@
 {
 	krb5_error_code ret;
 	char *utf8_name;
-	size_t converted_size;
 
-	if (!push_utf8_allocate(&utf8_name, name, &converted_size)) {
+	if (push_utf8_allocate(&utf8_name, name) == (size_t)-1) {
 		return ENOMEM;
 	}
 
@@ -76,10 +85,9 @@
 {
 	krb5_error_code ret;
 	char *utf8_name;
-	size_t converted_size;
 
 	*principal = NULL;
-	if (!push_utf8_allocate(&utf8_name, name, &converted_size)) {
+	if (push_utf8_allocate(&utf8_name, name) == (size_t)-1) {
 		return ENOMEM;
 	}
 
@@ -100,7 +108,6 @@
 {
 	krb5_error_code ret;
 	char *utf8_name;
-	size_t converted_size;
 
 	*unix_name = NULL;
 	ret = krb5_unparse_name(context, principal, &utf8_name);
@@ -108,7 +115,7 @@
 		return ret;
 	}
 
-	if (!pull_utf8_allocate(unix_name, utf8_name, &converted_size)) {
+	if (pull_utf8_allocate(unix_name, utf8_name)==-1) {
 		krb5_free_unparsed_name(context, utf8_name);
 		return ENOMEM;
 	}
@@ -212,13 +219,13 @@
 #endif
 
 #if defined(HAVE_KRB5_PRINCIPAL2SALT) && defined(HAVE_KRB5_USE_ENCTYPE) && defined(HAVE_KRB5_STRING_TO_KEY) && defined(HAVE_KRB5_ENCRYPT_BLOCK)
-static int create_kerberos_key_from_string_direct(krb5_context context,
-						  krb5_principal host_princ,
-						  krb5_data *password,
-						  krb5_keyblock *key,
-						  krb5_enctype enctype)
+ int create_kerberos_key_from_string_direct(krb5_context context,
+					krb5_principal host_princ,
+					krb5_data *password,
+					krb5_keyblock *key,
+					krb5_enctype enctype)
 {
-	int ret = 0;
+	int ret;
 	krb5_data salt;
 	krb5_encrypt_block eblock;
 
@@ -230,15 +237,14 @@
 	krb5_use_enctype(context, &eblock, enctype);
 	ret = krb5_string_to_key(context, &eblock, key, password, &salt);
 	SAFE_FREE(salt.data);
-
 	return ret;
 }
 #elif defined(HAVE_KRB5_GET_PW_SALT) && defined(HAVE_KRB5_STRING_TO_KEY_SALT)
-static int create_kerberos_key_from_string_direct(krb5_context context,
-						  krb5_principal host_princ,
-						  krb5_data *password,
-						  krb5_keyblock *key,
-						  krb5_enctype enctype)
+ int create_kerberos_key_from_string_direct(krb5_context context,
+					krb5_principal host_princ,
+					krb5_data *password,
+					krb5_keyblock *key,
+					krb5_enctype enctype)
 {
 	int ret;
 	krb5_salt salt;
@@ -248,10 +254,9 @@
 		DEBUG(1,("krb5_get_pw_salt failed (%s)\n", error_message(ret)));
 		return ret;
 	}
-
+	
 	ret = krb5_string_to_key_salt(context, enctype, (const char *)password->data, salt, key);
 	krb5_free_salt(context, salt);
-
 	return ret;
 }
 #else
@@ -262,8 +267,7 @@
 					krb5_principal host_princ,
 					krb5_data *password,
 					krb5_keyblock *key,
-					krb5_enctype enctype,
-					bool no_salt)
+					krb5_enctype enctype)
 {
 	krb5_principal salt_princ = NULL;
 	int ret;
@@ -272,16 +276,6 @@
 	 * principal/enctype in a non-obvious way.  If it is, try to match
 	 * its behavior.
 	 */
-	if (no_salt) {
-		KRB5_KEY_DATA(key) = (KRB5_KEY_DATA_CAST *)SMB_MALLOC(password->length);
-		if (!KRB5_KEY_DATA(key)) {
-			return ENOMEM;
-		}
-		memcpy(KRB5_KEY_DATA(key), password->data, password->length);
-		KRB5_KEY_LENGTH(key) = password->length;
-		KRB5_KEY_TYPE(key) = enctype;
-		return 0;
-	}
 	salt_princ = kerberos_fetch_salt_princ_for_host_princ(context, host_princ, enctype);
 	ret = create_kerberos_key_from_string_direct(context, salt_princ ? salt_princ : host_princ, password, key, enctype);
 	if (salt_princ) {
@@ -749,8 +743,7 @@
 						ccache,
 						&in_data );
 		if (retval) {
-			DEBUG( 3, ("ads_krb5_get_fwd_ticket failed (%s)\n",
-				   error_message( retval ) ) );
+			DEBUG( 3, ("ads_krb5_get_fwd_ticket failed (%s)\n", error_message( retval ) ) );
 
 			/*
 			 * This is not fatal. Delete the *auth_context and continue
@@ -1051,7 +1044,6 @@
 	krb5_error_code ret;
 	krb5_keytab keytab;
 	char *name = NULL;
-	krb5_keyblock *keyp;
 
 	/* We have to open a new keytab handle here, as MIT does
 	   an implicit open/getnext/close on krb5_kt_get_entry. We
@@ -1084,9 +1076,14 @@
 		goto out;
 	}
 
-	keyp = KRB5_KT_KEY(&entry);
+#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK /* Heimdal */
+	ret = krb5_copy_keyblock(context, &entry.keyblock, out_key);
+#elif defined(HAVE_KRB5_KEYTAB_ENTRY_KEY) /* MIT */
+	ret = krb5_copy_keyblock(context, &entry.key, out_key);
+#else
+#error UNKNOWN_KRB5_KEYTAB_ENTRY_FORMAT
+#endif
 
-	ret = krb5_copy_keyblock(context, keyp, out_key);
 	if (ret) {
 		DEBUG(0,("get_key_from_keytab: failed to copy key: %s\n", error_message(ret)));
 		goto out;
@@ -1574,9 +1571,15 @@
 #endif /* HAVE_KRB5_GET_INIT_CREDS_OPT_FREE */
 }
 
- krb5_enctype smb_get_enctype_from_kt_entry(krb5_keytab_entry *kt_entry)
+ krb5_enctype smb_get_enctype_from_kt_entry(const krb5_keytab_entry *kt_entry)
 {
-	return KRB5_KEY_TYPE(KRB5_KT_KEY(kt_entry));
+#ifdef HAVE_KRB5_KEYTAB_ENTRY_KEY		/* MIT */
+	return kt_entry->key.enctype;
+#elif defined(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK)	/* Heimdal */
+	return kt_entry->keyblock.keytype;
+#else
+#error UNKNOWN_KRB5_KEYTAB_ENTRY_KEYBLOCK_FORMAT
+#endif
 }
 
 
@@ -1775,28 +1778,6 @@
  	return ret;
 }
 
-krb5_error_code smb_krb5_keytab_name(TALLOC_CTX *mem_ctx,
-				     krb5_context context,
-				     krb5_keytab keytab,
-				     const char **keytab_name)
-{
-	char keytab_string[MAX_KEYTAB_NAME_LEN];
-	krb5_error_code ret = 0;
-
-	ret = krb5_kt_get_name(context, keytab,
-			       keytab_string, MAX_KEYTAB_NAME_LEN - 2);
-	if (ret) {
-		return ret;
-	}
-
-	*keytab_name = talloc_strdup(mem_ctx, keytab_string);
-	if (!*keytab_name) {
-		return ENOMEM;
-	}
-
-	return ret;
-}
-
 #if defined(TKT_FLG_OK_AS_DELEGATE ) && defined(HAVE_KRB5_FWD_TGT_CREDS) && defined(HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE) && defined(KRB5_AUTH_CONTEXT_USE_SUBKEY)
 /**************************************************************
 Routine: ads_krb5_get_fwd_ticket

Modified: branches/samba/upstream/source/libsmb/clirap.c
===================================================================
--- branches/samba/upstream/source/libsmb/clirap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/clirap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -865,7 +865,7 @@
 
 	while ((data_len > ofs) && (data_len - ofs >= 24)) {
 		uint32_t nlen, len;
-		size_t size;
+		ssize_t size;
 		void *vstr;
 		struct stream_struct *tmp;
 		uint8_t *tmp_buf;
@@ -904,14 +904,14 @@
 		tmp_buf[nlen] = 0;
 		tmp_buf[nlen+1] = 0;
 
-		if (!convert_string_talloc(streams, CH_UTF16, CH_UNIX, tmp_buf,
-					   nlen+2, &vstr, &size, false))
-		{
-			TALLOC_FREE(tmp_buf);
+		size = convert_string_talloc(streams, CH_UTF16, CH_UNIX,
+					     tmp_buf, nlen+2, &vstr,
+					     false);
+		TALLOC_FREE(tmp_buf);
+
+		if (size == -1) {
 			goto fail;
 		}
-
-		TALLOC_FREE(tmp_buf);
 		streams[num_streams].name = (char *)vstr;
 		num_streams++;
 

Modified: branches/samba/upstream/source/libsmb/clirap2.c
===================================================================
--- branches/samba/upstream/source/libsmb/clirap2.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/clirap2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1856,7 +1856,6 @@
 			+WORDSIZE];                         /* buffer size?  */
 	char upperbuf[MAX(RAP_USERNAME_LEN,RAP_MACHNAME_LEN)];
 	int res = -1;
-	char *tmp = NULL;
 
 	memset(param, 0, sizeof(param));
 
@@ -1867,13 +1866,11 @@
 	PUTDWORD(p, 0); /* Null pointer */
 	strlcpy(upperbuf, user, sizeof(upperbuf));
 	strupper_m(upperbuf);
-	tmp = upperbuf;
-	PUTSTRINGF(p, tmp, RAP_USERNAME_LEN);
+	PUTSTRINGF(p, upperbuf, RAP_USERNAME_LEN);
 	p++; /* strange format, but ok */
 	strlcpy(upperbuf, workstation, sizeof(upperbuf));
 	strupper_m(upperbuf);
-	tmp = upperbuf;
-	PUTSTRINGF(p, tmp, RAP_MACHNAME_LEN);
+	PUTSTRINGF(p, upperbuf, RAP_MACHNAME_LEN);
 	PUTWORD(p, CLI_BUFFER_SIZE);
 	PUTWORD(p, CLI_BUFFER_SIZE);
 

Modified: branches/samba/upstream/source/libsmb/clireadwrite.c
===================================================================
--- branches/samba/upstream/source/libsmb/clireadwrite.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/clireadwrite.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -62,6 +62,8 @@
 		return NULL;
 	}
 
+	req = cli_request_get(result);
+
 	req->data.read.ofs = offset;
 	req->data.read.size = size;
 	req->data.read.received = 0;

Modified: branches/samba/upstream/source/libsmb/conncache.c
===================================================================
--- branches/samba/upstream/source/libsmb/conncache.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/conncache.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -6,7 +6,6 @@
    Copyright (C) Tim Potter 		2001
    Copyright (C) Andrew Bartlett 	2002
    Copyright (C) Gerald (Jerry) Carter 	2003
-   Copyright (C) Marc VanHeyningen      2008
    
    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
@@ -25,232 +24,168 @@
 
 #include "includes.h"
 
-/**
- * @file
- * Negative connection cache implemented in terms of gencache API
- *
- * The negative connection cache stores names of servers which have
- * been unresponsive so that we don't waste time repeatedly trying
- * to contact them.  It used to use an in-memory linked list, but
- * this limited its utility to a single process
- */
+#define CONNCACHE_ADDR		1
+#define CONNCACHE_NAME		2
 
+/* cache entry contains either a server name **or** and IP address as 
+   the key.  This means that a server could have two entries (one for each key) */
+   
+struct failed_connection_cache {
+	fstring 	domain_name;
+	fstring 	controller;
+	time_t 		lookup_time;
+	NTSTATUS 	nt_status;
+	struct failed_connection_cache *prev, *next;
+};
 
-/**
- * prefix used for all entries put into the general cache
- */
-static const char NEGATIVE_CONN_CACHE_PREFIX[] = "NEG_CONN_CACHE";
+static struct failed_connection_cache *failed_connection_cache;
 
-/**
- * Marshalls the domain and server name into the key for the gencache
- * record
- *
- * @param[in] domain required
- * @param[in] server may be a FQDN or an IP address
- * @return the resulting string, which the caller is responsible for
- *   SAFE_FREE()ing
- * @retval NULL returned on error
- */
-static char *negative_conn_cache_keystr(const char *domain, const char *server)
+/**********************************************************************
+ Check for a previously failed connection.
+ failed_cache_timeout is an a absolute number of seconds after which
+ we should time this out. If failed_cache_timeout == 0 then time out
+ immediately. If failed_cache_timeout == -1 then never time out.
+**********************************************************************/
+
+NTSTATUS check_negative_conn_cache_timeout( const char *domain, const char *server, unsigned int failed_cache_timeout )
 {
-	const char NEGATIVE_CONN_CACHE_KEY_FMT[] = "%s/%s,%s";
-	char *keystr = NULL;
+	struct failed_connection_cache *fcc;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	
+	/* can't check if we don't have strings */
+	
+	if ( !domain || !server )
+		return NT_STATUS_OK;
 
-	SMB_ASSERT(domain != NULL);
-	if (server == NULL)
-		server = "";
+	for (fcc = failed_connection_cache; fcc; fcc = fcc->next) {
+	
+		if (!(strequal(domain, fcc->domain_name) && strequal(server, fcc->controller))) {
+			continue; /* no match; check the next entry */
+		}
+		
+		/* we have a match so see if it is still current */
+		if (failed_cache_timeout != (unsigned int)-1) {
+			if (failed_cache_timeout == 0 ||
+					(time(NULL) - fcc->lookup_time) > (time_t)failed_cache_timeout) {
+				/* Cache entry has expired, delete it */
 
-	keystr = talloc_asprintf(talloc_tos(),NEGATIVE_CONN_CACHE_KEY_FMT,
-				 NEGATIVE_CONN_CACHE_PREFIX, domain, server);
-	if (keystr == NULL) {
-		DEBUG(0, ("negative_conn_cache_keystr: malloc error\n"));
-	}
+				DEBUG(10, ("check_negative_conn_cache: cache entry expired for %s, %s\n", 
+					domain, server ));
 
-	return keystr;
-}
+				DLIST_REMOVE(failed_connection_cache, fcc);
+				SAFE_FREE(fcc);
 
-/**
- * Marshalls the NT status into a printable value field for the gencache
- * record
- *
- * @param[in] status
- * @return the resulting string, which the caller is responsible for
- *   SAFE_FREE()ing
- * @retval NULL returned on error
- */
-static char *negative_conn_cache_valuestr(NTSTATUS status)
-{
-	char *valuestr = NULL;
+				return NT_STATUS_OK;
+			}
+		}
 
-	valuestr = talloc_asprintf(talloc_tos(), "%x", NT_STATUS_V(status));
-	if (valuestr == NULL) {
-		DEBUG(0, ("negative_conn_cache_valuestr: malloc error\n"));
-	}
+		/* The timeout hasn't expired yet so return false */
 
-	return valuestr;
-}
+		DEBUG(10, ("check_negative_conn_cache: returning negative entry for %s, %s\n", 
+			domain, server ));
 
-/**
- * Un-marshalls the NT status from a printable field for the gencache
- * record
- *
- * @param[in] value  The value field from the record
- * @return the decoded NT status
- * @retval NT_STATUS_OK returned on error
- */
-static NTSTATUS negative_conn_cache_valuedecode(const char *value)
-{
-	NTSTATUS result = NT_STATUS_OK;
+		result = fcc->nt_status;
+		return result;
+	}
 
-	SMB_ASSERT(value != NULL);
-	if (sscanf(value, "%x", &(NT_STATUS_V(result))) != 1)
-		DEBUG(0, ("negative_conn_cache_valuestr: unable to parse "
-			  "value field '%s'\n", value));
-	return result;
+	/* end of function means no cache entry */	
+	return NT_STATUS_OK;
 }
 
-/**
- * Function passed to gencache_iterate to remove any matching items
- * from the list
- *
- * @param[in] key Key to the record found and to be deleted
- * @param[in] value Value to the record (ignored)
- * @param[in] timeout Timeout remaining for the record (ignored)
- * @param[in] dptr Handle for passing additional data (ignored)
- */
-static void delete_matches(const char *key, const char *value,
-    time_t timeout, void *dptr)
+NTSTATUS check_negative_conn_cache( const char *domain, const char *server)
 {
-	gencache_del(key);
+	return check_negative_conn_cache_timeout(domain, server, FAILED_CONNECTION_CACHE_TIMEOUT);
 }
 
+/**********************************************************************
+ Add an entry to the failed conneciton cache (aither a name of dotted 
+ decimal IP
+**********************************************************************/
 
-/**
- * Checks for a given domain/server record in the negative cache
- *
- * @param[in] domain
- * @param[in] server may be either a FQDN or an IP address
- * @return The cached failure status
- * @retval NT_STATUS_OK returned if no record is found or an error occurs
- */
-NTSTATUS check_negative_conn_cache( const char *domain, const char *server)
+void add_failed_connection_entry(const char *domain, const char *server, NTSTATUS result) 
 {
-	NTSTATUS result = NT_STATUS_OK;
-	char *key = NULL;
-	char *value = NULL;
+	struct failed_connection_cache *fcc;
 
-	key = negative_conn_cache_keystr(domain, server);
-	if (key == NULL)
-		goto done;
+	SMB_ASSERT(!NT_STATUS_IS_OK(result));
 
-	if (gencache_get(key, &value, (time_t *) NULL))
-		result = negative_conn_cache_valuedecode(value);
- done:
-	DEBUG(9,("check_negative_conn_cache returning result %d for domain %s "
-		  "server %s\n", NT_STATUS_V(result), domain, server));
-	TALLOC_FREE(key);
-	SAFE_FREE(value);
-	return result;
-}
+	/* Check we already aren't in the cache.  We always have to have 
+	   a domain, but maybe not a specific DC name. */
 
-/**
- * Delete any negative cache entry for the given domain/server
- *
- * @param[in] domain
- * @param[in] server may be either a FQDN or an IP address
- */
-void delete_negative_conn_cache(const char *domain, const char *server)
-{
-	char *key = NULL;
+	for (fcc = failed_connection_cache; fcc; fcc = fcc->next) {			
+		if ( strequal(fcc->domain_name, domain) && strequal(fcc->controller, server) ) {
+			DEBUG(10, ("add_failed_connection_entry: domain %s (%s) already tried and failed\n",
+				   domain, server ));
+			/* Update the failed time. */
+			fcc->lookup_time = time(NULL);
+			return;
+		}
+	}
 
-	key = negative_conn_cache_keystr(domain, server);
-	if (key == NULL)
-		goto done;
+	/* Create negative lookup cache entry for this domain and controller */
 
-	gencache_del(key);
-	DEBUG(9,("delete_negative_conn_cache removing domain %s server %s\n",
-		  domain, server));
- done:
-	TALLOC_FREE(key);
-	return;
+	if ( !(fcc = SMB_MALLOC_P(struct failed_connection_cache)) ) {
+		DEBUG(0, ("malloc failed in add_failed_connection_entry!\n"));
+		return;
+	}
+	
+	ZERO_STRUCTP(fcc);
+	
+	fstrcpy( fcc->domain_name, domain );
+	fstrcpy( fcc->controller, server );
+	fcc->lookup_time = time(NULL);
+	fcc->nt_status = result;
+	
+	DEBUG(10,("add_failed_connection_entry: added domain %s (%s) to failed conn cache\n",
+		domain, server ));
+	
+	DLIST_ADD(failed_connection_cache, fcc);
 }
 
-
-/**
- * Add an entry to the failed connection cache
- *
- * @param[in] domain
- * @param[in] server may be a FQDN or an IP addr in printable form
- * @param[in] result error to cache; must not be NT_STATUS_OK
- */
-void add_failed_connection_entry(const char *domain, const char *server,
-    NTSTATUS result)
+/****************************************************************************
+****************************************************************************/
+ 
+void flush_negative_conn_cache( void )
 {
-	char *key = NULL;
-	char *value = NULL;
+	struct failed_connection_cache *fcc;
+	
+	fcc = failed_connection_cache;
 
-	SMB_ASSERT(!NT_STATUS_IS_OK(result));
+	while (fcc) {
+		struct failed_connection_cache *fcc_next;
 
-	key = negative_conn_cache_keystr(domain, server);
-	if (key == NULL) {
-		DEBUG(0, ("add_failed_connection_entry: key creation error\n"));
-		goto done;
-	}
+		fcc_next = fcc->next;
+		DLIST_REMOVE(failed_connection_cache, fcc);
+		free(fcc);
 
-	value = negative_conn_cache_valuestr(result);
-	if (value == NULL) {
-		DEBUG(0, ("add_failed_connection_entry: value creation error\n"));
-		goto done;
+		fcc = fcc_next;
 	}
 
-	if (gencache_set(key, value,
-			 time((time_t *) NULL)
-			 + FAILED_CONNECTION_CACHE_TIMEOUT))
-		DEBUG(9,("add_failed_connection_entry: added domain %s (%s) "
-			  "to failed conn cache\n", domain, server ));
-	else
-		DEBUG(1,("add_failed_connection_entry: failed to add "
-			  "domain %s (%s) to failed conn cache\n",
-			  domain, server));
-	
- done:
-	TALLOC_FREE(key);
-	TALLOC_FREE(value);
-	return;
 }
 
-/**
- * Deletes all records from the negative connection cache in all domains
- */
-void flush_negative_conn_cache( void )
+/****************************************************************************
+ Remove all negative entries for a domain. Used when going to online state in
+ winbindd.
+****************************************************************************/
+ 
+void flush_negative_conn_cache_for_domain(const char *domain)
 {
-	flush_negative_conn_cache_for_domain("*");
-}
+	struct failed_connection_cache *fcc;
+	
+	fcc = failed_connection_cache;
 
+	while (fcc) {
+		struct failed_connection_cache *fcc_next;
 
-/**
- * Deletes all records for a specified domain from the negative connection
- * cache
- *
- * @param[in] domain String to match against domain portion of keys, or "*"
- *  to match all domains
- */
-void flush_negative_conn_cache_for_domain(const char *domain)
-{
-	char *key_pattern = NULL;
+		fcc_next = fcc->next;
 
-	key_pattern = negative_conn_cache_keystr(domain,"*");
-	if (key_pattern == NULL) {
-		DEBUG(0, ("flush_negative_conn_cache_for_domain: "
-			  "key creation error\n"));
-		goto done;
-	}
+		if (strequal(fcc->domain_name, domain)) {
+			DEBUG(10,("flush_negative_conn_cache_for_domain: removed server %s "
+				" from failed cache for domain %s\n",
+				fcc->controller, domain));
+			DLIST_REMOVE(failed_connection_cache, fcc);
+			free(fcc);
+		}
 
-	gencache_iterate(delete_matches, (void *) NULL, key_pattern);
-	DEBUG(8, ("flush_negative_conn_cache_for_domain: flushed domain %s\n",
-		  domain));
-	
- done:
-	TALLOC_FREE(key_pattern);
-	return;
+		fcc = fcc_next;
+	}
 }

Modified: branches/samba/upstream/source/libsmb/doserr.c
===================================================================
--- branches/samba/upstream/source/libsmb/doserr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/doserr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -62,18 +62,12 @@
 	{ "WERR_BUF_TOO_SMALL", WERR_BUF_TOO_SMALL },
 	{ "WERR_JOB_NOT_FOUND", WERR_JOB_NOT_FOUND },
 	{ "WERR_DEST_NOT_FOUND", WERR_DEST_NOT_FOUND },
-	{ "WERR_GROUP_NOT_FOUND", WERR_GROUP_NOT_FOUND },
-	{ "WERR_USER_NOT_FOUND", WERR_USER_NOT_FOUND },
 	{ "WERR_NOT_LOCAL_DOMAIN", WERR_NOT_LOCAL_DOMAIN },
 	{ "WERR_USER_EXISTS", WERR_USER_EXISTS },
-	{ "WERR_REVISION_MISMATCH", WERR_REVISION_MISMATCH },
 	{ "WERR_NO_LOGON_SERVERS", WERR_NO_LOGON_SERVERS },
 	{ "WERR_NO_SUCH_LOGON_SESSION", WERR_NO_SUCH_LOGON_SESSION },
 	{ "WERR_USER_ALREADY_EXISTS", WERR_USER_ALREADY_EXISTS },
 	{ "WERR_NO_SUCH_USER", WERR_NO_SUCH_USER },
-	{ "WERR_GROUP_EXISTS", WERR_GROUP_EXISTS },
-	{ "WERR_MEMBER_IN_GROUP", WERR_MEMBER_IN_GROUP },
-	{ "WERR_USER_NOT_IN_GROUP", WERR_USER_NOT_IN_GROUP },
 	{ "WERR_PRINTER_DRIVER_IN_USE", WERR_PRINTER_DRIVER_IN_USE },
 	{ "WERR_STATUS_MORE_ENTRIES  ", WERR_STATUS_MORE_ENTRIES },
 	{ "WERR_DFS_NO_SUCH_VOL", WERR_DFS_NO_SUCH_VOL },
@@ -91,17 +85,12 @@
 	{ "WERR_DEFAULT_JOIN_REQUIRED", WERR_DEFAULT_JOIN_REQUIRED },
 	{ "WERR_DEVICE_NOT_AVAILABLE", WERR_DEVICE_NOT_AVAILABLE },
 	{ "WERR_LOGON_FAILURE", WERR_LOGON_FAILURE },
-	{ "WERR_WRONG_PASSWORD", WERR_WRONG_PASSWORD },
 	{ "WERR_PASSWORD_RESTRICTION", WERR_PASSWORD_RESTRICTION },
 	{ "WERR_NO_SUCH_DOMAIN", WERR_NO_SUCH_DOMAIN },
 	{ "WERR_NONE_MAPPED", WERR_NONE_MAPPED },
 	{ "WERR_INVALID_SECURITY_DESCRIPTOR", WERR_INVALID_SECURITY_DESCRIPTOR },
 	{ "WERR_INVALID_DOMAIN_STATE", WERR_INVALID_DOMAIN_STATE },
 	{ "WERR_INVALID_DOMAIN_ROLE", WERR_INVALID_DOMAIN_ROLE },
-	{ "WERR_SPECIAL_ACCOUNT", WERR_SPECIAL_ACCOUNT },
-	{ "WERR_ALIAS_EXISTS", WERR_ALIAS_EXISTS },
-	{ "WERR_NO_SUCH_ALIAS", WERR_NO_SUCH_ALIAS },
-	{ "WERR_MEMBER_IN_ALIAS", WERR_MEMBER_IN_ALIAS },
 	{ "WERR_TIME_SKEW", WERR_TIME_SKEW },
 	{ "WERR_INVALID_OWNER", WERR_INVALID_OWNER },
 	{ "WERR_SERVER_UNAVAILABLE", WERR_SERVER_UNAVAILABLE },
@@ -115,14 +104,11 @@
 	{ "WERR_NO_SUCH_SERVICE", WERR_NO_SUCH_SERVICE },
 	{ "WERR_SERVICE_DISABLED", WERR_SERVICE_DISABLED },
 	{ "WERR_SERVICE_NEVER_STARTED", WERR_SERVICE_NEVER_STARTED },
-	{ "WERR_NOT_FOUND", WERR_NOT_FOUND },
 	{ "WERR_CAN_NOT_COMPLETE", WERR_CAN_NOT_COMPLETE},
 	{ "WERR_INVALID_FLAGS", WERR_INVALID_FLAGS},
 	{ "WERR_PASSWORD_MUST_CHANGE", WERR_PASSWORD_MUST_CHANGE },
 	{ "WERR_DOMAIN_CONTROLLER_NOT_FOUND", WERR_DOMAIN_CONTROLLER_NOT_FOUND },
 	{ "WERR_ACCOUNT_LOCKED_OUT", WERR_ACCOUNT_LOCKED_OUT },
-	{ "WERR_DS_DRA_BAD_DN", WERR_DS_DRA_BAD_DN },
-	{ "WERR_DS_DRA_BAD_NC", WERR_DS_DRA_BAD_NC },
 	{ NULL, W_ERROR(0) }
 };
 
@@ -149,10 +135,6 @@
 	{ WERR_PASSWORD_RESTRICTION, "Password does not meet restrictions" },
 	{ WERR_NONE_MAPPED, "Could not map names to SIDs" },
 	{ WERR_NO_SUCH_USER, "No such User" },
-	{ WERR_GROUP_EXISTS, "Group already exists" },
-	{ WERR_DS_DRA_BAD_DN, "An invalid distinguished name was specified for this replication" },
-	{ WERR_DS_DRA_BAD_NC, "An invalid naming context was specified for this replication operation" },
-	{ WERR_WRONG_PASSWORD, "The current password is incorrect" }
 };
 
 /*****************************************************************************

Modified: branches/samba/upstream/source/libsmb/dsgetdcname.c
===================================================================
--- branches/samba/upstream/source/libsmb/dsgetdcname.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/dsgetdcname.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -119,7 +119,7 @@
 
 static char *dsgetdcname_cache_key(TALLOC_CTX *mem_ctx, const char *domain)
 {
-	if (!domain) {
+	if (!mem_ctx || !domain) {
 		return NULL;
 	}
 

Modified: branches/samba/upstream/source/libsmb/libsmb_compat.c
===================================================================
--- branches/samba/upstream/source/libsmb/libsmb_compat.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/libsmb_compat.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -207,7 +207,7 @@
 
 ssize_t
 smbc_write(int fd,
-           const void *buf,
+           void *buf,
            size_t bufsize)
 {
 	SMBCFILE * file = find_fd(fd);

Modified: branches/samba/upstream/source/libsmb/libsmb_context.c
===================================================================
--- branches/samba/upstream/source/libsmb/libsmb_context.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/libsmb_context.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -619,27 +619,7 @@
 const char *
 smbc_version(void)
 {
-        return SAMBA_VERSION_STRING;
+        return samba_version_string();
 }
 
 
-/*
- * Set the credentials so DFS will work when following referrals.
- */
-void
-smbc_set_credentials(char *workgroup,
-                     char *user,
-                     char *password,
-                     smbc_bool use_kerberos,
-                     char *signing_state)
-{
-        
-        set_cmdline_auth_info_username(user);
-        set_cmdline_auth_info_password(password);
-        set_cmdline_auth_info_use_kerberos(use_kerberos);
-        if (! set_cmdline_auth_info_signing_state(signing_state)) {
-                DEBUG(0, ("Invalid signing state: %s", signing_state));
-        }
-        set_global_myworkgroup(workgroup);
-        cli_cm_set_credentials();
-}

Modified: branches/samba/upstream/source/libsmb/libsmb_dir.c
===================================================================
--- branches/samba/upstream/source/libsmb/libsmb_dir.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/libsmb_dir.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -273,9 +273,8 @@
 	uint32_t total_entries = 0;
 
         /* Open the server service pipe */
-        nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc.syntax_id,
-					     &pipe_hnd);
-        if (!NT_STATUS_IS_OK(nt_status)) {
+        pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &nt_status);
+        if (!pipe_hnd) {
                 DEBUG(1, ("net_share_enum_rpc pipe open fail!\n"));
                 return -1;
         }
@@ -288,7 +287,7 @@
 
         /* Issue the NetShareEnum RPC call and retrieve the response */
 	nt_status = rpccli_srvsvc_NetShareEnumAll(pipe_hnd, talloc_tos(),
-						  pipe_hnd->desthost,
+						  pipe_hnd->cli->desthost,
 						  &info_ctr,
 						  preferred_len,
 						  &total_entries,
@@ -320,7 +319,7 @@
 
 done:
         /* Close the server service pipe */
-        TALLOC_FREE(pipe_hnd);
+        cli_rpc_pipe_close(pipe_hnd);
 
         /* Tell 'em if it worked */
         return W_ERROR_IS_OK(result) ? 0 : -1;

Modified: branches/samba/upstream/source/libsmb/libsmb_file.c
===================================================================
--- branches/samba/upstream/source/libsmb/libsmb_file.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/libsmb_file.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -329,7 +329,7 @@
 ssize_t
 SMBC_write_ctx(SMBCCTX *context,
                SMBCFILE *file,
-               const void *buf,
+               void *buf,
                size_t count)
 {
 	int ret;

Modified: branches/samba/upstream/source/libsmb/libsmb_server.c
===================================================================
--- branches/samba/upstream/source/libsmb/libsmb_server.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/libsmb_server.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -646,9 +646,10 @@
                 ZERO_STRUCTP(ipc_srv);
                 ipc_srv->cli = ipc_cli;
                 
-                nt_status = cli_rpc_pipe_open_noauth(
-			ipc_srv->cli, &ndr_table_lsarpc.syntax_id, &pipe_hnd);
-                if (!NT_STATUS_IS_OK(nt_status)) {
+                pipe_hnd = cli_rpc_pipe_open_noauth(ipc_srv->cli,
+                                                    PI_LSARPC,
+                                                    &nt_status);
+                if (!pipe_hnd) {
                         DEBUG(1, ("cli_nt_session_open fail!\n"));
                         errno = ENOTSUP;
                         cli_shutdown(ipc_srv->cli);

Modified: branches/samba/upstream/source/libsmb/libsmb_xattr.c
===================================================================
--- branches/samba/upstream/source/libsmb/libsmb_xattr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/libsmb_xattr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -39,8 +39,7 @@
              pipe_hnd;
              pipe_hnd = pipe_hnd->next) {
                 
-		if (ndr_syntax_id_equal(&pipe_hnd->abstract_syntax,
-					&ndr_table_lsarpc.syntax_id)) {
+		if (pipe_hnd->pipe_idx == PI_LSARPC) {
 			return pipe_hnd;
 		}
 	}

Modified: branches/samba/upstream/source/libsmb/ntlmssp.c
===================================================================
--- branches/samba/upstream/source/libsmb/ntlmssp.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/ntlmssp.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -95,8 +95,6 @@
 		DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_NTLM2\n"));
 	if (neg_flags & NTLMSSP_CHAL_TARGET_INFO) 
 		DEBUGADD(4, ("  NTLMSSP_CHAL_TARGET_INFO\n"));
-	if (neg_flags & NTLMSSP_NEGOTIATE_VERSION)
-		DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_VERSION\n"));
 	if (neg_flags & NTLMSSP_NEGOTIATE_128) 
 		DEBUGADD(4, ("  NTLMSSP_NEGOTIATE_128\n"));
 	if (neg_flags & NTLMSSP_NEGOTIATE_KEY_EXCH) 
@@ -451,8 +449,8 @@
 
 	/* Woop Woop - unknown flag for Windows compatibility...
 	   What does this really do ? JRA. */
-	if (!(neg_flags & NTLMSSP_NEGOTIATE_VERSION)) {
-		ntlmssp_state->neg_flags &= ~NTLMSSP_NEGOTIATE_VERSION;
+	if (!(neg_flags & NTLMSSP_UNKNOWN_02000000)) {
+		ntlmssp_state->neg_flags &= ~NTLMSSP_UNKNOWN_02000000;
 	}
 
 	if ((neg_flags & NTLMSSP_REQUEST_TARGET)) {
@@ -936,7 +934,7 @@
 	(*ntlmssp_state)->neg_flags = 
 		NTLMSSP_NEGOTIATE_128 |
 		NTLMSSP_NEGOTIATE_56 |
-		NTLMSSP_NEGOTIATE_VERSION |
+		NTLMSSP_UNKNOWN_02000000 |
 		NTLMSSP_NEGOTIATE_ALWAYS_SIGN |
 		NTLMSSP_NEGOTIATE_NTLM |
 		NTLMSSP_NEGOTIATE_NTLM2 |

Modified: branches/samba/upstream/source/libsmb/passchange.c
===================================================================
--- branches/samba/upstream/source/libsmb/passchange.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/passchange.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -136,13 +136,13 @@
 	/* Try not to give the password away too easily */
 
 	if (!pass_must_change) {
-		result = cli_rpc_pipe_open_ntlmssp(cli,
-						   &ndr_table_samr.syntax_id,
-						   PIPE_AUTH_LEVEL_PRIVACY,
-						   "", /* what domain... ? */
-						   user_name,
-						   old_passwd,
-						   &pipe_hnd);
+		pipe_hnd = cli_rpc_pipe_open_ntlmssp(cli,
+						PI_SAMR,
+						PIPE_AUTH_LEVEL_PRIVACY,
+						"", /* what domain... ? */
+						user_name,
+						old_passwd,
+						&result);
 	} else {
 		/*
 		 * If the user password must be changed the ntlmssp bind will
@@ -152,11 +152,10 @@
 		 * will just fail. So we do it anonymously, there's no other
 		 * way.
 		 */
-		result = cli_rpc_pipe_open_noauth(
-			cli, &ndr_table_samr.syntax_id, &pipe_hnd);
+		pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
 	}
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (!pipe_hnd) {
 		if (lp_client_lanman_auth()) {
 			/* Use the old RAP method. */
 			if (!cli_oem_change_password(cli, user_name, new_passwd, old_passwd)) {
@@ -178,9 +177,8 @@
 		}
 	}
 
-	result = rpccli_samr_chgpasswd_user2(pipe_hnd, talloc_tos(),
-					     user_name, new_passwd, old_passwd);
-	if (NT_STATUS_IS_OK(result)) {
+	if (NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user(pipe_hnd, pipe_hnd->mem_ctx, user_name, 
+							     new_passwd, old_passwd))) {
 		/* Great - it all worked! */
 		cli_shutdown(cli);
 		return NT_STATUS_OK;
@@ -197,7 +195,7 @@
 	}
 
 	/* OK, that failed, so try again... */
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 	
 	/* Try anonymous NTLMSSP... */
 	cli_init_creds(cli, "", "", NULL);
@@ -205,13 +203,14 @@
 	result = NT_STATUS_UNSUCCESSFUL;
 	
 	/* OK, this is ugly, but... try an anonymous pipe. */
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
-					  &pipe_hnd);
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
 
-	if ( NT_STATUS_IS_OK(result) &&
-		(NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user2(
-					 pipe_hnd, talloc_tos(), user_name,
-					 new_passwd, old_passwd)))) {
+	if ( pipe_hnd &&
+		(NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user(pipe_hnd,
+						pipe_hnd->mem_ctx,
+						user_name, 
+						new_passwd,
+						old_passwd)))) {
 		/* Great - it all worked! */
 		cli_shutdown(cli);
 		return NT_STATUS_OK;

Modified: branches/samba/upstream/source/libsmb/smbencrypt.c
===================================================================
--- branches/samba/upstream/source/libsmb/smbencrypt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/smbencrypt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -172,15 +172,15 @@
 
 	HMACMD5Context ctx;
 
-	if (!push_ucs2_allocate(&user, user_in, &user_byte_len)) {
-		DEBUG(0, ("push_uss2_allocate() for user failed: %s\n",
-			  strerror(errno)));
+	user_byte_len = push_ucs2_allocate(&user, user_in);
+	if (user_byte_len == (size_t)-1) {
+		DEBUG(0, ("push_uss2_allocate() for user returned -1 (probably malloc() failure)\n"));
 		return False;
 	}
 
-	if (!push_ucs2_allocate(&domain, domain_in, &domain_byte_len)) {
-		DEBUG(0, ("push_uss2_allocate() for domain failed: %s\n",
-			  strerror(errno)));
+	domain_byte_len = push_ucs2_allocate(&domain, domain_in);
+	if (domain_byte_len == (size_t)-1) {
+		DEBUG(0, ("push_uss2_allocate() for domain returned -1 (probably malloc() failure)\n"));
 		SAFE_FREE(user);
 		return False;
 	}
@@ -631,23 +631,27 @@
 }
 
 /* Decrypts password-blob with session-key
- * @param nt_hash	NT hash for the session key
+ * @param pass		password for session-key
  * @param data_in 	DATA_BLOB encrypted password
  *
  * Returns cleartext password in CH_UNIX 
  * Caller must free the returned string
  */
 
-char *decrypt_trustdom_secret(uint8_t nt_hash[16], DATA_BLOB *data_in)
+char *decrypt_trustdom_secret(const char *pass, DATA_BLOB *data_in)
 {
 	DATA_BLOB data_out, sess_key;
+	uchar nt_hash[16];
 	uint32_t length;
 	uint32_t version;
 	fstring cleartextpwd;
 
-	if (!data_in || !nt_hash)
+	if (!data_in || !pass)
 		return NULL;
 
+	/* generate md4 password-hash derived from the NT UNICODE password */
+	E_md4hash(pass, nt_hash);
+
 	/* hashed twice with md4 */
 	mdfour(nt_hash, nt_hash, 16);
 
@@ -782,117 +786,3 @@
 
 	return WERR_OK;
 }
-
-DATA_BLOB decrypt_drsuapi_blob(TALLOC_CTX *mem_ctx,
-			       const DATA_BLOB *session_key,
-			       bool rcrypt,
-			       uint32_t rid,
-			       const DATA_BLOB *buffer)
-{
-	DATA_BLOB confounder;
-	DATA_BLOB enc_buffer;
-
-	struct MD5Context md5;
-	uint8_t _enc_key[16];
-	DATA_BLOB enc_key;
-
-	DATA_BLOB dec_buffer;
-
-	uint32_t crc32_given;
-	uint32_t crc32_calc;
-	DATA_BLOB checked_buffer;
-
-	DATA_BLOB plain_buffer;
-
-	/*
-	 * the combination "c[3] s[1] e[1] d[0]..."
-	 * was successful!!!!!!!!!!!!!!!!!!!!!!!!!!
-	 */
-
-	/*
-	 * the first 16 bytes at the beginning are the confounder
-	 * followed by the 4 byte crc32 checksum
-	 */
-	if (buffer->length < 20) {
-		return data_blob_const(NULL, 0);
-	}
-	confounder = data_blob_const(buffer->data, 16);
-	enc_buffer = data_blob_const(buffer->data + 16, buffer->length - 16);
-
-	/*
-	 * build the encryption key md5 over the session key followed
-	 * by the confounder
-	 *
-	 * here the gensec session key is used and
-	 * not the dcerpc ncacn_ip_tcp "SystemLibraryDTC" key!
-	 */
-	enc_key = data_blob_const(_enc_key, sizeof(_enc_key));
-	MD5Init(&md5);
-	MD5Update(&md5, session_key->data, session_key->length);
-	MD5Update(&md5, confounder.data, confounder.length);
-	MD5Final(enc_key.data, &md5);
-
-	/*
-	 * copy the encrypted buffer part and
-	 * decrypt it using the created encryption key using arcfour
-	 */
-	dec_buffer = data_blob_talloc(mem_ctx, enc_buffer.data, enc_buffer.length);
-	if (!dec_buffer.data) {
-		return data_blob_const(NULL, 0);
-	}
-	SamOEMhashBlob(dec_buffer.data, dec_buffer.length, &enc_key);
-
-	/*
-	 * the first 4 byte are the crc32 checksum
-	 * of the remaining bytes
-	 */
-	crc32_given = IVAL(dec_buffer.data, 0);
-	crc32_calc = crc32_calc_buffer((const char *)dec_buffer.data + 4 , dec_buffer.length - 4);
-	if (crc32_given != crc32_calc) {
-		DEBUG(1,("CRC32: given[0x%08X] calc[0x%08X]\n",
-		      crc32_given, crc32_calc));
-		return data_blob_const(NULL, 0);
-	}
-	checked_buffer = data_blob_talloc(mem_ctx, dec_buffer.data + 4, dec_buffer.length - 4);
-	if (!checked_buffer.data) {
-		return data_blob_const(NULL, 0);
-	}
-
-	/*
-	 * some attributes seem to be in a usable form after this decryption
-	 * (supplementalCredentials, priorValue, currentValue, trustAuthOutgoing,
-	 *  trustAuthIncoming, initialAuthOutgoing, initialAuthIncoming)
-	 * At least supplementalCredentials contains plaintext
-	 * like "Primary:Kerberos" (in unicode form)
-	 *
-	 * some attributes seem to have some additional encryption
-	 * dBCSPwd, unicodePwd, ntPwdHistory, lmPwdHistory
-	 *
-	 * it's the sam_rid_crypt() function, as the value is constant,
-	 * so it doesn't depend on sessionkeys.
-	 */
-	if (rcrypt) {
-		uint32_t i, num_hashes;
-
-		if ((checked_buffer.length % 16) != 0) {
-			return data_blob_const(NULL, 0);
-		}
-
-		plain_buffer = data_blob_talloc(mem_ctx, checked_buffer.data, checked_buffer.length);
-		if (!plain_buffer.data) {
-			return data_blob_const(NULL, 0);
-		}
-
-		num_hashes = plain_buffer.length / 16;
-		for (i = 0; i < num_hashes; i++) {
-			uint32_t offset = i * 16;
-			sam_pwd_hash(rid, checked_buffer.data + offset, plain_buffer.data + offset, 0);
-		}
-	} else {
-		plain_buffer = checked_buffer;
-	}
-
-	return plain_buffer;
-}
-
-

Modified: branches/samba/upstream/source/libsmb/trusts_util.c
===================================================================
--- branches/samba/upstream/source/libsmb/trusts_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/libsmb/trusts_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -39,7 +39,7 @@
 	uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
 
 	result = rpccli_netlogon_setup_creds(cli,
-					     cli->desthost, /* server name */
+					     cli->cli->desthost, /* server name */
 					     lp_workgroup(), /* domain */
 					     global_myname(), /* client name */
 					     global_myname(), /* machine account name */
@@ -230,9 +230,8 @@
 
 	/* open the LSARPC_PIPE	*/
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &lsa_pipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	lsa_pipe = cli_rpc_pipe_open_noauth( cli, PI_LSARPC, &result );
+	if ( !lsa_pipe) {
 		goto done;
 	}
 

Modified: branches/samba/upstream/source/locking/locking.c
===================================================================
--- branches/samba/upstream/source/locking/locking.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/locking/locking.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1364,6 +1364,10 @@
 		  delete_on_close ? "Adding" : "Removing", fsp->fnum,
 		  fsp->fsp_name ));
 
+	if (fsp->is_stat) {
+		return True;
+	}
+
 	lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL,
 				  NULL);
 	if (lck == NULL) {

Modified: branches/samba/upstream/source/m4/check_path.m4
===================================================================
--- branches/samba/upstream/source/m4/check_path.m4	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/m4/check_path.m4	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,11 +22,10 @@
 logfilebase="\${VARDIR}"
 privatedir="\${prefix}/private"
 test "${libdir}" || libdir="\${prefix}/lib"
-modulesdir="${libdir}"
-pammodulesdir="${libdir}/security"
-configdir="${libdir}"
+pammodulesdir="\${LIBDIR}/security"
+configdir="\${LIBDIR}"
 swatdir="\${prefix}/swat"
-codepagedir="\${MODULESDIR}"
+codepagedir="\${LIBDIR}"
 statedir="\${LOCKDIR}"
 cachedir="\${LOCKDIR}"
 
@@ -39,11 +38,10 @@
     mandir="\${prefix}/share/man"
     logfilebase="\${VARDIR}/log/samba"
     privatedir="\${CONFIGDIR}/private"
-    test "${libdir}" || libdir="\${prefix}/lib"
-    modulesdir="${libdir}/samba"
+    test "${libdir}" || libdir="\${prefix}/lib/samba"
     configdir="\${sysconfdir}/samba"
     swatdir="\${DATADIR}/samba/swat"
-    codepagedir="\${MODULESDIR}"
+    codepagedir="\${LIBDIR}"
     statedir="\${VARDIR}/lib/samba"
     cachedir="\${VARDIR}/lib/samba"
     AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths])
@@ -177,18 +175,18 @@
   esac])
 
 #################################################
-# set shared modules (internal lib) directory location
-AC_ARG_WITH(modulesdir,
-[AS_HELP_STRING([--with-modulesdir=DIR], [Where to put shared modules ($libdir)])],
+# set lib directory location
+AC_ARG_WITH(libdir,
+[AS_HELP_STRING([--with-libdir=DIR], [Where to put libdir ($libdir)])],
 [ case "$withval" in
   yes|no)
   #
   # Just in case anybody does it
   #
-    AC_MSG_WARN([--with-modulesdir without argument - will use default])
+    AC_MSG_WARN([--with-libdir without argument - will use default])
   ;;
   * )
-    modulesdir="$withval"
+    libdir="$withval"
     ;;
   esac])
 
@@ -238,7 +236,6 @@
 AC_SUBST(cachedir)
 AC_SUBST(rootsbindir)
 AC_SUBST(pammodulesdir)
-AC_SUBST(modulesdir)
 
 #################################################
 # set prefix for 'make test'
@@ -299,14 +296,6 @@
 	krb5_developer=yes
     fi])
 
-picky_developer=no
-AC_ARG_ENABLE(picky-developer, [AS_HELP_STRING([--enable-picky-developer], [Halt compilation on warnings])],
-    [if eval "test x$enable_picky_developer = xyes"; then
-        debug=yes
-        developer=yes
-        picky_developer=yes
-    fi])
-
 AC_ARG_WITH(cfenc,
 [AS_HELP_STRING([--with-cfenc=HEADERDIR], [Use internal CoreFoundation encoding API for optimization (Mac OS X/Darwin only)])],
 [

Modified: branches/samba/upstream/source/modules/nfs4_acls.c
===================================================================
--- branches/samba/upstream/source/modules/nfs4_acls.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/nfs4_acls.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -44,6 +44,7 @@
 	SMB_ACE4_INT_T	*last;
 } SMB_ACL4_INT_T;
 
+extern struct current_user current_user;
 extern int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid);
 extern NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp,
 	uint32 security_info_sent, SEC_DESC *psd);
@@ -735,8 +736,7 @@
 			need_chown = True;
 		}
 		if (need_chown) {
-			if ((newUID == (uid_t)-1
-			     || newUID == fsp->conn->server_info->utok.uid)) {
+			if ((newUID == (uid_t)-1 || newUID == current_user.ut.uid)) {
 				if(try_chown(fsp->conn, fsp->fsp_name, newUID, newGID)) {
 					DEBUG(3,("chown %s, %u, %u failed. Error = %s.\n",
 						 fsp->fsp_name, (unsigned int)newUID, (unsigned int)newGID, 

Deleted: branches/samba/upstream/source/modules/vfs_acl_xattr.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_acl_xattr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_acl_xattr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,331 +0,0 @@
-/*
- * Store Windows ACLs in xattrs.
- *
- * Copyright (C) Volker Lendecke, 2008
- * Copyright (C) Jeremy Allison, 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-/* NOTE: This is an experimental module, not yet finished. JRA. */
-
-#include "includes.h"
-#include "librpc/gen_ndr/xattr.h"
-#include "librpc/gen_ndr/ndr_xattr.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_VFS
-
-static NTSTATUS parse_acl_blob(const DATA_BLOB *pblob,
-				const struct timespec cts,
-				uint32 security_info,
-				struct security_descriptor **ppdesc)
-{
-	TALLOC_CTX *ctx = talloc_tos();
-	struct xattr_NTACL xacl;
-	enum ndr_err_code ndr_err;
-	size_t sd_size;
-	struct timespec ts;
-
-	ndr_err = ndr_pull_struct_blob(pblob, ctx, &xacl,
-			(ndr_pull_flags_fn_t)ndr_pull_xattr_NTACL);
-
-	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-		DEBUG(5, ("parse_acl_blob: ndr_pull_xattr_NTACL failed: %s\n",
-			ndr_errstr(ndr_err)));
-		return ndr_map_error2ntstatus(ndr_err);;
-	}
-
-	if (xacl.version != 2) {
-		return NT_STATUS_REVISION_MISMATCH;
-	}
-
-	/*
-	 * Check that the ctime timestamp is ealier
-	 * than the stored timestamp.
-	 */
-
-	ts = nt_time_to_unix_timespec(&xacl.info.sd_ts->last_changed);
-
-	if (timespec_compare(&cts, &ts) > 0) {
-		DEBUG(5, ("parse_acl_blob: stored ACL out of date.\n"));
-		return NT_STATUS_EA_CORRUPT_ERROR;
-	}
-
-	*ppdesc = make_sec_desc(ctx, SEC_DESC_REVISION, SEC_DESC_SELF_RELATIVE,
-			(security_info & OWNER_SECURITY_INFORMATION)
-			? xacl.info.sd_ts->sd->owner_sid : NULL,
-			(security_info & GROUP_SECURITY_INFORMATION)
-			? xacl.info.sd_ts->sd->group_sid : NULL,
-			(security_info & SACL_SECURITY_INFORMATION)
-			? xacl.info.sd_ts->sd->sacl : NULL,
-			(security_info & DACL_SECURITY_INFORMATION)
-			? xacl.info.sd_ts->sd->dacl : NULL,
-			&sd_size);
-
-	TALLOC_FREE(xacl.info.sd);
-
-	return (*ppdesc != NULL) ? NT_STATUS_OK : NT_STATUS_NO_MEMORY;
-}
-
-static NTSTATUS get_acl_blob(TALLOC_CTX *ctx,
-			vfs_handle_struct *handle,
-			files_struct *fsp,
-			const char *name,
-			DATA_BLOB *pblob)
-{
-	size_t size = 1024;
-	uint8_t *val = NULL;
-	uint8_t *tmp;
-	ssize_t sizeret;
-	int saved_errno;
-
-	ZERO_STRUCTP(pblob);
-
-  again:
-
-	tmp = TALLOC_REALLOC_ARRAY(ctx, val, uint8_t, size);
-	if (tmp == NULL) {
-		TALLOC_FREE(val);
-		return NT_STATUS_NO_MEMORY;
-	}
-	val = tmp;
-
-	become_root();
-	if (fsp && fsp->fh->fd != -1) {
-		sizeret = SMB_VFS_FGETXATTR(fsp, XATTR_NTACL_NAME, val, size);
-	} else {
-		sizeret = SMB_VFS_GETXATTR(handle->conn, name,
-					XATTR_NTACL_NAME, val, size);
-	}
-	if (sizeret == -1) {
-		saved_errno = errno;
-	}
-	unbecome_root();
-
-	/* Max ACL size is 65536 bytes. */
-	if (sizeret == -1) {
-		errno = saved_errno;
-		if ((errno == ERANGE) && (size != 65536)) {
-			/* Too small, try again. */
-			size = 65536;
-			goto again;
-		}
-
-		/* Real error - exit here. */
-		TALLOC_FREE(val);
-		return map_nt_error_from_unix(errno);
-	}
-
-	pblob->data = val;
-	pblob->length = sizeret;
-	return NT_STATUS_OK;
-}
-
-static int mkdir_acl_xattr(vfs_handle_struct *handle,  const char *path, mode_t mode)
-{
-	return SMB_VFS_NEXT_MKDIR(handle, path, mode);
-}
-
-static int rmdir_acl_xattr(vfs_handle_struct *handle,  const char *path)
-{
-	return SMB_VFS_NEXT_RMDIR(handle, path);
-}
-
-static int open_acl_xattr(vfs_handle_struct *handle,  const char *fname, files_struct *fsp, int flags, mode_t mode)
-{
-	return SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
-}
-
-static int unlink_acl_xattr(vfs_handle_struct *handle,  const char *fname)
-{
-	return SMB_VFS_NEXT_UNLINK(handle, fname);
-}
-
-static NTSTATUS get_nt_acl_xattr_internal(vfs_handle_struct *handle,
-					files_struct *fsp,
-					const char *name,
-				        uint32 security_info,
-					SEC_DESC **ppdesc)
-{
-	TALLOC_CTX *ctx = talloc_tos();
-	DATA_BLOB blob;
-	SMB_STRUCT_STAT sbuf;
-	NTSTATUS status;
-
-	if (fsp && name == NULL) {
-		name = fsp->fsp_name;
-	}
-
-	DEBUG(10, ("get_nt_acl_xattr_internal: name=%s\n", name));
-
-	status = get_acl_blob(ctx, handle, fsp, name, &blob);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(10, ("get_acl_blob returned %s\n", nt_errstr(status)));
-		return status;
-	}
-
-	if (fsp && fsp->fh->fd != -1) {
-		if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) {
-			return map_nt_error_from_unix(errno);
-		}
-	} else {
-		if (SMB_VFS_STAT(handle->conn, name, &sbuf) == -1) {
-			return map_nt_error_from_unix(errno);
-		}
-	}
-
-	status = parse_acl_blob(&blob, get_ctimespec(&sbuf),
-			security_info, ppdesc);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(10, ("parse_acl_blob returned %s\n",
-				nt_errstr(status)));
-		return status;
-	}
-
-	TALLOC_FREE(blob.data);
-	return status;
-}
-
-static NTSTATUS fget_nt_acl_xattr(vfs_handle_struct *handle, files_struct *fsp,
-        uint32 security_info, SEC_DESC **ppdesc)
-{
-	NTSTATUS status = get_nt_acl_xattr_internal(handle, fsp,
-				NULL, security_info, ppdesc);
-	if (NT_STATUS_IS_OK(status)) {
-		return NT_STATUS_OK;
-	}
-	return SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp,
-			security_info, ppdesc);
-}
-
-static NTSTATUS get_nt_acl_xattr(vfs_handle_struct *handle,
-        const char *name, uint32 security_info, SEC_DESC **ppdesc)
-{
-	NTSTATUS status = get_nt_acl_xattr_internal(handle, NULL,
-				name, security_info, ppdesc);
-	if (NT_STATUS_IS_OK(status)) {
-		return NT_STATUS_OK;
-	}
-	return SMB_VFS_NEXT_GET_NT_ACL(handle, name,
-			security_info, ppdesc);
-}
-
-static NTSTATUS create_acl_blob(SEC_DESC *psd, DATA_BLOB *pblob)
-{
-	struct xattr_NTACL xacl;
-	struct security_descriptor_timestamp sd_ts;
-	enum ndr_err_code ndr_err;
-	TALLOC_CTX *ctx = talloc_tos();
-	struct timespec curr = timespec_current();
-
-	ZERO_STRUCT(xacl);
-	ZERO_STRUCT(sd_ts);
-
-	/* Horrid hack as setting an xattr changes the ctime
- 	 * on Linux. This gives a race of 1 second during
- 	 * which we would not see a POSIX ACL set.
- 	 */
-	curr.tv_sec += 1;
-
-	xacl.version = 2;
-	xacl.info.sd_ts = &sd_ts;
-	xacl.info.sd_ts->sd = psd;
-	unix_timespec_to_nt_time(&xacl.info.sd_ts->last_changed, curr);
-
-	ndr_err = ndr_push_struct_blob(
-			pblob, ctx, &xacl,
-			(ndr_push_flags_fn_t)ndr_push_xattr_NTACL);
-
-	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-		DEBUG(5, ("create_acl_blob: ndr_push_xattr_NTACL failed: %s\n",
-			ndr_errstr(ndr_err)));
-		return ndr_map_error2ntstatus(ndr_err);;
-	}
-
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS store_acl_blob(files_struct *fsp,
-				DATA_BLOB *pblob)
-{
-	int ret;
-	int saved_errno;
-
-	DEBUG(10,("store_acl_blob: storing blob length %u on file %s\n",
-			(unsigned int)pblob->length, fsp->fsp_name));
-
-	become_root();
-	if (fsp->fh->fd != -1) {
-		ret = SMB_VFS_FSETXATTR(fsp, XATTR_NTACL_NAME,
-			pblob->data, pblob->length, 0);
-	} else {
-		ret = SMB_VFS_SETXATTR(fsp->conn, fsp->fsp_name,
-				XATTR_NTACL_NAME,
-				pblob->data, pblob->length, 0);
-	}
-	if (ret) {
-		saved_errno = errno;
-	}
-	unbecome_root();
-	if (ret) {
-		errno = saved_errno;
-		DEBUG(5, ("store_acl_blob: setting attr failed for file %s"
-			"with error %s\n",
-			fsp->fsp_name,
-			strerror(errno) ));
-		return map_nt_error_from_unix(errno);
-	}
-	return NT_STATUS_OK;
-}
-
-static NTSTATUS fset_nt_acl_xattr(vfs_handle_struct *handle, files_struct *fsp,
-        uint32 security_info_sent, SEC_DESC *psd)
-{
-	NTSTATUS status;
-	DATA_BLOB blob;
-
-	status = SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, security_info_sent, psd);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	create_acl_blob(psd, &blob);
-	store_acl_blob(fsp, &blob);
-
-	return NT_STATUS_OK;
-}
-
-/* VFS operations structure */
-
-static vfs_op_tuple skel_op_tuples[] =
-{
-	{SMB_VFS_OP(mkdir_acl_xattr), SMB_VFS_OP_MKDIR, SMB_VFS_LAYER_TRANSPARENT},
-	{SMB_VFS_OP(rmdir_acl_xattr), SMB_VFS_OP_RMDIR, SMB_VFS_LAYER_TRANSPARENT},
-	{SMB_VFS_OP(open_acl_xattr),  SMB_VFS_OP_OPEN,  SMB_VFS_LAYER_TRANSPARENT},
-	{SMB_VFS_OP(unlink_acl_xattr),SMB_VFS_OP_UNLINK,SMB_VFS_LAYER_TRANSPARENT},
-
-        /* NT File ACL operations */
-
-	{SMB_VFS_OP(fget_nt_acl_xattr),SMB_VFS_OP_FGET_NT_ACL,SMB_VFS_LAYER_TRANSPARENT},
-	{SMB_VFS_OP(get_nt_acl_xattr), SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
-	{SMB_VFS_OP(fset_nt_acl_xattr),SMB_VFS_OP_FSET_NT_ACL,SMB_VFS_LAYER_TRANSPARENT},
-
-        {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
-};
-
-NTSTATUS vfs_acl_xattr_init(void)
-{
-	return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "acl_xattr", skel_op_tuples);
-}

Modified: branches/samba/upstream/source/modules/vfs_afsacl.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_afsacl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_afsacl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1045,6 +1045,14 @@
 	return afs_set_nt_acl(handle, fsp, security_info_sent, psd);
 }
 
+NTSTATUS afsacl_set_nt_acl(vfs_handle_struct *handle,
+		       files_struct *fsp,
+		       const char *name, uint32 security_info_sent,
+		       SEC_DESC *psd)
+{
+	return afs_set_nt_acl(handle, fsp, security_info_sent, psd);
+}
+
 static int afsacl_connect(vfs_handle_struct *handle, 
 			  const char *service, 
 			  const char *user)
@@ -1070,6 +1078,8 @@
 	 SMB_VFS_LAYER_TRANSPARENT},
 	{SMB_VFS_OP(afsacl_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL,
 	 SMB_VFS_LAYER_TRANSPARENT},
+	{SMB_VFS_OP(afsacl_set_nt_acl), SMB_VFS_OP_SET_NT_ACL,
+	 SMB_VFS_LAYER_TRANSPARENT},
 	{SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
 };
 

Modified: branches/samba/upstream/source/modules/vfs_aio_fork.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_aio_fork.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_aio_fork.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -436,6 +436,7 @@
 	if (socketpair(AF_UNIX, SOCK_STREAM, 0, fdpair) == -1) {
 		status = map_nt_error_from_unix(errno);
 		DEBUG(10, ("socketpair() failed: %s\n", strerror(errno)));
+		TALLOC_FREE(result);
 		goto fail;
 	}
 

Modified: branches/samba/upstream/source/modules/vfs_aixacl2.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_aixacl2.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_aixacl2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,7 +25,10 @@
 
 #define AIXACL2_MODULE_NAME "aixacl2"
 
+extern struct current_user current_user;
 extern int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid);
+extern NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp,
+	uint32 security_info_sent, SEC_DESC *psd);
 
 extern SMB_ACL_T aixacl_to_smbacl( struct acl *file_acl);
 extern struct acl *aixacl_smb_to_aixacl(SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl);
@@ -400,6 +403,11 @@
 	return aixjfs2_set_nt_acl_common(fsp, security_info_sent, psd);
 }
 
+NTSTATUS aixjfs2_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd)
+{
+	return aixjfs2_set_nt_acl_common(fsp, security_info_sent, psd);
+}
+
 int aixjfs2_sys_acl_set_file(vfs_handle_struct *handle,
 			      const char *name,
 			      SMB_ACL_TYPE_T type,
@@ -501,6 +509,10 @@
 	SMB_VFS_OP_FSET_NT_ACL,
 	SMB_VFS_LAYER_TRANSPARENT},
 
+	{SMB_VFS_OP(aixjfs2_set_nt_acl),
+	SMB_VFS_OP_SET_NT_ACL,
+	SMB_VFS_LAYER_TRANSPARENT},
+
 	{SMB_VFS_OP(aixjfs2_sys_acl_get_file),
 	SMB_VFS_OP_SYS_ACL_GET_FILE,
 	SMB_VFS_LAYER_TRANSPARENT},

Modified: branches/samba/upstream/source/modules/vfs_cap.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_cap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_cap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -278,6 +278,17 @@
 	return SMB_VFS_NEXT_REALPATH(handle, path, resolved_path);
 }
 
+static NTSTATUS cap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *path, uint32 security_info_sent, struct security_descriptor *psd)
+{
+	char *cappath = capencode(talloc_tos(), path);
+
+	if (!cappath) {
+		errno = ENOMEM;
+		return NT_STATUS_NO_MEMORY;
+	}
+	return SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, cappath, security_info_sent, psd);
+}
+
 static int cap_chmod_acl(vfs_handle_struct *handle, const char *path, mode_t mode)
 {
 	char *cappath = capencode(talloc_tos(), path);
@@ -488,6 +499,10 @@
 	{SMB_VFS_OP(cap_mknod),			SMB_VFS_OP_MKNOD,		SMB_VFS_LAYER_TRANSPARENT},
 	{SMB_VFS_OP(cap_realpath),			SMB_VFS_OP_REALPATH,		SMB_VFS_LAYER_TRANSPARENT},
 
+	/* NT File ACL operations */
+
+	{SMB_VFS_OP(cap_set_nt_acl),			SMB_VFS_OP_SET_NT_ACL,		SMB_VFS_LAYER_TRANSPARENT},
+
 	/* POSIX ACL operations */
 
 	{SMB_VFS_OP(cap_chmod_acl),			SMB_VFS_OP_CHMOD_ACL,		SMB_VFS_LAYER_TRANSPARENT},

Modified: branches/samba/upstream/source/modules/vfs_catia.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_catia.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_catia.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -36,13 +36,12 @@
 	smb_ucs2_t *ptr = NULL;
 	smb_ucs2_t old = oldc;
 	char *ret = NULL;
-	size_t converted_size;
 
 	if (!s) {
 		return NULL;
 	}
 
-	if (!push_ucs2_talloc(ctx, &tmpbuf, s, &converted_size)) {
+	if (push_ucs2_talloc(ctx, &tmpbuf, s) == -1) {
 		return NULL;
 	}
 
@@ -54,7 +53,7 @@
 		}
 	}
 
-	if (!pull_ucs2_talloc(ctx, &ret, tmpbuf, &converted_size)) {
+	if (pull_ucs2_talloc(ctx, &ret, tmpbuf) == -1) {
 		TALLOC_FREE(tmpbuf);
 		return NULL;
 	}
@@ -294,6 +293,14 @@
         return SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info, ppdesc);
 }
 
+static NTSTATUS catia_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+			     const char *name, uint32 security_info_sent,
+			     struct security_descriptor *psd)
+{
+        return SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent,
+				       psd);
+}
+
 static int catia_chmod_acl(vfs_handle_struct *handle,
 			   const char *name, mode_t mode)
 {
@@ -355,6 +362,8 @@
 
         {SMB_VFS_OP(catia_get_nt_acl), SMB_VFS_OP_GET_NT_ACL,
 SMB_VFS_LAYER_TRANSPARENT},
+        {SMB_VFS_OP(catia_set_nt_acl), SMB_VFS_OP_SET_NT_ACL,
+SMB_VFS_LAYER_TRANSPARENT},
 
         /* POSIX ACL operations */
 

Modified: branches/samba/upstream/source/modules/vfs_default.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_default.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_default.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1046,6 +1046,16 @@
 	return result;
 }
 
+static NTSTATUS vfswrap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, SEC_DESC *psd)
+{
+	NTSTATUS result;
+
+	START_PROFILE(set_nt_acl);
+	result = set_nt_acl(fsp, security_info_sent, psd);
+	END_PROFILE(set_nt_acl);
+	return result;
+}
+
 static int vfswrap_chmod_acl(vfs_handle_struct *handle,  const char *name, mode_t mode)
 {
 #ifdef HAVE_NO_ACL
@@ -1440,6 +1450,8 @@
 	 SMB_VFS_LAYER_OPAQUE},
 	{SMB_VFS_OP(vfswrap_fset_nt_acl),	SMB_VFS_OP_FSET_NT_ACL,
 	 SMB_VFS_LAYER_OPAQUE},
+	{SMB_VFS_OP(vfswrap_set_nt_acl),	SMB_VFS_OP_SET_NT_ACL,
+	 SMB_VFS_LAYER_OPAQUE},
 
 	/* POSIX ACL operations. */
 

Modified: branches/samba/upstream/source/modules/vfs_expand_msdfs.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_expand_msdfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_expand_msdfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,6 +22,8 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_VFS
 
+extern userdom_struct current_user_info;
+
 /**********************************************************
   Under mapfile we expect a table of the following format:
 
@@ -143,11 +145,11 @@
 
 	targethost = talloc_sub_advanced(ctx,
 				lp_servicename(SNUM(conn)),
-				conn->server_info->unix_name,
+				conn->user,
 				conn->connectpath,
-				conn->server_info->utok.gid,
-				conn->server_info->sanitized_username,
-				pdb_get_domain(conn->server_info->sam_account),
+				conn->gid,
+				get_current_username(),
+				current_user_info.domain,
 				targethost);
 
 	DEBUG(10, ("Expanded targethost to %s\n", targethost));

Modified: branches/samba/upstream/source/modules/vfs_fake_perms.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_fake_perms.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_fake_perms.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,6 +23,8 @@
 
 #include "includes.h"
 
+extern struct current_user current_user;
+
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_VFS
 
@@ -37,8 +39,8 @@
 		} else {
 			sbuf->st_mode = S_IRWXU;
 		}
-		sbuf->st_uid = handle->conn->server_info->utok.uid;
-		sbuf->st_gid = handle->conn->server_info->utok.gid;
+		sbuf->st_uid = current_user.ut.uid;
+		sbuf->st_gid = current_user.ut.gid;
 	}
 
 	return ret;
@@ -55,8 +57,8 @@
 		} else {
 			sbuf->st_mode = S_IRWXU;
 		}
-		sbuf->st_uid = handle->conn->server_info->utok.uid;
-		sbuf->st_gid = handle->conn->server_info->utok.gid;
+		sbuf->st_uid = current_user.ut.uid;
+		sbuf->st_gid = current_user.ut.gid;
 	}
 	return ret;
 }

Modified: branches/samba/upstream/source/modules/vfs_fileid.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_fileid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_fileid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -182,7 +182,7 @@
 	struct fileid_handle_data *data;
 	const char *algorithm;
 
-	data = talloc_zero(handle->conn, struct fileid_handle_data);
+	data = talloc_zero(handle->conn->mem_ctx, struct fileid_handle_data);
 	if (!data) {
 		DEBUG(0, ("talloc_zero() failed\n"));
 		return -1;
@@ -190,7 +190,7 @@
 
 	data->device_mapping_fn	= fileid_device_mapping_fsid;
 	algorithm = lp_parm_const_string(SNUM(handle->conn),
-					 "fileid", "mapping",
+					 "fileid", "algorithm",
 					 "fsname");
 	if (strcmp("fsname", algorithm) == 0) {
 		data->device_mapping_fn	= fileid_device_mapping_fsname;

Modified: branches/samba/upstream/source/modules/vfs_full_audit.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_full_audit.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_full_audit.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -59,6 +59,8 @@
 
 #include "includes.h"
 
+extern userdom_struct current_user_info;
+
 static int vfs_full_audit_debug_level = DBGC_VFS;
 
 struct vfs_full_audit_private_data {
@@ -203,6 +205,9 @@
 static NTSTATUS smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
 			      uint32 security_info_sent,
 			      SEC_DESC *psd);
+static NTSTATUS smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+			     const char *name, uint32 security_info_sent,
+			     SEC_DESC *psd);
 static int smb_full_audit_chmod_acl(vfs_handle_struct *handle,
 			   const char *path, mode_t mode);
 static int smb_full_audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp,
@@ -434,6 +439,8 @@
 	 SMB_VFS_LAYER_LOGGER},
 	{SMB_VFS_OP(smb_full_audit_fset_nt_acl),	SMB_VFS_OP_FSET_NT_ACL,
 	 SMB_VFS_LAYER_LOGGER},
+	{SMB_VFS_OP(smb_full_audit_set_nt_acl),	SMB_VFS_OP_SET_NT_ACL,
+	 SMB_VFS_LAYER_LOGGER},
 
 	/* POSIX ACL operations. */
 
@@ -596,6 +603,7 @@
 	{ SMB_VFS_OP_FGET_NT_ACL,	"fget_nt_acl" },
 	{ SMB_VFS_OP_GET_NT_ACL,	"get_nt_acl" },
 	{ SMB_VFS_OP_FSET_NT_ACL,	"fset_nt_acl" },
+	{ SMB_VFS_OP_SET_NT_ACL,	"set_nt_acl" },
 	{ SMB_VFS_OP_CHMOD_ACL,	"chmod_acl" },
 	{ SMB_VFS_OP_FCHMOD_ACL,	"fchmod_acl" },
 	{ SMB_VFS_OP_SYS_ACL_GET_ENTRY,	"sys_acl_get_entry" },
@@ -701,12 +709,10 @@
 		return NULL;
 	}
 	return talloc_sub_advanced(ctx,
-			lp_servicename(SNUM(conn)),
-			conn->server_info->unix_name,
-			conn->connectpath,
-			conn->server_info->utok.gid,
-			conn->server_info->sanitized_username,
-			pdb_get_domain(conn->server_info->sam_account),
+			lp_servicename(SNUM(conn)), conn->user,
+			conn->connectpath, conn->gid,
+			get_current_username(),
+			current_user_info.domain,
 			prefix);
 }
 
@@ -1593,6 +1599,20 @@
 	return result;
 }
 
+static NTSTATUS smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+			     const char *name, uint32 security_info_sent,
+			     SEC_DESC *psd)
+{
+	NTSTATUS result;
+
+	result = SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent,
+					 psd);
+
+	do_log(SMB_VFS_OP_SET_NT_ACL, NT_STATUS_IS_OK(result), handle, "%s", fsp->fsp_name);
+
+	return result;
+}
+
 static int smb_full_audit_chmod_acl(vfs_handle_struct *handle,
 			   const char *path, mode_t mode)
 {

Modified: branches/samba/upstream/source/modules/vfs_gpfs.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_gpfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_gpfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -391,6 +391,11 @@
 	return gpfsacl_set_nt_acl_internal(fsp, security_info_sent, psd);
 }
 
+static NTSTATUS gpfsacl_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, char *name, uint32 security_info_sent, SEC_DESC *psd)
+{
+	return gpfsacl_set_nt_acl_internal(fsp, security_info_sent, psd);
+}
+
 static SMB_ACL_T gpfs2smb_acl(const struct gpfs_acl *pacl)
 {
 	SMB_ACL_T result;
@@ -834,6 +839,10 @@
 	  SMB_VFS_OP_FSET_NT_ACL,
 	  SMB_VFS_LAYER_TRANSPARENT },
 	
+        { SMB_VFS_OP(gpfsacl_set_nt_acl), 
+	  SMB_VFS_OP_SET_NT_ACL,
+	  SMB_VFS_LAYER_TRANSPARENT },
+	
         { SMB_VFS_OP(gpfsacl_sys_acl_get_file), 
 	  SMB_VFS_OP_SYS_ACL_GET_FILE,
 	  SMB_VFS_LAYER_TRANSPARENT },

Deleted: branches/samba/upstream/source/modules/vfs_hpuxacl.h
===================================================================
--- branches/samba/upstream/source/modules/vfs_hpuxacl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_hpuxacl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,58 +0,0 @@
-/*
- * Unix SMB/Netbios implementation.
- * VFS module to get and set HP-UX ACLs - prototype header
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This module supports JFS (POSIX) ACLs on VxFS (Veritas * Filesystem).
- * These are available on HP-UX 11.00 if JFS 3.3 is installed.
- * On HP-UX 11i (11.11 and above) these ACLs are supported out of
- * the box.
- *
- * There is another form of ACLs on HFS. These ACLs have a
- * completely different API and their own set of userland tools.
- * Since HFS seems to be considered deprecated, HFS acls
- * are not supported. (They could be supported through a separate
- * vfs-module if there is demand.)
- */
-
-#ifndef __VFS_HPUXACL_H__
-#define __VFS_HPUXACL_H__
-
-SMB_ACL_T hpuxacl_sys_acl_get_file(vfs_handle_struct *handle,
-				   const char *path_p,
-				   SMB_ACL_TYPE_T type);
-
-SMB_ACL_T hpuxacl_sys_acl_get_fd(vfs_handle_struct *handle,
-				 files_struct *fsp);
-
-int hpuxacl_sys_acl_set_file(vfs_handle_struct *handle,
-			     const char *name,
-			     SMB_ACL_TYPE_T type,
-			     SMB_ACL_T theacl);
-
-int hpuxacl_sys_acl_set_fd(vfs_handle_struct *handle,
-			   files_struct *fsp,
-			   SMB_ACL_T theacl);
-
-int hpuxacl_sys_acl_delete_def_file(vfs_handle_struct *handle,
-				    const char *path);
-
-NTSTATUS vfs_hpuxacl_init(void);
-
-#endif
-

Deleted: branches/samba/upstream/source/modules/vfs_irixacl.h
===================================================================
--- branches/samba/upstream/source/modules/vfs_irixacl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_irixacl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,45 +0,0 @@
-/*
-   Unix SMB/Netbios implementation.
-   VFS module to get and set irix acls - prototype header
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __VFS_IRIXACL_H__
-#define __VFS_IRIXACL_H__
-
-SMB_ACL_T irixacl_sys_acl_get_file(vfs_handle_struct *handle,
-				   const char *path_p,
-				   SMB_ACL_TYPE_T type);
-
-SMB_ACL_T irixacl_sys_acl_get_fd(vfs_handle_struct *handle,
-				 files_struct *fsp);
-
-int irixacl_sys_acl_set_file(vfs_handle_struct *handle,
-			     const char *name,
-			     SMB_ACL_TYPE_T type,
-			     SMB_ACL_T theacl);
-
-int irixacl_sys_acl_set_fd(vfs_handle_struct *handle,
-			   files_struct *fsp,
-			   SMB_ACL_T theacl);
-
-int irixacl_sys_acl_delete_def_file(vfs_handle_struct *handle,
-				    const char *path);
-
-NTSTATUS vfs_irixacl_init(void);
-
-#endif
-

Deleted: branches/samba/upstream/source/modules/vfs_posixacl.h
===================================================================
--- branches/samba/upstream/source/modules/vfs_posixacl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_posixacl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,46 +0,0 @@
-/*
-   Unix SMB/Netbios implementation.
-   VFS module to get and set posix acls
-   Copyright (C) Volker Lendecke 2006
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __VFS_POSIXACL_H__
-#define __VFS_POSIXACL_H__
-
-SMB_ACL_T posixacl_sys_acl_get_file(vfs_handle_struct *handle,
-				    const char *path_p,
-				    SMB_ACL_TYPE_T type);
-
-SMB_ACL_T posixacl_sys_acl_get_fd(vfs_handle_struct *handle,
-				  files_struct *fsp);
-
-int posixacl_sys_acl_set_file(vfs_handle_struct *handle,
-			      const char *name,
-			      SMB_ACL_TYPE_T type,
-			      SMB_ACL_T theacl);
-
-int posixacl_sys_acl_set_fd(vfs_handle_struct *handle,
-			    files_struct *fsp,
-			    SMB_ACL_T theacl);
-
-int posixacl_sys_acl_delete_def_file(vfs_handle_struct *handle,
-				     const char *path);
-
-NTSTATUS vfs_posixacl_init(void);
-
-#endif
-

Modified: branches/samba/upstream/source/modules/vfs_recycle.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_recycle.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_recycle.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -412,6 +412,8 @@
 	}
 }
 
+extern userdom_struct current_user_info;
+
 /**
  * Check if file should be recycled
  **/
@@ -430,11 +432,10 @@
 	int rc = -1;
 
 	repository = talloc_sub_advanced(NULL, lp_servicename(SNUM(conn)),
-					conn->server_info->unix_name,
-					conn->connectpath,
-					conn->server_info->utok.gid,
-					conn->server_info->sanitized_username,
-					pdb_get_domain(conn->server_info->sam_account),
+					conn->user,
+					conn->connectpath, conn->gid,
+					get_current_username(),
+					current_user_info.domain,
 					recycle_repository(handle));
 	ALLOC_CHECK(repository, done);
 	/* shouldn't we allow absolute path names here? --metze */

Modified: branches/samba/upstream/source/modules/vfs_shadow_copy2.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_shadow_copy2.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_shadow_copy2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -423,6 +423,13 @@
         SHADOW2_NTSTATUS_NEXT(GET_NT_ACL, (handle, name, security_info, ppdesc), NT_STATUS_ACCESS_DENIED);
 }
 
+static NTSTATUS shadow_copy2_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
+			     const char *fname, uint32 security_info_sent,
+			     struct security_descriptor *psd)
+{
+        SHADOW2_NTSTATUS_NEXT(SET_NT_ACL, (handle, fsp, name, security_info_sent, psd), NT_STATUS_ACCESS_DENIED);
+}
+
 static int shadow_copy2_mkdir(vfs_handle_struct *handle,  const char *fname, mode_t mode)
 {
         SHADOW2_NEXT(MKDIR, (handle, name, mode), int, -1);
@@ -594,6 +601,7 @@
 
         /* NT File ACL operations */
         {SMB_VFS_OP(shadow_copy2_get_nt_acl), SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
+        {SMB_VFS_OP(shadow_copy2_set_nt_acl), SMB_VFS_OP_SET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
 
         /* POSIX ACL operations */
         {SMB_VFS_OP(shadow_copy2_chmod_acl), SMB_VFS_OP_CHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT},

Deleted: branches/samba/upstream/source/modules/vfs_smb_traffic_analyzer.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_smb_traffic_analyzer.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_smb_traffic_analyzer.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,404 +0,0 @@
-/*
- * traffic-analyzer VFS module. Measure the smb traffic users create
- * on the net.
- *
- * Copyright (C) Holger Hetterich, 2008
- * Copyright (C) Jeremy Allison, 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-/* abstraction for the send_over_network function */
-
-enum sock_type {INTERNET_SOCKET = 0, UNIX_DOMAIN_SOCKET};
-
-#define LOCAL_PATHNAME "/var/tmp/stadsocket"
-
-static int vfs_smb_traffic_analyzer_debug_level = DBGC_VFS;
-
-static enum sock_type smb_traffic_analyzer_connMode(vfs_handle_struct *handle)
-{
-	connection_struct *conn = handle->conn;
-        const char *Mode;
-        Mode=lp_parm_const_string(SNUM(conn), "smb_traffic_analyzer","mode", \
-			"internet_socket");
-	if (strstr(Mode,"unix_domain_socket")) {
-		return UNIX_DOMAIN_SOCKET;
-	} else {
-		return INTERNET_SOCKET;
-	}
-}
-
-/* Connect to an internet socket */
-
-static int smb_traffic_analyzer_connect_inet_socket(vfs_handle_struct *handle,
-					const char *name, uint16_t port)
-{
-	/* Create a streaming Socket */
-	int sockfd = -1;
-	struct addrinfo hints;
-	struct addrinfo *ailist = NULL;
-	struct addrinfo *res = NULL;
-	int ret;
-
-	ZERO_STRUCT(hints);
-	/* By default make sure it supports TCP. */
-	hints.ai_socktype = SOCK_STREAM;
-	hints.ai_flags = AI_ADDRCONFIG;
-
-	ret = getaddrinfo(name,
-			NULL,
-			&hints,
-			&ailist);
-
-        if (ret) {
-		DEBUG(3,("smb_traffic_analyzer_connect_inet_socket: "
-			"getaddrinfo failed for name %s [%s]\n",
-                        name,
-                        gai_strerror(ret) ));
-		return -1;
-        }
-
-	DEBUG(3,("smb_traffic_analyzer: Internet socket mode. Hostname: %s,"
-		"Port: %i\n", name, port));
-
-	for (res = ailist; res; res = res->ai_next) {
-		struct sockaddr_storage ss;
-
-		if (!res->ai_addr || res->ai_addrlen == 0) {
-			continue;
-		}
-
-		ZERO_STRUCT(ss);
-		memcpy(&ss, res->ai_addr, res->ai_addrlen);
-
-		sockfd = open_socket_out(SOCK_STREAM, &ss, port, 10000);
-		if (sockfd != -1) {
-			break;
-		}
-	}
-
-	if (ailist) {
-		freeaddrinfo(ailist);
-	}
-
-        if (sockfd == -1) {
-		DEBUG(1, ("smb_traffic_analyzer: unable to create "
-			"socket, error is %s",
-			strerror(errno)));
-		return -1;
-	}
-
-	return sockfd;
-}
-
-/* Connect to a unix domain socket */
-
-static int smb_traffic_analyzer_connect_unix_socket(vfs_handle_struct *handle,
-						const char *name)
-{
-	/* Create the socket to stad */
-	int len, sock;
-	struct sockaddr_un remote;
-
-	DEBUG(7, ("smb_traffic_analyzer_connect_unix_socket: "
-			"Unix domain socket mode. Using %s\n",
-			name ));
-
-	if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
-		DEBUG(1, ("smb_traffic_analyzer_connect_unix_socket: "
-			"Couldn't create socket, "
-			"make sure stad is running!\n"));
-	}
-	remote.sun_family = AF_UNIX;
-	strlcpy(remote.sun_path, name,
-		    sizeof(remote.sun_path));
-	len=strlen(remote.sun_path) + sizeof(remote.sun_family);
-	if (connect(sock, (struct sockaddr *)&remote, len) == -1 ) {
-		DEBUG(1, ("smb_traffic_analyzer_connect_unix_socket: "
-			"Could not connect to "
-			"socket, make sure\nstad is running!\n"));
-		close(sock);
-		return -1;
-	}
-	return sock;
-}
-
-/* Private data allowing shared connection sockets. */
-
-struct refcounted_sock {
-	struct refcounted_sock *next, *prev;
-	char *name;
-	uint16_t port;
-	int sock;
-	unsigned int ref_count;
-};
-
-/* Send data over a socket */
-
-static void smb_traffic_analyzer_send_data(vfs_handle_struct *handle,
-					ssize_t result,
-					const char *file_name,
-					bool Write)
-{
-	struct refcounted_sock *rf_sock = NULL;
-	struct timeval tv;
-	struct tm *tm = NULL;
-	int seconds;
-	char *str = NULL;
-	size_t len;
-
-	SMB_VFS_HANDLE_GET_DATA(handle, rf_sock, struct refcounted_sock, return);
-
-	if (rf_sock == NULL || rf_sock->sock == -1) {
-		DEBUG(1, ("smb_traffic_analyzer_send_data: socket is "
-			"closed\n"));
-		return;
-	}
-
-	GetTimeOfDay(&tv);
-	tm=localtime(&tv.tv_sec);
-	if (!tm) {
-		return;
-	}
-	seconds=(float) (tv.tv_usec / 1000);
-
-	str = talloc_asprintf(talloc_tos(),
-			"V1,%u,\"%s\",\"%s\",\"%c\",\"%s\",\"%s\","
-			"\"%04d-%02d-%02d %02d:%02d:%02d.%03d\"\n",
-			(unsigned int)result,
-			handle->conn->server_info->sanitized_username,
-			pdb_get_domain(handle->conn->server_info->sam_account),
-			Write ? 'W' : 'R',
-			handle->conn->connectpath,
-			file_name,
-			tm->tm_year+1900,
-			tm->tm_mon+1,
-			tm->tm_mday,
-			tm->tm_hour,
-			tm->tm_min,
-			tm->tm_sec,
-			(int)seconds);
-
-	if (!str) {
-		return;
-	}
-
-	len = strlen(str);
-
-	DEBUG(10, ("smb_traffic_analyzer_send_data_socket: sending %s\n",
-			str));
-	if (write_data(rf_sock->sock, str, len) != len) {
-		DEBUG(1, ("smb_traffic_analyzer_send_data_socket: "
-			"error sending data to socket!\n"));
-		return ;
-	}
-}
-
-static struct refcounted_sock *sock_list;
-
-static void smb_traffic_analyzer_free_data(void **pptr)
-{
-	struct refcounted_sock *rf_sock = *(struct refcounted_sock **)pptr;
-	if (rf_sock == NULL) {
-		return;
-	}
-	rf_sock->ref_count--;
-	if (rf_sock->ref_count != 0) {
-		return;
-	}
-	if (rf_sock->sock != -1) {
-		close(rf_sock->sock);
-	}
-	DLIST_REMOVE(sock_list, rf_sock);
-	TALLOC_FREE(rf_sock);
-}
-
-static int smb_traffic_analyzer_connect(struct vfs_handle_struct *handle,
-                         const char *service,
-                         const char *user)
-{
-	connection_struct *conn = handle->conn;
-	enum sock_type st = smb_traffic_analyzer_connMode(handle);
-	struct refcounted_sock *rf_sock = NULL;
-	const char *name = (st == UNIX_DOMAIN_SOCKET) ? LOCAL_PATHNAME :
-				lp_parm_const_string(SNUM(conn),
-					"smb_traffic_analyzer",
-				"host", "localhost");
-	uint16_t port = (st == UNIX_DOMAIN_SOCKET) ? 0 :
-				atoi( lp_parm_const_string(SNUM(conn),
-				"smb_traffic_analyzer", "port", "9430"));
-
-	/* Are we already connected ? */
-	for (rf_sock = sock_list; rf_sock; rf_sock = rf_sock->next) {
-		if (port == rf_sock->port &&
-				(strcmp(name, rf_sock->name) == 0)) {
-			break;
-		}
-	}
-
-	/* If we're connected already, just increase the
- 	 * reference count. */
-	if (rf_sock) {
-		rf_sock->ref_count++;
-	} else {
-		/* New connection. */
-		rf_sock = TALLOC_ZERO_P(NULL, struct refcounted_sock);
-		if (rf_sock == NULL) {
-			errno = ENOMEM;
-			return -1;
-		}
-		rf_sock->name = talloc_strdup(rf_sock, name);
-		if (rf_sock->name == NULL) {
-			TALLOC_FREE(rf_sock);
-			errno = ENOMEM;
-			return -1;
-		}
-		rf_sock->port = port;
-		rf_sock->ref_count = 1;
-
-		if (st == UNIX_DOMAIN_SOCKET) {
-			rf_sock->sock = smb_traffic_analyzer_connect_unix_socket(handle,
-							name);
-		} else {
-
-			rf_sock->sock = smb_traffic_analyzer_connect_inet_socket(handle,
-							name,
-							port);
-		}
-		if (rf_sock->sock == -1) {
-			TALLOC_FREE(rf_sock);
-			return -1;
-		}
-		DLIST_ADD(sock_list, rf_sock);
-	}
-
-	/* Store the private data. */
-	SMB_VFS_HANDLE_SET_DATA(handle, rf_sock, smb_traffic_analyzer_free_data,
-				struct refcounted_sock, return -1);
-	return SMB_VFS_NEXT_CONNECT(handle, service, user);
-}
-
-/* VFS Functions: write, read, pread, pwrite for now */
-
-static ssize_t smb_traffic_analyzer_read(vfs_handle_struct *handle, \
-				files_struct *fsp, void *data, size_t n)
-{
-	ssize_t result;
-
-	result = SMB_VFS_NEXT_READ(handle, fsp, data, n);
-	DEBUG(10, ("smb_traffic_analyzer_read: READ: %s\n", fsp->fsp_name ));
-
-	smb_traffic_analyzer_send_data(handle,
-			result,
-			fsp->fsp_name,
-			false);
-	return result;
-}
-
-
-static ssize_t smb_traffic_analyzer_pread(vfs_handle_struct *handle, \
-		files_struct *fsp, void *data, size_t n, SMB_OFF_T offset)
-{
-	ssize_t result;
-
-	result = SMB_VFS_NEXT_PREAD(handle, fsp, data, n, offset);
-
-	DEBUG(10, ("smb_traffic_analyzer_pread: PREAD: %s\n", fsp->fsp_name ));
-
-	smb_traffic_analyzer_send_data(handle,
-			result,
-			fsp->fsp_name,
-			false);
-
-	return result;
-}
-
-static ssize_t smb_traffic_analyzer_write(vfs_handle_struct *handle, \
-			files_struct *fsp, const void *data, size_t n)
-{
-	ssize_t result;
-
-	result = SMB_VFS_NEXT_WRITE(handle, fsp, data, n);
-
-	DEBUG(10, ("smb_traffic_analyzer_write: WRITE: %s\n", fsp->fsp_name ));
-
-	smb_traffic_analyzer_send_data(handle,
-			result,
-			fsp->fsp_name,
-			true);
-	return result;
-}
-
-static ssize_t smb_traffic_analyzer_pwrite(vfs_handle_struct *handle, \
-	     files_struct *fsp, const void *data, size_t n, SMB_OFF_T offset)
-{
-	ssize_t result;
-
-	result = SMB_VFS_NEXT_PWRITE(handle, fsp, data, n, offset);
-
-	DEBUG(10, ("smb_traffic_analyzer_pwrite: PWRITE: %s\n", fsp->fsp_name ));
-
-	smb_traffic_analyzer_send_data(handle,
-			result,
-			fsp->fsp_name,
-			true);
-	return result;
-}
-
-/* VFS operations we use */
-
-static vfs_op_tuple smb_traffic_analyzer_tuples[] = {
-
-        {SMB_VFS_OP(smb_traffic_analyzer_connect), SMB_VFS_OP_CONNECT,
-         SMB_VFS_LAYER_LOGGER},
-	{SMB_VFS_OP(smb_traffic_analyzer_read),	SMB_VFS_OP_READ,
-	 SMB_VFS_LAYER_LOGGER},
-	{SMB_VFS_OP(smb_traffic_analyzer_pread), SMB_VFS_OP_PREAD,
-	 SMB_VFS_LAYER_LOGGER},
-	{SMB_VFS_OP(smb_traffic_analyzer_write), SMB_VFS_OP_WRITE,
-	 SMB_VFS_LAYER_LOGGER},
-	{SMB_VFS_OP(smb_traffic_analyzer_pwrite), SMB_VFS_OP_PWRITE,
-	 SMB_VFS_LAYER_LOGGER},
-       	{SMB_VFS_OP(NULL),SMB_VFS_OP_NOOP,SMB_VFS_LAYER_NOOP}
-};
-
-/* Module initialization */
-
-NTSTATUS vfs_smb_traffic_analyzer_init(void)
-{
-	NTSTATUS ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, \
-		"smb_traffic_analyzer",	smb_traffic_analyzer_tuples);
-
-	if (!NT_STATUS_IS_OK(ret)) {
-		return ret;
-	}
-
-	vfs_smb_traffic_analyzer_debug_level =
-		debug_add_class("smb_traffic_analyzer");
-
-	if (vfs_smb_traffic_analyzer_debug_level == -1) {
-		vfs_smb_traffic_analyzer_debug_level = DBGC_VFS;
-		DEBUG(1, ("smb_traffic_analyzer_init: Couldn't register custom"
-			 "debugging class!\n"));
-	} else {
-		DEBUG(3, ("smb_traffic_analyzer_init: Debug class number of"
-			"'smb_traffic_analyzer': %d\n", \
-			vfs_smb_traffic_analyzer_debug_level));
-	}
-
-	return ret;
-}

Deleted: branches/samba/upstream/source/modules/vfs_solarisacl.h
===================================================================
--- branches/samba/upstream/source/modules/vfs_solarisacl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_solarisacl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,45 +0,0 @@
-/*
-   Unix SMB/Netbios implementation.
-   VFS module to get and set Solaris ACLs - prototype header
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __VFS_SOLARISACL_H__
-#define __VFS_SOLARISACL_H__
-
-SMB_ACL_T solarisacl_sys_acl_get_file(vfs_handle_struct *handle,
-				      const char *path_p,
-				      SMB_ACL_TYPE_T type);
-
-SMB_ACL_T solarisacl_sys_acl_get_fd(vfs_handle_struct *handle,
-				    files_struct *fsp);
-
-int solarisacl_sys_acl_set_file(vfs_handle_struct *handle,
-				const char *name,
-				SMB_ACL_TYPE_T type,
-				SMB_ACL_T theacl);
-
-int solarisacl_sys_acl_set_fd(vfs_handle_struct *handle,
-			      files_struct *fsp,
-			      SMB_ACL_T theacl);
-
-int solarisacl_sys_acl_delete_def_file(vfs_handle_struct *handle,
-				       const char *path);
-
-NTSTATUS vfs_solarisacl_init(void);
-
-#endif
-

Deleted: branches/samba/upstream/source/modules/vfs_tru64acl.h
===================================================================
--- branches/samba/upstream/source/modules/vfs_tru64acl.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_tru64acl.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,45 +0,0 @@
-/*
-   Unix SMB/Netbios implementation.
-   VFS module to get and set Tru64 acls - prototype header
-   Copyright (C) Michael Adam 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __VFS_TRU64ACL_H__
-#define __VFS_TRU64ACL_H__
-
-SMB_ACL_T tru64acl_sys_acl_get_file(vfs_handle_struct *handle,
-				    const char *path_p,
-				    SMB_ACL_TYPE_T type);
-
-SMB_ACL_T tru64acl_sys_acl_get_fd(vfs_handle_struct *handle,
-				  files_struct *fsp);
-
-int tru64acl_sys_acl_set_file(vfs_handle_struct *handle,
-			      const char *name,
-			      SMB_ACL_TYPE_T type,
-			      SMB_ACL_T theacl);
-
-int tru64acl_sys_acl_set_fd(vfs_handle_struct *handle,
-			    files_struct *fsp,
-			    SMB_ACL_T theacl);
-
-int tru64acl_sys_acl_delete_def_file(vfs_handle_struct *handle,
-				     const char *path);
-
-NTSTATUS vfs_tru64acl_init(void);
-
-#endif
-

Modified: branches/samba/upstream/source/modules/vfs_zfsacl.c
===================================================================
--- branches/samba/upstream/source/modules/vfs_zfsacl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/modules/vfs_zfsacl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -212,6 +212,14 @@
 	return zfs_set_nt_acl(handle, fsp, security_info_sent, psd);
 }
 
+static NTSTATUS zfsacl_set_nt_acl(vfs_handle_struct *handle,
+		       files_struct *fsp,
+		       const char *name, uint32 security_info_sent,
+		       SEC_DESC *psd)
+{
+	return zfs_set_nt_acl(handle, fsp, security_info_sent, psd);
+}
+
 /* VFS operations structure */
 
 static vfs_op_tuple zfsacl_ops[] = {
@@ -221,6 +229,8 @@
 	 SMB_VFS_LAYER_OPAQUE},
 	{SMB_VFS_OP(zfsacl_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL,
 	 SMB_VFS_LAYER_OPAQUE},
+	{SMB_VFS_OP(zfsacl_set_nt_acl), SMB_VFS_OP_SET_NT_ACL,
+	 SMB_VFS_LAYER_OPAQUE},
 	{SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
 };
 

Modified: branches/samba/upstream/source/nmbd/nmbd.c
===================================================================
--- branches/samba/upstream/source/nmbd/nmbd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nmbd/nmbd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -52,13 +52,10 @@
 {
 	static struct messaging_context *ctx;
 
-	if (ctx == NULL) {
-		ctx = messaging_init(NULL, server_id_self(),
-				     nmbd_event_context());
+	if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
+					   nmbd_event_context()))) {
+		smb_panic("Could not init nmbd messaging context");
 	}
-	if (ctx == NULL) {
-		DEBUG(0, ("Could not init nmbd messaging context.\n"));
-	}
 	return ctx;
 }
 
@@ -765,6 +762,8 @@
 	};
 	TALLOC_CTX *frame = talloc_stackframe(); /* Setup tos. */
 
+	db_tdb2_setup_messaging(NULL, false);
+
 	load_case_tables();
 
 	global_nmb_port = NMB_PORT;
@@ -859,6 +858,8 @@
 		return 1;
 	}
 
+	db_tdb2_setup_messaging(nmbd_messaging_context(), true);
+
 	if ( !reload_nmbd_services(False) )
 		return(-1);
 

Modified: branches/samba/upstream/source/nmbd/nmbd_packets.c
===================================================================
--- branches/samba/upstream/source/nmbd/nmbd_packets.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nmbd/nmbd_packets.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,6 +28,8 @@
 
 extern int num_response_packets;
 
+static void queue_packet(struct packet_struct *packet);
+
 bool rescan_listen_set = False;
 
 
@@ -1002,7 +1004,7 @@
   Queue a packet into a packet queue
 ******************************************************************/
 
-void queue_packet(struct packet_struct *packet)
+static void queue_packet(struct packet_struct *packet)
 {
 	struct packet_struct *p;
 

Modified: branches/samba/upstream/source/nmbd/nmbd_processlogon.c
===================================================================
--- branches/samba/upstream/source/nmbd/nmbd_processlogon.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nmbd/nmbd_processlogon.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -31,40 +31,6 @@
         uint32 date_lo, date_hi;
 };
 
-/**
- * check whether the client belongs to the hosts
- * for which initial logon should be delayed...
- */
-static bool delay_logon(const char *peer_name, const char *peer_addr)
-{
-	const char **delay_list = lp_init_logon_delayed_hosts();
-	const char *peer[2];
-
-	if (delay_list == NULL) {
-		return False;
-	}
-
-	peer[0] = peer_name;
-	peer[1] = peer_addr;
-
-	return list_match(delay_list, (const char *)peer, client_match);
-}
-
-static void delayed_init_logon_handler(struct event_context *event_ctx,
-				       struct timed_event *te,
-				       const struct timeval *now,
-				       void *private_data)
-{
-	struct packet_struct *p = (struct packet_struct *)private_data;
-
-	DEBUG(10, ("delayed_init_logon_handler (%lx): re-queuing packet.\n",
-		   (unsigned long)te));
-
-	queue_packet(p);
-
-	TALLOC_FREE(te);
-}
-
 /****************************************************************************
 Process a domain logon packet
 **************************************************************************/
@@ -314,7 +280,6 @@
 			{
 				fstring getdc_str;
 				fstring source_name;
-				char *source_addr;
 				char *q = buf + 2;
 				fstring asccomp;
 
@@ -626,58 +591,13 @@
 
 				pull_ascii_fstring(getdc_str, getdc);
 				pull_ascii_nstring(source_name, sizeof(source_name), dgram->source_name.name);
-				source_addr = SMB_STRDUP(inet_ntoa(dgram->header.source_ip));
-				if (source_addr == NULL) {
-					DEBUG(3, ("out of memory copying client"
-						  " address string\n"));
-					return;
-				}
 
-				/*
-				 * handle delay.
-				 * packets requeued after delay are marked as
-				 * locked.
-				 */
-				if ((p->locked == False) &&
-				    (strlen(ascuser) == 0) &&
-				    delay_logon(source_name, source_addr))
-				{
-					struct timeval when;
-
-					DEBUG(3, ("process_logon_packet: "
-						  "delaying initial logon "
-						  "reply for client %s(%s) for "
-						  "%u milliseconds\n",
-						  source_name, source_addr,
-						  lp_init_logon_delay()));
-
-					when = timeval_current_ofs(0,
-						lp_init_logon_delay() * 1000);
-					p->locked = true;
-					event_add_timed(nmbd_event_context(),
-							NULL,
-							when,
-							"delayed_init_logon",
-							delayed_init_logon_handler,
-							p);
-				} else {
-					DEBUG(3, ("process_logon_packet: "
-						  "processing delayed initial "
-						  "logon reply for client "
-						  "%s(%s)\n",
-						  source_name, source_addr));
-
-					p->locked = false;
-					send_mailslot(true, getdc,
-						outbuf,PTR_DIFF(q,outbuf),
-						global_myname(), 0x0,
-						source_name,
-						dgram->source_name.name_type,
-						p->ip, ip, p->port);
-				}
-
-				SAFE_FREE(source_addr);
-
+				send_mailslot(True, getdc,
+					outbuf,PTR_DIFF(q,outbuf),
+					global_myname(), 0x0,
+					source_name,
+					dgram->source_name.name_type,
+					p->ip, ip, p->port);
 				break;
 			}
 

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbc_idmap.c
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbc_idmap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbc_idmap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -394,7 +394,7 @@
 
 /** @brief Set the highwater mark for allocated gids.
  *
- * @param gid_hwm      The new gid highwater mark value
+ * @param uid_hwm      The new gid highwater mark value
  *
  * @return #wbcErr
  **/

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbc_pam.c
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbc_pam.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbc_pam.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -236,30 +236,6 @@
 	return wbc_status;
 }
 
-static wbcErr wbc_create_password_policy_info(TALLOC_CTX *mem_ctx,
-					      const struct winbindd_response *resp,
-					      struct wbcUserPasswordPolicyInfo **_i)
-{
-	wbcErr wbc_status = WBC_ERR_SUCCESS;
-	struct wbcUserPasswordPolicyInfo *i;
-
-	i = talloc(mem_ctx, struct wbcUserPasswordPolicyInfo);
-	BAIL_ON_PTR_ERROR(i, wbc_status);
-
-	i->min_passwordage	= resp->data.auth.policy.min_passwordage;
-	i->min_length_password	= resp->data.auth.policy.min_length_password;
-	i->password_history	= resp->data.auth.policy.password_history;
-	i->password_properties	= resp->data.auth.policy.password_properties;
-	i->expire		= resp->data.auth.policy.expire;
-
-	*_i = i;
-	i = NULL;
-
-done:
-	talloc_free(i);
-	return wbc_status;
-}
-
 /** @brief Authenticate with more detailed information
  *
  * @param params       Input parameters, WBC_AUTH_USER_LEVEL_HASH
@@ -333,7 +309,7 @@
 		}
 		strncpy(request.data.auth.pass,
 			params->password.plaintext,
-			sizeof(request.data.auth.pass)-1);
+			sizeof(request.data.auth.user)-1);
 		break;
 
 	case WBC_AUTH_USER_LEVEL_HASH:
@@ -496,301 +472,3 @@
  done:
 	return wbc_status;
 }
-
-/** @brief Trigger a logoff notification to Winbind for a specific user
- *
- * @param username    Name of user to remove from Winbind's list of
- *                    logged on users.
- * @param uid         Uid assigned to the username
- * @param ccfilename  Absolute path to the Krb5 credentials cache to
- *                    be removed
- *
- * @return #wbcErr
- *
- **/
-
-wbcErr wbcLogoffUser(const char *username,
-		     uid_t uid,
-		     const char *ccfilename)
-{
-	struct winbindd_request request;
-	struct winbindd_response response;
-	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
-
-	/* validate input */
-
-	if (!username) {
-		wbc_status = WBC_ERR_INVALID_PARAM;
-		BAIL_ON_WBC_ERROR(wbc_status);
-	}
-
-	ZERO_STRUCT(request);
-	ZERO_STRUCT(response);
-
-	strncpy(request.data.logoff.user, username,
-		sizeof(request.data.logoff.user)-1);
-	request.data.logoff.uid = uid;
-
-	if (ccfilename) {
-		strncpy(request.data.logoff.krb5ccname, ccfilename,
-			sizeof(request.data.logoff.krb5ccname)-1);
-	}
-
-	/* Send request */
-
-	wbc_status = wbcRequestResponse(WINBINDD_PAM_LOGOFF,
-					&request,
-					&response);
-
-	/* Take the response above and return it to the caller */
-
- done:
-	return wbc_status;
-}
-
-/** @brief Change a password for a user with more detailed information upon
- * 	   failure
- * @param params                Input parameters
- * @param error                 User output details on WBC_ERR_PWD_CHANGE_FAILED
- * @param reject_reason         New password reject reason on WBC_ERR_PWD_CHANGE_FAILED
- * @param policy                Password policy output details on WBC_ERR_PWD_CHANGE_FAILED
- *
- * @return #wbcErr
- **/
-
-wbcErr wbcChangeUserPasswordEx(const struct wbcChangePasswordParams *params,
-			       struct wbcAuthErrorInfo **error,
-			       enum wbcPasswordChangeRejectReason *reject_reason,
-			       struct wbcUserPasswordPolicyInfo **policy)
-{
-	struct winbindd_request request;
-	struct winbindd_response response;
-	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
-	int cmd = 0;
-
-	/* validate input */
-
-	if (!params->account_name) {
-		wbc_status = WBC_ERR_INVALID_PARAM;
-		BAIL_ON_WBC_ERROR(wbc_status);
-	}
-
-	if (error) {
-		*error = NULL;
-	}
-
-	if (policy) {
-		*policy = NULL;
-	}
-
-	if (reject_reason) {
-		*reject_reason = -1;
-	}
-
-	ZERO_STRUCT(request);
-	ZERO_STRUCT(response);
-
-	switch (params->level) {
-	case WBC_CHANGE_PASSWORD_LEVEL_PLAIN:
-		cmd = WINBINDD_PAM_CHAUTHTOK;
-
-		if (!params->account_name) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		strncpy(request.data.chauthtok.user, params->account_name,
-			sizeof(request.data.chauthtok.user) - 1);
-
-		if (params->old_password.plaintext) {
-			strncpy(request.data.chauthtok.oldpass,
-				params->old_password.plaintext,
-				sizeof(request.data.chauthtok.oldpass) - 1);
-		}
-
-		if (params->new_password.plaintext) {
-			strncpy(request.data.chauthtok.newpass,
-				params->new_password.plaintext,
-				sizeof(request.data.chauthtok.newpass) - 1);
-		}
-		break;
-
-	case WBC_CHANGE_PASSWORD_LEVEL_RESPONSE:
-		cmd = WINBINDD_PAM_CHNG_PSWD_AUTH_CRAP;
-
-		if (!params->account_name || !params->domain_name) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->old_password.response.old_lm_hash_enc_length &&
-		    !params->old_password.response.old_lm_hash_enc_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->old_password.response.old_lm_hash_enc_length == 0 &&
-		    params->old_password.response.old_lm_hash_enc_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->old_password.response.old_nt_hash_enc_length &&
-		    !params->old_password.response.old_nt_hash_enc_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->old_password.response.old_nt_hash_enc_length == 0 &&
-		    params->old_password.response.old_nt_hash_enc_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->new_password.response.lm_length &&
-		    !params->new_password.response.lm_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->new_password.response.lm_length == 0 &&
-		    params->new_password.response.lm_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->new_password.response.nt_length &&
-		    !params->new_password.response.nt_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		if (params->new_password.response.nt_length == 0 &&
-		    params->new_password.response.nt_data) {
-			wbc_status = WBC_ERR_INVALID_PARAM;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-		strncpy(request.data.chng_pswd_auth_crap.user,
-			params->account_name,
-			sizeof(request.data.chng_pswd_auth_crap.user) - 1);
-
-		strncpy(request.data.chng_pswd_auth_crap.domain,
-			params->domain_name,
-			sizeof(request.data.chng_pswd_auth_crap.domain) - 1);
-
-		if (params->new_password.response.nt_data) {
-			memcpy(request.data.chng_pswd_auth_crap.new_nt_pswd,
-			       params->new_password.response.nt_data,
-			       request.data.chng_pswd_auth_crap.new_nt_pswd_len);
-			request.data.chng_pswd_auth_crap.new_nt_pswd_len =
-				params->new_password.response.nt_length;
-		}
-
-		if (params->new_password.response.lm_data) {
-			memcpy(request.data.chng_pswd_auth_crap.new_lm_pswd,
-			       params->new_password.response.lm_data,
-			       request.data.chng_pswd_auth_crap.new_lm_pswd_len);
-			request.data.chng_pswd_auth_crap.new_lm_pswd_len =
-				params->new_password.response.lm_length;
-		}
-
-		if (params->old_password.response.old_nt_hash_enc_data) {
-			memcpy(request.data.chng_pswd_auth_crap.old_nt_hash_enc,
-			       params->old_password.response.old_nt_hash_enc_data,
-			       request.data.chng_pswd_auth_crap.old_nt_hash_enc_len);
-			request.data.chng_pswd_auth_crap.old_nt_hash_enc_len =
-				params->old_password.response.old_nt_hash_enc_length;
-		}
-
-		if (params->old_password.response.old_lm_hash_enc_data) {
-			memcpy(request.data.chng_pswd_auth_crap.old_lm_hash_enc,
-			       params->old_password.response.old_lm_hash_enc_data,
-			       request.data.chng_pswd_auth_crap.old_lm_hash_enc_len);
-			request.data.chng_pswd_auth_crap.old_lm_hash_enc_len =
-				params->old_password.response.old_lm_hash_enc_length;
-		}
-
-		break;
-	default:
-		wbc_status = WBC_ERR_INVALID_PARAM;
-		BAIL_ON_WBC_ERROR(wbc_status);
-		break;
-	}
-
-	if (cmd == 0) {
-		wbc_status = WBC_ERR_INVALID_PARAM;
-		BAIL_ON_WBC_ERROR(wbc_status);
-	}
-
-	/* Send request */
-
-	wbc_status = wbcRequestResponse(cmd,
-					&request,
-					&response);
-	if (WBC_ERROR_IS_OK(wbc_status)) {
-		goto done;
-	}
-
-	/* Take the response above and return it to the caller */
-
-	if (response.data.auth.nt_status != 0) {
-		if (error) {
-			wbc_status = wbc_create_error_info(NULL,
-							   &response,
-							   error);
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
-
-	}
-
-	if (policy) {
-		wbc_status = wbc_create_password_policy_info(NULL,
-							     &response,
-							     policy);
-		BAIL_ON_WBC_ERROR(wbc_status);
-	}
-
-	if (reject_reason) {
-		*reject_reason = response.data.auth.reject_reason;
-	}
-
-	wbc_status = WBC_ERR_PWD_CHANGE_FAILED;
-	BAIL_ON_WBC_ERROR(wbc_status);
-
- done:
-	return wbc_status;
-}
-
-/** @brief Change a password for a user
- *
- * @param username		Name of user to authenticate
- * @param old_password		Old clear text password of user
- * @param new_password		New clear text password of user
- *
- * @return #wbcErr
- **/
-
-wbcErr wbcChangeUserPassword(const char *username,
-			     const char *old_password,
-			     const char *new_password)
-{
-	wbcErr wbc_status = WBC_ERR_SUCCESS;
-	struct wbcChangePasswordParams params;
-
-	ZERO_STRUCT(params);
-
-	params.account_name		= username;
-	params.level			= WBC_CHANGE_PASSWORD_LEVEL_PLAIN;
-	params.old_password.plaintext	= old_password;
-	params.new_password.plaintext	= new_password;
-
-	wbc_status = wbcChangeUserPasswordEx(&params,
-					     NULL,
-					     NULL,
-					     NULL);
-	BAIL_ON_WBC_ERROR(wbc_status);
-
-done:
-	return wbc_status;
-}

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbc_pwd.c
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbc_pwd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbc_pwd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -380,7 +380,7 @@
  *
  * @param *account       The given user name
  * @param *num_groups    Number of elements returned in the groups array
- * @param **_groups      Pointer to resulting gid_t array.
+ * @param **groups       Pointer to resulting gid_t array.
  *
  * @return #wbcErr
  **/

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbc_sid.c
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbc_sid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbc_sid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -102,7 +102,8 @@
 
 	if (!str
 	    || (str[0]!='S' && str[0]!='s')
-	    || (str[1]!='-'))
+	    || (str[1]!='-')
+	    || (strlen(str)<2))
 	{
 		wbc_status = WBC_ERR_INVALID_PARAM;
 		BAIL_ON_WBC_ERROR(wbc_status);
@@ -142,13 +143,9 @@
 		x=(uint32_t)strtoul(p, &q, 10);
 		if (p == q)
 			break;
-		if (q == NULL) {
-			wbc_status = WBC_ERR_INVALID_SID;
-			BAIL_ON_WBC_ERROR(wbc_status);
-		}
 		sid->sub_auths[sid->num_auths++] = x;
 
-		if ((*q!='-') || (*q=='\0'))
+		if (q && ((*q!='-') || (*q=='\0')))
 			break;
 		p = q + 1;
 	}
@@ -223,9 +220,9 @@
 /** @brief Convert a SID to a domain and name
  *
  * @param *sid        Pointer to the domain SID to be resolved
- * @param pdomain     Resolved Domain name (possibly "")
- * @param pname       Resolved User or group name
- * @param *pname_type Pointet to the resolved SID type
+ * @param domain      Resolved Domain name (possibly "")
+ * @param name        Resolved User or group name
+ * @param *name_type  Pointet to the resolved SID type
  *
  * @return #wbcErr
  *
@@ -242,7 +239,7 @@
 	char *sid_string = NULL;
 	char *domain = NULL;
 	char *name = NULL;
-	enum wbcSidType name_type = WBC_SID_NAME_USE_NONE;
+	enum wbcSidType name_type;
 
 	if (!sid) {
 		wbc_status = WBC_ERR_INVALID_PARAM;
@@ -294,18 +291,9 @@
 		}
 	}
 	else {
-#if 0
-		/*
-		 * Found by Coverity: In this particular routine we can't end
-		 * up here with a non-NULL name. Further up there are just two
-		 * exit paths that lead here, neither of which leave an
-		 * allocated name. If you add more paths up there, re-activate
-		 * this.
-		 */
 		if (name != NULL) {
 			talloc_free(name);
 		}
-#endif
 		if (domain != NULL) {
 			talloc_free(domain);
 		}

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbc_util.c
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbc_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbc_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -272,7 +272,7 @@
 /**
  */
 
-static wbcErr process_domain_info_string(TALLOC_CTX *ctx,
+static wbcErr process_domain_info_string(TALLOC_CTX *ctx, 
 					 struct wbcDomainInfo *info,
 					 char *info_string)
 {
@@ -437,7 +437,7 @@
 	p = (char *)response.extra_data.data;
 
 	if (strlen(p) == 0) {
-		/* We should always at least get back our
+		/* We should always at least get back our 
 		   own SAM domain */
 		
 		wbc_status = WBC_ERR_DOMAIN_NOT_FOUND;
@@ -492,61 +492,3 @@
 
 	return wbc_status;
 }
-
-/** @brief Enumerate the domain trusts known by Winbind
- *
- * @param domain        Name of the domain to query for a DC
- * @param flags         Bit flags used to control the domain location query
- * @param *dc_info      Pointer to the returned domain controller information
- *
- * @return #wbcErr
- *
- **/
-
-
-
-wbcErr wbcLookupDomainController(const char *domain,
-				 uint32_t flags,
-				struct wbcDomainControllerInfo **dc_info)
-{
-	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
-	struct winbindd_request request;
-	struct winbindd_response response;
-	struct wbcDomainControllerInfo *dc = NULL;
-
-	/* validate input params */
-
-	if (!domain || !dc_info) {
-		wbc_status = WBC_ERR_INVALID_PARAM;
-		BAIL_ON_WBC_ERROR(wbc_status);
-	}
-
-	ZERO_STRUCT(request);
-	ZERO_STRUCT(response);
-
-	strncpy(request.domain_name, domain, sizeof(request.domain_name)-1);
-
-	request.flags = flags;
-
-	dc = talloc(NULL, struct wbcDomainControllerInfo);
-	BAIL_ON_PTR_ERROR(dc, wbc_status);
-
-	/* Send request */
-
-	wbc_status = wbcRequestResponse(WINBINDD_DSGETDCNAME,
-					&request,
-					&response);
-	BAIL_ON_WBC_ERROR(wbc_status);
-
-	dc->dc_name = talloc_strdup(dc, response.data.dc_name);
-	BAIL_ON_PTR_ERROR(dc->dc_name, wbc_status);
-
-	*dc_info = dc;
-
-done:
-	if (!WBC_ERROR_IS_OK(wbc_status)) {
-		talloc_free(dc);
-	}
-
-	return wbc_status;
-}

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbclient.c
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbclient.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbclient.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -110,14 +110,8 @@
 		return "WBC_ERR_INVALID_RESPONSE";
 	case WBC_ERR_NSS_ERROR:
 		return "WBC_ERR_NSS_ERROR";
-	case WBC_ERR_UNKNOWN_USER:
-		return "WBC_ERR_UNKNOWN_USER";
-	case WBC_ERR_UNKNOWN_GROUP:
-		return "WBC_ERR_UNKNOWN_GROUP";
 	case WBC_ERR_AUTH_ERROR:
 		return "WBC_ERR_AUTH_ERROR";
-	case WBC_ERR_PWD_CHANGE_FAILED:
-		return "WBC_ERR_PWD_CHANGE_FAILED";
 	}
 
 	return "unknown wbcErr value";

Modified: branches/samba/upstream/source/nsswitch/libwbclient/wbclient.h
===================================================================
--- branches/samba/upstream/source/nsswitch/libwbclient/wbclient.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/libwbclient/wbclient.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -42,10 +42,7 @@
 	WBC_ERR_DOMAIN_NOT_FOUND,        /**< Domain is not trusted or cannot be found **/
 	WBC_ERR_INVALID_RESPONSE,        /**< Winbind returned an invalid response **/
 	WBC_ERR_NSS_ERROR,            /**< NSS_STATUS error **/
-	WBC_ERR_AUTH_ERROR,        /**< Authentication failed **/
-	WBC_ERR_UNKNOWN_USER,      /**< User account cannot be found */
-	WBC_ERR_UNKNOWN_GROUP,     /**< Group account cannot be found */
-	WBC_ERR_PWD_CHANGE_FAILED  /**< Password Change has failed */
+	WBC_ERR_AUTH_ERROR        /**< Authentication failed **/
 };
 
 typedef enum _wbcErrType wbcErr;
@@ -205,41 +202,6 @@
 	} password;
 };
 
-/**
- * @brief ChangePassword Parameters
- **/
-
-struct wbcChangePasswordParams {
-	const char *account_name;
-	const char *domain_name;
-
-	uint32_t flags;
-
-	enum wbcChangePasswordLevel {
-		WBC_CHANGE_PASSWORD_LEVEL_PLAIN = 1,
-		WBC_CHANGE_PASSWORD_LEVEL_RESPONSE = 2
-	} level;
-
-	union {
-		const char *plaintext;
-		struct {
-			uint32_t old_nt_hash_enc_length;
-			uint8_t *old_nt_hash_enc_data;
-			uint32_t old_lm_hash_enc_length;
-			uint8_t *old_lm_hash_enc_data;
-		} response;
-	} old_password;
-	union {
-		const char *plaintext;
-		struct {
-			uint32_t nt_length;
-			uint8_t *nt_data;
-			uint32_t lm_length;
-			uint8_t *lm_data;
-		} response;
-	} new_password;
-};
-
 /* wbcAuthUserParams->parameter_control */
 
 #define WBC_MSV1_0_CLEARTEXT_PASSWORD_ALLOWED		0x00000002
@@ -340,48 +302,7 @@
 	char *display_string;
 };
 
-/**
- * @brief User Password Policy Information
- **/
-
-/* wbcUserPasswordPolicyInfo->password_properties */
-
-#define WBC_DOMAIN_PASSWORD_COMPLEX		0x00000001
-#define WBC_DOMAIN_PASSWORD_NO_ANON_CHANGE	0x00000002
-#define WBC_DOMAIN_PASSWORD_NO_CLEAR_CHANGE	0x00000004
-#define WBC_DOMAIN_PASSWORD_LOCKOUT_ADMINS	0x00000008
-#define WBC_DOMAIN_PASSWORD_STORE_CLEARTEXT	0x00000010
-#define WBC_DOMAIN_REFUSE_PASSWORD_CHANGE	0x00000020
-
-struct wbcUserPasswordPolicyInfo {
-	uint32_t min_length_password;
-	uint32_t password_history;
-	uint32_t password_properties;
-	uint64_t expire;
-	uint64_t min_passwordage;
-};
-
-/**
- * @brief Change Password Reject Reason
- **/
-
-enum wbcPasswordChangeRejectReason {
-	WBC_PWD_CHANGE_REJECT_OTHER=0,
-	WBC_PWD_CHANGE_REJECT_TOO_SHORT=1,
-	WBC_PWD_CHANGE_REJECT_IN_HISTORY=2,
-	WBC_PWD_CHANGE_REJECT_COMPLEXITY=5
-};
-
 /*
- * DomainControllerInfo struct
- */
-struct wbcDomainControllerInfo {
-	char *dc_name;
-};
-
-
-
-/*
  * Memory Management
  */
 
@@ -505,32 +426,7 @@
 wbcErr wbcListTrusts(struct wbcDomainInfo **domains, 
 		     size_t *num_domains);
 
-/* Flags for wbcLookupDomainController */
 
-#define WBC_LOOKUP_DC_FORCE_REDISCOVERY        0x00000001
-#define WBC_LOOKUP_DC_DS_REQUIRED              0x00000010
-#define WBC_LOOKUP_DC_DS_PREFERRED             0x00000020
-#define WBC_LOOKUP_DC_GC_SERVER_REQUIRED       0x00000040
-#define WBC_LOOKUP_DC_PDC_REQUIRED             0x00000080
-#define WBC_LOOKUP_DC_BACKGROUND_ONLY          0x00000100
-#define WBC_LOOKUP_DC_IP_REQUIRED              0x00000200
-#define WBC_LOOKUP_DC_KDC_REQUIRED             0x00000400
-#define WBC_LOOKUP_DC_TIMESERV_REQUIRED        0x00000800
-#define WBC_LOOKUP_DC_WRITABLE_REQUIRED        0x00001000
-#define WBC_LOOKUP_DC_GOOD_TIMESERV_PREFERRED  0x00002000
-#define WBC_LOOKUP_DC_AVOID_SELF               0x00004000
-#define WBC_LOOKUP_DC_ONLY_LDAP_NEEDED         0x00008000
-#define WBC_LOOKUP_DC_IS_FLAT_NAME             0x00010000
-#define WBC_LOOKUP_DC_IS_DNS_NAME              0x00020000
-#define WBC_LOOKUP_DC_TRY_NEXTCLOSEST_SITE     0x00040000
-#define WBC_LOOKUP_DC_DS_6_REQUIRED            0x00080000
-#define WBC_LOOKUP_DC_RETURN_DNS_NAME          0x40000000
-#define WBC_LOOKUP_DC_RETURN_FLAT_NAME         0x80000000
-
-wbcErr wbcLookupDomainController(const char *domain,
-				 uint32_t flags,
-				 struct wbcDomainControllerInfo **dc_info);
-
 /*
  * Athenticate functions
  */
@@ -542,19 +438,6 @@
 			     struct wbcAuthUserInfo **info,
 			     struct wbcAuthErrorInfo **error);
 
-wbcErr wbcLogoffUser(const char *username,
-		     uid_t uid,
-		     const char *ccfilename);
-
-wbcErr wbcChangeUserPassword(const char *username,
-			     const char *old_password,
-			     const char *new_password);
-
-wbcErr wbcChangeUserPasswordEx(const struct wbcChangePasswordParams *params,
-			       struct wbcAuthErrorInfo **error,
-			       enum wbcPasswordChangeRejectReason *reject_reason,
-			       struct wbcUserPasswordPolicyInfo **policy);
-
 /*
  * Resolve functions
  */
@@ -567,5 +450,4 @@
 wbcErr wbcCheckTrustCredentials(const char *domain,
 				struct wbcAuthErrorInfo **error);
 
-
 #endif      /* _WBCLIENT_H */

Modified: branches/samba/upstream/source/nsswitch/pam_winbind.c
===================================================================
--- branches/samba/upstream/source/nsswitch/pam_winbind.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/pam_winbind.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -12,86 +12,6 @@
 
 #include "pam_winbind.h"
 
-static const char *_pam_error_code_str(int err)
-{
-	switch (err) {
-		case PAM_SUCCESS:
-			return "PAM_SUCCESS";
-		case PAM_OPEN_ERR:
-			return "PAM_OPEN_ERR";
-		case PAM_SYMBOL_ERR:
-			return "PAM_SYMBOL_ERR";
-		case PAM_SERVICE_ERR:
-			return "PAM_SERVICE_ERR";
-		case PAM_SYSTEM_ERR:
-			return "PAM_SYSTEM_ERR";
-		case PAM_BUF_ERR:
-			return "PAM_BUF_ERR";
-		case PAM_PERM_DENIED:
-			return "PAM_PERM_DENIED";
-		case PAM_AUTH_ERR:
-			return "PAM_AUTH_ERR";
-		case PAM_CRED_INSUFFICIENT:
-			return "PAM_CRED_INSUFFICIENT";
-		case PAM_AUTHINFO_UNAVAIL:
-			return "PAM_AUTHINFO_UNAVAIL";
-		case PAM_USER_UNKNOWN:
-			return "PAM_USER_UNKNOWN";
-		case PAM_MAXTRIES:
-			return "PAM_MAXTRIES";
-		case PAM_NEW_AUTHTOK_REQD:
-			return "PAM_NEW_AUTHTOK_REQD";
-		case PAM_ACCT_EXPIRED:
-			return "PAM_ACCT_EXPIRED";
-		case PAM_SESSION_ERR:
-			return "PAM_SESSION_ERR";
-		case PAM_CRED_UNAVAIL:
-			return "PAM_CRED_UNAVAIL";
-		case PAM_CRED_EXPIRED:
-			return "PAM_CRED_EXPIRED";
-		case PAM_CRED_ERR:
-			return "PAM_CRED_ERR";
-		case PAM_NO_MODULE_DATA:
-			return "PAM_NO_MODULE_DATA";
-		case PAM_CONV_ERR:
-			return "PAM_CONV_ERR";
-		case PAM_AUTHTOK_ERR:
-			return "PAM_AUTHTOK_ERR";
-		case PAM_AUTHTOK_RECOVERY_ERR:
-			return "PAM_AUTHTOK_RECOVERY_ERR";
-		case PAM_AUTHTOK_LOCK_BUSY:
-			return "PAM_AUTHTOK_LOCK_BUSY";
-		case PAM_AUTHTOK_DISABLE_AGING:
-			return "PAM_AUTHTOK_DISABLE_AGING";
-		case PAM_TRY_AGAIN:
-			return "PAM_TRY_AGAIN";
-		case PAM_IGNORE:
-			return "PAM_IGNORE";
-		case PAM_ABORT:
-			return "PAM_ABORT";
-		case PAM_AUTHTOK_EXPIRED:
-			return "PAM_AUTHTOK_EXPIRED";
-#ifdef PAM_MODULE_UNKNOWN
-		case PAM_MODULE_UNKNOWN:
-			return "PAM_MODULE_UNKNOWN";
-#endif
-#ifdef PAM_BAD_ITEM
-		case PAM_BAD_ITEM:
-			return "PAM_BAD_ITEM";
-#endif
-#ifdef PAM_CONV_AGAIN
-		case PAM_CONV_AGAIN:
-			return "PAM_CONV_AGAIN";
-#endif
-#ifdef PAM_INCOMPLETE
-		case PAM_INCOMPLETE:
-			return "PAM_INCOMPLETE";
-#endif
-		default:
-			return NULL;
-	}
-}
-
 #define _PAM_LOG_FUNCTION_ENTER(function, ctx) \
 	do { \
 		_pam_log_debug(ctx, LOG_DEBUG, "[pamh: %p] ENTER: " \
@@ -102,8 +22,7 @@
 #define _PAM_LOG_FUNCTION_LEAVE(function, ctx, retval) \
 	do { \
 		_pam_log_debug(ctx, LOG_DEBUG, "[pamh: %p] LEAVE: " \
-			       function " returning %d (%s)", ctx->pamh, retval, \
-			       _pam_error_code_str(retval)); \
+			       function " returning %d", ctx->pamh, retval); \
 		_pam_log_state(ctx); \
 	} while (0)
 
@@ -779,7 +698,8 @@
 /**
  * send a password expiry message if required
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param next_change expected (calculated) next expiry date.
  * @param already_expired pointer to a boolean to indicate if the password is
  *        already expired.
@@ -840,7 +760,8 @@
 /**
  * Send a warning if the password expires in the near future
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param response The full authentication response structure.
  * @param already_expired boolean, is the pwd already expired?
  *
@@ -929,7 +850,8 @@
 /**
  * Convert a names into a SID string, appending it to a buffer.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param user User in PAM request.
  * @param name Name to convert.
  * @param sid_list_buffer Where to append the string sid.
@@ -984,7 +906,8 @@
 /**
  * Convert a list of names into a list of sids.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param user User in PAM request.
  * @param name_list List of names or string sids, separated by commas.
  * @param sid_list_buffer Where to put the list of string sids.
@@ -1048,7 +971,8 @@
 /**
  * put krb5ccname variable into environment
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param krb5ccname env variable retrieved from winbindd.
  *
  * @return void.
@@ -1086,7 +1010,8 @@
 /**
  * Set string into the PAM stack.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param data_name Key name for pam_set_data.
  * @param value String value.
  *
@@ -1117,7 +1042,8 @@
 /**
  * Set info3 strings into the PAM stack.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param data_name Key name for pam_set_data.
  * @param value String value.
  *
@@ -1156,7 +1082,8 @@
 /**
  * Send PAM_ERROR_MSG for cached or grace logons.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param username User in PAM request.
  * @param info3_user_flgs Info3 flags containing logon type bits.
  *
@@ -1193,7 +1120,8 @@
 /**
  * Send PAM_ERROR_MSG for krb5 errors.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param username User in PAM request.
  * @param info3_user_flgs Info3 flags containing logon type bits.
  *
@@ -1941,7 +1869,8 @@
 /**
  * Retrieve the winbind separator.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  *
  * @return string separator character. NULL on failure.
  */
@@ -1965,7 +1894,8 @@
 /**
  * Convert a upn to a name.
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param upn  USer UPN to be trabslated.
  *
  * @return converted name. NULL pointer on failure. Caller needs to free.
@@ -2440,7 +2370,8 @@
  * evaluate whether we need to re-authenticate with kerberos after a
  * password change
  *
- * @param ctx PAM winbind context.
+ * @param pamh PAM handle
+ * @param ctrl PAM winbind options.
  * @param user The username
  *
  * @return boolean Returns true if required, false if not.

Modified: branches/samba/upstream/source/nsswitch/pam_winbind.h
===================================================================
--- branches/samba/upstream/source/nsswitch/pam_winbind.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/pam_winbind.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -83,20 +83,20 @@
 #include <security/pam_ext.h>
 #endif
 
-#define WINBIND_DEBUG_ARG		0x00000001
-#define WINBIND_USE_AUTHTOK_ARG		0x00000002
-#define WINBIND_UNKNOWN_OK_ARG		0x00000004
-#define WINBIND_TRY_FIRST_PASS_ARG	0x00000008
-#define WINBIND_USE_FIRST_PASS_ARG	0x00000010
-#define WINBIND__OLD_PASSWORD		0x00000020
-#define WINBIND_REQUIRED_MEMBERSHIP	0x00000040
-#define WINBIND_KRB5_AUTH		0x00000080
-#define WINBIND_KRB5_CCACHE_TYPE	0x00000100
-#define WINBIND_CACHED_LOGIN		0x00000200
-#define WINBIND_CONFIG_FILE		0x00000400
-#define WINBIND_SILENT			0x00000800
-#define WINBIND_DEBUG_STATE		0x00001000
-#define WINBIND_WARN_PWD_EXPIRE		0x00002000
+#define WINBIND_DEBUG_ARG (1<<0)
+#define WINBIND_USE_AUTHTOK_ARG (1<<1)
+#define WINBIND_UNKNOWN_OK_ARG (1<<2)
+#define WINBIND_TRY_FIRST_PASS_ARG (1<<3)
+#define WINBIND_USE_FIRST_PASS_ARG (1<<4)
+#define WINBIND__OLD_PASSWORD (1<<5)
+#define WINBIND_REQUIRED_MEMBERSHIP (1<<6)
+#define WINBIND_KRB5_AUTH (1<<7)
+#define WINBIND_KRB5_CCACHE_TYPE (1<<8)
+#define WINBIND_CACHED_LOGIN (1<<9)
+#define WINBIND_CONFIG_FILE (1<<10)
+#define WINBIND_SILENT (1<<11)
+#define WINBIND_DEBUG_STATE (1<<12)
+#define WINBIND_WARN_PWD_EXPIRE (1<<13)
 
 /*
  * here is the string to inform the user that the new passwords they

Modified: branches/samba/upstream/source/nsswitch/wbinfo.c
===================================================================
--- branches/samba/upstream/source/nsswitch/wbinfo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/wbinfo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -879,62 +879,22 @@
 	return true;
 }
 
-static char *wbinfo_prompt_pass(const char *prefix,
-				const char *username)
-{
-	char *prompt;
-	const char *ret = NULL;
-
-	prompt = talloc_asprintf(talloc_tos(), "Enter %s's ", username);
-	if (!prompt) {
-		return NULL;
-	}
-	if (prefix) {
-		prompt = talloc_asprintf_append(prompt, "%s ", prefix);
-		if (!prompt) {
-			return NULL;
-		}
-	}
-	prompt = talloc_asprintf_append(prompt, "password: ");
-	if (!prompt) {
-		return NULL;
-	}
-
-	ret = getpass(prompt);
-	TALLOC_FREE(prompt);
-
-	return SMB_STRDUP(ret);
-}
-
 /* Authenticate a user with a plaintext password */
 
-static bool wbinfo_auth_krb5(char *username, const char *cctype, uint32 flags)
+static bool wbinfo_auth_krb5(char *username, const char *pass, const char *cctype, uint32 flags)
 {
 	struct winbindd_request request;
 	struct winbindd_response response;
 	NSS_STATUS result;
-	char *p;
-	char *password;
 
 	/* Send off request */
 
 	ZERO_STRUCT(request);
 	ZERO_STRUCT(response);
 
-	p = strchr(username, '%');
+	fstrcpy(request.data.auth.user, username);
+	fstrcpy(request.data.auth.pass, pass);
 
-	if (p) {
-		*p = 0;
-		fstrcpy(request.data.auth.user, username);
-		fstrcpy(request.data.auth.pass, p + 1);
-		*p = '%';
-	} else {
-		fstrcpy(request.data.auth.user, username);
-		password = wbinfo_prompt_pass(NULL, username);
-		fstrcpy(request.data.auth.pass, password);
-		SAFE_FREE(password);
-	}
-
 	request.flags = flags;
 
 	fstrcpy(request.data.auth.krb5_cc_type, cctype);
@@ -974,30 +934,12 @@
 
 /* Authenticate a user with a plaintext password */
 
-static bool wbinfo_auth(char *username)
+static bool wbinfo_auth(char *username, const char *pass)
 {
 	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
-	char *s = NULL;
-	char *p = NULL;
-	char *password = NULL;
-	char *name = NULL;
 
-	if ((s = SMB_STRDUP(username)) == NULL) {
-		return false;
-	}
+	wbc_status = wbcAuthenticateUser(username, pass);
 
-	if ((p = strchr(s, '%')) != NULL) {
-		*p = 0;
-		p++;
-		password = SMB_STRDUP(p);
-	} else {
-		password = wbinfo_prompt_pass(NULL, username);
-	}
-
-	name = s;
-
-	wbc_status = wbcAuthenticateUser(name, password);
-
 	d_printf("plaintext password authentication %s\n",
 		 WBC_ERROR_IS_OK(wbc_status) ? "succeeded" : "failed");
 
@@ -1009,15 +951,12 @@
 			 response.data.auth.error_string);
 #endif
 
-	SAFE_FREE(s);
-	SAFE_FREE(password);
-
 	return WBC_ERROR_IS_OK(wbc_status);
 }
 
 /* Authenticate a user with a challenge/response */
 
-static bool wbinfo_auth_crap(char *username)
+static bool wbinfo_auth_crap(char *username, const char *pass)
 {
 	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
 	struct wbcAuthUserParams params;
@@ -1027,18 +966,7 @@
 	DATA_BLOB nt = data_blob_null;
 	fstring name_user;
 	fstring name_domain;
-	char *pass;
-	char *p;
 
-	p = strchr(username, '%');
-
-	if (p) {
-		*p = 0;
-		pass = SMB_STRDUP(p + 1);
-	} else {
-		pass = wbinfo_prompt_pass(NULL, username);
-	}
-
 	parse_wbinfo_domain_user(username, name_domain, name_user);
 
 	params.account_name	= name_user;
@@ -1067,7 +995,6 @@
 				      &lm, &nt, NULL)) {
 			data_blob_free(&names_blob);
 			data_blob_free(&server_chal);
-			SAFE_FREE(pass);
 			return false;
 		}
 		data_blob_free(&names_blob);
@@ -1112,7 +1039,6 @@
 
 	data_blob_free(&nt);
 	data_blob_free(&lm);
-	SAFE_FREE(pass);
 
 	return WBC_ERROR_IS_OK(wbc_status);
 }
@@ -1341,28 +1267,6 @@
 	return WBC_ERROR_IS_OK(wbc_status);
 }
 
-static bool wbinfo_change_user_password(const char *username)
-{
-	wbcErr wbc_status;
-	char *old_password = NULL;
-	char *new_password = NULL;
-
-	old_password = wbinfo_prompt_pass("old", username);
-	new_password = wbinfo_prompt_pass("new", username);
-
-	wbc_status = wbcChangeUserPassword(username, old_password, new_password);
-
-	/* Display response */
-
-	d_printf("Password change for user %s %s\n", username,
-		WBC_ERROR_IS_OK(wbc_status) ? "succeeded" : "failed");
-
-	SAFE_FREE(old_password);
-	SAFE_FREE(new_password);
-
-	return WBC_ERROR_IS_OK(wbc_status);
-}
-
 /* Main program */
 
 enum {
@@ -1382,8 +1286,7 @@
 	OPT_UID_INFO,
 	OPT_GROUP_INFO,
 	OPT_VERBOSE,
-	OPT_ONLINESTATUS,
-	OPT_CHANGE_USER_PASSWORD
+	OPT_ONLINESTATUS
 };
 
 int main(int argc, char **argv, char **envp)
@@ -1450,7 +1353,6 @@
 #endif
 		{ "separator", 0, POPT_ARG_NONE, 0, OPT_SEPARATOR, "Get the active winbind separator", NULL },
 		{ "verbose", 0, POPT_ARG_NONE, 0, OPT_VERBOSE, "Print additional information per command", NULL },
-		{ "change-user-password", 0, POPT_ARG_STRING, &string_arg, OPT_CHANGE_USER_PASSWORD, "Change the password for a user", NULL },
 		POPT_COMMON_CONFIGFILE
 		POPT_COMMON_VERSION
 		POPT_TABLEEND
@@ -1653,14 +1555,22 @@
 			break;
 		case 'a': {
 				bool got_error = false;
+				char *pass;
 
-				if (!wbinfo_auth(string_arg)) {
+				if ((pass = strchr(string_arg, '%')) != NULL) {
+					*pass = 0;
+					pass++;
+				} else {
+					pass = (char *)"";
+				}
+
+				if (!wbinfo_auth(string_arg, pass)) {
 					d_fprintf(stderr, "Could not authenticate user %s with "
 						"plaintext password\n", string_arg);
 					got_error = true;
 				}
 
-				if (!wbinfo_auth_crap(string_arg)) {
+				if (!wbinfo_auth_crap(string_arg, pass)) {
 					d_fprintf(stderr, "Could not authenticate user %s with "
 						"challenge/response\n", string_arg);
 					got_error = true;
@@ -1675,8 +1585,16 @@
 						WBFLAG_PAM_CACHED_LOGIN |
 						WBFLAG_PAM_FALLBACK_AFTER_KRB5 |
 						WBFLAG_PAM_INFO3_TEXT;
+				char *pass;
 
-				if (!wbinfo_auth_krb5(string_arg, "FILE", flags)) {
+				if ((pass = strchr(string_arg, '%')) != NULL) {
+					*pass = 0;
+					pass++;
+				} else {
+					pass = (char *)"";
+				}
+
+				if (!wbinfo_auth_krb5(string_arg, pass, "FILE", flags)) {
 					d_fprintf(stderr, "Could not authenticate user [%s] with "
 						"Kerberos (ccache: %s)\n", string_arg, "FILE");
 					goto done;
@@ -1731,14 +1649,6 @@
 				goto done;
 			}
 			break;
-		case OPT_CHANGE_USER_PASSWORD:
-			if (!wbinfo_change_user_password(string_arg)) {
-				d_fprintf(stderr, "Could not change user password "
-					 "for user %s\n", string_arg);
-				goto done;
-			}
-			break;
-
 		/* generic configuration options */
 		case OPT_DOMAIN_NAME:
 			break;

Modified: branches/samba/upstream/source/nsswitch/winbind_krb5_locator.c
===================================================================
--- branches/samba/upstream/source/nsswitch/winbind_krb5_locator.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/nsswitch/winbind_krb5_locator.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -222,8 +222,8 @@
  * @return krb5_error_code.
  */
 
-static krb5_error_code smb_krb5_locator_init(krb5_context context,
-					     void **private_data)
+krb5_error_code smb_krb5_locator_init(krb5_context context,
+				      void **private_data)
 {
 	return 0;
 }
@@ -236,7 +236,7 @@
  * @return void.
  */
 
-static void smb_krb5_locator_close(void *private_data)
+void smb_krb5_locator_close(void *private_data)
 {
 	return;
 }
@@ -292,13 +292,13 @@
  * @return krb5_error_code.
  */
 
-static krb5_error_code smb_krb5_locator_lookup(void *private_data,
-					       enum locate_service_type svc,
-					       const char *realm,
-					       int socktype,
-					       int family,
-					       int (*cbfunc)(void *, int, struct sockaddr *),
-							void *cbdata)
+krb5_error_code smb_krb5_locator_lookup(void *private_data,
+					enum locate_service_type svc,
+					const char *realm,
+					int socktype,
+					int family,
+					int (*cbfunc)(void *, int, struct sockaddr *),
+					void *cbdata)
 {
 	krb5_error_code ret;
 	struct addrinfo aihints;

Modified: branches/samba/upstream/source/param/loadparm.c
===================================================================
--- branches/samba/upstream/source/param/loadparm.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/param/loadparm.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -52,7 +52,6 @@
  */
 
 #include "includes.h"
-#include "printing.h"
 
 bool bLoaded = False;
 
@@ -98,8 +97,9 @@
 
 static bool defaults_saved = False;
 
-struct param_opt_struct {
-	struct param_opt_struct *prev, *next;
+typedef struct _param_opt_struct param_opt_struct;
+struct _param_opt_struct {
+	param_opt_struct *prev, *next;
 	char *key;
 	char *value;
 	char **list;
@@ -195,7 +195,8 @@
 	bool bWinbindOfflineLogon;
 	bool bWinbindNormalizeNames;
 	bool bWinbindRpcOnly;
-	char *szIdmapBackend;
+	char **szIdmapDomains;
+	char **szIdmapBackend; /* deprecated */
 	char *szIdmapAllocBackend;
 	char *szAddShareCommand;
 	char *szChangeShareCommand;
@@ -241,7 +242,6 @@
 	int map_to_guest;
 	int oplock_break_wait_time;
 	int winbind_cache_time;
-	int winbind_reconnect_delay;
 	int winbind_max_idle_children;
 	char **szWinbindNssInfo;
 	int iLockSpinTime;
@@ -274,8 +274,6 @@
 	int  iPreferredMaster;
 	int iDomainMaster;
 	bool bDomainLogons;
-	char **szInitLogonDelayedHosts;
-	int InitLogonDelay;
 	bool bEncryptPasswords;
 	bool bUpdateEncrypt;
 	int  clientSchannel;
@@ -340,8 +338,7 @@
 	bool bResetOnZeroVC;
 	int iKeepalive;
 	int iminreceivefile;
-	struct param_opt_struct *param_opt;
-	int cups_connection_timeout;
+	param_opt_struct *param_opt;
 };
 
 static struct global Globals;
@@ -485,7 +482,7 @@
 	int iMap_readonly;
 	int iDirectoryNameCacheSize;
 	int ismb_encrypt;
-	struct param_opt_struct *param_opt;
+	param_opt_struct *param_opt;
 
 	char dummy[3];		/* for alignment */
 };
@@ -2597,15 +2594,6 @@
 		.flags		= FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
 	},
 	{
-		.label		= "cups connection timeout",
-		.type		= P_INTEGER,
-		.p_class	= P_GLOBAL,
-		.ptr		= &Globals.cups_connection_timeout,
-		.special	= NULL,
-		.enum_list	= NULL,
-		.flags		= FLAG_ADVANCED,
-	},
-	{
 		.label		= "iprint server",
 		.type		= P_STRING,
 		.p_class	= P_GLOBAL,
@@ -3203,23 +3191,6 @@
 		.flags		= FLAG_ADVANCED,
 	},
 
-	{
-		.label		= "init logon delayed hosts",
-		.type		= P_LIST,
-		.p_class	= P_GLOBAL,
-		.ptr		= &Globals.szInitLogonDelayedHosts,
-		.flags		= FLAG_ADVANCED,
-	},
-
-	{
-		.label		= "init logon delay",
-		.type		= P_INTEGER,
-		.p_class	= P_GLOBAL,
-		.ptr		= &Globals.InitLogonDelay,
-		.flags		= FLAG_ADVANCED,
-
-	},
-
 	{N_("Browse Options"), P_SEP, P_SEPARATOR},
 
 	{
@@ -4267,8 +4238,17 @@
 		.flags		= FLAG_ADVANCED,
 	},
 	{
+		.label		= "idmap domains",
+		.type		= P_LIST,
+		.p_class	= P_GLOBAL,
+		.ptr		= &Globals.szIdmapDomains,
+		.special	= NULL,
+		.enum_list	= NULL,
+		.flags		= FLAG_ADVANCED,
+	},
+	{
 		.label		= "idmap backend",
-		.type		= P_STRING,
+		.type		= P_LIST,
 		.p_class	= P_GLOBAL,
 		.ptr		= &Globals.szIdmapBackend,
 		.special	= NULL,
@@ -4375,15 +4355,6 @@
 		.flags		= FLAG_ADVANCED,
 	},
 	{
-		.label		= "winbind reconnect delay",
-		.type		= P_INTEGER,
-		.p_class	= P_GLOBAL,
-		.ptr		= &Globals.winbind_reconnect_delay,
-		.special	= NULL,
-		.enum_list	= NULL,
-		.flags		= FLAG_ADVANCED,
-	},
-	{
 		.label		= "winbind enum users",
 		.type		= P_BOOL,
 		.p_class	= P_GLOBAL,
@@ -4805,7 +4776,6 @@
 	 * to never expire, though, when this runs out the afs client will 
 	 * forget the token. Set to 0 to get NEVERDATE.*/
 	Globals.iAfsTokenLifetime = 604800;
-	Globals.cups_connection_timeout = CUPS_DEFAULT_CONNECTION_TIMEOUT;
 
 /* these parameters are set to defaults that are more appropriate
    for the increasing samba install base:
@@ -4828,16 +4798,12 @@
 	Globals.bWINSsupport = False;
 	Globals.bWINSproxy = False;
 
-	TALLOC_FREE(Globals.szInitLogonDelayedHosts);
-	Globals.InitLogonDelay = 100; /* 100 ms default delay */
-
 	Globals.bDNSproxy = True;
 
 	/* this just means to use them if they exist */
 	Globals.bKernelOplocks = True;
 
 	Globals.bAllowTrustedDomains = True;
-	string_set(&Globals.szIdmapBackend, "tdb");
 
 	string_set(&Globals.szTemplateShell, "/bin/false");
 	string_set(&Globals.szTemplateHomedir, "/home/%D/%U");
@@ -4851,7 +4817,6 @@
 	Globals.clustering = False;
 
 	Globals.winbind_cache_time = 300;	/* 5 minutes */
-	Globals.winbind_reconnect_delay = 30;	/* 30 seconds */
 	Globals.bWinbindEnumUsers = False;
 	Globals.bWinbindEnumGroups = False;
 	Globals.bWinbindUseDefaultDomain = False;
@@ -4862,7 +4827,7 @@
 	Globals.bWinbindRefreshTickets = False;
 	Globals.bWinbindOfflineLogon = False;
 
-	Globals.iIdmapCacheTime = 86400 * 7; /* a week by default */
+	Globals.iIdmapCacheTime = 900; /* 15 minutes by default */
 	Globals.iIdmapNegativeCacheTime = 120; /* 2 minutes by default */
 
 	Globals.bPassdbExpandExplicit = False;
@@ -5105,7 +5070,8 @@
 FN_GLOBAL_BOOL(lp_winbind_normalize_names, &Globals.bWinbindNormalizeNames)
 FN_GLOBAL_BOOL(lp_winbind_rpc_only, &Globals.bWinbindRpcOnly)
 
-FN_GLOBAL_CONST_STRING(lp_idmap_backend, &Globals.szIdmapBackend)
+FN_GLOBAL_LIST(lp_idmap_domains, &Globals.szIdmapDomains)
+FN_GLOBAL_LIST(lp_idmap_backend, &Globals.szIdmapBackend) /* deprecated */
 FN_GLOBAL_STRING(lp_idmap_alloc_backend, &Globals.szIdmapAllocBackend)
 FN_GLOBAL_INTEGER(lp_idmap_cache_time, &Globals.iIdmapCacheTime)
 FN_GLOBAL_INTEGER(lp_idmap_negative_cache_time, &Globals.iIdmapNegativeCacheTime)
@@ -5144,8 +5110,6 @@
 FN_GLOBAL_BOOL(lp_wins_proxy, &Globals.bWINSproxy)
 FN_GLOBAL_BOOL(lp_local_master, &Globals.bLocalMaster)
 FN_GLOBAL_BOOL(lp_domain_logons, &Globals.bDomainLogons)
-FN_GLOBAL_LIST(lp_init_logon_delayed_hosts, &Globals.szInitLogonDelayedHosts)
-FN_GLOBAL_INTEGER(lp_init_logon_delay, &Globals.InitLogonDelay)
 FN_GLOBAL_BOOL(lp_load_printers, &Globals.bLoadPrinters)
 FN_GLOBAL_BOOL(lp_readraw, &Globals.bReadRaw)
 FN_GLOBAL_BOOL(lp_large_readwrite, &Globals.bLargeReadwrite)
@@ -5247,7 +5211,6 @@
 FN_LOCAL_STRING(lp_cups_options, szCupsOptions)
 FN_GLOBAL_STRING(lp_cups_server, &Globals.szCupsServer)
 FN_GLOBAL_STRING(lp_iprint_server, &Globals.szIPrintServer)
-FN_GLOBAL_INTEGER(lp_cups_connection_timeout, &Globals.cups_connection_timeout)
 FN_GLOBAL_CONST_STRING(lp_ctdbd_socket, &Globals.ctdbdSocket)
 FN_GLOBAL_LIST(lp_cluster_addresses, &Globals.szClusterAddresses)
 FN_GLOBAL_BOOL(lp_clustering, &Globals.clustering)
@@ -5365,7 +5328,6 @@
 FN_LOCAL_INTEGER(lp_smb_encrypt, ismb_encrypt)
 FN_LOCAL_CHAR(lp_magicchar, magic_char)
 FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time)
-FN_GLOBAL_INTEGER(lp_winbind_reconnect_delay, &Globals.winbind_reconnect_delay)
 FN_GLOBAL_LIST(lp_winbind_nss_info, &Globals.szWinbindNssInfo)
 FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase)
 FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout)
@@ -5394,17 +5356,14 @@
 static void show_parameter(int parmIndex);
 static bool is_synonym_of(int parm1, int parm2, bool *inverse);
 
-/*
- * This is a helper function for parametrical options support.  It returns a
- * pointer to parametrical option value if it exists or NULL otherwise. Actual
- * parametrical functions are quite simple
- */
-static struct param_opt_struct *get_parametrics(int snum, const char *type,
-						const char *option)
+/* This is a helper function for parametrical options support. */
+/* It returns a pointer to parametrical option value if it exists or NULL otherwise */
+/* Actual parametrical functions are quite simple */
+static param_opt_struct *get_parametrics(int snum, const char *type, const char *option)
 {
 	bool global_section = False;
 	char* param_key;
-        struct param_opt_struct *data;
+        param_opt_struct *data;
 	
 	if (snum >= iNumServices) return NULL;
 	
@@ -5421,7 +5380,7 @@
 	}
 
 	while (data) {
-		if (strwicmp(data->key, param_key) == 0) {
+		if (strcmp(data->key, param_key) == 0) {
 			string_free(&param_key);
 			return data;
 		}
@@ -5433,7 +5392,7 @@
 		/* but only if we are not already working with Globals */
 		data = Globals.param_opt;
 		while (data) {
-		        if (strwicmp(data->key, param_key) == 0) {
+		        if (strcmp(data->key, param_key) == 0) {
 			        string_free(&param_key);
 				return data;
 			}
@@ -5538,7 +5497,7 @@
 /* the returned value is talloced on the talloc_tos() */
 char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 	
 	if (data == NULL||data->value==NULL) {
 		if (def) {
@@ -5555,7 +5514,7 @@
 /* Parametric option has following syntax: 'Type: option = value' */
 const char *lp_parm_const_string(int snum, const char *type, const char *option, const char *def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 	
 	if (data == NULL||data->value==NULL)
 		return def;
@@ -5568,7 +5527,7 @@
 
 const char **lp_parm_string_list(int snum, const char *type, const char *option, const char **def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 
 	if (data == NULL||data->value==NULL)
 		return (const char **)def;
@@ -5585,7 +5544,7 @@
 
 int lp_parm_int(int snum, const char *type, const char *option, int def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 	
 	if (data && data->value && *data->value)
 		return lp_int(data->value);
@@ -5598,7 +5557,7 @@
 
 unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsigned long def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 	
 	if (data && data->value && *data->value)
 		return lp_ulong(data->value);
@@ -5611,7 +5570,7 @@
 
 bool lp_parm_bool(int snum, const char *type, const char *option, bool def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 	
 	if (data && data->value && *data->value)
 		return lp_bool(data->value);
@@ -5625,7 +5584,7 @@
 int lp_parm_enum(int snum, const char *type, const char *option,
 		 const struct enum_list *_enum, int def)
 {
-	struct param_opt_struct *data = get_parametrics(snum, type, option);
+	param_opt_struct *data = get_parametrics(snum, type, option);
 	
 	if (data && data->value && *data->value && _enum)
 		return lp_enum(data->value, _enum);
@@ -5651,7 +5610,7 @@
 static void free_service(struct service *pservice)
 {
 	int i;
-	struct param_opt_struct *data, *pdata;
+        param_opt_struct *data, *pdata;
 	if (!pservice)
 		return;
 
@@ -5730,7 +5689,7 @@
 	int i;
 	struct service tservice;
 	int num_to_alloc = iNumServices + 1;
-	struct param_opt_struct *data, *pdata;
+	param_opt_struct *data, *pdata;
 
 	tservice = *pservice;
 
@@ -6413,7 +6372,7 @@
 {
 	int i;
 	bool bcopyall = (pcopymapDest == NULL);
-	struct param_opt_struct *data, *pdata, *paramo;
+	param_opt_struct *data, *pdata, *paramo;
 	bool not_added;
 
 	for (i = 0; parm_table[i].label; i++)
@@ -6477,7 +6436,7 @@
 		/* Traverse destination */
 		while (pdata) {
 			/* If we already have same option, override it */
-			if (strwicmp(pdata->key, data->key) == 0) {
+			if (strcmp(pdata->key, data->key) == 0) {
 				string_free(&pdata->value);
 				TALLOC_FREE(data->list);
 				pdata->value = SMB_STRDUP(data->value);
@@ -6487,7 +6446,7 @@
 			pdata = pdata->next;
 		}
 		if (not_added) {
-		    paramo = SMB_XMALLOC_P(struct param_opt_struct);
+		    paramo = SMB_XMALLOC_P(param_opt_struct);
 		    paramo->key = SMB_STRDUP(data->key);
 		    paramo->value = SMB_STRDUP(data->value);
 		    paramo->list = NULL;
@@ -6884,7 +6843,7 @@
 
 	DEBUG(2, ("Can't find include file %s\n", fname));
 	SAFE_FREE(fname);
-	return true;
+	return false;
 }
 
 /***************************************************************************
@@ -7086,11 +7045,9 @@
 	for (i = 0; parm->enum_list[i].name; i++) {
 		if ( strequal(pszParmValue, parm->enum_list[i].name)) {
 			*ptr = parm->enum_list[i].value;
-			return;
+			break;
 		}
 	}
-	DEBUG(0, ("WARNING: Ignoring invalid value '%s' for parameter '%s'\n",
-		  pszParmValue, parm->label));
 }
 
 /***************************************************************************
@@ -7154,58 +7111,65 @@
 
 bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue)
 {
-	int parmnum, i;
+	int parmnum, i, slen;
 	void *parm_ptr = NULL;	/* where we are going to store the result */
 	void *def_ptr = NULL;
-	struct param_opt_struct *paramo, *data;
+	char *param_key = NULL;
+	char *sep;
+	param_opt_struct *paramo, *data;
 	bool not_added;
 
 	parmnum = map_parameter(pszParmName);
 
 	if (parmnum < 0) {
-		TALLOC_CTX *frame;
+		if ((sep=strchr(pszParmName, ':')) != NULL) {
+			TALLOC_CTX *frame = talloc_stackframe();
 
-		if (strchr(pszParmName, ':') == NULL) {
-			DEBUG(0, ("Ignoring unknown parameter \"%s\"\n",
-				  pszParmName));
-			return (True);
-		}
-
-		/*
-		 * We've got a parametric option
-		 */
-
-		frame = talloc_stackframe();
-
-		not_added = True;
-		data = (snum < 0)
-			? Globals.param_opt : ServicePtrs[snum]->param_opt;
-		/* Traverse destination */
-		while (data) {
-			/* If we already have same option, override it */
-			if (strwicmp(data->key, pszParmName) == 0) {
-				string_free(&data->value);
-				TALLOC_FREE(data->list);
-				data->value = SMB_STRDUP(pszParmValue);
-				not_added = False;
-				break;
+			*sep = '\0';
+			param_key = talloc_asprintf(frame, "%s:", pszParmName);
+			if (!param_key) {
+				TALLOC_FREE(frame);
+				return false;
 			}
-			data = data->next;
-		}
-		if (not_added) {
-			paramo = SMB_XMALLOC_P(struct param_opt_struct);
-			paramo->key = SMB_STRDUP(pszParmName);
-			paramo->value = SMB_STRDUP(pszParmValue);
-			paramo->list = NULL;
-			if (snum < 0) {
-				DLIST_ADD(Globals.param_opt, paramo);
-			} else {
-				DLIST_ADD(ServicePtrs[snum]->param_opt,
-					  paramo);
+			slen = strlen(param_key);
+			param_key = talloc_asprintf_append(param_key, sep+1);
+			if (!param_key) {
+				TALLOC_FREE(frame);
+				return false;
 			}
-		}
+			trim_char(param_key+slen, ' ', ' ');
+			not_added = True;
+			data = (snum < 0) ? Globals.param_opt :
+				ServicePtrs[snum]->param_opt;
+			/* Traverse destination */
+			while (data) {
+				/* If we already have same option, override it */
+				if (strcmp(data->key, param_key) == 0) {
+					string_free(&data->value);
+					TALLOC_FREE(data->list);
+					data->value = SMB_STRDUP(pszParmValue);
+					not_added = False;
+					break;
+				}
+				data = data->next;
+			}
+			if (not_added) {
+				paramo = SMB_XMALLOC_P(param_opt_struct);
+				paramo->key = SMB_STRDUP(param_key);
+				paramo->value = SMB_STRDUP(pszParmValue);
+				paramo->list = NULL;
+				if (snum < 0) {
+					DLIST_ADD(Globals.param_opt, paramo);
+				} else {
+					DLIST_ADD(ServicePtrs[snum]->param_opt, paramo);
+				}
+			}
 
-		TALLOC_FREE(frame);
+			*sep = ':';
+			TALLOC_FREE(frame);
+			return (True);
+		}
+		DEBUG(0, ("Ignoring unknown parameter \"%s\"\n", pszParmName));
 		return (True);
 	}
 
@@ -7244,8 +7208,8 @@
 
 	/* if it is a special case then go ahead */
 	if (parm_table[parmnum].special) {
-		return parm_table[parmnum].special(snum, pszParmValue,
-						   (char **)parm_ptr);
+		parm_table[parmnum].special(snum, pszParmValue, (char **)parm_ptr);
+		return (True);
 	}
 
 	/* now switch on the type of variable it is */
@@ -7521,7 +7485,7 @@
 static void dump_globals(FILE *f)
 {
 	int i;
-	struct param_opt_struct *data;
+	param_opt_struct *data;
 	
 	fprintf(f, "[global]\n");
 
@@ -7565,7 +7529,7 @@
 static void dump_a_service(struct service *pService, FILE * f)
 {
 	int i;
-	struct param_opt_struct *data;
+	param_opt_struct *data;
 	
 	if (pService != &sDefault)
 		fprintf(f, "[%s]\n", pService->szService);
@@ -8783,7 +8747,7 @@
 {
 	char *n2 = NULL;
 	bool bRetval;
-	struct param_opt_struct *data, *pdata;
+	param_opt_struct *data, *pdata;
 
 	bRetval = False;
 

Modified: branches/samba/upstream/source/passdb/lookup_sid.c
===================================================================
--- branches/samba/upstream/source/passdb/lookup_sid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/lookup_sid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1286,39 +1286,22 @@
 
 void uid_to_sid(DOM_SID *psid, uid_t uid)
 {
-	bool expired = true;
-	bool ret;
 	ZERO_STRUCTP(psid);
 
 	if (fetch_sid_from_uid_cache(psid, uid))
 		return;
 
-	/* Check the winbindd cache directly. */
-	ret = idmap_cache_find_uid2sid(uid, psid, &expired);
+	if (!winbind_uid_to_sid(psid, uid)) {
+		if (!winbind_ping()) {
+			legacy_uid_to_sid(psid, uid);
+			return;
+		}
 
-	if (ret && !expired && is_null_sid(psid)) {
-		/*
-		 * Negative cache entry, we already asked.
-		 * do legacy.
-		 */
-		legacy_uid_to_sid(psid, uid);
+		DEBUG(5, ("uid_to_sid: winbind failed to find a sid for uid %u\n",
+			uid));
 		return;
 	}
 
-	if (!ret || expired) {
-		/* Not in cache. Ask winbindd. */
-		if (!winbind_uid_to_sid(psid, uid)) {
-			if (!winbind_ping()) {
-				legacy_uid_to_sid(psid, uid);
-				return;
-			}
-
-			DEBUG(5, ("uid_to_sid: winbind failed to find a sid for uid %u\n",
-				uid));
-			return;
-		}
-	}
-
 	DEBUG(10,("uid %u -> sid %s\n", (unsigned int)uid,
 		  sid_string_dbg(psid)));
 
@@ -1332,42 +1315,25 @@
 
 void gid_to_sid(DOM_SID *psid, gid_t gid)
 {
-	bool expired = true;
-	bool ret;
 	ZERO_STRUCTP(psid);
 
 	if (fetch_sid_from_gid_cache(psid, gid))
 		return;
 
-	/* Check the winbindd cache directly. */
-	ret = idmap_cache_find_gid2sid(gid, psid, &expired);
+	if (!winbind_gid_to_sid(psid, gid)) {
+		if (!winbind_ping()) {
+			legacy_gid_to_sid(psid, gid);
+			return;
+		}
 
-	if (ret && !expired && is_null_sid(psid)) {
-		/*
-		 * Negative cache entry, we already asked.
-		 * do legacy.
-		 */
-		legacy_gid_to_sid(psid, gid);
+		DEBUG(5, ("gid_to_sid: winbind failed to find a sid for gid %u\n",
+			gid));
 		return;
 	}
 
-	if (!ret || expired) {
-		/* Not in cache. Ask winbindd. */
-		if (!winbind_gid_to_sid(psid, gid)) {
-			if (!winbind_ping()) {
-				legacy_gid_to_sid(psid, gid);
-				return;
-			}
-
-			DEBUG(5, ("gid_to_sid: winbind failed to find a sid for gid %u\n",
-				gid));
-			return;
-		}
-	}
-
 	DEBUG(10,("gid %u -> sid %s\n", (unsigned int)gid,
 		  sid_string_dbg(psid)));
-
+	
 	store_gid_sid_cache(psid, gid);
 	return;
 }
@@ -1378,8 +1344,6 @@
 
 bool sid_to_uid(const DOM_SID *psid, uid_t *puid)
 {
-	bool expired = true;
-	bool ret;
 	uint32 rid;
 	gid_t gid;
 
@@ -1402,30 +1366,16 @@
 		return true;
 	}
 
-	/* Check the winbindd cache directly. */
-	ret = idmap_cache_find_sid2uid(psid, puid, &expired);
+	if (!winbind_sid_to_uid(puid, psid)) {
+		if (!winbind_ping()) {
+			return legacy_sid_to_uid(psid, puid);
+		}
 
-	if (ret && !expired && (*puid == (uid_t)-1)) {
-		/*
-		 * Negative cache entry, we already asked.
-		 * do legacy.
-		 */
-		return legacy_sid_to_uid(psid, puid);
+		DEBUG(5, ("winbind failed to find a uid for sid %s\n",
+			  sid_string_dbg(psid)));
+		return false;
 	}
 
-	if (!ret || expired) {
-		/* Not in cache. Ask winbindd. */
-		if (!winbind_sid_to_uid(puid, psid)) {
-			if (!winbind_ping()) {
-				return legacy_sid_to_uid(psid, puid);
-			}
-
-			DEBUG(5, ("winbind failed to find a uid for sid %s\n",
-				  sid_string_dbg(psid)));
-			return false;
-		}
-	}
-
 	/* TODO: Here would be the place to allocate both a gid and a uid for
 	 * the SID in question */
 
@@ -1443,8 +1393,6 @@
 
 bool sid_to_gid(const DOM_SID *psid, gid_t *pgid)
 {
-	bool expired = true;
-	bool ret;
 	uint32 rid;
 	uid_t uid;
 
@@ -1466,36 +1414,24 @@
 		return true;
 	}
 
-	/* Check the winbindd cache directly. */
-	ret = idmap_cache_find_sid2gid(psid, pgid, &expired);
+	/* Ask winbindd if it can map this sid to a gid.
+	 * (Idmap will check it is a valid SID and of the right type) */
 
-	if (ret && !expired && (*pgid == (gid_t)-1)) {
-		/*
-		 * Negative cache entry, we already asked.
-		 * do legacy.
-		 */
-		return legacy_sid_to_gid(psid, pgid);
-	}
-
-	if (!ret || expired) {
-		/* Not in cache or negative. Ask winbindd. */
-		/* Ask winbindd if it can map this sid to a gid.
-		 * (Idmap will check it is a valid SID and of the right type) */
-
-		if ( !winbind_sid_to_gid(pgid, psid) ) {
-			if (!winbind_ping()) {
-				return legacy_sid_to_gid(psid, pgid);
-			}
-
-			DEBUG(10,("winbind failed to find a gid for sid %s\n",
-				  sid_string_dbg(psid)));
-			return false;
+	if ( !winbind_sid_to_gid(pgid, psid) ) {
+		if (!winbind_ping()) {
+			return legacy_sid_to_gid(psid, pgid);
 		}
+
+		DEBUG(10,("winbind failed to find a gid for sid %s\n",
+			  sid_string_dbg(psid)));
+		return false;
 	}
 
 	DEBUG(10,("sid %s -> gid %u\n", sid_string_dbg(psid),
 		  (unsigned int)*pgid ));
 
 	store_gid_sid_cache(psid, *pgid);
+	
 	return true;
 }
+

Modified: branches/samba/upstream/source/passdb/passdb.c
===================================================================
--- branches/samba/upstream/source/passdb/passdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/passdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -675,7 +675,7 @@
 				return NT_STATUS_NO_MEMORY;
 			}
 
-			result = samu_alloc_rid_unix( sam_pass, pwd );
+			result = samu_set_unix( sam_pass, pwd );
 
 			DEBUGLEVEL = tmp_debug;
 
@@ -1517,9 +1517,11 @@
 	return True;
 }
 
-bool is_dc_trusted_domain_situation(const char *domain_name)
+bool is_trusted_domain_situation(const char *domain_name)
 {
-	return IS_DC && !strequal(domain_name, lp_workgroup());
+	return IS_DC &&
+		lp_allow_trusted_domains() &&
+		!strequal(domain_name, lp_workgroup());
 }
 
 /*******************************************************************
@@ -1537,11 +1539,7 @@
 	/* if we are a DC and this is not our domain, then lookup an account
 	 * for the domain trust */
 
-	if (is_dc_trusted_domain_situation(domain)) {
-		if (!lp_allow_trusted_domains()) {
-			return false;
-		}
-
+	if (is_trusted_domain_situation(domain)) {
 		if (!pdb_get_trusteddom_pw(domain, ret_pwd, NULL,
 					   &last_set_time))
 		{
@@ -1562,22 +1560,8 @@
 		return true;
 	}
 
-	/*
-	 * Since we can only be member of one single domain, we are now
-	 * in a member situation:
-	 *
-	 *  -  Either we are a DC (selfjoined) and the domain is our
-	 *     own domain.
-	 *  -  Or we are on a member and the domain is our own or some
-	 *     other (potentially trusted) domain.
-	 *
-	 * In both cases, we can only get the machine account password
-	 * for our own domain to connect to our own dc. (For a member,
-	 * request to trusted domains are performed through our dc.)
-	 *
-	 * So we simply use our own domain name to retrieve the
-	 * machine account passowrd and ignore the request domain here.
-	 */
+	/* Here we are a domain member server.  We can only be a member
+	   of one domain so ignore the request domain and assume our own */
 
 	pwd = secrets_fetch_machine_password(lp_workgroup(), &last_set_time, channel);
 
@@ -1610,7 +1594,7 @@
 		E_md4hash(pwd, ret_pwd);
 		SAFE_FREE(pwd);
 		return true;
-	} else if (is_dc_trusted_domain_situation(domain)) {
+	} else if (is_trusted_domain_situation(domain)) {
 		return false;
 	}
 

Modified: branches/samba/upstream/source/passdb/pdb_get_set.c
===================================================================
--- branches/samba/upstream/source/passdb/pdb_get_set.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/pdb_get_set.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -301,6 +301,14 @@
 	return sampass->home_dir;
 }
 
+const char *pdb_get_unix_homedir(const struct samu *sampass)
+{
+	if (sampass->unix_pw ) {
+		return sampass->unix_pw->pw_dir;
+	}
+	return NULL;
+}
+
 const char *pdb_get_dir_drive(const struct samu *sampass)
 {
 	return sampass->dir_drive;

Modified: branches/samba/upstream/source/passdb/pdb_interface.c
===================================================================
--- branches/samba/upstream/source/passdb/pdb_interface.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/pdb_interface.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -130,7 +130,7 @@
 	trim_char(module_name, ' ', ' ');
 
 
-	DEBUG(5,("Attempting to find a passdb backend to match %s (%s)\n", selected, module_name));
+	DEBUG(5,("Attempting to find an passdb backend to match %s (%s)\n", selected, module_name));
 
 	entry = pdb_find_backend_entry(module_name);
 	

Modified: branches/samba/upstream/source/passdb/pdb_ldap.c
===================================================================
--- branches/samba/upstream/source/passdb/pdb_ldap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/pdb_ldap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1699,7 +1699,6 @@
 		struct berval *retdata = NULL;
 		char *utf8_password;
 		char *utf8_dn;
-		size_t converted_size;
 
 		if (!ldap_state->is_nds_ldap) {
 
@@ -1711,14 +1710,11 @@
 			}
 		}
 
-		if (!push_utf8_allocate(&utf8_password,
-					pdb_get_plaintext_passwd(newpwd),
-					&converted_size))
-		{
+		if (push_utf8_allocate(&utf8_password, pdb_get_plaintext_passwd(newpwd)) == (size_t)-1) {
 			return NT_STATUS_NO_MEMORY;
 		}
 
-		if (!push_utf8_allocate(&utf8_dn, dn, &converted_size)) {
+		if (push_utf8_allocate(&utf8_dn, dn) == (size_t)-1) {
 			SAFE_FREE(utf8_password);
 			return NT_STATUS_NO_MEMORY;
 		}
@@ -2723,8 +2719,8 @@
 								 entry, "sambaSID",
 								 mem_ctx);
 			if (!sidstr) {
-				DEBUG(0, ("Severe DB error, %s can't miss the sambaSID"
-					  "attribute\n", LDAP_OBJ_SAMBASAMACCOUNT));
+				DEBUG(0, ("Severe DB error, sambaSamAccount can't miss "
+					  "the sambaSID attribute\n"));
 				ret = NT_STATUS_INTERNAL_DB_CORRUPTION;
 				goto done;
 			}
@@ -2774,7 +2770,8 @@
 						    entry,
 						    get_global_sam_sid(),
 						    &rid)) {
-			DEBUG(0, ("Severe DB error, %s can't miss the samba SID"								"attribute\n", LDAP_OBJ_SAMBASAMACCOUNT));
+			DEBUG(0, ("Severe DB error, sambaSamAccount can't miss "
+				  "the sambaSID attribute\n"));
 			ret = NT_STATUS_INTERNAL_DB_CORRUPTION;
 			goto done;
 		}
@@ -2980,8 +2977,8 @@
 	int rc;
 
 	filter = talloc_asprintf(mem_ctx,
-				 "(&(objectClass=%s)(gidNumber=%u))",
-				 LDAP_OBJ_POSIXGROUP, map->gid);
+				 "(&(objectClass=posixGroup)(gidNumber=%u))",
+				 map->gid);
 	if (filter == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -3004,7 +3001,7 @@
 
 	mods = NULL;
 	smbldap_set_mod(&mods, LDAP_MOD_ADD, "objectClass",
-			LDAP_OBJ_GROUPMAP);
+			"sambaGroupMapping");
 	smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, &mods, "sambaSid",
 			 sid_string_talloc(mem_ctx, &map->sid));
 	smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, entry, &mods, "sambaGroupType",
@@ -3124,9 +3121,10 @@
 	mods = NULL;
 
 	smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, NULL, &mods, "objectClass",
-			 LDAP_OBJ_SID_ENTRY);
+			 "sambaSidEntry");
 	smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, NULL, &mods, "objectClass",
-			 LDAP_OBJ_GROUPMAP);
+			 "sambaGroupMapping");
+
 	smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, NULL, &mods, "sambaSid",
 			 sid_string_talloc(mem_ctx, &map->sid));
 	smbldap_make_mod(ldap_state->smbldap_state->ldap_struct, NULL, &mods, "sambaGroupType",
@@ -4184,8 +4182,8 @@
 	char *escaped = NULL;
 	char *result = NULL;
 
-	asprintf(&filter, "(&%s(objectclass=%s))",
-			  "(uid=%u)", LDAP_OBJ_SAMBASAMACCOUNT);
+	asprintf(&filter, "(&%s(objectclass=sambaSamAccount))",
+		 "(uid=%u)");
 	if (filter == NULL) goto done;
 
 	escaped = escape_ldap_string_alloc(username);
@@ -4406,7 +4404,6 @@
 				  struct samr_displayentry *result)
 {
 	char **vals;
-	size_t converted_size;
 	DOM_SID sid;
 	uint32 acct_flags;
 
@@ -4432,40 +4429,27 @@
 		DEBUG(5, ("\"uid\" not found\n"));
 		return False;
 	}
-	if (!pull_utf8_talloc(mem_ctx,
-			      CONST_DISCARD(char **, &result->account_name),
-			      vals[0], &converted_size))
-	{
-		DEBUG(0,("ldapuser2displayentry: pull_utf8_talloc failed: %s",
-			 strerror(errno)));
-	}
-
+	pull_utf8_talloc(mem_ctx,
+			 CONST_DISCARD(char **, &result->account_name),
+			 vals[0]);
 	ldap_value_free(vals);
 
 	vals = ldap_get_values(ld, entry, "displayName");
 	if ((vals == NULL) || (vals[0] == NULL))
 		DEBUG(8, ("\"displayName\" not found\n"));
-	else if (!pull_utf8_talloc(mem_ctx,
-				   CONST_DISCARD(char **, &result->fullname),
-				   vals[0], &converted_size))
-	{
-		DEBUG(0,("ldapuser2displayentry: pull_utf8_talloc failed: %s",
-			 strerror(errno)));
-	}
-
+	else
+		pull_utf8_talloc(mem_ctx,
+				 CONST_DISCARD(char **, &result->fullname),
+				 vals[0]);
 	ldap_value_free(vals);
 
 	vals = ldap_get_values(ld, entry, "description");
 	if ((vals == NULL) || (vals[0] == NULL))
 		DEBUG(8, ("\"description\" not found\n"));
-	else if (!pull_utf8_talloc(mem_ctx,
-				   CONST_DISCARD(char **, &result->description),
-				   vals[0], &converted_size))
-	{
-		DEBUG(0,("ldapuser2displayentry: pull_utf8_talloc failed: %s",
-			 strerror(errno)));
-	}
-
+	else
+		pull_utf8_talloc(mem_ctx,
+				 CONST_DISCARD(char **, &result->description),
+				 vals[0]);
 	ldap_value_free(vals);
 
 	if ((result->account_name == NULL) ||
@@ -4552,7 +4536,6 @@
 				   struct samr_displayentry *result)
 {
 	char **vals;
-	size_t converted_size;
 	DOM_SID sid;
 	uint16 group_type;
 
@@ -4592,22 +4575,14 @@
 			DEBUG(5, ("\"cn\" not found\n"));
 			return False;
 		}
-		if (!pull_utf8_talloc(mem_ctx,
-				      CONST_DISCARD(char **,
-						    &result->account_name),
-				      vals[0], &converted_size))
-		{
-			DEBUG(0,("ldapgroup2displayentry: pull_utf8_talloc "
-				  "failed: %s", strerror(errno)));
-		}
+		pull_utf8_talloc(mem_ctx,
+				 CONST_DISCARD(char **, &result->account_name),
+				 vals[0]);
 	}
-	else if (!pull_utf8_talloc(mem_ctx,
-				   CONST_DISCARD(char **,
-						 &result->account_name),
-				   vals[0], &converted_size))
-	{
-		DEBUG(0,("ldapgroup2displayentry: pull_utf8_talloc failed: %s",
-			  strerror(errno)));
+	else {
+		pull_utf8_talloc(mem_ctx,
+				 CONST_DISCARD(char **, &result->account_name),
+				 vals[0]);
 	}
 
 	ldap_value_free(vals);
@@ -4615,13 +4590,10 @@
 	vals = ldap_get_values(ld, entry, "description");
 	if ((vals == NULL) || (vals[0] == NULL))
 		DEBUG(8, ("\"description\" not found\n"));
-	else if (!pull_utf8_talloc(mem_ctx,
-				   CONST_DISCARD(char **, &result->description),
-				   vals[0], &converted_size))
-	{
-		DEBUG(0,("ldapgroup2displayentry: pull_utf8_talloc failed: %s",
-			  strerror(errno)));
-	}
+	else
+		pull_utf8_talloc(mem_ctx,
+				 CONST_DISCARD(char **, &result->description),
+				 vals[0]);
 	ldap_value_free(vals);
 
 	if ((result->account_name == NULL) ||
@@ -4692,10 +4664,9 @@
 	state->connection = ldap_state->smbldap_state;
 	state->scope = LDAP_SCOPE_SUBTREE;
 	state->filter =	talloc_asprintf(search->mem_ctx,
-					"(&(objectclass=%s)"
-					"(sambaGroupType=%d)(sambaSID=%s*))",
-					 LDAP_OBJ_GROUPMAP,
-					 type, sid_to_fstring(tmp, sid));
+					"(&(objectclass=sambaGroupMapping)"
+					"(sambaGroupType=%d)(sambaSID=%s*))", 
+					type, sid_to_fstring(tmp, sid));
 	state->attrs = talloc_attrs(search->mem_ctx, "cn", "sambaSid",
 				    "displayName", "description",
 				    "sambaGroupType", NULL);
@@ -5787,7 +5758,6 @@
 }
 
 static bool get_trusteddom_pw_int(struct ldapsam_privates *ldap_state,
-				  TALLOC_CTX *mem_ctx,
 				  const char *domain, LDAPMessage **entry)
 {
 	int rc;
@@ -5810,10 +5780,6 @@
 	rc = smbldap_search(ldap_state->smbldap_state, trusted_dn, scope,
 			    filter, attrs, attrsonly, &result);
 
-	if (result != NULL) {
-		talloc_autofree_ldapmsg(mem_ctx, result);
-	}
-
 	if (rc == LDAP_NO_SUCH_OBJECT) {
 		*entry = NULL;
 		return True;
@@ -5827,15 +5793,15 @@
 
 	if (num_result > 1) {
 		DEBUG(1, ("ldapsam_get_trusteddom_pw: more than one "
-			  "%s object for domain '%s'?!\n",
-			  LDAP_OBJ_TRUSTDOM_PASSWORD, domain));
+			  "sambaTrustedDomainPassword object for domain '%s'"
+			  "?!\n", domain));
 		return False;
 	}
 
 	if (num_result == 0) {
 		DEBUG(1, ("ldapsam_get_trusteddom_pw: no "
-			  "%s object for domain %s.\n",
-			  LDAP_OBJ_TRUSTDOM_PASSWORD, domain));
+			  "sambaTrustedDomainPassword object for domain %s.\n",
+			  domain));
 		*entry = NULL;
 	} else {
 		*entry = ldap_first_entry(priv2ld(ldap_state), result);
@@ -5856,7 +5822,7 @@
 
 	DEBUG(10, ("ldapsam_get_trusteddom_pw called for domain %s\n", domain));
 
-	if (!get_trusteddom_pw_int(ldap_state, talloc_tos(), domain, &entry) ||
+	if (!get_trusteddom_pw_int(ldap_state, domain, &entry) ||
 	    (entry == NULL))
 	{
 		return False;
@@ -5927,13 +5893,13 @@
 	 * get the current entry (if there is one) in order to put the
 	 * current password into the previous password attribute
 	 */
-	if (!get_trusteddom_pw_int(ldap_state, talloc_tos(), domain, &entry)) {
+	if (!get_trusteddom_pw_int(ldap_state, domain, &entry)) {
 		return False;
 	}
 
 	mods = NULL;
 	smbldap_make_mod(priv2ld(ldap_state), entry, &mods, "objectClass",
-			 LDAP_OBJ_TRUSTDOM_PASSWORD);
+			 "sambaTrustedDomainPassword");
 	smbldap_make_mod(priv2ld(ldap_state), entry, &mods, "sambaDomainName",
 			 domain);
 	smbldap_make_mod(priv2ld(ldap_state), entry, &mods, "sambaSID",
@@ -5942,9 +5908,6 @@
 			 talloc_asprintf(talloc_tos(), "%li", time(NULL)));
 	smbldap_make_mod(priv2ld(ldap_state), entry, &mods,
 			 "sambaClearTextPassword", pwd);
-
-	talloc_autofree_ldapmod(talloc_tos(), mods);
-
 	if (entry != NULL) {
 		prev_pwd = smbldap_talloc_single_attribute(priv2ld(ldap_state),
 				entry, "sambaClearTextPassword", talloc_tos());
@@ -5982,7 +5945,7 @@
 	LDAPMessage *entry = NULL;
 	const char *trusted_dn;
 
-	if (!get_trusteddom_pw_int(ldap_state, talloc_tos(), domain, &entry)) {
+	if (!get_trusteddom_pw_int(ldap_state, domain, &entry)) {
 		return False;
 	}
 
@@ -6033,10 +5996,6 @@
 			    attrsonly,
 			    &result);
 
-	if (result != NULL) {
-		talloc_autofree_ldapmsg(mem_ctx, result);
-	}
-
 	if (rc != LDAP_SUCCESS) {
 		return NT_STATUS_UNSUCCESSFUL;
 	}

Modified: branches/samba/upstream/source/passdb/pdb_tdb.c
===================================================================
--- branches/samba/upstream/source/passdb/pdb_tdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/pdb_tdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -804,7 +804,7 @@
 
 	if (db->transaction_commit(db) != 0) {
 		DEBUG(0, ("Could not commit transaction\n"));
-		return false;
+		goto cancel;
 	}
 
 	return true;
@@ -834,7 +834,7 @@
 
 	/* Try to open tdb passwd.  Create a new one if necessary */
 
-	db_sam = db_open(NULL, name, 0, TDB_DEFAULT, O_CREAT|O_RDWR, 0600);
+	db_sam = db_open_trans(NULL, name, 0, TDB_DEFAULT, O_CREAT|O_RDWR, 0600);
 	if (db_sam == NULL) {
 		DEBUG(0, ("tdbsam_open: Failed to open/create TDB passwd "
 			  "[%s]\n", name));
@@ -1064,7 +1064,7 @@
 
 	if (db_sam->transaction_commit(db_sam) != 0) {
 		DEBUG(0, ("Could not commit transaction\n"));
-		return NT_STATUS_INTERNAL_DB_CORRUPTION;
+		goto cancel;
 	}
 
 	return NT_STATUS_OK;
@@ -1191,7 +1191,7 @@
 
 	if (db_sam->transaction_commit(db_sam) != 0) {
 		DEBUG(0, ("Could not commit transaction\n"));
-		return false;
+		goto cancel;
 	}
 
 	return true;
@@ -1344,8 +1344,7 @@
 		 * account back?
 		 */
 		DEBUG(0, ("transaction_commit failed\n"));
-		TALLOC_FREE(new_acct);
-		return NT_STATUS_INTERNAL_DB_CORRUPTION;	
+		goto cancel;
 	}
 
 	TALLOC_FREE(new_acct );

Modified: branches/samba/upstream/source/passdb/secrets.c
===================================================================
--- branches/samba/upstream/source/passdb/secrets.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/passdb/secrets.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -64,8 +64,8 @@
 		return false;
 	}
 
-	db_ctx = db_open(NULL, fname, 0,
-			 TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	db_ctx = db_open_trans(NULL, fname, 0,
+			       TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 
 	if (db_ctx == NULL) {
 		DEBUG(0,("Failed to open %s\n", fname));
@@ -686,7 +686,6 @@
 {
 	smb_ucs2_t *uni_dom_name;
 	bool ret;
-	size_t converted_size;
 
 	/* packing structures */
 	uint8 *pass_buf = NULL;
@@ -695,7 +694,7 @@
 	struct trusted_dom_pass pass;
 	ZERO_STRUCT(pass);
 
-	if (!push_ucs2_allocate(&uni_dom_name, domain, &converted_size)) {
+	if (push_ucs2_allocate(&uni_dom_name, domain) == (size_t)-1) {
 		DEBUG(0, ("Could not convert domain name %s to unicode\n",
 			  domain));
 		return False;
@@ -929,7 +928,7 @@
 static int list_trusted_domain(struct db_record *rec, void *private_data)
 {
 	const size_t prefix_len = strlen(SECRETS_DOMTRUST_ACCT_PASS);
-	size_t converted_size, packed_size = 0;
+	size_t packed_size = 0;
 	struct trusted_dom_pass pass;
 	struct trustdom_info *dom_info;
 
@@ -963,8 +962,8 @@
 		return 0;
 	}
 
-	if (!pull_ucs2_talloc(dom_info, &dom_info->name, pass.uni_name,
-			      &converted_size)) {
+	if (pull_ucs2_talloc(dom_info, &dom_info->name,
+			     pass.uni_name) == (size_t)-1) {
 		DEBUG(2, ("pull_ucs2_talloc failed\n"));
 		TALLOC_FREE(dom_info);
 		return 0;

Modified: branches/samba/upstream/source/printing/nt_printing.c
===================================================================
--- branches/samba/upstream/source/printing/nt_printing.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/printing/nt_printing.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,6 +21,8 @@
 
 #include "includes.h"
 
+extern struct current_user current_user;
+
 static TDB_CONTEXT *tdb_forms; /* used for forms files */
 static TDB_CONTEXT *tdb_drivers; /* used for driver files */
 static TDB_CONTEXT *tdb_printers; /* used for printers files */
@@ -1377,7 +1379,6 @@
 		}
 	}
 	close_file(fsp, NORMAL_CLOSE);
-	fsp = NULL;
 
 	/* Get file version info (if available) for new file */
 	filepath = driver_unix_convert(conn,new_file,&stat_buf);
@@ -1418,7 +1419,6 @@
 		}
 	}
 	close_file(fsp, NORMAL_CLOSE);
-	fsp = NULL;
 
 	if (use_version && (new_major != old_major || new_minor != old_minor)) {
 		/* Compare versions and choose the larger version number */
@@ -3242,7 +3242,6 @@
 	const char *attrs[] = {"objectGUID", NULL};
 	struct GUID guid;
 	WERROR win_rc = WERR_OK;
-	size_t converted_size;
 
 	DEBUG(5, ("publishing printer %s\n", printer->info_2->printername));
 
@@ -3265,13 +3264,13 @@
 		return WERR_SERVER_UNAVAILABLE;
 	}
 	/* Now convert to CH_UNIX. */
-	if (!pull_utf8_allocate(&srv_dn, srv_dn_utf8, &converted_size)) {
+	if (pull_utf8_allocate(&srv_dn, srv_dn_utf8) == (size_t)-1) {
 		ldap_memfree(srv_dn_utf8);
 		ldap_memfree(srv_cn_utf8);
 		ads_destroy(&ads);
 		return WERR_SERVER_UNAVAILABLE;
 	}
-	if (!pull_utf8_allocate(&srv_cn_0, srv_cn_utf8[0], &converted_size)) {
+	if (pull_utf8_allocate(&srv_cn_0, srv_cn_utf8[0]) == (size_t)-1) {
 		ldap_memfree(srv_dn_utf8);
 		ldap_memfree(srv_cn_utf8);
 		ads_destroy(&ads);
@@ -5763,8 +5762,7 @@
     3)  "printer admins" (may result in numerous calls to winbind)
 
  ****************************************************************************/
-bool print_access_check(struct auth_serversupplied_info *server_info, int snum,
-			int access_type)
+bool print_access_check(struct current_user *user, int snum, int access_type)
 {
 	SEC_DESC_BUF *secdesc = NULL;
 	uint32 access_granted;
@@ -5776,10 +5774,12 @@
 	
 	/* If user is NULL then use the current_user structure */
 
+	if (!user)
+		user = &current_user;
+
 	/* Always allow root or SE_PRINT_OPERATROR to do anything */
 
-	if (server_info->utok.uid == 0
-	    || user_has_privileges(server_info->ptok, &se_printop ) ) {
+	if ( user->ut.uid == 0 || user_has_privileges(user->nt_user_token, &se_printop ) ) {
 		return True;
 	}
 
@@ -5826,7 +5826,7 @@
 	}
 
 	/* Check access */
-	result = se_access_check(secdesc->sd, server_info->ptok, access_type,
+	result = se_access_check(secdesc->sd, user->nt_user_token, access_type,
 				 &access_granted, &status);
 
 	DEBUG(4, ("access check was %s\n", result ? "SUCCESS" : "FAILURE"));
@@ -5834,8 +5834,8 @@
         /* see if we need to try the printer admin list */
 
         if ((access_granted == 0) &&
-	    (token_contains_name_in_list(uidtoname(server_info->utok.uid),
-					 NULL, NULL, server_info->ptok,
+	    (token_contains_name_in_list(uidtoname(user->ut.uid), NULL,
+					 user->nt_user_token,
 					 lp_printer_admin(snum)))) {
 		talloc_destroy(mem_ctx);
 		return True;

Modified: branches/samba/upstream/source/printing/print_cups.c
===================================================================
--- branches/samba/upstream/source/printing/print_cups.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/printing/print_cups.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -7,12 +7,12 @@
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
- *
+ * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
+ * 
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
@@ -24,17 +24,6 @@
 #include <cups/cups.h>
 #include <cups/language.h>
 
-static SIG_ATOMIC_T gotalarm;
-
-/***************************************************************
- Signal function to tell us we timed out.
-****************************************************************/
-
-static void gotalarm_sig(void)
-{
-        gotalarm = 1;
-}
-
 extern userdom_struct current_user_info;
 
 /*
@@ -56,15 +45,7 @@
 	http_t *http;
 	char *server, *p;
 	int port;
-	int timeout = lp_cups_connection_timeout();
-
-	gotalarm = 0;
-
-	if (timeout) {
-                CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
-                alarm(timeout);
-        }
-
+	
 	if (lp_cups_server() != NULL && strlen(lp_cups_server()) > 0) {
 		server = smb_xstrdup(lp_cups_server());
 	} else {
@@ -78,18 +59,15 @@
 	} else {
 		port = ippPort();
 	}
-
+	
 	DEBUG(10, ("connecting to cups server %s:%d\n",
 		   server, port));
 
-	http = httpConnect(server, port);
-
-	CatchSignal(SIGALRM, SIGNAL_CAST SIG_IGN);
-        alarm(0);
-
-	if (http == NULL) {
-		DEBUG(0,("Unable to connect to CUPS server %s:%d - %s\n",
+	if ((http = httpConnect(server, port)) == NULL) {
+		DEBUG(0,("Unable to connect to CUPS server %s:%d - %s\n", 
 			 server, port, strerror(errno)));
+		SAFE_FREE(server);
+		return NULL;
 	}
 
 	SAFE_FREE(server);
@@ -109,7 +87,7 @@
 			{
 			  "printer-name",
 			  "printer-info"
-			};
+			};       
 	bool ret = False;
 
 	DEBUG(5, ("reloading cups printcap cache\n"));
@@ -657,8 +635,8 @@
 	ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL,
         	     new_jobname);
 
-	/*
-	 * add any options defined in smb.conf
+	/* 
+	 * add any options defined in smb.conf 
 	 */
 
 	num_options = 0;
@@ -666,7 +644,7 @@
 	num_options = cupsParseOptions(lp_cups_options(snum), num_options, &options);
 
 	if ( num_options )
-		cupsEncodeOptions(request, num_options, options);
+		cupsEncodeOptions(request, num_options, options); 
 
        /*
 	* Do the request and get back a response...
@@ -712,7 +690,7 @@
 static int cups_queue_get(const char *sharename,
                enum printing_types printing_type,
                char *lpq_command,
-               print_queue_struct **q,
+               print_queue_struct **q, 
                print_status_struct *status)
 {
 	fstring		printername;
@@ -751,10 +729,10 @@
 
 	*q = NULL;
 
-	/* HACK ALERT!!!  The problem with support the 'printer name'
-	   option is that we key the tdb off the sharename.  So we will
-	   overload the lpq_command string to pass in the printername
-	   (which is basically what we do for non-cups printers ... using
+	/* HACK ALERT!!!  The problem with support the 'printer name' 
+	   option is that we key the tdb off the sharename.  So we will 
+	   overload the lpq_command string to pass in the printername 
+	   (which is basically what we do for non-cups printers ... using 
 	   the lpq_command to get the queue listing). */
 
 	fstrcpy( printername, lpq_command );
@@ -1316,22 +1294,22 @@
 			/* Grab the comment if we don't have one */
         		if ( (strcmp(attr->name, "printer-info") == 0)
 			     && (attr->value_tag == IPP_TAG_TEXT)
-			     && !strlen(printer->comment) )
+			     && !strlen(printer->comment) ) 
 			{
 				DEBUG(5,("cups_pull_comment_location: Using cups comment: %s\n",
-					 attr->values[0].string.text));
+					 attr->values[0].string.text));				
 			    	strlcpy(printer->comment,
 						attr->values[0].string.text,
 						sizeof(printer->comment));
 			}
 
-			/* Grab the location if we don't have one */
+			/* Grab the location if we don't have one */ 
 			if ( (strcmp(attr->name, "printer-location") == 0)
-			     && (attr->value_tag == IPP_TAG_TEXT)
+			     && (attr->value_tag == IPP_TAG_TEXT) 
 			     && !strlen(printer->location) )
 			{
 				DEBUG(5,("cups_pull_comment_location: Using cups location: %s\n",
-					 attr->values[0].string.text));
+					 attr->values[0].string.text));				
 			    	fstrcpy(printer->location,attr->values[0].string.text);
 			}
 

Modified: branches/samba/upstream/source/printing/printfsp.c
===================================================================
--- branches/samba/upstream/source/printing/printfsp.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/printing/printfsp.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,13 +20,15 @@
 
 #include "includes.h"
 
+extern struct current_user current_user;
+
 /***************************************************************************
 open a print file and setup a fsp for it. This is a wrapper around
 print_job_start().
 ***************************************************************************/
 
 NTSTATUS print_fsp_open(connection_struct *conn, const char *fname,
-			uint16_t current_vuid, files_struct **result)
+			files_struct **result)
 {
 	int jobid;
 	SMB_STRUCT_STAT sbuf;
@@ -49,7 +51,7 @@
 		fstrcat(name, p);
 	}
 
-	jobid = print_job_start(conn->server_info, SNUM(conn), name, NULL);
+	jobid = print_job_start(&current_user, SNUM(conn), name, NULL);
 	if (jobid == -1) {
 		status = map_nt_error_from_unix(errno);
 		file_free(fsp);
@@ -68,7 +70,7 @@
 	/* setup a full fsp */
 	fsp->fh->fd = print_job_fd(lp_const_servicename(SNUM(conn)),jobid);
 	GetTimeOfDay(&fsp->open_time);
-	fsp->vuid = current_vuid;
+	fsp->vuid = current_user.vuid;
 	fsp->fh->pos = -1;
 	fsp->can_lock = True;
 	fsp->can_read = False;

Modified: branches/samba/upstream/source/printing/printing.c
===================================================================
--- branches/samba/upstream/source/printing/printing.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/printing/printing.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1979,24 +1979,27 @@
  Return true if the current user owns the print job.
 ****************************************************************************/
 
-static bool is_owner(struct auth_serversupplied_info *server_info,
-		     const char *servicename,
+static bool is_owner(struct current_user *user, const char *servicename,
 		     uint32 jobid)
 {
 	struct printjob *pjob = print_job_find(servicename, jobid);
+	user_struct *vuser;
 
-	if (!pjob || !server_info)
+	if (!pjob || !user)
 		return False;
 
-	return strequal(pjob->user, server_info->sanitized_username);
+	if ((vuser = get_valid_user_struct(user->vuid)) != NULL) {
+		return strequal(pjob->user, vuser->user.smb_name);
+	} else {
+		return strequal(pjob->user, uidtoname(user->ut.uid));
+	}
 }
 
 /****************************************************************************
  Delete a print job.
 ****************************************************************************/
 
-bool print_job_delete(struct auth_serversupplied_info *server_info, int snum,
-		      uint32 jobid, WERROR *errcode)
+bool print_job_delete(struct current_user *user, int snum, uint32 jobid, WERROR *errcode)
 {
 	const char* sharename = lp_const_servicename( snum );
 	struct printjob *pjob;
@@ -2005,13 +2008,13 @@
 
 	*errcode = WERR_OK;
 		
-	owner = is_owner(server_info, lp_const_servicename(snum), jobid);
+	owner = is_owner(user, lp_const_servicename(snum), jobid);
 	
 	/* Check access against security descriptor or whether the user
 	   owns their job. */
 
 	if (!owner && 
-	    !print_access_check(server_info, snum, JOB_ACCESS_ADMINISTER)) {
+	    !print_access_check(user, snum, JOB_ACCESS_ADMINISTER)) {
 		DEBUG(3, ("delete denied by security descriptor\n"));
 		*errcode = WERR_ACCESS_DENIED;
 
@@ -2019,8 +2022,7 @@
 		sys_adminlog( LOG_ERR, 
 			      "Permission denied-- user not allowed to delete, \
 pause, or resume print job. User name: %s. Printer name: %s.",
-			      uidtoname(server_info->utok.uid),
-			      PRINTERNAME(snum) );
+			      uidtoname(user->ut.uid), PRINTERNAME(snum) );
 		/* END_ADMIN_LOG */
 
 		return False;
@@ -2064,8 +2066,7 @@
  Pause a job.
 ****************************************************************************/
 
-bool print_job_pause(struct auth_serversupplied_info *server_info, int snum,
-		     uint32 jobid, WERROR *errcode)
+bool print_job_pause(struct current_user *user, int snum, uint32 jobid, WERROR *errcode)
 {
 	const char* sharename = lp_const_servicename(snum);
 	struct printjob *pjob;
@@ -2074,7 +2075,7 @@
 
 	pjob = print_job_find(sharename, jobid);
 	
-	if (!pjob || !server_info) {
+	if (!pjob || !user) {
 		DEBUG(10, ("print_job_pause: no pjob or user for jobid %u\n",
 			(unsigned int)jobid ));
 		return False;
@@ -2086,16 +2087,15 @@
 		return False;
 	}
 
-	if (!is_owner(server_info, lp_const_servicename(snum), jobid) &&
-	    !print_access_check(server_info, snum, JOB_ACCESS_ADMINISTER)) {
+	if (!is_owner(user, lp_const_servicename(snum), jobid) &&
+	    !print_access_check(user, snum, JOB_ACCESS_ADMINISTER)) {
 		DEBUG(3, ("pause denied by security descriptor\n"));
 
 		/* BEGIN_ADMIN_LOG */
 		sys_adminlog( LOG_ERR, 
 			"Permission denied-- user not allowed to delete, \
 pause, or resume print job. User name: %s. Printer name: %s.",
-			      uidtoname(server_info->utok.uid),
-			      PRINTERNAME(snum) );
+				uidtoname(user->ut.uid), PRINTERNAME(snum) );
 		/* END_ADMIN_LOG */
 
 		*errcode = WERR_ACCESS_DENIED;
@@ -2126,8 +2126,7 @@
  Resume a job.
 ****************************************************************************/
 
-bool print_job_resume(struct auth_serversupplied_info *server_info, int snum,
-		      uint32 jobid, WERROR *errcode)
+bool print_job_resume(struct current_user *user, int snum, uint32 jobid, WERROR *errcode)
 {
 	const char *sharename = lp_const_servicename(snum);
 	struct printjob *pjob;
@@ -2135,8 +2134,8 @@
 	struct printif *current_printif = get_printer_fns( snum );
 
 	pjob = print_job_find(sharename, jobid);
-
-	if (!pjob || !server_info) {
+	
+	if (!pjob || !user) {
 		DEBUG(10, ("print_job_resume: no pjob or user for jobid %u\n",
 			(unsigned int)jobid ));
 		return False;
@@ -2148,8 +2147,8 @@
 		return False;
 	}
 
-	if (!is_owner(server_info, lp_const_servicename(snum), jobid) &&
-	    !print_access_check(server_info, snum, JOB_ACCESS_ADMINISTER)) {
+	if (!is_owner(user, lp_const_servicename(snum), jobid) &&
+	    !print_access_check(user, snum, JOB_ACCESS_ADMINISTER)) {
 		DEBUG(3, ("resume denied by security descriptor\n"));
 		*errcode = WERR_ACCESS_DENIED;
 
@@ -2157,8 +2156,7 @@
 		sys_adminlog( LOG_ERR, 
 			 "Permission denied-- user not allowed to delete, \
 pause, or resume print job. User name: %s. Printer name: %s.",
-			      uidtoname(server_info->utok.uid),
-			      PRINTERNAME(snum) );
+			uidtoname(user->ut.uid), PRINTERNAME(snum) );
 		/* END_ADMIN_LOG */
 		return False;
 	}
@@ -2358,12 +2356,12 @@
  Start spooling a job - return the jobid.
 ***************************************************************************/
 
-uint32 print_job_start(struct auth_serversupplied_info *server_info, int snum,
-		       char *jobname, NT_DEVICEMODE *nt_devmode )
+uint32 print_job_start(struct current_user *user, int snum, char *jobname, NT_DEVICEMODE *nt_devmode )
 {
 	uint32 jobid;
 	char *path;
 	struct printjob pjob;
+	user_struct *vuser;
 	const char *sharename = lp_const_servicename(snum);
 	struct tdb_print_db *pdb = get_print_db_byname(sharename);
 	int njobs;
@@ -2373,7 +2371,7 @@
 	if (!pdb)
 		return (uint32)-1;
 
-	if (!print_access_check(server_info, snum, PRINTER_ACCESS_USE)) {
+	if (!print_access_check(user, snum, PRINTER_ACCESS_USE)) {
 		DEBUG(3, ("print_job_start: job start denied by security descriptor\n"));
 		release_print_db(pdb);
 		return (uint32)-1;
@@ -2438,14 +2436,17 @@
 	
 	fstrcpy(pjob.jobname, jobname);
 
-	fstrcpy(pjob.user, lp_printjob_username(snum));
-	standard_sub_advanced(sharename, server_info->sanitized_username,
-			      path, server_info->utok.gid, 
-			      server_info->sanitized_username,
-			      pdb_get_domain(server_info->sam_account),
-			      pjob.user, sizeof(pjob.user)-1);
-	/* ensure NULL termination */
-	pjob.user[sizeof(pjob.user)-1] = '\0';
+	if ((vuser = get_valid_user_struct(user->vuid)) != NULL) {
+		fstrcpy(pjob.user, lp_printjob_username(snum));
+		standard_sub_advanced(sharename, vuser->user.smb_name, path, 
+					vuser->gid, vuser->user.smb_name, 
+					vuser->user.domain, pjob.user, 
+					sizeof(pjob.user) - 1);
+		/* ensure NULL termination */ 
+		pjob.user[sizeof(pjob.user)-1] = '\0'; 
+	} else {
+		fstrcpy(pjob.user, uidtoname(user->ut.uid));
+	}
 
 	fstrcpy(pjob.queuename, lp_const_servicename(snum));
 
@@ -2773,14 +2774,12 @@
  Pause a queue.
 ****************************************************************************/
 
-bool print_queue_pause(struct auth_serversupplied_info *server_info, int snum,
-		       WERROR *errcode)
+bool print_queue_pause(struct current_user *user, int snum, WERROR *errcode)
 {
 	int ret;
 	struct printif *current_printif = get_printer_fns( snum );
 	
-	if (!print_access_check(server_info, snum,
-				PRINTER_ACCESS_ADMINISTER)) {
+	if (!print_access_check(user, snum, PRINTER_ACCESS_ADMINISTER)) {
 		*errcode = WERR_ACCESS_DENIED;
 		return False;
 	}
@@ -2811,14 +2810,12 @@
  Resume a queue.
 ****************************************************************************/
 
-bool print_queue_resume(struct auth_serversupplied_info *server_info, int snum,
-			WERROR *errcode)
+bool print_queue_resume(struct current_user *user, int snum, WERROR *errcode)
 {
 	int ret;
 	struct printif *current_printif = get_printer_fns( snum );
 
-	if (!print_access_check(server_info, snum,
-				PRINTER_ACCESS_ADMINISTER)) {
+	if (!print_access_check(user, snum, PRINTER_ACCESS_ADMINISTER)) {
 		*errcode = WERR_ACCESS_DENIED;
 		return False;
 	}
@@ -2849,8 +2846,7 @@
  Purge a queue - implemented by deleting all jobs that we can delete.
 ****************************************************************************/
 
-bool print_queue_purge(struct auth_serversupplied_info *server_info, int snum,
-		       WERROR *errcode)
+bool print_queue_purge(struct current_user *user, int snum, WERROR *errcode)
 {
 	print_queue_struct *queue;
 	print_status_struct status;
@@ -2860,16 +2856,14 @@
 	/* Force and update so the count is accurate (i.e. not a cached count) */
 	print_queue_update(snum, True);
 	
-	can_job_admin = print_access_check(server_info, snum,
-					   JOB_ACCESS_ADMINISTER);
+	can_job_admin = print_access_check(user, snum, JOB_ACCESS_ADMINISTER);
 	njobs = print_queue_status(snum, &queue, &status);
 	
 	if ( can_job_admin )
 		become_root();
 
 	for (i=0;i<njobs;i++) {
-		bool owner = is_owner(server_info, lp_const_servicename(snum),
-				      queue[i].job);
+		bool owner = is_owner(user, lp_const_servicename(snum), queue[i].job);
 
 		if (owner || can_job_admin) {
 			print_job_delete1(snum, queue[i].job);

Modified: branches/samba/upstream/source/profile/profile.c
===================================================================
--- branches/samba/upstream/source/profile/profile.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/profile/profile.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -426,6 +426,7 @@
 	    "NT_transact_set_user_quota",/* PR_VALUE_NT_TRANSACT_SET_USER_QUOTA */
 	    "get_nt_acl",		/* PR_VALUE_GET_NT_ACL */
 	    "fget_nt_acl",		/* PR_VALUE_FGET_NT_ACL */
+	    "set_nt_acl",		/* PR_VALUE_SET_NT_ACL */
 	    "fset_nt_acl",		/* PR_VALUE_FSET_NT_ACL */
 	    "chmod_acl",		/* PR_VALUE_CHMOD_ACL */
 	    "fchmod_acl",		/* PR_VALUE_FCHMOD_ACL */

Modified: branches/samba/upstream/source/registry/reg_backend_db.c
===================================================================
--- branches/samba/upstream/source/registry/reg_backend_db.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/registry/reg_backend_db.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,9 +27,6 @@
 static struct db_context *regdb = NULL;
 static int regdb_refcount;
 
-static bool regdb_key_exists(const char *key);
-static bool regdb_key_is_base_key(const char *key);
-
 /* List the deepest path into the registry.  All part components will be created.*/
 
 /* If you want to have a part of the path controlled by the tdb and part by
@@ -49,14 +46,6 @@
 	KEY_SMBCONF,
 	KEY_PERFLIB,
 	KEY_PERFLIB_009,
-	KEY_GROUP_POLICY,
-	KEY_SAMBA_GROUP_POLICY,
-	KEY_GP_MACHINE_POLICY,
-	KEY_GP_MACHINE_WIN_POLICY,
-	KEY_HKCU,
-	KEY_GP_USER_POLICY,
-	KEY_GP_USER_WIN_POLICY,
-	KEY_WINLOGON_GPEXT_PATH,
 	"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print\\Monitors",
 	KEY_PROD_OPTIONS,
 	"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\DefaultUserConfiguration",
@@ -202,10 +191,6 @@
 {
 	WERROR werr;
 
-	if (regdb_key_exists(add_path)) {
-		return WERR_OK;
-	}
-
 	if (regdb->transaction_start(regdb) != 0) {
 		DEBUG(0, ("init_registry_key: transaction_start failed\n"));
 		return WERR_REG_IO_FAILURE;
@@ -238,45 +223,12 @@
 WERROR init_registry_data(void)
 {
 	WERROR werr;
-	TALLOC_CTX *frame = talloc_stackframe();
+	TALLOC_CTX *frame = NULL;
 	REGVAL_CTR *values;
 	int i;
 	UNISTR2 data;
 
 	/*
-	 * First, check for the existence of the needed keys and values.
-	 * If all do already exist, we can save the writes.
-	 */
-	for (i=0; builtin_registry_paths[i] != NULL; i++) {
-		if (!regdb_key_exists(builtin_registry_paths[i])) {
-			goto do_init;
-		}
-	}
-
-	for (i=0; builtin_registry_values[i].path != NULL; i++) {
-		values = TALLOC_ZERO_P(frame, REGVAL_CTR);
-		if (values == NULL) {
-			werr = WERR_NOMEM;
-			goto done;
-		}
-
-		regdb_fetch_values(builtin_registry_values[i].path, values);
-		if (!regval_ctr_key_exists(values,
-					builtin_registry_values[i].valuename))
-		{
-			TALLOC_FREE(values);
-			goto do_init;
-		}
-
-		TALLOC_FREE(values);
-	}
-
-	werr = WERR_OK;
-	goto done;
-
-do_init:
-
-	/*
 	 * There are potentially quite a few store operations which are all
 	 * indiviually wrapped in tdb transactions. Wrapping them in a single
 	 * transaction gives just a single transaction_commit() to actually do
@@ -287,16 +239,12 @@
 	if (regdb->transaction_start(regdb) != 0) {
 		DEBUG(0, ("init_registry_data: tdb_transaction_start "
 			  "failed\n"));
-		werr = WERR_REG_IO_FAILURE;
-		goto done;
+		return WERR_REG_IO_FAILURE;
 	}
 
 	/* loop over all of the predefined paths and add each component */
 
 	for (i=0; builtin_registry_paths[i] != NULL; i++) {
-		if (regdb_key_exists(builtin_registry_paths[i])) {
-			continue;
-		}
 		werr = init_registry_key_internal(builtin_registry_paths[i]);
 		if (!W_ERROR_IS_OK(werr)) {
 			goto fail;
@@ -305,6 +253,8 @@
 
 	/* loop over all of the predefined values and add each component */
 
+	frame = talloc_stackframe();
+
 	for (i=0; builtin_registry_values[i].path != NULL; i++) {
 
 		values = TALLOC_ZERO_P(frame, REGVAL_CTR);
@@ -352,24 +302,25 @@
 		TALLOC_FREE(values);
 	}
 
+	TALLOC_FREE(frame);
+
 	if (regdb->transaction_commit(regdb) != 0) {
 		DEBUG(0, ("init_registry_data: Could not commit "
 			  "transaction\n"));
-		werr = WERR_REG_IO_FAILURE;
-	} else {
-		werr = WERR_OK;
+		return WERR_REG_IO_FAILURE;
 	}
 
-	goto done;
+	return WERR_OK;
 
-fail:
+ fail:
+
+	TALLOC_FREE(frame);
+
 	if (regdb->transaction_cancel(regdb) != 0) {
 		smb_panic("init_registry_data: tdb_transaction_cancel "
 			  "failed\n");
 	}
 
-done:
-	TALLOC_FREE(frame);
 	return werr;
 }
 
@@ -390,14 +341,14 @@
 		return WERR_OK;
 	}
 
-	regdb = db_open(NULL, state_path("registry.tdb"), 0,
+	regdb = db_open_trans(NULL, state_path("registry.tdb"), 0,
 			      REG_TDB_FLAGS, O_RDWR, 0600);
 	if (!regdb) {
-		regdb = db_open(NULL, state_path("registry.tdb"), 0,
+		regdb = db_open_trans(NULL, state_path("registry.tdb"), 0,
 				      REG_TDB_FLAGS, O_RDWR|O_CREAT, 0600);
 		if (!regdb) {
 			werr = ntstatus_to_werror(map_nt_error_from_unix(errno));
-			DEBUG(1,("regdb_init: Failed to open registry %s (%s)\n",
+			DEBUG(0,("regdb_init: Failed to open registry %s (%s)\n",
 				state_path("registry.tdb"), strerror(errno) ));
 			return werr;
 		}
@@ -416,7 +367,7 @@
 			   vers_id, REGVER_V1));
 		status = dbwrap_trans_store_int32(regdb, vstring, REGVER_V1);
 		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(1, ("regdb_init: error storing %s = %d: %s\n",
+			DEBUG(0, ("regdb_init: error storing %s = %d: %s\n",
 				  vstring, REGVER_V1, nt_errstr(status)));
 			return ntstatus_to_werror(status);
 		} else {
@@ -444,7 +395,7 @@
 	
 	become_root();
 
-	regdb = db_open(NULL, state_path("registry.tdb"), 0,
+	regdb = db_open_trans(NULL, state_path("registry.tdb"), 0,
 			      REG_TDB_FLAGS, O_RDWR, 0600);
 	if ( !regdb ) {
 		result = ntstatus_to_werror( map_nt_error_from_unix( errno ) );
@@ -583,10 +534,6 @@
 	TALLOC_CTX *ctx = talloc_stackframe();
 	NTSTATUS status;
 
-	if (!regdb_key_is_base_key(key) && !regdb_key_exists(key)) {
-		goto fail;
-	}
-
 	/*
 	 * fetch a list of the old subkeys so we can determine if anything has
 	 * changed
@@ -636,29 +583,16 @@
 
 	regdb_fetch_keys(key, old_subkeys);
 
-	/*
-	 * Make the store operation as safe as possible without transactions:
-	 *
-	 * (1) For each subkey removed from ctr compared with old_subkeys:
-	 *
-	 *     (a) First delete the value db entry.
-	 *
-	 *     (b) Next delete the secdesc db record.
-	 *
-	 *     (c) Then delete the subkey list entry.
-	 *
-	 * (2) Now write the list of subkeys of the parent key,
-	 *     deleting removed entries and adding new ones.
-	 *
-	 * (3) Finally create the subkey list entries for the added keys.
-	 *
-	 * This way if we crash half-way in between deleting the subkeys
-	 * and storing the parent's list of subkeys, no old data can pop up
-	 * out of the blue when re-adding keys later on.
-	 */
+	/* store the subkey list for the parent */
 
-	/* (1) delete removed keys' lists (values/secdesc/subkeys) */
+	if (!regdb_store_keys_internal(key, ctr) ) {
+		DEBUG(0,("regdb_store_keys: Failed to store new subkey list "
+			 "for parent [%s]\n", key));
+		goto cancel;
+	}
 
+	/* now delete removed keys */
+
 	num_subkeys = regsubkey_ctr_numkeys(old_subkeys);
 	for (i=0; i<num_subkeys; i++) {
 		oldkeyname = regsubkey_ctr_specific_key(old_subkeys, i);
@@ -671,12 +605,7 @@
 			continue;
 		}
 
-		/* (a) Delete the value list for this key */
-
-		path = talloc_asprintf(ctx, "%s/%s/%s",
-				REG_VALUE_PREFIX,
-				key,
-				oldkeyname );
+		path = talloc_asprintf(ctx, "%s/%s", key, oldkeyname);
 		if (!path) {
 			goto cancel;
 		}
@@ -684,14 +613,15 @@
 		if (!path) {
 			goto cancel;
 		}
-		/* Ignore errors here, we might have no values around */
-		dbwrap_delete_bystring(regdb, path);
-		TALLOC_FREE(path);
+		status = dbwrap_delete_bystring(regdb, path);
+		if (!NT_STATUS_IS_OK(status)) {
+			DEBUG(1, ("Deleting %s failed\n", path));
+			goto cancel;
+		}
 
-		/* (b) Delete the secdesc for this key */
-
+		TALLOC_FREE(path);
 		path = talloc_asprintf(ctx, "%s/%s/%s",
-				REG_SECDESC_PREFIX,
+				REG_VALUE_PREFIX,
 				key,
 				oldkeyname );
 		if (!path) {
@@ -701,51 +631,18 @@
 		if (!path) {
 			goto cancel;
 		}
-		status = dbwrap_delete_bystring(regdb, path);
-		/* Don't fail if there are no values around. */
-		if (!NT_STATUS_IS_OK(status) &&
-		    !NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND))
-		{
-			DEBUG(1, ("Deleting %s failed: %s\n", path,
-				  nt_errstr(status)));
-			goto cancel;
-		}
-		TALLOC_FREE(path);
 
-		/* (c) Delete the list of subkeys of this key */
-
-		path = talloc_asprintf(ctx, "%s/%s", key, oldkeyname);
-		if (!path) {
-			goto cancel;
-		}
-		path = normalize_reg_path(ctx, path);
-		if (!path) {
-			goto cancel;
-		}
-		status = dbwrap_delete_bystring(regdb, path);
-		/* Don't fail if the subkey record was not found. */
-		if (!NT_STATUS_IS_OK(status) &&
-		    !NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND))
-		{
-			DEBUG(1, ("Deleting %s failed: %s\n", path,
-				  nt_errstr(status)));
-			goto cancel;
-		}
+		/*
+		 * Ignore errors here, we might have no values around
+		 */
+		dbwrap_delete_bystring(regdb, path);
 		TALLOC_FREE(path);
 	}
 
 	TALLOC_FREE(old_subkeys);
 
-	/* (2) store the subkey list for the parent */
+	/* now create records for any subkeys that don't already exist */
 
-	if (!regdb_store_keys_internal(key, ctr) ) {
-		DEBUG(0,("regdb_store_keys: Failed to store new subkey list "
-			 "for parent [%s]\n", key));
-		goto cancel;
-	}
-
-	/* (3) now create records for any subkeys that don't already exist */
-
 	num_subkeys = regsubkey_ctr_numkeys(ctr);
 
 	if (num_subkeys == 0) {
@@ -808,118 +705,6 @@
 }
 
 
-static TDB_DATA regdb_fetch_key_internal(TALLOC_CTX *mem_ctx, const char *key)
-{
-	char *path = NULL;
-	TDB_DATA data;
-
-	path = normalize_reg_path(mem_ctx, key);
-	if (!path) {
-		return make_tdb_data(NULL, 0);
-	}
-
-	data = dbwrap_fetch_bystring(regdb, mem_ctx, path);
-
-	TALLOC_FREE(path);
-	return data;
-}
-
-
-/**
- * check whether a given key name represents a base key,
- * i.e one without a subkey separator ('/' or '\').
- */
-static bool regdb_key_is_base_key(const char *key)
-{
-	TALLOC_CTX *mem_ctx = talloc_stackframe();
-	bool ret = false;
-	char *path;
-
-	if (key == NULL) {
-		goto done;
-	}
-
-	path = normalize_reg_path(mem_ctx, key);
-	if (path == NULL) {
-		DEBUG(0, ("out of memory! (talloc failed)\n"));
-		goto done;
-	}
-
-	if (*path == '\0') {
-		goto done;
-	}
-
-	ret = (strrchr(path, '/') == NULL);
-
-done:
-	TALLOC_FREE(mem_ctx);
-	return ret;
-}
-
-
-/**
- * Check for the existence of a key.
- *
- * Existence of a key is authoritatively defined by its
- * existence in the list of subkeys of its parent key.
- * The exeption of this are keys without a parent key,
- * i.e. the "base" keys (HKLM, HKCU, ...).
- */
-static bool regdb_key_exists(const char *key)
-{
-	TALLOC_CTX *mem_ctx = talloc_stackframe();
-	TDB_DATA value;
-	bool ret = false;
-	char *path, *p;
-
-	if (key == NULL) {
-		goto done;
-	}
-
-	path = normalize_reg_path(mem_ctx, key);
-	if (path == NULL) {
-		DEBUG(0, ("out of memory! (talloc failed)\n"));
-		goto done;
-	}
-
-	if (*path == '\0') {
-		goto done;
-	}
-
-	p = strrchr(path, '/');
-	if (p == NULL) {
-		/* this is a base key */
-		value = regdb_fetch_key_internal(mem_ctx, path);
-		ret = (value.dptr != NULL);
-	} else {
-		/* get the list of subkeys of the parent key */
-		uint32 num_items, len, i;
-		fstring subkeyname;
-
-		*p = '\0';
-		p++;
-		value = regdb_fetch_key_internal(mem_ctx, path);
-		if (value.dptr == NULL) {
-			goto done;
-		}
-
-		len = tdb_unpack(value.dptr, value.dsize, "d", &num_items);
-		for (i = 0; i < num_items; i++) {
-			len += tdb_unpack(value.dptr +len, value.dsize -len,
-					  "f", &subkeyname);
-			if (strequal(subkeyname, p)) {
-				ret = true;
-				goto done;
-			}
-		}
-	}
-
-done:
-	TALLOC_FREE(mem_ctx);
-	return ret;
-}
-
-
 /***********************************************************************
  Retrieve an array of strings containing subkeys.  Memory should be
  released by the caller.
@@ -928,34 +713,46 @@
 int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
 {
 	WERROR werr;
+	char *path = NULL;
 	uint32 num_items;
 	uint8 *buf;
 	uint32 buflen, len;
 	int i;
 	fstring subkeyname;
 	int ret = -1;
+	int dbret = -1;
 	TALLOC_CTX *frame = talloc_stackframe();
 	TDB_DATA value;
 
 	DEBUG(11,("regdb_fetch_keys: Enter key => [%s]\n", key ? key : "NULL"));
 
-	if (!regdb_key_exists(key)) {
-		goto done;
+	path = talloc_strdup(frame, key);
+	if (!path) {
+		goto fail;
 	}
 
+	/* convert to key format */
+	path = talloc_string_sub(frame, path, "\\", "/");
+	if (!path) {
+		goto fail;
+	}
+	strupper_m(path);
+
 	ctr->seqnum = regdb_get_seqnum();
 
-	value = regdb_fetch_key_internal(frame, key);
-
-	if (value.dptr == NULL) {
-		DEBUG(10, ("regdb_fetch_keys: no subkeys found for key [%s]\n",
-			   key));
-		ret = 0;
-		goto done;
+	dbret = regdb->fetch(regdb, frame, string_term_tdb_data(path), &value);
+	if (dbret != 0) {
+		goto fail;
 	}
 
 	buf = value.dptr;
 	buflen = value.dsize;
+
+	if ( !buf ) {
+		DEBUG(5,("regdb_fetch_keys: tdb lookup failed to locate key [%s]\n", key));
+		goto fail;
+	}
+
 	len = tdb_unpack( buf, buflen, "d", &num_items);
 
 	for (i=0; i<num_items; i++) {
@@ -964,14 +761,14 @@
 		if (!W_ERROR_IS_OK(werr)) {
 			DEBUG(5, ("regdb_fetch_keys: regsubkey_ctr_addkey "
 				  "failed: %s\n", dos_errstr(werr)));
-			goto done;
+			goto fail;
 		}
 	}
 
 	DEBUG(11,("regdb_fetch_keys: Exit [%d] items\n", num_items));
 
 	ret = num_items;
-done:
+ fail:
 	TALLOC_FREE(frame);
 	return ret;
 }
@@ -1065,22 +862,26 @@
 	char *keystr = NULL;
 	TALLOC_CTX *ctx = talloc_stackframe();
 	int ret = 0;
+	int dbret = -1;
 	TDB_DATA value;
 
 	DEBUG(10,("regdb_fetch_values: Looking for value of key [%s] \n", key));
 
-	if (!regdb_key_exists(key)) {
-		goto done;
-	}
-
 	keystr = talloc_asprintf(ctx, "%s/%s", REG_VALUE_PREFIX, key);
 	if (!keystr) {
+		return 0;
+	}
+	keystr = normalize_reg_path(ctx, keystr);
+	if (!keystr) {
 		goto done;
 	}
 
 	values->seqnum = regdb_get_seqnum();
 
-	value = regdb_fetch_key_internal(ctx, keystr);
+	dbret = regdb->fetch(regdb, ctx, string_term_tdb_data(keystr), &value);
+	if (dbret != 0) {
+		goto done;
+	}
 
 	if (!value.dptr) {
 		/* all keys have zero values by default */
@@ -1106,10 +907,6 @@
 
 	DEBUG(10,("regdb_store_values: Looking for value of key [%s] \n", key));
 
-	if (!regdb_key_exists(key)) {
-		goto done;
-	}
-
 	ZERO_STRUCT(data);
 
 	len = regdb_pack_values(values, data.dptr, data.dsize);
@@ -1144,7 +941,8 @@
 		goto done;
 	}
 
-	status = dbwrap_trans_store_bystring(regdb, keystr, data, TDB_REPLACE);
+	status = dbwrap_trans_store(regdb, string_term_tdb_data(keystr), data,
+				    TDB_REPLACE);
 
 	result = NT_STATUS_IS_OK(status);
 
@@ -1164,11 +962,6 @@
 
 	DEBUG(10, ("regdb_get_secdesc: Getting secdesc of key [%s]\n", key));
 
-	if (!regdb_key_exists(key)) {
-		err = WERR_BADFILE;
-		goto done;
-	}
-
 	tdbkey = talloc_asprintf(tmp_ctx, "%s/%s", REG_SECDESC_PREFIX, key);
 	if (tdbkey == NULL) {
 		err = WERR_NOMEM;
@@ -1205,11 +998,6 @@
 	WERROR err = WERR_NOMEM;
 	TDB_DATA tdbdata;
 
-	if (!regdb_key_exists(key)) {
-		err = WERR_BADFILE;
-		goto done;
-	}
-
 	tdbkey = talloc_asprintf(mem_ctx, "%s/%s", REG_SECDESC_PREFIX, key);
 	if (tdbkey == NULL) {
 		goto done;
@@ -1218,7 +1006,8 @@
 
 	if (secdesc == NULL) {
 		/* assuming a delete */
-		status = dbwrap_trans_delete_bystring(regdb, tdbkey);
+		status = dbwrap_trans_delete(regdb,
+					     string_term_tdb_data(tdbkey));
 		if (NT_STATUS_IS_OK(status)) {
 			err = WERR_OK;
 		} else {
@@ -1234,7 +1023,8 @@
 		goto done;
 	}
 
-	status = dbwrap_trans_store_bystring(regdb, tdbkey, tdbdata, 0);
+	status = dbwrap_trans_store(regdb, string_term_tdb_data(tdbkey),
+				    tdbdata, 0);
 	if (!NT_STATUS_IS_OK(status)) {
 		err = ntstatus_to_werror(status);
 		goto done;

Modified: branches/samba/upstream/source/registry/reg_util.c
===================================================================
--- branches/samba/upstream/source/registry/reg_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/registry/reg_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -83,38 +83,19 @@
 	return true;
 }
 
-/**
- * The full path to the registry key is used as database key
- * after the \'s are converted to /'s.
- * Leading and trailing '/' and '\' characters are stripped.
- * Key string is also normalized to UPPER case.
- */
+/**********************************************************************
+ The full path to the registry key is used as database after the
+ \'s are converted to /'s.  Key string is also normalized to UPPER
+ case.
+**********************************************************************/
 
 char *normalize_reg_path(TALLOC_CTX *ctx, const char *keyname )
 {
-	char *p;
-	char *nkeyname;
-
-	/* skip leading '/' and '\' chars */
-	p = (char *)keyname;
-	while ((*p == '/') || (*p == '\\')) {
-		p++;
-	}
-
-	nkeyname = talloc_string_sub(ctx, p, "\\", "/");
-	if (nkeyname == NULL) {
+	char *nkeyname = talloc_string_sub(ctx, keyname, "\\", "/");
+	if (!nkeyname) {
 		return NULL;
 	}
-
-	/* strip trailing '/' chars */
-	p = strrchr(nkeyname, '/');
-	while ((p != NULL) && (p[1] == '\0')) {
-		*p = '\0';
-		p = strrchr(nkeyname, '/');
-	}
-
 	strupper_m(nkeyname);
-
 	return nkeyname;
 }
 

Modified: branches/samba/upstream/source/rpc_client/cli_lsarpc.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_lsarpc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_lsarpc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -108,7 +108,7 @@
 	}
 
 	return rpccli_lsa_OpenPolicy2(cli, mem_ctx,
-				      cli->srv_name_slash,
+				      cli->cli->srv_name_slash,
 				      &attr,
 				      des_access,
 				      pol);
@@ -467,3 +467,105 @@
 
 	return result;
 }
+
+#if 0
+
+/** An example of how to use the routines in this file.  Fetch a DOMAIN
+    sid. Does complete cli setup / teardown anonymously. */
+
+bool fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid)
+{
+	struct cli_state cli;
+	NTSTATUS result;
+	POLICY_HND lsa_pol;
+	bool ret = False;
+
+	ZERO_STRUCT(cli);
+	if(cli_initialise(&cli) == False) {
+		DEBUG(0,("fetch_domain_sid: unable to initialize client connection.\n"));
+		return False;
+	}
+
+	if(!resolve_name( remote_machine, &cli.dest_ip, 0x20)) {
+		DEBUG(0,("fetch_domain_sid: Can't resolve address for %s\n", remote_machine));
+		goto done;
+	}
+
+	if (!cli_connect(&cli, remote_machine, &cli.dest_ip)) {
+		DEBUG(0,("fetch_domain_sid: unable to connect to SMB server on \
+machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+		goto done;
+	}
+
+	if (!attempt_netbios_session_request(&cli, global_myname(), remote_machine, &cli.dest_ip)) {
+		DEBUG(0,("fetch_domain_sid: machine %s rejected the NetBIOS session request.\n",
+			remote_machine));
+		goto done;
+	}
+
+	cli.protocol = PROTOCOL_NT1;
+
+	if (!cli_negprot(&cli)) {
+		DEBUG(0,("fetch_domain_sid: machine %s rejected the negotiate protocol. \
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+		goto done;
+	}
+
+	if (cli.protocol != PROTOCOL_NT1) {
+		DEBUG(0,("fetch_domain_sid: machine %s didn't negotiate NT protocol.\n",
+			remote_machine));
+		goto done;
+	}
+
+	/*
+	 * Do an anonymous session setup.
+	 */
+
+	if (!cli_session_setup(&cli, "", "", 0, "", 0, "")) {
+		DEBUG(0,("fetch_domain_sid: machine %s rejected the session setup. \
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+		goto done;
+	}
+
+	if (!(cli.sec_mode & NEGOTIATE_SECURITY_USER_LEVEL)) {
+		DEBUG(0,("fetch_domain_sid: machine %s isn't in user level security mode\n",
+			remote_machine));
+		goto done;
+	}
+
+	if (!cli_send_tconX(&cli, "IPC$", "IPC", "", 1)) {
+		DEBUG(0,("fetch_domain_sid: machine %s rejected the tconX on the IPC$ share. \
+Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
+		goto done;
+	}
+
+	/* Fetch domain sid */
+
+	if (!cli_nt_session_open(&cli, PI_LSARPC)) {
+		DEBUG(0, ("fetch_domain_sid: Error connecting to SAM pipe\n"));
+		goto done;
+	}
+
+	result = cli_lsa_open_policy(&cli, cli.mem_ctx, True, SEC_RIGHTS_QUERY_VALUE, &lsa_pol);
+	if (!NT_STATUS_IS_OK(result)) {
+		DEBUG(0, ("fetch_domain_sid: Error opening lsa policy handle. %s\n",
+			nt_errstr(result) ));
+		goto done;
+	}
+
+	result = cli_lsa_query_info_policy(&cli, cli.mem_ctx, &lsa_pol, 5, domain, psid);
+	if (!NT_STATUS_IS_OK(result)) {
+		DEBUG(0, ("fetch_domain_sid: Error querying lsa policy handle. %s\n",
+			nt_errstr(result) ));
+		goto done;
+	}
+
+	ret = True;
+
+  done:
+
+	cli_shutdown(&cli);
+	return ret;
+}
+
+#endif

Modified: branches/samba/upstream/source/rpc_client/cli_netlogon.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_netlogon.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_netlogon.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,7 +22,98 @@
 
 #include "includes.h"
 
+/* LSA Request Challenge. Sends our challenge to server, then gets
+   server response. These are used to generate the credentials.
+ The sent and received challenges are stored in the netlog pipe
+ private data. Only call this via rpccli_netlogon_setup_creds(). JRA.
+*/
+
+/* instead of rpccli_net_req_chal() we use rpccli_netr_ServerReqChallenge() now - gd */
+
+#if 0
 /****************************************************************************
+LSA Authenticate 2
+
+Send the client credential, receive back a server credential.
+Ensure that the server credential returned matches the session key
+encrypt of the server challenge originally received. JRA.
+****************************************************************************/
+
+  NTSTATUS rpccli_net_auth2(struct rpc_pipe_client *cli,
+		       uint16 sec_chan,
+		       uint32 *neg_flags, DOM_CHAL *srv_chal)
+{
+        prs_struct qbuf, rbuf;
+        NET_Q_AUTH_2 q;
+        NET_R_AUTH_2 r;
+        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	fstring machine_acct;
+
+	if ( sec_chan == SEC_CHAN_DOMAIN )
+		fstr_sprintf( machine_acct, "%s$", lp_workgroup() );
+	else
+		fstrcpy( machine_acct, cli->mach_acct );
+
+        /* create and send a MSRPC command with api NET_AUTH2 */
+
+        DEBUG(4,("cli_net_auth2: srv:%s acct:%s sc:%x mc: %s chal %s neg: %x\n",
+                 cli->srv_name_slash, machine_acct, sec_chan, global_myname(),
+                 credstr(cli->clnt_cred.challenge.data), *neg_flags));
+
+        /* store the parameters */
+
+        init_q_auth_2(&q, cli->srv_name_slash, machine_acct,
+                      sec_chan, global_myname(), &cli->clnt_cred.challenge,
+                      *neg_flags);
+
+        /* turn parameters into data stream */
+
+	CLI_DO_RPC(cli, mem_ctx, PI_NETLOGON, NET_AUTH2,
+		q, r,
+		qbuf, rbuf,
+		net_io_q_auth_2,
+		net_io_r_auth_2,
+		NT_STATUS_UNSUCCESSFUL);
+
+        result = r.status;
+
+        if (NT_STATUS_IS_OK(result)) {
+                UTIME zerotime;
+
+                /*
+                 * Check the returned value using the initial
+                 * server received challenge.
+                 */
+
+                zerotime.time = 0;
+                if (cred_assert( &r.srv_chal, cli->sess_key, srv_chal, zerotime) == 0) {
+
+                        /*
+                         * Server replied with bad credential. Fail.
+                         */
+                        DEBUG(0,("cli_net_auth2: server %s replied with bad credential (bad machine \
+password ?).\n", cli->cli->desthost ));
+			return NT_STATUS_ACCESS_DENIED;
+                }
+		*neg_flags = r.srv_flgs.neg_flags;
+        }
+
+        return result;
+}
+#endif
+
+/****************************************************************************
+ LSA Authenticate 2
+
+ Send the client credential, receive back a server credential.
+ The caller *must* ensure that the server credential returned matches the session key
+ encrypt of the server challenge originally received. JRA.
+****************************************************************************/
+
+/* instead of rpccli_net_auth2() we use rpccli_netr_ServerAuthenticate2() now -  gd */
+
+
+/****************************************************************************
  Wrapper function that uses the auth and auth2 calls to set up a NETLOGON
  credentials chain. Stores the credentials in the struct dcinfo in the
  netlogon pipe struct.
@@ -43,16 +134,16 @@
 	struct dcinfo *dc;
 	bool retried = false;
 
-	SMB_ASSERT(ndr_syntax_id_equal(&cli->abstract_syntax,
-				       &ndr_table_netlogon.syntax_id));
+	SMB_ASSERT(cli->pipe_idx == PI_NETLOGON);
 
-	TALLOC_FREE(cli->dc);
-	cli->dc = talloc_zero(cli, struct dcinfo);
-	if (cli->dc == NULL) {
-		return NT_STATUS_NO_MEMORY;
+	dc = cli->dc;
+	if (!dc) {
+		return NT_STATUS_INVALID_PARAMETER;
 	}
-	dc = cli->dc;
 
+	/* Ensure we don't reuse any of this state. */
+	ZERO_STRUCTP(dc);
+
 	/* Store the machine account password we're going to use. */
 	memcpy(dc->mach_pw, machine_pwd, 16);
 
@@ -68,7 +159,7 @@
 	generate_random_buffer(clnt_chal_send.data, 8);
 
 	/* Get the server challenge. */
-	result = rpccli_netr_ServerReqChallenge(cli, talloc_tos(),
+	result = rpccli_netr_ServerReqChallenge(cli, cli->mem_ctx,
 						dc->remote_machine,
 						clnt_name,
 						&clnt_chal_send,
@@ -89,7 +180,7 @@
 	 * Send client auth-2 challenge and receive server repy.
 	 */
 
-	result = rpccli_netr_ServerAuthenticate2(cli, talloc_tos(),
+	result = rpccli_netr_ServerAuthenticate2(cli, cli->mem_ctx,
 						 dc->remote_machine,
 						 dc->mach_acct,
 						 sec_chan_type,
@@ -121,13 +212,13 @@
 		 */
 		DEBUG(0,("rpccli_netlogon_setup_creds: server %s "
 			"replied with bad credential\n",
-			cli->desthost ));
+			cli->cli->desthost ));
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
 	DEBUG(5,("rpccli_netlogon_setup_creds: server %s credential "
 		"chain established.\n",
-		cli->desthost ));
+		cli->cli->desthost ));
 
 	return NT_STATUS_OK;
 }

Modified: branches/samba/upstream/source/rpc_client/cli_pipe.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_pipe.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_pipe.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -18,89 +18,12 @@
  */
 
 #include "includes.h"
-#include "librpc/gen_ndr/cli_epmapper.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_CLI
 
-/*******************************************************************
-interface/version dce/rpc pipe identification
-********************************************************************/
+extern struct pipe_id_info pipe_names[];
 
-#define PIPE_SRVSVC   "\\PIPE\\srvsvc"
-#define PIPE_SAMR     "\\PIPE\\samr"
-#define PIPE_WINREG   "\\PIPE\\winreg"
-#define PIPE_WKSSVC   "\\PIPE\\wkssvc"
-#define PIPE_NETLOGON "\\PIPE\\NETLOGON"
-#define PIPE_NTLSA    "\\PIPE\\ntlsa"
-#define PIPE_NTSVCS   "\\PIPE\\ntsvcs"
-#define PIPE_LSASS    "\\PIPE\\lsass"
-#define PIPE_LSARPC   "\\PIPE\\lsarpc"
-#define PIPE_SPOOLSS  "\\PIPE\\spoolss"
-#define PIPE_NETDFS   "\\PIPE\\netdfs"
-#define PIPE_ECHO     "\\PIPE\\rpcecho"
-#define PIPE_SHUTDOWN "\\PIPE\\initshutdown"
-#define PIPE_EPM      "\\PIPE\\epmapper"
-#define PIPE_SVCCTL   "\\PIPE\\svcctl"
-#define PIPE_EVENTLOG "\\PIPE\\eventlog"
-#define PIPE_EPMAPPER "\\PIPE\\epmapper"
-#define PIPE_DRSUAPI  "\\PIPE\\drsuapi"
-
-/*
- * IMPORTANT!!  If you update this structure, make sure to
- * update the index #defines in smb.h.
- */
-
-static const struct pipe_id_info {
-	/* the names appear not to matter: the syntaxes _do_ matter */
-
-	const char *client_pipe;
-	const RPC_IFACE *abstr_syntax; /* this one is the abstract syntax id */
-} pipe_names [] =
-{
-	{ PIPE_LSARPC,		&ndr_table_lsarpc.syntax_id },
-	{ PIPE_LSARPC,		&ndr_table_dssetup.syntax_id },
-	{ PIPE_SAMR,		&ndr_table_samr.syntax_id },
-	{ PIPE_NETLOGON,	&ndr_table_netlogon.syntax_id },
-	{ PIPE_SRVSVC,		&ndr_table_srvsvc.syntax_id },
-	{ PIPE_WKSSVC,		&ndr_table_wkssvc.syntax_id },
-	{ PIPE_WINREG,		&ndr_table_winreg.syntax_id },
-	{ PIPE_SPOOLSS,		&syntax_spoolss },
-	{ PIPE_NETDFS,		&ndr_table_netdfs.syntax_id },
-	{ PIPE_ECHO,		&ndr_table_rpcecho.syntax_id },
-	{ PIPE_SHUTDOWN,	&ndr_table_initshutdown.syntax_id },
-	{ PIPE_SVCCTL,		&ndr_table_svcctl.syntax_id },
-	{ PIPE_EVENTLOG,	&ndr_table_eventlog.syntax_id },
-	{ PIPE_NTSVCS,		&ndr_table_ntsvcs.syntax_id },
-	{ PIPE_EPMAPPER,	&ndr_table_epmapper.syntax_id },
-	{ PIPE_DRSUAPI,		&ndr_table_drsuapi.syntax_id },
-	{ NULL, NULL }
-};
-
-/****************************************************************************
- Return the pipe name from the interface.
- ****************************************************************************/
-
-const char *cli_get_pipe_name_from_iface(TALLOC_CTX *mem_ctx,
-					 struct cli_state *cli,
-					 const struct ndr_syntax_id *interface)
-{
-	int i;
-	for (i = 0; pipe_names[i].client_pipe; i++) {
-		if (ndr_syntax_id_equal(pipe_names[i].abstr_syntax,
-					interface)) {
-			return &pipe_names[i].client_pipe[5];
-		}
-	}
-
-	/*
-	 * Here we should ask \\epmapper, but for now our code is only
-	 * interested in the known pipes mentioned in pipe_names[]
-	 */
-
-	return NULL;
-}
-
 /********************************************************************
  Map internal value to wire value.
  ********************************************************************/
@@ -135,34 +58,6 @@
 }
 
 /********************************************************************
- Pipe description for a DEBUG
- ********************************************************************/
-static char *rpccli_pipe_txt(TALLOC_CTX *mem_ctx, struct rpc_pipe_client *cli)
-{
-	char *result;
-
-	switch (cli->transport_type) {
-	case NCACN_NP:
-		result = talloc_asprintf(mem_ctx, "host %s, pipe %s, "
-					 "fnum 0x%x",
-					 cli->desthost,
-					 cli->trans.np.pipe_name,
-					 (unsigned int)(cli->trans.np.fnum));
-		break;
-	case NCACN_IP_TCP:
-	case NCACN_UNIX_STREAM:
-		result = talloc_asprintf(mem_ctx, "host %s, fd %d",
-					 cli->desthost, cli->trans.sock.fd);
-		break;
-	default:
-		result = talloc_asprintf(mem_ctx, "host %s", cli->desthost);
-		break;
-	}
-	SMB_ASSERT(result != NULL);
-	return result;
-}
-
-/********************************************************************
  Rpc pipe call id.
  ********************************************************************/
 
@@ -173,58 +68,6 @@
 }
 
 /*******************************************************************
- Read from a RPC named pipe
- ********************************************************************/
-static NTSTATUS rpc_read_np(struct cli_state *cli, const char *pipe_name,
-			    int fnum, char *buf, off_t offset, size_t size,
-			    ssize_t *pnum_read)
-{
-       ssize_t num_read;
-
-       num_read = cli_read(cli, fnum, buf, offset, size);
-
-       DEBUG(5,("rpc_read_np: num_read = %d, read offset: %u, to read: %u\n",
-		(int)num_read, (unsigned int)offset, (unsigned int)size));
-
-       /*
-	* A dos error of ERRDOS/ERRmoredata is not an error.
-	*/
-       if (cli_is_dos_error(cli)) {
-	       uint32 ecode;
-	       uint8 eclass;
-	       cli_dos_error(cli, &eclass, &ecode);
-	       if (eclass != ERRDOS && ecode != ERRmoredata) {
-		       DEBUG(0,("rpc_read: DOS Error %d/%u (%s) in cli_read "
-				"on fnum 0x%x\n", eclass, (unsigned int)ecode,
-				cli_errstr(cli), fnum));
-		       return dos_to_ntstatus(eclass, ecode);
-	       }
-       }
-
-       /*
-	* Likewise for NT_STATUS_BUFFER_TOO_SMALL
-	*/
-       if (cli_is_nt_error(cli)) {
-	       if (!NT_STATUS_EQUAL(cli_nt_error(cli),
-				    NT_STATUS_BUFFER_TOO_SMALL)) {
-		       DEBUG(0,("rpc_read: Error (%s) in cli_read on fnum "
-				"0x%x\n", nt_errstr(cli_nt_error(cli)), fnum));
-		       return cli_nt_error(cli);
-	       }
-       }
-
-       if (num_read == -1) {
-	       DEBUG(0,("rpc_read: Error - cli_read on fnum 0x%x returned "
-			"-1\n", fnum));
-	       return cli_get_nt_error(cli);
-       }
-
-       *pnum_read = num_read;
-       return NT_STATUS_OK;
-}
-
-
-/*******************************************************************
  Use SMBreadX to get rest of one fragment's worth of rpc data.
  Will expand the current_pdu struct to the correct size.
  ********************************************************************/
@@ -236,7 +79,7 @@
 {
 	size_t size = (size_t)cli->max_recv_frag;
 	uint32 stream_offset = 0;
-	ssize_t num_read = 0;
+	ssize_t num_read;
 	char *pdata;
 	ssize_t extra_data_size = ((ssize_t)*current_pdu_offset) + ((ssize_t)data_to_read) - (ssize_t)prs_data_size(current_pdu);
 
@@ -258,38 +101,51 @@
 	pdata = prs_data_p(current_pdu) + *current_pdu_offset;
 
 	do {
-		NTSTATUS status;
-
 		/* read data using SMBreadX */
 		if (size > (size_t)data_to_read) {
 			size = (size_t)data_to_read;
 		}
 
-		switch (cli->transport_type) {
-		case NCACN_NP:
-			status = rpc_read_np(cli->trans.np.cli,
-					     cli->trans.np.pipe_name,
-					     cli->trans.np.fnum, pdata,
-					     (off_t)stream_offset, size,
-					     &num_read);
-			break;
-		case NCACN_IP_TCP:
-		case NCACN_UNIX_STREAM:
-			status = NT_STATUS_OK;
-			num_read = sys_read(cli->trans.sock.fd, pdata, size);
-			if (num_read == -1) {
-				status = map_nt_error_from_unix(errno);
+		num_read = cli_read(cli->cli, cli->fnum, pdata,
+					 (off_t)stream_offset, size);
+
+		DEBUG(5,("rpc_read: num_read = %d, read offset: %u, to read: %u\n",
+			(int)num_read, (unsigned int)stream_offset, (unsigned int)data_to_read));
+
+        	/*
+	         * A dos error of ERRDOS/ERRmoredata is not an error.
+		 */
+		if (cli_is_dos_error(cli->cli)) {
+			uint32 ecode;
+			uint8 eclass;
+			cli_dos_error(cli->cli, &eclass, &ecode);
+			if (eclass != ERRDOS && ecode != ERRmoredata) {
+				DEBUG(0,("rpc_read: DOS Error %d/%u (%s) in cli_read on pipe %s\n",
+					eclass, (unsigned int)ecode,
+					cli_errstr(cli->cli),
+					cli->pipe_name ));
+				return dos_to_ntstatus(eclass, ecode);
 			}
-			if (num_read == 0) {
-				status = NT_STATUS_END_OF_FILE;
+		}
+
+        	/*
+	         * Likewise for NT_STATUS_BUFFER_TOO_SMALL
+		 */
+		if (cli_is_nt_error(cli->cli)) {
+			if (!NT_STATUS_EQUAL(cli_nt_error(cli->cli), NT_STATUS_BUFFER_TOO_SMALL)) {
+				DEBUG(0,("rpc_read: Error (%s) in cli_read on pipe %s\n",
+					nt_errstr(cli_nt_error(cli->cli)),
+					cli->pipe_name ));
+				return cli_nt_error(cli->cli);
 			}
-			break;
-		default:
-			DEBUG(0, ("unknown transport type %d\n",
-				  cli->transport_type));
-			return NT_STATUS_INTERNAL_ERROR;
 		}
 
+		if (num_read == -1) {
+			DEBUG(0,("rpc_read: Error - cli_read on pipe %s returned -1\n",
+				cli->pipe_name ));
+			return cli_get_nt_error(cli->cli);
+		}
+
 		data_to_read -= num_read;
 		stream_offset += num_read;
 		pdata += num_read;
@@ -359,7 +215,7 @@
 	RPC_HDR_AUTH auth_info;
 	uint32 save_offset = prs_offset(current_pdu);
 	uint32 auth_len = prhdr->auth_len;
-	NTLMSSP_STATE *ntlmssp_state = cli->auth->a_u.ntlmssp_state;
+	NTLMSSP_STATE *ntlmssp_state = cli->auth.a_u.ntlmssp_state;
 	unsigned char *data = NULL;
 	size_t data_len;
 	unsigned char *full_packet_data = NULL;
@@ -367,8 +223,7 @@
 	DATA_BLOB auth_blob;
 	NTSTATUS status;
 
-	if (cli->auth->auth_level == PIPE_AUTH_LEVEL_NONE
-	    || cli->auth->auth_level == PIPE_AUTH_LEVEL_CONNECT) {
+	if (cli->auth.auth_level == PIPE_AUTH_LEVEL_NONE || cli->auth.auth_level == PIPE_AUTH_LEVEL_CONNECT) {
 		return NT_STATUS_OK;
 	}
 
@@ -412,7 +267,7 @@
 	auth_blob.data = (unsigned char *)prs_data_p(current_pdu) + prs_offset(current_pdu);
 	auth_blob.length = auth_len;
 
-	switch (cli->auth->auth_level) {
+	switch (cli->auth.auth_level) {
 		case PIPE_AUTH_LEVEL_PRIVACY:
 			/* Data is encrypted. */
 			status = ntlmssp_unseal_packet(ntlmssp_state,
@@ -422,8 +277,11 @@
 							&auth_blob);
 			if (!NT_STATUS_IS_OK(status)) {
 				DEBUG(0,("cli_pipe_verify_ntlmssp: failed to unseal "
-					"packet from %s. Error was %s.\n",
-					rpccli_pipe_txt(debug_ctx(), cli),
+					"packet from remote machine %s on pipe %s "
+					"fnum 0x%x. Error was %s.\n",
+					cli->cli->desthost,
+					cli->pipe_name,
+					(unsigned int)cli->fnum,
 					nt_errstr(status) ));
 				return status;
 			}
@@ -437,15 +295,18 @@
 							&auth_blob);
 			if (!NT_STATUS_IS_OK(status)) {
 				DEBUG(0,("cli_pipe_verify_ntlmssp: check signing failed on "
-					"packet from %s. Error was %s.\n",
-					rpccli_pipe_txt(debug_ctx(), cli),
+					"packet from remote machine %s on pipe %s "
+					"fnum 0x%x. Error was %s.\n",
+					cli->cli->desthost,
+					cli->pipe_name,
+					(unsigned int)cli->fnum,
 					nt_errstr(status) ));
 				return status;
 			}
 			break;
 		default:
-			DEBUG(0, ("cli_pipe_verify_ntlmssp: unknown internal "
-				  "auth level %d\n", cli->auth->auth_level));
+			DEBUG(0,("cli_pipe_verify_ntlmssp: unknown internal auth level %d\n",
+				cli->auth.auth_level ));
 			return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
@@ -481,12 +342,10 @@
 	RPC_AUTH_SCHANNEL_CHK schannel_chk;
 	uint32 auth_len = prhdr->auth_len;
 	uint32 save_offset = prs_offset(current_pdu);
-	struct schannel_auth_struct *schannel_auth =
-		cli->auth->a_u.schannel_auth;
+	struct schannel_auth_struct *schannel_auth = cli->auth.a_u.schannel_auth;
 	uint32 data_len;
 
-	if (cli->auth->auth_level == PIPE_AUTH_LEVEL_NONE
-	    || cli->auth->auth_level == PIPE_AUTH_LEVEL_CONNECT) {
+	if (cli->auth.auth_level == PIPE_AUTH_LEVEL_NONE || cli->auth.auth_level == PIPE_AUTH_LEVEL_CONNECT) {
 		return NT_STATUS_OK;
 	}
 
@@ -514,7 +373,7 @@
 			(unsigned int)RPC_HEADER_LEN + RPC_HDR_RESP_LEN + data_len ));
 		return NT_STATUS_BUFFER_TOO_SMALL;
 	}
-
+                                                                                                                             
 	if(!smb_io_rpc_hdr_auth("hdr_auth", &auth_info, current_pdu, 0)) {
 		DEBUG(0,("cli_pipe_verify_schannel: failed to unmarshall RPC_HDR_AUTH.\n"));
 		return NT_STATUS_BUFFER_TOO_SMALL;
@@ -533,14 +392,17 @@
 	}
 
 	if (!schannel_decode(schannel_auth,
-			cli->auth->auth_level,
+			cli->auth.auth_level,
 			SENDER_IS_ACCEPTOR,
 			&schannel_chk,
 			prs_data_p(current_pdu)+RPC_HEADER_LEN+RPC_HDR_RESP_LEN,
 			data_len)) {
 		DEBUG(3,("cli_pipe_verify_schannel: failed to decode PDU "
-				"Connection to %s.\n",
-				rpccli_pipe_txt(debug_ctx(), cli)));
+				"Connection to remote machine %s "
+				"pipe %s fnum 0x%x.\n",
+				cli->cli->desthost,
+				cli->pipe_name,
+				(unsigned int)cli->fnum ));
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
@@ -594,13 +456,14 @@
 	 * Now we have a complete RPC request PDU fragment, try and verify any auth data.
 	 */
 
-	switch(cli->auth->auth_type) {
+	switch(cli->auth.auth_type) {
 		case PIPE_AUTH_TYPE_NONE:
 			if (prhdr->auth_len) {
-				DEBUG(3, ("cli_pipe_validate_rpc_response: "
-					  "Connection to %s - got non-zero "
-					  "auth len %u.\n",
-					rpccli_pipe_txt(debug_ctx(), cli),
+				DEBUG(3, ("cli_pipe_validate_rpc_response: Connection to remote machine %s "
+					"pipe %s fnum 0x%x - got non-zero auth len %u.\n",
+					cli->cli->desthost,
+					cli->pipe_name,
+					(unsigned int)cli->fnum,
 					(unsigned int)prhdr->auth_len ));
 				return NT_STATUS_INVALID_PARAMETER;
 			}
@@ -624,10 +487,12 @@
 		case PIPE_AUTH_TYPE_KRB5:
 		case PIPE_AUTH_TYPE_SPNEGO_KRB5:
 		default:
-			DEBUG(3, ("cli_pipe_validate_rpc_response: Connection "
-				  "to %s - unknown internal auth type %u.\n",
-				  rpccli_pipe_txt(debug_ctx(), cli),
-				  cli->auth->auth_type ));
+			DEBUG(3, ("cli_pipe_validate_rpc_response: Connection to remote machine %s "
+				"pipe %s fnum %x - unknown internal auth type %u.\n",
+				cli->cli->desthost,
+				cli->pipe_name,
+				(unsigned int)cli->fnum,
+				cli->auth.auth_type ));
 			return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
@@ -728,9 +593,11 @@
 		}
 
 		case RPC_BINDNACK:
-			DEBUG(1, ("cli_pipe_validate_current_pdu: Bind NACK "
-				  "received from %s!\n",
-				  rpccli_pipe_txt(debug_ctx(), cli)));
+			DEBUG(1, ("cli_pipe_validate_current_pdu: Bind NACK received from remote machine %s "
+				"pipe %s fnum 0x%x!\n",
+				cli->cli->desthost,
+				cli->pipe_name,
+				(unsigned int)cli->fnum));
 			/* Use this for now... */
 			return NT_STATUS_NETWORK_ACCESS_DENIED;
 
@@ -749,29 +616,37 @@
 				return NT_STATUS_BUFFER_TOO_SMALL;
 			}
 
-			DEBUG(1, ("cli_pipe_validate_current_pdu: RPC fault "
-				  "code %s received from %s!\n",
+			DEBUG(1, ("cli_pipe_validate_current_pdu: RPC fault code %s received from remote machine %s "
+				"pipe %s fnum 0x%x!\n",
 				dcerpc_errstr(NT_STATUS_V(fault_resp.status)),
-				rpccli_pipe_txt(debug_ctx(), cli)));
+				cli->cli->desthost,
+				cli->pipe_name,
+				(unsigned int)cli->fnum));
 			if (NT_STATUS_IS_OK(fault_resp.status)) {
 				return NT_STATUS_UNSUCCESSFUL;
 			} else {
 				return fault_resp.status;
 			}
+			
 		}
 
 		default:
 			DEBUG(0, ("cli_pipe_validate_current_pdu: unknown packet type %u received "
-				"from %s!\n",
+				"from remote machine %s pipe %s fnum 0x%x!\n",
 				(unsigned int)prhdr->pkt_type,
-				rpccli_pipe_txt(debug_ctx(), cli)));
+				cli->cli->desthost,
+				cli->pipe_name,
+				(unsigned int)cli->fnum));
 			return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
 	if (prhdr->pkt_type != expected_pkt_type) {
-		DEBUG(3, ("cli_pipe_validate_current_pdu: Connection to %s "
-			  "got an unexpected RPC packet type - %u, not %u\n",
-			rpccli_pipe_txt(debug_ctx(), cli),
+		DEBUG(3, ("cli_pipe_validate_current_pdu: Connection to remote machine %s "
+			"pipe %s fnum %x got an unexpected RPC packet "
+			"type - %u, not %u\n",
+			cli->cli->desthost,
+			cli->pipe_name,
+			(unsigned int)cli->fnum,
 			prhdr->pkt_type,
 			expected_pkt_type));
 		return NT_STATUS_INVALID_INFO_CLASS;
@@ -867,6 +742,7 @@
 	NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
 	char *rparam = NULL;
 	uint32 rparam_len = 0;
+	uint16 setup[2];
 	char *pdata = prs_data_p(data);
 	uint32 data_len = prs_offset(data);
 	char *prdata = NULL;
@@ -874,7 +750,7 @@
 	uint32 max_data = cli->max_xmit_frag ? cli->max_xmit_frag : RPC_MAX_PDU_FRAG_LEN;
 	uint32 current_rbuf_offset = 0;
 	prs_struct current_pdu;
-
+	
 #ifdef DEVELOPER
 	/* Ensure we're not sending too much. */
 	SMB_ASSERT(data_len <= max_data);
@@ -883,82 +759,50 @@
 	/* Set up the current pdu parse struct. */
 	prs_init_empty(&current_pdu, prs_get_mem_context(rbuf), UNMARSHALL);
 
-	DEBUG(5,("rpc_api_pipe: %s\n", rpccli_pipe_txt(debug_ctx(), cli)));
+	/* Create setup parameters - must be in native byte order. */
+	setup[0] = TRANSACT_DCERPCCMD; 
+	setup[1] = cli->fnum; /* Pipe file handle. */
 
-	switch (cli->transport_type) {
-	case NCACN_NP: {
-		uint16 setup[2];
-		/* Create setup parameters - must be in native byte order. */
-		setup[0] = TRANSACT_DCERPCCMD;
-		setup[1] = cli->trans.np.fnum; /* Pipe file handle. */
+	DEBUG(5,("rpc_api_pipe: Remote machine %s pipe %s fnum 0x%x\n",
+		cli->cli->desthost,
+		cli->pipe_name,
+		(unsigned int)cli->fnum ));
 
-		/*
-		 * Send the last (or only) fragment of an RPC request. For
-		 * small amounts of data (about 1024 bytes or so) the RPC
-		 * request and response appears in a SMBtrans request and
-		 * response.
-		 */
+	/*
+	 * Send the last (or only) fragment of an RPC request. For small
+	 * amounts of data (about 1024 bytes or so) the RPC request and response
+	 * appears in a SMBtrans request and response.
+	 */
 
-		if (!cli_api_pipe(cli->trans.np.cli, "\\PIPE\\",
-				  setup, 2, 0,     /* Setup, length, max */
-				  NULL, 0, 0,      /* Params, length, max */
-				  pdata, data_len, max_data, /* data, length,
-							      * max */
-				  &rparam, &rparam_len, /* return params,
-							 * len */
-				  &prdata, &rdata_len)) /* return data, len */
-		{
-			DEBUG(0, ("rpc_api_pipe: %s returned critical error. "
-				  "Error was %s\n",
-				  rpccli_pipe_txt(debug_ctx(), cli),
-				  cli_errstr(cli->trans.np.cli)));
-			ret = cli_get_nt_error(cli->trans.np.cli);
-			SAFE_FREE(rparam);
-			SAFE_FREE(prdata);
-			goto err;
-		}
-		break;
-	}
-	case NCACN_IP_TCP:
-	case NCACN_UNIX_STREAM:
+	if (!cli_api_pipe(cli->cli, "\\PIPE\\",
+	          setup, 2, 0,                     /* Setup, length, max */
+	          NULL, 0, 0,                      /* Params, length, max */
+	          pdata, data_len, max_data,   	   /* data, length, max */
+	          &rparam, &rparam_len,            /* return params, len */
+	          &prdata, &rdata_len))            /* return data, len */
 	{
-		ssize_t nwritten, nread;
-		nwritten = write_data(cli->trans.sock.fd, pdata, data_len);
-		if (nwritten == -1) {
-			ret = map_nt_error_from_unix(errno);
-			DEBUG(0, ("rpc_api_pipe: write_data returned %s\n",
-				  strerror(errno)));
-			goto err;
-		}
-		rparam = NULL;
-		prdata = SMB_MALLOC_ARRAY(char, 1);
-		if (prdata == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
-		nread = sys_read(cli->trans.sock.fd, prdata, 1);
-		if (nread == 0) {
-			SAFE_FREE(prdata);
-		}
-		if (nread == -1) {
-			ret = NT_STATUS_END_OF_FILE;
-			goto err;
-		}
-		rdata_len = nread;
-		break;
+		DEBUG(0, ("rpc_api_pipe: Remote machine %s pipe %s fnum 0x%x "
+			"returned critical error. Error was %s\n",
+			cli->cli->desthost,
+			cli->pipe_name,
+			(unsigned int)cli->fnum,
+			cli_errstr(cli->cli)));
+		ret = cli_get_nt_error(cli->cli);
+		SAFE_FREE(rparam);
+		SAFE_FREE(prdata);
+		goto err;
 	}
-	default:
-		DEBUG(0, ("unknown transport type %d\n",
-			  cli->transport_type));
-		return NT_STATUS_INTERNAL_ERROR;
-	}
 
 	/* Throw away returned params - we know we won't use them. */
 
 	SAFE_FREE(rparam);
 
 	if (prdata == NULL) {
-		DEBUG(3,("rpc_api_pipe: %s failed to return data.\n",
-			 rpccli_pipe_txt(debug_ctx(), cli)));
+		DEBUG(3,("rpc_api_pipe: Remote machine %s pipe %s "
+			"fnum 0x%x failed to return data.\n",
+			cli->cli->desthost,
+			cli->pipe_name,
+			(unsigned int)cli->fnum));
 		/* Yes - some calls can truely return no data... */
 		prs_mem_free(&current_pdu);
 		return NT_STATUS_OK;
@@ -1004,9 +848,11 @@
 		if ((rhdr.flags & RPC_FLG_FIRST)) {
 			if (rhdr.pack_type[0] == 0) {
 				/* Set the data type correctly for big-endian data on the first packet. */
-				DEBUG(10,("rpc_api_pipe: On %s "
+				DEBUG(10,("rpc_api_pipe: On machine %s pipe %s fnum 0x%x "
 					"PDU data format is big-endian.\n",
-					rpccli_pipe_txt(debug_ctx(), cli)));
+					cli->cli->desthost,
+					cli->pipe_name,
+					(unsigned int)cli->fnum));
 
 				prs_set_endian_data(rbuf, RPC_BIG_ENDIAN);
 			} else {
@@ -1040,8 +886,10 @@
 		}
 	}
 
-	DEBUG(10,("rpc_api_pipe: %s returned %u bytes.\n",
-		rpccli_pipe_txt(debug_ctx(), cli),
+	DEBUG(10,("rpc_api_pipe: Remote machine %s pipe %s fnum 0x%x returned %u bytes.\n",
+		cli->cli->desthost,
+		cli->pipe_name,
+		(unsigned int)cli->fnum,
 		(unsigned int)prs_data_size(rbuf) ));
 
 	prs_mem_free(&current_pdu);
@@ -1065,7 +913,7 @@
 {
 #ifdef HAVE_KRB5
 	int ret;
-	struct kerberos_auth_struct *a = cli->auth->a_u.kerberos_auth;
+	struct kerberos_auth_struct *a = cli->auth.a_u.kerberos_auth;
 	DATA_BLOB tkt = data_blob_null;
 	DATA_BLOB tkt_wrapped = data_blob_null;
 
@@ -1131,7 +979,7 @@
 	init_rpc_hdr_auth(pauth_out, RPC_SPNEGO_AUTH_TYPE, (int)auth_level, 0, 1);
 
 	DEBUG(5, ("create_spnego_ntlmssp_auth_rpc_bind_req: Processing NTLMSSP Negotiate\n"));
-	nt_status = ntlmssp_update(cli->auth->a_u.ntlmssp_state,
+	nt_status = ntlmssp_update(cli->auth.a_u.ntlmssp_state,
 					null_blob,
 					&request);
 
@@ -1177,7 +1025,7 @@
 	init_rpc_hdr_auth(pauth_out, RPC_NTLMSSP_AUTH_TYPE, (int)auth_level, 0, 1);
 
 	DEBUG(5, ("create_ntlmssp_auth_rpc_bind_req: Processing NTLMSSP Negotiate\n"));
-	nt_status = ntlmssp_update(cli->auth->a_u.ntlmssp_state,
+	nt_status = ntlmssp_update(cli->auth.a_u.ntlmssp_state,
 					null_blob,
 					&request);
 
@@ -1217,15 +1065,11 @@
 
 	/* Use lp_workgroup() if domain not specified */
 
-	if (!cli->auth->domain || !cli->auth->domain[0]) {
-		cli->auth->domain = talloc_strdup(cli, lp_workgroup());
-		if (cli->auth->domain == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
+	if (!cli->domain || !cli->domain[0]) {
+		cli->domain = lp_workgroup();
 	}
 
-	init_rpc_auth_schannel_neg(&schannel_neg, cli->auth->domain,
-				   global_myname());
+	init_rpc_auth_schannel_neg(&schannel_neg, cli->domain, global_myname());
 
 	/*
 	 * Now marshall the data into the auth parse_struct.
@@ -1248,8 +1092,8 @@
 static NTSTATUS create_bind_or_alt_ctx_internal(enum RPC_PKT_TYPE pkt_type,
 						prs_struct *rpc_out, 
 						uint32 rpc_call_id,
-						const RPC_IFACE *abstract,
-						const RPC_IFACE *transfer,
+						RPC_IFACE *abstract,
+						RPC_IFACE *transfer,
 						RPC_HDR_AUTH *phdr_auth,
 						prs_struct *pauth_info)
 {
@@ -1330,8 +1174,7 @@
 static NTSTATUS create_rpc_bind_req(struct rpc_pipe_client *cli,
 				prs_struct *rpc_out, 
 				uint32 rpc_call_id,
-				const RPC_IFACE *abstract,
-				const RPC_IFACE *transfer,
+				RPC_IFACE *abstract, RPC_IFACE *transfer,
 				enum pipe_auth_type auth_type,
 				enum pipe_auth_level auth_level)
 {
@@ -1410,15 +1253,14 @@
 	DATA_BLOB auth_blob = data_blob_null;
 	uint16 data_and_pad_len = prs_offset(outgoing_pdu) - RPC_HEADER_LEN - RPC_HDR_RESP_LEN;
 
-	if (!cli->auth->a_u.ntlmssp_state) {
+	if (!cli->auth.a_u.ntlmssp_state) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
 	/* Init and marshall the auth header. */
 	init_rpc_hdr_auth(&auth_info,
-			map_pipe_auth_type_to_rpc_auth_type(
-				cli->auth->auth_type),
-			cli->auth->auth_level,
+			map_pipe_auth_type_to_rpc_auth_type(cli->auth.auth_type),
+			cli->auth.auth_level,
 			ss_padding_len,
 			1 /* context id. */);
 
@@ -1428,10 +1270,10 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	switch (cli->auth->auth_level) {
+	switch (cli->auth.auth_level) {
 		case PIPE_AUTH_LEVEL_PRIVACY:
 			/* Data portion is encrypted. */
-			status = ntlmssp_seal_packet(cli->auth->a_u.ntlmssp_state,
+			status = ntlmssp_seal_packet(cli->auth.a_u.ntlmssp_state,
 					(unsigned char *)prs_data_p(outgoing_pdu) + RPC_HEADER_LEN + RPC_HDR_RESP_LEN,
 					data_and_pad_len,
 					(unsigned char *)prs_data_p(outgoing_pdu),
@@ -1445,7 +1287,7 @@
 
 		case PIPE_AUTH_LEVEL_INTEGRITY:
 			/* Data is signed. */
-			status = ntlmssp_sign_packet(cli->auth->a_u.ntlmssp_state,
+			status = ntlmssp_sign_packet(cli->auth.a_u.ntlmssp_state,
 					(unsigned char *)prs_data_p(outgoing_pdu) + RPC_HEADER_LEN + RPC_HDR_RESP_LEN,
 					data_and_pad_len,
 					(unsigned char *)prs_data_p(outgoing_pdu),
@@ -1465,14 +1307,14 @@
 	}
 
 	/* Finally marshall the blob. */
-
+	                                                                                               
 	if (!prs_copy_data_in(outgoing_pdu, (const char *)auth_blob.data, NTLMSSP_SIG_SIZE)) {
 		DEBUG(0,("add_ntlmssp_auth_footer: failed to add %u bytes auth blob.\n",
 			(unsigned int)NTLMSSP_SIG_SIZE));
 		data_blob_free(&auth_blob);
 		return NT_STATUS_NO_MEMORY;
 	}
-
+                                                                                                                                
 	data_blob_free(&auth_blob);
 	return NT_STATUS_OK;
 }
@@ -1488,7 +1330,7 @@
 {
 	RPC_HDR_AUTH auth_info;
 	RPC_AUTH_SCHANNEL_CHK verf;
-	struct schannel_auth_struct *sas = cli->auth->a_u.schannel_auth;
+	struct schannel_auth_struct *sas = cli->auth.a_u.schannel_auth;
 	char *data_p = prs_data_p(outgoing_pdu) + RPC_HEADER_LEN + RPC_HDR_RESP_LEN;
 	size_t data_and_pad_len = prs_offset(outgoing_pdu) - RPC_HEADER_LEN - RPC_HDR_RESP_LEN;
 
@@ -1498,8 +1340,8 @@
 
 	/* Init and marshall the auth header. */
 	init_rpc_hdr_auth(&auth_info,
-			map_pipe_auth_type_to_rpc_auth_type(cli->auth->auth_type),
-			cli->auth->auth_level,
+			map_pipe_auth_type_to_rpc_auth_type(cli->auth.auth_type),
+			cli->auth.auth_level,
 			ss_padding_len,
 			1 /* context id. */);
 
@@ -1508,14 +1350,14 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	switch (cli->auth->auth_level) {
+	switch (cli->auth.auth_level) {
 		case PIPE_AUTH_LEVEL_PRIVACY:
 		case PIPE_AUTH_LEVEL_INTEGRITY:
 			DEBUG(10,("add_schannel_auth_footer: SCHANNEL seq_num=%d\n",
 				sas->seq_num));
 
 			schannel_encode(sas,
-					cli->auth->auth_level,
+					cli->auth.auth_level,
 					SENDER_IS_INITIATOR,
 					&verf,
 					data_p,
@@ -1537,7 +1379,7 @@
 			&verf,
 			outgoing_pdu,
 			0);
-
+                                                                                               
 	return NT_STATUS_OK;
 }
 
@@ -1554,7 +1396,7 @@
 {
 	uint32 data_space, data_len;
 
-	switch (cli->auth->auth_level) {
+	switch (cli->auth.auth_level) {
 		case PIPE_AUTH_LEVEL_NONE:
 		case PIPE_AUTH_LEVEL_CONNECT:
 			data_space = cli->max_xmit_frag - RPC_HEADER_LEN - RPC_HDR_REQ_LEN;
@@ -1567,7 +1409,7 @@
 		case PIPE_AUTH_LEVEL_INTEGRITY:
 		case PIPE_AUTH_LEVEL_PRIVACY:
 			/* Treat the same for all authenticated rpc requests. */
-			switch(cli->auth->auth_type) {
+			switch(cli->auth.auth_type) {
 				case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
 				case PIPE_AUTH_TYPE_NTLMSSP:
 					*p_auth_len = NTLMSSP_SIG_SIZE;
@@ -1681,7 +1523,7 @@
 
 		/* Generate any auth sign/seal and add the auth footer. */
 		if (auth_len) {
-			switch (cli->auth->auth_type) {
+			switch (cli->auth.auth_type) {
 				case PIPE_AUTH_TYPE_NONE:
 					break;
 				case PIPE_AUTH_TYPE_NTLMSSP:
@@ -1711,13 +1553,12 @@
 			ret = rpc_api_pipe(cli, &outgoing_pdu, out_data, RPC_RESPONSE);
 			prs_mem_free(&outgoing_pdu);
 
-			if ((DEBUGLEVEL >= 50)
-			    && (cli->transport_type == NCACN_NP)) {
+			if (DEBUGLEVEL >= 50) {
 				char *dump_name = NULL;
 				/* Also capture received data */
 				if (asprintf(&dump_name, "%s/reply_%s_%d",
-					     get_dyn_LOGFILEBASE(),
-					     cli->trans.np.pipe_name, op_num) > 0) {
+						get_dyn_LOGFILEBASE(), cli->pipe_name,
+						op_num) > 0) {
 					prs_dump(dump_name, op_num, out_data);
 					SAFE_FREE(dump_name);
 				}
@@ -1726,40 +1567,14 @@
 			return ret;
 		} else {
 			/* More packets to come - write and continue. */
-			ssize_t num_written;
-
-			switch (cli->transport_type) {
-			case NCACN_NP:
-				num_written = cli_write(cli->trans.np.cli,
-							cli->trans.np.fnum,
-							8, /* 8 means message mode. */
+			ssize_t num_written = cli_write(cli->cli, cli->fnum, 8, /* 8 means message mode. */
 							prs_data_p(&outgoing_pdu),
 							(off_t)0,
 							(size_t)hdr.frag_len);
 
-				if (num_written != hdr.frag_len) {
-					prs_mem_free(&outgoing_pdu);
-					return cli_get_nt_error(
-						cli->trans.np.cli);
-				}
-				break;
-			case NCACN_IP_TCP:
-			case NCACN_UNIX_STREAM:
-				num_written = write_data(
-					cli->trans.sock.fd,
-					prs_data_p(&outgoing_pdu),
-					(size_t)hdr.frag_len);
-				if (num_written != hdr.frag_len) {
-					NTSTATUS status;
-					status = map_nt_error_from_unix(errno);
-					prs_mem_free(&outgoing_pdu);
-					return status;
-				}
-				break;
-			default:
-				DEBUG(0, ("unknown transport type %d\n",
-					  cli->transport_type));
-				return NT_STATUS_INTERNAL_ERROR;
+			if (num_written != hdr.frag_len) {
+				prs_mem_free(&outgoing_pdu);
+				return cli_get_nt_error(cli->cli);
 			}
 		}
 
@@ -1824,14 +1639,58 @@
  Check the rpc bind acknowledge response.
 ****************************************************************************/
 
-static bool check_bind_response(RPC_HDR_BA *hdr_ba, const RPC_IFACE *transfer)
+static bool valid_pipe_name(const int pipe_idx, RPC_IFACE *abstract, RPC_IFACE *transfer)
 {
+	if ( pipe_idx >= PI_MAX_PIPES ) {
+		DEBUG(0,("valid_pipe_name: Programmer error!  Invalid pipe index [%d]\n",
+			pipe_idx));
+		return False;
+	}
+
+	DEBUG(5,("Bind Abstract Syntax: "));	
+	dump_data(5, (uint8 *)&pipe_names[pipe_idx].abstr_syntax, 
+	          sizeof(pipe_names[pipe_idx].abstr_syntax));
+	DEBUG(5,("Bind Transfer Syntax: "));
+	dump_data(5, (uint8 *)&pipe_names[pipe_idx].trans_syntax,
+	          sizeof(pipe_names[pipe_idx].trans_syntax));
+
+	/* copy the required syntaxes out so we can do the right bind */
+	
+	*transfer = pipe_names[pipe_idx].trans_syntax;
+	*abstract = pipe_names[pipe_idx].abstr_syntax;
+
+	return True;
+}
+
+/****************************************************************************
+ Check the rpc bind acknowledge response.
+****************************************************************************/
+
+static bool check_bind_response(RPC_HDR_BA *hdr_ba, const int pipe_idx, RPC_IFACE *transfer)
+{
 	if ( hdr_ba->addr.len == 0) {
 		DEBUG(4,("Ignoring length check -- ASU bug (server didn't fill in the pipe name correctly)"));
 	}
 
+# if 0	/* JERRY -- apparently ASU forgets to fill in the server pipe name sometimes */
+	if ( !strequal(hdr_ba->addr.str, pipe_names[pipe_idx].client_pipe) &&
+	     !strequal(hdr_ba->addr.str, pipe_names[pipe_idx].server_pipe) )
+	{
+		DEBUG(4,("bind_rpc_pipe: pipe_name %s != expected pipe %s.  oh well!\n",
+		         pipe_names[i].server_pipe ,hdr_ba->addr.str));
+		return False;
+	}
+	
+	DEBUG(5,("bind_rpc_pipe: server pipe_name found: %s\n", pipe_names[i].server_pipe ));
+
+	if (pipe_names[pipe_idx].server_pipe == NULL) {
+		DEBUG(2,("bind_rpc_pipe: pipe name %s unsupported\n", hdr_ba->addr.str));
+		return False;
+	}
+#endif 	/* JERRY */
+
 	/* check the transfer syntax */
-	if ((hdr_ba->transfer.if_version != transfer->if_version) ||
+	if ((hdr_ba->transfer.version != transfer->version) ||
 	     (memcmp(&hdr_ba->transfer.uuid, &transfer->uuid, sizeof(transfer->uuid)) !=0)) {
 		DEBUG(2,("bind_rpc_pipe: transfer syntax differs\n"));
 		return False;
@@ -1868,7 +1727,7 @@
 	init_rpc_hdr(&hdr, RPC_AUTH3, RPC_FLG_FIRST|RPC_FLG_LAST, rpc_call_id,
 		     RPC_HEADER_LEN + 4 /* pad */ + RPC_HDR_AUTH_LEN + pauth_blob->length,
 		     pauth_blob->length );
-
+	
 	/* Marshall it. */
 	if(!smb_io_rpc_hdr("hdr", &hdr, rpc_out, 0)) {
 		DEBUG(0,("create_rpc_bind_auth3: failed to marshall RPC_HDR.\n"));
@@ -1943,11 +1802,11 @@
 
 	server_response = data_blob(NULL, phdr->auth_len);
 	prs_copy_data_out((char *)server_response.data, rbuf, phdr->auth_len);
-
-	nt_status = ntlmssp_update(cli->auth->a_u.ntlmssp_state,
+	
+	nt_status = ntlmssp_update(cli->auth.a_u.ntlmssp_state,
 				   server_response,
 				   &client_reply);
-
+	
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(0,("rpc_finish_auth3_bind: NTLMSSP update using server blob failed.\n"));
 		data_blob_free(&server_response);
@@ -1967,41 +1826,23 @@
 		return nt_status;
 	}
 
-	switch (cli->transport_type) {
-	case NCACN_NP:
-		/* 8 here is named pipe message mode. */
-		ret = cli_write(cli->trans.np.cli, cli->trans.np.fnum,
-				0x8, prs_data_p(&rpc_out), 0,
+	/* 8 here is named pipe message mode. */
+	ret = cli_write(cli->cli, cli->fnum, 0x8, prs_data_p(&rpc_out), 0,
 				(size_t)prs_offset(&rpc_out));
-		break;
 
-		if (ret != (ssize_t)prs_offset(&rpc_out)) {
-			nt_status = cli_get_nt_error(cli->trans.np.cli);
-		}
-	case NCACN_IP_TCP:
-	case NCACN_UNIX_STREAM:
-		ret = write_data(cli->trans.sock.fd, prs_data_p(&rpc_out),
-				 (size_t)prs_offset(&rpc_out));
-		if (ret != (ssize_t)prs_offset(&rpc_out)) {
-			nt_status = map_nt_error_from_unix(errno);
-		}
-		break;
-	default:
-		DEBUG(0, ("unknown transport type %d\n", cli->transport_type));
-		return NT_STATUS_INTERNAL_ERROR;
-	}
-
 	if (ret != (ssize_t)prs_offset(&rpc_out)) {
-		DEBUG(0,("rpc_send_auth_auth3: write failed. Return was %s\n",
-			 nt_errstr(nt_status)));
+		DEBUG(0,("rpc_send_auth_auth3: cli_write failed. Return was %d\n", (int)ret));
 		prs_mem_free(&rpc_out);
 		data_blob_free(&client_reply);
 		data_blob_free(&server_response);
-		return nt_status;
+		return cli_get_nt_error(cli->cli);
 	}
 
-	DEBUG(5,("rpc_send_auth_auth3: %s sent auth3 response ok.\n",
-		 rpccli_pipe_txt(debug_ctx(), cli)));
+	DEBUG(5,("rpc_send_auth_auth3: Remote machine %s pipe %s "
+		"fnum 0x%x sent auth3 response ok.\n",
+		cli->cli->desthost,
+		cli->pipe_name,
+		(unsigned int)cli->fnum));
 
 	prs_mem_free(&rpc_out);
 	data_blob_free(&client_reply);
@@ -2015,8 +1856,8 @@
  ********************************************************************/
 
 static NTSTATUS create_rpc_alter_context(uint32 rpc_call_id,
-					const RPC_IFACE *abstract,
-					const RPC_IFACE *transfer,
+					RPC_IFACE *abstract,
+					RPC_IFACE *transfer,
 					enum pipe_auth_level auth_level,
 					const DATA_BLOB *pauth_blob, /* spnego auth blob already created. */
 					prs_struct *rpc_out)
@@ -2059,8 +1900,8 @@
                                 RPC_HDR *phdr,
                                 prs_struct *rbuf,
                                 uint32 rpc_call_id,
-				const RPC_IFACE *abstract,
-				const RPC_IFACE *transfer,
+				RPC_IFACE *abstract,
+				RPC_IFACE *transfer,
                                 enum pipe_auth_type auth_type,
                                 enum pipe_auth_level auth_level)
 {
@@ -2087,7 +1928,7 @@
 
 	server_spnego_response = data_blob(NULL, phdr->auth_len);
 	prs_copy_data_out((char *)server_spnego_response.data, rbuf, phdr->auth_len);
-
+	
 	/* The server might give us back two challenges - tmp_blob is for the second. */
 	if (!spnego_parse_challenge(server_spnego_response, &server_ntlm_response, &tmp_blob)) {
 		data_blob_free(&server_spnego_response);
@@ -2100,10 +1941,10 @@
 	data_blob_free(&server_spnego_response);
 	data_blob_free(&tmp_blob);
 
-	nt_status = ntlmssp_update(cli->auth->a_u.ntlmssp_state,
+	nt_status = ntlmssp_update(cli->auth.a_u.ntlmssp_state,
 				   server_ntlm_response,
 				   &client_reply);
-
+	
 	/* Finished with the server_ntlm response */
 	data_blob_free(&server_ntlm_response);
 
@@ -2138,7 +1979,7 @@
 
 	/* Initialize the returning data struct. */
 	prs_mem_free(rbuf);
-	prs_init_empty(rbuf, talloc_tos(), UNMARSHALL);
+	prs_init_empty(rbuf, cli->mem_ctx, UNMARSHALL);
 
 	nt_status = rpc_api_pipe(cli, &rpc_out, rbuf, RPC_ALTCONTRESP);
 	if (!NT_STATUS_IS_OK(nt_status)) {
@@ -2176,7 +2017,10 @@
 	data_blob_free(&tmp_blob);
 
 	DEBUG(5,("rpc_finish_spnego_ntlmssp_bind: alter context request to "
-		 "%s.\n", rpccli_pipe_txt(debug_ctx(), cli)));
+		"remote machine %s pipe %s fnum 0x%x.\n",
+		cli->cli->desthost,
+		cli->pipe_name,
+		(unsigned int)cli->fnum));
 
 	return NT_STATUS_OK;
 }
@@ -2185,33 +2029,38 @@
  Do an rpc bind.
 ****************************************************************************/
 
-NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
-		       struct cli_pipe_auth_data *auth)
+static NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli,
+			enum pipe_auth_type auth_type,
+			enum pipe_auth_level auth_level)
 {
 	RPC_HDR hdr;
 	RPC_HDR_BA hdr_ba;
+	RPC_IFACE abstract;
+	RPC_IFACE transfer;
 	prs_struct rpc_out;
 	prs_struct rbuf;
 	uint32 rpc_call_id;
 	NTSTATUS status;
 
-	DEBUG(5,("Bind RPC Pipe: %s auth_type %u, auth_level %u\n",
-		rpccli_pipe_txt(debug_ctx(), cli),
-		(unsigned int)auth->auth_type,
-		(unsigned int)auth->auth_level ));
+	DEBUG(5,("Bind RPC Pipe[%x]: %s auth_type %u, auth_level %u\n",
+		(unsigned int)cli->fnum,
+		cli->pipe_name,
+		(unsigned int)auth_type,
+		(unsigned int)auth_level ));
 
-	cli->auth = talloc_move(cli, &auth);
+	if (!valid_pipe_name(cli->pipe_idx, &abstract, &transfer)) {
+		return NT_STATUS_INVALID_PARAMETER;
+	}
 
-	prs_init_empty(&rpc_out, talloc_tos(), MARSHALL);
+	prs_init_empty(&rpc_out, cli->mem_ctx, MARSHALL);
 
 	rpc_call_id = get_rpc_call_id();
 
 	/* Marshall the outgoing data. */
 	status = create_rpc_bind_req(cli, &rpc_out, rpc_call_id,
-				&cli->abstract_syntax,
-				&cli->transfer_syntax,
-				cli->auth->auth_type,
-				cli->auth->auth_level);
+				&abstract, &transfer,
+				auth_type,
+				auth_level);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		prs_mem_free(&rpc_out);
@@ -2219,7 +2068,7 @@
 	}
 
 	/* Initialize the incoming data struct. */
-	prs_init_empty(&rbuf, talloc_tos(), UNMARSHALL);
+	prs_init_empty(&rbuf, cli->mem_ctx, UNMARSHALL);
 
 	/* send data on \PIPE\.  receive a response */
 	status = rpc_api_pipe(cli, &rpc_out, &rbuf, RPC_BINDACK);
@@ -2230,8 +2079,11 @@
 
 	prs_mem_free(&rpc_out);
 
-	DEBUG(3,("rpc_pipe_bind: %s bind request returned ok.\n",
-		 rpccli_pipe_txt(debug_ctx(), cli)));
+	DEBUG(3,("rpc_pipe_bind: Remote machine %s pipe %s "
+		"fnum 0x%x bind request returned ok.\n",
+		cli->cli->desthost,
+		cli->pipe_name,
+		(unsigned int)cli->fnum));
 
 	/* Unmarshall the RPC header */
 	if(!smb_io_rpc_hdr("hdr"   , &hdr, &rbuf, 0)) {
@@ -2246,7 +2098,7 @@
 		return NT_STATUS_BUFFER_TOO_SMALL;
 	}
 
-	if(!check_bind_response(&hdr_ba, &cli->transfer_syntax)) {
+	if(!check_bind_response(&hdr_ba, cli->pipe_idx, &transfer)) {
 		DEBUG(2,("rpc_pipe_bind: check_bind_response failed.\n"));
 		prs_mem_free(&rbuf);
 		return NT_STATUS_BUFFER_TOO_SMALL;
@@ -2256,7 +2108,7 @@
 	cli->max_recv_frag = hdr_ba.bba.max_rsize;
 
 	/* For authenticated binds we may need to do 3 or 4 leg binds. */
-	switch(cli->auth->auth_type) {
+	switch(auth_type) {
 
 		case PIPE_AUTH_TYPE_NONE:
 		case PIPE_AUTH_TYPE_SCHANNEL:
@@ -2265,10 +2117,8 @@
 
 		case PIPE_AUTH_TYPE_NTLMSSP:
 			/* Need to send AUTH3 packet - no reply. */
-			status = rpc_finish_auth3_bind(
-				cli, &hdr, &rbuf, rpc_call_id,
-				cli->auth->auth_type,
-				cli->auth->auth_level);
+			status = rpc_finish_auth3_bind(cli, &hdr, &rbuf, rpc_call_id,
+						auth_type, auth_level);
 			if (!NT_STATUS_IS_OK(status)) {
 				prs_mem_free(&rbuf);
 				return status;
@@ -2277,10 +2127,9 @@
 
 		case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
 			/* Need to send alter context request and reply. */
-			status = rpc_finish_spnego_ntlmssp_bind(
-				cli, &hdr, &rbuf, rpc_call_id,
-				&cli->abstract_syntax, &cli->transfer_syntax,
-				cli->auth->auth_type, cli->auth->auth_level);
+			status = rpc_finish_spnego_ntlmssp_bind(cli, &hdr, &rbuf, rpc_call_id,
+						&abstract, &transfer,
+						auth_type, auth_level);
 			if (!NT_STATUS_IS_OK(status)) {
 				prs_mem_free(&rbuf);
 				return status;
@@ -2291,24 +2140,23 @@
 			/* */
 
 		default:
-			DEBUG(0,("cli_finish_bind_auth: unknown auth type "
-				 "%u\n", (unsigned int)cli->auth->auth_type));
+			DEBUG(0,("cli_finish_bind_auth: unknown auth type %u\n",
+				(unsigned int)auth_type ));
 			prs_mem_free(&rbuf);
 			return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
 	/* For NTLMSSP ensure the server gave us the auth_level we wanted. */
-	if (cli->auth->auth_type == PIPE_AUTH_TYPE_NTLMSSP
-	    || cli->auth->auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP) {
-		if (cli->auth->auth_level == PIPE_AUTH_LEVEL_INTEGRITY) {
-			if (!(cli->auth->a_u.ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
+	if (auth_type == PIPE_AUTH_TYPE_NTLMSSP || auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP) {
+		if (auth_level == PIPE_AUTH_LEVEL_INTEGRITY) {
+			if (!(cli->auth.a_u.ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
 				DEBUG(0,("cli_finish_bind_auth: requested NTLMSSSP signing and server refused.\n"));
 				prs_mem_free(&rbuf);
 				return NT_STATUS_INVALID_PARAMETER;
 			}
 		}
-		if (cli->auth->auth_level == PIPE_AUTH_LEVEL_INTEGRITY) {
-			if (!(cli->auth->a_u.ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
+		if (auth_level == PIPE_AUTH_LEVEL_INTEGRITY) {
+			if (!(cli->auth.a_u.ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
 				DEBUG(0,("cli_finish_bind_auth: requested NTLMSSSP sealing and server refused.\n"));
 				prs_mem_free(&rbuf);
 				return NT_STATUS_INVALID_PARAMETER;
@@ -2316,543 +2164,15 @@
 		}
 	}
 
-	prs_mem_free(&rbuf);
-	return NT_STATUS_OK;
-}
+	/* Pipe is bound - set up auth_type and auth_level data. */
 
-unsigned int rpccli_set_timeout(struct rpc_pipe_client *cli,
-				unsigned int timeout)
-{
-	return cli_set_timeout(cli->trans.np.cli, timeout);
-}
+	cli->auth.auth_type = auth_type;
+	cli->auth.auth_level = auth_level;
 
-bool rpccli_get_pwd_hash(struct rpc_pipe_client *cli, uint8_t nt_hash[16])
-{
-	if ((cli->auth->auth_type == PIPE_AUTH_TYPE_NTLMSSP)
-	    || (cli->auth->auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP)) {
-		memcpy(nt_hash, cli->auth->a_u.ntlmssp_state->nt_hash, 16);
-		return true;
-	}
-
-	if (cli->transport_type == NCACN_NP) {
-		E_md4hash(cli->trans.np.cli->pwd.password, nt_hash);
-		return true;
-	}
-
-	return false;
-}
-
-struct cli_state *rpc_pipe_np_smb_conn(struct rpc_pipe_client *p)
-{
-	if (p->transport_type == NCACN_NP) {
-		return p->trans.np.cli;
-	}
-	return NULL;
-}
-
-static int rpc_pipe_destructor(struct rpc_pipe_client *p)
-{
-	if (p->transport_type == NCACN_NP) {
-		bool ret;
-		ret = cli_close(p->trans.np.cli, p->trans.np.fnum);
-		if (!ret) {
-			DEBUG(1, ("rpc_pipe_destructor: cli_close failed on "
-				  "pipe %s. Error was %s\n",
-				  rpccli_pipe_txt(debug_ctx(), p),
-				  cli_errstr(p->trans.np.cli)));
-		}
-
-		DEBUG(10, ("rpc_pipe_destructor: closed %s\n",
-			   rpccli_pipe_txt(debug_ctx(), p)));
-
-		DLIST_REMOVE(p->trans.np.cli->pipe_list, p);
-		return ret ? -1 : 0;
-	}
-
-	return -1;
-}
-
-NTSTATUS rpccli_anon_bind_data(TALLOC_CTX *mem_ctx,
-			       struct cli_pipe_auth_data **presult)
-{
-	struct cli_pipe_auth_data *result;
-
-	result = talloc(mem_ctx, struct cli_pipe_auth_data);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->auth_type = PIPE_AUTH_TYPE_NONE;
-	result->auth_level = PIPE_AUTH_LEVEL_NONE;
-
-	result->user_name = talloc_strdup(result, "");
-	result->domain = talloc_strdup(result, "");
-	if ((result->user_name == NULL) || (result->domain == NULL)) {
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	*presult = result;
+	prs_mem_free(&rbuf);
 	return NT_STATUS_OK;
 }
 
-static int cli_auth_ntlmssp_data_destructor(struct cli_pipe_auth_data *auth)
-{
-	ntlmssp_end(&auth->a_u.ntlmssp_state);
-	return 0;
-}
-
-NTSTATUS rpccli_ntlmssp_bind_data(TALLOC_CTX *mem_ctx,
-				  enum pipe_auth_type auth_type,
-				  enum pipe_auth_level auth_level,
-				  const char *domain,
-				  const char *username,
-				  const char *password,
-				  struct cli_pipe_auth_data **presult)
-{
-	struct cli_pipe_auth_data *result;
-	NTSTATUS status;
-
-	result = talloc(mem_ctx, struct cli_pipe_auth_data);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->auth_type = auth_type;
-	result->auth_level = auth_level;
-
-	result->user_name = talloc_strdup(result, username);
-	result->domain = talloc_strdup(result, domain);
-	if ((result->user_name == NULL) || (result->domain == NULL)) {
-		status = NT_STATUS_NO_MEMORY;
-		goto fail;
-	}
-
-	status = ntlmssp_client_start(&result->a_u.ntlmssp_state);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto fail;
-	}
-
-	talloc_set_destructor(result, cli_auth_ntlmssp_data_destructor);
-
-	status = ntlmssp_set_username(result->a_u.ntlmssp_state, username);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto fail;
-	}
-
-	status = ntlmssp_set_domain(result->a_u.ntlmssp_state, domain);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto fail;
-	}
-
-	status = ntlmssp_set_password(result->a_u.ntlmssp_state, password);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto fail;
-	}
-
-	/*
-	 * Turn off sign+seal to allow selected auth level to turn it back on.
-	 */
-	result->a_u.ntlmssp_state->neg_flags &=
-		~(NTLMSSP_NEGOTIATE_SIGN | NTLMSSP_NEGOTIATE_SEAL);
-
-	if (auth_level == PIPE_AUTH_LEVEL_INTEGRITY) {
-		result->a_u.ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SIGN;
-	} else if (auth_level == PIPE_AUTH_LEVEL_PRIVACY) {
-		result->a_u.ntlmssp_state->neg_flags
-			|= NTLMSSP_NEGOTIATE_SEAL | NTLMSSP_NEGOTIATE_SIGN;
-	}
-
-	*presult = result;
-	return NT_STATUS_OK;
-
- fail:
-	TALLOC_FREE(result);
-	return status;
-}
-
-NTSTATUS rpccli_schannel_bind_data(TALLOC_CTX *mem_ctx, const char *domain,
-				   enum pipe_auth_level auth_level,
-				   const uint8_t sess_key[16],
-				   struct cli_pipe_auth_data **presult)
-{
-	struct cli_pipe_auth_data *result;
-
-	result = talloc(mem_ctx, struct cli_pipe_auth_data);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->auth_type = PIPE_AUTH_TYPE_SCHANNEL;
-	result->auth_level = auth_level;
-
-	result->user_name = talloc_strdup(result, "");
-	result->domain = talloc_strdup(result, domain);
-	if ((result->user_name == NULL) || (result->domain == NULL)) {
-		goto fail;
-	}
-
-	result->a_u.schannel_auth = talloc(result,
-					   struct schannel_auth_struct);
-	if (result->a_u.schannel_auth == NULL) {
-		goto fail;
-	}
-
-	memcpy(result->a_u.schannel_auth->sess_key, sess_key,
-	       sizeof(result->a_u.schannel_auth->sess_key));
-	result->a_u.schannel_auth->seq_num = 0;
-
-	*presult = result;
-	return NT_STATUS_OK;
-
- fail:
-	TALLOC_FREE(result);
-	return NT_STATUS_NO_MEMORY;
-}
-
-#ifdef HAVE_KRB5
-static int cli_auth_kerberos_data_destructor(struct kerberos_auth_struct *auth)
-{
-	data_blob_free(&auth->session_key);
-	return 0;
-}
-#endif
-
-NTSTATUS rpccli_kerberos_bind_data(TALLOC_CTX *mem_ctx,
-				   enum pipe_auth_level auth_level,
-				   const char *service_princ,
-				   const char *username,
-				   const char *password,
-				   struct cli_pipe_auth_data **presult)
-{
-#ifdef HAVE_KRB5
-	struct cli_pipe_auth_data *result;
-
-	if ((username != NULL) && (password != NULL)) {
-		int ret = kerberos_kinit_password(username, password, 0, NULL);
-		if (ret != 0) {
-			return NT_STATUS_ACCESS_DENIED;
-		}
-	}
-
-	result = talloc(mem_ctx, struct cli_pipe_auth_data);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->auth_type = PIPE_AUTH_TYPE_KRB5;
-	result->auth_level = auth_level;
-
-	/*
-	 * Username / domain need fixing!
-	 */
-	result->user_name = talloc_strdup(result, "");
-	result->domain = talloc_strdup(result, "");
-	if ((result->user_name == NULL) || (result->domain == NULL)) {
-		goto fail;
-	}
-
-	result->a_u.kerberos_auth = TALLOC_ZERO_P(
-		result, struct kerberos_auth_struct);
-	if (result->a_u.kerberos_auth == NULL) {
-		goto fail;
-	}
-	talloc_set_destructor(result->a_u.kerberos_auth,
-			      cli_auth_kerberos_data_destructor);
-
-	result->a_u.kerberos_auth->service_principal = talloc_strdup(
-		result, service_princ);
-	if (result->a_u.kerberos_auth->service_principal == NULL) {
-		goto fail;
-	}
-
-	*presult = result;
-	return NT_STATUS_OK;
-
- fail:
-	TALLOC_FREE(result);
-	return NT_STATUS_NO_MEMORY;
-#else
-	return NT_STATUS_NOT_SUPPORTED;
-#endif
-}
-
-static int rpc_pipe_sock_destructor(struct rpc_pipe_client *p)
-{
-	close(p->trans.sock.fd);
-	return 0;
-}
-
-/**
- * Create an rpc pipe client struct, connecting to a tcp port.
- */
-static NTSTATUS rpc_pipe_open_tcp_port(TALLOC_CTX *mem_ctx, const char *host,
-				       uint16_t port,
-				       const struct ndr_syntax_id *abstract_syntax,
-				       struct rpc_pipe_client **presult)
-{
-	struct rpc_pipe_client *result;
-	struct sockaddr_storage addr;
-	NTSTATUS status;
-
-	result = TALLOC_ZERO_P(mem_ctx, struct rpc_pipe_client);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->transport_type = NCACN_IP_TCP;
-
-	result->abstract_syntax = *abstract_syntax;
-	result->transfer_syntax = ndr_transfer_syntax;
-
-	result->desthost = talloc_strdup(result, host);
-	result->srv_name_slash = talloc_asprintf_strupper_m(
-		result, "\\\\%s", result->desthost);
-	if ((result->desthost == NULL) || (result->srv_name_slash == NULL)) {
-		status = NT_STATUS_NO_MEMORY;
-		goto fail;
-	}
-
-	result->max_xmit_frag = RPC_MAX_PDU_FRAG_LEN;
-	result->max_recv_frag = RPC_MAX_PDU_FRAG_LEN;
-
-	if (!resolve_name(host, &addr, 0)) {
-		status = NT_STATUS_NOT_FOUND;
-		goto fail;
-	}
-
-	result->trans.sock.fd = open_socket_out(SOCK_STREAM, &addr, port, 60);
-	if (result->trans.sock.fd == -1) {
-		status = map_nt_error_from_unix(errno);
-		goto fail;
-	}
-
-	talloc_set_destructor(result, rpc_pipe_sock_destructor);
-
-	*presult = result;
-	return NT_STATUS_OK;
-
- fail:
-	TALLOC_FREE(result);
-	return status;
-}
-
-/**
- * Determine the tcp port on which a dcerpc interface is listening
- * for the ncacn_ip_tcp transport via the endpoint mapper of the
- * target host.
- */
-static NTSTATUS rpc_pipe_get_tcp_port(const char *host,
-				      const struct ndr_syntax_id *abstract_syntax,
-				      uint16_t *pport)
-{
-	NTSTATUS status;
-	struct rpc_pipe_client *epm_pipe = NULL;
-	struct cli_pipe_auth_data *auth = NULL;
-	struct dcerpc_binding *map_binding = NULL;
-	struct dcerpc_binding *res_binding = NULL;
-	struct epm_twr_t *map_tower = NULL;
-	struct epm_twr_t *res_towers = NULL;
-	struct policy_handle *entry_handle = NULL;
-	uint32_t num_towers = 0;
-	uint32_t max_towers = 1;
-	struct epm_twr_p_t towers;
-	TALLOC_CTX *tmp_ctx = talloc_stackframe();
-
-	if (pport == NULL) {
-		status = NT_STATUS_INVALID_PARAMETER;
-		goto done;
-	}
-
-	/* open the connection to the endpoint mapper */
-	status = rpc_pipe_open_tcp_port(tmp_ctx, host, 135,
-					&ndr_table_epmapper.syntax_id,
-					&epm_pipe);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	status = rpccli_anon_bind_data(tmp_ctx, &auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	status = rpc_pipe_bind(epm_pipe, auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	/* create tower for asking the epmapper */
-
-	map_binding = TALLOC_ZERO_P(tmp_ctx, struct dcerpc_binding);
-	if (map_binding == NULL) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	map_binding->transport = NCACN_IP_TCP;
-	map_binding->object = *abstract_syntax;
-	map_binding->host = host; /* needed? */
-	map_binding->endpoint = "0"; /* correct? needed? */
-
-	map_tower = TALLOC_ZERO_P(tmp_ctx, struct epm_twr_t);
-	if (map_tower == NULL) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	status = dcerpc_binding_build_tower(tmp_ctx, map_binding,
-					    &(map_tower->tower));
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	/* allocate further parameters for the epm_Map call */
-
-	res_towers = TALLOC_ARRAY(tmp_ctx, struct epm_twr_t, max_towers);
-	if (res_towers == NULL) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-	towers.twr = res_towers;
-
-	entry_handle = TALLOC_ZERO_P(tmp_ctx, struct policy_handle);
-	if (entry_handle == NULL) {
-		status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	/* ask the endpoint mapper for the port */
-
-	status = rpccli_epm_Map(epm_pipe,
-				tmp_ctx,
-				CONST_DISCARD(struct GUID *,
-					      &(abstract_syntax->uuid)),
-				map_tower,
-				entry_handle,
-				max_towers,
-				&num_towers,
-				&towers);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	if (num_towers != 1) {
-		status = NT_STATUS_UNSUCCESSFUL;
-		goto done;
-	}
-
-	/* extract the port from the answer */
-
-	status = dcerpc_binding_from_tower(tmp_ctx,
-					   &(towers.twr->tower),
-					   &res_binding);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	/* are further checks here necessary? */
-	if (res_binding->transport != NCACN_IP_TCP) {
-		status = NT_STATUS_UNSUCCESSFUL;
-		goto done;
-	}
-
-	*pport = (uint16_t)atoi(res_binding->endpoint);
-
-done:
-	TALLOC_FREE(tmp_ctx);
-	return status;
-}
-
-/**
- * Create a rpc pipe client struct, connecting to a host via tcp.
- * The port is determined by asking the endpoint mapper on the given
- * host.
- */
-NTSTATUS rpc_pipe_open_tcp(TALLOC_CTX *mem_ctx, const char *host,
-			   const struct ndr_syntax_id *abstract_syntax,
-			   struct rpc_pipe_client **presult)
-{
-	NTSTATUS status;
-	uint16_t port = 0;
-
-	*presult = NULL;
-
-	status = rpc_pipe_get_tcp_port(host, abstract_syntax, &port);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
-
-	status = rpc_pipe_open_tcp_port(mem_ctx, host, port,
-					abstract_syntax, presult);
-
-done:
-	return status;
-}
-
-/********************************************************************
- Create a rpc pipe client struct, connecting to a unix domain socket
- ********************************************************************/
-NTSTATUS rpc_pipe_open_ncalrpc(TALLOC_CTX *mem_ctx, const char *socket_path,
-			       const struct ndr_syntax_id *abstract_syntax,
-			       struct rpc_pipe_client **presult)
-{
-	struct rpc_pipe_client *result;
-	struct sockaddr_un addr;
-	NTSTATUS status;
-
-	result = talloc_zero(mem_ctx, struct rpc_pipe_client);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	result->transport_type = NCACN_UNIX_STREAM;
-
-	result->abstract_syntax = *abstract_syntax;
-	result->transfer_syntax = ndr_transfer_syntax;
-
-	result->desthost = get_myname(result);
-	result->srv_name_slash = talloc_asprintf_strupper_m(
-		result, "\\\\%s", result->desthost);
-	if ((result->desthost == NULL) || (result->srv_name_slash == NULL)) {
-		status = NT_STATUS_NO_MEMORY;
-		goto fail;
-	}
-
-	result->max_xmit_frag = RPC_MAX_PDU_FRAG_LEN;
-	result->max_recv_frag = RPC_MAX_PDU_FRAG_LEN;
-
-	result->trans.sock.fd = socket(AF_UNIX, SOCK_STREAM, 0);
-	if (result->trans.sock.fd == -1) {
-		status = map_nt_error_from_unix(errno);
-		goto fail;
-	}
-
-	talloc_set_destructor(result, rpc_pipe_sock_destructor);
-
-	ZERO_STRUCT(addr);
-	addr.sun_family = AF_UNIX;
-	strncpy(addr.sun_path, socket_path, sizeof(addr.sun_path));
-
-	if (sys_connect(result->trans.sock.fd,
-			(struct sockaddr *)&addr) == -1) {
-		DEBUG(0, ("connect(%s) failed: %s\n", socket_path,
-			  strerror(errno)));
-		close(result->trans.sock.fd);
-		return map_nt_error_from_unix(errno);
-	}
-
-	*presult = result;
-	return NT_STATUS_OK;
-
- fail:
-	TALLOC_FREE(result);
-	return status;
-}
-
-
 /****************************************************************************
  Open a named pipe over SMB to a remote server.
  *
@@ -2866,204 +2186,199 @@
  * 
  ****************************************************************************/
 
-static NTSTATUS rpc_pipe_open_np(struct cli_state *cli,
-				 const struct ndr_syntax_id *abstract_syntax,
-				 struct rpc_pipe_client **presult)
+static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe_idx, NTSTATUS *perr)
 {
+	TALLOC_CTX *mem_ctx;
 	struct rpc_pipe_client *result;
 	int fnum;
 
+	*perr = NT_STATUS_NO_MEMORY;
+
 	/* sanity check to protect against crashes */
 
 	if ( !cli ) {
-		return NT_STATUS_INVALID_HANDLE;
+		*perr = NT_STATUS_INVALID_HANDLE;
+		return NULL;
 	}
 
-	result = TALLOC_ZERO_P(NULL, struct rpc_pipe_client);
-	if (result == NULL) {
-		return NT_STATUS_NO_MEMORY;
+	/* The pipe name index must fall within our array */
+	SMB_ASSERT((pipe_idx >= 0) && (pipe_idx < PI_MAX_PIPES));
+
+	mem_ctx = talloc_init("struct rpc_pipe_client");
+	if (mem_ctx == NULL) {
+		return NULL;
 	}
 
-	result->transport_type = NCACN_NP;
-
-	result->trans.np.pipe_name = cli_get_pipe_name_from_iface(
-		result, cli, abstract_syntax);
-	if (result->trans.np.pipe_name == NULL) {
-		DEBUG(1, ("Could not find pipe for interface\n"));
-		TALLOC_FREE(result);
-		return NT_STATUS_INVALID_PARAMETER;
+	result = TALLOC_ZERO_P(mem_ctx, struct rpc_pipe_client);
+	if (result == NULL) {
+		return NULL;
 	}
 
-	result->trans.np.cli = cli;
-	result->abstract_syntax = *abstract_syntax;
-	result->transfer_syntax = ndr_transfer_syntax;
-	result->desthost = talloc_strdup(result, cli->desthost);
-	result->srv_name_slash = talloc_asprintf_strupper_m(
-		result, "\\\\%s", result->desthost);
+	result->mem_ctx = mem_ctx;
 
-	if ((result->desthost == NULL) || (result->srv_name_slash == NULL)) {
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
+	result->pipe_name = cli_get_pipe_name(pipe_idx);
 
-	fnum = cli_nt_create(cli, result->trans.np.pipe_name,
-			     DESIRED_ACCESS_PIPE);
+	fnum = cli_nt_create(cli, result->pipe_name, DESIRED_ACCESS_PIPE);
+
 	if (fnum == -1) {
-		DEBUG(1,("rpc_pipe_open_np: cli_nt_create failed on pipe %s "
+		DEBUG(1,("cli_rpc_pipe_open: cli_nt_create failed on pipe %s "
 			 "to machine %s.  Error was %s\n",
-			 result->trans.np.pipe_name, cli->desthost,
+			 result->pipe_name, cli->desthost,
 			 cli_errstr(cli)));
-		TALLOC_FREE(result);
-		return cli_get_nt_error(cli);
+		*perr = cli_get_nt_error(cli);
+		talloc_destroy(result->mem_ctx);
+		return NULL;
 	}
 
-	result->trans.np.fnum = fnum;
+	result->fnum = fnum;
+	result->cli = cli;
+	result->pipe_idx = pipe_idx;
+	result->auth.auth_type = PIPE_AUTH_TYPE_NONE;
+	result->auth.auth_level = PIPE_AUTH_LEVEL_NONE;
 
+	if (pipe_idx == PI_NETLOGON) {
+		/* Set up a netlogon credential chain for a netlogon pipe. */
+		result->dc = TALLOC_ZERO_P(mem_ctx, struct dcinfo);
+		if (result->dc == NULL) {
+			talloc_destroy(result->mem_ctx);
+			return NULL;
+		}
+	}
+
 	DLIST_ADD(cli->pipe_list, result);
-	talloc_set_destructor(result, rpc_pipe_destructor);
+	*perr = NT_STATUS_OK;
 
-	*presult = result;
-	return NT_STATUS_OK;
+	return result;
 }
 
 /****************************************************************************
- Open a pipe to a remote server.
- ****************************************************************************/
-
-static NTSTATUS cli_rpc_pipe_open(struct cli_state *cli,
-				  const struct ndr_syntax_id *interface,
-				  struct rpc_pipe_client **presult)
-{
-	if (ndr_syntax_id_equal(interface, &ndr_table_drsuapi.syntax_id)) {
-		/*
-		 * We should have a better way to figure out this drsuapi
-		 * speciality...
-		 */
-		return rpc_pipe_open_tcp(NULL, cli->desthost, interface,
-					 presult);
-	}
-
-	return rpc_pipe_open_np(cli, interface, presult);
-}
-
-/****************************************************************************
  Open a named pipe to an SMB server and bind anonymously.
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli,
-				  const struct ndr_syntax_id *interface,
-				  struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_noauth(struct cli_state *cli, int pipe_idx, NTSTATUS *perr)
 {
 	struct rpc_pipe_client *result;
-	struct cli_pipe_auth_data *auth;
-	NTSTATUS status;
 
-	status = cli_rpc_pipe_open(cli, interface, &result);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	result = cli_rpc_pipe_open(cli, pipe_idx, perr);
+	if (result == NULL) {
+		return NULL;
 	}
 
-	status = rpccli_anon_bind_data(result, &auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("rpccli_anon_bind_data returned %s\n",
-			  nt_errstr(status)));
-		TALLOC_FREE(result);
-		return status;
-	}
-
-	/*
-	 * This is a bit of an abstraction violation due to the fact that an
-	 * anonymous bind on an authenticated SMB inherits the user/domain
-	 * from the enclosing SMB creds
-	 */
-
-	TALLOC_FREE(auth->user_name);
-	TALLOC_FREE(auth->domain);
-
-	auth->user_name = talloc_strdup(auth, cli->user_name);
-	auth->domain = talloc_strdup(auth, cli->domain);
-
-	if ((auth->user_name == NULL) || (auth->domain == NULL)) {
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	status = rpc_pipe_bind(result, auth);
-	if (!NT_STATUS_IS_OK(status)) {
+	*perr = rpc_pipe_bind(result, PIPE_AUTH_TYPE_NONE, PIPE_AUTH_LEVEL_NONE);
+	if (!NT_STATUS_IS_OK(*perr)) {
 		int lvl = 0;
-		if (ndr_syntax_id_equal(interface,
-					&ndr_table_dssetup.syntax_id)) {
+		if (pipe_idx == PI_DSSETUP) {
 			/* non AD domains just don't have this pipe, avoid
 			 * level 0 statement in that case - gd */
 			lvl = 3;
 		}
-		DEBUG(lvl, ("cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe "
-			    "%s failed with error %s\n",
-			    cli_get_pipe_name_from_iface(debug_ctx(), cli,
-							 interface),
-			    nt_errstr(status) ));
-		TALLOC_FREE(result);
-		return status;
+		DEBUG(lvl, ("cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe %s failed with error %s\n",
+			cli_get_pipe_name(pipe_idx), nt_errstr(*perr) ));
+		cli_rpc_pipe_close(result);
+		return NULL;
 	}
 
-	DEBUG(10,("cli_rpc_pipe_open_noauth: opened pipe %s to machine "
-		  "%s and bound anonymously.\n", result->trans.np.pipe_name,
-		  cli->desthost ));
+	DEBUG(10,("cli_rpc_pipe_open_noauth: opened pipe %s to machine %s and bound anonymously.\n",
+			result->pipe_name, cli->desthost ));
 
-	*presult = result;
-	return NT_STATUS_OK;
+	return result;
 }
 
 /****************************************************************************
+ Free function for NTLMSSP auth.
+ ****************************************************************************/
+
+static void cli_ntlmssp_auth_free(struct cli_pipe_auth_data *auth)
+{
+	if (auth->a_u.ntlmssp_state) {
+		ntlmssp_end(&auth->a_u.ntlmssp_state);
+		auth->a_u.ntlmssp_state = NULL;
+	}
+}
+
+/****************************************************************************
  Open a named pipe to an SMB server and bind using NTLMSSP or SPNEGO NTLMSSP
  ****************************************************************************/
 
-static NTSTATUS cli_rpc_pipe_open_ntlmssp_internal(struct cli_state *cli,
-						   const struct ndr_syntax_id *interface,
-						   enum pipe_auth_type auth_type,
-						   enum pipe_auth_level auth_level,
-						   const char *domain,
-						   const char *username,
-						   const char *password,
-						   struct rpc_pipe_client **presult)
+static struct rpc_pipe_client *cli_rpc_pipe_open_ntlmssp_internal(struct cli_state *cli,
+						int pipe_idx,
+						enum pipe_auth_type auth_type,
+						enum pipe_auth_level auth_level,
+						const char *domain,
+						const char *username,
+						const char *password,
+						NTSTATUS *perr)
 {
 	struct rpc_pipe_client *result;
-	struct cli_pipe_auth_data *auth;
-	NTSTATUS status;
+	NTLMSSP_STATE *ntlmssp_state = NULL;
 
-	status = cli_rpc_pipe_open(cli, interface, &result);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	result = cli_rpc_pipe_open(cli, pipe_idx, perr);
+	if (result == NULL) {
+		return NULL;
 	}
+	
+	result->auth.cli_auth_data_free_func = cli_ntlmssp_auth_free;
 
-	status = rpccli_ntlmssp_bind_data(
-		result, auth_type, auth_level, domain, username,
-		cli->pwd.null_pwd ? NULL : password, &auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("rpccli_ntlmssp_bind_data returned %s\n",
-			  nt_errstr(status)));
+	result->domain = domain;
+	result->user_name = username;
+	pwd_set_cleartext(&result->pwd, password);
+
+	*perr = ntlmssp_client_start(&ntlmssp_state);
+	if (!NT_STATUS_IS_OK(*perr)) {
 		goto err;
 	}
 
-	status = rpc_pipe_bind(result, auth);
-	if (!NT_STATUS_IS_OK(status)) {
+	result->auth.a_u.ntlmssp_state = ntlmssp_state;
+
+	*perr = ntlmssp_set_username(ntlmssp_state, cli->user_name);
+	if (!NT_STATUS_IS_OK(*perr)) {
+		goto err;
+	}
+
+	*perr = ntlmssp_set_domain(ntlmssp_state, cli->domain);	
+	if (!NT_STATUS_IS_OK(*perr)) {
+		goto err;
+	}
+
+	if (cli->pwd.null_pwd) {
+		*perr = ntlmssp_set_password(ntlmssp_state, NULL);
+		if (!NT_STATUS_IS_OK(*perr)) {
+			goto err;
+		}
+	} else {
+		*perr = ntlmssp_set_password(ntlmssp_state, password);
+		if (!NT_STATUS_IS_OK(*perr)) {
+			goto err;
+		}
+	}
+
+	/* Turn off sign+seal to allow selected auth level to turn it back on. */
+	ntlmssp_state->neg_flags &= ~(NTLMSSP_NEGOTIATE_SIGN|NTLMSSP_NEGOTIATE_SEAL);
+
+	if (auth_level == PIPE_AUTH_LEVEL_INTEGRITY) {
+		ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SIGN;
+	} else if (auth_level == PIPE_AUTH_LEVEL_PRIVACY) {
+		ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SEAL | NTLMSSP_NEGOTIATE_SIGN;
+	}
+	
+	*perr = rpc_pipe_bind(result, auth_type, auth_level);
+	if (!NT_STATUS_IS_OK(*perr)) {
 		DEBUG(0, ("cli_rpc_pipe_open_ntlmssp_internal: cli_rpc_pipe_bind failed with error %s\n",
-			nt_errstr(status) ));
+			nt_errstr(*perr) ));
 		goto err;
 	}
 
 	DEBUG(10,("cli_rpc_pipe_open_ntlmssp_internal: opened pipe %s to "
 		"machine %s and bound NTLMSSP as user %s\\%s.\n",
-		result->trans.np.pipe_name, cli->desthost,
+		result->pipe_name, cli->desthost,
 		domain, username ));
 
-	*presult = result;
-	return NT_STATUS_OK;
+	return result;
 
   err:
 
-	TALLOC_FREE(result);
-	return status;
+	cli_rpc_pipe_close(result);
+	return NULL;
 }
 
 /****************************************************************************
@@ -3071,22 +2386,22 @@
  Open a named pipe to an SMB server and bind using NTLMSSP (bind type 10)
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli,
-				   const struct ndr_syntax_id *interface,
-				   enum pipe_auth_level auth_level,
-				   const char *domain,
-				   const char *username,
-				   const char *password,
-				   struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_ntlmssp(struct cli_state *cli,
+						int pipe_idx,
+						enum pipe_auth_level auth_level,
+						const char *domain,
+						const char *username,
+						const char *password,
+						NTSTATUS *perr)
 {
 	return cli_rpc_pipe_open_ntlmssp_internal(cli,
-						interface,
+						pipe_idx,
 						PIPE_AUTH_TYPE_NTLMSSP,
 						auth_level,
 						domain,
 						username,
 						password,
-						presult);
+						perr);
 }
 
 /****************************************************************************
@@ -3094,36 +2409,36 @@
  Open a named pipe to an SMB server and bind using spnego NTLMSSP (bind type 9)
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli,
-					  const struct ndr_syntax_id *interface,
-					  enum pipe_auth_level auth_level,
-					  const char *domain,
-					  const char *username,
-					  const char *password,
-					  struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli,
+						int pipe_idx,
+						enum pipe_auth_level auth_level,
+						const char *domain,
+						const char *username,
+						const char *password,
+						NTSTATUS *perr)
 {
 	return cli_rpc_pipe_open_ntlmssp_internal(cli,
-						interface,
+						pipe_idx,
 						PIPE_AUTH_TYPE_SPNEGO_NTLMSSP,
 						auth_level,
 						domain,
 						username,
 						password,
-						presult);
+						perr);
 }
 
 /****************************************************************************
   Get a the schannel session key out of an already opened netlogon pipe.
  ****************************************************************************/
-static NTSTATUS get_schannel_session_key_common(struct rpc_pipe_client *netlogon_pipe,
-						struct cli_state *cli,
-						const char *domain,
-						uint32 *pneg_flags)
+static bool get_schannel_session_key_common(struct rpc_pipe_client *netlogon_pipe,
+					    struct cli_state *cli,
+					    const char *domain,
+					    uint32 *pneg_flags,
+					    NTSTATUS *perr)
 {
 	uint32 sec_chan_type = 0;
 	unsigned char machine_pwd[16];
 	const char *machine_account;
-	NTSTATUS status;
 
 	/* Get the machine account credentials from secrets.tdb. */
 	if (!get_trust_pw_hash(domain, machine_pwd, &machine_account,
@@ -3132,10 +2447,11 @@
 		DEBUG(0, ("get_schannel_session_key: could not fetch "
 			"trust account password for domain '%s'\n",
 			domain));
-		return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
+		*perr = NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
+		return false;
 	}
 
-	status = rpccli_netlogon_setup_creds(netlogon_pipe,
+	*perr = rpccli_netlogon_setup_creds(netlogon_pipe,
 					cli->desthost, /* server name */
 					domain,	       /* domain */
 					global_myname(), /* client name */
@@ -3144,22 +2460,21 @@
 					sec_chan_type,
 					pneg_flags);
 
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("get_schannel_session_key_common: "
-			  "rpccli_netlogon_setup_creds failed with result %s "
-			  "to server %s, domain %s, machine account %s.\n",
-			  nt_errstr(status), cli->desthost, domain,
-			  machine_account ));
-		return status;
+	if (!NT_STATUS_IS_OK(*perr)) {
+		DEBUG(3,("get_schannel_session_key_common: rpccli_netlogon_setup_creds "
+			"failed with result %s to server %s, domain %s, machine account %s.\n",
+			nt_errstr(*perr), cli->desthost, domain, machine_account ));
+		return false;
 	}
 
 	if (((*pneg_flags) & NETLOGON_NEG_SCHANNEL) == 0) {
 		DEBUG(3, ("get_schannel_session_key: Server %s did not offer schannel\n",
 			cli->desthost));
-		return NT_STATUS_INVALID_NETWORK_RESPONSE;
+		*perr = NT_STATUS_INVALID_NETWORK_RESPONSE;
+		return false;
 	}
 
-	return NT_STATUS_OK;;
+	return true;
 }
 
 /****************************************************************************
@@ -3168,29 +2483,26 @@
  ****************************************************************************/
 
 
-NTSTATUS get_schannel_session_key(struct cli_state *cli,
-				  const char *domain,
-				  uint32 *pneg_flags,
-				  struct rpc_pipe_client **presult)
+struct rpc_pipe_client *get_schannel_session_key(struct cli_state *cli,
+							const char *domain,
+							uint32 *pneg_flags,
+							NTSTATUS *perr)
 {
 	struct rpc_pipe_client *netlogon_pipe = NULL;
-	NTSTATUS status;
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
-					  &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	netlogon_pipe = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, perr);
+	if (!netlogon_pipe) {
+		return NULL;
 	}
 
-	status = get_schannel_session_key_common(netlogon_pipe, cli, domain,
-						 pneg_flags);
-	if (!NT_STATUS_IS_OK(status)) {
-		TALLOC_FREE(netlogon_pipe);
-		return status;
+	if (!get_schannel_session_key_common(netlogon_pipe, cli, domain,
+					     pneg_flags, perr))
+	{
+		cli_rpc_pipe_close(netlogon_pipe);
+		return NULL;
 	}
 
-	*presult = netlogon_pipe;
-	return NT_STATUS_OK;
+	return netlogon_pipe;
 }
 
 /****************************************************************************
@@ -3199,58 +2511,49 @@
  using session_key. sign and seal.
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
-					     const struct ndr_syntax_id *interface,
-					     enum pipe_auth_level auth_level,
-					     const char *domain,
-					     const struct dcinfo *pdc,
-					     struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli,
+					int pipe_idx,
+					enum pipe_auth_level auth_level,
+					const char *domain,
+					const struct dcinfo *pdc,
+					NTSTATUS *perr)
 {
 	struct rpc_pipe_client *result;
-	struct cli_pipe_auth_data *auth;
-	NTSTATUS status;
 
-	status = cli_rpc_pipe_open(cli, interface, &result);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	result = cli_rpc_pipe_open(cli, pipe_idx, perr);
+	if (result == NULL) {
+		return NULL;
 	}
 
-	status = rpccli_schannel_bind_data(result, domain, auth_level,
-					   pdc->sess_key, &auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("rpccli_schannel_bind_data returned %s\n",
-			  nt_errstr(status)));
-		TALLOC_FREE(result);
-		return status;
+	result->auth.a_u.schannel_auth = TALLOC_ZERO_P(result->mem_ctx, struct schannel_auth_struct);
+	if (!result->auth.a_u.schannel_auth) {
+		cli_rpc_pipe_close(result);
+		*perr = NT_STATUS_NO_MEMORY;
+		return NULL;
 	}
 
-	status = rpc_pipe_bind(result, auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("cli_rpc_pipe_open_schannel_with_key: "
-			  "cli_rpc_pipe_bind failed with error %s\n",
-			  nt_errstr(status) ));
-		TALLOC_FREE(result);
-		return status;
+	result->domain = domain;
+	memcpy(result->auth.a_u.schannel_auth->sess_key, pdc->sess_key, 16);
+
+	*perr = rpc_pipe_bind(result, PIPE_AUTH_TYPE_SCHANNEL, auth_level);
+	if (!NT_STATUS_IS_OK(*perr)) {
+		DEBUG(0, ("cli_rpc_pipe_open_schannel_with_key: cli_rpc_pipe_bind failed with error %s\n",
+			nt_errstr(*perr) ));
+		cli_rpc_pipe_close(result);
+		return NULL;
 	}
 
-	/*
-	 * The credentials on a new netlogon pipe are the ones we are passed
-	 * in - copy them over.
-	 */
-	result->dc = (struct dcinfo *)talloc_memdup(result, pdc, sizeof(*pdc));
-	if (result->dc == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		TALLOC_FREE(result);
-		return NT_STATUS_NO_MEMORY;
+	/* The credentials on a new netlogon pipe are the ones we are passed in - copy them over. */
+	if (result->dc) {
+		*result->dc = *pdc;
 	}
 
 	DEBUG(10,("cli_rpc_pipe_open_schannel_with_key: opened pipe %s to machine %s "
 		"for domain %s "
 		"and bound using schannel.\n",
-		result->trans.np.pipe_name, cli->desthost, domain ));
+		result->pipe_name, cli->desthost, domain ));
 
-	*presult = result;
-	return NT_STATUS_OK;
+	return result;
 }
 
 /****************************************************************************
@@ -3259,32 +2562,28 @@
  version uses an ntlmssp auth bound netlogon pipe to get the key.
  ****************************************************************************/
 
-static NTSTATUS get_schannel_session_key_auth_ntlmssp(struct cli_state *cli,
-						      const char *domain,
-						      const char *username,
-						      const char *password,
-						      uint32 *pneg_flags,
-						      struct rpc_pipe_client **presult)
+static struct rpc_pipe_client *get_schannel_session_key_auth_ntlmssp(struct cli_state *cli,
+							const char *domain,
+							const char *username,
+							const char *password,
+							uint32 *pneg_flags,
+							NTSTATUS *perr)
 {
 	struct rpc_pipe_client *netlogon_pipe = NULL;
-	NTSTATUS status;
 
-	status = cli_rpc_pipe_open_spnego_ntlmssp(
-		cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-		domain, username, password, &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	netlogon_pipe = cli_rpc_pipe_open_spnego_ntlmssp(cli, PI_NETLOGON, PIPE_AUTH_LEVEL_PRIVACY, domain, username, password, perr);
+	if (!netlogon_pipe) {
+		return NULL;
 	}
 
-	status = get_schannel_session_key_common(netlogon_pipe, cli, domain,
-						 pneg_flags);
-	if (!NT_STATUS_IS_OK(status)) {
-		TALLOC_FREE(netlogon_pipe);
-		return status;
+	if (!get_schannel_session_key_common(netlogon_pipe, cli, domain,
+					     pneg_flags, perr))
+	{
+		cli_rpc_pipe_close(netlogon_pipe);
+		return NULL;
 	}
 
-	*presult = netlogon_pipe;
-	return NT_STATUS_OK;
+	return netlogon_pipe;
 }
 
 /****************************************************************************
@@ -3293,39 +2592,35 @@
  uses an ntlmssp bind to get the session key.
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli,
-						 const struct ndr_syntax_id *interface,
-						 enum pipe_auth_level auth_level,
-						 const char *domain,
-						 const char *username,
-						 const char *password,
-						 struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli,
+                                                int pipe_idx,
+						enum pipe_auth_level auth_level,
+                                                const char *domain,
+						const char *username,
+						const char *password,
+						NTSTATUS *perr)
 {
 	uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
 	struct rpc_pipe_client *netlogon_pipe = NULL;
 	struct rpc_pipe_client *result = NULL;
-	NTSTATUS status;
 
-	status = get_schannel_session_key_auth_ntlmssp(
-		cli, domain, username, password, &neg_flags, &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
+	netlogon_pipe = get_schannel_session_key_auth_ntlmssp(cli, domain, username,
+							password, &neg_flags, perr);
+	if (!netlogon_pipe) {
 		DEBUG(0,("cli_rpc_pipe_open_ntlmssp_auth_schannel: failed to get schannel session "
 			"key from server %s for domain %s.\n",
 			cli->desthost, domain ));
-		return status;
+		return NULL;
 	}
 
-	status = cli_rpc_pipe_open_schannel_with_key(
-		cli, interface, auth_level, domain, netlogon_pipe->dc,
-		&result);
+	result = cli_rpc_pipe_open_schannel_with_key(cli, pipe_idx,
+				auth_level,
+				domain, netlogon_pipe->dc, perr);
 
 	/* Now we've bound using the session key we can close the netlog pipe. */
-	TALLOC_FREE(netlogon_pipe);
+	cli_rpc_pipe_close(netlogon_pipe);
 
-	if (NT_STATUS_IS_OK(status)) {
-		*presult = result;
-	}
-	return status;
+	return result;
 }
 
 /****************************************************************************
@@ -3333,122 +2628,109 @@
  Fetch the session key ourselves using a temporary netlogon pipe.
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_schannel(struct cli_state *cli,
-				    const struct ndr_syntax_id *interface,
-				    enum pipe_auth_level auth_level,
-				    const char *domain,
-				    struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_schannel(struct cli_state *cli,
+                                                int pipe_idx,
+						enum pipe_auth_level auth_level,
+                                                const char *domain,
+						NTSTATUS *perr)
 {
 	uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
 	struct rpc_pipe_client *netlogon_pipe = NULL;
 	struct rpc_pipe_client *result = NULL;
-	NTSTATUS status;
 
-	status = get_schannel_session_key(cli, domain, &neg_flags,
-					  &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
+	netlogon_pipe = get_schannel_session_key(cli, domain, &neg_flags, perr);
+	if (!netlogon_pipe) {
 		DEBUG(0,("cli_rpc_pipe_open_schannel: failed to get schannel session "
 			"key from server %s for domain %s.\n",
 			cli->desthost, domain ));
-		return status;
+		return NULL;
 	}
 
-	status = cli_rpc_pipe_open_schannel_with_key(
-		cli, interface, auth_level, domain, netlogon_pipe->dc,
-		&result);
+	result = cli_rpc_pipe_open_schannel_with_key(cli, pipe_idx,
+				auth_level,
+				domain, netlogon_pipe->dc, perr);
 
 	/* Now we've bound using the session key we can close the netlog pipe. */
-	TALLOC_FREE(netlogon_pipe);
+	cli_rpc_pipe_close(netlogon_pipe);
 
-	if (NT_STATUS_IS_OK(status)) {
-		*presult = result;
-	}
+	return result;
+}
 
-	return NT_STATUS_OK;
+#ifdef HAVE_KRB5
+
+/****************************************************************************
+ Free function for the kerberos spcific data.
+ ****************************************************************************/
+
+static void kerberos_auth_struct_free(struct cli_pipe_auth_data *a)
+{
+	data_blob_free(&a->a_u.kerberos_auth->session_key);
 }
 
+#endif
+
 /****************************************************************************
  Open a named pipe to an SMB server and bind using krb5 (bind type 16).
  The idea is this can be called with service_princ, username and password all
  NULL so long as the caller has a TGT.
  ****************************************************************************/
 
-NTSTATUS cli_rpc_pipe_open_krb5(struct cli_state *cli,
-				const struct ndr_syntax_id *interface,
-				enum pipe_auth_level auth_level,
-				const char *service_princ,
-				const char *username,
-				const char *password,
-				struct rpc_pipe_client **presult)
+struct rpc_pipe_client *cli_rpc_pipe_open_krb5(struct cli_state *cli,
+						int pipe_idx,
+						enum pipe_auth_level auth_level,
+						const char *service_princ,
+						const char *username,
+						const char *password,
+						NTSTATUS *perr)
 {
 #ifdef HAVE_KRB5
 	struct rpc_pipe_client *result;
-	struct cli_pipe_auth_data *auth;
-	NTSTATUS status;
 
-	status = cli_rpc_pipe_open(cli, interface, &result);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	result = cli_rpc_pipe_open(cli, pipe_idx, perr);
+	if (result == NULL) {
+		return NULL;
 	}
 
-	status = rpccli_kerberos_bind_data(result, auth_level, service_princ,
-					   username, password, &auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("rpccli_kerberos_bind_data returned %s\n",
-			  nt_errstr(status)));
-		TALLOC_FREE(result);
-		return status;
+	/* Default service principal is "desthost$@realm" */
+	if (!service_princ) {
+		service_princ = talloc_asprintf(result->mem_ctx, "%s$@%s",
+			cli->desthost, lp_realm() );
+		if (!service_princ) {
+			cli_rpc_pipe_close(result);
+			return NULL;
+		}
 	}
 
-	status = rpc_pipe_bind(result, auth);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("cli_rpc_pipe_open_krb5: cli_rpc_pipe_bind failed "
-			  "with error %s\n", nt_errstr(status)));
-		TALLOC_FREE(result);
-		return status;
+	/* Only get a new TGT if username/password are given. */
+	if (username && password) {
+		int ret = kerberos_kinit_password(username, password, 0, NULL);
+		if (ret) {
+			cli_rpc_pipe_close(result);
+			return NULL;
+		}
 	}
 
-	*presult = result;
-	return NT_STATUS_OK;
-#else
-	DEBUG(0,("cli_rpc_pipe_open_krb5: kerberos not found at compile time.\n"));
-	return NT_STATUS_NOT_IMPLEMENTED;
-#endif
-}
-
-NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
-			     struct rpc_pipe_client *cli,
-			     DATA_BLOB *session_key)
-{
-	if (!session_key || !cli) {
-		return NT_STATUS_INVALID_PARAMETER;
+	result->auth.a_u.kerberos_auth = TALLOC_ZERO_P(result->mem_ctx, struct kerberos_auth_struct);
+	if (!result->auth.a_u.kerberos_auth) {
+		cli_rpc_pipe_close(result);
+		*perr = NT_STATUS_NO_MEMORY;
+		return NULL;
 	}
 
-	if (!cli->auth) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
+	result->auth.a_u.kerberos_auth->service_principal = service_princ;
+	result->auth.cli_auth_data_free_func = kerberos_auth_struct_free;
 
-	switch (cli->auth->auth_type) {
-		case PIPE_AUTH_TYPE_SCHANNEL:
-			*session_key = data_blob_talloc(mem_ctx,
-				cli->auth->a_u.schannel_auth->sess_key, 16);
-			break;
-		case PIPE_AUTH_TYPE_NTLMSSP:
-		case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
-			*session_key = data_blob_talloc(mem_ctx,
-				cli->auth->a_u.ntlmssp_state->session_key.data,
-				cli->auth->a_u.ntlmssp_state->session_key.length);
-			break;
-		case PIPE_AUTH_TYPE_KRB5:
-		case PIPE_AUTH_TYPE_SPNEGO_KRB5:
-			*session_key = data_blob_talloc(mem_ctx,
-				cli->auth->a_u.kerberos_auth->session_key.data,
-				cli->auth->a_u.kerberos_auth->session_key.length);
-			break;
-		case PIPE_AUTH_TYPE_NONE:
-		default:
-			return NT_STATUS_NO_USER_SESSION_KEY;
+	*perr = rpc_pipe_bind(result, PIPE_AUTH_TYPE_KRB5, auth_level);
+	if (!NT_STATUS_IS_OK(*perr)) {
+		DEBUG(0, ("cli_rpc_pipe_open_krb5: cli_rpc_pipe_bind failed with error %s\n",
+			nt_errstr(*perr) ));
+		cli_rpc_pipe_close(result);
+		return NULL;
 	}
 
-	return NT_STATUS_OK;
+	return result;
+#else
+	DEBUG(0,("cli_rpc_pipe_open_krb5: kerberos not found at compile time.\n"));
+	return NULL;
+#endif
 }

Modified: branches/samba/upstream/source/rpc_client/cli_samr.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_samr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_samr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,64 +27,11 @@
 
 NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli,
 				    TALLOC_CTX *mem_ctx,
-				    struct policy_handle *user_handle,
+				    const char *username,
 				    const char *newpassword,
 				    const char *oldpassword)
 {
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-	struct samr_Password hash1, hash2, hash3, hash4, hash5, hash6;
-
-	uchar old_nt_hash[16];
-	uchar old_lm_hash[16];
-	uchar new_nt_hash[16];
-	uchar new_lm_hash[16];
-
-	ZERO_STRUCT(old_nt_hash);
-	ZERO_STRUCT(old_lm_hash);
-	ZERO_STRUCT(new_nt_hash);
-	ZERO_STRUCT(new_lm_hash);
-
-	DEBUG(10,("rpccli_samr_chgpasswd_user\n"));
-
-	E_md4hash(oldpassword, old_nt_hash);
-	E_md4hash(newpassword, new_nt_hash);
-
-	E_deshash(oldpassword, old_lm_hash);
-	E_deshash(newpassword, new_lm_hash);
-
-	E_old_pw_hash(new_lm_hash, old_lm_hash, hash1.hash);
-	E_old_pw_hash(old_lm_hash, new_lm_hash, hash2.hash);
-	E_old_pw_hash(new_nt_hash, old_nt_hash, hash3.hash);
-	E_old_pw_hash(old_nt_hash, new_nt_hash, hash4.hash);
-	E_old_pw_hash(old_lm_hash, new_nt_hash, hash5.hash);
-	E_old_pw_hash(old_nt_hash, new_lm_hash, hash6.hash);
-
-	result = rpccli_samr_ChangePasswordUser(cli, mem_ctx,
-						user_handle,
-						true,
-						&hash1,
-						&hash2,
-						true,
-						&hash3,
-						&hash4,
-						true,
-						&hash5,
-						true,
-						&hash6);
-
-	return result;
-}
-
-
-/* User change password */
-
-NTSTATUS rpccli_samr_chgpasswd_user2(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     const char *username,
-				     const char *newpassword,
-				     const char *oldpassword)
-{
-	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	struct samr_CryptPassword new_nt_password;
 	struct samr_CryptPassword new_lm_password;
 	struct samr_Password old_nt_hash_enc;
@@ -96,9 +43,9 @@
 	uchar new_lanman_hash[16];
 	struct lsa_String server, account;
 
-	DEBUG(10,("rpccli_samr_chgpasswd_user2\n"));
+	DEBUG(10,("rpccli_samr_chgpasswd_user\n"));
 
-	init_lsa_String(&server, cli->srv_name_slash);
+	init_lsa_String(&server, cli->cli->srv_name_slash);
 	init_lsa_String(&account, username);
 
 	/* Calculate the MD4 hash (NT compatible) of the password */
@@ -158,7 +105,7 @@
 
 	DEBUG(10,("rpccli_samr_chng_pswd_auth_crap\n"));
 
-	init_lsa_String(&server, cli->srv_name_slash);
+	init_lsa_String(&server, cli->cli->srv_name_slash);
 	init_lsa_String(&account, username);
 
 	memcpy(&new_nt_password.data, new_nt_password_blob.data, 516);
@@ -180,13 +127,13 @@
 
 /* change password 3 */
 
-NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx,
-				     const char *username,
-				     const char *newpassword,
-				     const char *oldpassword,
-				     struct samr_DomInfo1 **dominfo1,
-				     struct samr_ChangeReject **reject)
+NTSTATUS rpccli_samr_chgpasswd3(struct rpc_pipe_client *cli,
+				TALLOC_CTX *mem_ctx,
+				const char *username,
+				const char *newpassword,
+				const char *oldpassword,
+				struct samr_DomInfo1 **dominfo1,
+				struct samr_ChangeReject **reject)
 {
 	NTSTATUS status;
 
@@ -204,7 +151,7 @@
 
 	DEBUG(10,("rpccli_samr_chgpasswd_user3\n"));
 
-	init_lsa_String(&server, cli->srv_name_slash);
+	init_lsa_String(&server, cli->cli->srv_name_slash);
 	init_lsa_String(&account, username);
 
 	/* Calculate the MD4 hash (NT compatible) of the password */
@@ -295,7 +242,7 @@
 	info_in.info1 = info1;
 
 	status = rpccli_samr_Connect5(cli, mem_ctx,
-				      cli->srv_name_slash,
+				      cli->cli->srv_name_slash,
 				      access_mask,
 				      1,
 				      &info_in,
@@ -307,7 +254,7 @@
 	}
 
 	status = rpccli_samr_Connect4(cli, mem_ctx,
-				      cli->srv_name_slash,
+				      cli->cli->srv_name_slash,
 				      SAMR_CONNECT_W2K,
 				      access_mask,
 				      connect_pol);
@@ -316,7 +263,7 @@
 	}
 
 	status = rpccli_samr_Connect2(cli, mem_ctx,
-				      cli->srv_name_slash,
+				      cli->cli->srv_name_slash,
 				      access_mask,
 				      connect_pol);
 	return status;

Modified: branches/samba/upstream/source/rpc_client/cli_spoolss.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_spoolss.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_spoolss.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -467,7 +467,7 @@
         make_spoolss_q_open_printer_ex( &in, printername, datatype,
 		access_required, station, username );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_OPENPRINTEREX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_OPENPRINTEREX,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_open_printer_ex,
@@ -494,7 +494,7 @@
 
         make_spoolss_q_closeprinter( &in, pol );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_CLOSEPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_CLOSEPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_closeprinter,
@@ -524,7 +524,7 @@
 	rpcbuf_init(&buffer, offered, mem_ctx);
 	make_spoolss_q_enumprinters( &in, flags, name, level, &buffer, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERS,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERS,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumprinters,
@@ -540,7 +540,7 @@
 		rpcbuf_init(&buffer, offered, mem_ctx);
 		make_spoolss_q_enumprinters( &in, flags, name, level, &buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERS,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERS,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumprinters,
@@ -597,14 +597,14 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
         strupper_m(server);
 
 	offered = 0;
 	rpcbuf_init(&buffer, offered, mem_ctx);
 	make_spoolss_q_enumports( &in, server, level, &buffer, offered );
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPORTS,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPORTS,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumports,
@@ -620,7 +620,7 @@
 		rpcbuf_init(&buffer, offered, mem_ctx);
 		make_spoolss_q_enumports( &in, server, level, &buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPORTS,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPORTS,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumports,
@@ -673,7 +673,7 @@
 	rpcbuf_init(&buffer, offered, mem_ctx);
 	make_spoolss_q_getprinter( mem_ctx, &in, pol, level, &buffer, offered );
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getprinter,
@@ -689,7 +689,7 @@
 		rpcbuf_init(&buffer, offered, mem_ctx);
 		make_spoolss_q_getprinter( mem_ctx, &in, pol, level, &buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTER,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTER,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getprinter,
@@ -749,7 +749,7 @@
 
 	make_spoolss_q_setprinter( mem_ctx, &in, pol, level, ctr, command );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_SETPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_SETPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_setprinter,
@@ -777,7 +777,7 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 
-	fstrcpy(server, cli->desthost);
+	fstrcpy(server, cli->cli->desthost);
 	strupper_m(server);
 
 	offered = 0;
@@ -785,7 +785,7 @@
 	make_spoolss_q_getprinterdriver2( &in, pol, env, level, 
 		version, 2, &buffer, offered);
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDRIVER2,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDRIVER2,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getprinterdriver2,
@@ -802,7 +802,7 @@
 		make_spoolss_q_getprinterdriver2( &in, pol, env, level, 
 			version, 2, &buffer, offered);
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDRIVER2,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDRIVER2,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getprinterdriver2,
@@ -855,7 +855,7 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
         strupper_m(server);
 
 	offered = 0;
@@ -863,7 +863,7 @@
 	make_spoolss_q_enumprinterdrivers( &in, server, env, level, 
 		&buffer, offered);
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERDRIVERS,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERDRIVERS,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumprinterdrivers,
@@ -880,7 +880,7 @@
 		make_spoolss_q_enumprinterdrivers( &in, server, env, level, 
 			&buffer, offered);
 	
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERDRIVERS,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERDRIVERS,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumprinterdrivers,
@@ -938,7 +938,7 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
         strupper_m(server);
 
 	offered = 0;
@@ -946,7 +946,7 @@
 	make_spoolss_q_getprinterdriverdir( &in, server, env, level, 
 		&buffer, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getprinterdriverdir,
@@ -963,7 +963,7 @@
 		make_spoolss_q_getprinterdriverdir( &in, server, env, level, 
 			&buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getprinterdriverdir,
@@ -996,12 +996,12 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 	
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
         strupper_m(server);
 
 	make_spoolss_q_addprinterdriver( mem_ctx, &in, server, level, ctr );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ADDPRINTERDRIVER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ADDPRINTERDRIVER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_addprinterdriver,
@@ -1026,17 +1026,17 @@
 	ZERO_STRUCT(out);
 	
         slprintf(client, sizeof(fstring)-1, "\\\\%s", global_myname());
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
 	
         strupper_m(client);
         strupper_m(server);
 
-	fstrcpy  (user, cli->auth->user_name);
+	fstrcpy  (user, cli->user_name);
 
 	make_spoolss_q_addprinterex( mem_ctx, &in, server, client, 
 		user, level, ctr);
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ADDPRINTEREX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ADDPRINTEREX,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_addprinterex,
@@ -1061,12 +1061,12 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(server);
 
 	make_spoolss_q_deleteprinterdriverex( mem_ctx, &in, server, arch, driver, version );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEPRINTERDRIVEREX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_DELETEPRINTERDRIVEREX,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_deleteprinterdriverex,
@@ -1091,12 +1091,12 @@
 	ZERO_STRUCT(in);
 	ZERO_STRUCT(out);
 
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
+        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
         strupper_m(server);
 
 	make_spoolss_q_deleteprinterdriver( mem_ctx, &in, server, arch, driver );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEPRINTERDRIVER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_DELETEPRINTERDRIVER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_deleteprinterdriver,
@@ -1129,7 +1129,7 @@
 	make_spoolss_q_getprintprocessordirectory( &in, name, 
 		environment, level, &buffer, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTPROCESSORDIRECTORY,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTPROCESSORDIRECTORY,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getprintprocessordirectory,
@@ -1146,7 +1146,7 @@
 		make_spoolss_q_getprintprocessordirectory( &in, name, 
 			environment, level, &buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTPROCESSORDIRECTORY,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTPROCESSORDIRECTORY,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getprintprocessordirectory,
@@ -1177,7 +1177,7 @@
 
         make_spoolss_q_addform( &in, handle, level, form );
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ADDFORM,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ADDFORM,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_addform,
@@ -1203,7 +1203,7 @@
 
         make_spoolss_q_setform( &in, handle, level, form_name, form );
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_SETFORM,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_SETFORM,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_setform,
@@ -1233,7 +1233,7 @@
 	rpcbuf_init(&buffer, offered, mem_ctx);
 	make_spoolss_q_getform( &in, handle, formname, level, &buffer, offered );
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETFORM,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETFORM,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getform,
@@ -1249,7 +1249,7 @@
 		rpcbuf_init(&buffer, offered, mem_ctx);
 		make_spoolss_q_getform( &in, handle, formname, level, &buffer, offered );
 	
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETFORM,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETFORM,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getform,
@@ -1282,7 +1282,7 @@
 
         make_spoolss_q_deleteform( &in, handle, form_name );
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEFORM,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_DELETEFORM,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_deleteform,
@@ -1312,7 +1312,7 @@
 	rpcbuf_init(&buffer, offered, mem_ctx);
 	make_spoolss_q_enumforms( &in, handle, level, &buffer, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMFORMS,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMFORMS,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumforms,
@@ -1328,7 +1328,7 @@
 		rpcbuf_init(&buffer, offered, mem_ctx);
 		make_spoolss_q_enumforms( &in, handle, level, &buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMFORMS,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMFORMS,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumforms,
@@ -1369,7 +1369,7 @@
 	make_spoolss_q_enumjobs( &in, hnd, firstjob, num_jobs, level, 
 		&buffer, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMJOBS,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMJOBS,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumjobs,
@@ -1386,7 +1386,7 @@
 		make_spoolss_q_enumjobs( &in, hnd, firstjob, num_jobs, level, 
 			&buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMJOBS,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMJOBS,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumjobs,
@@ -1434,7 +1434,7 @@
 
         make_spoolss_q_setjob( &in, hnd, jobid, level, command );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_SETJOB,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_SETJOB,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_setjob,
@@ -1464,7 +1464,7 @@
 	rpcbuf_init(&buffer, offered, mem_ctx);
 	make_spoolss_q_getjob( &in, hnd, jobid, level, &buffer, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETJOB,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETJOB,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getjob,
@@ -1480,7 +1480,7 @@
 		rpcbuf_init(&buffer, offered, mem_ctx);
 		make_spoolss_q_getjob( &in, hnd, jobid, level, &buffer, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETJOB,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETJOB,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getjob,
@@ -1524,7 +1524,7 @@
 
         make_spoolss_q_startpageprinter( &in, hnd );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_STARTPAGEPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_STARTPAGEPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_startpageprinter,
@@ -1549,7 +1549,7 @@
 
         make_spoolss_q_endpageprinter( &in, hnd );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENDPAGEPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENDPAGEPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_endpageprinter,
@@ -1578,7 +1578,7 @@
         make_spoolss_q_startdocprinter( &in, hnd, level, docname, 
 		outputfile, datatype );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_STARTDOCPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_STARTDOCPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_startdocprinter,
@@ -1605,7 +1605,7 @@
 
         make_spoolss_q_enddocprinter( &in, hnd );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENDDOCPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENDDOCPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enddocprinter,
@@ -1633,7 +1633,7 @@
 	offered = 0;
 	make_spoolss_q_getprinterdata( &in, hnd, valuename, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDATA,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDATA,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getprinterdata,
@@ -1648,7 +1648,7 @@
 		
 		make_spoolss_q_getprinterdata( &in, hnd, valuename, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDATA,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDATA,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getprinterdata,
@@ -1690,7 +1690,7 @@
 
 	make_spoolss_q_getprinterdataex( &in, hnd, keyname, valuename, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDATAEX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDATAEX,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_getprinterdataex,
@@ -1705,7 +1705,7 @@
 		
 		make_spoolss_q_getprinterdataex( &in, hnd, keyname, valuename, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDATAEX,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_GETPRINTERDATAEX,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_getprinterdataex,
@@ -1745,7 +1745,7 @@
         make_spoolss_q_setprinterdata( &in, hnd, value->valuename, 
 		value->type, (char *)value->data_p, value->size);
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_SETPRINTERDATA,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_SETPRINTERDATA,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_setprinterdata,
@@ -1772,7 +1772,7 @@
         make_spoolss_q_setprinterdataex( &in, hnd, keyname, value->valuename, 
 		value->type, (char *)value->data_p, value->size);
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_SETPRINTERDATAEX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_SETPRINTERDATAEX,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_setprinterdataex,
@@ -1800,7 +1800,7 @@
 
         make_spoolss_q_enumprinterdata( &in, hnd, ndx, value_offered, data_offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERDATA,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERDATA,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumprinterdata,
@@ -1850,7 +1850,7 @@
 	offered = 0;
 	make_spoolss_q_enumprinterdataex( &in, hnd, keyname, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERDATAEX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERDATAEX,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumprinterdataex,
@@ -1865,7 +1865,7 @@
 		
 	        make_spoolss_q_enumprinterdataex( &in, hnd, keyname, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERDATAEX,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERDATAEX,
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumprinterdataex,
@@ -1904,7 +1904,7 @@
 
         make_spoolss_q_writeprinter( &in, hnd, data_size, data );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_WRITEPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_WRITEPRINTER,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_writeprinter,
@@ -1932,7 +1932,7 @@
 
         make_spoolss_q_deleteprinterdata( &in, hnd, valuename );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEPRINTERDATA,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_DELETEPRINTERDATA,
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_deleteprinterdata,
@@ -1958,7 +1958,7 @@
 
         make_spoolss_q_deleteprinterdataex( &in, hnd, keyname, valuename );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEPRINTERDATAEX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_DELETEPRINTERDATAEX, 
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_deleteprinterdataex,
@@ -1985,7 +1985,7 @@
 
 	make_spoolss_q_enumprinterkey( &in, hnd, keyname, offered );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERKEY,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERKEY, 
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_enumprinterkey,
@@ -2000,7 +2000,7 @@
 		
 		make_spoolss_q_enumprinterkey( &in, hnd, keyname, offered );
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERKEY,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ENUMPRINTERKEY, 
 		            in, out, 
 		            qbuf, rbuf,
 		            spoolss_io_q_enumprinterkey,
@@ -2039,7 +2039,7 @@
 
         make_spoolss_q_deleteprinterkey( &in, hnd, keyname );
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEPRINTERKEY,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_DELETEPRINTERKEY, 
 	            in, out, 
 	            qbuf, rbuf,
 	            spoolss_io_q_deleteprinterkey,

Modified: branches/samba/upstream/source/rpc_client/cli_spoolss_notify.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_spoolss_notify.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_spoolss_notify.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -50,7 +50,7 @@
 
 	/* Marshall data and send request */
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_REPLYOPENPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_REPLYOPENPRINTER,
 		q, r,
 		qbuf, rbuf,
 		spoolss_io_q_replyopenprinter,
@@ -81,7 +81,7 @@
 
 	/* Marshall data and send request */
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_REPLYCLOSEPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_REPLYCLOSEPRINTER,
 		q, r,
 		qbuf, rbuf,
 		spoolss_io_q_replycloseprinter,
@@ -115,7 +115,7 @@
 
 	/* Marshall data and send request */
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ROUTERREPLYPRINTER,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_ROUTERREPLYPRINTER,
 		q, r,
 		qbuf, rbuf,
 		spoolss_io_q_routerreplyprinter,
@@ -166,7 +166,7 @@
 
 	/* Marshall data and send request */
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_RRPCN,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_RRPCN,
 		q, r,
 		qbuf, rbuf,
 		spoolss_io_q_reply_rrpcn,
@@ -206,7 +206,7 @@
 
 	/* Marshall data and send request */
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_RFFPCNEX,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SPOOLSS, SPOOLSS_RFFPCNEX,
 		q, r,
 		qbuf, rbuf,
 		spoolss_io_q_rffpcnex,

Modified: branches/samba/upstream/source/rpc_client/cli_svcctl.c
===================================================================
--- branches/samba/upstream/source/rpc_client/cli_svcctl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/cli_svcctl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,6 +21,42 @@
 #include "includes.h"
 #include "rpc_client.h"
 
+struct svc_state_msg {
+	uint32 flag;
+	const char *message;
+};
+
+static struct svc_state_msg state_msg_table[] = {
+	{ SVCCTL_STOPPED,            "stopped" },
+	{ SVCCTL_START_PENDING,      "start pending" },
+	{ SVCCTL_STOP_PENDING,       "stop pending" },
+	{ SVCCTL_RUNNING,            "running" },
+	{ SVCCTL_CONTINUE_PENDING,   "resume pending" },
+	{ SVCCTL_PAUSE_PENDING,      "pause pending" },
+	{ SVCCTL_PAUSED,             "paused" },
+	{ 0,                          NULL }
+};
+	
+
+/********************************************************************
+********************************************************************/
+const char* svc_status_string( uint32 state )
+{
+	fstring msg;
+	int i;
+	
+	fstr_sprintf( msg, "Unknown State [%d]", state );
+	
+	for ( i=0; state_msg_table[i].message; i++ ) {
+		if ( state_msg_table[i].flag == state ) {
+			fstrcpy( msg, state_msg_table[i].message );
+			break;	
+		}
+	}
+	
+	return talloc_strdup(talloc_tos(), msg);
+}
+
 /*******************************************************************
 *******************************************************************/
 
@@ -49,7 +85,7 @@
 	/* first time is to get the buffer size */
 	in.buffer_size = 0;
 
-	CLI_DO_RPC_WERR( cli, mem_ctx, &ndr_table_svcctl.syntax_id, SVCCTL_ENUM_SERVICES_STATUS_W,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SVCCTL, SVCCTL_ENUM_SERVICES_STATUS_W, 
 	            in, out, 
 	            qbuf, rbuf,
 	            svcctl_io_q_enum_services_status,
@@ -61,8 +97,7 @@
 	if ( W_ERROR_EQUAL( out.status, WERR_MORE_DATA ) ) {
 		in.buffer_size = out.needed;
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &ndr_table_svcctl.syntax_id,
-				 SVCCTL_ENUM_SERVICES_STATUS_W,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SVCCTL, SVCCTL_ENUM_SERVICES_STATUS_W, 
 		            in, out, 
 		            qbuf, rbuf,
 		            svcctl_io_q_enum_services_status,
@@ -108,8 +143,7 @@
 	in.buffer_size = 0;
 	
 	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &ndr_table_svcctl.syntax_id,
-			 SVCCTL_QUERY_SERVICE_CONFIG_W,
+	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SVCCTL, SVCCTL_QUERY_SERVICE_CONFIG_W, 
 	            in, out, 
 	            qbuf, rbuf,
 	            svcctl_io_q_query_service_config,
@@ -119,8 +153,7 @@
 	if ( W_ERROR_EQUAL( out.status, WERR_INSUFFICIENT_BUFFER ) ) {
 		in.buffer_size = out.needed;
 
-		CLI_DO_RPC_WERR( cli, mem_ctx, &ndr_table_svcctl.syntax_id,
-				 SVCCTL_QUERY_SERVICE_CONFIG_W,
+		CLI_DO_RPC_WERR( cli, mem_ctx, PI_SVCCTL, SVCCTL_QUERY_SERVICE_CONFIG_W,
 		            in, out, 
 		            qbuf, rbuf,
 		            svcctl_io_q_query_service_config,

Modified: branches/samba/upstream/source/rpc_client/init_netlogon.c
===================================================================
--- branches/samba/upstream/source/rpc_client/init_netlogon.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/init_netlogon.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -137,179 +137,6 @@
 }
 
 /*******************************************************************
- gets a domain user's groups from their already-calculated NT_USER_TOKEN
- ********************************************************************/
-
-static NTSTATUS nt_token_to_group_list(TALLOC_CTX *mem_ctx,
-				       const DOM_SID *domain_sid,
-				       size_t num_sids,
-				       const DOM_SID *sids,
-				       int *numgroups, DOM_GID **pgids)
-{
-	int i;
-
-	*numgroups=0;
-	*pgids = NULL;
-
-	for (i=0; i<num_sids; i++) {
-		DOM_GID gid;
-		if (!sid_peek_check_rid(domain_sid, &sids[i], &gid.g_rid)) {
-			continue;
-		}
-		gid.attr = (SE_GROUP_MANDATORY|SE_GROUP_ENABLED_BY_DEFAULT|
-			    SE_GROUP_ENABLED);
-		ADD_TO_ARRAY(mem_ctx, DOM_GID, gid, pgids, numgroups);
-		if (*pgids == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-	return NT_STATUS_OK;
-}
-
-/****************************************************************************
- inits a netr_SamInfo3 structure from an auth_serversupplied_info. sam3 must
- already be initialized and is used as the talloc parent for its members.
-*****************************************************************************/
-
-NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info,
-				uint8_t pipe_session_key[16],
-				struct netr_SamInfo3 *sam3)
-{
-	struct samu *sampw;
-	DOM_GID *gids = NULL;
-	const DOM_SID *user_sid = NULL;
-	const DOM_SID *group_sid = NULL;
-	DOM_SID domain_sid;
-	uint32 user_rid, group_rid;
-	NTSTATUS status;
-
-	int num_gids = 0;
-	const char *my_name;
-
-	struct netr_UserSessionKey user_session_key;
-	struct netr_LMSessionKey lm_session_key;
-
-	NTTIME last_logon, last_logoff, acct_expiry, last_password_change;
-	NTTIME allow_password_change, force_password_change;
-	struct samr_RidWithAttributeArray groups;
-	int i;
-	struct dom_sid2 *sid = NULL;
-
-	ZERO_STRUCT(user_session_key);
-	ZERO_STRUCT(lm_session_key);
-
-	sampw = server_info->sam_account;
-
-	user_sid = pdb_get_user_sid(sampw);
-	group_sid = pdb_get_group_sid(sampw);
-
-	if ((user_sid == NULL) || (group_sid == NULL)) {
-		DEBUG(1, ("_netr_LogonSamLogon: User without group or user SID\n"));
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	sid_copy(&domain_sid, user_sid);
-	sid_split_rid(&domain_sid, &user_rid);
-
-	sid = sid_dup_talloc(sam3, &domain_sid);
-	if (!sid) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	if (!sid_peek_check_rid(&domain_sid, group_sid, &group_rid)) {
-		DEBUG(1, ("_netr_LogonSamLogon: user %s\\%s has user sid "
-			  "%s\n but group sid %s.\n"
-			  "The conflicting domain portions are not "
-			  "supported for NETLOGON calls\n",
-			  pdb_get_domain(sampw),
-			  pdb_get_username(sampw),
-			  sid_string_dbg(user_sid),
-			  sid_string_dbg(group_sid)));
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	if(server_info->login_server) {
-		my_name = server_info->login_server;
-	} else {
-		my_name = global_myname();
-	}
-
-	status = nt_token_to_group_list(sam3, &domain_sid,
-					server_info->num_sids,
-					server_info->sids,
-					&num_gids, &gids);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (server_info->user_session_key.length) {
-		memcpy(user_session_key.key,
-		       server_info->user_session_key.data,
-		       MIN(sizeof(user_session_key.key),
-			   server_info->user_session_key.length));
-		SamOEMhash(user_session_key.key, pipe_session_key, 16);
-	}
-	if (server_info->lm_session_key.length) {
-		memcpy(lm_session_key.key,
-		       server_info->lm_session_key.data,
-		       MIN(sizeof(lm_session_key.key),
-			   server_info->lm_session_key.length));
-		SamOEMhash(lm_session_key.key, pipe_session_key, 8);
-	}
-
-	groups.count = num_gids;
-	groups.rids = TALLOC_ARRAY(sam3, struct samr_RidWithAttribute, groups.count);
-	if (!groups.rids) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	for (i=0; i < groups.count; i++) {
-		groups.rids[i].rid = gids[i].g_rid;
-		groups.rids[i].attributes = gids[i].attr;
-	}
-
-	unix_to_nt_time(&last_logon, pdb_get_logon_time(sampw));
-	unix_to_nt_time(&last_logoff, get_time_t_max());
-	unix_to_nt_time(&acct_expiry, get_time_t_max());
-	unix_to_nt_time(&last_password_change, pdb_get_pass_last_set_time(sampw));
-	unix_to_nt_time(&allow_password_change, pdb_get_pass_can_change_time(sampw));
-	unix_to_nt_time(&force_password_change, pdb_get_pass_must_change_time(sampw));
-
-	init_netr_SamInfo3(sam3,
-			   last_logon,
-			   last_logoff,
-			   acct_expiry,
-			   last_password_change,
-			   allow_password_change,
-			   force_password_change,
-			   talloc_strdup(sam3, pdb_get_username(sampw)),
-			   talloc_strdup(sam3, pdb_get_fullname(sampw)),
-			   talloc_strdup(sam3, pdb_get_logon_script(sampw)),
-			   talloc_strdup(sam3, pdb_get_profile_path(sampw)),
-			   talloc_strdup(sam3, pdb_get_homedir(sampw)),
-			   talloc_strdup(sam3, pdb_get_dir_drive(sampw)),
-			   0, /* logon_count */
-			   0, /* bad_password_count */
-			   user_rid,
-			   group_rid,
-			   groups,
-			   NETLOGON_EXTRA_SIDS,
-			   user_session_key,
-			   my_name,
-			   talloc_strdup(sam3, pdb_get_domain(sampw)),
-			   sid,
-			   lm_session_key,
-			   pdb_get_acct_ctrl(sampw),
-			   0, /* sidcount */
-			   NULL); /* struct netr_SidAttr *sids */
-	ZERO_STRUCT(user_session_key);
-	ZERO_STRUCT(lm_session_key);
-
-	return NT_STATUS_OK;
-}
-
-/*******************************************************************
  inits a structure.
 ********************************************************************/
 

Modified: branches/samba/upstream/source/rpc_client/init_samr.c
===================================================================
--- branches/samba/upstream/source/rpc_client/init_samr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/init_samr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -460,49 +460,3 @@
 	memcpy(r->password.data, data, sizeof(r->password.data));
 	r->pw_len = pw_len;
 }
-
-/*************************************************************************
- inits a samr_CryptPasswordEx structure
- *************************************************************************/
-
-void init_samr_CryptPasswordEx(const char *pwd,
-			       DATA_BLOB *session_key,
-			       struct samr_CryptPasswordEx *pwd_buf)
-{
-	/* samr_CryptPasswordEx */
-
-	uchar pwbuf[532];
-	struct MD5Context md5_ctx;
-	uint8_t confounder[16];
-	DATA_BLOB confounded_session_key = data_blob(NULL, 16);
-
-	encode_pw_buffer(pwbuf, pwd, STR_UNICODE);
-
-	generate_random_buffer((uint8_t *)confounder, 16);
-
-	MD5Init(&md5_ctx);
-	MD5Update(&md5_ctx, confounder, 16);
-	MD5Update(&md5_ctx, session_key->data,
-			    session_key->length);
-	MD5Final(confounded_session_key.data, &md5_ctx);
-
-	SamOEMhashBlob(pwbuf, 516, &confounded_session_key);
-	memcpy(&pwbuf[516], confounder, 16);
-
-	memcpy(pwd_buf->data, pwbuf, sizeof(pwbuf));
-	data_blob_free(&confounded_session_key);
-}
-
-/*************************************************************************
- inits a samr_CryptPassword structure
- *************************************************************************/
-
-void init_samr_CryptPassword(const char *pwd,
-			     DATA_BLOB *session_key,
-			     struct samr_CryptPassword *pwd_buf)
-{
-	/* samr_CryptPassword */
-
-	encode_pw_buffer(pwd_buf->data, pwd, STR_UNICODE);
-	SamOEMhashBlob(pwd_buf->data, 516, session_key);
-}

Modified: branches/samba/upstream/source/rpc_client/ndr.c
===================================================================
--- branches/samba/upstream/source/rpc_client/ndr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_client/ndr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -23,7 +23,7 @@
 
 
 NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli,
-			TALLOC_CTX *mem_ctx,
+			TALLOC_CTX *mem_ctx, int p_idx,
 			const struct ndr_interface_table *table,
 			uint32 opnum, void *r)
 {
@@ -35,8 +35,7 @@
 	NTSTATUS status;
 	enum ndr_err_code ndr_err;
 
-	SMB_ASSERT(ndr_syntax_id_equal(&table->syntax_id,
-				       &cli->abstract_syntax));
+	SMB_ASSERT(cli->pipe_idx == p_idx);
 	SMB_ASSERT(table->num_calls > opnum);
 
 	call = &table->calls[opnum];

Modified: branches/samba/upstream/source/rpc_parse/parse_rpc.c
===================================================================
--- branches/samba/upstream/source/rpc_parse/parse_rpc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_parse/parse_rpc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -26,6 +26,215 @@
 #define DBGC_CLASS DBGC_RPC_PARSE
 
 /*******************************************************************
+interface/version dce/rpc pipe identification
+********************************************************************/
+
+#define TRANS_SYNT_V2                       \
+{                                           \
+	{                                   \
+		0x8a885d04, 0x1ceb, 0x11c9, \
+		{ 0x9f, 0xe8 },             \
+		{ 0x08, 0x00,               \
+       		  0x2b, 0x10, 0x48, 0x60 }  \
+	}, 0x02                             \
+}
+
+#define SYNT_NETLOGON_V2                    \
+{                                           \
+	{                                   \
+		0x8a885d04, 0x1ceb, 0x11c9, \
+		{ 0x9f, 0xe8 },             \
+		{ 0x08, 0x00,               \
+		  0x2b, 0x10, 0x48, 0x60 }  \
+	}, 0x02                             \
+}
+
+#define SYNT_WKSSVC_V1                      \
+{                                           \
+	{                                   \
+		0x6bffd098, 0xa112, 0x3610, \
+		{ 0x98, 0x33 },             \
+		{ 0x46, 0xc3,               \
+		  0xf8, 0x7e, 0x34, 0x5a }  \
+	}, 0x01                             \
+}
+
+#define SYNT_SRVSVC_V3                      \
+{                                           \
+	{                                   \
+		0x4b324fc8, 0x1670, 0x01d3, \
+		{ 0x12, 0x78 },             \
+		{ 0x5a, 0x47,               \
+		  0xbf, 0x6e, 0xe1, 0x88 }  \
+	}, 0x03                             \
+}
+
+#define SYNT_LSARPC_V0                      \
+{                                           \
+	{                                   \
+		0x12345778, 0x1234, 0xabcd, \
+		{ 0xef, 0x00 },             \
+		{ 0x01, 0x23,               \
+		  0x45, 0x67, 0x89, 0xab }  \
+	}, 0x00                             \
+}
+
+#define SYNT_LSARPC_V0_DS                \
+{                                           \
+	{                                   \
+		0x3919286a, 0xb10c, 0x11d0, \
+		{ 0x9b, 0xa8 },             \
+		{ 0x00, 0xc0,               \
+		  0x4f, 0xd9, 0x2e, 0xf5 }  \
+	}, 0x00                             \
+}
+
+#define SYNT_SAMR_V1                        \
+{                                           \
+	{                                   \
+		0x12345778, 0x1234, 0xabcd, \
+		{ 0xef, 0x00 },             \
+		{ 0x01, 0x23,               \
+		  0x45, 0x67, 0x89, 0xac }  \
+	}, 0x01                             \
+}
+
+#define SYNT_NETLOGON_V1                    \
+{                                           \
+	{                                   \
+		0x12345678, 0x1234, 0xabcd, \
+		{ 0xef, 0x00 },             \
+		{ 0x01, 0x23,               \
+		  0x45, 0x67, 0xcf, 0xfb }  \
+	}, 0x01                             \
+}
+
+#define SYNT_WINREG_V1                      \
+{                                           \
+	{                                   \
+		0x338cd001, 0x2244, 0x31f1, \
+		{ 0xaa, 0xaa },             \
+		{ 0x90, 0x00,               \
+		  0x38, 0x00, 0x10, 0x03 }  \
+	}, 0x01                             \
+}
+
+#define SYNT_SPOOLSS_V1                     \
+{                                           \
+	{                                   \
+		0x12345678, 0x1234, 0xabcd, \
+		{ 0xef, 0x00 },             \
+		{ 0x01, 0x23,               \
+		  0x45, 0x67, 0x89, 0xab }  \
+	}, 0x01                             \
+}
+
+#define SYNT_NONE_V0                        \
+{                                           \
+	{                                   \
+		0x0, 0x0, 0x0,              \
+		{ 0x00, 0x00 },             \
+		{ 0x00, 0x00,               \
+		  0x00, 0x00, 0x00, 0x00 }  \
+	}, 0x00                             \
+}
+
+#define SYNT_NETDFS_V3                      \
+{                                           \
+        {                                   \
+                0x4fc742e0, 0x4a10, 0x11cf, \
+                { 0x82, 0x73 },             \
+		{ 0x00, 0xaa,               \
+                  0x00, 0x4a, 0xe6, 0x73 }  \
+        }, 0x03                             \
+}
+
+#define SYNT_ECHO_V1                        \
+{                                           \
+        {                                   \
+                0x60a15ec5, 0x4de8, 0x11d7, \
+                { 0xa6, 0x37 },             \
+		{ 0x00, 0x50,               \
+                  0x56, 0xa2, 0x01, 0x82 }  \
+        }, 0x01                             \
+}
+
+#define SYNT_SHUTDOWN_V1                    \
+{                                           \
+        {                                   \
+                0x894de0c0, 0x0d55, 0x11d3, \
+                { 0xa3, 0x22 },             \
+		{ 0x00, 0xc0,               \
+                  0x4f, 0xa3, 0x21, 0xa1 }  \
+        }, 0x01                             \
+}
+
+#define SYNT_SVCCTL_V2                      \
+{                                           \
+	{                                   \
+		0x367abb81, 0x9844, 0x35f1, \
+                { 0xad, 0x32 },             \
+                { 0x98, 0xf0,               \
+                  0x38, 0x00, 0x10, 0x03 }  \
+	}, 0x02                             \
+}
+
+
+#define SYNT_EVENTLOG_V0		    \
+{					    \
+	{				    \
+		0x82273fdc, 0xe32a, 0x18c3, \
+		{ 0x3f, 0x78 },		    \
+		{ 0x82, 0x79,		    \
+		  0x29, 0xdc, 0x23, 0xea }  \
+	}, 0x00				    \
+}
+
+#define SYNT_NTSVCS_V1                      \
+{                                           \
+	{                                   \
+		0x8d9f4e40, 0xa03d, 0x11ce, \
+		{ 0x8f, 0x69},		    \
+                { 0x08, 0x00,               \
+                  0x3e, 0x30, 0x05, 0x1b }  \
+	}, 0x01                             \
+}
+
+/*
+ * IMPORTANT!!  If you update this structure, make sure to
+ * update the index #defines in smb.h.
+ */
+
+const struct pipe_id_info pipe_names [] =
+{
+	/* client pipe , abstract syntax       , server pipe   , transfer syntax */
+	{ PIPE_LSARPC  , SYNT_LSARPC_V0        , PIPE_LSASS    , TRANS_SYNT_V2 },
+	{ PIPE_LSARPC  , SYNT_LSARPC_V0_DS     , PIPE_LSASS    , TRANS_SYNT_V2 },
+	{ PIPE_SAMR    , SYNT_SAMR_V1          , PIPE_LSASS    , TRANS_SYNT_V2 },
+	{ PIPE_NETLOGON, SYNT_NETLOGON_V1      , PIPE_LSASS    , TRANS_SYNT_V2 },
+	{ PIPE_SRVSVC  , SYNT_SRVSVC_V3        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
+	{ PIPE_WKSSVC  , SYNT_WKSSVC_V1        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
+	{ PIPE_WINREG  , SYNT_WINREG_V1        , PIPE_WINREG   , TRANS_SYNT_V2 },
+	{ PIPE_SPOOLSS , SYNT_SPOOLSS_V1       , PIPE_SPOOLSS  , TRANS_SYNT_V2 },
+	{ PIPE_NETDFS  , SYNT_NETDFS_V3        , PIPE_NETDFS   , TRANS_SYNT_V2 },
+	{ PIPE_ECHO    , SYNT_ECHO_V1          , PIPE_ECHO     , TRANS_SYNT_V2 },
+	{ PIPE_SHUTDOWN, SYNT_SHUTDOWN_V1      , PIPE_SHUTDOWN , TRANS_SYNT_V2 },
+	{ PIPE_SVCCTL  , SYNT_SVCCTL_V2        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
+	{ PIPE_EVENTLOG, SYNT_EVENTLOG_V0      , PIPE_EVENTLOG , TRANS_SYNT_V2 },
+	{ PIPE_NTSVCS  , SYNT_NTSVCS_V1        , PIPE_NTSVCS   , TRANS_SYNT_V2 },
+	{ NULL         , SYNT_NONE_V0          , NULL          , SYNT_NONE_V0  }
+};
+
+/****************************************************************************
+ Return the pipe name from the index.
+ ****************************************************************************/
+
+const char *cli_get_pipe_name(int pipe_idx)
+{
+	return &pipe_names[pipe_idx].client_pipe[5];
+}
+
+/*******************************************************************
  Inits an RPC_HDR structure.
 ********************************************************************/
 
@@ -117,7 +326,7 @@
 	if (!smb_io_uuid(  "uuid", &ifc->uuid, ps, depth))
 		return False;
 
-	if(!prs_uint32 ("version", ps, depth, &ifc->if_version))
+	if(!prs_uint32 ("version", ps, depth, &ifc->version))
 		return False;
 
 	return True;
@@ -191,8 +400,7 @@
  Note the transfer pointer must remain valid until this is marshalled.
 ********************************************************************/
 
-void init_rpc_context(RPC_CONTEXT *rpc_ctx, uint16 context_id,
-		      const RPC_IFACE *abstract, const RPC_IFACE *transfer)
+void init_rpc_context(RPC_CONTEXT *rpc_ctx, uint16 context_id, RPC_IFACE *abstract, RPC_IFACE *transfer)
 {
 	rpc_ctx->context_id   = context_id   ; /* presentation context identifier (0x0) */
 	rpc_ctx->num_transfer_syntaxes = 1 ; /* the number of syntaxes (has always been 1?)(0x1) */
@@ -639,13 +847,3 @@
 
 	return True;
 }
-
-const struct ndr_syntax_id syntax_spoolss = {
-	{
-		0x12345678, 0x1234, 0xabcd,
-		{ 0xef, 0x00 },
-		{ 0x01, 0x23,
-		  0x45, 0x67, 0x89, 0xab }
-	}, 0x01
-};
-

Modified: branches/samba/upstream/source/rpc_parse/parse_spoolss.c
===================================================================
--- branches/samba/upstream/source/rpc_parse/parse_spoolss.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_parse/parse_spoolss.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1164,7 +1164,7 @@
 	if (!smb_io_pol_hnd("printer handle",&(r_u->handle),ps,depth))
 		return False;	
 
-	if (!prs_werror("status", ps, depth, &(r_u->status)))
+	if (!prs_werror("status code", ps, depth, &(r_u->status)))
 		return False;
 		
 	return True;
@@ -1225,7 +1225,7 @@
 	if (!smb_io_pol_hnd("printer handle",&(r_u->handle),ps,depth))
 		return False;
 
-	if (!prs_werror("status", ps, depth, &(r_u->status)))
+	if (!prs_werror("status code", ps, depth, &(r_u->status)))
 		return False;
 
 	return True;
@@ -7724,3 +7724,4 @@
 
 	return True;
 }
+

Modified: branches/samba/upstream/source/rpc_parse/parse_svcctl.c
===================================================================
--- branches/samba/upstream/source/rpc_parse/parse_svcctl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_parse/parse_svcctl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -262,6 +262,62 @@
 /*******************************************************************
 ********************************************************************/
 
+bool svcctl_io_q_enum_dependent_services(const char *desc, SVCCTL_Q_ENUM_DEPENDENT_SERVICES *q_u, prs_struct *ps, int depth)
+{
+	if (q_u == NULL)
+		return False;
+
+	prs_debug(ps, depth, desc, "svcctl_io_q_enum_dependent_services");
+	depth++;
+
+	if(!prs_align(ps))
+		return False;
+
+	if(!smb_io_pol_hnd("service_pol", &q_u->handle, ps, depth))
+		return False;
+
+	if(!prs_uint32("state", ps, depth, &q_u->state))
+		return False;
+	if(!prs_uint32("buffer_size", ps, depth, &q_u->buffer_size))
+		return False;
+
+	return True;
+}
+
+/*******************************************************************
+********************************************************************/
+
+bool svcctl_io_r_enum_dependent_services(const char *desc, SVCCTL_R_ENUM_DEPENDENT_SERVICES *r_u, prs_struct *ps, int depth)
+{
+	if (r_u == NULL)
+		return False;
+
+	prs_debug(ps, depth, desc, "svcctl_io_r_enum_dependent_services");
+	depth++;
+
+	if(!prs_align(ps))
+		return False;
+
+	if (!prs_rpcbuffer("", ps, depth, &r_u->buffer))
+		return False;
+
+	if(!prs_align(ps))
+		return False;
+
+	if(!prs_uint32("needed", ps, depth, &r_u->needed))
+		return False;
+	if(!prs_uint32("returned", ps, depth, &r_u->returned))
+		return False;
+
+	if(!prs_werror("status", ps, depth, &r_u->status))
+		return False;
+
+	return True;
+}
+
+/*******************************************************************
+********************************************************************/
+
 bool svcctl_io_q_query_service_config(const char *desc, SVCCTL_Q_QUERY_SERVICE_CONFIG *q_u, prs_struct *ps, int depth)
 {
 	if (q_u == NULL)

Modified: branches/samba/upstream/source/rpc_server/srv_dfs_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_dfs_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_dfs_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -78,6 +78,8 @@
 	jn->referral_count += 1;
 	old_referral_list = jn->referral_list;
 
+	vfs_ChDir(p->conn,p->conn->connectpath);
+
 	if (jn->referral_count < 1) {
 		return WERR_NOMEM;
 	}
@@ -98,8 +100,10 @@
 	jn->referral_list[jn->referral_count-1].alternate_path = altpath;
 
 	if(!create_msdfs_link(jn)) {
+		vfs_ChDir(p->conn,p->conn->connectpath);
 		return WERR_DFS_CANT_CREATE_JUNCT;
 	}
+	vfs_ChDir(p->conn,p->conn->connectpath);
 
 	return WERR_OK;
 }
@@ -143,8 +147,10 @@
 	/* if no server-share pair given, remove the msdfs link completely */
 	if(!r->in.servername && !r->in.sharename) {
 		if(!remove_msdfs_link(jn)) {
+			vfs_ChDir(p->conn,p->conn->connectpath);
 			return WERR_DFS_NO_SUCH_VOL;
 		}
+		vfs_ChDir(p->conn,p->conn->connectpath);
 	} else {
 		int i=0;
 		/* compare each referral in the list with the one to remove */
@@ -172,13 +178,16 @@
 		/* Only one referral, remove it */
 		if(jn->referral_count == 1) {
 			if(!remove_msdfs_link(jn)) {
+				vfs_ChDir(p->conn,p->conn->connectpath);
 				return WERR_DFS_NO_SUCH_VOL;
 			}
 		} else {
 			if(!create_msdfs_link(jn)) {
+				vfs_ChDir(p->conn,p->conn->connectpath);
 				return WERR_DFS_CANT_CREATE_JUNCT;
 			}
 		}
+		vfs_ChDir(p->conn,p->conn->connectpath);
 	}
 
 	return WERR_OK;
@@ -278,6 +287,7 @@
 		num_jn = 0;
 		jn = NULL;
 	}
+	vfs_ChDir(p->conn,p->conn->connectpath);
 
 	DEBUG(5,("_dfs_Enum: %u junctions found in Dfs, doing level %d\n",
 				(unsigned int)num_jn, r->in.level));
@@ -360,9 +370,12 @@
 	if(!NT_STATUS_IS_OK(get_referred_path(ctx, r->in.dfs_entry_path,
 					jn, &consumedcnt, &self_ref)) ||
 			consumedcnt < strlen(r->in.dfs_entry_path)) {
+		vfs_ChDir(p->conn,p->conn->connectpath);
 		return WERR_DFS_NO_SUCH_VOL;
 	}
 
+	vfs_ChDir(p->conn,p->conn->connectpath);
+
 	switch (r->in.level) {
 		case 1:
 			r->out.info->info1 = TALLOC_ZERO_P(ctx,struct dfs_Info1);

Modified: branches/samba/upstream/source/rpc_server/srv_eventlog.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_eventlog.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_eventlog.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -106,8 +106,7 @@
 NTSTATUS rpc_eventlog2_init(void)
 {
 	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, 
-		"eventlog", "eventlog", &ndr_table_eventlog.syntax_id,
-		api_eventlog_cmds,
+		"eventlog", "eventlog", api_eventlog_cmds,
 		sizeof(api_eventlog_cmds)/sizeof(struct api_struct));
 }
 

Modified: branches/samba/upstream/source/rpc_server/srv_initshutdown_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_initshutdown_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_initshutdown_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -37,7 +37,7 @@
 	s.in.message = r->in.message;
 	s.in.timeout = r->in.timeout;
 	s.in.force_apps = r->in.force_apps;
-	s.in.do_reboot = r->in.do_reboot;
+	s.in.reboot = r->in.reboot;
 	s.in.reason = 0;
 
 	/* thunk down to _winreg_InitiateSystemShutdownEx() 
@@ -56,7 +56,7 @@
 	s.in.message = r->in.message;
 	s.in.timeout = r->in.timeout;
 	s.in.force_apps = r->in.force_apps;
-	s.in.do_reboot = r->in.do_reboot;
+	s.in.reboot = r->in.reboot;
 	s.in.reason = r->in.reason;
 
 	return _winreg_InitiateSystemShutdownEx( p, &s);

Modified: branches/samba/upstream/source/rpc_server/srv_lsa_hnd.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_lsa_hnd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_lsa_hnd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -256,15 +256,21 @@
 	   anonymous > 0 */
 
 	if (lp_restrict_anonymous() > 0) {
+		user_struct *user = get_valid_user_struct(p->vuid);
 
 		/* schannel, so we must be ok */
 		if (p->pipe_bound && (p->auth.auth_type == PIPE_AUTH_TYPE_SCHANNEL)) {
 			return True;
 		}
 
-		if (p->server_info->guest) {
+		if (!user) {
+			DEBUG(3, ("invalid vuid %d\n", p->vuid));
 			return False;
 		}
+
+		if (user->guest) {
+			return False;
+		}
 	}
 
 	return True;

Modified: branches/samba/upstream/source/rpc_server/srv_lsa_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_lsa_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_lsa_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -487,7 +487,7 @@
 	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&info))
 		return NT_STATUS_INVALID_HANDLE;
 
-	/* check if the user has enough rights */
+	/* check if the user have enough rights */
 	if (!(info->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
 		return NT_STATUS_ACCESS_DENIED;
 
@@ -568,7 +568,7 @@
 
 		uint32 policy_def = LSA_AUDIT_POLICY_ALL;
 
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_VIEW_AUDIT_INFORMATION)) {
 			DEBUG(10,("_lsa_QueryInfoPolicy: insufficient access rights\n"));
 			return NT_STATUS_ACCESS_DENIED;
@@ -596,7 +596,7 @@
 		break;
 		}
 	case 0x03:
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
 			return NT_STATUS_ACCESS_DENIED;
 
@@ -632,7 +632,7 @@
 		init_dom_query_3(&info->domain, name, sid);
 		break;
 	case 0x05:
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
 			return NT_STATUS_ACCESS_DENIED;
 
@@ -643,7 +643,7 @@
 		init_dom_query_5(&info->account_domain, name, sid);
 		break;
 	case 0x06:
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
 			return NT_STATUS_ACCESS_DENIED;
 
@@ -884,7 +884,7 @@
 			return NT_STATUS_INVALID_HANDLE;
 		}
 
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_LOOKUP_NAMES)) {
 			return NT_STATUS_ACCESS_DENIED;
 		}
@@ -1016,7 +1016,7 @@
 		goto done;
 	}
 
-	/* check if the user has enough rights */
+	/* check if the user have enough rights */
 	if (!(handle->access & LSA_POLICY_LOOKUP_NAMES)) {
 		status = NT_STATUS_ACCESS_DENIED;
 		goto done;
@@ -1155,7 +1155,7 @@
 			goto done;
 		}
 
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_LOOKUP_NAMES)) {
 			status = NT_STATUS_ACCESS_DENIED;
 			goto done;
@@ -1308,7 +1308,7 @@
 	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&handle))
 		return NT_STATUS_INVALID_HANDLE;
 
-	/* check if the user has enough rights
+	/* check if the user have enough rights
 	   I don't know if it's the right one. not documented.  */
 
 	if (!(handle->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
@@ -1364,7 +1364,7 @@
 	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&handle))
 		return NT_STATUS_INVALID_HANDLE;
 
-	/* check if the user has enough rights */
+	/* check if the user have enough rights */
 
 	/*
 	 * I don't know if it's the right one. not documented.
@@ -1463,10 +1463,14 @@
 			  struct lsa_GetUserName *r)
 {
 	const char *username, *domname;
+	user_struct *vuser = get_valid_user_struct(p->vuid);
 	struct lsa_String *account_name = NULL;
 	struct lsa_String *authority_name = NULL;
 
-	if (p->server_info->guest) {
+	if (vuser == NULL)
+		return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
+
+	if (vuser->guest) {
 		/*
 		 * I'm 99% sure this is not the right place to do this,
 		 * global_sid_Anonymous should probably be put into the token
@@ -1477,8 +1481,8 @@
 			return NT_STATUS_NO_MEMORY;
 		}
 	} else {
-		username = p->server_info->sanitized_username;
-		domname = pdb_get_domain(p->server_info->sam_account);
+		username = vuser->user.smb_name;
+		domname = vuser->user.domain;
 	}
 
 	account_name = TALLOC_ZERO_P(p->mem_ctx, struct lsa_String);
@@ -1514,7 +1518,7 @@
 	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&handle))
 		return NT_STATUS_INVALID_HANDLE;
 
-	/* check if the user has enough rights */
+	/* check if the user have enough rights */
 
 	/*
 	 * I don't know if it's the right one. not documented.
@@ -1563,7 +1567,7 @@
 	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&handle))
 		return NT_STATUS_INVALID_HANDLE;
 
-	/* check if the user has enough rights */
+	/* check if the user have enough rights */
 
 	/*
 	 * I don't know if it's the right one. not documented.
@@ -1812,7 +1816,7 @@
 	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&handle))
 		return NT_STATUS_INVALID_HANDLE;
 
-	/* check if the user has enough rights */
+	/* check if the user have enough rights */
 	if (!(handle->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
 		return NT_STATUS_ACCESS_DENIED;
 
@@ -1869,7 +1873,7 @@
 
 	switch (q_u->info_class) {
 	case 0x0c:
-		/* check if the user has enough rights */
+		/* check if the user have enough rights */
 		if (!(handle->access & LSA_POLICY_VIEW_LOCAL_INFORMATION))
 			return NT_STATUS_ACCESS_DENIED;
 

Modified: branches/samba/upstream/source/rpc_server/srv_netlog_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_netlog_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_netlog_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -377,7 +377,7 @@
 				  struct netr_ServerReqChallenge *r)
 {
 	if (!p->dc) {
-		p->dc = TALLOC_ZERO_P(p, struct dcinfo);
+		p->dc = TALLOC_ZERO_P(p->pipe_state_mem_ctx, struct dcinfo);
 		if (!p->dc) {
 			return NT_STATUS_NO_MEMORY;
 		}
@@ -521,16 +521,7 @@
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
-	/* 0x000001ff */
-	srv_flgs = NETLOGON_NEG_ACCOUNT_LOCKOUT |
-		   NETLOGON_NEG_PERSISTENT_SAMREPL |
-		   NETLOGON_NEG_ARCFOUR |
-		   NETLOGON_NEG_PROMOTION_COUNT |
-		   NETLOGON_NEG_CHANGELOG_BDC |
-		   NETLOGON_NEG_FULL_SYNC_REPL |
-		   NETLOGON_NEG_MULTIPLE_SIDS |
-		   NETLOGON_NEG_REDO |
-		   NETLOGON_NEG_PASSWORD_CHANGE_REFUSAL;
+	srv_flgs = 0x000001ff;
 
 	if (lp_server_schannel() != false) {
 		srv_flgs |= NETLOGON_NEG_SCHANNEL;
@@ -591,8 +582,9 @@
 	if (!p->dc) {
 		/* Restore the saved state of the netlogon creds. */
 		become_root();
-		ret = secrets_restore_schannel_session_info(p, remote_machine,
-							    &p->dc);
+		ret = secrets_restore_schannel_session_info(p->pipe_state_mem_ctx,
+							remote_machine,
+							&p->dc);
 		unbecome_root();
 		if (!ret) {
 			return NT_STATUS_INVALID_HANDLE;
@@ -621,7 +613,9 @@
 	}
 
 	become_root();
-	secrets_store_schannel_session_info(p, remote_machine, p->dc);
+	secrets_store_schannel_session_info(p->pipe_state_mem_ctx,
+						remote_machine,
+						p->dc);
 	ret = pdb_getsampwnam(sampass, p->dc->mach_acct);
 	unbecome_root();
 
@@ -711,6 +705,9 @@
 	}
 
 
+	if (!get_valid_user_struct(p->vuid))
+		return NT_STATUS_NO_SUCH_USER;
+
 	/* Using the remote machine name for the creds store: */
 	/* r->in.computer_name */
 
@@ -719,8 +716,9 @@
 		bool ret;
 
 		become_root();
-		ret = secrets_restore_schannel_session_info(
-			p, r->in.computer_name, &p->dc);
+		ret = secrets_restore_schannel_session_info(p->pipe_state_mem_ctx,
+							    r->in.computer_name,
+							    &p->dc);
 		unbecome_root();
 		if (!ret) {
 			return NT_STATUS_INVALID_HANDLE;
@@ -741,12 +739,44 @@
 
 	/* We must store the creds state after an update. */
 	become_root();
-	secrets_store_schannel_session_info(p, r->in.computer_name, p->dc);
+	secrets_store_schannel_session_info(p->pipe_state_mem_ctx,
+					    r->in.computer_name,
+					    p->dc);
 	unbecome_root();
 
 	return NT_STATUS_OK;
 }
 
+/*******************************************************************
+ gets a domain user's groups from their already-calculated NT_USER_TOKEN
+ ********************************************************************/
+
+static NTSTATUS nt_token_to_group_list(TALLOC_CTX *mem_ctx,
+				       const DOM_SID *domain_sid,
+				       size_t num_sids,
+				       const DOM_SID *sids,
+				       int *numgroups, DOM_GID **pgids)
+{
+	int i;
+
+	*numgroups=0;
+	*pgids = NULL;
+
+	for (i=0; i<num_sids; i++) {
+		DOM_GID gid;
+		if (!sid_peek_check_rid(domain_sid, &sids[i], &gid.g_rid)) {
+			continue;
+		}
+		gid.attr = (SE_GROUP_MANDATORY|SE_GROUP_ENABLED_BY_DEFAULT|
+			    SE_GROUP_ENABLED);
+		ADD_TO_ARRAY(mem_ctx, DOM_GID, gid, pgids, numgroups);
+		if (*pgids == NULL) {
+			return NT_STATUS_NO_MEMORY;
+		}
+	}
+	return NT_STATUS_OK;
+}
+
 /*************************************************************************
  _netr_LogonSamLogon
  *************************************************************************/
@@ -760,8 +790,8 @@
 	fstring nt_username, nt_domain, nt_workstation;
 	auth_usersupplied_info *user_info = NULL;
 	auth_serversupplied_info *server_info = NULL;
+	struct samu *sampw;
 	struct auth_context *auth_context = NULL;
-	uint8_t pipe_session_key[16];
 	bool process_creds = true;
 
 	switch (p->hdr_req.opnum) {
@@ -796,6 +826,9 @@
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
+	if (!get_valid_user_struct(p->vuid))
+		return NT_STATUS_NO_SUCH_USER;
+
 	if (process_creds) {
 		fstring remote_machine;
 
@@ -811,8 +844,9 @@
 			bool ret;
 
 			become_root();
-			ret = secrets_restore_schannel_session_info(
-				p, remote_machine, &p->dc);
+			ret = secrets_restore_schannel_session_info(p->pipe_state_mem_ctx,
+					remote_machine,
+					&p->dc);
 			unbecome_root();
 			if (!ret) {
 				return NT_STATUS_INVALID_HANDLE;
@@ -833,7 +867,9 @@
 
 		/* We must store the creds state after an update. */
 		become_root();
-		secrets_store_schannel_session_info(p, remote_machine, p->dc);
+		secrets_store_schannel_session_info(p->pipe_state_mem_ctx,
+					remote_machine,
+					p->dc);
 		unbecome_root();
 	}
 
@@ -972,19 +1008,160 @@
            the SAM Local Security Authority should record that the user is
            logged in to the domain.  */
 
-	if (process_creds) {
-		/* Get the pipe session key from the creds. */
-		memcpy(pipe_session_key, p->dc->sess_key, 16);
-	} else {
-		/* Get the pipe session key from the schannel. */
-		if ((p->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL)
-		    || (p->auth.a_u.schannel_auth == NULL)) {
-			return NT_STATUS_INVALID_HANDLE;
+	{
+		DOM_GID *gids = NULL;
+		const DOM_SID *user_sid = NULL;
+		const DOM_SID *group_sid = NULL;
+		DOM_SID domain_sid;
+		uint32 user_rid, group_rid;
+
+		int num_gids = 0;
+		const char *my_name;
+
+		struct netr_UserSessionKey user_session_key;
+		struct netr_LMSessionKey lm_session_key;
+		unsigned char pipe_session_key[16];
+
+		NTTIME last_logon, last_logoff, acct_expiry, last_password_change;
+		NTTIME allow_password_change, force_password_change;
+		struct samr_RidWithAttributeArray groups;
+		int i;
+		struct dom_sid2 *sid = NULL;
+
+		ZERO_STRUCT(user_session_key);
+		ZERO_STRUCT(lm_session_key);
+
+		sampw = server_info->sam_account;
+
+		user_sid = pdb_get_user_sid(sampw);
+		group_sid = pdb_get_group_sid(sampw);
+
+		if ((user_sid == NULL) || (group_sid == NULL)) {
+			DEBUG(1, ("_netr_LogonSamLogon: User without group or user SID\n"));
+			return NT_STATUS_UNSUCCESSFUL;
 		}
-		memcpy(pipe_session_key, p->auth.a_u.schannel_auth->sess_key, 16);
+
+		sid_copy(&domain_sid, user_sid);
+		sid_split_rid(&domain_sid, &user_rid);
+
+		sid = sid_dup_talloc(p->mem_ctx, &domain_sid);
+		if (!sid) {
+			return NT_STATUS_NO_MEMORY;
+		}
+
+		if (!sid_peek_check_rid(&domain_sid, group_sid, &group_rid)) {
+			DEBUG(1, ("_netr_LogonSamLogon: user %s\\%s has user sid "
+				  "%s\n but group sid %s.\n"
+				  "The conflicting domain portions are not "
+				  "supported for NETLOGON calls\n",
+				  pdb_get_domain(sampw),
+				  pdb_get_username(sampw),
+				  sid_string_dbg(user_sid),
+				  sid_string_dbg(group_sid)));
+			return NT_STATUS_UNSUCCESSFUL;
+		}
+
+		if(server_info->login_server) {
+		        my_name = server_info->login_server;
+		} else {
+		        my_name = global_myname();
+		}
+
+		status = nt_token_to_group_list(p->mem_ctx, &domain_sid,
+						server_info->num_sids,
+						server_info->sids,
+						&num_gids, &gids);
+
+		if (!NT_STATUS_IS_OK(status)) {
+			return status;
+		}
+
+		if (server_info->user_session_key.length) {
+			memcpy(user_session_key.key,
+			       server_info->user_session_key.data,
+			       MIN(sizeof(user_session_key.key),
+				   server_info->user_session_key.length));
+			if (process_creds) {
+				/* Get the pipe session key from the creds. */
+				memcpy(pipe_session_key, p->dc->sess_key, 16);
+			} else {
+				/* Get the pipe session key from the schannel. */
+				if (p->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL || p->auth.a_u.schannel_auth == NULL) {
+					return NT_STATUS_INVALID_HANDLE;
+				}
+				memcpy(pipe_session_key, p->auth.a_u.schannel_auth->sess_key, 16);
+			}
+			SamOEMhash(user_session_key.key, pipe_session_key, 16);
+			memset(pipe_session_key, '\0', 16);
+		}
+		if (server_info->lm_session_key.length) {
+			memcpy(lm_session_key.key,
+			       server_info->lm_session_key.data,
+			       MIN(sizeof(lm_session_key.key),
+				   server_info->lm_session_key.length));
+			if (process_creds) {
+				/* Get the pipe session key from the creds. */
+				memcpy(pipe_session_key, p->dc->sess_key, 16);
+			} else {
+				/* Get the pipe session key from the schannel. */
+				if (p->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL || p->auth.a_u.schannel_auth == NULL) {
+					return NT_STATUS_INVALID_HANDLE;
+				}
+				memcpy(pipe_session_key, p->auth.a_u.schannel_auth->sess_key, 16);
+			}
+			SamOEMhash(lm_session_key.key, pipe_session_key, 8);
+			memset(pipe_session_key, '\0', 16);
+		}
+
+		groups.count = num_gids;
+		groups.rids = TALLOC_ARRAY(p->mem_ctx, struct samr_RidWithAttribute,
+					   groups.count);
+		if (!groups.rids) {
+			return NT_STATUS_NO_MEMORY;
+		}
+
+		for (i=0; i < groups.count; i++) {
+			groups.rids[i].rid = gids[i].g_rid;
+			groups.rids[i].attributes = gids[i].attr;
+		}
+
+		unix_to_nt_time(&last_logon, pdb_get_logon_time(sampw));
+		unix_to_nt_time(&last_logoff, get_time_t_max());
+		unix_to_nt_time(&acct_expiry, get_time_t_max());
+		unix_to_nt_time(&last_password_change, pdb_get_pass_last_set_time(sampw));
+		unix_to_nt_time(&allow_password_change, pdb_get_pass_can_change_time(sampw));
+		unix_to_nt_time(&force_password_change, pdb_get_pass_must_change_time(sampw));
+
+		init_netr_SamInfo3(sam3,
+				   last_logon,
+				   last_logoff,
+				   acct_expiry,
+				   last_password_change,
+				   allow_password_change,
+				   force_password_change,
+				   talloc_strdup(p->mem_ctx, pdb_get_username(sampw)),
+				   talloc_strdup(p->mem_ctx, pdb_get_fullname(sampw)),
+				   talloc_strdup(p->mem_ctx, pdb_get_logon_script(sampw)),
+				   talloc_strdup(p->mem_ctx, pdb_get_profile_path(sampw)),
+				   talloc_strdup(p->mem_ctx, pdb_get_homedir(sampw)),
+				   talloc_strdup(p->mem_ctx, pdb_get_dir_drive(sampw)),
+				   0, /* logon_count */
+				   0, /* bad_password_count */
+				   user_rid,
+				   group_rid,
+				   groups,
+				   NETLOGON_EXTRA_SIDS,
+				   user_session_key,
+				   my_name,
+				   talloc_strdup(p->mem_ctx, pdb_get_domain(sampw)),
+				   sid,
+				   lm_session_key,
+				   pdb_get_acct_ctrl(sampw),
+				   0, /* sidcount */
+				   NULL); /* struct netr_SidAttr *sids */
+		ZERO_STRUCT(user_session_key);
+		ZERO_STRUCT(lm_session_key);
 	}
-
-	status = serverinfo_to_SamInfo3(server_info, pipe_session_key, sam3);
 	TALLOC_FREE(server_info);
 	return status;
 }

Modified: branches/samba/upstream/source/rpc_server/srv_ntsvcs.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_ntsvcs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_ntsvcs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -155,9 +155,6 @@
 
 NTSTATUS rpc_ntsvcs2_init(void)
 {
-  return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
-				    "ntsvcs", "ntsvcs",
-				    &ndr_table_ntsvcs.syntax_id,
-				    api_ntsvcs_cmds,
+  return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "ntsvcs", "ntsvcs", api_ntsvcs_cmds,
 				    sizeof(api_ntsvcs_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/rpc_server/srv_pipe.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_pipe.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_pipe.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -29,6 +29,7 @@
 
 #include "includes.h"
 
+extern struct pipe_id_info pipe_names[];
 extern struct current_user current_user;
 
 #undef DBGC_CLASS
@@ -605,15 +606,19 @@
 
 static bool pipe_ntlmssp_verify_final(pipes_struct *p, DATA_BLOB *p_resp_blob)
 {
-	DATA_BLOB session_key, reply;
+	DATA_BLOB reply;
 	NTSTATUS status;
 	AUTH_NTLMSSP_STATE *a = p->auth.a_u.auth_ntlmssp_state;
-	bool ret;
 
 	DEBUG(5,("pipe_ntlmssp_verify_final: pipe %s checking user details\n", p->name));
 
 	ZERO_STRUCT(reply);
 
+	memset(p->user_name, '\0', sizeof(p->user_name));
+	memset(p->pipe_user_name, '\0', sizeof(p->pipe_user_name));
+	memset(p->domain, '\0', sizeof(p->domain));
+	memset(p->wks, '\0', sizeof(p->wks));
+
 	/* Set up for non-authenticated user. */
 	TALLOC_FREE(p->pipe_user.nt_user_token);
 	p->pipe_user.ut.ngroups = 0;
@@ -651,23 +656,38 @@
 			return False;
 		}
 	}
+	
+	fstrcpy(p->user_name, a->ntlmssp_state->user);
+	fstrcpy(p->pipe_user_name, a->server_info->unix_name);
+	fstrcpy(p->domain, a->ntlmssp_state->domain);
+	fstrcpy(p->wks, a->ntlmssp_state->workstation);
 
-	DEBUG(5, ("pipe_ntlmssp_verify_final: OK: user: %s domain: %s "
-		  "workstation: %s\n", a->ntlmssp_state->user,
-		  a->ntlmssp_state->domain, a->ntlmssp_state->workstation));
+	DEBUG(5,("pipe_ntlmssp_verify_final: OK: user: %s domain: %s workstation: %s\n",
+		p->user_name, p->domain, p->wks));
 
 	/*
 	 * Store the UNIX credential data (uid/gid pair) in the pipe structure.
 	 */
 
-	p->pipe_user.ut.uid = a->server_info->utok.uid;
-	p->pipe_user.ut.gid = a->server_info->utok.gid;
+	p->pipe_user.ut.uid = a->server_info->uid;
+	p->pipe_user.ut.gid = a->server_info->gid;
 	
-	p->pipe_user.ut.ngroups = a->server_info->utok.ngroups;
+	/*
+	 * We're an authenticated bind over smbd, so the session key needs to
+	 * be set to "SystemLibraryDTC". Weird, but this is what Windows
+	 * does. See the RPC-SAMBA3SESSIONKEY.
+	 */
+
+	data_blob_free(&p->session_key);
+	p->session_key = generic_session_key();
+	if (!p->session_key.data) {
+		return False;
+	}
+
+	p->pipe_user.ut.ngroups = a->server_info->n_groups;
 	if (p->pipe_user.ut.ngroups) {
-		if (!(p->pipe_user.ut.groups = (gid_t *)memdup(
-			      a->server_info->utok.groups,
-			      sizeof(gid_t) * p->pipe_user.ut.ngroups))) {
+		if (!(p->pipe_user.ut.groups = (gid_t *)memdup(a->server_info->groups,
+						sizeof(gid_t) * p->pipe_user.ut.ngroups))) {
 			DEBUG(0,("failed to memdup group list to p->pipe_user.groups\n"));
 			return False;
 		}
@@ -682,29 +702,6 @@
 		return False;
 	}
 
-	TALLOC_FREE(p->server_info);
-
-	p->server_info = copy_serverinfo(p, a->server_info);
-	if (p->server_info == NULL) {
-		DEBUG(0, ("copy_serverinfo failed\n"));
-		return false;
-	}
-
-	/*
-	 * We're an authenticated bind over smb, so the session key needs to
-	 * be set to "SystemLibraryDTC". Weird, but this is what Windows
-	 * does. See the RPC-SAMBA3SESSIONKEY.
-	 */
-
-	session_key = generic_session_key();
-	if (session_key.data == NULL) {
-		return False;
-	}
-
-	ret = server_info_set_session_key(p->server_info, session_key);
-
-	data_blob_free(&session_key);
-
 	return True;
 }
 
@@ -717,7 +714,6 @@
 		const char *clnt;
 		const char *srv;
 	} pipe;
-	struct ndr_syntax_id rpc_interface;
 	const struct api_struct *cmds;
 	int n_cmds;
 };
@@ -985,42 +981,53 @@
 bool check_bind_req(struct pipes_struct *p, RPC_IFACE* abstract,
                     RPC_IFACE* transfer, uint32 context_id)
 {
+	char *pipe_name = p->name;
 	int i=0;
-	struct pipe_rpc_fns *context_fns;
+	fstring pname;
+	
+	fstrcpy(pname,"\\PIPE\\");
+	fstrcat(pname,pipe_name);
 
-	DEBUG(3,("check_bind_req for %s\n", p->name));
+	DEBUG(3,("check_bind_req for %s\n", pname));
 
 	/* we have to check all now since win2k introduced a new UUID on the lsaprpc pipe */
-
-	for (i=0; i<rpc_lookup_size; i++) {
-		DEBUGADD(10, ("checking %s\n", rpc_lookup[i].pipe.clnt));
-		if (strequal(rpc_lookup[i].pipe.clnt, p->name)
-		    && ndr_syntax_id_equal(
-			    abstract, &rpc_lookup[i].rpc_interface)
-		    && ndr_syntax_id_equal(
-			    transfer, &ndr_transfer_syntax)) {
+		
+	for ( i=0; pipe_names[i].client_pipe; i++ ) {
+		DEBUGADD(10,("checking %s\n", pipe_names[i].client_pipe));
+		if ( strequal(pipe_names[i].client_pipe, pname)
+			&& (abstract->version == pipe_names[i].abstr_syntax.version) 
+			&& (memcmp(&abstract->uuid, &pipe_names[i].abstr_syntax.uuid, sizeof(struct GUID)) == 0)
+			&& (transfer->version == pipe_names[i].trans_syntax.version)
+			&& (memcmp(&transfer->uuid, &pipe_names[i].trans_syntax.uuid, sizeof(struct GUID)) == 0) ) {
+			struct api_struct 	*fns = NULL;
+			int 			n_fns = 0;
+			PIPE_RPC_FNS		*context_fns;
+			
+			if ( !(context_fns = SMB_MALLOC_P(PIPE_RPC_FNS)) ) {
+				DEBUG(0,("check_bind_req: malloc() failed!\n"));
+				return False;
+			}
+			
+			/* save the RPC function table associated with this bind */
+			
+			get_pipe_fns(i, &fns, &n_fns);
+			
+			context_fns->cmds = fns;
+			context_fns->n_cmds = n_fns;
+			context_fns->context_id = context_id;
+			
+			/* add to the list of open contexts */
+			
+			DLIST_ADD( p->contexts, context_fns );
+			
 			break;
 		}
 	}
 
-	if (i == rpc_lookup_size) {
-		return false;
-	}
-
-	context_fns = SMB_MALLOC_P(struct pipe_rpc_fns);
-	if (context_fns == NULL) {
-		DEBUG(0,("check_bind_req: malloc() failed!\n"));
+	if(pipe_names[i].client_pipe == NULL) {
 		return False;
 	}
 
-	context_fns->cmds = rpc_lookup[i].cmds;
-	context_fns->n_cmds = rpc_lookup[i].n_cmds;
-	context_fns->context_id = context_id;
-
-	/* add to the list of open contexts */
-
-	DLIST_ADD( p->contexts, context_fns );
-
 	return True;
 }
 
@@ -1028,10 +1035,7 @@
  Register commands to an RPC pipe
 *******************************************************************/
 
-NTSTATUS rpc_pipe_register_commands(int version, const char *clnt,
-				    const char *srv,
-				    const struct ndr_syntax_id *interface,
-				    const struct api_struct *cmds, int size)
+NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *srv, const struct api_struct *cmds, int size)
 {
         struct rpc_table *rpc_entry;
 
@@ -1071,46 +1075,12 @@
         ZERO_STRUCTP(rpc_entry);
         rpc_entry->pipe.clnt = SMB_STRDUP(clnt);
         rpc_entry->pipe.srv = SMB_STRDUP(srv);
-	rpc_entry->rpc_interface = *interface;
         rpc_entry->cmds = cmds;
         rpc_entry->n_cmds = size;
         
         return NT_STATUS_OK;
 }
 
-/**
- * Is a named pipe known?
- * @param[in] cli_filename	The pipe name requested by the client
- * @result			Do we want to serve this?
- */
-bool is_known_pipename(const char *cli_filename)
-{
-	const char *pipename = cli_filename;
-	int i;
-
-	if (strnequal(pipename, "\\PIPE\\", 6)) {
-		pipename += 5;
-	}
-
-	if (*pipename == '\\') {
-		pipename += 1;
-	}
-
-	if (lp_disable_spoolss() && strequal(pipename, "spoolss")) {
-		DEBUG(10, ("refusing spoolss access\n"));
-		return false;
-	}
-
-	for (i=0; i<rpc_lookup_size; i++) {
-		if (strequal(pipename, rpc_lookup[i].pipe.clnt)) {
-			return true;
-		}
-	}
-
-	DEBUG(10, ("is_known_pipename: %s unknown\n", cli_filename));
-	return false;
-}
-
 /*******************************************************************
  Handle a SPNEGO krb5 bind auth.
 *******************************************************************/
@@ -1360,7 +1330,6 @@
 	bool ret;
 	struct dcinfo *pdcinfo;
 	uint32 flags;
-	DATA_BLOB session_key;
 
 	if (!smb_io_rpc_auth_schannel_neg("", &neg, rpc_in_p, 0)) {
 		DEBUG(0,("pipe_schannel_auth_bind: Could not unmarshal SCHANNEL auth neg\n"));
@@ -1382,7 +1351,7 @@
 		return False;
 	}
 
-	p->auth.a_u.schannel_auth = talloc(p, struct schannel_auth_struct);
+	p->auth.a_u.schannel_auth = TALLOC_P(p->pipe_state_mem_ctx, struct schannel_auth_struct);
 	if (!p->auth.a_u.schannel_auth) {
 		TALLOC_FREE(pdcinfo);
 		return False;
@@ -1407,22 +1376,14 @@
 	 * anymore.
 	 */
 
-	session_key = generic_session_key();
-	if (session_key.data == NULL) {
+	data_blob_free(&p->session_key);
+	p->session_key = generic_session_key();
+	if (p->session_key.data == NULL) {
 		DEBUG(0, ("pipe_schannel_auth_bind: Could not alloc session"
 			  " key\n"));
-		return false;
+		return False;
 	}
 
-	ret = server_info_set_session_key(p->server_info, session_key);
-
-	data_blob_free(&session_key);
-
-	if (!ret) {
-		DEBUG(0, ("server_info_set_session_key failed\n"));
-		return false;
-	}
-
 	init_rpc_hdr_auth(&auth_info, RPC_SCHANNEL_AUTH_TYPE, pauth_info->auth_level, RPC_HDR_AUTH_LEN, 1);
 	if(!smb_io_rpc_hdr_auth("", &auth_info, pout_auth, 0)) {
 		DEBUG(0,("pipe_schannel_auth_bind: marshalling of RPC_HDR_AUTH failed.\n"));
@@ -1591,32 +1552,16 @@
 
 	DEBUG(5,("api_pipe_bind_req: decode request. %d\n", __LINE__));
 
-	ZERO_STRUCT(hdr_rb);
-
-	/* decode the bind request */
-
-	if(!smb_io_rpc_hdr_rb("", &hdr_rb, rpc_in_p, 0))  {
-		DEBUG(0,("api_pipe_bind_req: unable to unmarshall RPC_HDR_RB "
-			 "struct.\n"));
-		goto err_exit;
-	}
-
-	if (hdr_rb.num_contexts == 0) {
-		DEBUG(0, ("api_pipe_bind_req: no rpc contexts around\n"));
-		goto err_exit;
-	}
-
 	/*
 	 * Try and find the correct pipe name to ensure
 	 * that this is a pipe name we support.
 	 */
 
+
 	for (i = 0; i < rpc_lookup_size; i++) {
-		if (ndr_syntax_id_equal(&rpc_lookup[i].rpc_interface,
-					&hdr_rb.rpc_context[0].abstract)) {
+	        if (strequal(rpc_lookup[i].pipe.clnt, p->name)) {
 			DEBUG(3, ("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
 				rpc_lookup[i].pipe.clnt, rpc_lookup[i].pipe.srv));
-			fstrcpy(p->name, rpc_lookup[i].pipe.clnt);
 			fstrcpy(p->pipe_srv_name, rpc_lookup[i].pipe.srv);
 			break;
 		}
@@ -1648,6 +1593,14 @@
 		}
 	}
 
+	ZERO_STRUCT(hdr_rb);
+
+	/* decode the bind request */
+	if(!smb_io_rpc_hdr_rb("", &hdr_rb, rpc_in_p, 0))  {
+		DEBUG(0,("api_pipe_bind_req: unable to unmarshall RPC_HDR_RB struct.\n"));
+		goto err_exit;
+	}
+
 	/* name has to be \PIPE\xxxxx */
 	fstrcpy(ack_pipe_name, "\\PIPE\\");
 	fstrcat(ack_pipe_name, p->pipe_srv_name);
@@ -2284,9 +2237,6 @@
 	return;	
 }
 
-static bool api_rpcTNP(pipes_struct *p, const char *rpc_name, 
-		       const struct api_struct *api_rpc_cmds, int n_cmds);
-
 /****************************************************************************
  Find the correct RPC function to call for this request.
  If the pipe is authenticated then become the correct UNIX user
@@ -2336,8 +2286,8 @@
  Calls the underlying RPC function for a named pipe.
  ********************************************************************/
 
-static bool api_rpcTNP(pipes_struct *p, const char *rpc_name, 
-		       const struct api_struct *api_rpc_cmds, int n_cmds)
+bool api_rpcTNP(pipes_struct *p, const char *rpc_name, 
+		const struct api_struct *api_rpc_cmds, int n_cmds)
 {
 	int fn_num;
 	fstring name;
@@ -2417,3 +2367,63 @@
 
 	return True;
 }
+
+/*******************************************************************
+*******************************************************************/
+
+void get_pipe_fns( int idx, struct api_struct **fns, int *n_fns )
+{
+	struct api_struct *cmds = NULL;
+	int               n_cmds = 0;
+
+	switch ( idx ) {
+		case PI_LSARPC:
+			lsarpc_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_DSSETUP:
+			dssetup_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_SAMR:
+			samr_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_NETLOGON:
+			netlogon_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_SRVSVC:
+			srvsvc_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_WKSSVC:
+			wkssvc_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_WINREG:
+			winreg_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_SPOOLSS:
+			spoolss_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_NETDFS:
+			netdfs_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_SVCCTL:
+			svcctl2_get_pipe_fns( &cmds, &n_cmds );
+			break;
+	        case PI_EVENTLOG:
+			eventlog2_get_pipe_fns( &cmds, &n_cmds );
+			break;
+		case PI_NTSVCS:
+			ntsvcs2_get_pipe_fns( &cmds, &n_cmds );
+			break;
+#ifdef DEVELOPER
+		case PI_RPCECHO:
+			rpcecho_get_pipe_fns( &cmds, &n_cmds );
+			break;
+#endif
+		default:
+			DEBUG(0,("get_pipe_fns: Unknown pipe index! [%d]\n", idx));
+	}
+
+	*fns = cmds;
+	*n_fns = n_cmds;
+
+	return;
+}

Modified: branches/samba/upstream/source/rpc_server/srv_pipe_hnd.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_pipe_hnd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_pipe_hnd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -61,7 +61,12 @@
  * system _anyway_.  so that's the next step...
  */
 
-static int close_internal_rpc_pipe_hnd(struct pipes_struct *p);
+static ssize_t read_from_internal_pipe(void *np_conn, char *data, size_t n,
+		bool *is_data_outstanding);
+static ssize_t write_to_internal_pipe(void *np_conn, char *data, size_t n);
+static bool close_internal_rpc_pipe_hnd(void *np_conn);
+static void *make_internal_rpc_pipe_p(const char *pipe_name, 
+			      connection_struct *conn, uint16 vuid);
 
 /****************************************************************************
  Internal Pipe iterator functions.
@@ -210,13 +215,13 @@
 	p->namedpipe_create = make_internal_rpc_pipe_p;
 	p->namedpipe_read = read_from_internal_pipe;
 	p->namedpipe_write = write_to_internal_pipe;
+	p->namedpipe_close = close_internal_rpc_pipe_hnd;
 
-	p->np_state = p->namedpipe_create(pipe_name, conn->client_address,
-					  conn->server_info, vuid);
+	p->np_state = p->namedpipe_create(pipe_name, conn, vuid);
 
 	if (p->np_state == NULL) {
 		DEBUG(0,("open_rpc_pipe_p: make_internal_rpc_pipe_p failed.\n"));
-		TALLOC_FREE(p);
+		SAFE_FREE(p);
 		return NULL;
 	}
 
@@ -261,32 +266,46 @@
  Make an internal namedpipes structure
 ****************************************************************************/
 
-struct pipes_struct *make_internal_rpc_pipe_p(const char *pipe_name,
-					      const char *client_address,
-					      struct auth_serversupplied_info *server_info,
-					      uint16_t vuid)
+static void *make_internal_rpc_pipe_p(const char *pipe_name, 
+			      connection_struct *conn, uint16 vuid)
 {
 	pipes_struct *p;
+	user_struct *vuser = get_valid_user_struct(vuid);
 
 	DEBUG(4,("Create pipe requested %s\n", pipe_name));
 
-	p = TALLOC_ZERO_P(NULL, pipes_struct);
+	if (!vuser && vuid != UID_FIELD_INVALID) {
+		DEBUG(0,("ERROR! vuid %d did not map to a valid vuser struct!\n", vuid));
+		return NULL;
+	}
 
+	p = SMB_MALLOC_P(pipes_struct);
+
 	if (!p) {
 		DEBUG(0,("ERROR! no memory for pipes_struct!\n"));
 		return NULL;
 	}
 
+	ZERO_STRUCTP(p);
+
 	if ((p->mem_ctx = talloc_init("pipe %s %p", pipe_name, p)) == NULL) {
 		DEBUG(0,("open_rpc_pipe_p: talloc_init failed.\n"));
-		TALLOC_FREE(p);
+		SAFE_FREE(p);
 		return NULL;
 	}
 
+	if ((p->pipe_state_mem_ctx = talloc_init("pipe_state %s %p", pipe_name, p)) == NULL) {
+		DEBUG(0,("open_rpc_pipe_p: talloc_init failed.\n"));
+		talloc_destroy(p->mem_ctx);
+		SAFE_FREE(p);
+		return NULL;
+	}
+
 	if (!init_pipe_handle_list(p, pipe_name)) {
 		DEBUG(0,("open_rpc_pipe_p: init_pipe_handles failed.\n"));
 		talloc_destroy(p->mem_ctx);
-		TALLOC_FREE(p);
+		talloc_destroy(p->pipe_state_mem_ctx);
+		SAFE_FREE(p);
 		return NULL;
 	}
 
@@ -300,32 +319,31 @@
 	if(!prs_init(&p->in_data.data, RPC_MAX_PDU_FRAG_LEN, p->mem_ctx, MARSHALL)) {
 		DEBUG(0,("open_rpc_pipe_p: malloc fail for in_data struct.\n"));
 		talloc_destroy(p->mem_ctx);
+		talloc_destroy(p->pipe_state_mem_ctx);
 		close_policy_by_pipe(p);
-		TALLOC_FREE(p);
+		SAFE_FREE(p);
 		return NULL;
 	}
 
-	p->server_info = copy_serverinfo(p, server_info);
-	if (p->server_info == NULL) {
-		DEBUG(0, ("open_rpc_pipe_p: copy_serverinfo failed\n"));
-		talloc_destroy(p->mem_ctx);
-		close_policy_by_pipe(p);
-		TALLOC_FREE(p);
-		return NULL;
-	}
-
 	DLIST_ADD(InternalPipes, p);
 
-	memcpy(p->client_address, client_address, sizeof(p->client_address));
+	p->conn = conn;
 
+	p->vuid  = vuid;
+
 	p->endian = RPC_LITTLE_ENDIAN;
 
 	ZERO_STRUCT(p->pipe_user);
 
-	p->pipe_user.vuid = vuid;
 	p->pipe_user.ut.uid = (uid_t)-1;
 	p->pipe_user.ut.gid = (gid_t)-1;
-	p->pipe_user.nt_user_token = dup_nt_token(NULL, server_info->ptok);
+	
+	/* Store the session key and NT_TOKEN */
+	if (vuser) {
+		p->session_key = data_blob(vuser->session_key.data, vuser->session_key.length);
+		p->pipe_user.nt_user_token = dup_nt_token(
+			NULL, vuser->nt_user_token);
+	}
 
 	/*
 	 * Initialize the outgoing RPC data buffer with no memory.
@@ -337,9 +355,7 @@
 	DEBUG(4,("Created internal pipe %s (pipes_open=%d)\n",
 		 pipe_name, pipes_open));
 
-	talloc_set_destructor(p, close_internal_rpc_pipe_hnd);
-
-	return p;
+	return (void*)p;
 }
 
 /****************************************************************************
@@ -352,8 +368,8 @@
 	p->in_data.pdu_needed_len = 0;
 	p->in_data.pdu_received_len = 0;
 	p->fault_state = True;
-	DEBUG(10, ("set_incoming_fault: Setting fault state on pipe %s\n",
-		   p->name));
+	DEBUG(10,("set_incoming_fault: Setting fault state on pipe %s : vuid = 0x%x\n",
+		p->name, p->vuid ));
 }
 
 /****************************************************************************
@@ -922,8 +938,9 @@
  Accepts incoming data on an internal rpc pipe.
 ****************************************************************************/
 
-ssize_t write_to_internal_pipe(struct pipes_struct *p, char *data, size_t n)
+static ssize_t write_to_internal_pipe(void *np_conn, char *data, size_t n)
 {
+	pipes_struct *p = (pipes_struct*)np_conn;
 	size_t data_left = n;
 
 	while(data_left) {
@@ -981,9 +998,10 @@
  have been prepared into arrays of headers + data stream sections.
 ****************************************************************************/
 
-ssize_t read_from_internal_pipe(struct pipes_struct *p, char *data, size_t n,
-				bool *is_data_outstanding)
+static ssize_t read_from_internal_pipe(void *np_conn, char *data, size_t n,
+		bool *is_data_outstanding)
 {
+	pipes_struct *p = (pipes_struct*)np_conn;
 	uint32 pdu_remaining = 0;
 	ssize_t data_returned = 0;
 
@@ -1132,7 +1150,7 @@
 		return False;
 	}
 
-	TALLOC_FREE(p->np_state);
+	p->namedpipe_close(p->np_state);
 
 	bitmap_clear(bmap, p->pnum - pipe_handle_offset);
 
@@ -1175,8 +1193,9 @@
  Close an rpc pipe.
 ****************************************************************************/
 
-static int close_internal_rpc_pipe_hnd(struct pipes_struct *p)
+static bool close_internal_rpc_pipe_hnd(void *np_conn)
 {
+	pipes_struct *p = (pipes_struct *)np_conn;
 	if (!p) {
 		DEBUG(0,("Invalid pipe in close_internal_rpc_pipe_hnd\n"));
 		return False;
@@ -1193,19 +1212,24 @@
 		talloc_destroy(p->mem_ctx);
 	}
 
+	if (p->pipe_state_mem_ctx) {
+		talloc_destroy(p->pipe_state_mem_ctx);
+	}
+
 	free_pipe_rpc_context( p->contexts );
 
 	/* Free the handles database. */
 	close_policy_by_pipe(p);
 
 	TALLOC_FREE(p->pipe_user.nt_user_token);
+	data_blob_free(&p->session_key);
 	SAFE_FREE(p->pipe_user.ut.groups);
 
 	DLIST_REMOVE(InternalPipes, p);
 
 	ZERO_STRUCTP(p);
 
-	TALLOC_FREE(p);
+	SAFE_FREE(p);
 	
 	return True;
 }

Modified: branches/samba/upstream/source/rpc_server/srv_samr_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_samr_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_samr_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -4206,11 +4206,11 @@
 			break;
 
 		case 23:
-			if (!p->server_info->user_session_key.length) {
+			if (!p->session_key.length) {
 				status = NT_STATUS_NO_USER_SESSION_KEY;
 			}
 			SamOEMhashBlob(info->info23.password.data, 516,
-				       &p->server_info->user_session_key);
+				       &p->session_key);
 
 			dump_data(100, info->info23.password.data, 516);
 
@@ -4219,12 +4219,12 @@
 			break;
 
 		case 24:
-			if (!p->server_info->user_session_key.length) {
+			if (!p->session_key.length) {
 				status = NT_STATUS_NO_USER_SESSION_KEY;
 			}
 			SamOEMhashBlob(info->info24.password.data,
 				       516,
-				       &p->server_info->user_session_key);
+				       &p->session_key);
 
 			dump_data(100, info->info24.password.data, 516);
 
@@ -4235,12 +4235,11 @@
 			break;
 
 		case 25:
-			if (!p->server_info->user_session_key.length) {
+			if (!p->session_key.length) {
 				status = NT_STATUS_NO_USER_SESSION_KEY;
 			}
-			encode_or_decode_arc4_passwd_buffer(
-				info->info25.password.data,
-				&p->server_info->user_session_key);
+			encode_or_decode_arc4_passwd_buffer(info->info25.password.data,
+							    &p->session_key);
 
 			dump_data(100, info->info25.password.data, 532);
 
@@ -4256,12 +4255,11 @@
 			break;
 
 		case 26:
-			if (!p->server_info->user_session_key.length) {
+			if (!p->session_key.length) {
 				status = NT_STATUS_NO_USER_SESSION_KEY;
 			}
-			encode_or_decode_arc4_passwd_buffer(
-				info->info26.password.data,
-				&p->server_info->user_session_key);
+			encode_or_decode_arc4_passwd_buffer(info->info26.password.data,
+							    &p->session_key);
 
 			dump_data(100, info->info26.password.data, 516);
 

Modified: branches/samba/upstream/source/rpc_server/srv_spoolss.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_spoolss.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_spoolss.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1632,8 +1632,6 @@
 
 NTSTATUS rpc_spoolss_init(void)
 {
-  return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
-				    "spoolss", "spoolss", &syntax_spoolss,
-				    api_spoolss_cmds,
+  return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "spoolss", "spoolss", api_spoolss_cmds,
 				    sizeof(api_spoolss_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_spoolss_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_spoolss_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -176,7 +176,7 @@
 	/* if it's the last connection, deconnect the IPC$ share */
 	if (smb_connections==1) {
 
-		cli_shutdown( rpc_pipe_np_smb_conn(notify_cli_pipe) );
+		cli_shutdown( notify_cli_pipe->cli );
 		notify_cli_pipe = NULL; /* The above call shuts downn the pipe also. */
 
 		messaging_deregister(smbd_messaging_context(),
@@ -1660,8 +1660,7 @@
 			    !user_has_privileges(p->pipe_user.nt_user_token,
 						 &se_printop ) &&
 			    !token_contains_name_in_list(
-				    uidtoname(p->pipe_user.ut.uid),
-				    NULL, NULL,
+				    uidtoname(p->pipe_user.ut.uid), NULL,
 				    p->pipe_user.nt_user_token,
 				    lp_printer_admin(snum))) {
 				close_printer_handle(p, handle);
@@ -1715,9 +1714,9 @@
 			return WERR_ACCESS_DENIED;
 		}
 
-		if (!user_ok_token(uidtoname(p->pipe_user.ut.uid), NULL,
+		if (!user_ok_token(uidtoname(p->pipe_user.ut.uid),
 				   p->pipe_user.nt_user_token, snum) ||
-		    !print_access_check(p->server_info, snum,
+		    !print_access_check(&p->pipe_user, snum,
 					printer_default->access_required)) {
 			DEBUG(3, ("access DENIED for printer open\n"));
 			close_printer_handle(p, handle);
@@ -2020,10 +2019,8 @@
 
 	if ( (p->pipe_user.ut.uid != 0)
 		&& !user_has_privileges(p->pipe_user.nt_user_token, &se_printop )
-		&& !token_contains_name_in_list(
-			uidtoname(p->pipe_user.ut.uid), NULL,
-			NULL, p->pipe_user.nt_user_token,
-			lp_printer_admin(-1)) )
+		&& !token_contains_name_in_list( uidtoname(p->pipe_user.ut.uid),
+		    NULL, p->pipe_user.nt_user_token, lp_printer_admin(-1)) )
 	{
 		return WERR_ACCESS_DENIED;
 	}
@@ -2117,9 +2114,8 @@
 
 	if ( (p->pipe_user.ut.uid != 0)
 		&& !user_has_privileges(p->pipe_user.nt_user_token, &se_printop )
-		&& !token_contains_name_in_list(
-			uidtoname(p->pipe_user.ut.uid), NULL, NULL,
-			p->pipe_user.nt_user_token, lp_printer_admin(-1)) )
+		&& !token_contains_name_in_list( uidtoname(p->pipe_user.ut.uid),
+		    NULL, p->pipe_user.nt_user_token, lp_printer_admin(-1)) )
 	{
 		return WERR_ACCESS_DENIED;
 	}
@@ -2617,14 +2613,17 @@
 	 * Now start the NT Domain stuff :-).
 	 */
 
-	ret = cli_rpc_pipe_open_noauth(the_cli, &syntax_spoolss, pp_pipe);
-	if (!NT_STATUS_IS_OK(ret)) {
+	if ( !(*pp_pipe = cli_rpc_pipe_open_noauth(the_cli, PI_SPOOLSS, &ret)) ) {
 		DEBUG(2,("spoolss_connect_to_client: unable to open the spoolss pipe on machine %s. Error was : %s.\n",
 			remote_machine, nt_errstr(ret)));
 		cli_shutdown(the_cli);
 		return False;
 	}
 
+	/* make sure to save the cli_state pointer.  Keep its own talloc_ctx */
+
+	(*pp_pipe)->cli = the_cli;
+
 	return True;
 }
 
@@ -2733,8 +2732,9 @@
 			!get_printer_snum(p, handle, &snum, NULL) )
 		return WERR_BADFID;
 
-	if (!interpret_string_addr(&client_ss, p->client_address,
-				   AI_NUMERICHOST)) {
+	if (!interpret_string_addr(&client_ss,
+				p->conn->client_address,
+				AI_NUMERICHOST)) {
 		return WERR_SERVER_UNAVAILABLE;
 	}
 
@@ -5875,8 +5875,7 @@
 
 	jobname = unistr2_to_ascii_talloc(ctx, &info_1->docname);
 
-	Printer->jobid = print_job_start(p->server_info, snum, jobname,
-					 Printer->nt_devmode);
+	Printer->jobid = print_job_start(&p->pipe_user, snum, jobname, Printer->nt_devmode);
 
 	/* An error occured in print_job_start() so return an appropriate
 	   NT error code. */
@@ -5963,18 +5962,18 @@
 
 	switch (command) {
 	case PRINTER_CONTROL_PAUSE:
-		if (print_queue_pause(p->server_info, snum, &errcode)) {
+		if (print_queue_pause(&p->pipe_user, snum, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
 	case PRINTER_CONTROL_RESUME:
 	case PRINTER_CONTROL_UNPAUSE:
-		if (print_queue_resume(p->server_info, snum, &errcode)) {
+		if (print_queue_resume(&p->pipe_user, snum, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
 	case PRINTER_CONTROL_PURGE:
-		if (print_queue_purge(p->server_info, snum, &errcode)) {
+		if (print_queue_purge(&p->pipe_user, snum, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
@@ -6006,7 +6005,7 @@
 	if (!get_printer_snum(p, handle, &snum, NULL))
 		return WERR_BADFID;
 
-	print_job_delete(p->server_info, snum, Printer->jobid, &errcode );
+	print_job_delete( &p->pipe_user, snum, Printer->jobid, &errcode );
 
 	return errcode;
 }
@@ -6896,18 +6895,18 @@
 	switch (command) {
 	case JOB_CONTROL_CANCEL:
 	case JOB_CONTROL_DELETE:
-		if (print_job_delete(p->server_info, snum, jobid, &errcode)) {
+		if (print_job_delete(&p->pipe_user, snum, jobid, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
 	case JOB_CONTROL_PAUSE:
-		if (print_job_pause(p->server_info, snum, jobid, &errcode)) {
+		if (print_job_pause(&p->pipe_user, snum, jobid, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
 	case JOB_CONTROL_RESTART:
 	case JOB_CONTROL_RESUME:
-		if (print_job_resume(p->server_info, snum, jobid, &errcode)) {
+		if (print_job_resume(&p->pipe_user, snum, jobid, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;

Modified: branches/samba/upstream/source/rpc_server/srv_srvsvc_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_srvsvc_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_srvsvc_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -259,11 +259,9 @@
 	char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
 
 	if (remark) {
-		remark = talloc_sub_advanced(
-			p->mem_ctx, lp_servicename(snum),
-			get_current_username(), lp_pathname(snum),
-			p->pipe_user.ut.uid, get_current_username(),
-			"", remark);
+		remark = standard_sub_conn(p->mem_ctx,
+				p->conn,
+				remark);
 	}
 
 	init_srvsvc_NetShareInfo1(r, net_name,
@@ -286,11 +284,9 @@
 
 	remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
 	if (remark) {
-		remark = talloc_sub_advanced(
-			p->mem_ctx, lp_servicename(snum),
-			get_current_username(), lp_pathname(snum),
-			p->pipe_user.ut.uid, get_current_username(),
-			"", remark);
+		remark = standard_sub_conn(p->mem_ctx,
+				p->conn,
+				remark);
 	}
 	path = talloc_asprintf(p->mem_ctx,
 			"C:%s", lp_pathname(snum));
@@ -352,11 +348,7 @@
 	char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
 
 	if (remark) {
-		remark = talloc_sub_advanced(
-			p->mem_ctx, lp_servicename(snum),
-			get_current_username(), lp_pathname(snum),
-			p->pipe_user.ut.uid, get_current_username(),
-			"", remark);
+		remark = standard_sub_conn(p->mem_ctx, p->conn, remark);
 	}
 
 	init_srvsvc_NetShareInfo501(r, net_name,
@@ -380,11 +372,7 @@
 	char *remark = talloc_strdup(ctx, lp_comment(snum));;
 
 	if (remark) {
-		remark = talloc_sub_advanced(
-			p->mem_ctx, lp_servicename(snum),
-			get_current_username(), lp_pathname(snum),
-			p->pipe_user.ut.uid, get_current_username(),
-			"", remark);
+		remark = standard_sub_conn(ctx, p->conn, remark);
 	}
 	path = talloc_asprintf(ctx, "C:%s", lp_pathname(snum));
 	if (path) {
@@ -419,11 +407,7 @@
 	char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
 
 	if (remark) {
-		remark = talloc_sub_advanced(
-			p->mem_ctx, lp_servicename(snum),
-			get_current_username(), lp_pathname(snum),
-			p->pipe_user.ut.uid, get_current_username(),
-			"", remark);
+		remark = standard_sub_conn(p->mem_ctx, p->conn, remark);
 	}
 
 	init_srvsvc_NetShareInfo1004(r, remark ? remark : "");
@@ -1700,9 +1684,7 @@
 
 	DEBUG(5,("_srvsvc_NetShareAdd: %d\n", __LINE__));
 
-	if (r->out.parm_error) {
-		*r->out.parm_error = 0;
-	}
+	*r->out.parm_error = 0;
 
 	get_current_user(&user,p);
 
@@ -2028,78 +2010,89 @@
 {
 	SEC_DESC *psd = NULL;
 	size_t sd_size;
-	fstring servicename;
+	DATA_BLOB null_pw;
+	char *filename_in = NULL;
+	char *filename = NULL;
+	char *qualname = NULL;
 	SMB_STRUCT_STAT st;
 	NTSTATUS nt_status;
 	WERROR werr;
+	struct current_user user;
 	connection_struct *conn = NULL;
-	struct sec_desc_buf *sd_buf = NULL;
-	files_struct *fsp = NULL;
-	int snum;
-	char *oldcwd = NULL;
+	bool became_user = False;
+	TALLOC_CTX *ctx = p->mem_ctx;
+	struct sec_desc_buf *sd_buf;
 
 	ZERO_STRUCT(st);
 
-	fstrcpy(servicename, r->in.share);
+	werr = WERR_OK;
 
-	snum = find_service(servicename);
-	if (snum == -1) {
-		DEBUG(10, ("Could not find service %s\n", servicename));
-		werr = WERR_NET_NAME_NOT_FOUND;
+	qualname = talloc_strdup(ctx, r->in.share);
+	if (!qualname) {
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
-	nt_status = create_conn_struct(talloc_tos(), &conn, snum,
-				       lp_pathname(snum), &oldcwd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(10, ("create_conn_struct failed: %s\n",
-			   nt_errstr(nt_status)));
+	/* Null password is ok - we are already an authenticated user... */
+	null_pw = data_blob_null;
+
+	get_current_user(&user, p);
+
+	become_root();
+	conn = make_connection(qualname, null_pw, "A:", user.vuid, &nt_status);
+	unbecome_root();
+
+	if (conn == NULL) {
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to connect to %s\n",
+			qualname));
 		werr = ntstatus_to_werror(nt_status);
 		goto error_exit;
 	}
 
-	conn->server_info = p->server_info;
+	if (!become_user(conn, conn->vuid)) {
+		DEBUG(0,("_srvsvc_NetGetFileSecurity: Can't become connected user!\n"));
+		werr = WERR_ACCESS_DENIED;
+		goto error_exit;
+	}
+	became_user = True;
 
-	nt_status = create_file(
-		conn,					/* conn */
-		NULL,					/* req */
-		0,					/* root_dir_fid */
-		r->in.file,				/* fname */
-		FILE_READ_ATTRIBUTES,			/* access_mask */
-		FILE_SHARE_READ|FILE_SHARE_WRITE,	/* share_access */
-		FILE_OPEN,				/* create_disposition*/
-		0,					/* create_options */
-		0,					/* file_attributes */
-		INTERNAL_OPEN_ONLY,			/* oplock_request */
-		0,					/* allocation_size */
-		NULL,					/* sd */
-		NULL,					/* ea_list */
-		&fsp,					/* result */
-		NULL,					/* pinfo */
-		NULL);					/* psbuf */
+	filename_in = talloc_strdup(ctx, r->in.file);
+	if (!filename_in) {
+		werr = WERR_ACCESS_DENIED;
+		goto error_exit;
+	}
 
+	nt_status = unix_convert(ctx, conn, filename_in, False, &filename, NULL, &st);
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srvsvc_NetGetFileSecurity: can't open %s\n",
-			 r->in.file));
-		werr = ntstatus_to_werror(nt_status);
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: bad pathname %s\n",
+			filename));
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
-	nt_status = SMB_VFS_FGET_NT_ACL(fsp,
+	nt_status = check_name(conn, filename);
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: can't access %s\n",
+			filename));
+		werr = WERR_ACCESS_DENIED;
+		goto error_exit;
+	}
+
+	nt_status = SMB_VFS_GET_NT_ACL(conn, filename,
 				       (OWNER_SECURITY_INFORMATION
 					|GROUP_SECURITY_INFORMATION
 					|DACL_SECURITY_INFORMATION), &psd);
 
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to get NT ACL "
-			 "for file %s\n", r->in.file));
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to get NT ACL for file %s\n",
+			filename));
 		werr = ntstatus_to_werror(nt_status);
 		goto error_exit;
 	}
 
 	sd_size = ndr_size_security_descriptor(psd, 0);
 
-	sd_buf = TALLOC_ZERO_P(p->mem_ctx, struct sec_desc_buf);
+	sd_buf = TALLOC_ZERO_P(ctx, struct sec_desc_buf);
 	if (!sd_buf) {
 		werr = WERR_NOMEM;
 		goto error_exit;
@@ -2112,25 +2105,18 @@
 
 	psd->dacl->revision = NT4_ACL_REVISION;
 
-	close_file(fsp, NORMAL_CLOSE);
-	vfs_ChDir(conn, oldcwd);
-	conn_free_internal(conn);
-	return WERR_OK;
+	unbecome_user();
+	close_cnum(conn, user.vuid);
+	return werr;
 
 error_exit:
 
-	if (fsp) {
-		close_file(fsp, NORMAL_CLOSE);
-	}
+	if (became_user)
+		unbecome_user();
 
-	if (oldcwd) {
-		vfs_ChDir(conn, oldcwd);
-	}
+	if (conn)
+		close_cnum(conn, user.vuid);
 
-	if (conn) {
-		conn_free_internal(conn);
-	}
-
 	return werr;
 }
 
@@ -2142,90 +2128,118 @@
 WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p,
 				  struct srvsvc_NetSetFileSecurity *r)
 {
-	fstring servicename;
+	char *filename_in = NULL;
+	char *filename = NULL;
+	char *qualname = NULL;
+	DATA_BLOB null_pw;
 	files_struct *fsp = NULL;
 	SMB_STRUCT_STAT st;
 	NTSTATUS nt_status;
 	WERROR werr;
+	struct current_user user;
 	connection_struct *conn = NULL;
-	int snum;
-	char *oldcwd = NULL;
+	bool became_user = False;
+	TALLOC_CTX *ctx = p->mem_ctx;
 
 	ZERO_STRUCT(st);
 
-	fstrcpy(servicename, r->in.share);
+	werr = WERR_OK;
 
-	snum = find_service(servicename);
-	if (snum == -1) {
-		DEBUG(10, ("Could not find service %s\n", servicename));
-		werr = WERR_NET_NAME_NOT_FOUND;
+	qualname = talloc_strdup(ctx, r->in.share);
+	if (!qualname) {
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
-	nt_status = create_conn_struct(talloc_tos(), &conn, snum,
-				       lp_pathname(snum), &oldcwd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(10, ("create_conn_struct failed: %s\n",
-			   nt_errstr(nt_status)));
+	/* Null password is ok - we are already an authenticated user... */
+	null_pw = data_blob_null;
+
+	get_current_user(&user, p);
+
+	become_root();
+	conn = make_connection(qualname, null_pw, "A:", user.vuid, &nt_status);
+	unbecome_root();
+
+	if (conn == NULL) {
+		DEBUG(3,("_srvsvc_NetSetFileSecurity: Unable to connect to %s\n", qualname));
 		werr = ntstatus_to_werror(nt_status);
 		goto error_exit;
 	}
 
-	conn->server_info = p->server_info;
+	if (!become_user(conn, conn->vuid)) {
+		DEBUG(0,("_srvsvc_NetSetFileSecurity: Can't become connected user!\n"));
+		werr = WERR_ACCESS_DENIED;
+		goto error_exit;
+	}
+	became_user = True;
 
-	nt_status = create_file(
-		conn,					/* conn */
-		NULL,					/* req */
-		0,					/* root_dir_fid */
-		r->in.file,				/* fname */
-		FILE_WRITE_ATTRIBUTES,			/* access_mask */
-		FILE_SHARE_READ|FILE_SHARE_WRITE,	/* share_access */
-		FILE_OPEN,				/* create_disposition*/
-		0,					/* create_options */
-		0,					/* file_attributes */
-		INTERNAL_OPEN_ONLY,			/* oplock_request */
-		0,					/* allocation_size */
-		NULL,					/* sd */
-		NULL,					/* ea_list */
-		&fsp,					/* result */
-		NULL,					/* pinfo */
-		NULL);					/* psbuf */
+	filename_in = talloc_strdup(ctx, r->in.file);
+	if (!filename_in) {
+		werr = WERR_ACCESS_DENIED;
+		goto error_exit;
+	}
 
+	nt_status = unix_convert(ctx, conn, filename, False, &filename, NULL, &st);
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srvsvc_NetSetFileSecurity: can't open %s\n",
-			 r->in.file));
-		werr = ntstatus_to_werror(nt_status);
+		DEBUG(3,("_srvsvc_NetSetFileSecurity: bad pathname %s\n", filename));
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
-	nt_status = SMB_VFS_FSET_NT_ACL(fsp,
+	nt_status = check_name(conn, filename);
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		DEBUG(3,("_srvsvc_NetSetFileSecurity: can't access %s\n", filename));
+		werr = WERR_ACCESS_DENIED;
+		goto error_exit;
+	}
+
+	nt_status = open_file_stat(conn, NULL, filename, &st, &fsp);
+
+	if ( !NT_STATUS_IS_OK(nt_status) ) {
+		/* Perhaps it is a directory */
+		if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_IS_A_DIRECTORY))
+			nt_status = open_directory(conn, NULL, filename, &st,
+						FILE_READ_ATTRIBUTES,
+						FILE_SHARE_READ|FILE_SHARE_WRITE,
+						FILE_OPEN,
+						0,
+						FILE_ATTRIBUTE_DIRECTORY,
+						NULL, &fsp);
+
+		if ( !NT_STATUS_IS_OK(nt_status) ) {
+			DEBUG(3,("_srvsvc_NetSetFileSecurity: Unable to open file %s\n", filename));
+			werr = ntstatus_to_werror(nt_status);
+			goto error_exit;
+		}
+	}
+
+	nt_status = SMB_VFS_SET_NT_ACL(fsp, fsp->fsp_name,
 				       r->in.securityinformation,
 				       r->in.sd_buf->sd);
 
 	if (!NT_STATUS_IS_OK(nt_status) ) {
-		DEBUG(3,("_srvsvc_NetSetFileSecurity: Unable to set NT ACL "
-			 "on file %s\n", r->in.share));
+		DEBUG(3,("_srvsvc_NetSetFileSecurity: Unable to set NT ACL on file %s\n", filename));
 		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
 	close_file(fsp, NORMAL_CLOSE);
-	vfs_ChDir(conn, oldcwd);
-	conn_free_internal(conn);
-	return WERR_OK;
+	unbecome_user();
+	close_cnum(conn, user.vuid);
+	return werr;
 
 error_exit:
 
-	if (fsp) {
+	if(fsp) {
 		close_file(fsp, NORMAL_CLOSE);
 	}
 
-	if (oldcwd) {
-		vfs_ChDir(conn, oldcwd);
+	if (became_user) {
+		unbecome_user();
 	}
 
 	if (conn) {
-		conn_free_internal(conn);
+		close_cnum(conn, user.vuid);
 	}
 
 	return werr;

Modified: branches/samba/upstream/source/rpc_server/srv_svcctl.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_svcctl.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_svcctl.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -131,7 +131,23 @@
 
 static bool api_svcctl_enum_dependent_services(pipes_struct *p)
 {
-	return proxy_svcctl_call(p, NDR_SVCCTL_ENUMDEPENDENTSERVICESW);
+	SVCCTL_Q_ENUM_DEPENDENT_SERVICES q_u;
+	SVCCTL_R_ENUM_DEPENDENT_SERVICES r_u;
+	prs_struct *data = &p->in_data.data;
+	prs_struct *rdata = &p->out_data.rdata;
+
+	ZERO_STRUCT(q_u);
+	ZERO_STRUCT(r_u);
+
+	if(!svcctl_io_q_enum_dependent_services("", &q_u, data, 0))
+		return False;
+
+	r_u.status = _svcctl_enum_dependent_services(p, &q_u, &r_u);
+
+	if(!svcctl_io_r_enum_dependent_services("", &r_u, rdata, 0))
+		return False;
+
+	return True;
 }
 
 /*******************************************************************
@@ -266,8 +282,6 @@
 NTSTATUS rpc_svcctl2_init(void)
 {
 	return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
-					  "svcctl", "ntsvcs",
-					  &ndr_table_svcctl.syntax_id,
-					  api_svcctl_cmds,
+					  "svcctl", "ntsvcs", api_svcctl_cmds,
 					  sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
 }

Modified: branches/samba/upstream/source/rpc_server/srv_svcctl_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_svcctl_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_svcctl_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -529,13 +529,11 @@
 }
 
 /********************************************************************
- _svcctl_EnumDependentServicesW
 ********************************************************************/
 
-WERROR _svcctl_EnumDependentServicesW(pipes_struct *p,
-				      struct svcctl_EnumDependentServicesW *r)
+WERROR _svcctl_enum_dependent_services( pipes_struct *p, SVCCTL_Q_ENUM_DEPENDENT_SERVICES *q_u, SVCCTL_R_ENUM_DEPENDENT_SERVICES *r_u )
 {
-	SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.service );
+	SERVICE_INFO *info = find_service_info_by_hnd( p, &q_u->handle );
 
 	/* perform access checks */
 
@@ -547,12 +545,13 @@
 
 	/* we have to set the outgoing buffer size to the same as the
 	   incoming buffer size (even in the case of failure */
-	/* this is done in the autogenerated server already - gd */
 
-	*r->out.bytes_needed = r->in.buf_size;
+	rpcbuf_init( &r_u->buffer, q_u->buffer_size, p->mem_ctx );
 
+	r_u->needed      = q_u->buffer_size;
+
 	/* no dependent services...basically a stub function */
-	*r->out.services_returned = 0;
+	r_u->returned    = 0;
 
 	return WERR_OK;
 }
@@ -951,6 +950,12 @@
 	return WERR_NOT_SUPPORTED;
 }
 
+WERROR _svcctl_EnumDependentServicesW(pipes_struct *p, struct svcctl_EnumDependentServicesW *r)
+{
+	p->rng_fault_state = True;
+	return WERR_NOT_SUPPORTED;
+}
+
 WERROR _svcctl_EnumServicesStatusW(pipes_struct *p, struct svcctl_EnumServicesStatusW *r)
 {
 	p->rng_fault_state = True;

Modified: branches/samba/upstream/source/rpc_server/srv_winreg_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_winreg_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_winreg_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -475,7 +475,7 @@
 	s.in.message = r->in.message;
 	s.in.timeout = r->in.timeout;
 	s.in.force_apps = r->in.force_apps;
-	s.in.do_reboot = r->in.do_reboot;
+	s.in.reboot = r->in.reboot;
 	s.in.reason = 0;
 
 	/* thunk down to _winreg_InitiateSystemShutdownEx() 
@@ -499,7 +499,7 @@
 	char *chkmsg = NULL;
 	fstring str_timeout;
 	fstring str_reason;
-	fstring do_reboot;
+	fstring reboot;
 	fstring f;
 	int ret;
 	bool can_shutdown;
@@ -526,7 +526,7 @@
 	}
 
 	fstr_sprintf(str_timeout, "%d", r->in.timeout);
-	fstr_sprintf(do_reboot, r->in.do_reboot ? SHUTDOWN_R_STRING : "");
+	fstr_sprintf(reboot, r->in.reboot ? SHUTDOWN_R_STRING : "");
 	fstr_sprintf(f, r->in.force_apps ? SHUTDOWN_F_STRING : "");
 	fstr_sprintf(str_reason, "%d", r->in.reason );
 
@@ -541,7 +541,7 @@
 		return WERR_NOMEM;
 	}
 	shutdown_script = talloc_all_string_sub(p->mem_ctx,
-						shutdown_script, "%r", do_reboot);
+						shutdown_script, "%r", reboot);
 	if (!shutdown_script) {
 		return WERR_NOMEM;
 	}

Modified: branches/samba/upstream/source/rpc_server/srv_wkssvc_nt.c
===================================================================
--- branches/samba/upstream/source/rpc_server/srv_wkssvc_nt.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpc_server/srv_wkssvc_nt.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -316,9 +316,10 @@
 		return WERR_NOT_SUPPORTED;
 	}
 
-	werr = decode_wkssvc_join_password_buffer(
-		p->mem_ctx, r->in.encrypted_password,
-		&p->server_info->user_session_key, &cleartext_pwd);
+	werr = decode_wkssvc_join_password_buffer(p->mem_ctx,
+						  r->in.encrypted_password,
+						  &p->session_key,
+						  &cleartext_pwd);
 	if (!W_ERROR_IS_OK(werr)) {
 		return werr;
 	}
@@ -382,9 +383,10 @@
 		return WERR_ACCESS_DENIED;
 	}
 
-	werr = decode_wkssvc_join_password_buffer(
-		p->mem_ctx, r->in.encrypted_password,
-		&p->server_info->user_session_key, &cleartext_pwd);
+	werr = decode_wkssvc_join_password_buffer(p->mem_ctx,
+						  r->in.encrypted_password,
+						  &p->session_key,
+						  &cleartext_pwd);
 	if (!W_ERROR_IS_OK(werr)) {
 		return werr;
 	}

Modified: branches/samba/upstream/source/rpcclient/cmd_dfs.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_dfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_dfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -318,12 +318,12 @@
 
 	{ "DFS" },
 
-	{ "dfsversion",	RPC_RTYPE_WERROR, NULL, cmd_dfs_version, &ndr_table_netdfs.syntax_id, NULL, "Query DFS support",    "" },
-	{ "dfsadd",	RPC_RTYPE_WERROR, NULL, cmd_dfs_add,     &ndr_table_netdfs.syntax_id, NULL, "Add a DFS share",      "" },
-	{ "dfsremove",	RPC_RTYPE_WERROR, NULL, cmd_dfs_remove,  &ndr_table_netdfs.syntax_id, NULL, "Remove a DFS share",   "" },
-	{ "dfsgetinfo",	RPC_RTYPE_WERROR, NULL, cmd_dfs_getinfo, &ndr_table_netdfs.syntax_id, NULL, "Query DFS share info", "" },
-	{ "dfsenum",	RPC_RTYPE_WERROR, NULL, cmd_dfs_enum,    &ndr_table_netdfs.syntax_id, NULL, "Enumerate dfs shares", "" },
-	{ "dfsenumex",	RPC_RTYPE_WERROR, NULL, cmd_dfs_enumex,  &ndr_table_netdfs.syntax_id, NULL, "Enumerate dfs shares", "" },
+	{ "dfsversion",	RPC_RTYPE_WERROR, NULL, cmd_dfs_version, PI_NETDFS, NULL, "Query DFS support",    "" },
+	{ "dfsadd",	RPC_RTYPE_WERROR, NULL, cmd_dfs_add,     PI_NETDFS, NULL, "Add a DFS share",      "" },
+	{ "dfsremove",	RPC_RTYPE_WERROR, NULL, cmd_dfs_remove,  PI_NETDFS, NULL, "Remove a DFS share",   "" },
+	{ "dfsgetinfo",	RPC_RTYPE_WERROR, NULL, cmd_dfs_getinfo, PI_NETDFS, NULL, "Query DFS share info", "" },
+	{ "dfsenum",	RPC_RTYPE_WERROR, NULL, cmd_dfs_enum,    PI_NETDFS, NULL, "Enumerate dfs shares", "" },
+	{ "dfsenumex",	RPC_RTYPE_WERROR, NULL, cmd_dfs_enumex,  PI_NETDFS, NULL, "Enumerate dfs shares", "" },
 
 	{ NULL }
 };

Deleted: branches/samba/upstream/source/rpcclient/cmd_drsuapi.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_drsuapi.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_drsuapi.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,566 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   RPC pipe client
-
-   Copyright (C) Guenther Deschner 2008
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "rpcclient.h"
-
-static WERROR cracknames(struct rpc_pipe_client *cli,
-			 TALLOC_CTX *mem_ctx,
-			 struct policy_handle *bind_handle,
-			 enum drsuapi_DsNameFormat format_offered,
-			 enum drsuapi_DsNameFormat format_desired,
-			 int argc,
-			 const char **argv,
-			 union drsuapi_DsNameCtr *ctr)
-{
-	NTSTATUS status;
-	WERROR werr;
-	int i;
-	int32_t level = 1;
-	union drsuapi_DsNameRequest req;
-	int32_t level_out;
-	struct drsuapi_DsNameString *names;
-
-	names = TALLOC_ZERO_ARRAY(mem_ctx, struct drsuapi_DsNameString, argc);
-	W_ERROR_HAVE_NO_MEMORY(names);
-
-	for (i=0; i<argc; i++) {
-		names[i].str = argv[i];
-	}
-
-	req.req1.codepage	= 1252; /* german */
-	req.req1.language	= 0x00000407; /* german */
-	req.req1.count		= argc;
-	req.req1.names		= names;
-	req.req1.format_flags	= DRSUAPI_DS_NAME_FLAG_NO_FLAGS;
-	req.req1.format_offered	= format_offered;
-	req.req1.format_desired	= format_desired;
-
-	status = rpccli_drsuapi_DsCrackNames(cli, mem_ctx,
-					     bind_handle,
-					     level,
-					     &req,
-					     &level_out,
-					     ctr,
-					     &werr);
-	if (!NT_STATUS_IS_OK(status)) {
-		return ntstatus_to_werror(status);
-	}
-
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	return WERR_OK;
-}
-
-static WERROR cmd_drsuapi_cracknames(struct rpc_pipe_client *cli,
-				     TALLOC_CTX *mem_ctx, int argc,
-				     const char **argv)
-{
-	NTSTATUS status;
-	WERROR werr;
-	int i;
-
-	struct GUID bind_guid;
-	struct policy_handle bind_handle;
-
-	union drsuapi_DsNameCtr ctr;
-
-	if (argc < 2) {
-		printf("usage: %s name\n", argv[0]);
-		return WERR_OK;
-	}
-
-	GUID_from_string(DRSUAPI_DS_BIND_GUID, &bind_guid);
-
-	status = rpccli_drsuapi_DsBind(cli, mem_ctx,
-				       &bind_guid,
-				       NULL,
-				       &bind_handle,
-				       &werr);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return ntstatus_to_werror(status);
-	}
-
-	werr = cracknames(cli, mem_ctx,
-			  &bind_handle,
-			  DRSUAPI_DS_NAME_FORMAT_UKNOWN,
-			  DRSUAPI_DS_NAME_FORMAT_FQDN_1779,
-			  1,
-			  argv+1,
-			  &ctr);
-
-	if (!W_ERROR_IS_OK(werr)) {
-		goto out;
-	}
-
-	for (i=0; i < ctr.ctr1->count; i++) {
-		printf("status: %d\n",
-			ctr.ctr1->array[i].status);
-		printf("dns_domain_name: %s\n",
-			ctr.ctr1->array[i].dns_domain_name);
-		printf("result_name: %s\n",
-			ctr.ctr1->array[i].result_name);
-	}
-
- out:
-	if (is_valid_policy_hnd(&bind_handle)) {
-		rpccli_drsuapi_DsUnbind(cli, mem_ctx, &bind_handle, &werr);
-	}
-
-	return werr;
-}
-
-static void display_domain_controller_info_01(struct drsuapi_DsGetDCConnection01 *r)
-{
-	printf("client_ip_address:\t%s\n", r->client_ip_address);
-	printf("unknown2:\t%d\n", r->unknown2);
-	printf("connection_time:\t%d\n", r->connection_time);
-	printf("unknown4:\t%d\n", r->unknown4);
-	printf("unknown5:\t%d\n", r->unknown5);
-	printf("unknown6:\t%d\n", r->unknown6);
-	printf("client_account:\t%s\n", r->client_account);
-}
-
-static void display_domain_controller_info_1(struct drsuapi_DsGetDCInfo1 *r)
-{
-	printf("netbios_name:\t%s\n", r->netbios_name);
-	printf("dns_name:\t%s\n", r->dns_name);
-	printf("site_name:\t%s\n", r->site_name);
-	printf("computer_dn:\t%s\n", r->computer_dn);
-	printf("server_dn:\t%s\n", r->server_dn);
-	printf("is_pdc:\t\t%s\n", r->is_pdc ? "true" : "false");
-	printf("is_enabled:\t%s\n", r->is_enabled ? "true" : "false");
-}
-
-static void display_domain_controller_info_2(struct drsuapi_DsGetDCInfo2 *r)
-{
-	printf("netbios_name:\t%s\n", r->netbios_name);
-	printf("dns_name:\t%s\n", r->dns_name);
-	printf("site_name:\t%s\n", r->site_name);
-	printf("site_dn:\t%s\n", r->site_dn);
-	printf("computer_dn:\t%s\n", r->computer_dn);
-	printf("server_dn:\t%s\n", r->server_dn);
-	printf("ntds_dn:\t%s\n", r->ntds_dn);
-	printf("is_pdc:\t\t%s\n", r->is_pdc ? "true" : "false");
-	printf("is_enabled:\t%s\n", r->is_enabled ? "true" : "false");
-	printf("is_gc:\t\t%s\n", r->is_gc ? "true" : "false");
-	printf("site_guid:\t%s\n", GUID_string(talloc_tos(), &r->site_guid));
-	printf("computer_guid:\t%s\n", GUID_string(talloc_tos(), &r->computer_guid));
-	printf("server_guid:\t%s\n", GUID_string(talloc_tos(), &r->server_guid));
-	printf("ntds_guid:\t%s\n", GUID_string(talloc_tos(), &r->ntds_guid));
-}
-
-static void display_domain_controller_info_3(struct drsuapi_DsGetDCInfo3 *r)
-{
-	printf("netbios_name:\t%s\n", r->netbios_name);
-	printf("dns_name:\t%s\n", r->dns_name);
-	printf("site_name:\t%s\n", r->site_name);
-	printf("site_dn:\t%s\n", r->site_dn);
-	printf("computer_dn:\t%s\n", r->computer_dn);
-	printf("server_dn:\t%s\n", r->server_dn);
-	printf("ntds_dn:\t%s\n", r->ntds_dn);
-	printf("is_pdc:\t\t%s\n", r->is_pdc ? "true" : "false");
-	printf("is_enabled:\t%s\n", r->is_enabled ? "true" : "false");
-	printf("is_gc:\t\t%s\n", r->is_gc ? "true" : "false");
-	printf("is_rodc:\t%s\n", r->is_rodc ? "true" : "false");
-	printf("site_guid:\t%s\n", GUID_string(talloc_tos(), &r->site_guid));
-	printf("computer_guid:\t%s\n", GUID_string(talloc_tos(), &r->computer_guid));
-	printf("server_guid:\t%s\n", GUID_string(talloc_tos(), &r->server_guid));
-	printf("ntds_guid:\t%s\n", GUID_string(talloc_tos(), &r->ntds_guid));
-}
-
-static void display_domain_controller_info(int32_t level,
-					   union drsuapi_DsGetDCInfoCtr *ctr)
-{
-	int i;
-
-	switch (level) {
-		case DRSUAPI_DC_CONNECTION_CTR_01:
-			for (i=0; i<ctr->ctr01.count; i++) {
-				printf("----------\n");
-				display_domain_controller_info_01(&ctr->ctr01.array[i]);
-			}
-			break;
-		case DRSUAPI_DC_INFO_CTR_1:
-			for (i=0; i<ctr->ctr1.count; i++) {
-				printf("----------\n");
-				display_domain_controller_info_1(&ctr->ctr1.array[i]);
-			}
-			break;
-		case DRSUAPI_DC_INFO_CTR_2:
-			for (i=0; i<ctr->ctr2.count; i++) {
-				printf("----------\n");
-				display_domain_controller_info_2(&ctr->ctr2.array[i]);
-			}
-			break;
-		case DRSUAPI_DC_INFO_CTR_3:
-			for (i=0; i<ctr->ctr3.count; i++) {
-				printf("----------\n");
-				display_domain_controller_info_3(&ctr->ctr3.array[i]);
-			}
-			break;
-		default:
-			break;
-	}
-}
-
-static WERROR cmd_drsuapi_getdcinfo(struct rpc_pipe_client *cli,
-				    TALLOC_CTX *mem_ctx, int argc,
-				    const char **argv)
-{
-	NTSTATUS status;
-	WERROR werr;
-
-	struct GUID bind_guid;
-	struct policy_handle bind_handle;
-
-	const char *domain = NULL;
-	int32_t level = 1;
-	int32_t level_out;
-	union drsuapi_DsGetDCInfoRequest req;
-	union drsuapi_DsGetDCInfoCtr ctr;
-
-	if (argc < 2) {
-		printf("usage: %s domain [level]\n", argv[0]);
-		return WERR_OK;
-	}
-
-	domain = argv[1];
-	if (argc >= 3) {
-		level = atoi(argv[2]);
-	}
-
-	GUID_from_string(DRSUAPI_DS_BIND_GUID, &bind_guid);
-
-	status = rpccli_drsuapi_DsBind(cli, mem_ctx,
-				       &bind_guid,
-				       NULL,
-				       &bind_handle,
-				       &werr);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return ntstatus_to_werror(status);
-	}
-
-	req.req1.domain_name = domain;
-	req.req1.level = level;
-
-	status = rpccli_drsuapi_DsGetDomainControllerInfo(cli, mem_ctx,
-							  &bind_handle,
-							  1,
-							  &req,
-							  &level_out,
-							  &ctr,
-							  &werr);
-	if (!NT_STATUS_IS_OK(status)) {
-		werr = ntstatus_to_werror(status);
-		goto out;
-	}
-
-	if (!W_ERROR_IS_OK(werr)) {
-		goto out;
-	}
-
-	display_domain_controller_info(level_out, &ctr);
- out:
-	if (is_valid_policy_hnd(&bind_handle)) {
-		rpccli_drsuapi_DsUnbind(cli, mem_ctx, &bind_handle, &werr);
-	}
-
-	return werr;
-}
-
-static WERROR cmd_drsuapi_getncchanges(struct rpc_pipe_client *cli,
-				       TALLOC_CTX *mem_ctx, int argc,
-				       const char **argv)
-{
-	NTSTATUS status;
-	WERROR werr;
-
-	struct policy_handle bind_handle;
-
-	struct GUID bind_guid;
-	struct drsuapi_DsBindInfoCtr bind_info;
-	struct drsuapi_DsBindInfo28 info28;
-
-	const char *nc_dn = NULL;
-
-	DATA_BLOB session_key;
-
-	int32_t level = 8;
-	bool single = false;
-	int32_t level_out = 0;
-	union drsuapi_DsGetNCChangesRequest req;
-	union drsuapi_DsGetNCChangesCtr ctr;
-	struct drsuapi_DsReplicaObjectIdentifier nc;
-	struct dom_sid null_sid;
-
-	struct drsuapi_DsGetNCChangesCtr1 *ctr1 = NULL;
-	struct drsuapi_DsGetNCChangesCtr6 *ctr6 = NULL;
-	int32_t out_level = 0;
-	int y;
-
-	uint32_t supported_extensions = 0;
-	uint32_t replica_flags	= DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS |
-				  DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED;
-
-	if (argc > 3) {
-		printf("usage: %s [naming_context_or_object_dn [single]]\n", argv[0]);
-		return WERR_OK;
-	}
-
-	if (argc >= 2) {
-		nc_dn = argv[1];
-	}
-
-	if (argc == 3) {
-		if (strequal(argv[2], "single")) {
-			single = true;
-		} else {
-			printf("warning: ignoring unknown argument '%s'\n",
-			       argv[2]);
-		}
-	}
-
-	ZERO_STRUCT(info28);
-
-	ZERO_STRUCT(null_sid);
-	ZERO_STRUCT(req);
-
-	GUID_from_string(DRSUAPI_DS_BIND_GUID, &bind_guid);
-
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_BASE;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7;
-	info28.supported_extensions	|= DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT;
-	info28.site_guid		= GUID_zero();
-	info28.pid			= 0;
-	info28.repl_epoch		= 0;
-
-	bind_info.length = 28;
-	bind_info.info.info28 = info28;
-
-	status = rpccli_drsuapi_DsBind(cli, mem_ctx,
-				       &bind_guid,
-				       &bind_info,
-				       &bind_handle,
-				       &werr);
-
-	if (!NT_STATUS_IS_OK(status)) {
-		return ntstatus_to_werror(status);
-	}
-
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	if (bind_info.length == 24) {
-		supported_extensions = bind_info.info.info24.supported_extensions;
-	} else if (bind_info.length == 28) {
-		supported_extensions = bind_info.info.info28.supported_extensions;
-	} else if (bind_info.length == 48) {
-		supported_extensions = bind_info.info.info48.supported_extensions;
-	}
-
-	if (!nc_dn) {
-
-		union drsuapi_DsNameCtr crack_ctr;
-		const char *name;
-
-		name = talloc_asprintf(mem_ctx, "%s\\", lp_workgroup());
-		W_ERROR_HAVE_NO_MEMORY(name);
-
-		werr = cracknames(cli, mem_ctx,
-				  &bind_handle,
-				  DRSUAPI_DS_NAME_FORMAT_UKNOWN,
-				  DRSUAPI_DS_NAME_FORMAT_FQDN_1779,
-				  1,
-				  &name,
-				  &crack_ctr);
-		if (!W_ERROR_IS_OK(werr)) {
-			return werr;
-		}
-
-		if (crack_ctr.ctr1->count != 1) {
-			return WERR_NO_SUCH_DOMAIN;
-		}
-
-		if (crack_ctr.ctr1->array[0].status != DRSUAPI_DS_NAME_STATUS_OK) {
-			return WERR_NO_SUCH_DOMAIN;
-		}
-
-		nc_dn = talloc_strdup(mem_ctx, crack_ctr.ctr1->array[0].result_name);
-		W_ERROR_HAVE_NO_MEMORY(nc_dn);
-
-		printf("using: %s\n", nc_dn);
-	}
-
-	nc.dn = nc_dn;
-	nc.guid = GUID_zero();
-	nc.sid = null_sid;
-
-	if (supported_extensions & DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8) {
-		level = 8;
-		req.req8.naming_context		= &nc;
-		req.req8.replica_flags		= replica_flags;
-		req.req8.max_object_count	= 402;
-		req.req8.max_ndr_size		= 402116;
-		if (single) {
-			req.req8.extended_op	= DRSUAPI_EXOP_REPL_OBJ;
-		}
-	} else {
-		level = 5;
-		req.req5.naming_context		= &nc;
-		req.req5.replica_flags		= replica_flags;
-		req.req5.max_object_count	= 402;
-		req.req5.max_ndr_size		= 402116;
-		if (single) {
-			req.req5.extended_op	= DRSUAPI_EXOP_REPL_OBJ;
-		}
-	}
-
-	for (y=0; ;y++) {
-
-		if (level == 8) {
-			DEBUG(1,("start[%d] tmp_higest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)req.req8.highwatermark.tmp_highest_usn,
-				(long long)req.req8.highwatermark.highest_usn));
-		}
-
-		status = rpccli_drsuapi_DsGetNCChanges(cli, mem_ctx,
-						       &bind_handle,
-						       level,
-						       &req,
-						       &level_out,
-						       &ctr,
-						       &werr);
-		if (!NT_STATUS_IS_OK(status)) {
-			printf("Failed to get NC Changes: %s",
-				get_friendly_werror_msg(werr));
-			goto out;
-		}
-
-		if (!W_ERROR_IS_OK(werr)) {
-			status = werror_to_ntstatus(werr);
-			goto out;
-		}
-
-		if (level_out == 1) {
-			out_level = 1;
-			ctr1 = &ctr.ctr1;
-		} else if (level_out == 2) {
-			out_level = 1;
-			ctr1 = ctr.ctr2.ctr.mszip1.ctr1;
-		}
-
-		status = cli_get_session_key(mem_ctx, cli, &session_key);
-		if (!NT_STATUS_IS_OK(status)) {
-			printf("Failed to get Session Key: %s",
-				nt_errstr(status));
-			return ntstatus_to_werror(status);
-		}
-
-		if (out_level == 1) {
-			DEBUG(1,("end[%d] tmp_highest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)ctr1->new_highwatermark.tmp_highest_usn,
-				(long long)ctr1->new_highwatermark.highest_usn));
-#if 0
-			libnet_dssync_decrypt_attributes(mem_ctx,
-							 &session_key,
-							 ctr1->first_object);
-#endif
-			if (ctr1->more_data) {
-				req.req5.highwatermark = ctr1->new_highwatermark;
-				continue;
-			}
-		}
-
-		if (level_out == 6) {
-			out_level = 6;
-			ctr6 = &ctr.ctr6;
-		} else if (level_out == 7
-			   && ctr.ctr7.level == 6
-			   && ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP) {
-			out_level = 6;
-			ctr6 = ctr.ctr7.ctr.mszip6.ctr6;
-		}
-
-		if (out_level == 6) {
-			DEBUG(1,("end[%d] tmp_highest_usn: %llu , highest_usn: %llu\n",y,
-				(long long)ctr6->new_highwatermark.tmp_highest_usn,
-				(long long)ctr6->new_highwatermark.highest_usn));
-#if 0
-			libnet_dssync_decrypt_attributes(mem_ctx,
-							 &session_key,
-							 ctr6->first_object);
-#endif
-			if (ctr6->more_data) {
-				req.req8.highwatermark = ctr6->new_highwatermark;
-				continue;
-			}
-		}
-
-		break;
-	}
-
- out:
-	return werr;
-}
-
-/* List of commands exported by this module */
-
-struct cmd_set drsuapi_commands[] = {
-
-	{ "DRSUAPI" },
-	{ "dscracknames", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_cracknames, &ndr_table_drsuapi.syntax_id, NULL, "Crack Name", "" },
-	{ "dsgetdcinfo", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_getdcinfo, &ndr_table_drsuapi.syntax_id, NULL, "Get Domain Controller Info", "" },
-	{ "dsgetncchanges", RPC_RTYPE_WERROR, NULL, cmd_drsuapi_getncchanges, &ndr_table_drsuapi.syntax_id, NULL, "Get NC Changes", "" },
-	{ NULL }
-};

Modified: branches/samba/upstream/source/rpcclient/cmd_dssetup.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_dssetup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_dssetup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -63,7 +63,7 @@
 
 	{ "LSARPC-DS" },
 
-	{ "dsroledominfo",   RPC_RTYPE_WERROR, NULL, cmd_ds_dsrole_getprimarydominfo, &ndr_table_dssetup.syntax_id, NULL, "Get Primary Domain Information", "" },
+	{ "dsroledominfo",   RPC_RTYPE_WERROR, NULL, cmd_ds_dsrole_getprimarydominfo, PI_DSSETUP, NULL, "Get Primary Domain Information", "" },
 
 { NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_echo.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_echo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_echo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -176,9 +176,9 @@
 
 	{ "ECHO" },
 
-	{ "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one,     NULL, &ndr_table_rpcecho.syntax_id, NULL, "Add one to a number", "" },
-	{ "echodata",   RPC_RTYPE_NTSTATUS, cmd_echo_data,        NULL, &ndr_table_rpcecho.syntax_id, NULL, "Echo data",           "" },
-	{ "sinkdata",   RPC_RTYPE_NTSTATUS, cmd_echo_sink_data,   NULL, &ndr_table_rpcecho.syntax_id, NULL, "Sink data",           "" },
-	{ "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, &ndr_table_rpcecho.syntax_id, NULL, "Source data",         "" },
+	{ "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one,     NULL, PI_RPCECHO, NULL, "Add one to a number", "" },
+	{ "echodata",   RPC_RTYPE_NTSTATUS, cmd_echo_data,        NULL, PI_RPCECHO, NULL, "Echo data",           "" },
+	{ "sinkdata",   RPC_RTYPE_NTSTATUS, cmd_echo_sink_data,   NULL, PI_RPCECHO, NULL, "Sink data",           "" },
+	{ "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, PI_RPCECHO, NULL, "Source data",         "" },
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_lsarpc.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_lsarpc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_lsarpc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -948,8 +948,7 @@
 	return result;
 }
 
-static void display_trust_dom_info_4(struct lsa_TrustDomainInfoPassword *p,
-				     uint8_t nt_hash[16])
+static void display_trust_dom_info_4(struct lsa_TrustDomainInfoPassword *p, const char *password)
 {
 	char *pwd, *pwd_old;
 	
@@ -959,8 +958,8 @@
 	memcpy(data.data, p->password->data, p->password->length);
 	memcpy(data_old.data, p->old_password->data, p->old_password->length);
 	
-	pwd 	= decrypt_trustdom_secret(nt_hash, &data);
-	pwd_old = decrypt_trustdom_secret(nt_hash, &data_old);
+	pwd 	= decrypt_trustdom_secret(password, &data);
+	pwd_old = decrypt_trustdom_secret(password, &data_old);
 	
 	d_printf("Password:\t%s\n", pwd);
 	d_printf("Old Password:\t%s\n", pwd_old);
@@ -975,11 +974,11 @@
 static void display_trust_dom_info(TALLOC_CTX *mem_ctx,
 				   union lsa_TrustedDomainInfo *info,
 				   enum lsa_TrustDomInfoEnum info_class,
-				   uint8_t nt_hash[16])
+				   const char *pass)
 {
 	switch (info_class) {
 		case LSA_TRUSTED_DOMAIN_INFO_PASSWORD:
-			display_trust_dom_info_4(&info->password, nt_hash);
+			display_trust_dom_info_4(&info->password, pass);
 			break;
 		default: {
 			const char *str = NULL;
@@ -1004,7 +1003,6 @@
 	uint32 access_mask = SEC_RIGHTS_MAXIMUM_ALLOWED;
 	union lsa_TrustedDomainInfo *info = NULL;
 	enum lsa_TrustDomInfoEnum info_class = 1;
-	uint8_t nt_hash[16];
 
 	if (argc > 3 || argc < 2) {
 		printf("Usage: %s [sid] [info_class]\n", argv[0]);
@@ -1030,13 +1028,8 @@
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 
-	if (!rpccli_get_pwd_hash(cli, nt_hash)) {
-		d_fprintf(stderr, "Could not get pwd hash\n");
-		goto done;
-	}
+	display_trust_dom_info(mem_ctx, info, info_class, cli->pwd.password);
 
-	display_trust_dom_info(mem_ctx, info, info_class, nt_hash);
-
  done:
 	rpccli_lsa_Close(cli, mem_ctx, &pol);
 
@@ -1053,7 +1046,6 @@
 	union lsa_TrustedDomainInfo *info = NULL;
 	enum lsa_TrustDomInfoEnum info_class = 1;
 	struct lsa_String trusted_domain;
-	uint8_t nt_hash[16];
 
 	if (argc > 3 || argc < 2) {
 		printf("Usage: %s [name] [info_class]\n", argv[0]);
@@ -1078,13 +1070,8 @@
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 
-	if (!rpccli_get_pwd_hash(cli, nt_hash)) {
-		d_fprintf(stderr, "Could not get pwd hash\n");
-		goto done;
-	}
+	display_trust_dom_info(mem_ctx, info, info_class, cli->pwd.password);
 
-	display_trust_dom_info(mem_ctx, info, info_class, nt_hash);
-
  done:
 	rpccli_lsa_Close(cli, mem_ctx, &pol);
 
@@ -1101,7 +1088,6 @@
 	union lsa_TrustedDomainInfo *info = NULL;
 	DOM_SID dom_sid;
 	enum lsa_TrustDomInfoEnum info_class = 1;
-	uint8_t nt_hash[16];
 
 	if (argc > 3 || argc < 2) {
 		printf("Usage: %s [sid] [info_class]\n", argv[0]);
@@ -1137,13 +1123,8 @@
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 
-	if (!rpccli_get_pwd_hash(cli, nt_hash)) {
-		d_fprintf(stderr, "Could not get pwd hash\n");
-		goto done;
-	}
+	display_trust_dom_info(mem_ctx, info, info_class, cli->pwd.password);
 
-	display_trust_dom_info(mem_ctx, info, info_class, nt_hash);
-
  done:
 	rpccli_lsa_Close(cli, mem_ctx, &pol);
 
@@ -1156,7 +1137,7 @@
 {
 	POLICY_HND pol;
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-	const char *servername = cli->desthost;
+	const char *servername = cli->cli->desthost;
 	struct lsa_String *account_name = NULL;
 	struct lsa_String *authority_name = NULL;
 
@@ -1368,27 +1349,27 @@
 
 	{ "LSARPC" },
 
-	{ "lsaquery", 	         RPC_RTYPE_NTSTATUS, cmd_lsa_query_info_policy,  NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query info policy",                    "" },
-	{ "lookupsids",          RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids,        NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert SIDs to names",                "" },
-	{ "lookupnames",         RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names,       NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert names to SIDs",                "" },
-	{ "lookupnames_level",   RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names_level, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Convert names to SIDs",                "" },
-	{ "enumtrust", 	         RPC_RTYPE_NTSTATUS, cmd_lsa_enum_trust_dom,     NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate trusted domains",            "Usage: [preferred max number] [enum context (0)]" },
-	{ "enumprivs", 	         RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privilege,     NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate privileges",                 "" },
-	{ "getdispname",         RPC_RTYPE_NTSTATUS, cmd_lsa_get_dispname,       NULL, &ndr_table_lsarpc.syntax_id, NULL, "Get the privilege name",               "" },
-	{ "lsaenumsid",          RPC_RTYPE_NTSTATUS, cmd_lsa_enum_sids,          NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate the LSA SIDS",               "" },
-	{ "lsacreateaccount",    RPC_RTYPE_NTSTATUS, cmd_lsa_create_account,     NULL, &ndr_table_lsarpc.syntax_id, NULL, "Create a new lsa account",   "" },
-	{ "lsaenumprivsaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privsaccounts, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate the privileges of an SID",   "" },
-	{ "lsaenumacctrights",   RPC_RTYPE_NTSTATUS, cmd_lsa_enum_acct_rights,   NULL, &ndr_table_lsarpc.syntax_id, NULL, "Enumerate the rights of an SID",   "" },
-	{ "lsaaddpriv",          RPC_RTYPE_NTSTATUS, cmd_lsa_add_priv,           NULL, &ndr_table_lsarpc.syntax_id, NULL, "Assign a privilege to a SID", "" },
-	{ "lsadelpriv",          RPC_RTYPE_NTSTATUS, cmd_lsa_del_priv,           NULL, &ndr_table_lsarpc.syntax_id, NULL, "Revoke a privilege from a SID", "" },
-	{ "lsaaddacctrights",    RPC_RTYPE_NTSTATUS, cmd_lsa_add_acct_rights,    NULL, &ndr_table_lsarpc.syntax_id, NULL, "Add rights to an account",   "" },
-	{ "lsaremoveacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_remove_acct_rights, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Remove rights from an account",   "" },
-	{ "lsalookupprivvalue",  RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_priv_value,  NULL, &ndr_table_lsarpc.syntax_id, NULL, "Get a privilege value given its name", "" },
-	{ "lsaquerysecobj",      RPC_RTYPE_NTSTATUS, cmd_lsa_query_secobj,       NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA security object", "" },
-	{ "lsaquerytrustdominfo",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfo, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA trusted domains info (given a SID)", "" },
-	{ "lsaquerytrustdominfobyname",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobyname, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA trusted domains info (given a name), only works for Windows > 2k", "" },
-	{ "lsaquerytrustdominfobysid",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobysid, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Query LSA trusted domains info (given a SID)", "" },
-	{ "getusername",          RPC_RTYPE_NTSTATUS, cmd_lsa_get_username, NULL, &ndr_table_lsarpc.syntax_id, NULL, "Get username", "" },
+	{ "lsaquery", 	         RPC_RTYPE_NTSTATUS, cmd_lsa_query_info_policy,  NULL, PI_LSARPC, NULL, "Query info policy",                    "" },
+	{ "lookupsids",          RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_sids,        NULL, PI_LSARPC, NULL, "Convert SIDs to names",                "" },
+	{ "lookupnames",         RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names,       NULL, PI_LSARPC, NULL, "Convert names to SIDs",                "" },
+	{ "lookupnames_level",   RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_names_level, NULL, PI_LSARPC, NULL, "Convert names to SIDs",                "" },
+	{ "enumtrust", 	         RPC_RTYPE_NTSTATUS, cmd_lsa_enum_trust_dom,     NULL, PI_LSARPC, NULL, "Enumerate trusted domains",            "Usage: [preferred max number] [enum context (0)]" },
+	{ "enumprivs", 	         RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privilege,     NULL, PI_LSARPC, NULL, "Enumerate privileges",                 "" },
+	{ "getdispname",         RPC_RTYPE_NTSTATUS, cmd_lsa_get_dispname,       NULL, PI_LSARPC, NULL, "Get the privilege name",               "" },
+	{ "lsaenumsid",          RPC_RTYPE_NTSTATUS, cmd_lsa_enum_sids,          NULL, PI_LSARPC, NULL, "Enumerate the LSA SIDS",               "" },
+	{ "lsacreateaccount",    RPC_RTYPE_NTSTATUS, cmd_lsa_create_account,     NULL, PI_LSARPC, NULL, "Create a new lsa account",   "" },
+	{ "lsaenumprivsaccount", RPC_RTYPE_NTSTATUS, cmd_lsa_enum_privsaccounts, NULL, PI_LSARPC, NULL, "Enumerate the privileges of an SID",   "" },
+	{ "lsaenumacctrights",   RPC_RTYPE_NTSTATUS, cmd_lsa_enum_acct_rights,   NULL, PI_LSARPC, NULL, "Enumerate the rights of an SID",   "" },
+	{ "lsaaddpriv",          RPC_RTYPE_NTSTATUS, cmd_lsa_add_priv,           NULL, PI_LSARPC, NULL, "Assign a privilege to a SID", "" },
+	{ "lsadelpriv",          RPC_RTYPE_NTSTATUS, cmd_lsa_del_priv,           NULL, PI_LSARPC, NULL, "Revoke a privilege from a SID", "" },
+	{ "lsaaddacctrights",    RPC_RTYPE_NTSTATUS, cmd_lsa_add_acct_rights,    NULL, PI_LSARPC, NULL, "Add rights to an account",   "" },
+	{ "lsaremoveacctrights", RPC_RTYPE_NTSTATUS, cmd_lsa_remove_acct_rights, NULL, PI_LSARPC, NULL, "Remove rights from an account",   "" },
+	{ "lsalookupprivvalue",  RPC_RTYPE_NTSTATUS, cmd_lsa_lookup_priv_value,  NULL, PI_LSARPC, NULL, "Get a privilege value given its name", "" },
+	{ "lsaquerysecobj",      RPC_RTYPE_NTSTATUS, cmd_lsa_query_secobj,       NULL, PI_LSARPC, NULL, "Query LSA security object", "" },
+	{ "lsaquerytrustdominfo",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfo, NULL, PI_LSARPC, NULL, "Query LSA trusted domains info (given a SID)", "" },
+	{ "lsaquerytrustdominfobyname",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobyname, NULL, PI_LSARPC, NULL, "Query LSA trusted domains info (given a name), only works for Windows > 2k", "" },
+	{ "lsaquerytrustdominfobysid",RPC_RTYPE_NTSTATUS, cmd_lsa_query_trustdominfobysid, NULL, PI_LSARPC, NULL, "Query LSA trusted domains info (given a SID)", "" },
+	{ "getusername",          RPC_RTYPE_NTSTATUS, cmd_lsa_get_username, NULL, PI_LSARPC, NULL, "Get username", "" },
 
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_netlogon.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_netlogon.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_netlogon.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,7 +28,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr;
-	const char *logon_server = cli->desthost;
+	const char *logon_server = cli->cli->desthost;
 	enum netr_LogonControlCode function_code = NETLOGON_CONTROL_REDISCOVER;
 	uint32_t level = 1;
 	union netr_CONTROL_DATA_INFORMATION data;
@@ -101,15 +101,14 @@
 	}
 
 	/* Make sure to wait for our DC's reply */
-	old_timeout = rpccli_set_timeout(cli, 30000); /* 30 seconds. */
-	rpccli_set_timeout(cli, MAX(old_timeout, 30000)); /* At least 30 sec */
+	old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
 	status = rpccli_netr_GetAnyDCName(cli, mem_ctx,
-					  cli->desthost,
+					  cli->cli->desthost,
 					  argv[1],
 					  &dcname,
 					  &werr);
-	rpccli_set_timeout(cli, old_timeout);
+	cli_set_timeout(cli->cli, old_timeout);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		return ntstatus_to_werror(status);
@@ -141,15 +140,14 @@
 	}
 
 	/* Make sure to wait for our DC's reply */
-	old_timeout = rpccli_set_timeout(cli, 30000); /* 30 seconds. */
-	rpccli_set_timeout(cli, MAX(30000, old_timeout)); /* At least 30 sec */
+	old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
 	status = rpccli_netr_GetDcName(cli, mem_ctx,
-				       cli->desthost,
+				       cli->cli->desthost,
 				       argv[1],
 				       &dcname,
 				       &werr);
-	rpccli_set_timeout(cli, old_timeout);
+	cli_set_timeout(cli->cli, old_timeout);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		return ntstatus_to_werror(status);
@@ -173,7 +171,7 @@
 	NTSTATUS result;
 	WERROR werr = WERR_OK;
 	uint32 flags = DS_RETURN_DNS_NAME;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	const char *domain_name;
 	struct GUID domain_guid = GUID_zero();
 	struct GUID site_guid = GUID_zero();
@@ -233,7 +231,7 @@
 	WERROR result;
 	NTSTATUS status;
 	uint32_t flags = DS_RETURN_DNS_NAME;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	const char *domain_name;
 	const char *site_name = NULL;
 	struct GUID domain_guid = GUID_zero();
@@ -292,7 +290,7 @@
 	WERROR result;
 	NTSTATUS status;
 	uint32_t flags = DS_RETURN_DNS_NAME;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	const char *domain_name = NULL;
 	const char *client_account = NULL;
 	uint32_t mask = 0;
@@ -398,7 +396,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr;
-	const char *logon_server = cli->desthost;
+	const char *logon_server = cli->cli->desthost;
 	enum netr_LogonControlCode function_code = 1;
 	uint32_t level = 1;
 	union netr_CONTROL_QUERY_INFORMATION info;
@@ -562,7 +560,7 @@
                                       const char **argv)
 {
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-	const char *logon_server = cli->desthost;
+	const char *logon_server = cli->cli->desthost;
 	const char *computername = global_myname();
 	struct netr_Authenticator credential;
 	struct netr_Authenticator return_authenticator;
@@ -627,7 +625,7 @@
 {
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	uint32_t tmp;
-	const char *logon_server = cli->desthost;
+	const char *logon_server = cli->cli->desthost;
 	const char *computername = global_myname();
 	struct netr_Authenticator credential;
 	struct netr_Authenticator return_authenticator;
@@ -761,7 +759,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	const char *domain_name = lp_workgroup();
 	uint32_t rid = 0;
 
@@ -801,7 +799,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	uint32_t trust_flags = NETR_TRUST_FLAG_IN_FOREST;
 	struct netr_DomainTrustList trusts;
 
@@ -849,7 +847,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	const char *domain = lp_workgroup();
 	const char *dns_host = NULL;
 
@@ -895,7 +893,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	const char *trusted_domain_name = NULL;
 	struct lsa_ForestTrustInformation *info = NULL;
 	uint32_t flags = 0;
@@ -941,7 +939,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	struct netr_Blob blob;
 
 
@@ -976,7 +974,7 @@
 {
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	WERROR werr = WERR_GENERAL_FAILURE;
-	const char *server_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
 	struct netr_DomainTrustList list;
 
 	if (argc < 1 || argc > 3) {
@@ -1010,25 +1008,25 @@
 
 	{ "NETLOGON" },
 
-	{ "logonctrl2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl2, &ndr_table_netlogon.syntax_id, NULL, "Logon Control 2",     "" },
-	{ "getanydcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getanydcname, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name",     "" },
-	{ "getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcname, &ndr_table_netlogon.syntax_id, NULL, "Get trusted PDC name",     "" },
-	{ "dsr_getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcname, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name",     "" },
-	{ "dsr_getdcnameex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name",     "" },
-	{ "dsr_getdcnameex2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex2, &ndr_table_netlogon.syntax_id, NULL, "Get trusted DC name",     "" },
-	{ "dsr_getsitename", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getsitename, &ndr_table_netlogon.syntax_id, NULL, "Get sitename",     "" },
-	{ "dsr_getforesttrustinfo", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getforesttrustinfo, &ndr_table_netlogon.syntax_id, NULL, "Get Forest Trust Info",     "" },
-	{ "logonctrl",  RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl, &ndr_table_netlogon.syntax_id, NULL, "Logon Control",       "" },
-	{ "samsync",    RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_sync,    NULL, &ndr_table_netlogon.syntax_id, NULL, "Sam Synchronisation", "" },
-	{ "samdeltas",  RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_deltas,  NULL, &ndr_table_netlogon.syntax_id, NULL, "Query Sam Deltas",    "" },
-	{ "samlogon",   RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_logon,   NULL, &ndr_table_netlogon.syntax_id, NULL, "Sam Logon",           "" },
-	{ "change_trust_pw",   RPC_RTYPE_NTSTATUS, cmd_netlogon_change_trust_pw,   NULL, &ndr_table_netlogon.syntax_id, NULL, "Change Trust Account Password",           "" },
-	{ "gettrustrid", RPC_RTYPE_WERROR, NULL, cmd_netlogon_gettrustrid, &ndr_table_netlogon.syntax_id, NULL, "Get trust rid",     "" },
-	{ "dsr_enumtrustdom", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
-	{ "dsenumdomtrusts",  RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, &ndr_table_netlogon.syntax_id, NULL, "Enumerate all trusted domains in an AD forest",     "" },
-	{ "deregisterdnsrecords", RPC_RTYPE_WERROR, NULL, cmd_netlogon_deregisterdnsrecords, &ndr_table_netlogon.syntax_id, NULL, "Deregister DNS records",     "" },
-	{ "netrenumtrusteddomains", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomains, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
-	{ "netrenumtrusteddomainsex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomainsex, &ndr_table_netlogon.syntax_id, NULL, "Enumerate trusted domains",     "" },
+	{ "logonctrl2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl2, PI_NETLOGON, NULL, "Logon Control 2",     "" },
+	{ "getanydcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getanydcname, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
+	{ "getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcname, PI_NETLOGON, NULL, "Get trusted PDC name",     "" },
+	{ "dsr_getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcname, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
+	{ "dsr_getdcnameex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
+	{ "dsr_getdcnameex2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex2, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
+	{ "dsr_getsitename", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getsitename, PI_NETLOGON, NULL, "Get sitename",     "" },
+	{ "dsr_getforesttrustinfo", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getforesttrustinfo, PI_NETLOGON, NULL, "Get Forest Trust Info",     "" },
+	{ "logonctrl",  RPC_RTYPE_WERROR, NULL, cmd_netlogon_logon_ctrl, PI_NETLOGON, NULL, "Logon Control",       "" },
+	{ "samsync",    RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_sync,    NULL, PI_NETLOGON, NULL, "Sam Synchronisation", "" },
+	{ "samdeltas",  RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_deltas,  NULL, PI_NETLOGON, NULL, "Query Sam Deltas",    "" },
+	{ "samlogon",   RPC_RTYPE_NTSTATUS, cmd_netlogon_sam_logon,   NULL, PI_NETLOGON, NULL, "Sam Logon",           "" },
+	{ "change_trust_pw",   RPC_RTYPE_NTSTATUS, cmd_netlogon_change_trust_pw,   NULL, PI_NETLOGON, NULL, "Change Trust Account Password",           "" },
+	{ "gettrustrid", RPC_RTYPE_WERROR, NULL, cmd_netlogon_gettrustrid, PI_NETLOGON, NULL, "Get trust rid",     "" },
+	{ "dsr_enumtrustdom", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, PI_NETLOGON, NULL, "Enumerate trusted domains",     "" },
+	{ "dsenumdomtrusts",  RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_enumtrustdom, PI_NETLOGON, NULL, "Enumerate all trusted domains in an AD forest",     "" },
+	{ "deregisterdnsrecords", RPC_RTYPE_WERROR, NULL, cmd_netlogon_deregisterdnsrecords, PI_NETLOGON, NULL, "Deregister DNS records",     "" },
+	{ "netrenumtrusteddomains", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomains, PI_NETLOGON, NULL, "Enumerate trusted domains",     "" },
+	{ "netrenumtrusteddomainsex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_enumtrusteddomainsex, PI_NETLOGON, NULL, "Enumerate trusted domains",     "" },
 
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_ntsvcs.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_ntsvcs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_ntsvcs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -177,53 +177,13 @@
 	return werr;
 }
 
-static WERROR cmd_ntsvcs_get_dev_reg_prop(struct rpc_pipe_client *cli,
-					  TALLOC_CTX *mem_ctx,
-					  int argc,
-					  const char **argv)
-{
-	NTSTATUS status;
-	WERROR werr;
-	const char *devicepath = NULL;
-	uint32_t property = DEV_REGPROP_DESC;
-	uint32_t unknown1 = 0;
-	uint8_t buffer;
-	uint32_t buffer_size = 0;
-	uint32_t unknown2 = 0;
-	uint32_t unknown3 = 0;
-
-	if (argc < 2) {
-		printf("usage: %s [devicepath]\n", argv[0]);
-		return WERR_OK;
-	}
-
-	devicepath = argv[1];
-
-	status = rpccli_PNP_GetDeviceRegProp(cli, mem_ctx,
-					     devicepath,
-					     property,
-					     &unknown1,
-					     &buffer,
-					     &buffer_size,
-					     &unknown2,
-					     unknown3,
-					     &werr);
-	if (!NT_STATUS_IS_OK(status)) {
-		return ntstatus_to_werror(status);
-	}
-
-	return werr;
-}
-
-
 struct cmd_set ntsvcs_commands[] = {
 
 	{ "NTSVCS" },
-	{ "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_version, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS version", "" },
-	{ "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_validate_dev_inst, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device instance", "" },
-	{ "ntsvcs_getdevlistsize", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_device_list_size, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS get device list", "" },
-	{ "ntsvcs_hwprofflags", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_hw_prof_flags, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS HW prof flags", "" },
-	{ "ntsvcs_hwprofinfo", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_hw_prof_info, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS HW prof info", "" },
-	{ "ntsvcs_getdevregprop", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_reg_prop, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device registry property", "" },
+	{ "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_version, PI_NTSVCS, NULL, "Query NTSVCS version", "" },
+	{ "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_validate_dev_inst, PI_NTSVCS, NULL, "Query NTSVCS device instance", "" },
+	{ "ntsvcs_getdevlistsize", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_device_list_size, PI_NTSVCS, NULL, "Query NTSVCS get device list", "" },
+	{ "ntsvcs_hwprofflags", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_hw_prof_flags, PI_NTSVCS, NULL, "Query NTSVCS HW prof flags", "" },
+	{ "ntsvcs_hwprofinfo", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_hw_prof_info, PI_NTSVCS, NULL, "Query NTSVCS HW prof info", "" },
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_samr.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_samr.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_samr.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -735,14 +735,13 @@
 		goto done;
 
 	/* Make sure to wait for our DC's reply */
-	old_timeout = rpccli_set_timeout(cli, 30000); /* 30 seconds. */
-	rpccli_set_timeout(cli, MAX(30000, old_timeout)); /* At least 30 sec */
+	old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
 	result = rpccli_samr_QueryGroupMember(cli, mem_ctx,
 					      &group_pol,
 					      &rids);
 
-	rpccli_set_timeout(cli, old_timeout);
+	cli_set_timeout(cli->cli, old_timeout);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2424,98 +2423,6 @@
 
 /* Change user password */
 
-static NTSTATUS cmd_samr_chgpasswd(struct rpc_pipe_client *cli,
-				   TALLOC_CTX *mem_ctx,
-				   int argc, const char **argv)
-{
-	POLICY_HND connect_pol, domain_pol, user_pol;
-	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-	const char *user, *oldpass, *newpass;
-	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
-	struct samr_Ids rids, types;
-	struct lsa_String lsa_acct_name;
-
-	if (argc < 3) {
-		printf("Usage: %s username oldpass newpass\n", argv[0]);
-		return NT_STATUS_INVALID_PARAMETER;
-	}
-
-	user = argv[1];
-	oldpass = argv[2];
-	newpass = argv[3];
-
-	/* Get sam policy handle */
-
-	result = rpccli_try_samr_connects(cli, mem_ctx,
-					  MAXIMUM_ALLOWED_ACCESS,
-					  &connect_pol);
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
-	/* Get domain policy handle */
-
-	result = rpccli_samr_OpenDomain(cli, mem_ctx,
-					&connect_pol,
-					access_mask,
-					&domain_sid,
-					&domain_pol);
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
-	init_lsa_String(&lsa_acct_name, user);
-
-	result = rpccli_samr_LookupNames(cli, mem_ctx,
-					 &domain_pol,
-					 1,
-					 &lsa_acct_name,
-					 &rids,
-					 &types);
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
-	result = rpccli_samr_OpenUser(cli, mem_ctx,
-				      &domain_pol,
-				      access_mask,
-				      rids.ids[0],
-				      &user_pol);
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
-	/* Change user password */
-	result = rpccli_samr_chgpasswd_user(cli, mem_ctx,
-					    &user_pol,
-					    newpass,
-					    oldpass);
-
-	if (!NT_STATUS_IS_OK(result)) {
-		goto done;
-	}
-
- done:
-	if (is_valid_policy_hnd(&user_pol)) {
-		rpccli_samr_Close(cli, mem_ctx, &user_pol);
-	}
-	if (is_valid_policy_hnd(&domain_pol)) {
-		rpccli_samr_Close(cli, mem_ctx, &domain_pol);
-	}
-	if (is_valid_policy_hnd(&connect_pol)) {
-		rpccli_samr_Close(cli, mem_ctx, &connect_pol);
-	}
-
-	return result;
-}
-
-
-/* Change user password */
-
 static NTSTATUS cmd_samr_chgpasswd2(struct rpc_pipe_client *cli,
 				    TALLOC_CTX *mem_ctx,
 				    int argc, const char **argv)
@@ -2555,7 +2462,7 @@
 		goto done;
 
 	/* Change user password */
-	result = rpccli_samr_chgpasswd_user2(cli, mem_ctx, user, newpass, oldpass);
+	result = rpccli_samr_chgpasswd_user(cli, mem_ctx, user, newpass, oldpass);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -2614,12 +2521,12 @@
 		goto done;
 
 	/* Change user password */
-	result = rpccli_samr_chgpasswd_user3(cli, mem_ctx,
-					     user,
-					     newpass,
-					     oldpass,
-					     &info,
-					     &reject);
+	result = rpccli_samr_chgpasswd3(cli, mem_ctx,
+					user,
+					newpass,
+					oldpass,
+					&info,
+					&reject);
 
 	if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION)) {
 
@@ -2726,38 +2633,37 @@
 
 	{ "SAMR" },
 
-	{ "queryuser", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_user, 		NULL, &ndr_table_samr.syntax_id, NULL,	"Query user info",         "" },
-	{ "querygroup", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_group, 		NULL, &ndr_table_samr.syntax_id, NULL,	"Query group info",        "" },
-	{ "queryusergroups", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_usergroups, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query user groups",       "" },
-	{ "queryuseraliases", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_useraliases, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query user aliases",      "" },
-	{ "querygroupmem", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_groupmem, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query group membership",  "" },
-	{ "queryaliasmem", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasmem, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query alias membership",  "" },
-	{ "queryaliasinfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasinfo, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query alias info",       "" },
-	{ "deletealias", 	RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Delete an alias",  "" },
-	{ "querydispinfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query display info",      "" },
-	{ "querydispinfo2", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query display info",      "" },
-	{ "querydispinfo3", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query display info",      "" },
-	{ "querydominfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, 	NULL, &ndr_table_samr.syntax_id, NULL,	"Query domain info",       "" },
-	{ "enumdomusers",       RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users,       NULL, &ndr_table_samr.syntax_id, NULL,	"Enumerate domain users", "" },
-	{ "enumdomgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups,       NULL, &ndr_table_samr.syntax_id, NULL,	"Enumerate domain groups", "" },
-	{ "enumalsgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_als_groups,       NULL, &ndr_table_samr.syntax_id, NULL,	"Enumerate alias groups",  "" },
-	{ "enumdomains",        RPC_RTYPE_NTSTATUS, cmd_samr_enum_domains,          NULL, &ndr_table_samr.syntax_id, NULL,	"Enumerate domains",  "" },
+	{ "queryuser", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_user, 		NULL, PI_SAMR, NULL,	"Query user info",         "" },
+	{ "querygroup", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_group, 		NULL, PI_SAMR, NULL,	"Query group info",        "" },
+	{ "queryusergroups", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_usergroups, 	NULL, PI_SAMR, NULL,	"Query user groups",       "" },
+	{ "queryuseraliases", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_useraliases, 	NULL, PI_SAMR, NULL,	"Query user aliases",      "" },
+	{ "querygroupmem", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_groupmem, 	NULL, PI_SAMR, NULL,	"Query group membership",  "" },
+	{ "queryaliasmem", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasmem, 	NULL, PI_SAMR, NULL,	"Query alias membership",  "" },
+	{ "queryaliasinfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasinfo, 	NULL, PI_SAMR, NULL,	"Query alias info",       "" },
+	{ "deletealias", 	RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, 	NULL, PI_SAMR, NULL,	"Delete an alias",  "" },
+	{ "querydispinfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, 	NULL, PI_SAMR, NULL,	"Query display info",      "" },
+	{ "querydispinfo2", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, 	NULL, PI_SAMR, NULL,	"Query display info",      "" },
+	{ "querydispinfo3", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, 	NULL, PI_SAMR, NULL,	"Query display info",      "" },
+	{ "querydominfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, 	NULL, PI_SAMR, NULL,	"Query domain info",       "" },
+	{ "enumdomusers",       RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users,       NULL, PI_SAMR, NULL,	"Enumerate domain users", "" },
+	{ "enumdomgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups,       NULL, PI_SAMR, NULL,	"Enumerate domain groups", "" },
+	{ "enumalsgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_als_groups,       NULL, PI_SAMR, NULL,	"Enumerate alias groups",  "" },
+	{ "enumdomains",        RPC_RTYPE_NTSTATUS, cmd_samr_enum_domains,          NULL, PI_SAMR, NULL,	"Enumerate domains",  "" },
 
-	{ "createdomuser",      RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_user,       NULL, &ndr_table_samr.syntax_id, NULL,	"Create domain user",      "" },
-	{ "createdomgroup",     RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_group,      NULL, &ndr_table_samr.syntax_id, NULL,	"Create domain group",     "" },
-	{ "createdomalias",     RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_alias,      NULL, &ndr_table_samr.syntax_id, NULL,	"Create domain alias",     "" },
-	{ "samlookupnames",     RPC_RTYPE_NTSTATUS, cmd_samr_lookup_names,          NULL, &ndr_table_samr.syntax_id, NULL,	"Look up names",           "" },
-	{ "samlookuprids",      RPC_RTYPE_NTSTATUS, cmd_samr_lookup_rids,           NULL, &ndr_table_samr.syntax_id, NULL,	"Look up names",           "" },
-	{ "deletedomgroup",     RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_group,      NULL, &ndr_table_samr.syntax_id, NULL,	"Delete domain group",     "" },
-	{ "deletedomuser",      RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_user,       NULL, &ndr_table_samr.syntax_id, NULL,	"Delete domain user",      "" },
-	{ "samquerysecobj",     RPC_RTYPE_NTSTATUS, cmd_samr_query_sec_obj,         NULL, &ndr_table_samr.syntax_id, NULL, "Query SAMR security object",   "" },
-	{ "getdompwinfo",       RPC_RTYPE_NTSTATUS, cmd_samr_get_dom_pwinfo,        NULL, &ndr_table_samr.syntax_id, NULL, "Retrieve domain password info", "" },
-	{ "getusrdompwinfo",    RPC_RTYPE_NTSTATUS, cmd_samr_get_usrdom_pwinfo,     NULL, &ndr_table_samr.syntax_id, NULL, "Retrieve user domain password info", "" },
+	{ "createdomuser",      RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_user,       NULL, PI_SAMR, NULL,	"Create domain user",      "" },
+	{ "createdomgroup",     RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_group,      NULL, PI_SAMR, NULL,	"Create domain group",     "" },
+	{ "createdomalias",     RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_alias,      NULL, PI_SAMR, NULL,	"Create domain alias",     "" },
+	{ "samlookupnames",     RPC_RTYPE_NTSTATUS, cmd_samr_lookup_names,          NULL, PI_SAMR, NULL,	"Look up names",           "" },
+	{ "samlookuprids",      RPC_RTYPE_NTSTATUS, cmd_samr_lookup_rids,           NULL, PI_SAMR, NULL,	"Look up names",           "" },
+	{ "deletedomgroup",     RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_group,      NULL, PI_SAMR, NULL,	"Delete domain group",     "" },
+	{ "deletedomuser",      RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_user,       NULL, PI_SAMR, NULL,	"Delete domain user",      "" },
+	{ "samquerysecobj",     RPC_RTYPE_NTSTATUS, cmd_samr_query_sec_obj,         NULL, PI_SAMR, NULL, "Query SAMR security object",   "" },
+	{ "getdompwinfo",       RPC_RTYPE_NTSTATUS, cmd_samr_get_dom_pwinfo,        NULL, PI_SAMR, NULL, "Retrieve domain password info", "" },
+	{ "getusrdompwinfo",    RPC_RTYPE_NTSTATUS, cmd_samr_get_usrdom_pwinfo,     NULL, PI_SAMR, NULL, "Retrieve user domain password info", "" },
 
-	{ "lookupdomain",       RPC_RTYPE_NTSTATUS, cmd_samr_lookup_domain,         NULL, &ndr_table_samr.syntax_id, NULL, "Lookup Domain Name", "" },
-	{ "chgpasswd",          RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd,             NULL, &ndr_table_samr.syntax_id, NULL, "Change user password", "" },
-	{ "chgpasswd2",         RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd2,            NULL, &ndr_table_samr.syntax_id, NULL, "Change user password", "" },
-	{ "chgpasswd3",         RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd3,            NULL, &ndr_table_samr.syntax_id, NULL, "Change user password", "" },
-	{ "getdispinfoidx",     RPC_RTYPE_NTSTATUS, cmd_samr_get_dispinfo_idx,      NULL, &ndr_table_samr.syntax_id, NULL, "Get Display Information Index", "" },
+	{ "lookupdomain",       RPC_RTYPE_NTSTATUS, cmd_samr_lookup_domain,         NULL, PI_SAMR, NULL, "Lookup Domain Name", "" },
+	{ "chgpasswd2",         RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd2,            NULL, PI_SAMR, NULL, "Change user password", "" },
+	{ "chgpasswd3",         RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd3,            NULL, PI_SAMR, NULL, "Change user password", "" },
+	{ "getdispinfoidx",     RPC_RTYPE_NTSTATUS, cmd_samr_get_dispinfo_idx,      NULL, PI_SAMR, NULL, "Get Display Information Index", "" },
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_shutdown.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_shutdown.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_shutdown.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -107,10 +107,10 @@
 	{ "SHUTDOWN"  },
 
 #if 0
-	{ "shutdowninit", RPC_RTYPE_NTSTATUS, cmd_shutdown_init, NULL, &ndr_table_initshutdown.syntax_id, "Remote Shutdown (over shutdown pipe)",
+	{ "shutdowninit", RPC_RTYPE_NTSTATUS, cmd_shutdown_init, NULL, PI_INITSHUTDOWN, "Remote Shutdown (over shutdown pipe)",
 				"syntax: shutdown [-m message] [-t timeout] [-r] [-h] [-f] (-r == reboot, -h == halt, -f == force)" },
 				
-	{ "shutdownabort", RPC_RTYPE_NTSTATUS, cmd_shutdown_abort, NULL, &ndr_table_initshutdown.syntax_id, "Abort Shutdown (over shutdown pipe)",
+	{ "shutdownabort", RPC_RTYPE_NTSTATUS, cmd_shutdown_abort, NULL, PI_INITSHUTDOWN, "Abort Shutdown (over shutdown pipe)",
 				"syntax: shutdownabort" },
 #endif
 	{ NULL }

Modified: branches/samba/upstream/source/rpcclient/cmd_spoolss.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_spoolss.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_spoolss.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -109,9 +109,9 @@
 	if (!cli)
             return WERR_GENERAL_FAILURE;
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 	fstrcpy(printername, argv[1]);
 
 	/* Open the printer handle */
@@ -317,7 +317,7 @@
 	if (argc == 3)
 		fstrcpy(name, argv[2]);
 	else {
-		slprintf(name, sizeof(name)-1, "\\\\%s", cli->desthost);
+		slprintf(name, sizeof(name)-1, "\\\\%s", cli->cli->desthost);
 		strupper_m(name);
 	}
 
@@ -488,10 +488,10 @@
 		fstrcpy(comment, argv[2]);
 	}
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	slprintf(printername, sizeof(servername)-1, "%s\\%s", servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 
 	/* get a printer handle */
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, "", 
@@ -554,10 +554,10 @@
 		fstrcpy(new_printername, argv[2]);
 	}
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	slprintf(printername, sizeof(printername)-1, "%s\\%s", servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 
 	/* get a printer handle */
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, "", 
@@ -617,10 +617,10 @@
 		info_level = atoi(argv[2]);
 	}
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	slprintf(printername, sizeof(printername)-1, "%s\\%s", servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 	
 	/* get a printer handle */
 
@@ -756,14 +756,14 @@
 
 	/* Open a printer handle */
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	if (strncmp(argv[1], ".", sizeof(".")) == 0)
 		fstrcpy(printername, servername);
 	else
 		slprintf(printername, sizeof(servername)-1, "%s\\%s", 
 			  servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 	
 	/* get a printer handle */
 
@@ -823,14 +823,14 @@
 
 	/* Open a printer handle */
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	if (strncmp(argv[1], ".", sizeof(".")) == 0)
 		fstrcpy(printername, servername);
 	else
 		slprintf(printername, sizeof(printername)-1, "%s\\%s", 
 			  servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 	
 	/* get a printer handle */
 
@@ -999,9 +999,9 @@
 	}
 
 	/* get the arguments need to open the printer handle */
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 	slprintf(printername, sizeof(servername)-1, "%s\\%s", servername, argv[1]);
 	if (argc == 3)
 		info_level = atoi(argv[2]);
@@ -1311,7 +1311,7 @@
 	fstring			driver_name;
 	char 			*driver_args;
 
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc != 3 && argc != 4)
 	{
 		printf ("Usage: %s <Environment> \\\n", argv[0]);
@@ -1376,14 +1376,14 @@
 	PRINTER_INFO_2		info2;
 	fstring			servername;
 	
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc != 5)
 	{
 		printf ("Usage: %s <name> <shared name> <driver> <port>\n", argv[0]);
 		return WERR_OK;
         }
 	
-        slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+        slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
         strupper_m(servername);
 
 	/* Fill in the DRIVER_INFO_2 struct */
@@ -1438,17 +1438,17 @@
 				printername,
 				user;
 	
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc != 3)
 	{
 		printf ("Usage: %s <printer> <driver>\n", argv[0]);
 		return WERR_OK;
         }
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	slprintf(printername, sizeof(printername)-1, "%s\\%s", servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 
 	/* Get a printer handle */
 
@@ -1510,7 +1510,7 @@
  
 	const char *arch = NULL;
  
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc < 2 || argc > 4) {
 		printf ("Usage: %s <driver> [arch] [version]\n", argv[0]);
 		return WERR_OK;
@@ -1565,13 +1565,13 @@
 	fstring			servername;
 	int			i;
 	
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc != 2) {
 		printf ("Usage: %s <driver>\n", argv[0]);
 		return WERR_OK;
         }
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 
 	/* delete the driver for all architectures */
@@ -1606,13 +1606,13 @@
 	char *servername = NULL, *environment = NULL;
 	fstring procdir;
 	
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc > 2) {
 		printf ("Usage: %s [environment]\n", argv[0]);
 		return WERR_OK;
         }
 
-	if (asprintf(&servername, "\\\\%s", cli->desthost) < 0)
+	if (asprintf(&servername, "\\\\%s", cli->cli->desthost) < 0)
 		return WERR_NOMEM;
 	strupper_m(servername);
 
@@ -1646,7 +1646,7 @@
 	FORM form;
 	bool got_handle = False;
 	
-	/* Parse the command arguments */
+	/* Parse the command arguements */
 
 	if (argc != 3) {
 		printf ("Usage: %s <printer> <formname>\n", argv[0]);
@@ -1655,14 +1655,13 @@
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	asprintf(&servername, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, "", 
 					     PRINTER_ALL_ACCESS, 
-					     servername, cli->auth->user_name,
-					     &handle);
+					     servername, cli->user_name, &handle);
 
 	if (!W_ERROR_IS_OK(werror))
 		goto done;
@@ -1707,7 +1706,7 @@
 	FORM form;
 	bool got_handle = False;
 	
-	/* Parse the command arguments */
+	/* Parse the command arguements */
 
 	if (argc != 3) {
 		printf ("Usage: %s <printer> <formname>\n", argv[0]);
@@ -1716,13 +1715,13 @@
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	asprintf(&servername, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
-		servername, cli->auth->user_name, &handle);
+		servername, cli->user_name, &handle);
 
 	if (!W_ERROR_IS_OK(werror))
 		goto done;
@@ -1804,7 +1803,7 @@
 	FORM_1 form;
 	bool got_handle = False;
 	
-	/* Parse the command arguments */
+	/* Parse the command arguements */
 
 	if (argc != 3) {
 		printf ("Usage: %s <printer> <formname>\n", argv[0]);
@@ -1813,13 +1812,13 @@
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	asprintf(&servername, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
-		servername, cli->auth->user_name, &handle);
+		servername, cli->user_name, &handle);
 
 	if (!W_ERROR_IS_OK(werror))
 		goto done;
@@ -1857,7 +1856,7 @@
 	char *servername = NULL, *printername = NULL;
 	bool got_handle = False;
 	
-	/* Parse the command arguments */
+	/* Parse the command arguements */
 
 	if (argc != 3) {
 		printf ("Usage: %s <printer> <formname>\n", argv[0]);
@@ -1866,13 +1865,13 @@
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	asprintf(&servername, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
-		servername, cli->auth->user_name, &handle);
+		servername, cli->user_name, &handle);
 
 	if (!W_ERROR_IS_OK(werror))
 		goto done;
@@ -1907,7 +1906,7 @@
 	uint32 num_forms, level = 1, i;
 	FORM_1 *forms;
 	
-	/* Parse the command arguments */
+	/* Parse the command arguements */
 
 	if (argc != 2) {
 		printf ("Usage: %s <printer>\n", argv[0]);
@@ -1916,13 +1915,13 @@
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	asprintf(&servername, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
-		servername, cli->auth->user_name, &handle);
+		servername, cli->user_name, &handle);
 
 	if (!W_ERROR_IS_OK(werror))
 		goto done;
@@ -1970,7 +1969,7 @@
 	REGISTRY_VALUE value;
 	TALLOC_CTX *tmp_ctx = talloc_stackframe();
 
-	/* parse the command arguments */
+	/* parse the command arguements */
 	if (argc < 5) {
 		printf ("Usage: %s <printer> <string|binary|dword|multistring>"
 			" <value> <data>\n",
@@ -1979,10 +1978,10 @@
 		goto done;
 	}
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 	slprintf(printername, sizeof(servername)-1, "%s\\%s", servername, argv[1]);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 
 	value.type = REG_NONE;
 
@@ -2189,10 +2188,12 @@
 
 	/* Open printer handle */
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
-	fstrcpy(user, cli->auth->user_name);
-	printername = talloc_asprintf(mem_ctx, "\\\\%s\\", cli->desthost);
+	fstrcpy(user, cli->user_name);
+	printername = talloc_asprintf(mem_ctx,
+				"\\\\%s\\",
+				cli->cli->desthost);
 	if (!printername) {
 		return WERR_NOMEM;
 	}
@@ -2261,10 +2262,12 @@
 
 	/* Open printer handle */
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
-	fstrcpy(user, cli->auth->user_name);
-	printername = talloc_asprintf(mem_ctx, "\\\\%s\\", cli->desthost);
+	fstrcpy(user, cli->user_name);
+	printername = talloc_asprintf(mem_ctx,
+				"\\\\%s\\",
+				cli->cli->desthost);
 	if (!printername) {
 		return WERR_NOMEM;
 	}
@@ -2331,11 +2334,13 @@
 
 	/* Open printer handle */
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 
-	printername = talloc_asprintf(mem_ctx, "\\\\%s\\", cli->desthost);
+	printername = talloc_asprintf(mem_ctx,
+				"\\\\%s\\",
+				cli->cli->desthost);
 	if (!printername) {
 		return WERR_NOMEM;
 	}
@@ -2404,11 +2409,13 @@
 
 	/* Open printer handle */
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
-	fstrcpy(user, cli->auth->user_name);
+	fstrcpy(user, cli->user_name);
 
-	printername = talloc_asprintf(mem_ctx, "\\\\%s\\", cli->desthost);
+	printername = talloc_asprintf(mem_ctx,
+				"\\\\%s\\",
+				cli->cli->desthost);
 	if (!printername) {
 		return WERR_NOMEM;
 	}
@@ -2478,16 +2485,16 @@
 
 	/* Open printer */
 
-	slprintf(servername, sizeof(servername) - 1, "\\\\%s", cli->desthost);
+	slprintf(servername, sizeof(servername) - 1, "\\\\%s", cli->cli->desthost);
 	strupper_m(servername);
 
-	slprintf(printername, sizeof(printername) - 1, "\\\\%s\\%s",
-		 cli->desthost, argv[1]);
+	slprintf(printername, sizeof(printername) - 1, "\\\\%s\\%s", cli->cli->desthost,
+		 argv[1]);
 	strupper_m(printername);
 
 	result = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
-		servername, cli->auth->user_name, &hnd);
+		servername, cli->user_name, &hnd);
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf("Error opening %s\n", argv[1]);
@@ -2552,7 +2559,7 @@
 	WERROR werror;
 	TALLOC_CTX *mem_ctx = talloc_init("compare_printer");
 
-	printf("Retrieving printer propertiesfor %s...", cli1->desthost);
+	printf("Retrieving printer propertiesfor %s...", cli1->cli->desthost);
 	werror = rpccli_spoolss_getprinter( cli1, mem_ctx, hnd1, 2, &ctr1);
 	if ( !W_ERROR_IS_OK(werror) ) {
 		printf("failed (%s)\n", dos_errstr(werror));
@@ -2561,7 +2568,7 @@
 	}
 	printf("ok\n");
 
-	printf("Retrieving printer properties for %s...", cli2->desthost);
+	printf("Retrieving printer properties for %s...", cli2->cli->desthost);
 	werror = rpccli_spoolss_getprinter( cli2, mem_ctx, hnd2, 2, &ctr2);
 	if ( !W_ERROR_IS_OK(werror) ) {
 		printf("failed (%s)\n", dos_errstr(werror));
@@ -2588,7 +2595,7 @@
 	bool result = True;
 
 
-	printf("Retrieving printer security for %s...", cli1->desthost);
+	printf("Retreiving printer security for %s...", cli1->cli->desthost);
 	werror = rpccli_spoolss_getprinter( cli1, mem_ctx, hnd1, 3, &ctr1);
 	if ( !W_ERROR_IS_OK(werror) ) {
 		printf("failed (%s)\n", dos_errstr(werror));
@@ -2597,7 +2604,7 @@
 	}
 	printf("ok\n");
 
-	printf("Retrieving printer security for %s...", cli2->desthost);
+	printf("Retrieving printer security for %s...", cli2->cli->desthost);
 	werror = rpccli_spoolss_getprinter( cli2, mem_ctx, hnd2, 3, &ctr2);
 	if ( !W_ERROR_IS_OK(werror) ) {
 		printf("failed (%s)\n", dos_errstr(werror));
@@ -2647,7 +2654,7 @@
 {
 	fstring printername, servername1, servername2;
 	char *printername_path = NULL;
-	struct cli_state *cli_server1 = rpc_pipe_np_smb_conn(cli);
+	struct cli_state *cli_server1 = cli->cli;
 	struct cli_state *cli_server2 = NULL;
 	struct rpc_pipe_client *cli2 = NULL;
 	POLICY_HND hPrinter1, hPrinter2;
@@ -2661,7 +2668,7 @@
 
 	fstrcpy( printername, argv[1] );
 
-	fstrcpy( servername1, cli->desthost );
+	fstrcpy( servername1, cli->cli->desthost );
 	fstrcpy( servername2, argv[2] );
 	strupper_m( servername1 );
 	strupper_m( servername2 );
@@ -2680,9 +2687,8 @@
 	if ( !NT_STATUS_IS_OK(nt_status) )
 		return WERR_GENERAL_FAILURE;
 
-	nt_status = cli_rpc_pipe_open_noauth(cli_server2, &syntax_spoolss,
-					     &cli2);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	cli2 = cli_rpc_pipe_open_noauth(cli_server2, PI_SPOOLSS, &nt_status);
+	if (!cli2) {
 		printf("failed to open spoolss pipe on server %s (%s)\n",
 			servername2, nt_errstr(nt_status));
 		return WERR_GENERAL_FAILURE;
@@ -2748,35 +2754,35 @@
 
 	{ "SPOOLSS"  },
 
-	{ "adddriver",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_addprinterdriver,	&syntax_spoolss, NULL, "Add a print driver",                  "" },
-	{ "addprinter",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_addprinterex,	&syntax_spoolss, NULL, "Add a printer",                       "" },
-	{ "deldriver",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_deletedriver,	&syntax_spoolss, NULL, "Delete a printer driver",             "" },
-	{ "deldriverex",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_deletedriverex,	&syntax_spoolss, NULL, "Delete a printer driver with files",  "" },
-	{ "enumdata",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_data,		&syntax_spoolss, NULL, "Enumerate printer data",              "" },
-	{ "enumdataex",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_data_ex,	&syntax_spoolss, NULL, "Enumerate printer data for a key",    "" },
-	{ "enumkey",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_printerkey,	&syntax_spoolss, NULL, "Enumerate printer keys",              "" },
-	{ "enumjobs",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_jobs,          &syntax_spoolss, NULL, "Enumerate print jobs",                "" },
-	{ "enumports", 		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_ports, 	&syntax_spoolss, NULL, "Enumerate printer ports",             "" },
-	{ "enumdrivers", 	RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_drivers, 	&syntax_spoolss, NULL, "Enumerate installed printer drivers", "" },
-	{ "enumprinters", 	RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_printers, 	&syntax_spoolss, NULL, "Enumerate printers",                  "" },
-	{ "getdata",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdata,	&syntax_spoolss, NULL, "Get print driver data",               "" },
-	{ "getdataex",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdataex,	&syntax_spoolss, NULL, "Get printer driver data with keyname", ""},
-	{ "getdriver",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriver,		&syntax_spoolss, NULL, "Get print driver information",        "" },
-	{ "getdriverdir",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriverdir,	&syntax_spoolss, NULL, "Get print driver upload directory",   "" },
-	{ "getprinter", 	RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinter, 	&syntax_spoolss, NULL, "Get printer info",                    "" },
-	{ "openprinter",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_open_printer_ex,	&syntax_spoolss, NULL, "Open printer handle",                 "" },
-	{ "setdriver", 		RPC_RTYPE_WERROR, NULL, cmd_spoolss_setdriver,		&syntax_spoolss, NULL, "Set printer driver",                  "" },
-	{ "getprintprocdir",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprintprocdir,    &syntax_spoolss, NULL, "Get print processor directory",       "" },
-	{ "addform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_addform,            &syntax_spoolss, NULL, "Add form",                            "" },
-	{ "setform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_setform,            &syntax_spoolss, NULL, "Set form",                            "" },
-	{ "getform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getform,            &syntax_spoolss, NULL, "Get form",                            "" },
-	{ "deleteform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_deleteform,         &syntax_spoolss, NULL, "Delete form",                         "" },
-	{ "enumforms",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_forms,         &syntax_spoolss, NULL, "Enumerate forms",                     "" },
-	{ "setprinter",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprinter,         &syntax_spoolss, NULL, "Set printer comment",                 "" },
-	{ "setprintername",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprintername,	&syntax_spoolss, NULL, "Set printername",                 "" },
-	{ "setprinterdata",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprinterdata,     &syntax_spoolss, NULL, "Set REG_SZ printer data",             "" },
-	{ "rffpcnex",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_rffpcnex,           &syntax_spoolss, NULL, "Rffpcnex test", "" },
-	{ "printercmp",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_printercmp,         &syntax_spoolss, NULL, "Printer comparison test", "" },
+	{ "adddriver",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_addprinterdriver,	PI_SPOOLSS, NULL, "Add a print driver",                  "" },
+	{ "addprinter",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_addprinterex,	PI_SPOOLSS, NULL, "Add a printer",                       "" },
+	{ "deldriver",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_deletedriver,	PI_SPOOLSS, NULL, "Delete a printer driver",             "" },
+	{ "deldriverex",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_deletedriverex,	PI_SPOOLSS, NULL, "Delete a printer driver with files",  "" },
+	{ "enumdata",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_data,		PI_SPOOLSS, NULL, "Enumerate printer data",              "" },
+	{ "enumdataex",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_data_ex,	PI_SPOOLSS, NULL, "Enumerate printer data for a key",    "" },
+	{ "enumkey",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_printerkey,	PI_SPOOLSS, NULL, "Enumerate printer keys",              "" },
+	{ "enumjobs",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_jobs,          PI_SPOOLSS, NULL, "Enumerate print jobs",                "" },
+	{ "enumports", 		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_ports, 	PI_SPOOLSS, NULL, "Enumerate printer ports",             "" },
+	{ "enumdrivers", 	RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_drivers, 	PI_SPOOLSS, NULL, "Enumerate installed printer drivers", "" },
+	{ "enumprinters", 	RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_printers, 	PI_SPOOLSS, NULL, "Enumerate printers",                  "" },
+	{ "getdata",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdata,	PI_SPOOLSS, NULL, "Get print driver data",               "" },
+	{ "getdataex",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinterdataex,	PI_SPOOLSS, NULL, "Get printer driver data with keyname", ""},
+	{ "getdriver",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriver,		PI_SPOOLSS, NULL, "Get print driver information",        "" },
+	{ "getdriverdir",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_getdriverdir,	PI_SPOOLSS, NULL, "Get print driver upload directory",   "" },
+	{ "getprinter", 	RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprinter, 	PI_SPOOLSS, NULL, "Get printer info",                    "" },
+	{ "openprinter",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_open_printer_ex,	PI_SPOOLSS, NULL, "Open printer handle",                 "" },
+	{ "setdriver", 		RPC_RTYPE_WERROR, NULL, cmd_spoolss_setdriver,		PI_SPOOLSS, NULL, "Set printer driver",                  "" },
+	{ "getprintprocdir",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_getprintprocdir,    PI_SPOOLSS, NULL, "Get print processor directory",       "" },
+	{ "addform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_addform,            PI_SPOOLSS, NULL, "Add form",                            "" },
+	{ "setform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_setform,            PI_SPOOLSS, NULL, "Set form",                            "" },
+	{ "getform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_getform,            PI_SPOOLSS, NULL, "Get form",                            "" },
+	{ "deleteform",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_deleteform,         PI_SPOOLSS, NULL, "Delete form",                         "" },
+	{ "enumforms",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_enum_forms,         PI_SPOOLSS, NULL, "Enumerate forms",                     "" },
+	{ "setprinter",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprinter,         PI_SPOOLSS, NULL, "Set printer comment",                 "" },
+	{ "setprintername",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprintername,	PI_SPOOLSS, NULL, "Set printername",                 "" },
+	{ "setprinterdata",	RPC_RTYPE_WERROR, NULL, cmd_spoolss_setprinterdata,     PI_SPOOLSS, NULL, "Set REG_SZ printer data",             "" },
+	{ "rffpcnex",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_rffpcnex,           PI_SPOOLSS, NULL, "Rffpcnex test", "" },
+	{ "printercmp",		RPC_RTYPE_WERROR, NULL, cmd_spoolss_printercmp,         PI_SPOOLSS, NULL, "Printer comparison test", "" },
 
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_srvsvc.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_srvsvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_srvsvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -172,6 +172,7 @@
 	union srvsvc_NetSrvInfo info;
 	WERROR result;
 	NTSTATUS status;
+	const char *server_name;
 
 	if (argc > 2) {
 		printf("Usage: %s [infolevel]\n", argv[0]);
@@ -181,8 +182,12 @@
 	if (argc == 2)
 		info_level = atoi(argv[1]);
 
+	server_name = talloc_asprintf_strupper_m(mem_ctx, "\\\\%s",
+						 cli->cli->desthost);
+	W_ERROR_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx,
-					     cli->srv_name_slash,
+					     server_name,
 					     info_level,
 					     &info,
 					     &result);
@@ -331,7 +336,7 @@
 	switch (opcode) {
 		case NDR_SRVSVC_NETSHAREENUM:
 			status = rpccli_srvsvc_NetShareEnum(cli, mem_ctx,
-							    cli->desthost,
+							    cli->cli->desthost,
 							    &info_ctr,
 							    preferred_len,
 							    &totalentries,
@@ -340,7 +345,7 @@
 			break;
 		case NDR_SRVSVC_NETSHAREENUMALL:
 			status = rpccli_srvsvc_NetShareEnumAll(cli, mem_ctx,
-							       cli->desthost,
+							       cli->cli->desthost,
 							       &info_ctr,
 							       preferred_len,
 							       &totalentries,
@@ -415,7 +420,7 @@
 		info_level = atoi(argv[2]);
 
 	status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx,
-					       cli->desthost,
+					       cli->cli->desthost,
 					       argv[1],
 					       info_level,
 					       &info,
@@ -463,7 +468,7 @@
 
 	/* retrieve share info */
 	status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx,
-					       cli->desthost,
+					       cli->cli->desthost,
 					       argv[1],
 					       info_level,
 					       &info_get,
@@ -477,7 +482,7 @@
 
 	/* set share info */
 	status = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx,
-					       cli->desthost,
+					       cli->cli->desthost,
 					       argv[1],
 					       info_level,
 					       &info_get,
@@ -490,7 +495,7 @@
 
 	/* re-retrieve share info and display */
 	status = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx,
-					       cli->desthost,
+					       cli->cli->desthost,
 					       argv[1],
 					       info_level,
 					       &info_get,
@@ -520,7 +525,7 @@
 	}
 
 	status = rpccli_srvsvc_NetRemoteTOD(cli, mem_ctx,
-					    cli->srv_name_slash,
+					    cli->cli->srv_name_slash,
 					    &tod,
 					    &result);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -563,7 +568,7 @@
 	info_ctr.ctr.ctr3 = &ctr3;
 
 	status = rpccli_srvsvc_NetFileEnum(cli, mem_ctx,
-					   cli->desthost,
+					   cli->cli->desthost,
 					   NULL,
 					   NULL,
 					   &info_ctr,
@@ -598,7 +603,7 @@
 	}
 
 	status = rpccli_srvsvc_NetNameValidate(cli, mem_ctx,
-					       cli->desthost,
+					       cli->cli->desthost,
 					       argv[1],
 					       name_type,
 					       flags,
@@ -625,7 +630,7 @@
 	}
 
 	status = rpccli_srvsvc_NetGetFileSecurity(cli, mem_ctx,
-						  cli->desthost,
+						  cli->cli->desthost,
 						  argv[1],
 						  argv[2],
 						  SECINFO_DACL,
@@ -655,7 +660,7 @@
 	}
 
 	status = rpccli_srvsvc_NetSessDel(cli, mem_ctx,
-					  cli->desthost,
+					  cli->cli->desthost,
 					  argv[1],
 					  argv[2],
 					  &result);
@@ -739,7 +744,7 @@
 	}
 
 	status = rpccli_srvsvc_NetSessEnum(cli, mem_ctx,
-					  cli->desthost,
+					  cli->cli->desthost,
 					  client,
 					  user,
 					  &info_ctr,
@@ -783,7 +788,7 @@
 	ZERO_STRUCT(info);
 
 	status = rpccli_srvsvc_NetDiskEnum(cli, mem_ctx,
-					   cli->desthost,
+					   cli->cli->desthost,
 					   level,
 					   &info,
 					   0xffffffff,
@@ -850,7 +855,7 @@
 	}
 
 	status = rpccli_srvsvc_NetConnEnum(cli, mem_ctx,
-					   cli->desthost,
+					   cli->cli->desthost,
 					   path,
 					   &info_ctr,
 					   0xffffffff,
@@ -873,19 +878,19 @@
 
 	{ "SRVSVC" },
 
-	{ "srvinfo",     RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, &ndr_table_srvsvc.syntax_id, NULL, "Server query info", "" },
-	{ "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate shares", "" },
-	{ "netshareenumall",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum_all, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate all shares", "" },
-	{ "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, &ndr_table_srvsvc.syntax_id, NULL, "Get Share Info", "" },
-	{ "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, &ndr_table_srvsvc.syntax_id, NULL, "Set Share Info", "" },
-	{ "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum,  &ndr_table_srvsvc.syntax_id, NULL, "Enumerate open files", "" },
-	{ "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, &ndr_table_srvsvc.syntax_id, NULL, "Fetch remote time of day", "" },
-	{ "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, &ndr_table_srvsvc.syntax_id, NULL, "Validate sharename", "" },
-	{ "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, &ndr_table_srvsvc.syntax_id, NULL, "Get File security", "" },
-	{ "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, &ndr_table_srvsvc.syntax_id, NULL, "Delete Session", "" },
-	{ "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate Sessions", "" },
-	{ "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate Disks", "" },
-	{ "netconnenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_conn_enum, &ndr_table_srvsvc.syntax_id, NULL, "Enumerate Connections", "" },
+	{ "srvinfo",     RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" },
+	{ "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" },
+	{ "netshareenumall",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum_all, PI_SRVSVC, NULL, "Enumerate all shares", "" },
+	{ "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" },
+	{ "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" },
+	{ "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum,  PI_SRVSVC, NULL, "Enumerate open files", "" },
+	{ "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" },
+	{ "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" },
+	{ "netfilegetsec", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_get_sec, PI_SRVSVC, NULL, "Get File security", "" },
+	{ "netsessdel", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_del, PI_SRVSVC, NULL, "Delete Session", "" },
+	{ "netsessenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_sess_enum, PI_SRVSVC, NULL, "Enumerate Sessions", "" },
+	{ "netdiskenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_disk_enum, PI_SRVSVC, NULL, "Enumerate Disks", "" },
+	{ "netconnenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_conn_enum, PI_SRVSVC, NULL, "Enumerate Connections", "" },
 
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_test.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_test.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_test.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -30,19 +30,11 @@
 
 	d_printf("testme\n");
 
-	status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
-					  &ndr_table_lsarpc.syntax_id,
-					  &lsa_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
+	lsa_pipe = cli_rpc_pipe_open_noauth(cli->cli, PI_LSARPC, &status);
+	if (lsa_pipe == NULL) goto done;
 
-	status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
-					  &ndr_table_samr.syntax_id,
-					  &samr_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
-		goto done;
-	}
+	samr_pipe = cli_rpc_pipe_open_noauth(cli->cli, PI_SAMR, &status);
+	if (samr_pipe == NULL) goto done;
 
 	status = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False,
 					SEC_RIGHTS_QUERY_VALUE, &pol);
@@ -56,8 +48,8 @@
 		goto done;
 
  done:
-	TALLOC_FREE(lsa_pipe);
-	TALLOC_FREE(samr_pipe);
+	if (lsa_pipe != NULL) cli_rpc_pipe_close(lsa_pipe);
+	if (samr_pipe != NULL) cli_rpc_pipe_close(samr_pipe);
 
 	return status;
 }
@@ -69,7 +61,7 @@
 	{ "TESTING" },
 
 	{ "testme", RPC_RTYPE_NTSTATUS, cmd_testme, NULL,
-	  NULL, NULL, "Sample test", "testme" },
+	  -1, NULL, "Sample test", "testme" },
 
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/cmd_wkssvc.c
===================================================================
--- branches/samba/upstream/source/rpcclient/cmd_wkssvc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/cmd_wkssvc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -41,7 +41,7 @@
 		level = atoi(argv[1]);
 	}
 
-	server_name = cli->desthost;
+	server_name = cli->cli->desthost;
 
 	status = rpccli_wkssvc_NetWkstaGetInfo(cli, mem_ctx,
 					       server_name,
@@ -66,7 +66,7 @@
 	NTSTATUS status;
 	WERROR werr;
 
-	server_name = cli->desthost;
+	server_name = cli->cli->desthost;
 	name_buffer = "";
 
 	status = rpccli_wkssvc_NetrGetJoinInformation(cli, mem_ctx,
@@ -90,9 +90,9 @@
 					   int argc,
 					   const char **argv)
 {
-	const char *server_name = cli->desthost;
-	const char *message_name = cli->desthost;
-	const char *message_sender_name = cli->desthost;
+	const char *server_name = cli->cli->desthost;
+	const char *message_name = cli->cli->desthost;
+	const char *message_sender_name = cli->cli->desthost;
 	smb_ucs2_t *message_buffer = NULL;
 	size_t message_size = 0;
 	const char *message = "my message";
@@ -103,9 +103,10 @@
 		message = argv[1];
 	}
 
-	if (!push_ucs2_talloc(mem_ctx, &message_buffer, message,
-			      &message_size))
-	{
+	message_size = push_ucs2_talloc(mem_ctx,
+					&message_buffer,
+					message);
+	if (message_size == -1) {
 		return WERR_NOMEM;
 	}
 
@@ -134,7 +135,7 @@
 	struct wkssvc_ComputerNamesCtr *ctr = NULL;
 	WERROR werr;
 
-	server_name = cli->desthost;
+	server_name = cli->cli->desthost;
 
 	if (argc >= 2) {
 		name_type = atoi(argv[1]);
@@ -162,9 +163,9 @@
 struct cmd_set wkssvc_commands[] = {
 
 	{ "WKSSVC" },
-	{ "wkssvc_wkstagetinfo", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_wkstagetinfo, &ndr_table_wkssvc.syntax_id, NULL, "Query WKSSVC Workstation Information", "" },
-	{ "wkssvc_getjoininformation", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_getjoininformation, &ndr_table_wkssvc.syntax_id, NULL, "Query WKSSVC Join Information", "" },
-	{ "wkssvc_messagebuffersend", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_messagebuffersend, &ndr_table_wkssvc.syntax_id, NULL, "Send WKSSVC message", "" },
-	{ "wkssvc_enumeratecomputernames", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_enumeratecomputernames, &ndr_table_wkssvc.syntax_id, NULL, "Enumerate WKSSVC computer names", "" },
+	{ "wkssvc_wkstagetinfo", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_wkstagetinfo, PI_WKSSVC, NULL, "Query WKSSVC Workstation Information", "" },
+	{ "wkssvc_getjoininformation", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_getjoininformation, PI_WKSSVC, NULL, "Query WKSSVC Join Information", "" },
+	{ "wkssvc_messagebuffersend", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_messagebuffersend, PI_WKSSVC, NULL, "Send WKSSVC message", "" },
+	{ "wkssvc_enumeratecomputernames", RPC_RTYPE_WERROR, NULL, cmd_wkssvc_enumeratecomputernames, PI_WKSSVC, NULL, "Enumerate WKSSVC computer names", "" },
 	{ NULL }
 };

Modified: branches/samba/upstream/source/rpcclient/rpcclient.c
===================================================================
--- branches/samba/upstream/source/rpcclient/rpcclient.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/rpcclient.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -145,9 +145,7 @@
 		goto error;
 	}
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &lsapipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	if ((lsapipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result)) == NULL) {
 		fprintf(stderr, "could not initialise lsa pipe. Error was %s\n", nt_errstr(result) );
 		goto error;
 	}
@@ -171,7 +169,7 @@
 	sid_copy(&domain_sid, info->account_domain.sid);
 
 	rpccli_lsa_Close(lsapipe, mem_ctx, &pol);
-	TALLOC_FREE(lsapipe);
+	cli_rpc_pipe_close(lsapipe);
 	talloc_destroy(mem_ctx);
 
 	return;
@@ -179,7 +177,7 @@
  error:
 
 	if (lsapipe) {
-		TALLOC_FREE(lsapipe);
+		cli_rpc_pipe_close(lsapipe);
 	}
 
 	fprintf(stderr, "could not obtain sid for domain %s\n", cli->domain);
@@ -336,11 +334,9 @@
 				continue;
 			}
 
-			if ((tmp_set->rpc_pipe->auth->auth_type
-			     != pipe_default_auth_type)
-			    || (tmp_set->rpc_pipe->auth->auth_level
-				!= pipe_default_auth_level)) {
-				TALLOC_FREE(tmp_set->rpc_pipe);
+			if (tmp_set->rpc_pipe->auth.auth_type != pipe_default_auth_type ||
+					tmp_set->rpc_pipe->auth.auth_level != pipe_default_auth_level) {
+				cli_rpc_pipe_close(tmp_set->rpc_pipe);
 				tmp_set->rpc_pipe = NULL;
 			}
 		}
@@ -351,8 +347,6 @@
 static NTSTATUS cmd_sign(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                          int argc, const char **argv)
 {
-	const char *type = "NTLMSSP";
-
 	pipe_default_auth_level = PIPE_AUTH_LEVEL_INTEGRITY;
 	pipe_default_auth_type = PIPE_AUTH_TYPE_NTLMSSP;
 
@@ -362,29 +356,25 @@
 	}
 
 	if (argc == 2) {
-		type = argv[1];
-		if (strequal(type, "NTLMSSP")) {
+		if (strequal(argv[1], "NTLMSSP")) {
 			pipe_default_auth_type = PIPE_AUTH_TYPE_NTLMSSP;
-		} else if (strequal(type, "NTLMSSP_SPNEGO")) {
+		} else if (strequal(argv[1], "NTLMSSP_SPNEGO")) {
 			pipe_default_auth_type = PIPE_AUTH_TYPE_SPNEGO_NTLMSSP;
-		} else if (strequal(type, "SCHANNEL")) {
+		} else if (strequal(argv[1], "SCHANNEL")) {
 			pipe_default_auth_type = PIPE_AUTH_TYPE_SCHANNEL;
 		} else {
-			printf("unknown type %s\n", type);
+			printf("unknown type %s\n", argv[1]);
 			return NT_STATUS_INVALID_LEVEL;
 		}
 	}
 
-	d_printf("Setting %s - sign\n", type);
-
+	printf("debuglevel is %d\n", DEBUGLEVEL);
 	return cmd_set_ss_level();
 }
 
 static NTSTATUS cmd_seal(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                          int argc, const char **argv)
 {
-	const char *type = "NTLMSSP";
-
 	pipe_default_auth_level = PIPE_AUTH_LEVEL_PRIVACY;
 	pipe_default_auth_type = PIPE_AUTH_TYPE_NTLMSSP;
 
@@ -394,21 +384,17 @@
 	}
 
 	if (argc == 2) {
-		type = argv[1];
-		if (strequal(type, "NTLMSSP")) {
+		if (strequal(argv[1], "NTLMSSP")) {
 			pipe_default_auth_type = PIPE_AUTH_TYPE_NTLMSSP;
-		} else if (strequal(type, "NTLMSSP_SPNEGO")) {
+		} else if (strequal(argv[1], "NTLMSSP_SPNEGO")) {
 			pipe_default_auth_type = PIPE_AUTH_TYPE_SPNEGO_NTLMSSP;
-		} else if (strequal(type, "SCHANNEL")) {
+		} else if (strequal(argv[1], "SCHANNEL")) {
 			pipe_default_auth_type = PIPE_AUTH_TYPE_SCHANNEL;
 		} else {
-			printf("unknown type %s\n", type);
+			printf("unknown type %s\n", argv[1]);
 			return NT_STATUS_INVALID_LEVEL;
 		}
 	}
-
-	d_printf("Setting %s - sign and seal\n", type);
-
 	return cmd_set_ss_level();
 }
 
@@ -434,7 +420,7 @@
 					continue;
 				}
 
-				rpccli_set_timeout(tmp_set->rpc_pipe, timeout);
+				cli_set_timeout(tmp_set->rpc_pipe->cli, timeout);
 			}
 		}
 	}
@@ -481,25 +467,25 @@
 
 	{ "GENERAL OPTIONS" },
 
-	{ "help", RPC_RTYPE_NTSTATUS, cmd_help, NULL, 	  NULL, NULL,	"Get help on commands", "[command]" },
-	{ "?", 	RPC_RTYPE_NTSTATUS, cmd_help, NULL,	  NULL, NULL,	"Get help on commands", "[command]" },
-	{ "debuglevel", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL,   NULL,	NULL, "Set debug level", "level" },
-	{ "debug", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL,   NULL,	NULL, "Set debug level", "level" },
-	{ "list",	RPC_RTYPE_NTSTATUS, cmd_listcommands, NULL, NULL,	NULL, "List available commands on <pipe>", "pipe" },
-	{ "exit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL,   NULL,	NULL,	"Exit program", "" },
-	{ "quit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL,	  NULL,	NULL, "Exit program", "" },
-	{ "sign", RPC_RTYPE_NTSTATUS, cmd_sign, NULL,	  NULL,	NULL, "Force RPC pipe connections to be signed", "" },
-	{ "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL,	  NULL,	NULL, "Force RPC pipe connections to be sealed", "" },
-	{ "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL,	  NULL, NULL,	"Force RPC pipe connections to be sealed with 'schannel'.  Assumes valid machine account to this domain controller.", "" },
-	{ "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL,	  NULL, NULL, "Force RPC pipe connections to be signed (not sealed) with 'schannel'.  Assumes valid machine account to this domain controller.", "" },
-	{ "timeout", RPC_RTYPE_NTSTATUS, cmd_timeout, NULL,	  NULL, NULL, "Set timeout (in milliseonds) for RPC operations", "" },
-	{ "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL,	  NULL, NULL, "Force RPC pipe connections to have no special properties", "" },
+	{ "help", RPC_RTYPE_NTSTATUS, cmd_help, NULL, 	  -1, NULL,	"Get help on commands", "[command]" },
+	{ "?", 	RPC_RTYPE_NTSTATUS, cmd_help, NULL,	  -1, NULL,	"Get help on commands", "[command]" },
+	{ "debuglevel", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL,   -1,	NULL, "Set debug level", "level" },
+	{ "debug", RPC_RTYPE_NTSTATUS, cmd_debuglevel, NULL,   -1,	NULL, "Set debug level", "level" },
+	{ "list",	RPC_RTYPE_NTSTATUS, cmd_listcommands, NULL, -1,	NULL, "List available commands on <pipe>", "pipe" },
+	{ "exit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL,   -1,	NULL,	"Exit program", "" },
+	{ "quit", RPC_RTYPE_NTSTATUS, cmd_quit, NULL,	  -1,	NULL, "Exit program", "" },
+	{ "sign", RPC_RTYPE_NTSTATUS, cmd_sign, NULL,	  -1,	NULL, "Force RPC pipe connections to be signed", "" },
+	{ "seal", RPC_RTYPE_NTSTATUS, cmd_seal, NULL,	  -1,	NULL, "Force RPC pipe connections to be sealed", "" },
+	{ "schannel", RPC_RTYPE_NTSTATUS, cmd_schannel, NULL,	  -1, NULL,	"Force RPC pipe connections to be sealed with 'schannel'.  Assumes valid machine account to this domain controller.", "" },
+	{ "schannelsign", RPC_RTYPE_NTSTATUS, cmd_schannel_sign, NULL,	  -1, NULL, "Force RPC pipe connections to be signed (not sealed) with 'schannel'.  Assumes valid machine account to this domain controller.", "" },
+	{ "timeout", RPC_RTYPE_NTSTATUS, cmd_timeout, NULL,	  -1, NULL, "Set timeout (in milliseonds) for RPC operations", "" },
+	{ "none", RPC_RTYPE_NTSTATUS, cmd_none, NULL,	  -1, NULL, "Force RPC pipe connections to have no special properties", "" },
 
 	{ NULL }
 };
 
 static struct cmd_set separator_command[] = {
-	{ "---------------", MAX_RPC_RETURN_TYPE, NULL, NULL,	NULL, NULL, "----------------------" },
+	{ "---------------", MAX_RPC_RETURN_TYPE, NULL, NULL,	-1, NULL, "----------------------" },
 	{ NULL }
 };
 
@@ -518,7 +504,6 @@
 extern struct cmd_set test_commands[];
 extern struct cmd_set wkssvc_commands[];
 extern struct cmd_set ntsvcs_commands[];
-extern struct cmd_set drsuapi_commands[];
 
 static struct cmd_set *rpcclient_command_list[] = {
 	rpcclient_commands,
@@ -534,7 +519,6 @@
  	test_commands,
 	wkssvc_commands,
 	ntsvcs_commands,
-	drsuapi_commands,
 	NULL
 };
 
@@ -577,58 +561,52 @@
 
 	/* Open pipe */
 
-	if ((cmd_entry->interface != NULL) && (cmd_entry->rpc_pipe == NULL)) {
+	if (cmd_entry->pipe_idx != -1 && cmd_entry->rpc_pipe == NULL) {
 		switch (pipe_default_auth_type) {
 			case PIPE_AUTH_TYPE_NONE:
-				ntresult = cli_rpc_pipe_open_noauth(
-					cli, cmd_entry->interface,
-					&cmd_entry->rpc_pipe);
+				cmd_entry->rpc_pipe = cli_rpc_pipe_open_noauth(cli,
+								cmd_entry->pipe_idx,
+								&ntresult);
 				break;
 			case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
-				ntresult = cli_rpc_pipe_open_spnego_ntlmssp(
-					cli, cmd_entry->interface,
-					pipe_default_auth_level,
-					lp_workgroup(),
-					get_cmdline_auth_info_username(),
-					get_cmdline_auth_info_password(),
-					&cmd_entry->rpc_pipe);
+				cmd_entry->rpc_pipe = cli_rpc_pipe_open_spnego_ntlmssp(cli,
+								cmd_entry->pipe_idx,
+								pipe_default_auth_level,
+								lp_workgroup(),
+								get_cmdline_auth_info_username(),
+								get_cmdline_auth_info_password(),
+								&ntresult);
 				break;
 			case PIPE_AUTH_TYPE_NTLMSSP:
-				ntresult = cli_rpc_pipe_open_ntlmssp(
-					cli, cmd_entry->interface,
-					pipe_default_auth_level,
-					lp_workgroup(),
-					get_cmdline_auth_info_username(),
-					get_cmdline_auth_info_password(),
-					&cmd_entry->rpc_pipe);
+				cmd_entry->rpc_pipe = cli_rpc_pipe_open_ntlmssp(cli,
+								cmd_entry->pipe_idx,
+								pipe_default_auth_level,
+								lp_workgroup(),
+								get_cmdline_auth_info_username(),
+								get_cmdline_auth_info_password(),
+								&ntresult);
 				break;
 			case PIPE_AUTH_TYPE_SCHANNEL:
-				ntresult = cli_rpc_pipe_open_schannel(
-					cli, cmd_entry->interface,
-					pipe_default_auth_level,
-					lp_workgroup(),
-					&cmd_entry->rpc_pipe);
+				cmd_entry->rpc_pipe = cli_rpc_pipe_open_schannel(cli,
+								cmd_entry->pipe_idx,
+								pipe_default_auth_level,
+								lp_workgroup(),
+								&ntresult);
 				break;
 			default:
-				DEBUG(0, ("Could not initialise %s. Invalid "
-					  "auth type %u\n",
-					  cli_get_pipe_name_from_iface(
-						  debug_ctx(), cli,
-						  cmd_entry->interface),
-					  pipe_default_auth_type ));
+				DEBUG(0, ("Could not initialise %s. Invalid auth type %u\n",
+					cli_get_pipe_name(cmd_entry->pipe_idx),
+					pipe_default_auth_type ));
 				return NT_STATUS_UNSUCCESSFUL;
 		}
-		if (!NT_STATUS_IS_OK(ntresult)) {
+		if (!cmd_entry->rpc_pipe) {
 			DEBUG(0, ("Could not initialise %s. Error was %s\n",
-				  cli_get_pipe_name_from_iface(
-					  debug_ctx(), cli,
-					  cmd_entry->interface),
-				  nt_errstr(ntresult) ));
+				cli_get_pipe_name(cmd_entry->pipe_idx),
+				nt_errstr(ntresult) ));
 			return ntresult;
 		}
 
-		if (ndr_syntax_id_equal(cmd_entry->interface,
-					&ndr_table_netlogon.syntax_id)) {
+		if (cmd_entry->pipe_idx == PI_NETLOGON) {
 			uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
 			uint32 sec_channel_type;
 			uchar trust_password[16];
@@ -650,9 +628,7 @@
 
 			if (!NT_STATUS_IS_OK(ntresult)) {
 				DEBUG(0, ("Could not initialise credentials for %s.\n",
-					  cli_get_pipe_name_from_iface(
-						  debug_ctx(), cli,
-						  cmd_entry->interface)));
+					cli_get_pipe_name(cmd_entry->pipe_idx)));
 				return ntresult;
 			}
 		}

Modified: branches/samba/upstream/source/rpcclient/rpcclient.h
===================================================================
--- branches/samba/upstream/source/rpcclient/rpcclient.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/rpcclient/rpcclient.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -33,7 +33,7 @@
 	NTSTATUS (*ntfn)(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, 
 			const char **argv);
 	WERROR (*wfn)(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv);
-	const struct ndr_syntax_id *interface;
+	int pipe_idx;
 	struct rpc_pipe_client *rpc_pipe;
 	const char *description;
 	const char *usage;

Modified: branches/samba/upstream/source/script/installman.sh
===================================================================
--- branches/samba/upstream/source/script/installman.sh	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/script/installman.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -14,7 +14,7 @@
 fi
 
 if test ! -d $SRCDIR../docs/manpages; then
-	echo "No manpages present.  Development version maybe?"
+	echo "No manpages present.  SVN development version maybe?"
 	exit 0
 fi
 

Modified: branches/samba/upstream/source/script/mkbuildoptions.awk
===================================================================
--- branches/samba/upstream/source/script/mkbuildoptions.awk	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/script/mkbuildoptions.awk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -84,7 +84,6 @@
 	print "       output(screen,\"   LMHOSTSFILE: %s\\n\",get_dyn_LMHOSTSFILE());";
 
 	print "       output(screen,\"   LIBDIR: %s\\n\",get_dyn_LIBDIR());";
-	print "       output(screen,\"   MODULESDIR: %s\\n\",get_dyn_MODULESDIR());";
 	print "       output(screen,\"   SHLIBEXT: %s\\n\",get_dyn_SHLIBEXT());";
 
 	print "       output(screen,\"   LOCKDIR: %s\\n\",get_dyn_LOCKDIR());";

Copied: branches/samba/upstream/source/script/mkproto.awk (from rev 2163, branches/samba/upstream/source/script/mkproto.awk)
===================================================================
--- branches/samba/upstream/source/script/mkproto.awk	                        (rev 0)
+++ branches/samba/upstream/source/script/mkproto.awk	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,174 @@
+BEGIN {
+  inheader=0;
+#  use_ldap_define = 0;
+  current_file="";
+  if (headername=="") {
+    headername="_PROTO_H_";
+  }
+
+  print "#ifndef",headername
+  print "#define",headername
+  print ""
+  print "/* This file is automatically generated with \"make proto\". DO NOT EDIT */"
+  print ""
+}
+
+END {
+  print ""
+  print "#endif /* ",headername," */"
+}
+
+{
+  if (FILENAME!=current_file) {
+#    if (use_ldap_define)
+#    {
+#      print "#endif /* USE_LDAP */"
+#      use_ldap_define = 0;
+#    }
+    print ""
+    print "/* The following definitions come from",FILENAME," */"
+    print ""
+    current_file=FILENAME
+  }
+  if (inheader) {
+    if (match($0,"[)][ \t]*$")) {
+      inheader = 0;
+      printf "%s;\n",$0;
+    } else {
+      printf "%s\n",$0;
+    }
+    next;
+  }
+}
+
+# we handle the loadparm.c fns separately
+
+/^FN_LOCAL_BOOL/ {
+  split($0,a,"[,()]")
+  printf "bool %s(int );\n", a[2]
+}
+
+/^FN_LOCAL_PARM_BOOL/ {
+  split($0,a,"[,()]")
+  printf "bool %s(const struct share_params *p );\n", a[2]
+}
+
+/^FN_LOCAL_PARM_INTEGER/ {
+  split($0,a,"[,()]")
+  printf "int %s(const struct share_params *p );\n", a[2]
+}
+
+/^FN_LOCAL_LIST/ {
+  split($0,a,"[,()]")
+  printf "const char **%s(int );\n", a[2]
+}
+
+/^FN_LOCAL_STRING/ {
+  split($0,a,"[,()]")
+  printf "char *%s(int );\n", a[2]
+}
+
+/^FN_LOCAL_PARM_STRING/ {
+  split($0,a,"[,()]")
+  printf "char *%s(const struct share_params *p );\n", a[2]
+}
+
+/^FN_LOCAL_CONST_STRING/ {
+  split($0,a,"[,()]")
+  printf "const char *%s(int );\n", a[2]
+}
+
+/^FN_LOCAL_INT/ {
+  split($0,a,"[,()]")
+  printf "int %s(int );\n", a[2]
+}
+
+/^FN_LOCAL_CHAR/ {
+  split($0,a,"[,()]")
+  printf "char %s(const struct share_params *p );\n", a[2]
+}
+
+/^FN_GLOBAL_BOOL/ {
+  split($0,a,"[,()]")
+  printf "bool %s(void);\n", a[2]
+}
+
+/^FN_GLOBAL_LIST/ {
+  split($0,a,"[,()]")
+  printf "const char **%s(void);\n", a[2]
+}
+
+/^FN_GLOBAL_STRING/ {
+  split($0,a,"[,()]")
+  printf "char *%s(void);\n", a[2]
+}
+
+/^FN_GLOBAL_CONST_STRING/ {
+  split($0,a,"[,()]")
+  printf "const char *%s(void);\n", a[2]
+}
+
+/^FN_GLOBAL_INT/ {
+  split($0,a,"[,()]")
+  printf "int %s(void);\n", a[2]
+}
+
+/^static|^extern/ || !/^[a-zA-Z\_]/ || /[;]/ {
+  next;
+}
+
+#
+# We have to split up the start
+# matching as we now have so many start
+# types that it can cause some versions
+# of nawk/awk to choke and fail on
+# the full match. JRA.
+#
+
+{
+  gotstart = 0;
+  if( $0 ~ /^const|^connection_struct|^pipes_struct|^smb_np_struct|^file_fd_struct|^files_struct|^connection_struct|^uid_t|^gid_t|^unsigned|^mode_t|^DIR|^user|^int|^pid_t|^ino_t|^off_t|^double/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^vuser_key|^UNISTR2|^LOCAL_GRP|^DOMAIN_GRP|^SMB_STRUCT_DIRENT|^SEC_ACL|^SEC_DESC|^SEC_DESC_BUF|^DOM_SID|^RPC_HND_NODE|^BYTE/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^ADS_STRUCT|^ADS_STATUS|^DATA_BLOB|^ASN1_DATA|^TDB_CONTEXT|^TDB_DATA|^smb_ucs2_t|^TALLOC_CTX|^hash_element|^NT_DEVICEMODE|^enum.*\(|^NT_USER_TOKEN|^SAM_ACCOUNT|^NTTIME/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^smb_iconv_t|^long|^char|^uint|^NTSTATUS|^WERROR|^CLI_POLICY_HND|^struct|^bool|^void|^time|^smb_shm_offset_t|^shm_offset_t|^FILE|^XFILE|^SMB_OFF_T|^size_t|^ssize_t|^SMB_BIG_UINT|^SMB_BIG_INT/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^SAM_ACCT_INFO_NODE|^SMB_ACL_T|^ADS_MODLIST|^PyObject|^SORTED_TREE|^REGISTRY_HOOK|^REGISTRY_OPS|^REGISTRY_VALUE|^REGVAL_CTR|^DEVICEMODE|^PAC_DATA|^NET_USER_INFO_3|^smb_event_id_t/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^WINBINDD_PW|^WINBINDD_GR|^NT_PRINTER_INFO_LEVEL_2|^LOGIN_CACHE|^krb5_error_code|^LDAP|^u32|^LUID_ATTR|^NSS_STATUS/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^NODE_STATUS_STRUCT|^SMB_STRUCT_DIR|^ELOG_TDB|^codepoint_t|^_PUBLIC_|^wbcErr/ ) {
+    gotstart = 1;
+  }
+
+  if(!gotstart) {
+    next;
+  }
+}
+
+
+/[(].*[)][ \t]*$/ {
+    printf "%s;\n",$0;
+    next;
+}
+
+/[(]/ {
+  inheader=1;
+  printf "%s\n",$0;
+  next;
+}
+

Copied: branches/samba/upstream/source/script/mkproto.sh (from rev 2163, branches/samba/upstream/source/script/mkproto.sh)
===================================================================
--- branches/samba/upstream/source/script/mkproto.sh	                        (rev 0)
+++ branches/samba/upstream/source/script/mkproto.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+LANG=C; export LANG
+LC_ALL=C; export LC_ALL
+LC_COLLATE=C; export LC_COLLATE
+
+if [ $# -lt 3 ]
+then
+  echo "Usage: $0 awk [-h headerdefine] outputheader proto_obj"
+  exit 1
+fi
+
+awk="$1"
+shift
+
+if [ x"$1" = x-h ]
+then
+  headeropt="-v headername=$2"
+  shift; shift;
+else
+  headeropt=""
+fi
+
+header="$1"
+shift
+headertmp="$header.$$.tmp~"
+
+proto_src="`echo $@ | tr ' ' '\n' | sed -e 's/\.o/\.c/g' | sort | uniq | egrep -v 'tdb/|wrapped|modules/getdate' | egrep -v '\.a$'`"
+
+echo creating $header
+
+mkdir -p `dirname $header`
+
+${awk} $headeropt \
+  -f script/mkproto.awk $proto_src > $headertmp
+
+if cmp -s $header $headertmp 2>/dev/null
+then
+  echo "$header unchanged"
+  rm $headertmp
+else
+  mv $headertmp $header
+fi

Modified: branches/samba/upstream/source/script/mkversion.sh
===================================================================
--- branches/samba/upstream/source/script/mkversion.sh	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/script/mkversion.sh	2008-11-01 11:09:46 UTC (rev 2200)
@@ -30,8 +30,6 @@
 SAMBA_VERSION_VENDOR_SUFFIX=`sed -n 's/^SAMBA_VERSION_VENDOR_SUFFIX=//p' $SOURCE_DIR$VERSION_FILE`
 SAMBA_VERSION_VENDOR_PATCH=`sed -n 's/^SAMBA_VERSION_VENDOR_PATCH=//p' $SOURCE_DIR$VERSION_FILE`
 
-SAMBA_VERSION_VENDOR_FUNCTION=`sed -n 's/^SAMBA_VERSION_VENDOR_FUNCTION=//p' $SOURCE_DIR$VERSION_FILE`
-
 echo "/* Autogenerated by script/mkversion.sh */" > $OUTPUT_FILE
 
 echo "#define SAMBA_VERSION_MAJOR ${SAMBA_VERSION_MAJOR}" >> $OUTPUT_FILE
@@ -103,10 +101,6 @@
 ##
 ## Add the vendor string if present
 ##
-if test -n "${SAMBA_VERSION_VENDOR_FUNCTION}"; then
-  echo "#define SAMBA_VERSION_VENDOR_FUNCTION ${SAMBA_VERSION_VENDOR_FUNCTION}" >> $OUTPUT_FILE
-fi
-
 if test -n "${SAMBA_VERSION_VENDOR_SUFFIX}";then
     echo "#define SAMBA_VERSION_VENDOR_SUFFIX ${SAMBA_VERSION_VENDOR_SUFFIX}" >> $OUTPUT_FILE
     SAMBA_VERSION_STRING="${SAMBA_VERSION_STRING}-${SAMBA_VERSION_VENDOR_SUFFIX}"

Modified: branches/samba/upstream/source/services/services_db.c
===================================================================
--- branches/samba/upstream/source/services/services_db.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/services/services_db.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -199,7 +199,7 @@
 
 	/* attempt the file open */
 
-	filepath = talloc_asprintf(info, "%s/%s/%s", get_dyn_MODULESDIR(),
+	filepath = talloc_asprintf(info, "%s/%s/%s", get_dyn_LIBDIR(),
 				SVCCTL_SCRIPT_DIR, servicename);
 	if (!filepath) {
 		TALLOC_FREE(info);
@@ -277,7 +277,7 @@
 		if ( strequal( name, builtin_svcs[i].servicename ) ) {
 			char *pstr = NULL;
 			if (asprintf(&pstr, "%s/%s/%s",
-					get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR,
+					get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR,
 					builtin_svcs[i].daemon) > 0) {
 				init_unistr2( &ipath, pstr, UNI_STR_TERMINATE );
 				SAFE_FREE(pstr);
@@ -297,7 +297,7 @@
 		char *dispname = NULL;
 		struct rcinit_file_information *init_info = NULL;
 
-		if (asprintf(&pstr, "%s/%s/%s",get_dyn_MODULESDIR(),
+		if (asprintf(&pstr, "%s/%s/%s",get_dyn_LIBDIR(),
 					SVCCTL_SCRIPT_DIR, name) > 0) {
 			init_unistr2( &ipath, pstr, UNI_STR_TERMINATE );
 			SAFE_FREE(pstr);

Modified: branches/samba/upstream/source/services/svc_rcinit.c
===================================================================
--- branches/samba/upstream/source/services/svc_rcinit.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/services/svc_rcinit.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,7 +28,7 @@
 	int ret, fd;
 
 	if (asprintf(&command, "%s/%s/%s stop",
-				get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+				get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
 		return WERR_NOMEM;
 	}
 
@@ -60,7 +60,7 @@
 	int ret, fd;
 
 	if (asprintf(&command, "%s/%s/%s start",
-				get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+				get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
 		return WERR_NOMEM;
 	}
 
@@ -87,7 +87,7 @@
 	int ret, fd;
 
 	if (asprintf(&command, "%s/%s/%s status",
-				get_dyn_MODULESDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
+				get_dyn_LIBDIR(), SVCCTL_SCRIPT_DIR, service) < 0) {
 		return WERR_NOMEM;
 	}
 

Modified: branches/samba/upstream/source/smbd/change_trust_pw.c
===================================================================
--- branches/samba/upstream/source/smbd/change_trust_pw.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/change_trust_pw.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -73,9 +73,8 @@
 
 	/* Shouldn't we open this with schannel ? JRA. */
 
-	nt_status = cli_rpc_pipe_open_noauth(
-		cli, &ndr_table_netlogon.syntax_id, &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	netlogon_pipe = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &nt_status);
+	if (!netlogon_pipe) {
 		DEBUG(0,("modify_trust_password: unable to open the domain client session to machine %s. Error was : %s.\n", 
 			dc_name, nt_errstr(nt_status)));
 		cli_shutdown(cli);
@@ -83,8 +82,7 @@
 		goto failed;
 	}
 
-	nt_status = trust_pw_find_change_and_store_it(
-		netlogon_pipe, netlogon_pipe, domain);
+	nt_status = trust_pw_find_change_and_store_it(netlogon_pipe, netlogon_pipe->mem_ctx, domain);
   
 	cli_shutdown(cli);
 	cli = NULL;

Modified: branches/samba/upstream/source/smbd/close.c
===================================================================
--- branches/samba/upstream/source/smbd/close.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/close.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -581,7 +581,7 @@
 	}
 
 	DEBUG(2,("%s closed file %s (numopen=%d) %s\n",
-		conn->server_info->unix_name,fsp->fsp_name,
+		conn->user,fsp->fsp_name,
 		conn->num_files_open,
 		nt_errstr(status) ));
 
@@ -703,6 +703,20 @@
 }
 
 /****************************************************************************
+ Close a 'stat file' opened internally.
+****************************************************************************/
+  
+static NTSTATUS close_stat(files_struct *fsp)
+{
+	/*
+	 * Do the code common to files and directories.
+	 */
+	close_filestruct(fsp);
+	file_free(fsp);
+	return NT_STATUS_OK;
+}
+
+/****************************************************************************
  Close a files_struct.
 ****************************************************************************/
   
@@ -713,6 +727,8 @@
 
 	if(fsp->is_directory) {
 		status = close_directory(fsp, close_type);
+	} else if (fsp->is_stat) {
+		status = close_stat(fsp);
 	} else if (fsp->fake_file_handle != NULL) {
 		status = close_fake_file(fsp);
 	} else {

Modified: branches/samba/upstream/source/smbd/conn.c
===================================================================
--- branches/samba/upstream/source/smbd/conn.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/conn.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -91,6 +91,7 @@
 ****************************************************************************/
 connection_struct *conn_new(void)
 {
+	TALLOC_CTX *mem_ctx;
 	connection_struct *conn;
 	int i;
         int find_offset = 1;
@@ -138,18 +139,25 @@
 		return NULL;
 	}
 
-	if (!(conn=TALLOC_ZERO_P(NULL, connection_struct)) ||
-	    !(conn->params = TALLOC_P(conn, struct share_params))) {
+	if ((mem_ctx=talloc_init("connection_struct"))==NULL) {
+		DEBUG(0,("talloc_init(connection_struct) failed!\n"));
+		return NULL;
+	}
+
+	if (!(conn=TALLOC_ZERO_P(mem_ctx, connection_struct)) ||
+	    !(conn->params = TALLOC_P(mem_ctx, struct share_params))) {
 		DEBUG(0,("TALLOC_ZERO() failed!\n"));
-		TALLOC_FREE(conn);
+		TALLOC_FREE(mem_ctx);
 		return NULL;
 	}
+	conn->mem_ctx = mem_ctx;
 	conn->cnum = i;
 
 	bitmap_set(bmap, i);
 
 	num_open++;
 
+	string_set(&conn->user,"");
 	string_set(&conn->dirpath,"");
 	string_set(&conn->connectpath,"");
 	string_set(&conn->origpath,"");
@@ -161,19 +169,16 @@
 
 /****************************************************************************
  Close all conn structures.
-return true if any were closed
 ****************************************************************************/
-bool conn_close_all(void)
+
+void conn_close_all(void)
 {
 	connection_struct *conn, *next;
-	bool ret = false;
 	for (conn=Connections;conn;conn=next) {
 		next=conn->next;
 		set_current_service(conn, 0, True);
 		close_cnum(conn, conn->vuid);
-		ret = true;
 	}
-	return ret;
 }
 
 /****************************************************************************
@@ -228,15 +233,24 @@
  Clear a vuid out of the validity cache, and as the 'owner' of a connection.
 ****************************************************************************/
 
-void conn_clear_vuid_caches(uint16_t vuid)
+void conn_clear_vuid_cache(uint16 vuid)
 {
 	connection_struct *conn;
+	unsigned int i;
 
 	for (conn=Connections;conn;conn=conn->next) {
 		if (conn->vuid == vuid) {
 			conn->vuid = UID_FIELD_INVALID;
 		}
-		conn_clear_vuid_cache(conn, vuid);
+
+		for (i=0;i<conn->vuid_cache.entries && i< VUID_CACHE_SIZE;i++) {
+			if (conn->vuid_cache.array[i].vuid == vuid) {
+				struct vuid_cache_entry *ent = &conn->vuid_cache.array[i];
+				ent->vuid = UID_FIELD_INVALID;
+				ent->read_only = False;
+				ent->admin_user = False;
+			}
+		}
 	}
 }
 
@@ -247,13 +261,14 @@
 void conn_free_internal(connection_struct *conn)
 {
  	vfs_handle_struct *handle = NULL, *thandle = NULL;
+ 	TALLOC_CTX *mem_ctx = NULL;
 	struct trans_state *state = NULL;
 
 	/* Free vfs_connection_struct */
 	handle = conn->vfs_handles;
 	while(handle) {
+		DLIST_REMOVE(conn->vfs_handles, handle);
 		thandle = handle->next;
-		DLIST_REMOVE(conn->vfs_handles, handle);
 		if (handle->free_data)
 			handle->free_data(&handle->data);
 		handle = thandle;
@@ -271,12 +286,14 @@
 	free_namearray(conn->veto_oplock_list);
 	free_namearray(conn->aio_write_behind_list);
 	
+	string_free(&conn->user);
 	string_free(&conn->dirpath);
 	string_free(&conn->connectpath);
 	string_free(&conn->origpath);
 
+	mem_ctx = conn->mem_ctx;
 	ZERO_STRUCTP(conn);
-	talloc_destroy(conn);
+	talloc_destroy(mem_ctx);
 }
 
 /****************************************************************************

Modified: branches/samba/upstream/source/smbd/connection.c
===================================================================
--- branches/samba/upstream/source/smbd/connection.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/connection.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -152,8 +152,8 @@
 	crec.pid = procid_self();
 	crec.cnum = conn?conn->cnum:-1;
 	if (conn) {
-		crec.uid = conn->server_info->utok.uid;
-		crec.gid = conn->server_info->utok.gid;
+		crec.uid = conn->uid;
+		crec.gid = conn->gid;
 		strlcpy(crec.servicename, lp_servicename(SNUM(conn)),
 			sizeof(crec.servicename));
 	}

Modified: branches/samba/upstream/source/smbd/dfree.c
===================================================================
--- branches/samba/upstream/source/smbd/dfree.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/dfree.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -206,7 +206,7 @@
 
 	/* No cached info or time to refresh. */
 	if (!dfc) {
-		dfc = TALLOC_P(conn, struct dfree_cached_info);
+		dfc = TALLOC_P(conn->mem_ctx, struct dfree_cached_info);
 		if (!dfc) {
 			return dfree_ret;
 		}

Modified: branches/samba/upstream/source/smbd/dir.c
===================================================================
--- branches/samba/upstream/source/smbd/dir.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/dir.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,6 +24,8 @@
    This module implements directory related functions for Samba.
 */
 
+extern struct current_user current_user;
+
 /* "Special" directory offsets. */
 #define END_OF_DIRECTORY_OFFSET ((long)-1)
 #define START_OF_DIRECTORY_OFFSET ((long)0)
@@ -921,8 +923,13 @@
  use it for anything security sensitive.
 ********************************************************************/
 
-static bool user_can_read_file(connection_struct *conn, char *name)
+static bool user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst)
 {
+	SEC_DESC *psd = NULL;
+	files_struct *fsp;
+	NTSTATUS status;
+	uint32 access_granted;
+
 	/*
 	 * If user is a member of the Admin group
 	 * we never hide files from them.
@@ -932,7 +939,38 @@
 		return True;
 	}
 
-	return can_access_file_acl(conn, name, FILE_READ_DATA);
+	SMB_ASSERT(VALID_STAT(*pst));
+
+	/* Pseudo-open the file (note - no fd's created). */
+
+	if(S_ISDIR(pst->st_mode)) {
+		 status = open_directory(conn, NULL, name, pst,
+			READ_CONTROL_ACCESS,
+			FILE_SHARE_READ|FILE_SHARE_WRITE,
+			FILE_OPEN,
+			0, /* no create options. */
+			FILE_ATTRIBUTE_DIRECTORY,
+			NULL, &fsp);
+	} else {
+		status = open_file_stat(conn, NULL, name, pst, &fsp);
+	}
+
+	if (!NT_STATUS_IS_OK(status)) {
+		return False;
+	}
+
+	/* Get NT ACL -allocated in main loop talloc context. No free needed here. */
+	status = SMB_VFS_FGET_NT_ACL(fsp,
+			(OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION), &psd);
+	close_file(fsp, NORMAL_CLOSE);
+
+	/* No access if SD get failed. */
+	if (!NT_STATUS_IS_OK(status)) {
+		return False;
+	}
+
+	return se_access_check(psd, current_user.nt_user_token, FILE_READ_DATA,
+                                 &access_granted, &status);
 }
 
 /*******************************************************************
@@ -944,6 +982,12 @@
 
 static bool user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst)
 {
+	SEC_DESC *psd = NULL;
+	files_struct *fsp;
+	int info;
+	NTSTATUS status;
+	uint32 access_granted;
+
 	/*
 	 * If user is a member of the Admin group
 	 * we never hide files from them.
@@ -959,9 +1003,33 @@
 
 	if(S_ISDIR(pst->st_mode)) {
 		return True;
+	} else {
+		status = open_file_ntcreate(conn, NULL, name, pst,
+			FILE_WRITE_ATTRIBUTES,
+			FILE_SHARE_READ|FILE_SHARE_WRITE,
+			FILE_OPEN,
+			0,
+			FILE_ATTRIBUTE_NORMAL,
+			INTERNAL_OPEN_ONLY,
+			&info, &fsp);
 	}
 
-	return can_write_to_file(conn, name, pst);
+	if (!NT_STATUS_IS_OK(status)) {
+		return False;
+	}
+
+	/* Get NT ACL -allocated in main loop talloc context. No free needed here. */
+	status = SMB_VFS_FGET_NT_ACL(fsp,
+			(OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION), &psd);
+	close_file(fsp, NORMAL_CLOSE);
+
+	/* No access if SD get failed. */
+	if (!NT_STATUS_IS_OK(status)) {
+		return False;
+	}
+
+	return se_access_check(psd, current_user.nt_user_token, FILE_WRITE_DATA,
+                                 &access_granted, &status);
 }
 
 /*******************************************************************
@@ -1035,7 +1103,7 @@
 		}
 
 		/* Honour _hide unreadable_ option */
-		if (hide_unreadable && !user_can_read_file(conn, entry)) {
+		if (hide_unreadable && !user_can_read_file(conn, entry, pst)) {
 			DEBUG(10,("is_visible_file: file %s is unreadable.\n", entry ));
 			SAFE_FREE(entry);
 			return False;

Modified: branches/samba/upstream/source/smbd/fake_file.c
===================================================================
--- branches/samba/upstream/source/smbd/fake_file.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/fake_file.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -19,52 +19,54 @@
 
 #include "includes.h"
 
-struct fake_file_type {
-	const char *name;
-	enum FAKE_FILE_TYPE type;
-	void *(*init_pd)(TALLOC_CTX *mem_ctx);
-};
+extern struct current_user current_user;
 
-static struct fake_file_type fake_files[] = {
+static FAKE_FILE fake_files[] = {
 #ifdef WITH_QUOTAS
-	{FAKE_FILE_NAME_QUOTA_UNIX, FAKE_FILE_TYPE_QUOTA, init_quota_handle},
+	{FAKE_FILE_NAME_QUOTA_UNIX,	FAKE_FILE_TYPE_QUOTA,	init_quota_handle,	destroy_quota_handle},
 #endif /* WITH_QUOTAS */
-	{NULL, FAKE_FILE_TYPE_NONE, NULL}
+	{NULL,				FAKE_FILE_TYPE_NONE,	NULL,			NULL }
 };
 
 /****************************************************************************
  Create a fake file handle
 ****************************************************************************/
 
-static struct fake_file_handle *init_fake_file_handle(enum FAKE_FILE_TYPE type)
+static struct _FAKE_FILE_HANDLE *init_fake_file_handle(enum FAKE_FILE_TYPE type)
 {
-	struct fake_file_handle *fh = NULL;
+	TALLOC_CTX *mem_ctx = NULL;
+	FAKE_FILE_HANDLE *fh = NULL;
 	int i;
 
-	for (i=0; fake_files[i].name!=NULL; i++) {
+	for (i=0;fake_files[i].name!=NULL;i++) {
 		if (fake_files[i].type==type) {
-			break;
-		}
-	}
+			DEBUG(5,("init_fake_file_handle: for [%s]\n",fake_files[i].name));
 
-	if (fake_files[i].name == NULL) {
-		return NULL;
-	}
+			if ((mem_ctx=talloc_init("fake_file_handle"))==NULL) {
+				DEBUG(0,("talloc_init(fake_file_handle) failed.\n"));
+				return NULL;	
+			}
 
-	DEBUG(5,("init_fake_file_handle: for [%s]\n",fake_files[i].name));
+			if ((fh =TALLOC_ZERO_P(mem_ctx, FAKE_FILE_HANDLE))==NULL) {
+				DEBUG(0,("TALLOC_ZERO() failed.\n"));
+				talloc_destroy(mem_ctx);
+				return NULL;
+			}
 
-	fh = talloc(NULL, struct fake_file_handle);
-	if (fh == NULL) {
-		DEBUG(0,("TALLOC_ZERO() failed.\n"));
-		return NULL;
-	}
+			fh->type = type;
+			fh->mem_ctx = mem_ctx;
 
-	fh->type = type;
+			if (fake_files[i].init_pd) {
+				fh->pd = fake_files[i].init_pd(fh->mem_ctx);
+			}
 
-	if (fake_files[i].init_pd) {
-		fh->private_data = fake_files[i].init_pd(fh);
+			fh->free_pd = fake_files[i].free_pd;
+
+			return fh;
+		}
 	}
-	return fh;
+
+	return NULL;	
 }
 
 /****************************************************************************
@@ -99,7 +101,6 @@
 ****************************************************************************/
 
 NTSTATUS open_fake_file(connection_struct *conn,
-				uint16_t current_vuid,
 				enum FAKE_FILE_TYPE fake_file_type,
 				const char *fname,
 				uint32 access_mask,
@@ -109,11 +110,10 @@
 	NTSTATUS status;
 
 	/* access check */
-	if (conn->server_info->utok.uid != 0) {
+	if (current_user.ut.uid != 0) {
 		DEBUG(3, ("open_fake_file_shared: access_denied to "
 			  "service[%s] file[%s] user[%s]\n",
-			  lp_servicename(SNUM(conn)), fname,
-			  conn->server_info->unix_name));
+			  lp_servicename(SNUM(conn)),fname,conn->user));
 		return NT_STATUS_ACCESS_DENIED;
 
 	}
@@ -128,7 +128,7 @@
 
 	fsp->conn = conn;
 	fsp->fh->fd = -1;
-	fsp->vuid = current_vuid;
+	fsp->vuid = current_user.vuid;
 	fsp->fh->pos = -1;
 	fsp->can_lock = False; /* Should this be true ? - No, JRA */
 	fsp->access_mask = access_mask;
@@ -146,12 +146,18 @@
 	return NT_STATUS_OK;
 }
 
-void destroy_fake_file_handle(struct fake_file_handle **fh)
+void destroy_fake_file_handle(FAKE_FILE_HANDLE **fh)
 {
-	if (!fh) {
+	if (!fh||!(*fh)) {
 		return;
 	}
-	TALLOC_FREE(*fh);
+
+	if ((*fh)->free_pd) {
+		(*fh)->free_pd(&(*fh)->pd);		
+	}
+
+	talloc_destroy((*fh)->mem_ctx);
+	(*fh) = NULL;
 }
 
 NTSTATUS close_fake_file(files_struct *fsp)

Modified: branches/samba/upstream/source/smbd/file_access.c
===================================================================
--- branches/samba/upstream/source/smbd/file_access.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/file_access.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,14 +20,13 @@
 
 #include "includes.h"
 
+extern struct current_user current_user;
+
 #undef  DBGC_CLASS
 #define DBGC_CLASS DBGC_ACLS
 
-/**
- * Security descriptor / NT Token level access check function.
- */
-bool can_access_file_acl(struct connection_struct *conn,
-				const char * fname,
+static bool can_access_file_acl(struct connection_struct *conn,
+				const char * fname, SMB_STRUCT_STAT *psbuf,
 				uint32_t access_mask)
 {
 	bool result;
@@ -45,7 +44,7 @@
 		return false;
 	}
 
-	result = se_access_check(secdesc, conn->server_info->ptok,
+	result = se_access_check(secdesc, current_user.nt_user_token,
 				 access_mask, &access_granted, &status);
 	TALLOC_FREE(secdesc);
 	return result;
@@ -82,11 +81,16 @@
 	if (!S_ISDIR(sbuf.st_mode)) {
 		return False;
 	}
-	if (conn->server_info->utok.uid == 0 || conn->admin_user) {
+	if (current_user.ut.uid == 0 || conn->admin_user) {
 		/* I'm sorry sir, I didn't know you were root... */
 		return True;
 	}
 
+	/* Check primary owner write access. */
+	if (current_user.ut.uid == sbuf.st_uid) {
+		return (sbuf.st_mode & S_IWUSR) ? True : False;
+	}
+
 #ifdef S_ISVTX
 	/* sticky bit means delete only by owner or root. */
 	if (sbuf.st_mode & S_ISVTX) {
@@ -104,7 +108,7 @@
 		 * for bug #3348. Don't assume owning sticky bit
 		 * directory means write access allowed.
 		 */
-		if (conn->server_info->utok.uid != sbuf_file.st_uid) {
+		if (current_user.ut.uid != sbuf_file.st_uid) {
 			return False;
 		}
 	}
@@ -112,21 +116,7 @@
 
 	/* now for ACL checks */
 
-	/*
-	 * There's two ways to get the permission to delete a file: First by
-	 * having the DELETE bit on the file itself and second if that does
-	 * not help, by the DELETE_CHILD bit on the containing directory.
-	 *
-	 * Here we check the other way round because with just posix
-	 * permissions looking at the file itself will never grant DELETE, so
-	 * by looking at the directory first we save one get_acl call.
-	 */
-
-	if (can_access_file_acl(conn, dname, FILE_DELETE_CHILD)) {
-		return true;
-	}
-
-	return can_access_file_acl(conn, fname, DELETE_ACCESS);
+	return can_access_file_acl(conn, dname, &sbuf, FILE_WRITE_DATA);
 }
 
 /****************************************************************************
@@ -135,7 +125,7 @@
  Note this doesn't take into account share write permissions.
 ****************************************************************************/
 
-bool can_access_file_data(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, uint32 access_mask)
+bool can_access_file(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, uint32 access_mask)
 {
 	if (!(access_mask & (FILE_READ_DATA|FILE_WRITE_DATA))) {
 		return False;
@@ -144,10 +134,10 @@
 
 	/* some fast paths first */
 
-	DEBUG(10,("can_access_file_data: requesting 0x%x on file %s\n",
+	DEBUG(10,("can_access_file: requesting 0x%x on file %s\n",
 		(unsigned int)access_mask, fname ));
 
-	if (conn->server_info->utok.uid == 0 || conn->admin_user) {
+	if (current_user.ut.uid == 0 || conn->admin_user) {
 		/* I'm sorry sir, I didn't know you were root... */
 		return True;
 	}
@@ -160,7 +150,7 @@
 	}
 
 	/* Check primary owner access. */
-	if (conn->server_info->utok.uid == psbuf->st_uid) {
+	if (current_user.ut.uid == psbuf->st_uid) {
 		switch (access_mask) {
 			case FILE_READ_DATA:
 				return (psbuf->st_mode & S_IRUSR) ? True : False;
@@ -180,7 +170,7 @@
 
 	/* now for ACL checks */
 
-	return can_access_file_acl(conn, fname, access_mask);
+	return can_access_file_acl(conn, fname, psbuf, access_mask);
 }
 
 /****************************************************************************
@@ -190,33 +180,6 @@
 
 bool can_write_to_file(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf)
 {
-	return can_access_file_data(conn, fname, psbuf, FILE_WRITE_DATA);
+	return can_access_file(conn, fname, psbuf, FILE_WRITE_DATA);
 }
 
-/****************************************************************************
- Check for an existing default Windows ACL on a directory.
-****************************************************************************/
-
-bool directory_has_default_acl(connection_struct *conn, const char *fname)
-{
-	/* returns talloced off tos. */
-	struct security_descriptor *secdesc = NULL;
-	unsigned int i;
-	NTSTATUS status = SMB_VFS_GET_NT_ACL(conn, fname,
-				DACL_SECURITY_INFORMATION, &secdesc);
-
-	if (!NT_STATUS_IS_OK(status) || secdesc == NULL) {
-		return false;
-	}
-
-	for (i = 0; i < secdesc->dacl->num_aces; i++) {
-		struct security_ace *psa = &secdesc->dacl->aces[i];
-		if (psa->flags & (SEC_ACE_FLAG_OBJECT_INHERIT|
-				SEC_ACE_FLAG_CONTAINER_INHERIT)) {
-			TALLOC_FREE(secdesc);
-			return true;
-		}
-	}
-	TALLOC_FREE(secdesc);
-	return false;
-}

Modified: branches/samba/upstream/source/smbd/filename.c
===================================================================
--- branches/samba/upstream/source/smbd/filename.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/filename.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -101,7 +101,8 @@
 SMB processing whilst resolving.
 
 If the saved_last_component != 0, then the unmodified last component
-of the pathname is returned there. If saved_last_component == 0 then nothing
+of the pathname is returned there. This is used in an exceptional
+case in reply_mv (so far). If saved_last_component == 0 then nothing
 is returned there.
 
 If last_component_wcard is true then a MS wildcard was detected and

Modified: branches/samba/upstream/source/smbd/files.c
===================================================================
--- branches/samba/upstream/source/smbd/files.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/files.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -122,13 +122,11 @@
 
 	chain_fsp = fsp;
 
-	/* A new fsp invalidates the positive and
-	  negative fsp_fi_cache as the new fsp is pushed
-	  at the start of the list and we search from
-	  a cache hit to the *end* of the list. */
+	/* A new fsp invalidates a negative fsp_fi_cache. */
+	if (fsp_fi_cache.fsp == NULL) {
+		ZERO_STRUCT(fsp_fi_cache);
+	}
 
-	ZERO_STRUCT(fsp_fi_cache);
-
 	*result = fsp;
 	return NT_STATUS_OK;
 }
@@ -328,7 +326,8 @@
 	fsp_fi_cache.id = id;
 
 	for (fsp=Files;fsp;fsp=fsp->next) {
-		if (file_id_equal(&fsp->file_id, &id)) {
+		if ( fsp->fh->fd != -1 &&
+		     file_id_equal(&fsp->file_id, &id)) {
 			/* Setup positive cache. */
 			fsp_fi_cache.fsp = fsp;
 			return fsp;
@@ -349,7 +348,8 @@
 	files_struct *fsp;
 
 	for (fsp = start_fsp->next;fsp;fsp=fsp->next) {
-		if (file_id_equal(&fsp->file_id, &start_fsp->file_id)) {
+		if ( fsp->fh->fd != -1 &&
+		     file_id_equal(&fsp->file_id, &start_fsp->file_id)) {
 			return fsp;
 		}
 	}
@@ -539,6 +539,7 @@
 	dup_fsp->print_file = fsp->print_file;
 	dup_fsp->modified = fsp->modified;
 	dup_fsp->is_directory = fsp->is_directory;
+	dup_fsp->is_stat = fsp->is_stat;
 	dup_fsp->aio_write_behind = fsp->aio_write_behind;
         string_set(&dup_fsp->fsp_name,fsp->fsp_name);
 

Modified: branches/samba/upstream/source/smbd/ipc.c
===================================================================
--- branches/samba/upstream/source/smbd/ipc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/ipc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -81,7 +81,8 @@
  Send a trans reply.
  ****************************************************************************/
 
-void send_trans_reply(connection_struct *conn, const uint8_t *inbuf,
+void send_trans_reply(connection_struct *conn,
+			struct smb_request *req,
 		      char *rparam, int rparam_len,
 		      char *rdata, int rdata_len,
 		      bool buffer_too_large)
@@ -90,7 +91,6 @@
 	int tot_data_sent = 0;
 	int tot_param_sent = 0;
 	int align;
-	char *outbuf;
 
 	int ldata  = rdata  ? rdata_len : 0;
 	int lparam = rparam ? rparam_len : 0;
@@ -103,48 +103,47 @@
 
 	align = ((this_lparam)%4);
 
-	if (!create_outbuf(talloc_tos(), (char *)inbuf, &outbuf,
-			   10, 1+align+this_ldata+this_lparam)) {
-		smb_panic("could not allocate outbuf");
-	}
+	reply_outbuf(req, 10, 1+align+this_ldata+this_lparam);
 
-	copy_trans_params_and_data(outbuf, align,
+	copy_trans_params_and_data((char *)req->outbuf, align,
 				rparam, tot_param_sent, this_lparam,
 				rdata, tot_data_sent, this_ldata);
 
-	SSVAL(outbuf,smb_vwv0,lparam);
-	SSVAL(outbuf,smb_vwv1,ldata);
-	SSVAL(outbuf,smb_vwv3,this_lparam);
-	SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf)+1,outbuf));
-	SSVAL(outbuf,smb_vwv5,0);
-	SSVAL(outbuf,smb_vwv6,this_ldata);
-	SSVAL(outbuf,smb_vwv7,smb_offset(smb_buf(outbuf)+1+this_lparam+align,
-					 outbuf));
-	SSVAL(outbuf,smb_vwv8,0);
-	SSVAL(outbuf,smb_vwv9,0);
+	SSVAL(req->outbuf,smb_vwv0,lparam);
+	SSVAL(req->outbuf,smb_vwv1,ldata);
+	SSVAL(req->outbuf,smb_vwv3,this_lparam);
+	SSVAL(req->outbuf,smb_vwv4,smb_offset(smb_buf(req->outbuf)+1,
+					      req->outbuf));
+	SSVAL(req->outbuf,smb_vwv5,0);
+	SSVAL(req->outbuf,smb_vwv6,this_ldata);
+	SSVAL(req->outbuf,smb_vwv7,smb_offset(smb_buf(req->outbuf)+1+
+					      this_lparam+align,
+					      req->outbuf));
+	SSVAL(req->outbuf,smb_vwv8,0);
+	SSVAL(req->outbuf,smb_vwv9,0);
 
 	if (buffer_too_large) {
-		error_packet_set((char *)outbuf, ERRDOS, ERRmoredata,
-				 STATUS_BUFFER_OVERFLOW, __LINE__, __FILE__);
+		error_packet_set((char *)req->outbuf,
+				 ERRDOS, ERRmoredata,
+				 STATUS_BUFFER_OVERFLOW,
+				 __LINE__, __FILE__);
 	}
 
-	show_msg(outbuf);
-	if (!srv_send_smb(smbd_server_fd(), (char *)outbuf,
-			  IS_CONN_ENCRYPTED(conn))) {
+	show_msg((char *)req->outbuf);
+	if (!srv_send_smb(smbd_server_fd(),
+			(char *)req->outbuf,
+			IS_CONN_ENCRYPTED(conn)))
 		exit_server_cleanly("send_trans_reply: srv_send_smb failed.");
-	}
 
-	TALLOC_FREE(outbuf);
+	TALLOC_FREE(req->outbuf);
 
 	tot_data_sent = this_ldata;
 	tot_param_sent = this_lparam;
 
 	while (tot_data_sent < ldata || tot_param_sent < lparam)
 	{
-		this_lparam = MIN(lparam-tot_param_sent,
-				  max_send - 500); /* hack */
-		this_ldata  = MIN(ldata -tot_data_sent,
-				  max_send - (500+this_lparam));
+		this_lparam = MIN(lparam-tot_param_sent, max_send - 500); /* hack */
+		this_ldata  = MIN(ldata -tot_data_sent, max_send - (500+this_lparam));
 
 		if(this_lparam < 0)
 			this_lparam = 0;
@@ -154,39 +153,39 @@
 
 		align = (this_lparam%4);
 
-		if (!create_outbuf(talloc_tos(), (char *)inbuf, &outbuf,
-				   10, 1+align+this_ldata+this_lparam)) {
-			smb_panic("could not allocate outbuf");
-		}
+		reply_outbuf(req, 10, 1+this_ldata+this_lparam+align);
 
-		copy_trans_params_and_data(outbuf, align,
+		copy_trans_params_and_data((char *)req->outbuf, align,
 					   rparam, tot_param_sent, this_lparam,
 					   rdata, tot_data_sent, this_ldata);
 		
-		SSVAL(outbuf,smb_vwv3,this_lparam);
-		SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf)+1,outbuf));
-		SSVAL(outbuf,smb_vwv5,tot_param_sent);
-		SSVAL(outbuf,smb_vwv6,this_ldata);
-		SSVAL(outbuf,smb_vwv7,
-		      smb_offset(smb_buf(outbuf)+1+this_lparam+align, outbuf));
-		SSVAL(outbuf,smb_vwv8,tot_data_sent);
-		SSVAL(outbuf,smb_vwv9,0);
+		SSVAL(req->outbuf,smb_vwv3,this_lparam);
+		SSVAL(req->outbuf,smb_vwv4,smb_offset(smb_buf(req->outbuf)+1,
+						      req->outbuf));
+		SSVAL(req->outbuf,smb_vwv5,tot_param_sent);
+		SSVAL(req->outbuf,smb_vwv6,this_ldata);
+		SSVAL(req->outbuf,smb_vwv7,smb_offset(smb_buf(req->outbuf)+1+
+						      this_lparam+align,
+						      req->outbuf));
+		SSVAL(req->outbuf,smb_vwv8,tot_data_sent);
+		SSVAL(req->outbuf,smb_vwv9,0);
 
 		if (buffer_too_large) {
-			error_packet_set(outbuf, ERRDOS, ERRmoredata,
+			error_packet_set((char *)req->outbuf,
+					 ERRDOS, ERRmoredata,
 					 STATUS_BUFFER_OVERFLOW,
 					 __LINE__, __FILE__);
 		}
 
-		show_msg(outbuf);
-		if (!srv_send_smb(smbd_server_fd(), outbuf,
-				  IS_CONN_ENCRYPTED(conn)))
-			exit_server_cleanly("send_trans_reply: srv_send_smb "
-					    "failed.");
+		show_msg((char *)req->outbuf);
+		if (!srv_send_smb(smbd_server_fd(),
+				(char *)req->outbuf,
+				IS_CONN_ENCRYPTED(conn)))
+			exit_server_cleanly("send_trans_reply: srv_send_smb failed.");
 
 		tot_data_sent  += this_ldata;
 		tot_param_sent += this_lparam;
-		TALLOC_FREE(outbuf);
+		TALLOC_FREE(req->outbuf);
 	}
 }
 
@@ -213,8 +212,7 @@
 		return;
 	}
 
-	send_trans_reply(conn, req->inbuf, NULL, 0, rdata, data_len,
-			 is_data_outstanding);
+	send_trans_reply(conn, req, NULL, 0, rdata, data_len, is_data_outstanding);
 	SAFE_FREE(rdata);
 	return;
 }
@@ -238,7 +236,7 @@
 
 	if (wait_rpc_pipe_hnd_state(p, priority)) {
 		/* now send the reply */
-		send_trans_reply(conn, req->inbuf, NULL, 0, NULL, 0, False);
+		send_trans_reply(conn, req, NULL, 0, NULL, 0, False);
 		return;
 	}
 	api_no_reply(conn,req);
@@ -264,7 +262,7 @@
 
 	if (set_rpc_pipe_hnd_state(p, id)) {
 		/* now send the reply */
-		send_trans_reply(conn, req->inbuf, NULL, 0, NULL, 0, False);
+		send_trans_reply(conn, req, NULL, 0, NULL, 0, False);
 		return;
 	}
 	api_no_reply(conn,req);
@@ -286,7 +284,7 @@
 	DEBUG(3,("Unsupported API fd command\n"));
 
 	/* now send the reply */
-	send_trans_reply(conn, req->inbuf, rparam, 4, NULL, 0, False);
+	send_trans_reply(conn, req, rparam, 4, NULL, 0, False);
 
 	return;
 }
@@ -328,8 +326,7 @@
 			/* Win9x does this call with a unicode pipe name, not a pnum. */
 			/* Just return success for now... */
 			DEBUG(3,("Got TRANSACT_WAITNAMEDPIPEHANDLESTATE on text pipe name\n"));
-			send_trans_reply(conn, req->inbuf, NULL, 0, NULL, 0,
-					 False);
+			send_trans_reply(conn, req, NULL, 0, NULL, 0, False);
 			return;
 		}
 
@@ -528,7 +525,7 @@
 		return;
 	}
 
-	if ((state = TALLOC_P(conn, struct trans_state)) == NULL) {
+	if ((state = TALLOC_P(conn->mem_ctx, struct trans_state)) == NULL) {
 		DEBUG(0, ("talloc failed\n"));
 		reply_nterror(req, NT_STATUS_NO_MEMORY);
 		END_PROFILE(SMBtrans);

Modified: branches/samba/upstream/source/smbd/lanman.c
===================================================================
--- branches/samba/upstream/source/smbd/lanman.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/lanman.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,6 +27,9 @@
 
 #include "includes.h"
 
+extern struct current_user current_user;
+extern userdom_struct current_user_info;
+
 #ifdef CHECK_TYPES
 #undef CHECK_TYPES
 #endif
@@ -98,11 +101,11 @@
 	}
 	buf = talloc_sub_advanced(ctx,
 				lp_servicename(SNUM(conn)),
-				conn->server_info->unix_name,
+				conn->user,
 				conn->connectpath,
-				conn->server_info->utok.gid,
-				conn->server_info->sanitized_username,
-				pdb_get_domain(conn->server_info->sam_account),
+				conn->gid,
+				get_current_username(),
+				current_user_info.domain,
 				buf);
 	if (!buf) {
 		*p_space_remaining = 0;
@@ -149,11 +152,11 @@
 	}
 	buf = talloc_sub_advanced(ctx,
 				lp_servicename(SNUM(conn)),
-				conn->server_info->unix_name,
+				conn->user,
 				conn->connectpath,
-				conn->server_info->utok.gid,
-				conn->server_info->sanitized_username,
-				pdb_get_domain(conn->server_info->sam_account),
+				conn->gid,
+				get_current_username(),
+				current_user_info.domain,
 				buf);
 	if (!buf) {
 		return 0;
@@ -179,11 +182,11 @@
 	}
 	return talloc_sub_advanced(ctx,
 				lp_servicename(SNUM(conn)),
-				conn->server_info->unix_name,
+				conn->user,
 				conn->connectpath,
-				conn->server_info->utok.gid,
-				conn->server_info->sanitized_username,
-				pdb_get_domain(conn->server_info->sam_account),
+				conn->gid,
+				get_current_username(),
+				current_user_info.domain,
 				buf);
 }
 
@@ -1893,7 +1896,6 @@
 	unsigned int offset;
 	int snum;
 	int res = ERRunsup;
-	size_t converted_size;
 
 	if (!str1 || !str2 || !p) {
 		return False;
@@ -1954,13 +1956,7 @@
 		return False;
 	}
 
-	if (!pull_ascii_talloc(talloc_tos(), &pathname,
-			       offset ? (data+offset) : "", &converted_size))
-	{
-		DEBUG(0,("api_RNetShareAdd: pull_ascii_talloc failed: %s",
-			 strerror(errno)));
-	}
-
+	pull_ascii_talloc(talloc_tos(), &pathname, offset? (data+offset) : "");
 	if (!pathname) {
 		return false;
 	}
@@ -2680,15 +2676,15 @@
 	
 	switch (function) {
 	case 81:		/* delete */ 
-		if (print_job_delete(conn->server_info, snum, jobid, &werr))
+		if (print_job_delete(&current_user, snum, jobid, &werr)) 
 			errcode = NERR_Success;
 		break;
 	case 82:		/* pause */
-		if (print_job_pause(conn->server_info, snum, jobid, &werr))
+		if (print_job_pause(&current_user, snum, jobid, &werr)) 
 			errcode = NERR_Success;
 		break;
 	case 83:		/* resume */
-		if (print_job_resume(conn->server_info, snum, jobid, &werr))
+		if (print_job_resume(&current_user, snum, jobid, &werr)) 
 			errcode = NERR_Success;
 		break;
 	}
@@ -2749,19 +2745,13 @@
 
 	switch (function) {
 	case 74: /* Pause queue */
-		if (print_queue_pause(conn->server_info, snum, &werr)) {
-			errcode = NERR_Success;
-		}
+		if (print_queue_pause(&current_user, snum, &werr)) errcode = NERR_Success;
 		break;
 	case 75: /* Resume queue */
-		if (print_queue_resume(conn->server_info, snum, &werr)) {
-			errcode = NERR_Success;
-		}
+		if (print_queue_resume(&current_user, snum, &werr)) errcode = NERR_Success;
 		break;
 	case 103: /* Purge */
-		if (print_queue_purge(conn->server_info, snum, &werr)) {
-			errcode = NERR_Success;
-		}
+		if (print_queue_purge(&current_user, snum, &werr)) errcode = NERR_Success;
 		break;
 	}
 
@@ -3008,15 +2998,14 @@
 			SIVAL(p,6,0);
 		} else {
 			SIVAL(p,6,PTR_DIFF(p2,*rdata));
-			comment = talloc_sub_advanced(
-				ctx,
-				lp_servicename(SNUM(conn)),
-				conn->server_info->unix_name,
-				conn->connectpath,
-				conn->server_info->utok.gid,
-				conn->server_info->sanitized_username,
-				pdb_get_domain(conn->server_info->sam_account),
-				comment);
+			comment = talloc_sub_advanced(ctx,
+						lp_servicename(SNUM(conn)),
+						conn->user,
+						conn->connectpath,
+						conn->gid,
+						get_current_username(),
+						current_user_info.domain,
+						comment);
 			if (comment) {
 				return false;
 			}
@@ -3115,7 +3104,7 @@
 	p += 4;
 
 	SIVAL(p,0,PTR_DIFF(p2,*rdata));
-	strlcpy(p2,conn->server_info->sanitized_username,PTR_DIFF(endp,p2));
+	strlcpy(p2,current_user_info.smb_name,PTR_DIFF(endp,p2));
 	p2 = skip_string(*rdata,*rdata_len,p2);
 	if (!p2) {
 		return False;
@@ -3349,9 +3338,8 @@
 	   Don't depend on vuser being non-null !!. JRA */
 	user_struct *vuser = get_valid_user_struct(vuid);
 	if(vuser != NULL) {
-		DEBUG(3,("  Username of UID %d is %s\n",
-			 (int)vuser->server_info->utok.uid,
-			 vuser->server_info->unix_name));
+		DEBUG(3,("  Username of UID %d is %s\n", (int)vuser->uid,
+			vuser->user.unix_name));
 	}
 
 	if (!str1 || !str2 || !UserName || !p) {
@@ -3424,9 +3412,7 @@
 
 		/* EEK! the cifsrap.txt doesn't have this in!!!! */
 		SIVAL(p,usri11_full_name,PTR_DIFF(p2,p)); /* full name */
-		strlcpy(p2,((vuser != NULL)
-			    ? pdb_get_fullname(vuser->server_info->sam_account)
-			    : UserName),PTR_DIFF(endp,p2));
+		strlcpy(p2,((vuser != NULL) ? vuser->user.full_name : UserName),PTR_DIFF(endp,p2));
 		p2 = skip_string(*rdata,*rdata_len,p2);
 		if (!p2) {
 			return False;
@@ -3434,17 +3420,12 @@
 	}
 
 	if (uLevel == 11) {
-		const char *homedir = "";
-		if (vuser != NULL) {
-			homedir = pdb_get_homedir(
-				vuser->server_info->sam_account);
-		}
 		/* modelled after NTAS 3.51 reply */
 		SSVAL(p,usri11_priv,conn->admin_user?USER_PRIV_ADMIN:USER_PRIV_USER); 
 		SIVAL(p,usri11_auth_flags,AF_OP_PRINT);		/* auth flags */
 		SIVALS(p,usri11_password_age,-1);		/* password age */
 		SIVAL(p,usri11_homedir,PTR_DIFF(p2,p)); /* home dir */
-		strlcpy(p2, homedir, PTR_DIFF(endp,p2));
+		strlcpy(p2, vuser && vuser->homedir ? vuser->homedir : "",PTR_DIFF(endp,p2));
 		p2 = skip_string(*rdata,*rdata_len,p2);
 		if (!p2) {
 			return False;
@@ -3495,9 +3476,7 @@
 		SSVAL(p,42,
 		conn->admin_user?USER_PRIV_ADMIN:USER_PRIV_USER);
 		SIVAL(p,44,PTR_DIFF(p2,*rdata)); /* home dir */
-		strlcpy(p2, vuser ? pdb_get_homedir(
-				vuser->server_info->sam_account) : "",
-			PTR_DIFF(endp,p2));
+		strlcpy(p2, vuser && vuser->homedir ? vuser->homedir : "",PTR_DIFF(endp,p2));
 		p2 = skip_string(*rdata,*rdata_len,p2);
 		if (!p2) {
 			return False;
@@ -3506,9 +3485,7 @@
 		*p2++ = 0;
 		SSVAL(p,52,0);		/* flags */
 		SIVAL(p,54,PTR_DIFF(p2,*rdata));		/* script_path */
-		strlcpy(p2, vuser ? pdb_get_logon_script(
-				vuser->server_info->sam_account) : "",
-			PTR_DIFF(endp,p2));
+		strlcpy(p2,vuser && vuser->logon_script ? vuser->logon_script : "",PTR_DIFF(endp,p2));
 		p2 = skip_string(*rdata,*rdata_len,p2);
 		if (!p2) {
 			return False;
@@ -3516,9 +3493,7 @@
 		if (uLevel == 2) {
 			SIVAL(p,60,0);		/* auth_flags */
 			SIVAL(p,64,PTR_DIFF(p2,*rdata)); /* full_name */
-			strlcpy(p2,((vuser != NULL)
-				    ? pdb_get_fullname(vuser->server_info->sam_account)
-				    : UserName),PTR_DIFF(endp,p2));
+   			strlcpy(p2,((vuser != NULL) ? vuser->user.full_name : UserName),PTR_DIFF(endp,p2));
 			p2 = skip_string(*rdata,*rdata_len,p2);
 			if (!p2) {
 				return False;
@@ -3605,9 +3580,8 @@
 	}
 
 	if(vuser != NULL) {
-		DEBUG(3,("  Username of UID %d is %s\n",
-			 (int)vuser->server_info->utok.uid,
-			 vuser->server_info->unix_name));
+		DEBUG(3,("  Username of UID %d is %s\n", (int)vuser->uid, 
+			vuser->user.unix_name));
 	}
 
 	uLevel = get_safe_SVAL(param,tpscnt,p,0,-1);
@@ -3664,8 +3638,7 @@
 		}
 
 		PACKS(&desc,"z",lp_workgroup());/* domain */
-		PACKS(&desc,"z", vuser ? pdb_get_logon_script(
-			      vuser->server_info->sam_account) : ""); /* script path */
+		PACKS(&desc,"z", vuser && vuser->logon_script ? vuser->logon_script :""); /* script path */
 		PACKI(&desc,"D",0x00000000);		/* reserved */
 	}
 
@@ -4587,7 +4560,7 @@
 	if (api_commands[i].auth_user && lp_restrict_anonymous()) {
 		user_struct *user = get_valid_user_struct(vuid);
 
-		if (!user || user->server_info->guest) {
+		if (!user || user->guest) {
 			reply_nterror(req, NT_STATUS_ACCESS_DENIED);
 			return;
 		}
@@ -4632,7 +4605,7 @@
 
 	/* If api_Unsupported returns false we can't return anything. */
 	if (reply) {
-		send_trans_reply(conn, req->inbuf, rparam, rparam_len,
+		send_trans_reply(conn, req, rparam, rparam_len,
 				 rdata, rdata_len, False);
 	}
 

Modified: branches/samba/upstream/source/smbd/mangle_hash.c
===================================================================
--- branches/samba/upstream/source/smbd/mangle_hash.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/mangle_hash.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -294,7 +294,8 @@
 	if (strlen(f) > 12)
 		return False;
 
-	if (!push_ucs2_allocate(&ucs2name, f, &size)) {
+	size = push_ucs2_allocate(&ucs2name, f);
+	if (size == (size_t)-1) {
 		DEBUG(0,("is_8_3: internal error push_ucs2_allocate() failed!\n"));
 		goto done;
 	}
@@ -603,11 +604,9 @@
 {
 	smb_ucs2_t *name_ucs2 = NULL;
 	NTSTATUS status;
-	size_t converted_size;
-
 	magic_char = lp_magicchar(p);
 
-	if (!push_ucs2_allocate(&name_ucs2, name, &converted_size)) {
+	if (push_ucs2_allocate(&name_ucs2, name) == (size_t)-1) {
 		DEBUG(0, ("push_ucs2_allocate failed!\n"));
 		return False;
 	}
@@ -638,14 +637,12 @@
 			const struct share_params *p)
 {
 	smb_ucs2_t *in_ucs2 = NULL;
-	size_t converted_size;
-
 	magic_char = lp_magicchar(p);
 
 	DEBUG(5,("hash_name_to_8_3( %s, cache83 = %s)\n", in,
 		 cache83 ? "True" : "False"));
 
-	if (!push_ucs2_allocate(&in_ucs2, in, &converted_size)) {
+	if (push_ucs2_allocate(&in_ucs2, in) == (size_t)-1) {
 		DEBUG(0, ("push_ucs2_allocate failed!\n"));
 		return False;
 	}

Modified: branches/samba/upstream/source/smbd/message.c
===================================================================
--- branches/samba/upstream/source/smbd/message.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/message.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -45,7 +45,7 @@
 	int i;
 	int fd;
 	char *msg;
-	size_t len;
+	int len;
 	ssize_t sz;
 	fstring alpha_buf;
 	char *s;
@@ -72,17 +72,18 @@
 	 * Incoming message is in DOS codepage format. Convert to UNIX.
 	 */
 
-	if (!convert_string_talloc(talloc_tos(), CH_DOS, CH_UNIX, state->msg,
-				   talloc_get_size(state->msg), (void *)&msg,
-				   &len, true)) {
+	len = convert_string_talloc(
+		talloc_tos(), CH_DOS, CH_UNIX, state->msg,
+		talloc_get_size(state->msg), (void *)&msg, true);
+
+	if (len == -1) {
 		DEBUG(3, ("Conversion failed, delivering message in DOS "
 			  "codepage format\n"));
 		msg = state->msg;
 	}
 
 	for (i = 0; i < len; i++) {
-		if ((msg[i] == '\r') &&
-		    (i < (len-1)) && (msg[i+1] == '\n')) {
+		if ((msg[i] == '\r') && (i < (len-1)) && (msg[i+1] == '\n')) {
 			continue;
 		}
 		sz = write(fd, &msg[i], 1);

Modified: branches/samba/upstream/source/smbd/msdfs.c
===================================================================
--- branches/samba/upstream/source/smbd/msdfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/msdfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -215,40 +215,37 @@
  Note this CHANGES CWD !!!! JRA.
 *********************************************************/
 
-NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
-				connection_struct **pconn,
+static NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
+				connection_struct *conn,
 				int snum,
-				const char *path,
-				char **poldcwd)
+				const char *path)
 {
-	connection_struct *conn;
 	char *connpath;
-	char *oldcwd;
 
-	conn = TALLOC_ZERO_P(ctx, connection_struct);
-	if (conn == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
+	ZERO_STRUCTP(conn);
 
-	connpath = talloc_strdup(conn, path);
+	connpath = talloc_strdup(ctx, path);
 	if (!connpath) {
-		TALLOC_FREE(conn);
 		return NT_STATUS_NO_MEMORY;
 	}
-	connpath = talloc_string_sub(conn,
+	connpath = talloc_string_sub(ctx,
 				connpath,
 				"%S",
 				lp_servicename(snum));
 	if (!connpath) {
-		TALLOC_FREE(conn);
 		return NT_STATUS_NO_MEMORY;
 	}
 
 	/* needed for smbd_vfs_init() */
 
-	if (!(conn->params = TALLOC_ZERO_P(conn, struct share_params))) {
+	if ((conn->mem_ctx=talloc_init("connection_struct")) == NULL) {
+		DEBUG(0,("talloc_init(connection_struct) failed!\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	if (!(conn->params = TALLOC_ZERO_P(conn->mem_ctx,
+					struct share_params))) {
 		DEBUG(0, ("TALLOC failed\n"));
-		TALLOC_FREE(conn);
 		return NT_STATUS_NO_MEMORY;
 	}
 
@@ -269,14 +266,6 @@
 	 * user we will fail.... WTF ? JRA.
 	 */
 
-	oldcwd = vfs_GetWd(ctx, conn);
-	if (oldcwd == NULL) {
-		NTSTATUS status = map_nt_error_from_unix(errno);
-		DEBUG(3, ("vfs_GetWd failed: %s\n", strerror(errno)));
-		conn_free_internal(conn);
-		return status;
-	}
-
 	if (vfs_ChDir(conn,conn->connectpath) != 0) {
 		NTSTATUS status = map_nt_error_from_unix(errno);
 		DEBUG(3,("create_conn_struct: Can't ChDir to new conn path %s. "
@@ -286,9 +275,6 @@
 		return status;
 	}
 
-	*pconn = conn;
-	*poldcwd = oldcwd;
-
 	return NT_STATUS_OK;
 }
 
@@ -684,17 +670,6 @@
 		return NT_STATUS_OK;
 	}
 
-	if (!( strequal(pdp->servicename, lp_servicename(SNUM(conn)))
-			|| (strequal(pdp->servicename, HOMES_NAME)
-			&& strequal(lp_servicename(SNUM(conn)),
-				conn->server_info->sanitized_username) )) ) {
-
-		/* The given sharename doesn't match this connection. */
-		TALLOC_FREE(pdp);
-
-		return NT_STATUS_OBJECT_PATH_NOT_FOUND;
-	}
-
 	status = dfs_path_lookup(ctx, conn, path_in, pdp,
 			search_wcard_flag, NULL, NULL);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -765,18 +740,19 @@
 			int *consumedcntp,
 			bool *self_referralp)
 {
-	struct connection_struct *conn;
+	struct connection_struct conns;
+	struct connection_struct *conn = &conns;
 	char *targetpath = NULL;
 	int snum;
 	NTSTATUS status = NT_STATUS_NOT_FOUND;
 	bool dummy;
 	struct dfs_path *pdp = TALLOC_P(ctx, struct dfs_path);
-	char *oldpath;
 
 	if (!pdp) {
 		return NT_STATUS_NO_MEMORY;
 	}
 
+	ZERO_STRUCT(conns);
 	*self_referralp = False;
 
 	status = parse_dfs_path(NULL, dfs_path, False, pdp, &dummy);
@@ -880,8 +856,7 @@
 		return NT_STATUS_OK;
 	}
 
-	status = create_conn_struct(ctx, &conn, snum, lp_pathname(snum),
-				    &oldpath);
+	status = create_conn_struct(ctx, conn, snum, lp_pathname(snum));
 	if (!NT_STATUS_IS_OK(status)) {
 		TALLOC_FREE(pdp);
 		return status;
@@ -896,7 +871,6 @@
 	if (!NT_STATUS_EQUAL(status, NT_STATUS_PATH_NOT_COVERED)) {
 		DEBUG(3,("get_referred_path: No valid referrals for path %s\n",
 			dfs_path));
-		vfs_ChDir(conn, oldpath);
 		conn_free_internal(conn);
 		TALLOC_FREE(pdp);
 		return status;
@@ -908,13 +882,11 @@
 				&jucn->referral_count)) {
 		DEBUG(3,("get_referred_path: failed to parse symlink "
 			"target %s\n", targetpath ));
-		vfs_ChDir(conn, oldpath);
 		conn_free_internal(conn);
 		TALLOC_FREE(pdp);
 		return NT_STATUS_NOT_FOUND;
 	}
 
-	vfs_ChDir(conn, oldpath);
 	conn_free_internal(conn);
 	TALLOC_FREE(pdp);
 	return NT_STATUS_OK;
@@ -1309,30 +1281,26 @@
  **********************************************************************/
 
 static bool junction_to_local_path(const struct junction_map *jucn,
-				   char **pp_path_out,
-				   connection_struct **conn_out,
-				   char **oldpath)
+				char **pp_path_out,
+				connection_struct *conn_out)
 {
 	int snum;
-	NTSTATUS status;
 
 	snum = lp_servicenumber(jucn->service_name);
 	if(snum < 0) {
 		return False;
 	}
-	status = create_conn_struct(talloc_tos(), conn_out, snum,
-				    lp_pathname(snum), oldpath);
-	if (!NT_STATUS_IS_OK(status)) {
+	if (!NT_STATUS_IS_OK(create_conn_struct(talloc_tos(),
+					conn_out, snum,
+					lp_pathname(snum)))) {
 		return False;
 	}
 
-	*pp_path_out = talloc_asprintf(*conn_out,
+	*pp_path_out = talloc_asprintf(conn_out->mem_ctx,
 			"%s/%s",
 			lp_pathname(snum),
 			jucn->volume_name);
 	if (!*pp_path_out) {
-		vfs_ChDir(*conn_out, *oldpath);
-		conn_free_internal(*conn_out);
 		return False;
 	}
 	return True;
@@ -1341,19 +1309,21 @@
 bool create_msdfs_link(const struct junction_map *jucn)
 {
 	char *path = NULL;
-	char *cwd;
 	char *msdfs_link = NULL;
-	connection_struct *conn;
+	connection_struct conns;
+ 	connection_struct *conn = &conns;
 	int i=0;
 	bool insert_comma = False;
 	bool ret = False;
 
-	if(!junction_to_local_path(jucn, &path, &conn, &cwd)) {
+	ZERO_STRUCT(conns);
+
+	if(!junction_to_local_path(jucn, &path, conn)) {
 		return False;
 	}
 
 	/* Form the msdfs_link contents */
-	msdfs_link = talloc_strdup(conn, "msdfs:");
+	msdfs_link = talloc_strdup(conn->mem_ctx, "msdfs:");
 	if (!msdfs_link) {
 		goto out;
 	}
@@ -1406,7 +1376,7 @@
 	ret = True;
 
 out:
-	vfs_ChDir(conn, cwd);
+
 	conn_free_internal(conn);
 	return ret;
 }
@@ -1414,19 +1384,18 @@
 bool remove_msdfs_link(const struct junction_map *jucn)
 {
 	char *path = NULL;
-	char *cwd;
-	connection_struct *conn;
+	connection_struct conns;
+ 	connection_struct *conn = &conns;
 	bool ret = False;
 
-	if (!junction_to_local_path(jucn, &path, &conn, &cwd)) {
-		return false;
-	}
+	ZERO_STRUCT(conns);
 
-	if( SMB_VFS_UNLINK(conn, path) == 0 ) {
-		ret = True;
+	if( junction_to_local_path(jucn, &path, conn) ) {
+		if( SMB_VFS_UNLINK(conn, path) == 0 ) {
+			ret = True;
+		}
 	}
 
-	vfs_ChDir(conn, cwd);
 	conn_free_internal(conn);
 	return ret;
 }
@@ -1442,10 +1411,10 @@
 	char *dname = NULL;
 	const char *connect_path = lp_pathname(snum);
 	const char *msdfs_proxy = lp_msdfs_proxy(snum);
-	connection_struct *conn;
-	NTSTATUS status;
-	char *cwd;
+	connection_struct conn;
 
+	ZERO_STRUCT(conn);
+
 	if(*connect_path == '\0') {
 		return 0;
 	}
@@ -1454,11 +1423,8 @@
 	 * Fake up a connection struct for the VFS layer.
 	 */
 
-	status = create_conn_struct(talloc_tos(), &conn, snum, connect_path,
-				    &cwd);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("create_conn_struct failed: %s\n",
-			  nt_errstr(status)));
+	if (!NT_STATUS_IS_OK(create_conn_struct(talloc_tos(),
+					&conn, snum, connect_path))) {
 		return 0;
 	}
 
@@ -1471,24 +1437,24 @@
 	}
 
 	/* Now enumerate all dfs links */
-	dirp = SMB_VFS_OPENDIR(conn, ".", NULL, 0);
+	dirp = SMB_VFS_OPENDIR(&conn, ".", NULL, 0);
 	if(!dirp) {
 		goto out;
 	}
 
-	while ((dname = vfs_readdirname(conn, dirp)) != NULL) {
-		if (is_msdfs_link(conn,
+	while ((dname = vfs_readdirname(&conn, dirp)) != NULL) {
+		if (is_msdfs_link(&conn,
 				dname,
 				NULL)) {
 			cnt++;
 		}
 	}
 
-	SMB_VFS_CLOSEDIR(conn,dirp);
+	SMB_VFS_CLOSEDIR(&conn,dirp);
 
 out:
-	vfs_ChDir(conn, cwd);
-	conn_free_internal(conn);
+
+	conn_free_internal(&conn);
 	return cnt;
 }
 
@@ -1506,11 +1472,11 @@
 	const char *connect_path = lp_pathname(snum);
 	char *service_name = lp_servicename(snum);
 	const char *msdfs_proxy = lp_msdfs_proxy(snum);
-	connection_struct *conn;
+	connection_struct conn;
 	struct referral *ref = NULL;
-	char *cwd;
-	NTSTATUS status;
 
+	ZERO_STRUCT(conn);
+
 	if (jn_remain == 0) {
 		return 0;
 	}
@@ -1523,10 +1489,7 @@
 	 * Fake up a connection struct for the VFS layer.
 	 */
 
-	status = create_conn_struct(ctx, &conn, snum, connect_path, &cwd);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("create_conn_struct failed: %s\n",
-			  nt_errstr(status)));
+	if (!NT_STATUS_IS_OK(create_conn_struct(ctx, &conn, snum, connect_path))) {
 		return 0;
 	}
 
@@ -1570,12 +1533,12 @@
 	}
 
 	/* Now enumerate all dfs links */
-	dirp = SMB_VFS_OPENDIR(conn, ".", NULL, 0);
+	dirp = SMB_VFS_OPENDIR(&conn, ".", NULL, 0);
 	if(!dirp) {
 		goto out;
 	}
 
-	while ((dname = vfs_readdirname(conn, dirp)) != NULL) {
+	while ((dname = vfs_readdirname(&conn, dirp)) != NULL) {
 		char *link_target = NULL;
 		if (cnt >= jn_remain) {
 			DEBUG(2, ("form_junctions: ran out of MSDFS "
@@ -1583,7 +1546,7 @@
 			goto out;
 		}
 		if (is_msdfs_link_internal(ctx,
-					conn,
+					&conn,
 					dname, &link_target,
 					NULL)) {
 			if (parse_msdfs_symlink(ctx,
@@ -1609,11 +1572,10 @@
 out:
 
 	if (dirp) {
-		SMB_VFS_CLOSEDIR(conn,dirp);
+		SMB_VFS_CLOSEDIR(&conn,dirp);
 	}
 
-	vfs_ChDir(conn, cwd);
-	conn_free_internal(conn);
+	conn_free_internal(&conn);
 	return cnt;
 }
 

Modified: branches/samba/upstream/source/smbd/negprot.c
===================================================================
--- branches/samba/upstream/source/smbd/negprot.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/negprot.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -516,7 +516,6 @@
 	int num_cliprotos;
 	char **cliprotos;
 	int i;
-	size_t converted_size;
 
 	static bool done_negprot = False;
 
@@ -556,8 +555,8 @@
 
 		cliprotos = tmp;
 
-		if (!pull_ascii_talloc(cliprotos, &cliprotos[num_cliprotos], p,
-				       &converted_size)) {
+		if (pull_ascii_talloc(cliprotos, &cliprotos[num_cliprotos], p)
+		    == (size_t)-1) {
 			DEBUG(0, ("pull_ascii_talloc failed\n"));
 			TALLOC_FREE(cliprotos);
 			reply_nterror(req, NT_STATUS_NO_MEMORY);

Modified: branches/samba/upstream/source/smbd/notify.c
===================================================================
--- branches/samba/upstream/source/smbd/notify.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/notify.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -114,9 +114,6 @@
 
 		if (prs_offset(ps) > max_offset) {
 			/* Too much data for client. */
-			DEBUG(10, ("Client only wanted %d bytes, trying to "
-				   "marshall %d bytes\n", (int)max_offset,
-				   (int)prs_offset(ps)));
 			return False;
 		}
 	}
@@ -259,9 +256,6 @@
 	struct notify_change_request *request = NULL;
 	struct notify_mid_map *map = NULL;
 
-	DEBUG(10, ("change_notify_add_request: Adding request for %s: "
-		   "max_param = %d\n", fsp->fsp_name, (int)max_param));
-
 	if (!(request = SMB_MALLOC_P(struct notify_change_request))
 	    || !(map = SMB_MALLOC_P(struct notify_mid_map))) {
 		SAFE_FREE(request);

Modified: branches/samba/upstream/source/smbd/ntquotas.c
===================================================================
--- branches/samba/upstream/source/smbd/ntquotas.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/ntquotas.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -222,13 +222,6 @@
 	return 0;
 }
 
-static int quota_handle_destructor(SMB_NTQUOTA_HANDLE *handle)
-{
-	if (handle->quota_list)
-		free_ntquota_list(&handle->quota_list);
-	return 0;
-}
-
 void *init_quota_handle(TALLOC_CTX *mem_ctx)
 {
 	SMB_NTQUOTA_HANDLE *qt_handle;
@@ -242,6 +235,24 @@
 		return NULL;
 	}
 
-	talloc_set_destructor(qt_handle, quota_handle_destructor);
-	return (void *)qt_handle;
+	return (void *)qt_handle;	
 }
+
+void destroy_quota_handle(void **pqt_handle)
+{
+	SMB_NTQUOTA_HANDLE *qt_handle = NULL;
+	if (!pqt_handle||!(*pqt_handle))
+		return;
+	
+	qt_handle = (SMB_NTQUOTA_HANDLE *)(*pqt_handle);
+	
+	
+	if (qt_handle->quota_list)
+		free_ntquota_list(&qt_handle->quota_list);
+
+	qt_handle->quota_list = NULL;
+	qt_handle->tmp_list = NULL;
+	qt_handle = NULL;
+
+	return;
+}

Modified: branches/samba/upstream/source/smbd/nttrans.c
===================================================================
--- branches/samba/upstream/source/smbd/nttrans.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/nttrans.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,7 +22,29 @@
 
 extern int max_send;
 extern enum protocol_types Protocol;
+extern struct current_user current_user;
 
+static const char *known_nt_pipes[] = {
+	"\\LANMAN",
+	"\\srvsvc",
+	"\\samr",
+	"\\wkssvc",
+	"\\NETLOGON",
+	"\\ntlsa",
+	"\\ntsvcs",
+	"\\lsass",
+	"\\lsarpc",
+	"\\winreg",
+	"\\initshutdown",
+	"\\spoolss",
+	"\\netdfs",
+	"\\rpcecho",
+        "\\svcctl",
+	"\\eventlog",
+	"\\unixinfo",
+	NULL
+};
+
 static char *nttrans_realloc(char **ptr, size_t size)
 {
 	if (ptr==NULL) {
@@ -268,17 +290,30 @@
 			 struct smb_request *req, int *ppnum)
 {
 	smb_np_struct *p = NULL;
+	int i;
 
 	DEBUG(4,("nt_open_pipe: Opening pipe %s.\n", fname));
 
 	/* See if it is one we want to handle. */
 
-	if (!is_known_pipename(fname)) {
+	if (lp_disable_spoolss() && strequal(fname, "\\spoolss")) {
 		reply_botherror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND,
 				ERRDOS, ERRbadpipe);
 		return;
 	}
 
+	for( i = 0; known_nt_pipes[i]; i++ ) {
+		if( strequal(fname,known_nt_pipes[i])) {
+			break;
+		}
+	}
+
+	if ( known_nt_pipes[i] == NULL ) {
+		reply_botherror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND,
+				ERRDOS, ERRbadpipe);
+		return;
+	}
+
 	/* Strip \\ off the name. */
 	fname++;
 
@@ -739,7 +774,13 @@
 		security_info_sent &= ~DACL_SECURITY_INFORMATION;
 	}
 
-	status = SMB_VFS_FSET_NT_ACL(fsp, security_info_sent, psd);
+	if (fsp->fh->fd != -1) {
+		status = SMB_VFS_FSET_NT_ACL(fsp, security_info_sent, psd);
+	}
+	else {
+		status = SMB_VFS_SET_NT_ACL(fsp, fsp->fsp_name,
+					    security_info_sent, psd);
+	}
 
 	TALLOC_FREE(psd);
 
@@ -1495,7 +1536,7 @@
 	}
 
 	fsp = file_fsp(SVAL(params, 0));
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		return;
 	}
 	srvstr_get_path_wcard(ctx, params, req->flags2, &new_name, params+4,
@@ -1587,8 +1628,14 @@
 	if (!lp_nt_acl_support(SNUM(conn))) {
 		status = get_null_nt_acl(talloc_tos(), &psd);
 	} else {
-		status = SMB_VFS_FGET_NT_ACL(
-			fsp, security_info_wanted, &psd);
+		if (fsp->fh->fd != -1) {
+			status = SMB_VFS_FGET_NT_ACL(
+				fsp, security_info_wanted, &psd);
+		}
+		else {
+			status = SMB_VFS_GET_NT_ACL(
+				conn, fsp->fsp_name, security_info_wanted, &psd);
+		}
 	}
 
 	if (!NT_STATUS_IS_OK(status)) {
@@ -1748,7 +1795,7 @@
 
 		DEBUG(10,("FSCTL_CREATE_OR_GET_OBJECT_ID: called on FID[0x%04X]\n",fidnum));
 
-		if (!fsp_belongs_conn(conn, req, fsp)) {
+		if (!fsp_belongs_conn(conn, req, fsp, &current_user)) {
 			return;
 		}
 
@@ -1803,7 +1850,7 @@
 		uint32 i;
 		char *cur_pdata;
 
-		if (!fsp_belongs_conn(conn, req, fsp)) {
+		if (!fsp_belongs_conn(conn, req, fsp, &current_user)) {
 			return;
 		}
 
@@ -1926,7 +1973,7 @@
 
 		DEBUG(10,("FSCTL_FIND_FILES_BY_SID: called on FID[0x%04X]\n",fidnum));
 
-		if (!fsp_belongs_conn(conn, req, fsp)) {
+		if (!fsp_belongs_conn(conn, req, fsp, &current_user)) {
 			return;
 		}
 
@@ -2011,10 +2058,9 @@
 	ZERO_STRUCT(qt);
 
 	/* access check */
-	if (conn->server_info->utok.uid != 0) {
-		DEBUG(1,("get_user_quota: access_denied service [%s] user "
-			 "[%s]\n", lp_servicename(SNUM(conn)),
-			 conn->server_info->unix_name));
+	if (current_user.ut.uid != 0) {
+		DEBUG(1,("get_user_quota: access_denied service [%s] user [%s]\n",
+			lp_servicename(SNUM(conn)),conn->user));
 		reply_doserror(req, ERRDOS, ERRnoaccess);
 		return;
 	}
@@ -2031,7 +2077,7 @@
 
 	/* maybe we can check the quota_fnum */
 	fsp = file_fsp(SVAL(params,0));
-	if (!check_fsp_ntquota_handle(conn, req, fsp)) {
+	if (!CHECK_NTQUOTA_HANDLE_OK(fsp,conn)) {
 		DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
 		reply_nterror(req, NT_STATUS_INVALID_HANDLE);
 		return;
@@ -2040,7 +2086,7 @@
 	/* the NULL pointer checking for fsp->fake_file_handle->pd
 	 * is done by CHECK_NTQUOTA_HANDLE_OK()
 	 */
-	qt_handle = (SMB_NTQUOTA_HANDLE *)fsp->fake_file_handle->private_data;
+	qt_handle = (SMB_NTQUOTA_HANDLE *)fsp->fake_file_handle->pd;
 
 	level = SVAL(params,2);
 
@@ -2278,10 +2324,9 @@
 	ZERO_STRUCT(qt);
 
 	/* access check */
-	if (conn->server_info->utok.uid != 0) {
-		DEBUG(1,("set_user_quota: access_denied service [%s] user "
-			 "[%s]\n", lp_servicename(SNUM(conn)),
-			 conn->server_info->unix_name));
+	if (current_user.ut.uid != 0) {
+		DEBUG(1,("set_user_quota: access_denied service [%s] user [%s]\n",
+			lp_servicename(SNUM(conn)),conn->user));
 		reply_doserror(req, ERRDOS, ERRnoaccess);
 		return;
 	}
@@ -2298,7 +2343,7 @@
 
 	/* maybe we can check the quota_fnum */
 	fsp = file_fsp(SVAL(params,0));
-	if (!check_fsp_ntquota_handle(conn, req, fsp)) {
+	if (!CHECK_NTQUOTA_HANDLE_OK(fsp,conn)) {
 		DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
 		reply_nterror(req, NT_STATUS_INVALID_HANDLE);
 		return;
@@ -2560,7 +2605,7 @@
 		return;
 	}
 
-	if ((state = TALLOC_P(conn, struct trans_state)) == NULL) {
+	if ((state = TALLOC_P(conn->mem_ctx, struct trans_state)) == NULL) {
 		reply_doserror(req, ERRSRV, ERRaccess);
 		END_PROFILE(SMBnttrans);
 		return;

Modified: branches/samba/upstream/source/smbd/open.c
===================================================================
--- branches/samba/upstream/source/smbd/open.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/open.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,6 +22,8 @@
 #include "includes.h"
 
 extern const struct generic_mapping file_generic_mapping;
+extern struct current_user current_user;
+extern userdom_struct current_user_info;
 extern bool global_client_failed_oplock_break;
 
 struct deferred_open_record {
@@ -321,7 +323,7 @@
 
 			/* Inherit the ACL if required */
 			if (lp_inherit_perms(SNUM(conn))) {
-				inherit_access_posix_acl(conn, parent_dir, path,
+				inherit_access_acl(conn, parent_dir, path,
 						   unx_mode);
 			}
 
@@ -389,6 +391,7 @@
 	fsp->modified = False;
 	fsp->sent_oplock_break = NO_BREAK_SENT;
 	fsp->is_directory = False;
+	fsp->is_stat = False;
 	if (conn->aio_write_behind_list &&
 	    is_in_path(path, conn->aio_write_behind_list, conn->case_sensitive)) {
 		fsp->aio_write_behind = True;
@@ -398,8 +401,8 @@
 	fsp->wcp = NULL; /* Write cache pointer. */
 
 	DEBUG(2,("%s opened file %s read=%s write=%s (numopen=%d)\n",
-		 conn->server_info->unix_name,
-		 fsp->fsp_name,
+		 *current_user_info.smb_name ?
+		 current_user_info.smb_name : conn->user,fsp->fsp_name,
 		 BOOLSTR(fsp->can_read), BOOLSTR(fsp->can_write),
 		 conn->num_files_open + 1));
 
@@ -1178,7 +1181,7 @@
 
 		DEBUG(10, ("open_file_ntcreate: printer open fname=%s\n", fname));
 
-		return print_fsp_open(conn, fname, req->vuid, result);
+		return print_fsp_open(conn, fname, result);
 	}
 
 	if (!parent_dirname_talloc(talloc_tos(), fname, &parent_dir,
@@ -1568,7 +1571,7 @@
 			}
 
 			if (((can_access_mask & FILE_WRITE_DATA) && !CAN_WRITE(conn)) ||
-			    !can_access_file_data(conn,fname,psbuf,can_access_mask)) {
+			    !can_access_file(conn,fname,psbuf,can_access_mask)) {
 				can_access = False;
 			}
 
@@ -1847,8 +1850,7 @@
 		new_file_created = True;
 	}
 
-	set_share_mode(lck, fsp, conn->server_info->utok.uid, 0,
-		       fsp->oplock_type, new_file_created);
+	set_share_mode(lck, fsp, current_user.ut.uid, 0, fsp->oplock_type, new_file_created);
 
 	/* Handle strange delete on close create semantics. */
 	if ((create_options & FILE_DELETE_ON_CLOSE)
@@ -2057,7 +2059,7 @@
 	}
 
 	if (lp_inherit_perms(SNUM(conn))) {
-		inherit_access_posix_acl(conn, parent_dir, name, mode);
+		inherit_access_acl(conn, parent_dir, name, mode);
 	}
 
 	if (!(file_attributes & FILE_FLAG_POSIX_SEMANTICS)) {
@@ -2224,6 +2226,7 @@
 	fsp->oplock_type = NO_OPLOCK;
 	fsp->sent_oplock_break = NO_BREAK_SENT;
 	fsp->is_directory = True;
+	fsp->is_stat = False;
 	fsp->posix_open = (file_attributes & FILE_FLAG_POSIX_SEMANTICS) ? True : False;
 
 	string_set(&fsp->fsp_name,fname);
@@ -2250,8 +2253,7 @@
 		return status;
 	}
 
-	set_share_mode(lck, fsp, conn->server_info->utok.uid, 0, NO_OPLOCK,
-		       True);
+	set_share_mode(lck, fsp, current_user.ut.uid, 0, NO_OPLOCK, True);
 
 	/* For directories the delete on close bit at open time seems
 	   always to be honored on close... See test 19 in Samba4 BASE-DELETE. */
@@ -2307,6 +2309,58 @@
 }
 
 /****************************************************************************
+ Open a pseudo-file (no locking checks - a 'stat' open).
+****************************************************************************/
+
+NTSTATUS open_file_stat(connection_struct *conn, struct smb_request *req,
+			const char *fname, SMB_STRUCT_STAT *psbuf,
+			files_struct **result)
+{
+	files_struct *fsp = NULL;
+	NTSTATUS status;
+
+	if (!VALID_STAT(*psbuf)) {
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	/* Can't 'stat' open directories. */
+	if(S_ISDIR(psbuf->st_mode)) {
+		return NT_STATUS_FILE_IS_A_DIRECTORY;
+	}
+
+	status = file_new(conn, &fsp);
+	if(!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	DEBUG(5,("open_file_stat: 'opening' file %s\n", fname));
+
+	/*
+	 * Setup the files_struct for it.
+	 */
+	
+	fsp->mode = psbuf->st_mode;
+	fsp->file_id = vfs_file_id_from_sbuf(conn, psbuf);
+	fsp->vuid = req ? req->vuid : UID_FIELD_INVALID;
+	fsp->file_pid = req ? req->smbpid : 0;
+	fsp->can_lock = False;
+	fsp->can_read = False;
+	fsp->can_write = False;
+	fsp->print_file = False;
+	fsp->modified = False;
+	fsp->oplock_type = NO_OPLOCK;
+	fsp->sent_oplock_break = NO_BREAK_SENT;
+	fsp->is_directory = False;
+	fsp->is_stat = True;
+	string_set(&fsp->fsp_name,fname);
+
+	conn->num_files_open++;
+
+	*result = fsp;
+	return NT_STATUS_OK;
+}
+
+/****************************************************************************
  Receive notification that one of our open files has been renamed by another
  smbd process.
 ****************************************************************************/
@@ -2608,7 +2662,9 @@
 	    && (create_disposition != FILE_CREATE)
 	    && (share_access & FILE_SHARE_DELETE)
 	    && (access_mask & DELETE_ACCESS)
-	    && (!can_delete_file_in_directory(conn, fname))) {
+	    && (((dos_mode(conn, fname, &sbuf) & FILE_ATTRIBUTE_READONLY)
+		 && !lp_delete_readonly(SNUM(conn)))
+		|| !can_delete_file_in_directory(conn, fname))) {
 		status = NT_STATUS_ACCESS_DENIED;
 		goto fail;
 	}
@@ -2996,8 +3052,7 @@
 			 * also tries a QUERY_FILE_INFO on the file and then
 			 * close it
 			 */
-			status = open_fake_file(conn, req->vuid,
-						fake_file_type, fname,
+			status = open_fake_file(conn, fake_file_type, fname,
 						access_mask, &fsp);
 			if (!NT_STATUS_IS_OK(status)) {
 				goto fail;

Modified: branches/samba/upstream/source/smbd/password.c
===================================================================
--- branches/samba/upstream/source/smbd/password.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/password.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -119,6 +119,8 @@
 
 	session_yield(vuser);
 
+	data_blob_free(&vuser->session_key);
+
 	if (vuser->auth_ntlmssp_state) {
 		auth_ntlmssp_end(&vuser->auth_ntlmssp_state);
 	}
@@ -127,7 +129,7 @@
 
 	/* clear the vuid from the 'cache' on each connection, and
 	   from the vuid 'owner' of connections */
-	conn_clear_vuid_caches(vuid);
+	conn_clear_vuid_cache(vuid);
 
 	TALLOC_FREE(vuser);
 	num_validated_vuids--;
@@ -199,37 +201,6 @@
 	return vuser->vuid;
 }
 
-static int register_homes_share(const char *username)
-{
-	int result;
-	struct passwd *pwd;
-
-	result = lp_servicenumber(username);
-	if (result != -1) {
-		DEBUG(3, ("Using static (or previously created) service for "
-			  "user '%s'; path = '%s'\n", username,
-			  lp_pathname(result)));
-		return result;
-	}
-
-	pwd = getpwnam_alloc(talloc_tos(), username);
-
-	if ((pwd == NULL) || (pwd->pw_dir[0] == '\0')) {
-		DEBUG(3, ("No home directory defined for user '%s'\n",
-			  username));
-		TALLOC_FREE(pwd);
-		return -1;
-	}
-
-	DEBUG(3, ("Adding homes service for user '%s' using home directory: "
-		  "'%s'\n", username, pwd->pw_dir));
-
-	result = add_home_service(username, username, pwd->pw_dir);
-
-	TALLOC_FREE(pwd);
-	return result;
-}
-
 /**
  *  register that a valid login has been performed, establish 'session'.
  *  @param server_info The token returned from the authentication process.
@@ -250,47 +221,109 @@
 
 int register_existing_vuid(uint16 vuid,
 			auth_serversupplied_info *server_info,
+			DATA_BLOB session_key,
 			DATA_BLOB response_blob,
 			const char *smb_name)
 {
-	fstring tmp;
-	user_struct *vuser;
-
-	vuser = get_partial_auth_user_struct(vuid);
+	user_struct *vuser = get_partial_auth_user_struct(vuid);
 	if (!vuser) {
 		goto fail;
 	}
 
 	/* Use this to keep tabs on all our info from the authentication */
-	vuser->server_info = talloc_move(vuser, &server_info);
+	vuser->server_info = server_info;
 
+	/* Ensure that the server_info will disappear with
+	 * the vuser it is now attached to */
+
+	talloc_steal(vuser, vuser->server_info);
+
+	/* the next functions should be done by a SID mapping system (SMS) as
+	 * the new real sam db won't have reference to unix uids or gids
+	 */
+
+	vuser->uid = server_info->uid;
+	vuser->gid = server_info->gid;
+
+	vuser->n_groups = server_info->n_groups;
+	if (vuser->n_groups) {
+		if (!(vuser->groups = (gid_t *)talloc_memdup(vuser,
+					server_info->groups,
+					sizeof(gid_t)*vuser->n_groups))) {
+			DEBUG(0,("register_existing_vuid: "
+				"failed to talloc_memdup vuser->groups\n"));
+			goto fail;
+		}
+	}
+
+	vuser->guest = server_info->guest;
+	fstrcpy(vuser->user.unix_name, server_info->unix_name);
+
 	/* This is a potentially untrusted username */
-	alpha_strcpy(tmp, smb_name, ". _-$", sizeof(tmp));
+	alpha_strcpy(vuser->user.smb_name, smb_name, ". _-$",
+		sizeof(vuser->user.smb_name));
 
-	vuser->server_info->sanitized_username = talloc_strdup(
-		vuser->server_info, tmp);
+	fstrcpy(vuser->user.domain, pdb_get_domain(server_info->sam_account));
+	fstrcpy(vuser->user.full_name,
+	pdb_get_fullname(server_info->sam_account));
 
+	{
+		/* Keep the homedir handy */
+		const char *homedir =
+			pdb_get_homedir(server_info->sam_account);
+		const char *logon_script =
+			pdb_get_logon_script(server_info->sam_account);
+
+		if (!IS_SAM_DEFAULT(server_info->sam_account,
+					PDB_UNIXHOMEDIR)) {
+			const char *unix_homedir =
+				pdb_get_unix_homedir(server_info->sam_account);
+			if (unix_homedir) {
+				vuser->unix_homedir = unix_homedir;
+			}
+		} else {
+			struct passwd *passwd =
+				getpwnam_alloc(vuser, vuser->user.unix_name);
+			if (passwd) {
+				vuser->unix_homedir = passwd->pw_dir;
+				/* Ensure that the unix_homedir now
+				 * belongs to vuser, so it goes away
+				 * with it, not with passwd below: */
+				talloc_steal(vuser, vuser->unix_homedir);
+				TALLOC_FREE(passwd);
+			}
+		}
+
+		if (homedir) {
+			vuser->homedir = homedir;
+		}
+		if (logon_script) {
+			vuser->logon_script = logon_script;
+		}
+	}
+	vuser->session_key = session_key;
+
 	DEBUG(10,("register_existing_vuid: (%u,%u) %s %s %s guest=%d\n",
-		  (unsigned int)vuser->server_info->utok.uid,
-		  (unsigned int)vuser->server_info->utok.gid,
-		  vuser->server_info->unix_name,
-		  vuser->server_info->sanitized_username,
-		  pdb_get_domain(vuser->server_info->sam_account),
-		  vuser->server_info->guest ));
+			(unsigned int)vuser->uid,
+			(unsigned int)vuser->gid,
+			vuser->user.unix_name, vuser->user.smb_name,
+			vuser->user.domain, vuser->guest ));
 
 	DEBUG(3, ("register_existing_vuid: User name: %s\t"
-		  "Real name: %s\n", vuser->server_info->unix_name,
-		  pdb_get_fullname(vuser->server_info->sam_account)));
+		"Real name: %s\n", vuser->user.unix_name,
+		vuser->user.full_name));
 
-	if (!vuser->server_info->ptok) {
+	if (server_info->ptok) {
+		vuser->nt_user_token = dup_nt_token(vuser, server_info->ptok);
+	} else {
 		DEBUG(1, ("register_existing_vuid: server_info does not "
 			"contain a user_token - cannot continue\n"));
 		goto fail;
 	}
 
 	DEBUG(3,("register_existing_vuid: UNIX uid %d is UNIX user %s, "
-		"and will be vuid %u\n", (int)vuser->server_info->utok.uid,
-		 vuser->server_info->unix_name, vuser->vuid));
+		"and will be vuid %u\n",
+		(int)vuser->uid,vuser->user.unix_name, vuser->vuid));
 
 	next_vuid++;
 	num_validated_vuids++;
@@ -309,26 +342,34 @@
 	If a share exists by this name (autoloaded or not) reuse it . */
 
 	vuser->homes_snum = -1;
-
-	if (!vuser->server_info->guest) {
-		vuser->homes_snum = register_homes_share(
-			vuser->server_info->unix_name);
+	if ( (!vuser->guest) && vuser->unix_homedir && *(vuser->unix_homedir)) {
+		int servicenumber = lp_servicenumber(vuser->user.unix_name);
+		if ( servicenumber == -1 ) {
+			DEBUG(3, ("Adding homes service for user '%s' using "
+				"home directory: '%s'\n",
+				vuser->user.unix_name, vuser->unix_homedir));
+			vuser->homes_snum =
+				add_home_service(vuser->user.unix_name,
+						vuser->user.unix_name,
+						vuser->unix_homedir);
+		} else {
+			DEBUG(3, ("Using static (or previously created) "
+				"service for user '%s'; path = '%s'\n",
+				vuser->user.unix_name,
+				lp_pathname(servicenumber) ));
+			vuser->homes_snum = servicenumber;
+		}
 	}
 
-	if (srv_is_signing_negotiated() && !vuser->server_info->guest &&
+	if (srv_is_signing_negotiated() && !vuser->guest &&
 			!srv_signing_started()) {
 		/* Try and turn on server signing on the first non-guest
 		 * sessionsetup. */
-		srv_set_signing(vuser->server_info->user_session_key, response_blob);
+		srv_set_signing(vuser->session_key, response_blob);
 	}
 
 	/* fill in the current_user_info struct */
-	set_current_user_info(
-		vuser->server_info->sanitized_username,
-		vuser->server_info->unix_name,
-		pdb_get_fullname(vuser->server_info->sam_account),
-		pdb_get_domain(vuser->server_info->sam_account));
-
+	set_current_user_info( &vuser->user );
 	return vuser->vuid;
 
   fail:

Modified: branches/samba/upstream/source/smbd/pipes.c
===================================================================
--- branches/samba/upstream/source/smbd/pipes.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/pipes.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -44,6 +44,9 @@
 	fstring	user;
 };
 
+
+extern struct pipe_id_info pipe_names[];
+
 /****************************************************************************
  Reply to an open and X on a named pipe.
  This code is basically stolen from reply_open_and_X with some
@@ -56,6 +59,7 @@
 	char *pipe_name = NULL;
 	smb_np_struct *p;
 	int size=0,fmode=0,mtime=0,rmode=0;
+	int i;
 	TALLOC_CTX *ctx = talloc_tos();
 
 	/* XXXX we need to handle passed times, sattr and flags */
@@ -78,7 +82,13 @@
 	DEBUG(4,("Opening pipe %s.\n", pipe_name));
 
 	/* See if it is one we want to handle. */
-	if (!is_known_pipename(pipe_name)) {
+	for( i = 0; pipe_names[i].client_pipe ; i++ ) {
+		if( strequal(pipe_name,pipe_names[i].client_pipe)) {
+			break;
+		}
+	}
+
+	if (pipe_names[i].client_pipe == NULL) {
 		reply_botherror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND,
 				ERRDOS, ERRbadpipe);
 		return;

Modified: branches/samba/upstream/source/smbd/posix_acls.c
===================================================================
--- branches/samba/upstream/source/smbd/posix_acls.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/posix_acls.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -904,7 +904,7 @@
 		if (directory_ace) {
 			nt_mask = UNIX_DIRECTORY_ACCESS_RWX;
 		} else {
-			nt_mask = (UNIX_ACCESS_RWX & ~DELETE_ACCESS);
+			nt_mask = UNIX_ACCESS_RWX;
 		}
 	} else if ((perms & ALL_ACE_PERMS) == (mode_t)0) {
 		/*
@@ -2207,7 +2207,9 @@
 		posix_id unix_ug;
 		enum ace_owner owner_type;
 
-		entry_id = SMB_ACL_NEXT_ENTRY;
+		/* get_next... */
+		if (entry_id == SMB_ACL_FIRST_ENTRY)
+			entry_id = SMB_ACL_NEXT_ENTRY;
 
 		/* Is this a MASK entry ? */
 		if (SMB_VFS_SYS_ACL_GET_TAG_TYPE(conn, entry, &tagtype) == -1)
@@ -3701,7 +3703,9 @@
 		SMB_ACL_TAG_T tagtype;
 		SMB_ACL_PERMSET_T permset;
 
-		entry_id = SMB_ACL_NEXT_ENTRY;
+		/* get_next... */
+		if (entry_id == SMB_ACL_FIRST_ENTRY)
+			entry_id = SMB_ACL_NEXT_ENTRY;
 
 		if (SMB_VFS_SYS_ACL_GET_TAG_TYPE(conn, entry, &tagtype) ==-1)
 			break;
@@ -3739,7 +3743,9 @@
 		SMB_ACL_PERMSET_T permset;
 		mode_t perms;
 
-		entry_id = SMB_ACL_NEXT_ENTRY;
+		/* get_next... */
+		if (entry_id == SMB_ACL_FIRST_ENTRY)
+			entry_id = SMB_ACL_NEXT_ENTRY;
 
 		if (SMB_VFS_SYS_ACL_GET_TAG_TYPE(conn, entry, &tagtype) == -1)
 			return -1;
@@ -3796,7 +3802,7 @@
  resulting ACL on TO.  Note that name is in UNIX character set.
 ****************************************************************************/
 
-static int copy_access_posix_acl(connection_struct *conn, const char *from, const char *to, mode_t mode)
+static int copy_access_acl(connection_struct *conn, const char *from, const char *to, mode_t mode)
 {
 	SMB_ACL_T posix_acl = NULL;
 	int ret = -1;
@@ -3823,41 +3829,21 @@
 
 int chmod_acl(connection_struct *conn, const char *name, mode_t mode)
 {
-	return copy_access_posix_acl(conn, name, name, mode);
+	return copy_access_acl(conn, name, name, mode);
 }
 
 /****************************************************************************
- Check for an existing default POSIX ACL on a directory.
-****************************************************************************/
-
-static bool directory_has_default_posix_acl(connection_struct *conn, const char *fname)
-{
-	SMB_ACL_T def_acl = SMB_VFS_SYS_ACL_GET_FILE( conn, fname, SMB_ACL_TYPE_DEFAULT);
-	bool has_acl = False;
-	SMB_ACL_ENTRY_T entry;
-
-	if (def_acl != NULL && (SMB_VFS_SYS_ACL_GET_ENTRY(conn, def_acl, SMB_ACL_FIRST_ENTRY, &entry) == 1)) {
-		has_acl = True;
-	}
-
-	if (def_acl) {
-	        SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
-	}
-        return has_acl;
-}
-
-/****************************************************************************
  If the parent directory has no default ACL but it does have an Access ACL,
  inherit this Access ACL to file name.
 ****************************************************************************/
 
-int inherit_access_posix_acl(connection_struct *conn, const char *inherit_from_dir,
+int inherit_access_acl(connection_struct *conn, const char *inherit_from_dir,
 		       const char *name, mode_t mode)
 {
-	if (directory_has_default_posix_acl(conn, inherit_from_dir))
+	if (directory_has_default_acl(conn, inherit_from_dir))
 		return 0;
 
-	return copy_access_posix_acl(conn, inherit_from_dir, name, mode);
+	return copy_access_acl(conn, inherit_from_dir, name, mode);
 }
 
 /****************************************************************************
@@ -3886,6 +3872,26 @@
 }
 
 /****************************************************************************
+ Check for an existing default POSIX ACL on a directory.
+****************************************************************************/
+
+bool directory_has_default_acl(connection_struct *conn, const char *fname)
+{
+	SMB_ACL_T def_acl = SMB_VFS_SYS_ACL_GET_FILE( conn, fname, SMB_ACL_TYPE_DEFAULT);
+	bool has_acl = False;
+	SMB_ACL_ENTRY_T entry;
+
+	if (def_acl != NULL && (SMB_VFS_SYS_ACL_GET_ENTRY(conn, def_acl, SMB_ACL_FIRST_ENTRY, &entry) == 1)) {
+		has_acl = True;
+	}
+
+	if (def_acl) {
+	        SMB_VFS_SYS_ACL_FREE_ACL(conn, def_acl);
+	}
+        return has_acl;
+}
+
+/****************************************************************************
  Map from wire type to permset.
 ****************************************************************************/
 
@@ -4159,7 +4165,9 @@
 		SMB_ACL_TAG_T tagtype;
 		SMB_ACL_PERMSET_T permset;
 
-		entry_id = SMB_ACL_NEXT_ENTRY;
+		/* get_next... */
+		if (entry_id == SMB_ACL_FIRST_ENTRY)
+			entry_id = SMB_ACL_NEXT_ENTRY;
 
 		if (SMB_VFS_SYS_ACL_GET_TAG_TYPE(conn, entry, &tagtype) == -1) {
 			DEBUG(5,("remove_posix_acl: failed to get tagtype from ACL on file %s (%s).\n",
@@ -4273,29 +4281,30 @@
 SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname)
 {
 	SEC_DESC *psd, *ret_sd;
-	connection_struct *conn;
+	connection_struct conn;
 	files_struct finfo;
 	struct fd_handle fh;
 
-	conn = TALLOC_ZERO_P(ctx, connection_struct);
-	if (conn == NULL) {
-		DEBUG(0, ("talloc failed\n"));
+	ZERO_STRUCT( conn );
+
+	if ( !(conn.mem_ctx = talloc_init( "novfs_get_nt_acl" )) ) {
+		DEBUG(0,("get_nt_acl_no_snum: talloc() failed!\n"));
 		return NULL;
 	}
 
-	if (!(conn->params = TALLOC_P(conn, struct share_params))) {
+	if (!(conn.params = TALLOC_P(conn.mem_ctx, struct share_params))) {
 		DEBUG(0,("get_nt_acl_no_snum: talloc() failed!\n"));
-		TALLOC_FREE(conn);
+		TALLOC_FREE(conn.mem_ctx);
 		return NULL;
 	}
 
-	conn->params->service = -1;
+	conn.params->service = -1;
 
-	set_conn_connectpath(conn, "/");
+	set_conn_connectpath(&conn, "/");
 
-	if (!smbd_vfs_init(conn)) {
+	if (!smbd_vfs_init(&conn)) {
 		DEBUG(0,("get_nt_acl_no_snum: Unable to create a fake connection struct!\n"));
-		conn_free_internal( conn );
+		conn_free_internal( &conn );
 		return NULL;
         }
 
@@ -4303,20 +4312,20 @@
 	ZERO_STRUCT( fh );
 
 	finfo.fnum = -1;
-	finfo.conn = conn;
+	finfo.conn = &conn;
 	finfo.fh = &fh;
 	finfo.fh->fd = -1;
 	finfo.fsp_name = CONST_DISCARD(char *,fname);
 
 	if (!NT_STATUS_IS_OK(posix_fget_nt_acl( &finfo, DACL_SECURITY_INFORMATION, &psd))) {
 		DEBUG(0,("get_nt_acl_no_snum: get_nt_acl returned zero.\n"));
-		conn_free_internal( conn );
+		conn_free_internal( &conn );
 		return NULL;
 	}
 
 	ret_sd = dup_sec_desc( ctx, psd );
 
-	conn_free_internal( conn );
+	conn_free_internal( &conn );
 
 	return ret_sd;
 }

Modified: branches/samba/upstream/source/smbd/process.c
===================================================================
--- branches/samba/upstream/source/smbd/process.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/process.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -152,7 +152,7 @@
 				1 /* pad byte */)
 
 static NTSTATUS receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
-						    const char *lenbuf,
+						    const char lenbuf[4],
 						    int fd, char **buffer,
 						    unsigned int timeout,
 						    size_t *p_unread,
@@ -1245,8 +1245,7 @@
  allocate and initialize a reply packet
 ********************************************************************/
 
-bool create_outbuf(TALLOC_CTX *mem_ctx, const char *inbuf, char **outbuf,
-		   uint8_t num_words, uint32_t num_bytes)
+void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes)
 {
 	/*
          * Protect against integer wrap
@@ -1261,36 +1260,26 @@
 		smb_panic(msg);
 	}
 
-	*outbuf = TALLOC_ARRAY(mem_ctx, char,
-			       smb_size + num_words*2 + num_bytes);
-	if (*outbuf == NULL) {
-		return false;
+	if (!(req->outbuf = TALLOC_ARRAY(
+		      req, uint8,
+		      smb_size + num_words*2 + num_bytes))) {
+		smb_panic("could not allocate output buffer\n");
 	}
 
-	construct_reply_common(inbuf, *outbuf);
-	srv_set_message(*outbuf, num_words, num_bytes, false);
+	construct_reply_common((char *)req->inbuf, (char *)req->outbuf);
+	srv_set_message((char *)req->outbuf, num_words, num_bytes, false);
 	/*
 	 * Zero out the word area, the caller has to take care of the bcc area
 	 * himself
 	 */
 	if (num_words != 0) {
-		memset(*outbuf + smb_vwv0, 0, num_words*2);
+		memset(req->outbuf + smb_vwv0, 0, num_words*2);
 	}
 
-	return true;
+	return;
 }
 
-void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes)
-{
-	char *outbuf;
-	if (!create_outbuf(req, (char *)req->inbuf, &outbuf, num_words,
-			   num_bytes)) {
-		smb_panic("could not allocate output buffer\n");
-	}
-	req->outbuf = (uint8_t *)outbuf;
-}
 
-
 /*******************************************************************
  Dump a packet to a file.
 ********************************************************************/
@@ -1392,13 +1381,7 @@
 		if(session_tag != UID_FIELD_INVALID) {
 			vuser = get_valid_user_struct(session_tag);
 			if (vuser) {
-				set_current_user_info(
-					vuser->server_info->sanitized_username,
-					vuser->server_info->unix_name,
-					pdb_get_fullname(vuser->server_info
-							 ->sam_account),
-					pdb_get_domain(vuser->server_info
-						       ->sam_account));
+				set_current_user_info(&vuser->user);
 			}
 		}
 	}

Modified: branches/samba/upstream/source/smbd/reply.c
===================================================================
--- branches/samba/upstream/source/smbd/reply.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/reply.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -32,6 +32,7 @@
 unsigned int smb_echo_count = 0;
 extern uint32 global_client_caps;
 
+extern struct current_user current_user;
 extern bool global_encrypted_passwords_negotiated;
 
 /****************************************************************************
@@ -326,13 +327,13 @@
 ****************************************************************************/
 
 bool check_fsp_open(connection_struct *conn, struct smb_request *req,
-		    files_struct *fsp)
+	       files_struct *fsp, struct current_user *user)
 {
 	if (!(fsp) || !(conn)) {
 		reply_nterror(req, NT_STATUS_INVALID_HANDLE);
 		return False;
 	}
-	if (((conn) != (fsp)->conn) || req->vuid != (fsp)->vuid) {
+	if (((conn) != (fsp)->conn) || user->vuid != (fsp)->vuid) {
 		reply_nterror(req, NT_STATUS_INVALID_HANDLE);
 		return False;
 	}
@@ -345,9 +346,9 @@
 ****************************************************************************/
 
 bool check_fsp(connection_struct *conn, struct smb_request *req,
-	       files_struct *fsp)
+	       files_struct *fsp, struct current_user *user)
 {
-	if (!check_fsp_open(conn, req, fsp)) {
+	if (!check_fsp_open(conn, req, fsp, user)) {
 		return False;
 	}
 	if ((fsp)->is_directory) {
@@ -363,45 +364,14 @@
 }
 
 /****************************************************************************
- Check if we have a correct fsp pointing to a quota fake file. Replacement for
- the CHECK_NTQUOTA_HANDLE_OK macro.
-****************************************************************************/
-
-bool check_fsp_ntquota_handle(connection_struct *conn, struct smb_request *req,
-			      files_struct *fsp)
-{
-	if (!check_fsp_open(conn, req, fsp)) {
-		return false;
-	}
-
-	if (fsp->is_directory) {
-		return false;
-	}
-
-	if (fsp->fake_file_handle == NULL) {
-		return false;
-	}
-
-	if (fsp->fake_file_handle->type != FAKE_FILE_TYPE_QUOTA) {
-		return false;
-	}
-
-	if (fsp->fake_file_handle->private_data == NULL) {
-		return false;
-	}
-
-	return true;
-}
-
-/****************************************************************************
  Check if we have a correct fsp. Replacement for the FSP_BELONGS_CONN macro
 ****************************************************************************/
 
 bool fsp_belongs_conn(connection_struct *conn, struct smb_request *req,
-		      files_struct *fsp)
+		      files_struct *fsp, struct current_user *user)
 {
 	if ((fsp) && (conn) && ((conn)==(fsp)->conn)
-	    && (req->vuid == (fsp)->vuid)) {
+	    && (current_user.vuid==(fsp)->vuid)) {
 		return True;
 	}
 
@@ -2131,7 +2101,7 @@
 		return;
 	}
 
-	status = check_name(conn, fname);
+	status = check_name(conn, CONST_DISCARD(char *,fname));
 	if (!NT_STATUS_IS_OK(status)) {
 		reply_nterror(req, status);
 		END_PROFILE(SMBctemp);
@@ -2358,13 +2328,13 @@
 		 &sbuf);		/* psbuf */
 
 	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(10, ("create_file_unixpath failed: %s\n",
+		DEBUG(10, ("open_file_ntcreate failed: %s\n",
 			   nt_errstr(status)));
 		return status;
 	}
 
 	/* The set is across all open files on this dev/inode pair. */
-	if (!set_delete_on_close(fsp, True, &conn->server_info->utok)) {
+	if (!set_delete_on_close(fsp, True, &current_user.ut)) {
 		close_file(fsp, NORMAL_CLOSE);
 		return NT_STATUS_ACCESS_DENIED;
 	}
@@ -2819,7 +2789,7 @@
 	 */
 
 	if (!fsp || !conn || conn != fsp->conn ||
-			req->vuid != fsp->vuid ||
+			current_user.vuid != fsp->vuid ||
 			fsp->is_directory || fsp->fh->fd == -1) {
 		/*
 		 * fsp could be NULL here so use the value from the packet. JRA.
@@ -2954,7 +2924,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBlockread);
 		return;
 	}
@@ -3062,7 +3032,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBread);
 		return;
 	}
@@ -3318,7 +3288,7 @@
 		return;
 	}
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBreadX);
 		return;
 	}
@@ -3456,7 +3426,7 @@
 	}
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		error_to_writebrawerr(req);
 		END_PROFILE(SMBwritebraw);
 		return;
@@ -3662,7 +3632,7 @@
 	
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBwriteunlock);
 		return;
 	}
@@ -3769,7 +3739,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBwrite);
 		return;
 	}
@@ -4001,7 +3971,7 @@
 	startpos = IVAL_TO_SMB_OFF_T(req->inbuf,smb_vwv3);
 	write_through = BITSETW(req->inbuf+smb_vwv7,0);
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBwriteX);
 		return;
 	}
@@ -4120,7 +4090,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		return;
 	}
 
@@ -4206,7 +4176,7 @@
 	fnum = SVAL(req->inbuf,smb_vwv0);
 	fsp = file_fsp(fnum);
 
-	if ((fnum != 0xFFFF) && !check_fsp(conn, req, fsp)) {
+	if ((fnum != 0xFFFF) && !check_fsp(conn, req, fsp, &current_user)) {
 		return;
 	}
 	
@@ -4279,7 +4249,7 @@
 	 * We can only use CHECK_FSP if we know it's not a directory.
 	 */
 
-	if(!fsp || (fsp->conn != conn) || (fsp->vuid != req->vuid)) {
+	if(!fsp || (fsp->conn != conn) || (fsp->vuid != current_user.vuid)) {
 		reply_doserror(req, ERRDOS, ERRbadfid);
 		END_PROFILE(SMBclose);
 		return;
@@ -4353,7 +4323,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBwriteclose);
 		return;
 	}
@@ -4440,7 +4410,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBlock);
 		return;
 	}
@@ -4499,7 +4469,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBunlock);
 		return;
 	}
@@ -4645,7 +4615,7 @@
 	}
 
 	/* Open for exclusive use, write only. */
-	status = print_fsp_open(conn, NULL, req->vuid, &fsp);
+	status = print_fsp_open(conn, NULL, &fsp);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		reply_nterror(req, status);
@@ -4683,7 +4653,7 @@
 
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBsplclose);
                 return;
         }
@@ -4825,7 +4795,7 @@
   
 	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBsplwr);
                 return;
         }
@@ -5586,10 +5556,10 @@
 		DEBUG(3,("rename_internals_fsp: succeeded doing rename on %s -> %s\n",
 			fsp->fsp_name,newname));
 
-		notify_rename(conn, fsp->is_directory, fsp->fsp_name, newname);
-
 		rename_open_files(conn, lck, newname);
 
+		notify_rename(conn, fsp->is_directory, fsp->fsp_name, newname);
+
 		/*
 		 * A rename acts as a new file create w.r.t. allowing an initial delete
 		 * on close, probably because in Windows there is a new handle to the
@@ -6659,7 +6629,7 @@
 	lock_timeout = IVAL(req->inbuf,smb_vwv4);
 	large_file_format = (locktype & LOCKING_ANDX_LARGE_FILES)?True:False;
 
-	if (!check_fsp(conn, req, fsp)) {
+	if (!check_fsp(conn, req, fsp, &current_user)) {
 		END_PROFILE(SMBlockingX);
 		return;
 	}

Modified: branches/samba/upstream/source/smbd/sec_ctx.c
===================================================================
--- branches/samba/upstream/source/smbd/sec_ctx.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/sec_ctx.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -145,7 +145,7 @@
  Get the list of current groups.
 ****************************************************************************/
 
-static int get_current_groups(gid_t gid, size_t *p_ngroups, gid_t **p_groups)
+static int get_current_groups(gid_t gid, int *p_ngroups, gid_t **p_groups)
 {
 	int i;
 	gid_t grp;

Modified: branches/samba/upstream/source/smbd/server.c
===================================================================
--- branches/samba/upstream/source/smbd/server.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/server.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -90,13 +90,10 @@
 {
 	static struct messaging_context *ctx;
 
-	if (ctx == NULL) {
-		ctx = messaging_init(NULL, server_id_self(),
-				     smbd_event_context());
+	if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
+					   smbd_event_context()))) {
+		smb_panic("Could not init smbd messaging context");
 	}
-	if (ctx == NULL) {
-		DEBUG(0, ("Could not init smbd messaging context.\n"));
-	}
 	return ctx;
 }
 
@@ -296,7 +293,6 @@
 		/* a child terminated uncleanly so tickle all processes to see 
 		   if they can grab any of the pending locks
 		*/
-		DEBUG(3,(__location__ " Unclean shutdown of pid %u\n", pid));
 		messaging_send_buf(smbd_messaging_context(), procid_self(), 
 				   MSG_SMB_BRL_VALIDATE, NULL, 0);
 		message_send_all(smbd_messaging_context(), 
@@ -575,12 +571,6 @@
 			   MSG_SMB_STAT_CACHE_DELETE, smb_stat_cache_delete);
 	brl_register_msgs(smbd_messaging_context());
 
-#ifdef CLUSTER_SUPPORT
-	if (lp_clustering()) {
-		ctdbd_register_reconfigure(messaging_ctdbd_connection());
-	}
-#endif
-
 #ifdef DEVELOPER
 	messaging_register(smbd_messaging_context(), NULL,
 			   MSG_SMB_INJECT_FAULT, msg_inject_fault);
@@ -894,7 +884,6 @@
 	const char *const reason)
 {
 	static int firsttime=1;
-	bool had_open_conn;
 
 	if (!firsttime)
 		exit(0);
@@ -906,7 +895,7 @@
 		(negprot_global_auth_context->free)(&negprot_global_auth_context);
 	}
 
-	had_open_conn = conn_close_all();
+	conn_close_all();
 
 	invalidate_all_vuids();
 
@@ -956,15 +945,7 @@
 			(reason ? reason : "normal exit")));
 	}
 
-	/* if we had any open SMB connections when we exited then we
-	   need to tell the parent smbd so that it can trigger a retry
-	   of any locks we may have been holding or open files we were
-	   blocking */
-	if (had_open_conn) {
-		exit(1);
-	} else {
-		exit(0);
-	}
+	exit(0);
 }
 
 void exit_server(const char *const explanation)
@@ -998,9 +979,7 @@
 		   away */
 		DEBUG(0,("Got release IP message for our IP %s - exiting immediately\n",
 			ip));
-		/* note we must exit with non-zero status so the unclean handler gets
-		   called in the parent, so that the brl database is tickled */
-		_exit(1);
+		_exit(0);
 	}
 }
 
@@ -1116,6 +1095,8 @@
 
 	TimeInit();
 
+	db_tdb2_setup_messaging(NULL, false);
+
 #ifdef HAVE_SET_AUTH_PARAMETERS
 	set_auth_parameters(argc,argv);
 #endif
@@ -1247,6 +1228,11 @@
 	if (smbd_messaging_context() == NULL)
 		exit(1);
 
+	/*
+	 * Do this before reload_services.
+	 */
+	db_tdb2_setup_messaging(smbd_messaging_context(), true);
+
 	if (!reload_services(False))
 		return(-1);	
 

Modified: branches/samba/upstream/source/smbd/service.c
===================================================================
--- branches/samba/upstream/source/smbd/service.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/service.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -523,6 +523,31 @@
 	return NT_STATUS_OK;
 }
 
+static NTSTATUS find_forced_user(connection_struct *conn, bool vuser_is_guest, fstring username)
+{
+	int snum = conn->params->service;
+	char *fuser, *found_username;
+	NTSTATUS result;
+
+	if (!(fuser = talloc_string_sub(conn->mem_ctx, lp_force_user(snum), "%S",
+					lp_servicename(snum)))) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	result = create_token_from_username(conn->mem_ctx, fuser, vuser_is_guest,
+					    &conn->uid, &conn->gid, &found_username,
+					    &conn->nt_user_token);
+	if (!NT_STATUS_IS_OK(result)) {
+		return result;
+	}
+
+	fstrcpy(username, found_username);
+
+	TALLOC_FREE(fuser);
+	TALLOC_FREE(found_username);
+	return NT_STATUS_OK;
+}
+
 /*
  * Go through lookup_name etc to find the force'd group.  
  *
@@ -536,14 +561,23 @@
 				  gid_t *pgid)
 {
 	NTSTATUS result = NT_STATUS_NO_SUCH_GROUP;
-	TALLOC_CTX *frame = talloc_stackframe();
+	TALLOC_CTX *mem_ctx;
 	DOM_SID group_sid;
 	enum lsa_SidType type;
 	char *groupname;
 	bool user_must_be_member = False;
 	gid_t gid;
 
-	groupname = talloc_strdup(talloc_tos(), lp_force_group(snum));
+	ZERO_STRUCTP(pgroup_sid);
+	*pgid = (gid_t)-1;
+
+	mem_ctx = talloc_new(NULL);
+	if (mem_ctx == NULL) {
+		DEBUG(0, ("talloc_new failed\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	groupname = talloc_strdup(mem_ctx, lp_force_group(snum));
 	if (groupname == NULL) {
 		DEBUG(1, ("talloc_strdup failed\n"));
 		result = NT_STATUS_NO_MEMORY;
@@ -555,15 +589,10 @@
 		groupname += 1;
 	}
 
-	groupname = talloc_string_sub(talloc_tos(), groupname,
+	groupname = talloc_string_sub(mem_ctx, groupname,
 				      "%S", lp_servicename(snum));
-	if (groupname == NULL) {
-		DEBUG(1, ("talloc_string_sub failed\n"));
-		result = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
 
-	if (!lookup_name_smbconf(talloc_tos(), groupname,
+	if (!lookup_name_smbconf(mem_ctx, groupname,
 			 LOOKUP_NAME_ALL|LOOKUP_NAME_GROUP,
 			 NULL, NULL, &group_sid, &type)) {
 		DEBUG(10, ("lookup_name_smbconf(%s) failed\n",
@@ -612,88 +641,11 @@
 
 	result = NT_STATUS_OK;
  done:
-	TALLOC_FREE(frame);
+	TALLOC_FREE(mem_ctx);
 	return result;
 }
 
 /****************************************************************************
-  Create an auth_serversupplied_info structure for a connection_struct
-****************************************************************************/
-
-static NTSTATUS create_connection_server_info(TALLOC_CTX *mem_ctx, int snum,
-                                              struct auth_serversupplied_info *vuid_serverinfo,
-					      DATA_BLOB password,
-                                              struct auth_serversupplied_info **presult)
-{
-        if (lp_guest_only(snum)) {
-                return make_server_info_guest(mem_ctx, presult);
-        }
-
-        if (vuid_serverinfo != NULL) {
-
-		struct auth_serversupplied_info *result;
-
-                /*
-                 * This is the normal security != share case where we have a
-                 * valid vuid from the session setup.                 */
-
-                if (vuid_serverinfo->guest) {
-                        if (!lp_guest_ok(snum)) {
-                                DEBUG(2, ("guest user (from session setup) "
-                                          "not permitted to access this share "
-                                          "(%s)\n", lp_servicename(snum)));
-                                return NT_STATUS_ACCESS_DENIED;
-                        }
-                } else {
-                        if (!user_ok_token(vuid_serverinfo->unix_name,
-					   pdb_get_domain(vuid_serverinfo->sam_account),
-                                           vuid_serverinfo->ptok, snum)) {
-                                DEBUG(2, ("user '%s' (from session setup) not "
-                                          "permitted to access this share "
-                                          "(%s)\n",
-                                          vuid_serverinfo->unix_name,
-                                          lp_servicename(snum)));
-                                return NT_STATUS_ACCESS_DENIED;
-                        }
-                }
-
-                result = copy_serverinfo(mem_ctx, vuid_serverinfo);
-		if (result == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
-
-		*presult = result;
-		return NT_STATUS_OK;
-        }
-
-        if (lp_security() == SEC_SHARE) {
-
-                fstring user;
-		bool guest;
-
-                /* add the sharename as a possible user name if we
-                   are in share mode security */
-
-                add_session_user(lp_servicename(snum));
-
-                /* shall we let them in? */
-
-                if (!authorise_login(snum,user,password,&guest)) {
-                        DEBUG( 2, ( "Invalid username/password for [%s]\n",
-                                    lp_servicename(snum)) );
-			return NT_STATUS_WRONG_PASSWORD;
-                }
-
-		return make_serverinfo_from_username(mem_ctx, user, guest,
-						     presult);
-        }
-
-	DEBUG(0, ("invalid VUID (vuser) but not in security=share\n"));
-	return NT_STATUS_ACCESS_DENIED;
-}
-
-
-/****************************************************************************
   Make a connection, given the snum to connect to, and the vuser of the
   connecting user if appropriate.
 ****************************************************************************/
@@ -701,50 +653,133 @@
 static connection_struct *make_connection_snum(int snum, user_struct *vuser,
 					       DATA_BLOB password, 
 					       const char *pdev,
-					       NTSTATUS *pstatus)
+					       NTSTATUS *status)
 {
+	struct passwd *pass = NULL;
+	bool guest = False;
 	connection_struct *conn;
 	SMB_STRUCT_STAT st;
+	fstring user;
 	fstring dev;
 	int ret;
 	char addr[INET6_ADDRSTRLEN];
 	bool on_err_call_dis_hook = false;
-	NTSTATUS status;
 
+	*user = 0;
 	fstrcpy(dev, pdev);
 	SET_STAT_INVALID(st);
 
-	if (NT_STATUS_IS_ERR(*pstatus = share_sanity_checks(snum, dev))) {
+	if (NT_STATUS_IS_ERR(*status = share_sanity_checks(snum, dev))) {
 		return NULL;
 	}	
 
 	conn = conn_new();
 	if (!conn) {
 		DEBUG(0,("Couldn't find free connection.\n"));
-		*pstatus = NT_STATUS_INSUFFICIENT_RESOURCES;
+		*status = NT_STATUS_INSUFFICIENT_RESOURCES;
 		return NULL;
 	}
 
 	conn->params->service = snum;
+	conn->nt_user_token = NULL;
 
-	status = create_connection_server_info(
-		conn, snum, vuser ? vuser->server_info : NULL, password,
-		&conn->server_info);
+	if (lp_guest_only(snum)) {
+		const char *guestname = lp_guestaccount();
+		NTSTATUS status2;
+		char *found_username = NULL;
 
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0, ("create_connection_server_info failed: %s\n",
-			  nt_errstr(status)));
-		*pstatus = status;
+		guest = True;
+		pass = getpwnam_alloc(NULL, guestname);
+		if (!pass) {
+			DEBUG(0,("make_connection_snum: Invalid guest "
+				 "account %s??\n",guestname));
+			conn_free(conn);
+			*status = NT_STATUS_NO_SUCH_USER;
+			return NULL;
+		}
+		status2 = create_token_from_username(conn->mem_ctx, pass->pw_name, True,
+						     &conn->uid, &conn->gid,
+						     &found_username,
+						     &conn->nt_user_token);
+		if (!NT_STATUS_IS_OK(status2)) {
+			TALLOC_FREE(pass);
+			conn_free(conn);
+			*status = status2;
+			return NULL;
+		}
+		fstrcpy(user, found_username);
+		string_set(&conn->user,user);
+		conn->force_user = True;
+		TALLOC_FREE(found_username);
+		TALLOC_FREE(pass);
+		DEBUG(3,("Guest only user %s\n",user));
+	} else if (vuser) {
+		if (vuser->guest) {
+			if (!lp_guest_ok(snum)) {
+				DEBUG(2, ("guest user (from session setup) "
+					  "not permitted to access this share "
+					  "(%s)\n", lp_servicename(snum)));
+				      conn_free(conn);
+				      *status = NT_STATUS_ACCESS_DENIED;
+				      return NULL;
+			}
+		} else {
+			if (!user_ok_token(vuser->user.unix_name,
+					   vuser->nt_user_token, snum)) {
+				DEBUG(2, ("user '%s' (from session setup) not "
+					  "permitted to access this share "
+					  "(%s)\n", vuser->user.unix_name,
+					  lp_servicename(snum)));
+				conn_free(conn);
+				*status = NT_STATUS_ACCESS_DENIED;
+				return NULL;
+			}
+		}
+		conn->vuid = vuser->vuid;
+		conn->uid = vuser->uid;
+		conn->gid = vuser->gid;
+		string_set(&conn->user,vuser->user.unix_name);
+		fstrcpy(user,vuser->user.unix_name);
+		guest = vuser->guest; 
+	} else if (lp_security() == SEC_SHARE) {
+		NTSTATUS status2;
+		char *found_username = NULL;
+
+		/* add it as a possible user name if we 
+		   are in share mode security */
+		add_session_user(lp_servicename(snum));
+		/* shall we let them in? */
+		if (!authorise_login(snum,user,password,&guest)) {
+			DEBUG( 2, ( "Invalid username/password for [%s]\n", 
+				    lp_servicename(snum)) );
+			conn_free(conn);
+			*status = NT_STATUS_WRONG_PASSWORD;
+			return NULL;
+		}
+		pass = Get_Pwnam_alloc(talloc_tos(), user);
+		status2 = create_token_from_username(conn->mem_ctx, pass->pw_name, True,
+						     &conn->uid, &conn->gid,
+						     &found_username,
+						     &conn->nt_user_token);
+		TALLOC_FREE(pass);
+		if (!NT_STATUS_IS_OK(status2)) {
+			conn_free(conn);
+			*status = status2;
+			return NULL;
+		}
+		fstrcpy(user, found_username);
+		string_set(&conn->user,user);
+		TALLOC_FREE(found_username);
+		conn->force_user = True;
+	} else {
+		DEBUG(0, ("invalid VUID (vuser) but not in security=share\n"));
 		conn_free(conn);
+		*status = NT_STATUS_ACCESS_DENIED;
 		return NULL;
 	}
 
-	if ((lp_guest_only(snum)) || (lp_security() == SEC_SHARE)) {
-		conn->force_user = true;
-	}
+	add_session_user(user);
 
-	add_session_user(conn->server_info->unix_name);
-
 	safe_strcpy(conn->client_address,
 			client_addr(get_client_fd(),addr,sizeof(addr)), 
 			sizeof(conn->client_address)-1);
@@ -775,84 +810,126 @@
 	conn->veto_oplock_list = NULL;
 	conn->aio_write_behind_list = NULL;
 	string_set(&conn->dirpath,"");
+	string_set(&conn->user,user);
 
 	conn->read_only = lp_readonly(SNUM(conn));
 	conn->admin_user = False;
 
+	/*
+	 * If force user is true, then store the given userid and the gid of
+	 * the user we're forcing.
+	 * For auxiliary groups see below.
+	 */
+	
 	if (*lp_force_user(snum)) {
+		NTSTATUS status2;
 
-		/*
-		 * Replace conn->server_info with a completely faked up one
-		 * from the username we are forced into :-)
-		 */
-
-		char *fuser;
-		struct auth_serversupplied_info *forced_serverinfo;
-
-		fuser = talloc_string_sub(conn, lp_force_user(snum), "%S",
-					  lp_servicename(snum));
-		if (fuser == NULL) {
+		status2 = find_forced_user(conn,
+				(vuser != NULL) && vuser->guest,
+				user);
+		if (!NT_STATUS_IS_OK(status2)) {
 			conn_free(conn);
-			*pstatus = NT_STATUS_NO_MEMORY;
+			*status = status2;
 			return NULL;
 		}
-
-		status = make_serverinfo_from_username(
-			conn, fuser, conn->server_info->guest,
-			&forced_serverinfo);
-		if (!NT_STATUS_IS_OK(status)) {
-			conn_free(conn);
-			*pstatus = status;
-			return NULL;
-		}
-
-		TALLOC_FREE(conn->server_info);
-		conn->server_info = forced_serverinfo;
-
+		string_set(&conn->user,user);
 		conn->force_user = True;
-		DEBUG(3,("Forced user %s\n", fuser));
+		DEBUG(3,("Forced user %s\n",user));	  
 	}
 
 	/*
 	 * If force group is true, then override
 	 * any groupid stored for the connecting user.
 	 */
-
+	
 	if (*lp_force_group(snum)) {
+		NTSTATUS status2;
+		DOM_SID group_sid;
 
-		status = find_forced_group(
-			conn->force_user, snum, conn->server_info->unix_name,
-			&conn->server_info->ptok->user_sids[1],
-			&conn->server_info->utok.gid);
-
-		if (!NT_STATUS_IS_OK(status)) {
+		status2 = find_forced_group(conn->force_user,
+					    snum, user,
+					    &group_sid, &conn->gid);
+		if (!NT_STATUS_IS_OK(status2)) {
 			conn_free(conn);
-			*pstatus = status;
+			*status = status2;
 			return NULL;
 		}
+
+		if ((conn->nt_user_token == NULL) && (vuser != NULL)) {
+
+			/* Not force user and not security=share, but force
+			 * group. vuser has a token to copy */
+			
+			conn->nt_user_token = dup_nt_token(
+				NULL, vuser->nt_user_token);
+			if (conn->nt_user_token == NULL) {
+				DEBUG(0, ("dup_nt_token failed\n"));
+				conn_free(conn);
+				*status = NT_STATUS_NO_MEMORY;
+				return NULL;
+			}
+		}
+
+		/* If conn->nt_user_token is still NULL, we have
+		 * security=share. This means ignore the SID, as we had no
+		 * vuser to copy from */
+
+		if (conn->nt_user_token != NULL) {
+			/* Overwrite the primary group sid */
+			sid_copy(&conn->nt_user_token->user_sids[1],
+				 &group_sid);
+
+		}
+		conn->force_group = True;
 	}
 
-	conn->vuid = (vuser != NULL) ? vuser->vuid : UID_FIELD_INVALID;
+	if (conn->nt_user_token != NULL) {
+		size_t i;
 
+		/* We have a share-specific token from force [user|group].
+		 * This means we have to create the list of unix groups from
+		 * the list of sids. */
+
+		conn->ngroups = 0;
+		conn->groups = NULL;
+
+		for (i=0; i<conn->nt_user_token->num_sids; i++) {
+			gid_t gid;
+			DOM_SID *sid = &conn->nt_user_token->user_sids[i];
+
+			if (!sid_to_gid(sid, &gid)) {
+				DEBUG(10, ("Could not convert SID %s to gid, "
+					   "ignoring it\n",
+					   sid_string_dbg(sid)));
+				continue;
+			}
+			if (!add_gid_to_array_unique(conn->mem_ctx, gid, &conn->groups,
+						&conn->ngroups)) {
+				DEBUG(0, ("add_gid_to_array_unique failed\n"));
+				conn_free(conn);
+				*status = NT_STATUS_NO_MEMORY;
+				return NULL;
+			}
+		}
+	}
+
 	{
 		char *s = talloc_sub_advanced(talloc_tos(),
-					lp_servicename(SNUM(conn)),
-					conn->server_info->unix_name,
-					conn->connectpath,
-					conn->server_info->utok.gid,
-					conn->server_info->sanitized_username,
-					pdb_get_domain(conn->server_info->sam_account),
+					lp_servicename(SNUM(conn)), conn->user,
+					conn->connectpath, conn->gid,
+					get_current_username(),
+					current_user_info.domain,
 					lp_pathname(snum));
 		if (!s) {
 			conn_free(conn);
-			*pstatus = NT_STATUS_NO_MEMORY;
+			*status = NT_STATUS_NO_MEMORY;
 			return NULL;
 		}
 
 		if (!set_conn_connectpath(conn,s)) {
 			TALLOC_FREE(s);
 			conn_free(conn);
-			*pstatus = NT_STATUS_NO_MEMORY;
+			*status = NT_STATUS_NO_MEMORY;
 			return NULL;
 		}
 		DEBUG(3,("Connect path is '%s' for service [%s]\n",s,
@@ -869,13 +946,32 @@
 
 	{
 		bool can_write = False;
+		NT_USER_TOKEN *token = conn->nt_user_token ?
+			conn->nt_user_token :
+			(vuser ? vuser->nt_user_token : NULL);
 
-		can_write = share_access_check(conn->server_info->ptok,
-					       lp_servicename(snum),
-					       FILE_WRITE_DATA);
+		/*
+		 * I don't believe this can happen. But the
+		 * logic above is convoluted enough to confuse
+		 * automated checkers, so be sure. JRA.
+		 */
 
+		if (token == NULL) {
+			DEBUG(0,("make_connection: connection to %s "
+				 "denied due to missing "
+				 "NT token.\n",
+				  lp_servicename(snum)));
+			conn_free(conn);
+			*status = NT_STATUS_ACCESS_DENIED;
+			return NULL;
+		}
+
+		can_write = share_access_check(token,
+						    lp_servicename(snum),
+						    FILE_WRITE_DATA);
+
 		if (!can_write) {
-			if (!share_access_check(conn->server_info->ptok,
+			if (!share_access_check(token,
 						lp_servicename(snum),
 						FILE_READ_DATA)) {
 				/* No access, read or write. */
@@ -884,7 +980,7 @@
 					 "descriptor.\n",
 					  lp_servicename(snum)));
 				conn_free(conn);
-				*pstatus = NT_STATUS_ACCESS_DENIED;
+				*status = NT_STATUS_ACCESS_DENIED;
 				return NULL;
 			} else {
 				conn->read_only = True;
@@ -897,7 +993,7 @@
 		DEBUG(0, ("vfs_init failed for service %s\n",
 			  lp_servicename(snum)));
 		conn_free(conn);
-		*pstatus = NT_STATUS_BAD_NETWORK_NAME;
+		*status = NT_STATUS_BAD_NETWORK_NAME;
 		return NULL;
 	}
 
@@ -915,13 +1011,13 @@
 				lp_servicename(snum),
 				conn->connectpath));
 			conn_free(conn);
-			*pstatus = NT_STATUS_BAD_NETWORK_NAME;
+			*status = NT_STATUS_BAD_NETWORK_NAME;
 			return NULL;
 		}
 	}
 
 	if ((!conn->printer) && (!conn->ipc)) {
-		conn->notify_ctx = notify_init(conn, server_id_self(),
+		conn->notify_ctx = notify_init(conn->mem_ctx, server_id_self(),
 					       smbd_messaging_context(),
 					       smbd_event_context(),
 					       conn);
@@ -939,7 +1035,7 @@
 		DEBUG(1, ("Max connections (%d) exceeded for %s\n",
 			  lp_max_connections(snum), lp_servicename(snum)));
 		conn_free(conn);
-		*pstatus = NT_STATUS_INSUFFICIENT_RESOURCES;
+		*status = NT_STATUS_INSUFFICIENT_RESOURCES;
 		return NULL;
 	}  
 
@@ -949,7 +1045,7 @@
 	if (!claim_connection(conn, lp_servicename(snum), 0)) {
 		DEBUG(1, ("Could not store connections entry\n"));
 		conn_free(conn);
-		*pstatus = NT_STATUS_INTERNAL_DB_ERROR;
+		*status = NT_STATUS_INTERNAL_DB_ERROR;
 		return NULL;
 	}  
 
@@ -958,12 +1054,10 @@
 	/* execute any "root preexec = " line */
 	if (*lp_rootpreexec(snum)) {
 		char *cmd = talloc_sub_advanced(talloc_tos(),
-					lp_servicename(SNUM(conn)),
-					conn->server_info->unix_name,
-					conn->connectpath,
-					conn->server_info->utok.gid,
-					conn->server_info->sanitized_username,
-					pdb_get_domain(conn->server_info->sam_account),
+					lp_servicename(SNUM(conn)), conn->user,
+					conn->connectpath, conn->gid,
+					get_current_username(),
+					current_user_info.domain,
 					lp_rootpreexec(snum));
 		DEBUG(5,("cmd=%s\n",cmd));
 		ret = smbrun(cmd,NULL);
@@ -973,7 +1067,7 @@
 				 "connection\n", ret));
 			yield_connection(conn, lp_servicename(snum));
 			conn_free(conn);
-			*pstatus = NT_STATUS_ACCESS_DENIED;
+			*status = NT_STATUS_ACCESS_DENIED;
 			return NULL;
 		}
 	}
@@ -984,7 +1078,7 @@
 		DEBUG(0,("Can't become connected user!\n"));
 		yield_connection(conn, lp_servicename(snum));
 		conn_free(conn);
-		*pstatus = NT_STATUS_LOGON_FAILURE;
+		*status = NT_STATUS_LOGON_FAILURE;
 		return NULL;
 	}
 
@@ -997,19 +1091,17 @@
 	/* execute any "preexec = " line */
 	if (*lp_preexec(snum)) {
 		char *cmd = talloc_sub_advanced(talloc_tos(),
-					lp_servicename(SNUM(conn)),
-					conn->server_info->unix_name,
-					conn->connectpath,
-					conn->server_info->utok.gid,
-					conn->server_info->sanitized_username,
-					pdb_get_domain(conn->server_info->sam_account),
+					lp_servicename(SNUM(conn)), conn->user,
+					conn->connectpath, conn->gid,
+					get_current_username(),
+					current_user_info.domain,
 					lp_preexec(snum));
 		ret = smbrun(cmd,NULL);
 		TALLOC_FREE(cmd);
 		if (ret != 0 && lp_preexec_close(snum)) {
 			DEBUG(1,("preexec gave %d - failing connection\n",
 				 ret));
-			*pstatus = NT_STATUS_ACCESS_DENIED;
+			*status = NT_STATUS_ACCESS_DENIED;
 			goto err_root_exit;
 		}
 	}
@@ -1033,10 +1125,9 @@
 	   to allow any filesystems needing user credentials to initialize
 	   themselves. */
 
-	if (SMB_VFS_CONNECT(conn, lp_servicename(snum),
-			    conn->server_info->unix_name) < 0) {
+	if (SMB_VFS_CONNECT(conn, lp_servicename(snum), user) < 0) {
 		DEBUG(0,("make_connection: VFS make connection failed!\n"));
-		*pstatus = NT_STATUS_UNSUCCESSFUL;
+		*status = NT_STATUS_UNSUCCESSFUL;
 		goto err_root_exit;
 	}
 
@@ -1060,7 +1151,7 @@
 				 conn->connectpath, lp_servicename(snum),
 				 strerror(errno) ));
 		}
-		*pstatus = NT_STATUS_BAD_NETWORK_NAME;
+		*status = NT_STATUS_BAD_NETWORK_NAME;
 		goto err_root_exit;
 	}
 
@@ -1101,8 +1192,7 @@
 			 conn->client_address );
 		dbgtext( "%s", srv_is_signing_active() ? "signed " : "");
 		dbgtext( "connect to service %s ", lp_servicename(snum) );
-		dbgtext( "initially as user %s ",
-			 conn->server_info->unix_name );
+		dbgtext( "initially as user %s ", user );
 		dbgtext( "(uid=%d, gid=%d) ", (int)geteuid(), (int)getegid() );
 		dbgtext( "(pid %d)\n", (int)sys_getpid() );
 	}
@@ -1143,7 +1233,7 @@
 	 */
 	 
 	if ( conn && vfs_ChDir(conn,conn->connectpath) != 0 ) {
-		DEBUG(0,("make_connection_with_chdir: Can't change "
+		DEBUG(0,("move_driver_to_download_area: Can't change "
 			 "directory to %s for [print$] (%s)\n",
 			 conn->connectpath,strerror(errno)));
 		yield_connection(conn, lp_servicename(SNUM(conn)));
@@ -1322,12 +1412,10 @@
 	if (*lp_postexec(SNUM(conn)) && 
 	    change_to_user(conn, vuid))  {
 		char *cmd = talloc_sub_advanced(talloc_tos(),
-					lp_servicename(SNUM(conn)),
-					conn->server_info->unix_name,
-					conn->connectpath,
-					conn->server_info->utok.gid,
-					conn->server_info->sanitized_username,
-					pdb_get_domain(conn->server_info->sam_account),
+					lp_servicename(SNUM(conn)), conn->user,
+					conn->connectpath, conn->gid,
+					get_current_username(),
+					current_user_info.domain,
 					lp_postexec(SNUM(conn)));
 		smbrun(cmd,NULL);
 		TALLOC_FREE(cmd);
@@ -1338,12 +1426,10 @@
 	/* execute any "root postexec = " line */
 	if (*lp_rootpostexec(SNUM(conn)))  {
 		char *cmd = talloc_sub_advanced(talloc_tos(),
-					lp_servicename(SNUM(conn)),
-					conn->server_info->unix_name,
-					conn->connectpath,
-					conn->server_info->utok.gid,
-					conn->server_info->sanitized_username,
-					pdb_get_domain(conn->server_info->sam_account),
+					lp_servicename(SNUM(conn)), conn->user,
+					conn->connectpath, conn->gid,
+					get_current_username(),
+					current_user_info.domain,
 					lp_rootpostexec(SNUM(conn)));
 		smbrun(cmd,NULL);
 		TALLOC_FREE(cmd);

Modified: branches/samba/upstream/source/smbd/session.c
===================================================================
--- branches/samba/upstream/source/smbd/session.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/session.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -75,7 +75,7 @@
 
 	/* don't register sessions for the guest user - its just too
 	   expensive to go through pam session code for browsing etc */
-	if (vuser->server_info->guest) {
+	if (vuser->guest) {
 		return True;
 	}
 
@@ -164,12 +164,12 @@
 		hostname = client_addr(get_client_fd(),addr,sizeof(addr));
 	}
 
-	fstrcpy(sessionid.username, vuser->server_info->unix_name);
+	fstrcpy(sessionid.username, vuser->user.unix_name);
 	fstrcpy(sessionid.hostname, hostname);
 	sessionid.id_num = i;  /* Only valid for utmp sessions */
 	sessionid.pid = pid;
-	sessionid.uid = vuser->server_info->utok.uid;
-	sessionid.gid = vuser->server_info->utok.gid;
+	sessionid.uid = vuser->uid;
+	sessionid.gid = vuser->gid;
 	fstrcpy(sessionid.remote_machine, get_remote_machine_name());
 	fstrcpy(sessionid.ip_addr_str,
 		client_addr(get_client_fd(),addr,sizeof(addr)));

Modified: branches/samba/upstream/source/smbd/sesssetup.c
===================================================================
--- branches/samba/upstream/source/smbd/sesssetup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/sesssetup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -45,7 +45,7 @@
 		    (lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_PASSWORD)) {
 			DEBUG(3,("No such user %s [%s] - using guest account\n",
 				 user, domain));
-			status = make_server_info_guest(NULL, server_info);
+			status = make_server_info_guest(server_info);
 		}
 	}
 
@@ -53,7 +53,7 @@
 		if (lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_PASSWORD) {
 			DEBUG(3,("Registered username %s for guest access\n",
 				user));
-			status = make_server_info_guest(NULL, server_info);
+			status = make_server_info_guest(server_info);
 		}
 	}
 
@@ -442,7 +442,7 @@
 	if (pw) {
 		/* if a real user check pam account restrictions */
 		/* only really perfomed if "obey pam restriction" is true */
-		/* do this before an eventual mapping to guest occurs */
+		/* do this before an eventual mappign to guest occurs */
 		ret = smb_pam_accountcheck(pw->pw_name);
 		if (  !NT_STATUS_IS_OK(ret)) {
 			DEBUG(1,("PAM account restriction "
@@ -488,7 +488,7 @@
 	reload_services(True);
 
 	if ( map_domainuser_to_guest ) {
-		make_server_info_guest(NULL, &server_info);
+		make_server_info_guest(&server_info);
 	} else if (logon_info) {
 		/* pass the unmapped username here since map_username()
 		   will be called again from inside make_server_info_info3() */
@@ -530,7 +530,9 @@
 		}
 	}
 
-	server_info->nss_token |= username_was_mapped;
+	if (username_was_mapped) {
+		server_info->was_mapped = username_was_mapped;
+	}
 
 	/* we need to build the token for the user. make_server_info_guest()
 	   already does this */
@@ -558,13 +560,9 @@
 	if (!is_partial_auth_vuid(sess_vuid)) {
 		sess_vuid = register_initial_vuid();
 	}
-
-	data_blob_free(&server_info->user_session_key);
-	server_info->user_session_key = session_key;
-	session_key = data_blob_null;
-
 	sess_vuid = register_existing_vuid(sess_vuid,
 					server_info,
+					session_key,
 					nullblob,
 					client);
 
@@ -575,6 +573,7 @@
 
 	if (sess_vuid == UID_FIELD_INVALID ) {
 		ret = NT_STATUS_LOGON_FAILURE;
+		data_blob_free(&session_key);
 	} else {
 		/* current_user_info is changed on new vuid */
 		reload_services( True );
@@ -644,24 +643,23 @@
 
 	if (NT_STATUS_IS_OK(nt_status)) {
 		DATA_BLOB nullblob = data_blob_null;
+		DATA_BLOB session_key =
+			data_blob(
+			(*auth_ntlmssp_state)->ntlmssp_state->session_key.data,
+			(*auth_ntlmssp_state)->ntlmssp_state->session_key.length);
 
 		if (!is_partial_auth_vuid(vuid)) {
+			data_blob_free(&session_key);
 			nt_status = NT_STATUS_LOGON_FAILURE;
 			goto out;
 		}
-
-		data_blob_free(&server_info->user_session_key);
-		server_info->user_session_key =
-			data_blob_talloc(
-			server_info,
-			(*auth_ntlmssp_state)->ntlmssp_state->session_key.data,
-			(*auth_ntlmssp_state)->ntlmssp_state->session_key.length);
-
 		/* register_existing_vuid keeps the server info */
 		if (register_existing_vuid(vuid,
-				server_info, nullblob,
+				server_info,
+				session_key, nullblob,
 				(*auth_ntlmssp_state)->ntlmssp_state->user) !=
 					vuid) {
+			data_blob_free(&session_key);
 			nt_status = NT_STATUS_LOGON_FAILURE;
 			goto out;
 		}
@@ -1352,9 +1350,6 @@
 		return 0;
 	}
 
-	DEBUG(0,("shutdown_other_smbds: shutting down pid %d "
-		 "(IP %s)\n", procid_to_pid(&crec->pid), ip));
-
 	messaging_send(smbd_messaging_context(), crec->pid, MSG_SHUTDOWN,
 		       &data_blob_null);
 	return 0;
@@ -1403,6 +1398,8 @@
 
 	bool doencrypt = global_encrypted_passwords_negotiated;
 
+	DATA_BLOB session_key;
+
 	START_PROFILE(SMBsesssetupX);
 
 	ZERO_STRUCT(lm_resp);
@@ -1753,6 +1750,13 @@
 		}
 	}
 
+	if (server_info->user_session_key.data) {
+		session_key = data_blob(server_info->user_session_key.data,
+				server_info->user_session_key.length);
+	} else {
+		session_key = data_blob_null;
+	}
+
 	data_blob_clear_free(&plaintext_password);
 
 	/* it's ok - setup a reply */
@@ -1771,6 +1775,7 @@
 
 	if (lp_security() == SEC_SHARE) {
 		sess_vuid = UID_FIELD_INVALID;
+		data_blob_free(&session_key);
 		TALLOC_FREE(server_info);
 	} else {
 		/* Ignore the initial vuid. */
@@ -1778,6 +1783,7 @@
 		if (sess_vuid == UID_FIELD_INVALID) {
 			data_blob_free(&nt_resp);
 			data_blob_free(&lm_resp);
+			data_blob_free(&session_key);
 			reply_nterror(req, nt_status_squash(
 					      NT_STATUS_LOGON_FAILURE));
 			END_PROFILE(SMBsesssetupX);
@@ -1786,11 +1792,13 @@
 		/* register_existing_vuid keeps the server info */
 		sess_vuid = register_existing_vuid(sess_vuid,
 					server_info,
+					session_key,
 					nt_resp.data ? nt_resp : lm_resp,
 					sub_user);
 		if (sess_vuid == UID_FIELD_INVALID) {
 			data_blob_free(&nt_resp);
 			data_blob_free(&lm_resp);
+			data_blob_free(&session_key);
 			reply_nterror(req, nt_status_squash(
 					      NT_STATUS_LOGON_FAILURE));
 			END_PROFILE(SMBsesssetupX);

Modified: branches/samba/upstream/source/smbd/share_access.c
===================================================================
--- branches/samba/upstream/source/smbd/share_access.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/share_access.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,6 +27,8 @@
  * + and & may be combined
  */
 
+extern userdom_struct current_user_info;
+
 static bool do_group_checks(const char **name, const char **pattern)
 {
 	if ((*name)[0] == '@') {
@@ -64,7 +66,6 @@
 
 static bool token_contains_name(TALLOC_CTX *mem_ctx,
 				const char *username,
-				const char *domain,
 				const char *sharename,
 				const struct nt_user_token *token,
 				const char *name)
@@ -74,7 +75,8 @@
 	enum lsa_SidType type;
 
 	if (username != NULL) {
-		name = talloc_sub_basic(mem_ctx, username, domain, name);
+		name = talloc_sub_basic(mem_ctx, username,
+					current_user_info.domain, name);
 	}
 	if (sharename != NULL) {
 		name = talloc_string_sub(mem_ctx, name, "%S", sharename);
@@ -150,7 +152,6 @@
  */
 
 bool token_contains_name_in_list(const char *username,
-				 const char *domain,
 				 const char *sharename,
 				 const struct nt_user_token *token,
 				 const char **list)
@@ -166,8 +167,7 @@
 	}
 
 	while (*list != NULL) {
-		if (token_contains_name(mem_ctx, username, domain, sharename,
-					token, *list)) {
+		if (token_contains_name(mem_ctx, username, sharename,token, *list)) {
 			TALLOC_FREE(mem_ctx);
 			return True;
 		}
@@ -191,12 +191,10 @@
  * The other use is the netgroup check when using @group or &group.
  */
 
-bool user_ok_token(const char *username, const char *domain,
-		   struct nt_user_token *token, int snum)
+bool user_ok_token(const char *username, struct nt_user_token *token, int snum)
 {
 	if (lp_invalid_users(snum) != NULL) {
-		if (token_contains_name_in_list(username, domain,
-						lp_servicename(snum),
+		if (token_contains_name_in_list(username, lp_servicename(snum),
 						token,
 						lp_invalid_users(snum))) {
 			DEBUG(10, ("User %s in 'invalid users'\n", username));
@@ -205,7 +203,7 @@
 	}
 
 	if (lp_valid_users(snum) != NULL) {
-		if (!token_contains_name_in_list(username, domain,
+		if (!token_contains_name_in_list(username,
 						 lp_servicename(snum), token,
 						 lp_valid_users(snum))) {
 			DEBUG(10, ("User %s not in 'valid users'\n",
@@ -222,8 +220,7 @@
 			DEBUG(0, ("'only user = yes' and no 'username ='\n"));
 			return False;
 		}
-		if (!token_contains_name_in_list(NULL, domain,
-						 lp_servicename(snum),
+		if (!token_contains_name_in_list(NULL, lp_servicename(snum),
 						 token, list)) {
 			DEBUG(10, ("%s != 'username'\n", username));
 			return False;
@@ -251,13 +248,12 @@
  */
 
 bool is_share_read_only_for_token(const char *username,
-				  const char *domain,
 				  struct nt_user_token *token, int snum)
 {
 	bool result = lp_readonly(snum);
 
 	if (lp_readlist(snum) != NULL) {
-		if (token_contains_name_in_list(username, domain,
+		if (token_contains_name_in_list(username,
 						lp_servicename(snum), token,
 						lp_readlist(snum))) {
 			result = True;
@@ -265,7 +261,7 @@
 	}
 
 	if (lp_writelist(snum) != NULL) {
-		if (token_contains_name_in_list(username, domain,
+		if (token_contains_name_in_list(username,
 						lp_servicename(snum), token,
 						lp_writelist(snum))) {
 			result = False;

Modified: branches/samba/upstream/source/smbd/trans2.c
===================================================================
--- branches/samba/upstream/source/smbd/trans2.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/trans2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,6 +28,7 @@
 extern int max_send;
 extern enum protocol_types Protocol;
 extern uint32 global_client_caps;
+extern struct current_user current_user;
 
 #define get_file_size(sbuf) ((sbuf).st_size)
 #define DIR_ENTRY_SAFETY_MARGIN 4096
@@ -177,7 +178,7 @@
 	char *p;
 	char **names, **tmp;
 	size_t num_names;
-	ssize_t sizeret = -1;
+	ssize_t sizeret;
 
 	if (!lp_ea_support(SNUM(conn))) {
 		*pnames = NULL;
@@ -503,7 +504,7 @@
 static struct ea_list *read_ea_name_list(TALLOC_CTX *ctx, const char *pdata, size_t data_size)
 {
 	struct ea_list *ea_list_head = NULL;
-	size_t converted_size, offset = 0;
+	size_t offset = 0;
 
 	while (offset + 2 < data_size) {
 		struct ea_list *eal = TALLOC_ZERO_P(ctx, struct ea_list);
@@ -521,11 +522,7 @@
 		if (pdata[offset + namelen] != '\0') {
 			return NULL;
 		}
-		if (!pull_ascii_talloc(ctx, &eal->ea.name, &pdata[offset],
-				       &converted_size)) {
-			DEBUG(0,("read_ea_name_list: pull_ascii_talloc "
-				 "failed: %s", strerror(errno)));
-		}
+		pull_ascii_talloc(ctx, &eal->ea.name, &pdata[offset]);
 		if (!eal->ea.name) {
 			return NULL;
 		}
@@ -547,7 +544,6 @@
 	struct ea_list *eal = TALLOC_ZERO_P(ctx, struct ea_list);
 	uint16 val_len;
 	unsigned int namelen;
-	size_t converted_size;
 
 	if (!eal) {
 		return NULL;
@@ -569,10 +565,7 @@
 	if (pdata[namelen + 4] != '\0') {
 		return NULL;
 	}
-	if (!pull_ascii_talloc(ctx, &eal->ea.name, pdata + 4, &converted_size)) {
-		DEBUG(0,("read_ea_list_entry: pull_ascii_talloc failed: %s",
-			 strerror(errno)));
-	}
+	pull_ascii_talloc(ctx, &eal->ea.name, pdata + 4);
 	if (!eal->ea.name) {
 		return NULL;
 	}
@@ -1892,7 +1885,7 @@
 	bool requires_resume_key;
 	int info_level;
 	char *directory = NULL;
-	char *mask = NULL;
+	const char *mask = NULL;
 	char *p;
 	int last_entry_off=0;
 	int dptr_num = -1;
@@ -1980,7 +1973,7 @@
 		return;
 	}
 
-	ntstatus = unix_convert(ctx, conn, directory, True, &directory, &mask, &sbuf);
+	ntstatus = unix_convert(ctx, conn, directory, True, &directory, NULL, &sbuf);
 	if (!NT_STATUS_IS_OK(ntstatus)) {
 		reply_nterror(req, ntstatus);
 		return;
@@ -1996,12 +1989,10 @@
 	if(p == NULL) {
 		/* Windows and OS/2 systems treat search on the root '\' as if it were '\*' */
 		if((directory[0] == '.') && (directory[1] == '\0')) {
-			mask = talloc_strdup(ctx,"*");
-			if (!mask) {
-				reply_nterror(req, NT_STATUS_NO_MEMORY);
-				return;
-			}
+			mask = "*";
 			mask_contains_wcard = True;
+		} else {
+			mask = directory;
 		}
 		directory = talloc_strdup(talloc_tos(), "./");
 		if (!directory) {
@@ -2009,6 +2000,7 @@
 			return;
 		}
 	} else {
+		mask = p+1;
 		*p = 0;
 	}
 
@@ -2840,11 +2832,9 @@
 			fsp.fnum = -1;
 			
 			/* access check */
-			if (conn->server_info->utok.uid != 0) {
-				DEBUG(0,("set_user_quota: access_denied "
-					 "service [%s] user [%s]\n",
-					 lp_servicename(SNUM(conn)),
-					 conn->server_info->unix_name));
+			if (current_user.ut.uid != 0) {
+				DEBUG(0,("set_user_quota: access_denied service [%s] user [%s]\n",
+					lp_servicename(SNUM(conn)),conn->user));
 				reply_doserror(req, ERRDOS, ERRnoaccess);
 				return;
 			}
@@ -3004,7 +2994,7 @@
 			 * in our list of SIDs.
 			 */
 			if (nt_token_check_sid(&global_sid_Builtin_Guests,
-					       conn->server_info->ptok)) {
+				    current_user.nt_user_token)) {
 				flags |= SMB_WHOAMI_GUEST;
 			}
 
@@ -3012,7 +3002,7 @@
 			 * is in our list of SIDs.
 			 */
 			if (nt_token_check_sid(&global_sid_Authenticated_Users,
-					       conn->server_info->ptok)) {
+				    current_user.nt_user_token)) {
 				flags &= ~SMB_WHOAMI_GUEST;
 			}
 
@@ -3028,18 +3018,16 @@
 			    + 4 /* num_sids */
 			    + 4 /* SID bytes */
 			    + 4 /* pad/reserved */
-			    + (conn->server_info->utok.ngroups * 8)
+			    + (current_user.ut.ngroups * 8)
 				/* groups list */
-			    + (conn->server_info->ptok->num_sids *
+			    + (current_user.nt_user_token->num_sids *
 				    SID_MAX_SIZE)
 				/* SID list */;
 
 			SIVAL(pdata, 0, flags);
 			SIVAL(pdata, 4, SMB_WHOAMI_MASK);
-			SBIG_UINT(pdata, 8,
-				  (SMB_BIG_UINT)conn->server_info->utok.uid);
-			SBIG_UINT(pdata, 16,
-				  (SMB_BIG_UINT)conn->server_info->utok.gid);
+			SBIG_UINT(pdata, 8, (SMB_BIG_UINT)current_user.ut.uid);
+			SBIG_UINT(pdata, 16, (SMB_BIG_UINT)current_user.ut.gid);
 
 
 			if (data_len >= max_data_bytes) {
@@ -3054,18 +3042,18 @@
 				break;
 			}
 
-			SIVAL(pdata, 24, conn->server_info->utok.ngroups);
-			SIVAL(pdata, 28, conn->server_info->num_sids);
+			SIVAL(pdata, 24, current_user.ut.ngroups);
+			SIVAL(pdata, 28,
+				current_user.nt_user_token->num_sids);
 
 			/* We walk the SID list twice, but this call is fairly
 			 * infrequent, and I don't expect that it's performance
 			 * sensitive -- jpeach
 			 */
 			for (i = 0, sid_bytes = 0;
-			     i < conn->server_info->ptok->num_sids; ++i) {
+			    i < current_user.nt_user_token->num_sids; ++i) {
 				sid_bytes += ndr_size_dom_sid(
-					&conn->server_info->ptok->user_sids[i],
-					0);
+					&current_user.nt_user_token->user_sids[i], 0);
 			}
 
 			/* SID list byte count */
@@ -3076,21 +3064,20 @@
 			data_len = 40;
 
 			/* GID list */
-			for (i = 0; i < conn->server_info->utok.ngroups; ++i) {
+			for (i = 0; i < current_user.ut.ngroups; ++i) {
 				SBIG_UINT(pdata, data_len,
-					  (SMB_BIG_UINT)conn->server_info->utok.groups[i]);
+					(SMB_BIG_UINT)current_user.ut.groups[i]);
 				data_len += 8;
 			}
 
 			/* SID list */
 			for (i = 0;
-			    i < conn->server_info->ptok->num_sids; ++i) {
+			    i < current_user.nt_user_token->num_sids; ++i) {
 				int sid_len = ndr_size_dom_sid(
-					&conn->server_info->ptok->user_sids[i],
-					0);
+					&current_user.nt_user_token->user_sids[i], 0);
 
 				sid_linearize(pdata + data_len, sid_len,
-				    &conn->server_info->ptok->user_sids[i]);
+				    &current_user.nt_user_token->user_sids[i]);
 				data_len += sid_len;
 			}
 
@@ -3285,11 +3272,9 @@
 				ZERO_STRUCT(quotas);
 
 				/* access check */
-				if ((conn->server_info->utok.uid != 0)
-				    ||!CAN_WRITE(conn)) {
+				if ((current_user.ut.uid != 0)||!CAN_WRITE(conn)) {
 					DEBUG(0,("set_user_quota: access_denied service [%s] user [%s]\n",
-						 lp_servicename(SNUM(conn)),
-						 conn->server_info->unix_name));
+						lp_servicename(SNUM(conn)),conn->user));
 					reply_doserror(req, ERRSRV, ERRaccess);
 					return;
 				}
@@ -3299,9 +3284,7 @@
 				 * --metze 
 				 */
 				fsp = file_fsp(SVAL(params,0));
-
-				if (!check_fsp_ntquota_handle(conn, req,
-							      fsp)) {
+				if (!CHECK_NTQUOTA_HANDLE_OK(fsp,conn)) {
 					DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
 					reply_nterror(
 						req, NT_STATUS_INVALID_HANDLE);
@@ -3686,10 +3669,10 @@
 		size_t namelen;
 		smb_ucs2_t *namebuf;
 
-		if (!push_ucs2_talloc(talloc_tos(), &namebuf,
-				      streams[i].name, &namelen) ||
-		    namelen <= 2)
-		{
+		namelen = push_ucs2_talloc(talloc_tos(), &namebuf,
+					    streams[i].name);
+
+		if ((namelen == (size_t)-1) || (namelen <= 2)) {
 			return NT_STATUS_INVALID_PARAMETER;
 		}
 
@@ -3884,7 +3867,7 @@
 		}
 
 		/* Initial check for valid fsp ptr. */
-		if (!check_fsp_open(conn, req, fsp)) {
+		if (!check_fsp_open(conn, req, fsp, &current_user)) {
 			return;
 		}
 
@@ -3927,7 +3910,7 @@
 			/*
 			 * Original code - this is an open file.
 			 */
-			if (!check_fsp(conn, req, fsp)) {
+			if (!check_fsp(conn, req, fsp, &current_user)) {
 				return;
 			}
 
@@ -5107,8 +5090,7 @@
 	}
 
 	/* The set is across all open files on this dev/inode pair. */
-	if (!set_delete_on_close(fsp, delete_on_close,
-				 &conn->server_info->utok)) {
+	if (!set_delete_on_close(fsp, delete_on_close, &current_user.ut)) {
 		return NT_STATUS_ACCESS_DENIED;
 	}
 	return NT_STATUS_OK;
@@ -5895,7 +5877,7 @@
  	 */
 
 	if (lp_inherit_perms(SNUM(conn))) {
-		inherit_access_posix_acl(
+		inherit_access_acl(
 			conn, parent_dirname(fname),
 			fname, unixmode);
 	}
@@ -6584,7 +6566,7 @@
 
 		fsp = file_fsp(SVAL(params,0));
 		/* Basic check for non-null fsp. */
-	        if (!check_fsp_open(conn, req, fsp)) {
+	        if (!check_fsp_open(conn, req, fsp, &current_user)) {
 			return;
 		}
 		info_level = SVAL(params,2);
@@ -6637,7 +6619,7 @@
 			/*
 			 * Original code - this is an open file.
 			 */
-		        if (!check_fsp(conn, req, fsp)) {
+		        if (!check_fsp(conn, req, fsp, &current_user)) {
 				return;
 			}
 
@@ -7569,7 +7551,7 @@
 		}
 	}
 
-	if ((state = TALLOC_P(conn, struct trans_state)) == NULL) {
+	if ((state = TALLOC_P(conn->mem_ctx, struct trans_state)) == NULL) {
 		DEBUG(0, ("talloc failed\n"));
 		reply_nterror(req, NT_STATUS_NO_MEMORY);
 		END_PROFILE(SMBtrans2);

Modified: branches/samba/upstream/source/smbd/uid.c
===================================================================
--- branches/samba/upstream/source/smbd/uid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/uid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -2,17 +2,17 @@
    Unix SMB/CIFS implementation.
    uid/user handling
    Copyright (C) Andrew Tridgell 1992-1998
-
+   
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -23,6 +23,29 @@
 extern struct current_user current_user;
 
 /****************************************************************************
+ Iterator functions for getting all gid's from current_user.
+****************************************************************************/
+
+gid_t get_current_user_gid_first(int *piterator)
+{
+	*piterator = 0;
+	return current_user.ut.gid;
+}
+
+gid_t get_current_user_gid_next(int *piterator)
+{
+	gid_t ret;
+
+	if (!current_user.ut.groups || *piterator >= current_user.ut.ngroups) {
+		return (gid_t)-1;
+	}
+
+	ret = current_user.ut.groups[*piterator];
+	(*piterator) += 1;
+	return ret;
+}
+
+/****************************************************************************
  Become the guest user without changing the security context stack.
 ****************************************************************************/
 
@@ -36,62 +59,56 @@
 		if (!pass)
 			return(False);
 	}
-
+	
 #ifdef AIX
 	/* MWW: From AIX FAQ patch to WU-ftpd: call initgroups before 
 	   setting IDs */
 	initgroups(pass->pw_name, pass->pw_gid);
 #endif
-
+	
 	set_sec_ctx(pass->pw_uid, pass->pw_gid, 0, NULL, NULL);
-
+	
 	current_user.conn = NULL;
 	current_user.vuid = UID_FIELD_INVALID;
 
 	TALLOC_FREE(pass);
 	pass = NULL;
-
+	
 	return True;
 }
 
 /*******************************************************************
  Check if a username is OK.
-
- This sets up conn->server_info with a copy related to this vuser that
- later code can then mess with.
 ********************************************************************/
 
-static bool check_user_ok(connection_struct *conn, uint16_t vuid,
-			  struct auth_serversupplied_info *server_info,
-			  int snum)
+static bool check_user_ok(connection_struct *conn, user_struct *vuser,int snum)
 {
 	unsigned int i;
 	struct vuid_cache_entry *ent = NULL;
 	bool readonly_share;
-	bool admin_user;
+	NT_USER_TOKEN *token;
 
-	for (i=0; i<VUID_CACHE_SIZE; i++) {
-		ent = &conn->vuid_cache.array[i];
-		if (ent->vuid == vuid) {
-			conn->server_info = ent->server_info;
+	for (i=0;i<conn->vuid_cache.entries && i< VUID_CACHE_SIZE;i++) {
+		if (conn->vuid_cache.array[i].vuid == vuser->vuid) {
+			ent = &conn->vuid_cache.array[i];
 			conn->read_only = ent->read_only;
 			conn->admin_user = ent->admin_user;
 			return(True);
 		}
 	}
 
-	if (!user_ok_token(server_info->unix_name,
-			   pdb_get_domain(server_info->sam_account),
-			   server_info->ptok, snum))
+	if (!user_ok_token(vuser->user.unix_name, vuser->nt_user_token, snum))
 		return(False);
 
-	readonly_share = is_share_read_only_for_token(
-		server_info->unix_name,
-		pdb_get_domain(server_info->sam_account),
-		server_info->ptok, snum);
+	readonly_share = is_share_read_only_for_token(vuser->user.unix_name,
+						      vuser->nt_user_token,
+						      SNUM(conn));
 
+	token = conn->nt_user_token ?
+		conn->nt_user_token : vuser->nt_user_token;
+
 	if (!readonly_share &&
-	    !share_access_check(server_info->ptok, lp_servicename(snum),
+	    !share_access_check(token, lp_servicename(snum),
 				FILE_WRITE_DATA)) {
 		/* smb.conf allows r/w, but the security descriptor denies
 		 * write. Fall back to looking at readonly. */
@@ -100,71 +117,31 @@
 			 "security descriptor\n"));
 	}
 
-	if (!share_access_check(server_info->ptok, lp_servicename(snum),
+	if (!share_access_check(token, lp_servicename(snum),
 				readonly_share ?
 				FILE_READ_DATA : FILE_WRITE_DATA)) {
 		return False;
 	}
 
-	admin_user = token_contains_name_in_list(
-		server_info->unix_name,
-		pdb_get_domain(server_info->sam_account),
-		NULL, server_info->ptok, lp_admin_users(snum));
+	i = conn->vuid_cache.entries % VUID_CACHE_SIZE;
+	if (conn->vuid_cache.entries < VUID_CACHE_SIZE)
+		conn->vuid_cache.entries++;
 
-	ent = &conn->vuid_cache.array[conn->vuid_cache.next_entry];
-
-	conn->vuid_cache.next_entry =
-		(conn->vuid_cache.next_entry + 1) % VUID_CACHE_SIZE;
-
-	TALLOC_FREE(ent->server_info);
-
-	/*
-	 * If force_user was set, all server_info's are based on the same
-	 * username-based faked one.
-	 */
-
-	ent->server_info = copy_serverinfo(
-		conn, conn->force_user ? conn->server_info : server_info);
-
-	if (ent->server_info == NULL) {
-		ent->vuid = UID_FIELD_INVALID;
-		return false;
-	}
-
-	ent->vuid = vuid;
+	ent = &conn->vuid_cache.array[i];
+	ent->vuid = vuser->vuid;
 	ent->read_only = readonly_share;
-	ent->admin_user = admin_user;
 
+	ent->admin_user = token_contains_name_in_list(
+		vuser->user.unix_name, NULL, vuser->nt_user_token,
+		lp_admin_users(SNUM(conn)));
+
 	conn->read_only = ent->read_only;
 	conn->admin_user = ent->admin_user;
-	conn->server_info = ent->server_info;
 
 	return(True);
 }
 
 /****************************************************************************
- Clear a vuid out of the connection's vuid cache
-****************************************************************************/
-
-void conn_clear_vuid_cache(connection_struct *conn, uint16_t vuid)
-{
-	int i;
-
-	for (i=0; i<VUID_CACHE_SIZE; i++) {
-		struct vuid_cache_entry *ent;
-
-		ent = &conn->vuid_cache.array[i];
-
-		if (ent->vuid == vuid) {
-			ent->vuid = UID_FIELD_INVALID;
-			TALLOC_FREE(ent->server_info);
-			ent->read_only = False;
-			ent->admin_user = False;
-		}
-	}
-}
-
-/****************************************************************************
  Become the user of a connection number without changing the security context
  stack, but modify the current_user entries.
 ****************************************************************************/
@@ -176,9 +153,11 @@
 	gid_t gid;
 	uid_t uid;
 	char group_c;
+	bool must_free_token = False;
+	NT_USER_TOKEN *token = NULL;
 	int num_groups = 0;
 	gid_t *group_list = NULL;
-
+	
 	if (!conn) {
 		DEBUG(2,("change_to_user: Connection not open\n"));
 		return(False);
@@ -192,13 +171,13 @@
 	 */
 
 	if((lp_security() == SEC_SHARE) && (current_user.conn == conn) &&
-	   (current_user.ut.uid == conn->server_info->utok.uid)) {
+	   (current_user.ut.uid == conn->uid)) {
 		DEBUG(4,("change_to_user: Skipping user change - already "
 			 "user\n"));
 		return(True);
 	} else if ((current_user.conn == conn) && 
-		   (vuser != NULL) && (current_user.vuid == vuid) &&
-		   (current_user.ut.uid == vuser->server_info->utok.uid)) {
+		   (vuser != 0) && (current_user.vuid == vuid) && 
+		   (current_user.ut.uid == vuser->uid)) {
 		DEBUG(4,("change_to_user: Skipping user change - already "
 			 "user\n"));
 		return(True);
@@ -206,30 +185,26 @@
 
 	snum = SNUM(conn);
 
-	if ((vuser) && !check_user_ok(conn, vuid, vuser->server_info, snum)) {
+	if ((vuser) && !check_user_ok(conn, vuser, snum)) {
 		DEBUG(2,("change_to_user: SMB user %s (unix user %s, vuid %d) "
 			 "not permitted access to share %s.\n",
-			 vuser->server_info->sanitized_username,
-			 vuser->server_info->unix_name, vuid,
+			 vuser->user.smb_name, vuser->user.unix_name, vuid,
 			 lp_servicename(snum)));
 		return False;
 	}
 
-	/*
-	 * conn->server_info is now correctly set up with a copy we can mess
-	 * with for force_group etc.
-	 */
-
 	if (conn->force_user) /* security = share sets this too */ {
-		uid = conn->server_info->utok.uid;
-		gid = conn->server_info->utok.gid;
-	        group_list = conn->server_info->utok.groups;
-		num_groups = conn->server_info->utok.ngroups;
+		uid = conn->uid;
+		gid = conn->gid;
+	        group_list = conn->groups;
+		num_groups = conn->ngroups;
+		token = conn->nt_user_token;
 	} else if (vuser) {
-		uid = conn->admin_user ? 0 : vuser->server_info->utok.uid;
-		gid = conn->server_info->utok.gid;
-		num_groups = conn->server_info->utok.ngroups;
-		group_list  = conn->server_info->utok.groups;
+		uid = conn->admin_user ? 0 : vuser->uid;
+		gid = vuser->gid;
+		num_groups = vuser->n_groups;
+		group_list  = vuser->groups;
+		token = vuser->nt_user_token;
 	} else {
 		DEBUG(2,("change_to_user: Invalid vuid used %d in accessing "
 			 "share %s.\n",vuid, lp_servicename(snum) ));
@@ -244,6 +219,13 @@
 
 	if((group_c = *lp_force_group(snum))) {
 
+		token = dup_nt_token(NULL, token);
+		if (token == NULL) {
+			DEBUG(0, ("dup_nt_token failed\n"));
+			return False;
+		}
+		must_free_token = True;
+
 		if(group_c == '+') {
 
 			/*
@@ -255,21 +237,18 @@
 
 			int i;
 			for (i = 0; i < num_groups; i++) {
-				if (group_list[i]
-				    == conn->server_info->utok.gid) {
-					gid = conn->server_info->utok.gid;
-					gid_to_sid(&conn->server_info->ptok
-						   ->user_sids[1], gid);
+				if (group_list[i] == conn->gid) {
+					gid = conn->gid;
+					gid_to_sid(&token->user_sids[1], gid);
 					break;
 				}
 			}
 		} else {
-			gid = conn->server_info->utok.gid;
-			gid_to_sid(&conn->server_info->ptok->user_sids[1],
-				   gid);
+			gid = conn->gid;
+			gid_to_sid(&token->user_sids[1], gid);
 		}
 	}
-
+	
 	/* Now set current_user since we will immediately also call
 	   set_sec_ctx() */
 
@@ -277,14 +256,21 @@
 	current_user.ut.groups  = group_list;	
 
 	set_sec_ctx(uid, gid, current_user.ut.ngroups, current_user.ut.groups,
-		    conn->server_info->ptok);
+		    token);
 
+	/*
+	 * Free the new token (as set_sec_ctx copies it).
+	 */
+
+	if (must_free_token)
+		TALLOC_FREE(token);
+
 	current_user.conn = conn;
 	current_user.vuid = vuid;
 
 	DEBUG(5,("change_to_user uid=(%d,%d) gid=(%d,%d)\n",
 		 (int)getuid(),(int)geteuid(),(int)getgid(),(int)getegid()));
-
+  
 	return(True);
 }
 
@@ -344,29 +330,29 @@
 	connection_struct *conn;
 	uint16 vuid;
 };
-
+ 
 /* A stack of current_user connection contexts. */
-
+ 
 static struct conn_ctx conn_ctx_stack[MAX_SEC_CTX_DEPTH];
 static int conn_ctx_stack_ndx;
 
 static void push_conn_ctx(void)
 {
 	struct conn_ctx *ctx_p;
-
+ 
 	/* Check we don't overflow our stack */
-
+ 
 	if (conn_ctx_stack_ndx == MAX_SEC_CTX_DEPTH) {
 		DEBUG(0, ("Connection context stack overflow!\n"));
 		smb_panic("Connection context stack overflow!\n");
 	}
-
+ 
 	/* Store previous user context */
 	ctx_p = &conn_ctx_stack[conn_ctx_stack_ndx];
-
+ 
 	ctx_p->conn = current_user.conn;
 	ctx_p->vuid = current_user.vuid;
-
+ 
 	DEBUG(3, ("push_conn_ctx(%u) : conn_ctx_stack_ndx = %d\n",
 		(unsigned int)ctx_p->vuid, conn_ctx_stack_ndx ));
 
@@ -376,7 +362,7 @@
 static void pop_conn_ctx(void)
 {
 	struct conn_ctx *ctx_p;
-
+ 
 	/* Check for stack underflow. */
 
 	if (conn_ctx_stack_ndx == 0) {

Modified: branches/samba/upstream/source/smbd/utmp.c
===================================================================
--- branches/samba/upstream/source/smbd/utmp.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/utmp.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -189,7 +189,7 @@
 # endif
 
 /* BSD-like systems might want "lastlog" support. */
-#if 0 /* *** Not yet implemented */
+/* *** Not yet implemented */
 #ifndef HAVE_PUTUTLINE		/* see "pututline_my()" */
 static const char *ll_pathname =
 # if defined (_PATH_LASTLOG)	/* what other names (if any?) */
@@ -198,7 +198,6 @@
 	"" ;
 # endif	/* _PATH_LASTLOG */
 #endif	/* HAVE_PUTUTLINE */
-#endif
 
 /*
  * Get name of {u,w}tmp{,x} file.

Modified: branches/samba/upstream/source/smbd/vfs.c
===================================================================
--- branches/samba/upstream/source/smbd/vfs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/smbd/vfs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -177,7 +177,7 @@
 		goto fail;
 	}
 
-	handle = TALLOC_ZERO_P(conn, vfs_handle_struct);
+	handle = TALLOC_ZERO_P(conn->mem_ctx,vfs_handle_struct);
 	if (!handle) {
 		DEBUG(0,("TALLOC_ZERO() failed!\n"));
 		goto fail;
@@ -185,7 +185,7 @@
 	memcpy(&handle->vfs_next, &conn->vfs, sizeof(struct vfs_ops));
 	handle->conn = conn;
 	if (module_param) {
-		handle->param = talloc_strdup(conn, module_param);
+		handle->param = talloc_strdup(conn->mem_ctx, module_param);
 	}
 	DLIST_ADD(conn->vfs_handles, handle);
 
@@ -232,7 +232,7 @@
 	}
 
 	ext = (struct vfs_fsp_data *)TALLOC_ZERO(
-		handle->conn, sizeof(struct vfs_fsp_data) + ext_size);
+		handle->conn->mem_ctx, sizeof(struct vfs_fsp_data) + ext_size);
 	if (ext == NULL) {
 		return NULL;
 	}

Deleted: branches/samba/upstream/source/torture/rpc_open_tcp.c
===================================================================
--- branches/samba/upstream/source/torture/rpc_open_tcp.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/torture/rpc_open_tcp.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,109 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * test program for rpc_pipe_open_tcp().
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#include "librpc/gen_ndr/ndr_dfs.h"
-#include "librpc/gen_ndr/ndr_drsuapi.h"
-#include "librpc/gen_ndr/ndr_dssetup.h"
-#include "librpc/gen_ndr/ndr_echo.h"
-#include "librpc/gen_ndr/ndr_epmapper.h"
-#include "librpc/gen_ndr/ndr_eventlog.h"
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-#include "librpc/gen_ndr/ndr_lsa.h"
-#include "librpc/gen_ndr/ndr_netlogon.h"
-#include "librpc/gen_ndr/ndr_ntsvcs.h"
-#include "librpc/gen_ndr/ndr_samr.h"
-#include "librpc/gen_ndr/ndr_srvsvc.h"
-#include "librpc/gen_ndr/ndr_svcctl.h"
-#include "librpc/gen_ndr/ndr_winreg.h"
-#include "librpc/gen_ndr/ndr_wkssvc.h"
-
-extern const struct ndr_interface_table ndr_table_netdfs;
-extern const struct ndr_interface_table ndr_table_drsuapi;
-extern const struct ndr_interface_table ndr_table_dssetup;
-extern const struct ndr_interface_table ndr_table_rpcecho;
-extern const struct ndr_interface_table ndr_table_epmapper;
-extern const struct ndr_interface_table ndr_table_eventlog;
-extern const struct ndr_interface_table ndr_table_initshutdown;
-extern const struct ndr_interface_table ndr_table_lsarpc;
-extern const struct ndr_interface_table ndr_table_netlogon;
-extern const struct ndr_interface_table ndr_table_ntsvcs;
-extern const struct ndr_interface_table ndr_table_samr;
-extern const struct ndr_interface_table ndr_table_srvsvc;
-extern const struct ndr_interface_table ndr_table_svcctl;
-extern const struct ndr_interface_table ndr_table_winreg;
-extern const struct ndr_interface_table ndr_table_wkssvc;
-
-const struct ndr_interface_table *tables[] = {
-	&ndr_table_netdfs,
-	&ndr_table_drsuapi,
-	&ndr_table_dssetup,
-	&ndr_table_rpcecho,
-	&ndr_table_epmapper,
-	&ndr_table_eventlog,
-	&ndr_table_initshutdown,
-	&ndr_table_lsarpc,
-	&ndr_table_netlogon,
-	&ndr_table_ntsvcs,
-	&ndr_table_samr,
-	&ndr_table_srvsvc,
-	&ndr_table_svcctl,
-	&ndr_table_winreg,
-	&ndr_table_wkssvc,
-	NULL
-};
-
-int main(int argc, const char **argv)
-{
-	const struct ndr_interface_table **table;
-	NTSTATUS status;
-	struct rpc_pipe_client *rpc_pipe = NULL;
-	TALLOC_CTX *mem_ctx = talloc_stackframe();
-
-	if (argc != 3) {
-		d_printf("USAGE: %s interface host\n", argv[0]);
-		return -1;
-	}
-
-	for (table = tables; *table != NULL; table++) {
-		if (strequal((*table)->name, argv[1])) {
-			break;
-		}
-	}
-
-	if (*table == NULL) {
-		d_printf("ERROR: unknown interface '%s' given\n", argv[1]);
-		return -1;
-	}
-
-	status = rpc_pipe_open_tcp(mem_ctx, argv[2], &((*table)->syntax_id),
-				   &rpc_pipe);
-	if (!NT_STATUS_IS_OK(status)) {
-		d_printf("ERROR calling rpc_pipe_open_tcp(): %s\n",
-			nt_errstr(status));
-		return -1;
-	}
-
-	TALLOC_FREE(mem_ctx);
-
-	return 0;
-}
-

Modified: branches/samba/upstream/source/torture/t_push_ucs2.c
===================================================================
--- branches/samba/upstream/source/torture/t_push_ucs2.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/torture/t_push_ucs2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -12,10 +12,9 @@
 	smb_ucs2_t *dest = NULL;
 	char *orig2 = NULL;
 	int ret;
-	size_t converted_size;
 
-	push_ucs2_allocate(&dest, orig, &converted_size);
-	pull_ucs2_allocate(&orig2, dest, &converted_size);
+	push_ucs2_allocate(&dest, orig);
+	pull_ucs2_allocate(&orig2, dest);
 	ret = strcmp(orig, orig2);
 	if (ret) {
 		fprintf(stderr, "orig: %s\n", orig);

Modified: branches/samba/upstream/source/torture/torture.c
===================================================================
--- branches/samba/upstream/source/torture/torture.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/torture/torture.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3685,8 +3685,7 @@
 	}
 
 	if (!cli_rename(cli1, fname, fname1)) {
-		printf("Fifth rename failed (SHARE_READ | SHARE_WRITE | SHARE_DELETE) - this should have succeeded - %s ! \n",
-			cli_errstr(cli1));
+		printf("Fifth rename failed (SHARE_READ | SHARE_WRITE | SHARE_DELETE) - this should have succeeded - %s\n", cli_errstr(cli1));
 		correct = False;
 	} else {
 		printf("Fifth rename succeeded (SHARE_READ | SHARE_WRITE | SHARE_DELETE) (this is correct) - %s\n", cli_errstr(cli1));

Modified: branches/samba/upstream/source/torture/vfstest.c
===================================================================
--- branches/samba/upstream/source/torture/vfstest.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/torture/vfstest.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -563,6 +563,7 @@
 	sec_init();
 	conn_init();
 	vfs.conn = conn_new();
+	string_set(&vfs.conn->user,"vfstest");
 	for (i=0; i < 1024; i++)
 		vfs.files[i] = NULL;
 

Modified: branches/samba/upstream/source/utils/net.c
===================================================================
--- branches/samba/upstream/source/utils/net.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,33 +1,29 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2001 Steve French  (sfrench at us.ibm.com)
    Copyright (C) 2001 Jim McDonough (jmcd at us.ibm.com)
    Copyright (C) 2001 Andrew Tridgell (tridge at samba.org)
    Copyright (C) 2001 Andrew Bartlett (abartlet at samba.org)
-   Copyright (C) 2008 Kai Blin (kai at samba.org)
 
    Originally written by Steve and Jim. Largely rewritten by tridge in
    November 2001.
 
    Reworked again by abartlet in December 2001
 
-   Another overhaul, moving functionality into plug-ins loaded on demand by Kai
-   in May 2008.
-
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
+ 
 /*****************************************************/
 /*                                                   */
 /*   Distributed SMB/CIFS Server Management Utility  */
@@ -43,12 +39,6 @@
 #include "includes.h"
 #include "utils/net.h"
 
-extern bool AllowDebugChange;
-
-#ifdef WITH_FAKE_KASERVER
-#include "utils/net_afs.h"
-#endif
-
 /***********************************************************************/
 /* Beginning of internationalization section.  Translatable constants  */
 /* should be kept in this area and referenced in the rest of the code. */
@@ -60,11 +50,50 @@
 #define YES_STRING              "Yes"
 #define NO_STRING               "No"
 
-/***********************************************************************/
-/* end of internationalization section                                 */
-/***********************************************************************/
+/************************************************************************************/
+/*                       end of internationalization section                        */
+/************************************************************************************/
 
-uint32 get_sec_channel_type(const char *param)
+/* Yes, these buggers are globals.... */
+const char *opt_requester_name = NULL;
+const char *opt_host = NULL;
+const char *opt_password = NULL;
+const char *opt_user_name = NULL;
+bool opt_user_specified = False;
+const char *opt_workgroup = NULL;
+int opt_long_list_entries = 0;
+int opt_reboot = 0;
+int opt_force = 0;
+int opt_stdin = 0;
+int opt_port = 0;
+int opt_verbose = 0;
+int opt_maxusers = -1;
+const char *opt_comment = "";
+const char *opt_container = NULL;
+int opt_flags = -1;
+int opt_timeout = 0;
+const char *opt_target_workgroup = NULL;
+int opt_machine_pass = 0;
+int opt_localgroup = False;
+int opt_domaingroup = False;
+static int do_talloc_report=False;
+const char *opt_newntname = "";
+int opt_rid = 0;
+int opt_acls = 0;
+int opt_attrs = 0;
+int opt_timestamps = 0;
+const char *opt_exclude = NULL;
+const char *opt_destination = NULL;
+int opt_testmode = False;
+
+int opt_have_ip = False;
+struct sockaddr_storage opt_dest_ip;
+bool smb_encrypt;
+struct libnetapi_ctx *netapi_ctx = NULL;
+
+extern bool AllowDebugChange;
+
+uint32 get_sec_channel_type(const char *param) 
 {
 	if (!(param && *param)) {
 		return get_default_sec_channel();
@@ -75,7 +104,7 @@
 			return SEC_CHAN_BDC;
 		} else if (strequal(param, "MEMBER")) {
 			return SEC_CHAN_WKSTA;
-#if 0
+#if 0			
 		} else if (strequal(param, "DOMAIN")) {
 			return SEC_CHAN_DOMAIN;
 #endif
@@ -85,33 +114,532 @@
 	}
 }
 
-static int net_changetrustpw(struct net_context *c, int argc, const char **argv)
+/*
+  run a function from a function table. If not found then
+  call the specified usage function 
+*/
+int net_run_function(int argc, const char **argv, struct functable *table, 
+		     int (*usage_fn)(int argc, const char **argv))
 {
-	if (net_ads_check_our_domain(c) == 0)
-		return net_ads_changetrustpw(c, argc, argv);
+	int i;
+	
+	if (argc < 1) {
+		d_printf("\nUsage: \n");
+		return usage_fn(argc, argv);
+	}
+	for (i=0; table[i].funcname; i++) {
+		if (StrCaseCmp(argv[0], table[i].funcname) == 0)
+			return table[i].fn(argc-1, argv+1);
+	}
+	d_fprintf(stderr, "No command: %s\n", argv[0]);
+	return usage_fn(argc, argv);
+}
 
-	return net_rpc_changetrustpw(c, argc, argv);
+/*
+ * run a function from a function table.
+ */
+int net_run_function2(int argc, const char **argv, const char *whoami,
+		      struct functable2 *table)
+{
+	int i;
+
+	if (argc != 0) {
+		for (i=0; table[i].funcname; i++) {
+			if (StrCaseCmp(argv[0], table[i].funcname) == 0)
+				return table[i].fn(argc-1, argv+1);
+		}
+	}
+
+	for (i=0; table[i].funcname != NULL; i++) {
+		d_printf("%s %-15s %s\n", whoami, table[i].funcname,
+			 table[i].helptext);
+	}
+
+	return -1;
 }
 
+/****************************************************************************
+ Connect to \\server\service.
+****************************************************************************/
+
+NTSTATUS connect_to_service(struct cli_state **c,
+					struct sockaddr_storage *server_ss,
+					const char *server_name,
+					const char *service_name,
+					const char *service_type)
+{
+	NTSTATUS nt_status;
+
+	opt_password = net_prompt_pass(opt_user_name);
+	if (!opt_password) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	nt_status = cli_full_connection(c, NULL, server_name,
+					server_ss, opt_port,
+					service_name, service_type,
+					opt_user_name, opt_workgroup,
+					opt_password, 0, Undefined, NULL);
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		d_fprintf(stderr, "Could not connect to server %s\n", server_name);
+
+		/* Display a nicer message depending on the result */
+
+		if (NT_STATUS_V(nt_status) ==
+		    NT_STATUS_V(NT_STATUS_LOGON_FAILURE))
+			d_fprintf(stderr, "The username or password was not correct.\n");
+
+		if (NT_STATUS_V(nt_status) ==
+		    NT_STATUS_V(NT_STATUS_ACCOUNT_LOCKED_OUT))
+			d_fprintf(stderr, "The account was locked out.\n");
+
+		if (NT_STATUS_V(nt_status) ==
+		    NT_STATUS_V(NT_STATUS_ACCOUNT_DISABLED))
+			d_fprintf(stderr, "The account was disabled.\n");
+		return nt_status;
+	}
+
+	if (smb_encrypt) {
+		nt_status = cli_force_encryption(*c,
+					opt_user_name,
+					opt_password,
+					opt_workgroup);
+
+		if (NT_STATUS_EQUAL(nt_status,NT_STATUS_NOT_SUPPORTED)) {
+			d_printf("Encryption required and "
+				"server that doesn't support "
+				"UNIX extensions - failing connect\n");
+		} else if (NT_STATUS_EQUAL(nt_status,NT_STATUS_UNKNOWN_REVISION)) {
+			d_printf("Encryption required and "
+				"can't get UNIX CIFS extensions "
+				"version from server.\n");
+		} else if (NT_STATUS_EQUAL(nt_status,NT_STATUS_UNSUPPORTED_COMPRESSION)) {
+			d_printf("Encryption required and "
+				"share %s doesn't support "
+				"encryption.\n", service_name);
+		} else if (!NT_STATUS_IS_OK(nt_status)) {
+			d_printf("Encryption required and "
+				"setup failed with error %s.\n",
+				nt_errstr(nt_status));
+		}
+
+		if (!NT_STATUS_IS_OK(nt_status)) {
+			cli_shutdown(*c);
+			*c = NULL;
+		}
+	}
+
+	return nt_status;
+}
+
+/****************************************************************************
+ Connect to \\server\ipc$.
+****************************************************************************/
+
+NTSTATUS connect_to_ipc(struct cli_state **c,
+			struct sockaddr_storage *server_ss,
+			const char *server_name)
+{
+	return connect_to_service(c, server_ss, server_name, "IPC$", "IPC");
+}
+
+/****************************************************************************
+ Connect to \\server\ipc$ anonymously.
+****************************************************************************/
+
+NTSTATUS connect_to_ipc_anonymous(struct cli_state **c,
+				struct sockaddr_storage *server_ss,
+				const char *server_name)
+{
+	NTSTATUS nt_status;
+
+	nt_status = cli_full_connection(c, opt_requester_name, server_name,
+					server_ss, opt_port,
+					"IPC$", "IPC",
+					"", "",
+					"", 0, Undefined, NULL);
+
+	if (NT_STATUS_IS_OK(nt_status)) {
+		return nt_status;
+	} else {
+		DEBUG(1,("Cannot connect to server (anonymously).  Error was %s\n", nt_errstr(nt_status)));
+		return nt_status;
+	}
+}
+
+/****************************************************************************
+ Return malloced user at realm for krb5 login.
+****************************************************************************/
+
+static char *get_user_and_realm(const char *username)
+{
+	char *user_and_realm = NULL;
+
+	if (!username) {
+		return NULL;
+	}
+	if (strchr_m(username, '@')) {
+		user_and_realm = SMB_STRDUP(username);
+	} else {
+		if (asprintf(&user_and_realm, "%s@%s", username, lp_realm()) == -1) {
+			user_and_realm = NULL;
+		}
+	}
+	return user_and_realm;
+}
+
+/****************************************************************************
+ Connect to \\server\ipc$ using KRB5.
+****************************************************************************/
+
+NTSTATUS connect_to_ipc_krb5(struct cli_state **c,
+			struct sockaddr_storage *server_ss,
+			const char *server_name)
+{
+	NTSTATUS nt_status;
+	char *user_and_realm = NULL;
+
+	opt_password = net_prompt_pass(opt_user_name);
+	if (!opt_password) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	user_and_realm = get_user_and_realm(opt_user_name);
+	if (!user_and_realm) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	nt_status = cli_full_connection(c, NULL, server_name,
+					server_ss, opt_port,
+					"IPC$", "IPC",
+					user_and_realm, opt_workgroup,
+					opt_password, CLI_FULL_CONNECTION_USE_KERBEROS, 
+					Undefined, NULL);
+
+	SAFE_FREE(user_and_realm);
+
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		DEBUG(1,("Cannot connect to server using kerberos.  Error was %s\n", nt_errstr(nt_status)));
+		return nt_status;
+	}
+
+        if (smb_encrypt) {
+		nt_status = cli_cm_force_encryption(*c,
+					user_and_realm,
+					opt_password,
+					opt_workgroup,
+                                        "IPC$");
+		if (!NT_STATUS_IS_OK(nt_status)) {
+			cli_shutdown(*c);
+			*c = NULL;
+		}
+	}
+
+	return nt_status;
+}
+
+/**
+ * Connect a server and open a given pipe
+ *
+ * @param cli_dst		A cli_state 
+ * @param pipe			The pipe to open
+ * @param got_pipe		boolean that stores if we got a pipe
+ *
+ * @return Normal NTSTATUS return.
+ **/
+NTSTATUS connect_dst_pipe(struct cli_state **cli_dst, struct rpc_pipe_client **pp_pipe_hnd, int pipe_num)
+{
+	NTSTATUS nt_status;
+	char *server_name = SMB_STRDUP("127.0.0.1");
+	struct cli_state *cli_tmp = NULL;
+	struct rpc_pipe_client *pipe_hnd = NULL;
+
+	if (server_name == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	if (opt_destination) {
+		SAFE_FREE(server_name);
+		if ((server_name = SMB_STRDUP(opt_destination)) == NULL) {
+			return NT_STATUS_NO_MEMORY;
+		}
+	}
+
+	/* make a connection to a named pipe */
+	nt_status = connect_to_ipc(&cli_tmp, NULL, server_name);
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		SAFE_FREE(server_name);
+		return nt_status;
+	}
+
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli_tmp, pipe_num, &nt_status);
+	if (!pipe_hnd) {
+		DEBUG(0, ("couldn't not initialize pipe\n"));
+		cli_shutdown(cli_tmp);
+		SAFE_FREE(server_name);
+		return nt_status;
+	}
+
+	*cli_dst = cli_tmp;
+	*pp_pipe_hnd = pipe_hnd;
+	SAFE_FREE(server_name);
+
+	return nt_status;
+}
+
+/****************************************************************************
+ Use the local machine account (krb) and password for this session.
+****************************************************************************/
+
+int net_use_krb_machine_account(void) 
+{
+	char *user_name = NULL;
+
+	if (!secrets_init()) {
+		d_fprintf(stderr, "ERROR: Unable to open secrets database\n");
+		exit(1);
+	}
+
+	opt_password = secrets_fetch_machine_password(opt_target_workgroup, NULL, NULL);
+	if (asprintf(&user_name, "%s$@%s", global_myname(), lp_realm()) == -1) {
+		return -1;
+	}
+	opt_user_name = user_name;
+	return 0;
+}
+
+/****************************************************************************
+ Use the machine account name and password for this session.
+****************************************************************************/
+
+int net_use_machine_account(void)
+{
+	char *user_name = NULL;
+
+	if (!secrets_init()) {
+		d_fprintf(stderr, "ERROR: Unable to open secrets database\n");
+		exit(1);
+	}
+
+	opt_password = secrets_fetch_machine_password(opt_target_workgroup, NULL, NULL);
+	if (asprintf(&user_name, "%s$", global_myname()) == -1) {
+		return -1;
+	}
+	opt_user_name = user_name;
+	return 0;
+}
+
+bool net_find_server(const char *domain,
+			unsigned flags,
+			struct sockaddr_storage *server_ss,
+			char **server_name)
+{
+	const char *d = domain ? domain : opt_target_workgroup;
+
+	if (opt_host) {
+		*server_name = SMB_STRDUP(opt_host);
+	}
+
+	if (opt_have_ip) {
+		*server_ss = opt_dest_ip;
+		if (!*server_name) {
+			char addr[INET6_ADDRSTRLEN];
+			print_sockaddr(addr, sizeof(addr), &opt_dest_ip);
+			*server_name = SMB_STRDUP(addr);
+		}
+	} else if (*server_name) {
+		/* resolve the IP address */
+		if (!resolve_name(*server_name, server_ss, 0x20))  {
+			DEBUG(1,("Unable to resolve server name\n"));
+			return false;
+		}
+	} else if (flags & NET_FLAGS_PDC) {
+		fstring dc_name;
+		struct sockaddr_storage pdc_ss;
+
+		if (!get_pdc_ip(d, &pdc_ss)) {
+			DEBUG(1,("Unable to resolve PDC server address\n"));
+			return false;
+		}
+
+		if (is_zero_addr(&pdc_ss)) {
+			return false;
+		}
+
+		if (!name_status_find(d, 0x1b, 0x20, &pdc_ss, dc_name)) {
+			return False;
+		}
+
+		*server_name = SMB_STRDUP(dc_name);
+		*server_ss = pdc_ss;
+	} else if (flags & NET_FLAGS_DMB) {
+		struct sockaddr_storage msbrow_ss;
+		char addr[INET6_ADDRSTRLEN];
+
+		/*  if (!resolve_name(MSBROWSE, &msbrow_ip, 1)) */
+		if (!resolve_name(d, &msbrow_ss, 0x1B))  {
+			DEBUG(1,("Unable to resolve domain browser via name lookup\n"));
+			return false;
+		}
+		*server_ss = msbrow_ss;
+		print_sockaddr(addr, sizeof(addr), server_ss);
+		*server_name = SMB_STRDUP(addr);
+	} else if (flags & NET_FLAGS_MASTER) {
+		struct sockaddr_storage brow_ss;
+		char addr[INET6_ADDRSTRLEN];
+		if (!resolve_name(d, &brow_ss, 0x1D))  {
+				/* go looking for workgroups */
+			DEBUG(1,("Unable to resolve master browser via name lookup\n"));
+			return false;
+		}
+		*server_ss = brow_ss;
+		print_sockaddr(addr, sizeof(addr), server_ss);
+		*server_name = SMB_STRDUP(addr);
+	} else if (!(flags & NET_FLAGS_LOCALHOST_DEFAULT_INSANE)) {
+		if (!interpret_string_addr(server_ss,
+					"127.0.0.1", AI_NUMERICHOST)) {
+			DEBUG(1,("Unable to resolve 127.0.0.1\n"));
+			return false;
+		}
+		*server_name = SMB_STRDUP("127.0.0.1");
+	}
+
+	if (!*server_name) {
+		DEBUG(1,("no server to connect to\n"));
+		return False;
+	}
+
+	return True;
+}
+
+bool net_find_pdc(struct sockaddr_storage *server_ss,
+		fstring server_name,
+		const char *domain_name)
+{
+	if (!get_pdc_ip(domain_name, server_ss)) {
+		return false;
+	}
+	if (is_zero_addr(server_ss)) {
+		return false;
+	}
+
+	if (!name_status_find(domain_name, 0x1b, 0x20, server_ss, server_name)) {
+		return false;
+	}
+
+	return true;
+}
+
+NTSTATUS net_make_ipc_connection(unsigned flags, struct cli_state **pcli)
+{
+	return net_make_ipc_connection_ex(NULL, NULL, NULL, flags, pcli);
+}
+
+NTSTATUS net_make_ipc_connection_ex(const char *domain, const char *server,
+                                    struct sockaddr_storage *pss, unsigned flags,
+				    struct cli_state **pcli)
+{
+	char *server_name = NULL;
+	struct sockaddr_storage server_ss;
+	struct cli_state *cli = NULL;
+	NTSTATUS nt_status;
+
+	if ( !server || !pss ) {
+		if (!net_find_server(domain, flags, &server_ss, &server_name)) {
+			d_fprintf(stderr, "Unable to find a suitable server\n");
+			nt_status = NT_STATUS_UNSUCCESSFUL;
+			goto done;
+		}
+	} else {
+		server_name = SMB_STRDUP( server );
+		server_ss = *pss;
+	}
+
+	if (flags & NET_FLAGS_ANONYMOUS) {
+		nt_status = connect_to_ipc_anonymous(&cli, &server_ss, server_name);
+	} else {
+		nt_status = connect_to_ipc(&cli, &server_ss, server_name);
+	}
+
+	/* store the server in the affinity cache if it was a PDC */
+
+	if ( (flags & NET_FLAGS_PDC) && NT_STATUS_IS_OK(nt_status) )
+		saf_store( cli->server_domain, cli->desthost );
+
+	SAFE_FREE(server_name);
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		d_fprintf(stderr, "Connection failed: %s\n",
+			  nt_errstr(nt_status));
+		cli = NULL;
+	}
+
+done:
+	if (pcli != NULL) {
+		*pcli = cli;
+	}
+	return nt_status;
+}
+
+static int net_user(int argc, const char **argv)
+{
+	if (net_ads_check() == 0)
+		return net_ads_user(argc, argv);
+
+	/* if server is not specified, default to PDC? */
+	if (net_rpc_check(NET_FLAGS_PDC))
+		return net_rpc_user(argc, argv);
+
+	return net_rap_user(argc, argv);
+}
+
+static int net_group(int argc, const char **argv)
+{
+	if (net_ads_check() == 0)
+		return net_ads_group(argc, argv);
+
+	if (argc == 0 && net_rpc_check(NET_FLAGS_PDC))
+		return net_rpc_group(argc, argv);
+
+	return net_rap_group(argc, argv);
+}
+
+static int net_join(int argc, const char **argv)
+{
+	if (net_ads_check_our_domain() == 0) {
+		if (net_ads_join(argc, argv) == 0)
+			return 0;
+		else
+			d_fprintf(stderr, "ADS join did not work, falling back to RPC...\n");
+	}
+	return net_rpc_join(argc, argv);
+}
+
+static int net_changetrustpw(int argc, const char **argv)
+{
+	if (net_ads_check_our_domain() == 0)
+		return net_ads_changetrustpw(argc, argv);
+
+	return net_rpc_changetrustpw(argc, argv);
+}
+
 static void set_line_buffering(FILE *f)
 {
 	setvbuf(f, NULL, _IOLBF, 0);
 }
 
-static int net_changesecretpw(struct net_context *c, int argc,
-			      const char **argv)
+static int net_changesecretpw(int argc, const char **argv)
 {
         char *trust_pw;
         uint32 sec_channel_type = SEC_CHAN_WKSTA;
 
-	if(c->opt_force) {
-		if (c->opt_stdin) {
+	if(opt_force) {
+		if (opt_stdin) {
 			set_line_buffering(stdin);
 			set_line_buffering(stdout);
 			set_line_buffering(stderr);
 		}
 
-		trust_pw = get_pass("Enter machine password: ", c->opt_stdin);
+		trust_pw = get_pass("Enter machine password: ", opt_stdin);
 
 		if (!secrets_store_machine_password(trust_pw, lp_workgroup(), sec_channel_type)) {
 			    d_fprintf(stderr, "Unable to write the machine account password in the secrets database");
@@ -130,10 +658,24 @@
         return 0;
 }
 
+static int net_share(int argc, const char **argv)
+{
+	if (net_rpc_check(0))
+		return net_rpc_share(argc, argv);
+	return net_rap_share(argc, argv);
+}
+
+static int net_file(int argc, const char **argv)
+{
+	if (net_rpc_check(0))
+		return net_rpc_file(argc, argv);
+	return net_rap_file(argc, argv);
+}
+
 /*
  Retrieve our local SID or the SID for the specified name
  */
-static int net_getlocalsid(struct net_context *c, int argc, const char **argv)
+static int net_getlocalsid(int argc, const char **argv)
 {
         DOM_SID sid;
 	const char *name;
@@ -146,7 +688,7 @@
 		name = global_myname();
 	}
 
-	if(!initialize_password_db(false, NULL)) {
+	if(!initialize_password_db(False, NULL)) {
 		DEBUG(0, ("WARNING: Could not open passdb - local sid may not reflect passdb\n"
 			  "backend knowledge (such as the sid stored in LDAP)\n"));
 	}
@@ -171,7 +713,7 @@
 	return 0;
 }
 
-static int net_setlocalsid(struct net_context *c, int argc, const char **argv)
+static int net_setlocalsid(int argc, const char **argv)
 {
 	DOM_SID sid;
 
@@ -191,7 +733,7 @@
 	return 0;
 }
 
-static int net_setdomainsid(struct net_context *c, int argc, const char **argv)
+static int net_setdomainsid(int argc, const char **argv)
 {
 	DOM_SID sid;
 
@@ -211,7 +753,7 @@
 	return 0;
 }
 
-static int net_getdomainsid(struct net_context *c, int argc, const char **argv)
+static int net_getdomainsid(int argc, const char **argv)
 {
 	DOM_SID domain_sid;
 	fstring sid_str;
@@ -221,7 +763,7 @@
 		return 1;
 	}
 
-	if(!initialize_password_db(false, NULL)) {
+	if(!initialize_password_db(False, NULL)) {
 		DEBUG(0, ("WARNING: Could not open passdb - domain SID may "
 			  "not reflect passdb\n"
 			  "backend knowledge (such as the SID stored in "
@@ -247,17 +789,99 @@
 	sid_to_fstring(sid_str, &domain_sid);
 	d_printf("SID for local machine %s is: %s\n", global_myname(), sid_str);
 
-	if (!secrets_fetch_domain_sid(c->opt_workgroup, &domain_sid)) {
+	if (!secrets_fetch_domain_sid(opt_workgroup, &domain_sid)) {
 		d_fprintf(stderr, "Could not fetch domain SID\n");
 		return 1;
 	}
 
 	sid_to_fstring(sid_str, &domain_sid);
-	d_printf("SID for domain %s is: %s\n", c->opt_workgroup, sid_str);
+	d_printf("SID for domain %s is: %s\n", opt_workgroup, sid_str);
 
 	return 0;
 }
 
+#ifdef WITH_FAKE_KASERVER
+
+int net_help_afs(int argc, const char **argv)
+{
+	d_printf("  net afs key filename\n"
+		 "\tImports a OpenAFS KeyFile into our secrets.tdb\n\n");
+	d_printf("  net afs impersonate <user> <cell>\n"
+		 "\tCreates a token for user at cell\n\n");
+	return -1;
+}
+
+static int net_afs_key(int argc, const char **argv)
+{
+	int fd;
+	struct afs_keyfile keyfile;
+
+	if (argc != 2) {
+		d_printf("usage: 'net afs key <keyfile> cell'\n");
+		return -1;
+	}
+
+	if (!secrets_init()) {
+		d_fprintf(stderr, "Could not open secrets.tdb\n");
+		return -1;
+	}
+
+	if ((fd = open(argv[0], O_RDONLY, 0)) < 0) {
+		d_fprintf(stderr, "Could not open %s\n", argv[0]);
+		return -1;
+	}
+
+	if (read(fd, &keyfile, sizeof(keyfile)) != sizeof(keyfile)) {
+		d_fprintf(stderr, "Could not read keyfile\n");
+		return -1;
+	}
+
+	if (!secrets_store_afs_keyfile(argv[1], &keyfile)) {
+		d_fprintf(stderr, "Could not write keyfile to secrets.tdb\n");
+		return -1;
+	}
+
+	return 0;
+}
+
+static int net_afs_impersonate(int argc, const char **argv)
+{
+	char *token;
+
+	if (argc != 2) {
+		fprintf(stderr, "Usage: net afs impersonate <user> <cell>\n");
+	        exit(1);
+	}
+
+	token = afs_createtoken_str(argv[0], argv[1]);
+
+	if (token == NULL) {
+		fprintf(stderr, "Could not create token\n");
+	        exit(1);
+	}
+
+	if (!afs_settoken_str(token)) {
+		fprintf(stderr, "Could not set token into kernel\n");
+	        exit(1);
+	}
+
+	printf("Success: %s@%s\n", argv[0], argv[1]);
+	return 0;
+}
+
+static int net_afs(int argc, const char **argv)
+{
+	struct functable func[] = {
+		{"key", net_afs_key},
+		{"impersonate", net_afs_impersonate},
+		{"help", net_help_afs},
+		{NULL, NULL}
+	};
+	return net_run_function(argc, argv, func, net_help_afs);
+}
+
+#endif /* WITH_FAKE_KASERVER */
+
 static bool search_maxrid(struct pdb_search *search, const char *type,
 			  uint32 *max_rid)
 {
@@ -266,14 +890,14 @@
 
 	if (search == NULL) {
 		d_fprintf(stderr, "get_maxrid: Could not search %s\n", type);
-		return false;
+		return False;
 	}
 
 	num_entries = pdb_search_entries(search, 0, 0xffffffff, &entries);
 	for (i=0; i<num_entries; i++)
 		*max_rid = MAX(*max_rid, entries[i].rid);
 	pdb_search_destroy(search);
-	return true;
+	return True;
 }
 
 static uint32 get_maxrid(void)
@@ -289,11 +913,11 @@
 	if (!search_maxrid(pdb_search_aliases(get_global_sam_sid()),
 			   "aliases", &max_rid))
 		return 0;
-
+	
 	return max_rid;
 }
 
-static int net_maxrid(struct net_context *c, int argc, const char **argv)
+static int net_maxrid(int argc, const char **argv)
 {
 	uint32 rid;
 
@@ -312,294 +936,79 @@
 	return 0;
 }
 
+/****************************************************************************
+****************************************************************************/
+
+const char *net_prompt_pass(const char *user)
+{
+	char *prompt = NULL;
+	const char *pass = NULL;
+
+	if (opt_password) {
+		return opt_password;
+	}
+
+	if (opt_machine_pass) {
+		return NULL;
+	}
+
+	asprintf(&prompt, "Enter %s's password:", user);
+	if (!prompt) {
+		return NULL;
+	}
+
+	pass = getpass(prompt);
+	SAFE_FREE(prompt);
+
+	return pass;
+}
+
 /* main function table */
 static struct functable net_func[] = {
-	{
-		"rpc",
-		net_rpc,
-		NET_TRANSPORT_RPC,
-		"Run functions using RPC transport",
-		"  Use 'net help rpc' to get more extensive information about "
-		"'net rpc' commands."
-	},
-	{
-		"rap",
-		net_rap,
-		NET_TRANSPORT_RAP,
-		"Run functions using RAP transport",
-		"  Use 'net help rap' to get more extensive information about "
-		"'net rap' commands."
-	},
-	{
-		"ads",
-		net_ads,
-		NET_TRANSPORT_ADS,
-		"Run functions using ADS transport",
-		"  Use 'net help ads' to get more extensive information about "
-		"'net ads' commands."
-	},
+	{"RPC", net_rpc},
+	{"RAP", net_rap},
+	{"ADS", net_ads},
 
 	/* eventually these should auto-choose the transport ... */
-	{
-		"file",
-		net_file,
-		NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
-		"Functions on remote opened files",
-		"  Use 'net help file' to get more information about 'net "
-		"file' commands."
-	},
-	{
-		"share",
-		net_share,
-		NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
-		"Functions on shares",
-		"  Use 'net help share' to get more information about 'net "
-		"share' commands."
-	},
-	{
-		"session",
-		net_rap_session,
-		NET_TRANSPORT_RAP,
-		"Manage sessions",
-		"  Use 'net help session' to get more information about 'net "
-		"session' commands."
-	},
-	{
-		"server",
-		net_rap_server,
-		NET_TRANSPORT_RAP,
-		"List servers in workgroup",
-		"  Use 'net help server' to get more information about 'net "
-		"server' commands."
-	},
-	{
-		"domain",
-		net_rap_domain,
-		NET_TRANSPORT_RAP,
-		"List domains/workgroups on network",
-		"  Use 'net help domain' to get more information about 'net "
-		"domain' commands."
-	},
-	{
-		"printq",
-		net_rap_printq,
-		NET_TRANSPORT_RAP,
-		"Modify printer queue",
-		"  Use 'net help printq' to get more information about 'net "
-		"printq' commands."
-	},
-	{
-		"user",
-		net_user,
-		NET_TRANSPORT_ADS | NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
-		"Manage users",
-		"  Use 'net help user' to get more information about 'net "
-		"user' commands."
-	},
-	{
-		"group",
-		net_group,
-		NET_TRANSPORT_ADS | NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
-		"Manage groups",
-		"  Use 'net help group' to get more information about 'net "
-		"group' commands."
-	},
-	{
-		"groupmap",
-		net_groupmap,
-		NET_TRANSPORT_LOCAL,
-		"Manage group mappings",
-		"  Use 'net help groupmap' to get more information about 'net "
-		"groupmap' commands."
-	},
-	{
-		"sam",
-		net_sam,
-		NET_TRANSPORT_LOCAL,
-		"Functions on the SAM database",
-		"  Use 'net help sam' to get more information about 'net sam' "
-		"commands."
-	},
-	{
-		"validate",
-		net_rap_validate,
-		NET_TRANSPORT_RAP,
-		"Validate username and password",
-		"  Use 'net help validate' to get more information about 'net "
-		"validate' commands."
-	},
-	{
-		"groupmember",
-		net_rap_groupmember,
-		NET_TRANSPORT_RAP,
-		"Modify group memberships",
-		"  Use 'net help groupmember' to get more information about "
-		"'net groupmember' commands."
-	},
-	{	"admin",
-		net_rap_admin,
-		NET_TRANSPORT_RAP,
-		"Execute remote command on a remote OS/2 server",
-		"  Use 'net help admin' to get more information about 'net "
-		"admin' commands."
-	},
-	{	"service",
-		net_rap_service,
-		NET_TRANSPORT_RAP,
-		"List/modify running services",
-		"  Use 'net help service' to get more information about 'net "
-		"service' commands."
-	},
-	{
-		"password",
-		net_rap_password,
-		NET_TRANSPORT_RAP,
-		"Change user password on target server",
-		"  Use 'net help password' to get more information about 'net "
-		"password' commands."
-	},
-	{	"changetrustpw",
-		net_changetrustpw,
-		NET_TRANSPORT_ADS | NET_TRANSPORT_RPC,
-		"Change the trust password",
-		"  Use 'net help changetrustpw' to get more information about "
-		"'net changetrustpw'."
-	},
-	{	"changesecretpw",
-		net_changesecretpw,
-		NET_TRANSPORT_LOCAL,
-		"Change the secret password",
-		"  net [options] changesecretpw\n"
-		"    Change the ADS domain member machine account password in "
-		"secrets.tdb.\n"
-		"    Do NOT use this function unless you know what it does.\n"
-		"    Requires the -f flag to work."
-	},
-	{	"time",
-		net_time,
-		NET_TRANSPORT_LOCAL,
-		"Show/set time",
-		"  Use 'net help time' to get more information about 'net "
-		"time' commands."
-	},
-	{	"lookup",
-		net_lookup,
-		NET_TRANSPORT_LOCAL,
-		"Look up host names/IP addresses",
-		"  Use 'net help lookup' to get more information about 'net "
-		"lookup' commands."
-	},
-	{	"join",
-		net_join,
-		NET_TRANSPORT_ADS | NET_TRANSPORT_RPC,
-		"Join a domain/AD",
-		"  Use 'net help join' to get more information about 'net "
-		"join'."
-	},
-	{	"dom",
-		net_dom,
-		NET_TRANSPORT_LOCAL,
-		"Join/unjoin (remote) machines to/from a domain/AD",
-		"  Use 'net help dom' to get more information about 'net dom' "
-		"commands."
-	},
-	{	"cache",
-		net_cache,
-		NET_TRANSPORT_LOCAL,
-		"Operate on the cache tdb file",
-		"  Use 'net help cache' to get more information about 'net "
-		"cache' commands."
-	},
-	{	"getlocalsid",
-		net_getlocalsid,
-		NET_TRANSPORT_LOCAL,
-		"Get the SID for the local domain",
-		"  net getlocalsid"
-	},
-	{	"setlocalsid",
-		net_setlocalsid,
-		NET_TRANSPORT_LOCAL,
-		"Set the SID for the local domain",
-		"  net setlocalsid S-1-5-21-x-y-z"
-	},
-	{	"setdomainsid",
-		net_setdomainsid,
-		NET_TRANSPORT_LOCAL,
-		"Set domain SID on member servers",
-		"  net setdomainsid S-1-5-21-x-y-z"
-	},
-	{	"getdomainsid",
-		net_getdomainsid,
-		NET_TRANSPORT_LOCAL,
-		"Get domain SID on member servers",
-		"  net getdomainsid"
-	},
-	{	"maxrid",
-		net_maxrid,
-		NET_TRANSPORT_LOCAL,
-		"Display the maximul RID currently used",
-		"  net maxrid"
-	},
-	{	"idmap",
-		net_idmap,
-		NET_TRANSPORT_LOCAL,
-		"IDmap functions",
-		"  Use 'net help idmap to get more information about 'net "
-		"idmap' commands."
-	},
-	{	"status",
-		net_status,
-		NET_TRANSPORT_LOCAL,
-		"Display server status",
-		"  Use 'net help status' to get more information about 'net "
-		"status' commands."
-	},
-	{	"usershare",
-		net_usershare,
-		NET_TRANSPORT_LOCAL,
-		"Manage user-modifiable shares",
-		"  Use 'net help usershare to get more information about 'net "
-		"usershare' commands."
-	},
-	{	"usersidlist",
-		net_usersidlist,
-		NET_TRANSPORT_RPC,
-		"Display list of all users with SID",
-		"  Use 'net help usersidlist' to get more information about "
-		"'net usersidlist'."
-	},
-	{	"conf",
-		net_conf,
-		NET_TRANSPORT_LOCAL,
-		"Manage Samba registry based configuration",
-		"  Use 'net help conf' to get more information about 'net "
-		"conf' commands."
-	},
-	{	"registry",
-		net_registry,
-		NET_TRANSPORT_LOCAL,
-		"Manage the Samba registry",
-		"  Use 'net help registry' to get more information about 'net "
-		"registry' commands."
-	},
+	{"FILE", net_file},
+	{"SHARE", net_share},
+	{"SESSION", net_rap_session},
+	{"SERVER", net_rap_server},
+	{"DOMAIN", net_rap_domain},
+	{"PRINTQ", net_rap_printq},
+	{"USER", net_user},
+	{"GROUP", net_group},
+	{"GROUPMAP", net_groupmap},
+	{"SAM", net_sam},
+	{"VALIDATE", net_rap_validate},
+	{"GROUPMEMBER", net_rap_groupmember},
+	{"ADMIN", net_rap_admin},
+	{"SERVICE", net_rap_service},	
+	{"PASSWORD", net_rap_password},
+	{"CHANGETRUSTPW", net_changetrustpw},
+	{"CHANGESECRETPW", net_changesecretpw},
+	{"TIME", net_time},
+	{"LOOKUP", net_lookup},
+	{"JOIN", net_join},
+	{"DOM", net_dom},
+	{"CACHE", net_cache},
+	{"GETLOCALSID", net_getlocalsid},
+	{"SETLOCALSID", net_setlocalsid},
+	{"SETDOMAINSID", net_setdomainsid},
+	{"GETDOMAINSID", net_getdomainsid},
+	{"MAXRID", net_maxrid},
+	{"IDMAP", net_idmap},
+	{"STATUS", net_status},
+	{"USERSHARE", net_usershare},
+	{"USERSIDLIST", net_usersidlist},
+	{"CONF", net_conf},
+	{"REGISTRY", net_registry},
 #ifdef WITH_FAKE_KASERVER
-	{	"afs",
-		net_afs,
-		NET_TRANSPORT_LOCAL,
-		"Manage AFS tokens",
-		"  Use 'net help afs' to get more information about 'net afs' "
-		"commands."
-	},
+	{"AFS", net_afs},
 #endif
 
-	{	"help",
-		net_help,
-		NET_TRANSPORT_LOCAL,
-		"Print usage information",
-		"  Use 'net help help' to list usage information for 'net' "
-		"commands."
-	},
-	{NULL, NULL, 0, NULL, NULL}
+	{"HELP", net_help},
+	{NULL, NULL}
 };
 
 
@@ -614,106 +1023,100 @@
 	int argc_new = 0;
 	const char ** argv_new;
 	poptContext pc;
-	TALLOC_CTX *frame = talloc_stackframe();
-	struct net_context *c = talloc_zero(frame, struct net_context);
 
 	struct poptOption long_options[] = {
 		{"help",	'h', POPT_ARG_NONE,   0, 'h'},
-		{"workgroup",	'w', POPT_ARG_STRING, &c->opt_target_workgroup},
-		{"user",	'U', POPT_ARG_STRING, &c->opt_user_name, 'U'},
+		{"workgroup",	'w', POPT_ARG_STRING, &opt_target_workgroup},
+		{"user",	'U', POPT_ARG_STRING, &opt_user_name, 'U'},
 		{"ipaddress",	'I', POPT_ARG_STRING, 0,'I'},
-		{"port",	'p', POPT_ARG_INT,    &c->opt_port},
-		{"myname",	'n', POPT_ARG_STRING, &c->opt_requester_name},
-		{"server",	'S', POPT_ARG_STRING, &c->opt_host},
+		{"port",	'p', POPT_ARG_INT,    &opt_port},
+		{"myname",	'n', POPT_ARG_STRING, &opt_requester_name},
+		{"server",	'S', POPT_ARG_STRING, &opt_host},
 		{"encrypt",	'e', POPT_ARG_NONE,   NULL, 'e', "Encrypt SMB transport (UNIX extended servers only)" },
-		{"container",	'c', POPT_ARG_STRING, &c->opt_container},
-		{"comment",	'C', POPT_ARG_STRING, &c->opt_comment},
-		{"maxusers",	'M', POPT_ARG_INT,    &c->opt_maxusers},
-		{"flags",	'F', POPT_ARG_INT,    &c->opt_flags},
-		{"long",	'l', POPT_ARG_NONE,   &c->opt_long_list_entries},
-		{"reboot",	'r', POPT_ARG_NONE,   &c->opt_reboot},
-		{"force",	'f', POPT_ARG_NONE,   &c->opt_force},
-		{"stdin",	'i', POPT_ARG_NONE,   &c->opt_stdin},
-		{"timeout",	't', POPT_ARG_INT,    &c->opt_timeout},
-		{"machine-pass",'P', POPT_ARG_NONE,   &c->opt_machine_pass},
-		{"kerberos",    'k', POPT_ARG_NONE,   &c->opt_kerberos},
-		{"myworkgroup", 'W', POPT_ARG_STRING, &c->opt_workgroup},
-		{"verbose",	'v', POPT_ARG_NONE,   &c->opt_verbose},
-		{"test",	'T', POPT_ARG_NONE,   &c->opt_testmode},
+		{"container",	'c', POPT_ARG_STRING, &opt_container},
+		{"comment",	'C', POPT_ARG_STRING, &opt_comment},
+		{"maxusers",	'M', POPT_ARG_INT,    &opt_maxusers},
+		{"flags",	'F', POPT_ARG_INT,    &opt_flags},
+		{"long",	'l', POPT_ARG_NONE,   &opt_long_list_entries},
+		{"reboot",	'r', POPT_ARG_NONE,   &opt_reboot},
+		{"force",	'f', POPT_ARG_NONE,   &opt_force},
+		{"stdin",	'i', POPT_ARG_NONE,   &opt_stdin},
+		{"timeout",	't', POPT_ARG_INT,    &opt_timeout},
+		{"machine-pass",'P', POPT_ARG_NONE,   &opt_machine_pass},
+		{"myworkgroup", 'W', POPT_ARG_STRING, &opt_workgroup},
+		{"verbose",	'v', POPT_ARG_NONE,   &opt_verbose},
+		{"test",	'T', POPT_ARG_NONE,   &opt_testmode},
 		/* Options for 'net groupmap set' */
-		{"local",       'L', POPT_ARG_NONE,   &c->opt_localgroup},
-		{"domain",      'D', POPT_ARG_NONE,   &c->opt_domaingroup},
-		{"ntname",      'N', POPT_ARG_STRING, &c->opt_newntname},
-		{"rid",         'R', POPT_ARG_INT,    &c->opt_rid},
+		{"local",       'L', POPT_ARG_NONE,   &opt_localgroup},
+		{"domain",      'D', POPT_ARG_NONE,   &opt_domaingroup},
+		{"ntname",      'N', POPT_ARG_STRING, &opt_newntname},
+		{"rid",         'R', POPT_ARG_INT,    &opt_rid},
 		/* Options for 'net rpc share migrate' */
-		{"acls",	0, POPT_ARG_NONE,     &c->opt_acls},
-		{"attrs",	0, POPT_ARG_NONE,     &c->opt_attrs},
-		{"timestamps",	0, POPT_ARG_NONE,     &c->opt_timestamps},
-		{"exclude",	'X', POPT_ARG_STRING, &c->opt_exclude},
-		{"destination",	0, POPT_ARG_STRING,   &c->opt_destination},
-		{"tallocreport", 0, POPT_ARG_NONE,    &c->do_talloc_report},
-		/* Options for 'net rpc vampire (keytab)' */
-		{"force-full-repl", 0, POPT_ARG_NONE, &c->opt_force_full_repl},
-		{"single-obj-repl", 0, POPT_ARG_NONE, &c->opt_single_obj_repl},
-		{"clean-old-entries", 0, POPT_ARG_NONE, &c->opt_clean_old_entries},
+		{"acls",	0, POPT_ARG_NONE,     &opt_acls},
+		{"attrs",	0, POPT_ARG_NONE,     &opt_attrs},
+		{"timestamps",	0, POPT_ARG_NONE,     &opt_timestamps},
+		{"exclude",	'X', POPT_ARG_STRING, &opt_exclude},
+		{"destination",	0, POPT_ARG_STRING,   &opt_destination},
+		{"tallocreport", 0, POPT_ARG_NONE, &do_talloc_report},
 
 		POPT_COMMON_SAMBA
 		{ 0, 0, 0, 0}
 	};
 
+	TALLOC_CTX *frame = talloc_stackframe();
 
-	zero_addr(&c->opt_dest_ip);
+	zero_addr(&opt_dest_ip);
 
 	load_case_tables();
 
 	/* set default debug level to 0 regardless of what smb.conf sets */
 	DEBUGLEVEL_CLASS[DBGC_ALL] = 0;
 	dbf = x_stderr;
-	c->private_data = net_func;
-
-	pc = poptGetContext(NULL, argc, (const char **) argv, long_options,
+	
+	pc = poptGetContext(NULL, argc, (const char **) argv, long_options, 
 			    POPT_CONTEXT_KEEP_FIRST);
-
+	
 	while((opt = poptGetNextOpt(pc)) != -1) {
 		switch (opt) {
 		case 'h':
-			c->display_usage = true;
+			net_help(argc, argv);
+			exit(0);
 			break;
 		case 'e':
-			c->smb_encrypt = true;
+			smb_encrypt=true;
 			break;
 		case 'I':
-			if (!interpret_string_addr(&c->opt_dest_ip,
+			if (!interpret_string_addr(&opt_dest_ip,
 						poptGetOptArg(pc), 0)) {
 				d_fprintf(stderr, "\nInvalid ip address specified\n");
 			} else {
-				c->opt_have_ip = true;
+				opt_have_ip = True;
 			}
 			break;
 		case 'U':
-			c->opt_user_specified = true;
-			c->opt_user_name = SMB_STRDUP(c->opt_user_name);
-			p = strchr(c->opt_user_name,'%');
+			opt_user_specified = True;
+			opt_user_name = SMB_STRDUP(opt_user_name);
+			p = strchr(opt_user_name,'%');
 			if (p) {
 				*p = 0;
-				c->opt_password = p+1;
+				opt_password = p+1;
 			}
 			break;
 		default:
-			d_fprintf(stderr, "\nInvalid option %s: %s\n",
+			d_fprintf(stderr, "\nInvalid option %s: %s\n", 
 				 poptBadOption(pc, 0), poptStrerror(opt));
-			net_help(c, argc, argv);
+			net_help(argc, argv);
 			exit(1);
 		}
 	}
-
+	
 	/*
 	 * Don't load debug level from smb.conf. It should be
 	 * set by cmdline arg or remain default (0)
 	 */
-	AllowDebugChange = false;
-	lp_load(get_dyn_CONFIGFILE(), true, false, false, true);
-
+	AllowDebugChange = False;
+	lp_load(get_dyn_CONFIGFILE(),True,False,False,True);
+	
  	argv_new = (const char **)poptGetArgs(pc);
 
 	argc_new = argc;
@@ -724,54 +1127,52 @@
 		}
 	}
 
-	if (c->do_talloc_report) {
+	if (do_talloc_report) {
 		talloc_enable_leak_report();
 	}
 
-	if (c->opt_requester_name) {
-		set_global_myname(c->opt_requester_name);
+	if (opt_requester_name) {
+		set_global_myname(opt_requester_name);
 	}
 
-	if (!c->opt_user_name && getenv("LOGNAME")) {
-		c->opt_user_name = getenv("LOGNAME");
+	if (!opt_user_name && getenv("LOGNAME")) {
+		opt_user_name = getenv("LOGNAME");
 	}
 
-	if (!c->opt_workgroup) {
-		c->opt_workgroup = smb_xstrdup(lp_workgroup());
+	if (!opt_workgroup) {
+		opt_workgroup = smb_xstrdup(lp_workgroup());
 	}
-
-	if (!c->opt_target_workgroup) {
-		c->opt_target_workgroup = smb_xstrdup(lp_workgroup());
+	
+	if (!opt_target_workgroup) {
+		opt_target_workgroup = smb_xstrdup(lp_workgroup());
 	}
-
+	
 	if (!init_names())
 		exit(1);
 
 	load_interfaces();
-
-	/* this makes sure that when we do things like call scripts,
+	
+	/* this makes sure that when we do things like call scripts, 
 	   that it won't assert becouse we are not root */
 	sec_init();
 
-	if (c->opt_machine_pass) {
+	if (opt_machine_pass) {
 		/* it is very useful to be able to make ads queries as the
 		   machine account for testing purposes and for domain leave */
 
-		net_use_krb_machine_account(c);
+		net_use_krb_machine_account();
 	}
 
-	if (!c->opt_password) {
-		c->opt_password = getenv("PASSWD");
+	if (!opt_password) {
+		opt_password = getenv("PASSWD");
 	}
-
-	rc = net_run_function(c, argc_new-1, argv_new+1, "net", net_func);
-
+  	 
+	rc = net_run_function(argc_new-1, argv_new+1, net_func, net_help);
+	
 	DEBUG(2,("return code = %d\n", rc));
 
-	libnetapi_free(c->netapi_ctx);
+	libnetapi_free(netapi_ctx);
 
-	poptFreeContext(pc);
-
 	TALLOC_FREE(frame);
 	return rc;
 }

Modified: branches/samba/upstream/source/utils/net.h
===================================================================
--- branches/samba/upstream/source/utils/net.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,91 +1,32 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2001 Andrew Bartlett (abartlet at samba.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; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-/*
+/* 
  * A function of this type is passed to the '
- * run_rpc_command' wrapper.  Must go before the net_proto.h
+ * run_rpc_command' wrapper.  Must go before the net_proto.h 
  * include
  */
 
 #include "lib/netapi/netapi.h"
 #include "libnet/libnet.h"
 
-struct net_context {
-	const char *opt_requester_name;
-	const char *opt_host;
-	const char *opt_password;
-	const char *opt_user_name;
-	bool opt_user_specified;
-	const char *opt_workgroup;
-	int opt_long_list_entries;
-	int opt_reboot;
-	int opt_force;
-	int opt_stdin;
-	int opt_port;
-	int opt_verbose;
-	int opt_maxusers;
-	const char *opt_comment;
-	const char *opt_container;
-	int opt_flags;
-	int opt_timeout;
-	const char *opt_target_workgroup;
-	int opt_machine_pass;
-	int opt_localgroup;
-	int opt_domaingroup;
-	int do_talloc_report;
-	const char *opt_newntname;
-	int opt_rid;
-	int opt_acls;
-	int opt_attrs;
-	int opt_timestamps;
-	const char *opt_exclude;
-	const char *opt_destination;
-	int opt_testmode;
-	bool opt_kerberos;
-	int opt_force_full_repl;
-	int opt_single_obj_repl;
-	int opt_clean_old_entries;
-
-	int opt_have_ip;
-	struct sockaddr_storage opt_dest_ip;
-	bool smb_encrypt;
-	struct libnetapi_ctx *netapi_ctx;
-
-	bool display_usage;
-	void *private_data;
-};
-
-#define NET_TRANSPORT_LOCAL 0x01
-#define NET_TRANSPORT_RAP   0x02
-#define NET_TRANSPORT_RPC   0x04
-#define NET_TRANSPORT_ADS   0x08
-
-struct functable {
-	const char *funcname;
-	int (*fn)(struct net_context *c, int argc, const char **argv);
-	int valid_transports;
-	const char *description;
-	const char *usage;
-};
-
-typedef NTSTATUS (*rpc_command_fn)(struct net_context *c,
-				const DOM_SID *,
-				const char *,
+typedef NTSTATUS (*rpc_command_fn)(const DOM_SID *,
+				const char *, 
 				struct cli_state *cli,
 				struct rpc_pipe_client *,
 				TALLOC_CTX *,
@@ -98,7 +39,6 @@
 	struct cli_state *cli_share_dst;
 	char *cwd;
 	uint16 attribute;
-	struct net_context *c;
 }copy_clistate;
 
 struct rpc_sh_ctx {
@@ -115,12 +55,10 @@
 
 struct rpc_sh_cmd {
 	const char *name;
-	struct rpc_sh_cmd *(*sub)(struct net_context *c,
-				  TALLOC_CTX *mem_ctx,
+	struct rpc_sh_cmd *(*sub)(TALLOC_CTX *mem_ctx,
 				  struct rpc_sh_ctx *ctx);
-	const struct ndr_syntax_id *interface;
-	NTSTATUS (*fn)(struct net_context *c, TALLOC_CTX *mem_ctx,
-		       struct rpc_sh_ctx *ctx,
+	int pipe_idx;
+	NTSTATUS (*fn)(TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
 		       struct rpc_pipe_client *pipe_hnd,
 		       int argc, const char **argv);
 	const char *help;
@@ -131,8 +69,7 @@
 /* INCLUDE FILES */
 
 #include "utils/net_proto.h"
-#include "utils/net_help_common.h"
-
+ 
 /* MACROS & DEFINES */
 
 #define NET_FLAGS_MASTER 			0x00000001
@@ -141,12 +78,60 @@
 								   as the default remote host for this
 								   operation?  For example, localhost
 								   is insane for a 'join' operation.  */
-#define NET_FLAGS_PDC 				0x00000008	/* PDC only */
+#define NET_FLAGS_PDC 				0x00000008	/* PDC only */ 
 #define NET_FLAGS_ANONYMOUS 			0x00000010	/* use an anonymous connection */
 #define NET_FLAGS_NO_PIPE 			0x00000020	/* don't open an RPC pipe */
-#define NET_FLAGS_SIGN				0x00000040	/* sign RPC connection */
-#define NET_FLAGS_SEAL				0x00000080	/* seal RPC connection */
 
 /* net share operation modes */
 #define NET_MODE_SHARE_MIGRATE 1
 
+extern int opt_maxusers;
+extern const char *opt_comment;
+extern const char *opt_container;
+extern int opt_flags;
+
+extern const char *opt_comment;
+
+extern const char *opt_target_workgroup;
+extern const char *opt_workgroup;
+extern int opt_long_list_entries;
+extern int opt_verbose;
+extern int opt_reboot;
+extern int opt_force;
+extern int opt_machine_pass;
+extern int opt_timeout;
+extern const char *opt_host;
+extern const char *opt_user_name;
+extern const char *opt_password;
+extern bool opt_user_specified;
+
+extern int opt_localgroup;
+extern int opt_domaingroup;
+extern const char *opt_newntname;
+extern int opt_rid;
+extern int opt_acls;
+extern int opt_attrs;
+extern int opt_timestamps;
+extern const char *opt_exclude;
+extern const char *opt_destination;
+extern int opt_testmode;
+
+extern int opt_have_ip;
+extern struct sockaddr_storage opt_dest_ip;
+extern struct libnetapi_ctx *netapi_ctx;
+
+extern const char *share_type[];
+
+/* Structure for mapping accounts to groups */
+/* Array element is the group rid */
+typedef struct _groupmap {
+	uint32 rid;
+	uint32 gidNumber;
+	fstring sambaSID;
+	fstring group_dn;
+} GROUPMAP;
+
+typedef struct _accountmap {
+	uint32 rid;
+	fstring cn;
+} ACCOUNTMAP;

Modified: branches/samba/upstream/source/utils/net_ads.c
===================================================================
--- branches/samba/upstream/source/utils/net_ads.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_ads.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,12 +25,48 @@
 
 #ifdef HAVE_ADS
 
+int net_ads_usage(int argc, const char **argv)
+{
+	d_printf("join [createupn[=principal]] [createcomputer=<org_unit>]\n");
+	d_printf("    Join the local machine to a ADS realm\n");
+	d_printf("leave\n");
+	d_printf("    Remove the local machine from a ADS realm\n");
+	d_printf("testjoin\n");
+	d_printf("    Validates the machine account in the domain\n");
+	d_printf("user\n");
+	d_printf("    List, add, or delete users in the realm\n");
+	d_printf("group\n");
+	d_printf("    List, add, or delete groups in the realm\n");
+	d_printf("info\n");
+	d_printf("    Displays details regarding a specific AD server\n");
+	d_printf("status\n");
+	d_printf("    Display details regarding the machine's account in AD\n");
+	d_printf("lookup\n");
+	d_printf("    Performs CLDAP query of AD domain controllers\n");
+	d_printf("password <username at realm> <password> -Uadmin_username at realm%%admin_pass\n");
+	d_printf("    Change a user's password using an admin account\n");
+	d_printf("    (note: use realm in UPPERCASE, prompts if password is obmitted)\n");
+	d_printf("changetrustpw\n");
+	d_printf("    Change the trust account password of this machine in the AD tree\n");
+	d_printf("printer [info | publish | remove] <printername> <servername>\n");
+	d_printf("    Lookup, add, or remove directory entry for a printer\n");
+	d_printf("{search,dn,sid}\n");
+	d_printf("    Issue LDAP search queries using a general filter, by DN, or by SID\n");
+	d_printf("keytab\n");
+	d_printf("    Manage a local keytab file based on the machine account in AD\n");
+	d_printf("dns\n");
+	d_printf("    Issue a dynamic DNS update request the server's hostname\n");
+	d_printf("    (using the machine credentials)\n");
+
+	return -1;
+}
+
 /* when we do not have sufficient input parameters to contact a remote domain
  * we always fall back to our own realm - Guenther*/
 
-static const char *assume_own_realm(struct net_context *c)
+static const char *assume_own_realm(void)
 {
-	if (!c->opt_host && strequal(lp_workgroup(), c->opt_target_workgroup)) {
+	if (!opt_host && strequal(lp_workgroup(), opt_target_workgroup)) {
 		return lp_realm();
 	}
 
@@ -40,7 +76,7 @@
 /*
   do a cldap netlogon query
 */
-static int net_ads_cldap_netlogon(struct net_context *c, ADS_STRUCT *ads)
+static int net_ads_cldap_netlogon(ADS_STRUCT *ads)
 {
 	char addr[INET6_ADDRSTRLEN];
 	struct nbt_cldap_netlogon_5 reply;
@@ -79,9 +115,7 @@
 		 "\tIs the closest DC:                          %s\n"
 		 "\tIs writable:                                %s\n"
 		 "\tHas a hardware clock:                       %s\n"
-		 "\tIs a non-domain NC serviced by LDAP server: %s\n"
-		 "\tIs NT6 DC that has some secrets:            %s\n"
-		 "\tIs NT6 DC that has all secrets:             %s\n",
+		 "\tIs a non-domain NC serviced by LDAP server: %s\n",
 		 (reply.server_type & NBT_SERVER_PDC) ? "yes" : "no",
 		 (reply.server_type & NBT_SERVER_GC) ? "yes" : "no",
 		 (reply.server_type & NBT_SERVER_LDAP) ? "yes" : "no",
@@ -91,11 +125,8 @@
 		 (reply.server_type & NBT_SERVER_CLOSEST) ? "yes" : "no",
 		 (reply.server_type & NBT_SERVER_WRITABLE) ? "yes" : "no",
 		 (reply.server_type & NBT_SERVER_GOOD_TIMESERV) ? "yes" : "no",
-		 (reply.server_type & NBT_SERVER_NDNC) ? "yes" : "no",
-		 (reply.server_type & NBT_SERVER_SELECT_SECRET_DOMAIN_6) ? "yes" : "no",
-		 (reply.server_type & NBT_SERVER_FULL_SECRET_DOMAIN_6) ? "yes" : "no");
+		 (reply.server_type & DS_SERVER_NDNC) ? "yes" : "no");
 
-
 	printf("Forest:\t\t\t%s\n", reply.forest);
 	printf("Domain:\t\t\t%s\n", reply.dns_domain);
 	printf("Domain Controller:\t%s\n", reply.pdc_dns_name);
@@ -119,46 +150,31 @@
   this implements the CLDAP based netlogon lookup requests
   for finding the domain controller of a ADS domain
 */
-static int net_ads_lookup(struct net_context *c, int argc, const char **argv)
+static int net_ads_lookup(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads lookup\n"
-			 "    Find the ADS DC using CLDAP lookup.\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup_nobind(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup_nobind(False, &ads))) {
 		d_fprintf(stderr, "Didn't find the cldap server!\n");
 		return -1;
 	}
 
 	if (!ads->config.realm) {
-		ads->config.realm = CONST_DISCARD(char *, c->opt_target_workgroup);
+		ads->config.realm = CONST_DISCARD(char *, opt_target_workgroup);
 		ads->ldap.port = 389;
 	}
 
-	return net_ads_cldap_netlogon(c, ads);
+	return net_ads_cldap_netlogon(ads);
 }
 
 
 
-static int net_ads_info(struct net_context *c, int argc, const char **argv)
+static int net_ads_info(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	char addr[INET6_ADDRSTRLEN];
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads info\n"
-			 "    Display information about an Active Directory "
-			 "server.\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup_nobind(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup_nobind(False, &ads))) {
 		d_fprintf(stderr, "Didn't find the ldap server!\n");
 		return -1;
 	}
@@ -196,16 +212,15 @@
 	setenv(KRB5_ENV_CCNAME, "MEMORY:net_ads", 1);
 }
 
-static ADS_STATUS ads_startup_int(struct net_context *c, bool only_own_domain,
-				  uint32 auth_flags, ADS_STRUCT **ads_ret)
+static ADS_STATUS ads_startup_int(bool only_own_domain, uint32 auth_flags, ADS_STRUCT **ads_ret)
 {
 	ADS_STRUCT *ads = NULL;
 	ADS_STATUS status;
-	bool need_password = false;
-	bool second_time = false;
+	bool need_password = False;
+	bool second_time = False;
 	char *cp;
 	const char *realm = NULL;
-	bool tried_closest_dc = false;
+	bool tried_closest_dc = False;
 
 	/* lp_realm() should be handled by a command line param,
 	   However, the join requires that realm be set in smb.conf
@@ -218,37 +233,37 @@
  	if (only_own_domain) {
 		realm = lp_realm();
 	} else {
-		realm = assume_own_realm(c);
+		realm = assume_own_realm();
 	}
 
-	ads = ads_init(realm, c->opt_target_workgroup, c->opt_host);
+	ads = ads_init(realm, opt_target_workgroup, opt_host);
 
-	if (!c->opt_user_name) {
-		c->opt_user_name = "administrator";
+	if (!opt_user_name) {
+		opt_user_name = "administrator";
 	}
 
-	if (c->opt_user_specified) {
-		need_password = true;
+	if (opt_user_specified) {
+		need_password = True;
 	}
 
 retry:
-	if (!c->opt_password && need_password && !c->opt_machine_pass) {
-		c->opt_password = net_prompt_pass(c, c->opt_user_name);
-		if (!c->opt_password) {
+	if (!opt_password && need_password && !opt_machine_pass) {
+		opt_password = net_prompt_pass(opt_user_name);
+		if (!opt_password) {
 			ads_destroy(&ads);
 			return ADS_ERROR(LDAP_NO_MEMORY);
 		}
 	}
 
-	if (c->opt_password) {
+	if (opt_password) {
 		use_in_memory_ccache();
 		SAFE_FREE(ads->auth.password);
-		ads->auth.password = smb_xstrdup(c->opt_password);
+		ads->auth.password = smb_xstrdup(opt_password);
 	}
 
 	ads->auth.flags |= auth_flags;
 	SAFE_FREE(ads->auth.user_name);
-	ads->auth.user_name = smb_xstrdup(c->opt_user_name);
+	ads->auth.user_name = smb_xstrdup(opt_user_name);
 
        /*
         * If the username is of the form "name at realm",
@@ -274,8 +289,8 @@
 		}
 
 		if (!need_password && !second_time && !(auth_flags & ADS_AUTH_NO_BIND)) {
-			need_password = true;
-			second_time = true;
+			need_password = True;
+			second_time = True;
 			goto retry;
 		} else {
 			ads_destroy(&ads);
@@ -287,9 +302,9 @@
 	 * This is done by reconnecting to ADS because only the first call to
 	 * ads_connect will give us our own sitename */
 
-	if ((only_own_domain || !c->opt_host) && !tried_closest_dc) {
+	if ((only_own_domain || !opt_host) && !tried_closest_dc) {
 
-		tried_closest_dc = true; /* avoid loop */
+		tried_closest_dc = True; /* avoid loop */
 
 		if (!ads->config.tried_closest_dc) {
 
@@ -307,14 +322,14 @@
 	return status;
 }
 
-ADS_STATUS ads_startup(struct net_context *c, bool only_own_domain, ADS_STRUCT **ads)
+ADS_STATUS ads_startup(bool only_own_domain, ADS_STRUCT **ads)
 {
-	return ads_startup_int(c, only_own_domain, 0, ads);
+	return ads_startup_int(only_own_domain, 0, ads);
 }
 
-ADS_STATUS ads_startup_nobind(struct net_context *c, bool only_own_domain, ADS_STRUCT **ads)
+ADS_STATUS ads_startup_nobind(bool only_own_domain, ADS_STRUCT **ads)
 {
-	return ads_startup_int(c, only_own_domain, ADS_AUTH_NO_BIND, ads);
+	return ads_startup_int(only_own_domain, ADS_AUTH_NO_BIND, ads);
 }
 
 /*
@@ -342,39 +357,32 @@
 	return 0;
 }
 
-int net_ads_check_our_domain(struct net_context *c)
+int net_ads_check_our_domain(void)
 {
 	return net_ads_check_int(lp_realm(), lp_workgroup(), NULL);
 }
 
-int net_ads_check(struct net_context *c)
+int net_ads_check(void)
 {
-	return net_ads_check_int(NULL, c->opt_workgroup, c->opt_host);
+	return net_ads_check_int(NULL, opt_workgroup, opt_host);
 }
 
 /*
    determine the netbios workgroup name for a domain
  */
-static int net_ads_workgroup(struct net_context *c, int argc, const char **argv)
+static int net_ads_workgroup(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	char addr[INET6_ADDRSTRLEN];
 	struct nbt_cldap_netlogon_5 reply;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads workgroup\n"
-			 "    Print the workgroup name\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup_nobind(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup_nobind(False, &ads))) {
 		d_fprintf(stderr, "Didn't find the cldap server!\n");
 		return -1;
 	}
 
 	if (!ads->config.realm) {
-		ads->config.realm = CONST_DISCARD(char *, c->opt_target_workgroup);
+		ads->config.realm = CONST_DISCARD(char *, opt_target_workgroup);
 		ads->ldap.port = 389;
 	}
 
@@ -409,24 +417,24 @@
 		}
 		SAFE_FREE(disp_fields[0]);
 		SAFE_FREE(disp_fields[1]);
-		return true;
+		return True;
 	}
 	if (!values) /* must be new field, indicate string field */
-		return true;
+		return True;
 	if (StrCaseCmp(field, "sAMAccountName") == 0) {
 		disp_fields[0] = SMB_STRDUP((char *) values[0]);
 	}
 	if (StrCaseCmp(field, "description") == 0)
 		disp_fields[1] = SMB_STRDUP((char *) values[0]);
-	return true;
+	return True;
 }
 
-static int net_ads_user_usage(struct net_context *c, int argc, const char **argv)
+static int net_ads_user_usage(int argc, const char **argv)
 {
-	return net_user_usage(c, argc, argv);
+	return net_help_user(argc, argv);
 }
 
-static int ads_user_add(struct net_context *c, int argc, const char **argv)
+static int ads_user_add(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
@@ -435,10 +443,9 @@
 	int rc = -1;
 	char *ou_str = NULL;
 
-	if (argc < 1 || c->display_usage)
-		return net_ads_user_usage(c, argc, argv);
+	if (argc < 1) return net_ads_user_usage(argc, argv);
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -454,13 +461,13 @@
 		goto done;
 	}
 
-	if (c->opt_container) {
-		ou_str = SMB_STRDUP(c->opt_container);
+	if (opt_container) {
+		ou_str = SMB_STRDUP(opt_container);
 	} else {
 		ou_str = ads_default_ou_string(ads, WELL_KNOWN_GUID_USERS);
 	}
 
-	status = ads_add_user_acct(ads, argv[0], ou_str, c->opt_comment);
+	status = ads_add_user_acct(ads, argv[0], ou_str, opt_comment);
 
 	if (!ADS_ERR_OK(status)) {
 		d_fprintf(stderr, "Could not add user %s: %s\n", argv[0],
@@ -505,7 +512,7 @@
 	return rc;
 }
 
-static int ads_user_info(struct net_context *c, int argc, const char **argv)
+static int ads_user_info(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -515,8 +522,8 @@
 	char **grouplist;
 	char *escaped_user;
 
-	if (argc < 1 || c->display_usage) {
-		return net_ads_user_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_ads_user_usage(argc, argv);
 	}
 
 	escaped_user = escape_ldap_string_alloc(argv[0]);
@@ -526,7 +533,7 @@
 		return -1;
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		SAFE_FREE(escaped_user);
 		return -1;
 	}
@@ -562,7 +569,7 @@
 	return 0;
 }
 
-static int ads_user_delete(struct net_context *c, int argc, const char **argv)
+static int ads_user_delete(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -570,10 +577,10 @@
 	char *userdn;
 
 	if (argc < 1) {
-		return net_ads_user_usage(c, argc, argv);
+		return net_ads_user_usage(argc, argv);
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -599,34 +606,13 @@
 	return -1;
 }
 
-int net_ads_user(struct net_context *c, int argc, const char **argv)
+int net_ads_user(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			ads_user_add,
-			NET_TRANSPORT_ADS,
-			"Add an AD user",
-			"net ads user add\n"
-			"    Add an AD user"
-		},
-		{
-			"info",
-			ads_user_info,
-			NET_TRANSPORT_ADS,
-			"Display information about an AD user",
-			"net ads user info\n"
-			"    Display information about an AD user"
-		},
-		{
-			"delete",
-			ads_user_delete,
-			NET_TRANSPORT_ADS,
-			"Delete an AD user",
-			"net ads user delete\n"
-			"    Delete an AD user"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", ads_user_add},
+		{"INFO", ads_user_info},
+		{"DELETE", ads_user_delete},
+		{NULL, NULL}
 	};
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -635,41 +621,33 @@
 	char *disp_fields[2] = {NULL, NULL};
 
 	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net ads user\n"
-				 "    List AD users\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+		if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 			return -1;
 		}
 
-		if (c->opt_long_list_entries)
-			d_printf("\nUser name             Comment"
+		if (opt_long_list_entries)
+			d_printf("\nUser name             Comment"\
 				 "\n-----------------------------\n");
 
 		rc = ads_do_search_all_fn(ads, ads->config.bind_path,
 					  LDAP_SCOPE_SUBTREE,
 					  "(objectCategory=user)",
-					  c->opt_long_list_entries ? longattrs :
+					  opt_long_list_entries ? longattrs :
 					  shortattrs, usergrp_display,
 					  disp_fields);
 		ads_destroy(&ads);
 		return ADS_ERR_OK(rc) ? 0 : -1;
 	}
 
-	return net_run_function(c, argc, argv, "net ads user", func);
+	return net_run_function(argc, argv, func, net_ads_user_usage);
 }
 
-static int net_ads_group_usage(struct net_context *c, int argc, const char **argv)
+static int net_ads_group_usage(int argc, const char **argv)
 {
-	return net_group_usage(c, argc, argv);
+	return net_help_group(argc, argv);
 }
 
-static int ads_group_add(struct net_context *c, int argc, const char **argv)
+static int ads_group_add(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
@@ -677,11 +655,11 @@
 	int rc = -1;
 	char *ou_str = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		return net_ads_group_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_ads_group_usage(argc, argv);
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -697,13 +675,13 @@
 		goto done;
 	}
 
-	if (c->opt_container) {
-		ou_str = SMB_STRDUP(c->opt_container);
+	if (opt_container) {
+		ou_str = SMB_STRDUP(opt_container);
 	} else {
 		ou_str = ads_default_ou_string(ads, WELL_KNOWN_GUID_USERS);
 	}
 
-	status = ads_add_group_acct(ads, argv[0], ou_str, c->opt_comment);
+	status = ads_add_group_acct(ads, argv[0], ou_str, opt_comment);
 
 	if (ADS_ERR_OK(status)) {
 		d_printf("Group %s added\n", argv[0]);
@@ -721,18 +699,18 @@
 	return rc;
 }
 
-static int ads_group_delete(struct net_context *c, int argc, const char **argv)
+static int ads_group_delete(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
 	LDAPMessage *res = NULL;
 	char *groupdn;
 
-	if (argc < 1 || c->display_usage) {
-		return net_ads_group_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_ads_group_usage(argc, argv);
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -758,26 +736,12 @@
 	return -1;
 }
 
-int net_ads_group(struct net_context *c, int argc, const char **argv)
+int net_ads_group(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			ads_group_add,
-			NET_TRANSPORT_ADS,
-			"Add an AD group",
-			"net ads group add\n"
-			"    Add an AD group"
-		},
-		{
-			"delete",
-			ads_group_delete,
-			NET_TRANSPORT_ADS,
-			"Delete an AD group",
-			"net ads group delete\n"
-			"    Delete an AD group"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", ads_group_add},
+		{"DELETE", ads_group_delete},
+		{NULL, NULL}
 	};
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -786,48 +750,33 @@
 	char *disp_fields[2] = {NULL, NULL};
 
 	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net ads group\n"
-				 "    List AD groups\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+		if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 			return -1;
 		}
 
-		if (c->opt_long_list_entries)
-			d_printf("\nGroup name            Comment"
+		if (opt_long_list_entries)
+			d_printf("\nGroup name            Comment"\
 				 "\n-----------------------------\n");
 		rc = ads_do_search_all_fn(ads, ads->config.bind_path,
 					  LDAP_SCOPE_SUBTREE,
 					  "(objectCategory=group)",
-					  c->opt_long_list_entries ? longattrs :
+					  opt_long_list_entries ? longattrs :
 					  shortattrs, usergrp_display,
 					  disp_fields);
 
 		ads_destroy(&ads);
 		return ADS_ERR_OK(rc) ? 0 : -1;
 	}
-	return net_run_function(c, argc, argv, "net ads group", func);
+	return net_run_function(argc, argv, func, net_ads_group_usage);
 }
 
-static int net_ads_status(struct net_context *c, int argc, const char **argv)
+static int net_ads_status(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
 	LDAPMessage *res;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads status\n"
-			 "    Display machine account details\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		return -1;
 	}
 
@@ -856,19 +805,12 @@
  with full control to the computer object's ACL.
 *******************************************************************/
 
-static int net_ads_leave(struct net_context *c, int argc, const char **argv)
+static int net_ads_leave(int argc, const char **argv)
 {
 	TALLOC_CTX *ctx;
 	struct libnet_UnjoinCtx *r = NULL;
 	WERROR werr;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads leave\n"
-			 "    Leave an AD domain\n");
-		return 0;
-	}
-
 	if (!*lp_realm()) {
 		d_fprintf(stderr, "No realm set, are we joined ?\n");
 		return -1;
@@ -879,9 +821,7 @@
 		return -1;
 	}
 
-	if (!c->opt_kerberos) {
-		use_in_memory_ccache();
-	}
+	use_in_memory_ccache();
 
 	werr = libnet_init_UnjoinCtx(ctx, &r);
 	if (!W_ERROR_IS_OK(werr)) {
@@ -890,11 +830,10 @@
 	}
 
 	r->in.debug		= true;
-	r->in.use_kerberos	= c->opt_kerberos;
-	r->in.dc_name		= c->opt_host;
+	r->in.dc_name		= opt_host;
 	r->in.domain_name	= lp_realm();
-	r->in.admin_account	= c->opt_user_name;
-	r->in.admin_password	= net_prompt_pass(c, c->opt_user_name);
+	r->in.admin_account	= opt_user_name;
+	r->in.admin_password	= net_prompt_pass(opt_user_name);
 	r->in.modify_config	= lp_config_backend_is_registry();
 	r->in.unjoin_flags	= WKSSVC_JOIN_FLAGS_JOIN_TYPE |
 				  WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE;
@@ -935,7 +874,7 @@
 	return -1;
 }
 
-static NTSTATUS net_ads_join_ok(struct net_context *c)
+static NTSTATUS net_ads_join_ok(void)
 {
 	ADS_STRUCT *ads = NULL;
 	ADS_STATUS status;
@@ -945,9 +884,9 @@
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
-	net_use_krb_machine_account(c);
+	net_use_krb_machine_account();
 
-	status = ads_startup(c, true, &ads);
+	status = ads_startup(True, &ads);
 	if (!ADS_ERR_OK(status)) {
 		return ads_ntstatus(status);
 	}
@@ -959,20 +898,13 @@
 /*
   check that an existing join is OK
  */
-int net_ads_testjoin(struct net_context *c, int argc, const char **argv)
+int net_ads_testjoin(int argc, const char **argv)
 {
 	NTSTATUS status;
 	use_in_memory_ccache();
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads testjoin\n"
-			 "    Test if the existing join is ok\n");
-		return 0;
-	}
-
 	/* Display success or failure */
-	status = net_ads_join_ok(c);
+	status = net_ads_join_ok();
 	if (!NT_STATUS_IS_OK(status)) {
 		fprintf(stderr,"Join to domain is not valid: %s\n",
 			get_friendly_nt_error_msg(status));
@@ -1140,7 +1072,7 @@
 /*******************************************************************
  ********************************************************************/
 
-static int net_ads_join_usage(struct net_context *c, int argc, const char **argv)
+static int net_ads_join_usage(int argc, const char **argv)
 {
 	d_printf("net ads join [options]\n");
 	d_printf("Valid options:\n");
@@ -1163,13 +1095,13 @@
 /*******************************************************************
  ********************************************************************/
 
-int net_ads_join(struct net_context *c, int argc, const char **argv)
+int net_ads_join(int argc, const char **argv)
 {
 	TALLOC_CTX *ctx = NULL;
 	struct libnet_JoinCtx *r = NULL;
 	const char *domain = lp_realm();
 	WERROR werr = WERR_SETUP_NOT_JOINED;
-	bool createupn = false;
+	bool createupn = False;
 	const char *machineupn = NULL;
 	const char *create_in_ou = NULL;
 	int i;
@@ -1177,9 +1109,6 @@
 	const char *os_version = NULL;
 	bool modify_config = lp_config_backend_is_registry();
 
-	if (c->display_usage)
-		return net_ads_join_usage(c, argc, argv);
-
 	if (!modify_config) {
 
 		werr = check_ads_config();
@@ -1195,9 +1124,7 @@
 		goto fail;
 	}
 
-	if (!c->opt_kerberos) {
-		use_in_memory_ccache();
-	}
+	use_in_memory_ccache();
 
 	werr = libnet_init_JoinCtx(ctx, &r);
 	if (!W_ERROR_IS_OK(werr)) {
@@ -1208,7 +1135,7 @@
 
 	for ( i=0; i<argc; i++ ) {
 		if ( !StrnCaseCmp(argv[i], "createupn", strlen("createupn")) ) {
-			createupn = true;
+			createupn = True;
 			machineupn = get_string_param(argv[i]);
 		}
 		else if ( !StrnCaseCmp(argv[i], "createcomputer", strlen("createcomputer")) ) {
@@ -1251,11 +1178,10 @@
 	r->in.account_ou	= create_in_ou;
 	r->in.os_name		= os_name;
 	r->in.os_version	= os_version;
-	r->in.dc_name		= c->opt_host;
-	r->in.admin_account	= c->opt_user_name;
-	r->in.admin_password	= net_prompt_pass(c, c->opt_user_name);
+	r->in.dc_name		= opt_host;
+	r->in.admin_account	= opt_user_name;
+	r->in.admin_password	= net_prompt_pass(opt_user_name);
 	r->in.debug		= true;
-	r->in.use_kerberos	= c->opt_kerberos;
 	r->in.modify_config	= modify_config;
 	r->in.join_flags	= WKSSVC_JOIN_FLAGS_JOIN_TYPE |
 				  WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE |
@@ -1329,9 +1255,26 @@
 /*******************************************************************
  ********************************************************************/
 
-static int net_ads_dns_register(struct net_context *c, int argc, const char **argv)
+static int net_ads_dns_usage(int argc, const char **argv)
 {
 #if defined(WITH_DNS_UPDATES)
+	d_printf("net ads dns <command>\n");
+	d_printf("Valid commands:\n");
+	d_printf("   register         Issue a dynamic DNS update request for our hostname\n");
+
+	return 0;
+#else
+	d_fprintf(stderr, "DNS update support not enabled at compile time!\n");
+	return -1;
+#endif
+}
+
+/*******************************************************************
+ ********************************************************************/
+
+static int net_ads_dns_register(int argc, const char **argv)
+{
+#if defined(WITH_DNS_UPDATES)
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
 	TALLOC_CTX *ctx;
@@ -1340,10 +1283,8 @@
 	talloc_enable_leak_report();
 #endif
 
-	if (argc > 0 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads dns register\n"
-			 "    Register hostname with DNS\n");
+	if (argc > 0) {
+		d_fprintf(stderr, "net ads dns register\n");
 		return -1;
 	}
 
@@ -1352,7 +1293,7 @@
 		return -1;
 	}
 
-	status = ads_startup(c, true, &ads);
+	status = ads_startup(True, &ads);
 	if ( !ADS_ERR_OK(status) ) {
 		DEBUG(1, ("error on ads_startup: %s\n", ads_errstr(status)));
 		TALLOC_FREE(ctx);
@@ -1382,7 +1323,7 @@
 DNS_ERROR do_gethostbyname(const char *server, const char *host);
 #endif
 
-static int net_ads_dns_gethostbyname(struct net_context *c, int argc, const char **argv)
+static int net_ads_dns_gethostbyname(int argc, const char **argv)
 {
 #if defined(WITH_DNS_UPDATES)
 	DNS_ERROR err;
@@ -1391,12 +1332,9 @@
 	talloc_enable_leak_report();
 #endif
 
-	if (argc != 2 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads dns gethostbyname <server> <name>\n"
-			 "  Look up hostname from the AD\n"
-			 "    server\tName server to use\n"
-			 "    name\tName to look up\n");
+	if (argc != 2) {
+		d_fprintf(stderr, "net ads dns gethostbyname <server> "
+			  "<name>\n");
 		return -1;
 	}
 
@@ -1407,35 +1345,21 @@
 	return 0;
 }
 
-static int net_ads_dns(struct net_context *c, int argc, const char *argv[])
+static int net_ads_dns(int argc, const char *argv[])
 {
 	struct functable func[] = {
-		{
-			"register",
-			net_ads_dns_register,
-			NET_TRANSPORT_ADS,
-			"Add host dns entry to AD",
-			"net ads dns register\n"
-			"    Add host dns entry to AD"
-		},
-		{
-			"gethostbyname",
-			net_ads_dns_gethostbyname,
-			NET_TRANSPORT_ADS,
-			"Look up host",
-			"net ads dns gethostbyname\n"
-			"    Look up host"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"REGISTER", net_ads_dns_register},
+		{"GETHOSTBYNAME", net_ads_dns_gethostbyname},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net ads dns", func);
+	return net_run_function(argc, argv, func, net_ads_dns_usage);
 }
 
 /*******************************************************************
  ********************************************************************/
 
-int net_ads_printer_usage(struct net_context *c, int argc, const char **argv)
+int net_ads_printer_usage(int argc, const char **argv)
 {
 	d_printf(
 "\nnet ads printer search <printer>"
@@ -1455,20 +1379,13 @@
 /*******************************************************************
  ********************************************************************/
 
-static int net_ads_printer_search(struct net_context *c, int argc, const char **argv)
+static int net_ads_printer_search(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
 	LDAPMessage *res = NULL;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads printer search\n"
-			 "    List printers in the AD\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -1494,23 +1411,14 @@
 	return 0;
 }
 
-static int net_ads_printer_info(struct net_context *c, int argc, const char **argv)
+static int net_ads_printer_info(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
 	const char *servername, *printername;
 	LDAPMessage *res = NULL;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads printer info [printername [servername]]\n"
-			 "  Display printer info from AD\n"
-			 "    printername\tPrinter name or wildcard\n"
-			 "    servername\tName of the print server\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -1550,7 +1458,7 @@
 	return 0;
 }
 
-static int net_ads_printer_publish(struct net_context *c, int argc, const char **argv)
+static int net_ads_printer_publish(int argc, const char **argv)
 {
         ADS_STRUCT *ads;
         ADS_STATUS rc;
@@ -1565,19 +1473,14 @@
 	char *srv_cn_escaped = NULL, *printername_escaped = NULL;
 	LDAPMessage *res = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads printer publish <printername> [servername]\n"
-			 "  Publish printer in AD\n"
-			 "    printername\tName of the printer\n"
-			 "    servername\tName of the print server\n");
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		talloc_destroy(mem_ctx);
 		return -1;
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
+	if (argc < 1) {
 		talloc_destroy(mem_ctx);
-		return -1;
+		return net_ads_printer_usage(argc, argv);
 	}
 
 	printername = argv[0];
@@ -1595,8 +1498,8 @@
 	nt_status = cli_full_connection(&cli, global_myname(), servername,
 					&server_ss, 0,
 					"IPC$", "IPC",
-					c->opt_user_name, c->opt_workgroup,
-					c->opt_password ? c->opt_password : "",
+					opt_user_name, opt_workgroup,
+					opt_password ? opt_password : "",
 					CLI_FULL_CONNECTION_USE_KERBEROS,
 					Undefined, NULL);
 
@@ -1639,8 +1542,8 @@
 	SAFE_FREE(srv_cn_escaped);
 	SAFE_FREE(printername_escaped);
 
-	nt_status = cli_rpc_pipe_open_noauth(cli, &syntax_spoolss, &pipe_hnd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SPOOLSS, &nt_status);
+	if (!pipe_hnd) {
 		d_fprintf(stderr, "Unable to open a connnection to the spoolss pipe on %s\n",
 			 servername);
 		SAFE_FREE(prt_dn);
@@ -1674,7 +1577,7 @@
 	return 0;
 }
 
-static int net_ads_printer_remove(struct net_context *c, int argc, const char **argv)
+static int net_ads_printer_remove(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -1682,17 +1585,12 @@
 	char *prt_dn;
 	LDAPMessage *res = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads printer remove <printername> [servername]\n"
-			 "  Remove a printer from the AD\n"
-			 "    printername\tName of the printer\n"
-			 "    servername\tName of the print server\n");
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		return -1;
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
-		return -1;
+	if (argc < 1) {
+		return net_ads_printer_usage(argc, argv);
 	}
 
 	if (argc > 1) {
@@ -1732,68 +1630,32 @@
 	return 0;
 }
 
-static int net_ads_printer(struct net_context *c, int argc, const char **argv)
+static int net_ads_printer(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"search",
-			net_ads_printer_search,
-			NET_TRANSPORT_ADS,
-			"Search for a printer",
-			"net ads printer search\n"
-			"    Search for a printer"
-		},
-		{
-			"info",
-			net_ads_printer_info,
-			NET_TRANSPORT_ADS,
-			"Display printer information",
-			"net ads printer info\n"
-			"    Display printer information"
-		},
-		{
-			"publish",
-			net_ads_printer_publish,
-			NET_TRANSPORT_ADS,
-			"Publish a printer",
-			"net ads printer publish\n"
-			"    Publish a printer"
-		},
-		{
-			"remove",
-			net_ads_printer_remove,
-			NET_TRANSPORT_ADS,
-			"Delete a printer",
-			"net ads printer remove\n"
-			"    Delete a printer"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"SEARCH", net_ads_printer_search},
+		{"INFO", net_ads_printer_info},
+		{"PUBLISH", net_ads_printer_publish},
+		{"REMOVE", net_ads_printer_remove},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net ads printer", func);
+	return net_run_function(argc, argv, func, net_ads_printer_usage);
 }
 
 
-static int net_ads_password(struct net_context *c, int argc, const char **argv)
+static int net_ads_password(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
-	const char *auth_principal = c->opt_user_name;
-	const char *auth_password = c->opt_password;
+	const char *auth_principal = opt_user_name;
+	const char *auth_password = opt_password;
 	char *realm = NULL;
 	char *new_password = NULL;
-	char *chr, *prompt;
+	char *c, *prompt;
 	const char *user;
 	ADS_STATUS ret;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads password <username>\n"
-			 "  Change password for user\n"
-			 "    username\tName of user to change password for\n");
-		return 0;
-	}
-
-	if (c->opt_user_name == NULL || c->opt_password == NULL) {
+	if (opt_user_name == NULL || opt_password == NULL) {
 		d_fprintf(stderr, "You must supply an administrator username/password\n");
 		return -1;
 	}
@@ -1805,21 +1667,21 @@
 
 	user = argv[0];
 	if (!strchr_m(user, '@')) {
-		asprintf(&chr, "%s@%s", argv[0], lp_realm());
-		user = chr;
+		asprintf(&c, "%s@%s", argv[0], lp_realm());
+		user = c;
 	}
 
 	use_in_memory_ccache();
-	chr = strchr_m(auth_principal, '@');
-	if (chr) {
-		realm = ++chr;
+	c = strchr_m(auth_principal, '@');
+	if (c) {
+		realm = ++c;
 	} else {
 		realm = lp_realm();
 	}
 
 	/* use the realm so we can eventually change passwords for users
 	in realms other than default */
-	if (!(ads = ads_init(realm, c->opt_workgroup, c->opt_host))) {
+	if (!(ads = ads_init(realm, opt_workgroup, opt_host))) {
 		return -1;
 	}
 
@@ -1854,30 +1716,23 @@
 	return 0;
 }
 
-int net_ads_changetrustpw(struct net_context *c, int argc, const char **argv)
+int net_ads_changetrustpw(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	char *host_principal;
 	fstring my_name;
 	ADS_STATUS ret;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads changetrustpw\n"
-			 "    Change the machine account's trust password\n");
-		return 0;
-	}
-
 	if (!secrets_init()) {
 		DEBUG(1,("Failed to initialise secrets database\n"));
 		return -1;
 	}
 
-	net_use_krb_machine_account(c);
+	net_use_krb_machine_account();
 
 	use_in_memory_ccache();
 
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		return -1;
 	}
 
@@ -1913,16 +1768,16 @@
 /*
   help for net ads search
 */
-static int net_ads_search_usage(struct net_context *c, int argc, const char **argv)
+static int net_ads_search_usage(int argc, const char **argv)
 {
 	d_printf(
-		"\nnet ads search <expression> <attributes...>\n"
-		"\nPerform a raw LDAP search on a ADS server and dump the results.\n"
-		"The expression is a standard LDAP search expression, and the\n"
-		"attributes are a list of LDAP fields to show in the results.\n\n"
+		"\nnet ads search <expression> <attributes...>\n"\
+		"\nperform a raw LDAP search on a ADS server and dump the results\n"\
+		"The expression is a standard LDAP search expression, and the\n"\
+		"attributes are a list of LDAP fields to show in the results\n\n"\
 		"Example: net ads search '(objectCategory=group)' sAMAccountName\n\n"
 		);
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
@@ -1930,7 +1785,7 @@
 /*
   general ADS search function. Useful in diagnosing problems in ADS
 */
-static int net_ads_search(struct net_context *c, int argc, const char **argv)
+static int net_ads_search(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -1938,11 +1793,11 @@
 	const char **attrs;
 	LDAPMessage *res = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		return net_ads_search_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_ads_search_usage(argc, argv);
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -1973,17 +1828,17 @@
 /*
   help for net ads search
 */
-static int net_ads_dn_usage(struct net_context *c, int argc, const char **argv)
+static int net_ads_dn_usage(int argc, const char **argv)
 {
 	d_printf(
-		"\nnet ads dn <dn> <attributes...>\n"
-		"\nperform a raw LDAP search on a ADS server and dump the results\n"
-		"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n"
-		"to show in the results\n\n"
+		"\nnet ads dn <dn> <attributes...>\n"\
+		"\nperform a raw LDAP search on a ADS server and dump the results\n"\
+		"The DN standard LDAP DN, and the attributes are a list of LDAP fields \n"\
+		"to show in the results\n\n"\
 		"Example: net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' sAMAccountName\n\n"
 		"Note: the DN must be provided properly escaped. See RFC 4514 for details\n\n"
 		);
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
@@ -1991,7 +1846,7 @@
 /*
   general ADS search function. Useful in diagnosing problems in ADS
 */
-static int net_ads_dn(struct net_context *c, int argc, const char **argv)
+static int net_ads_dn(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -1999,11 +1854,11 @@
 	const char **attrs;
 	LDAPMessage *res = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		return net_ads_dn_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_ads_dn_usage(argc, argv);
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -2033,16 +1888,16 @@
 /*
   help for net ads sid search
 */
-static int net_ads_sid_usage(struct net_context *c, int argc, const char **argv)
+static int net_ads_sid_usage(int argc, const char **argv)
 {
 	d_printf(
-		"\nnet ads sid <sid> <attributes...>\n"
-		"\nperform a raw LDAP search on a ADS server and dump the results\n"
-		"The SID is in string format, and the attributes are a list of LDAP fields \n"
-		"to show in the results\n\n"
+		"\nnet ads sid <sid> <attributes...>\n"\
+		"\nperform a raw LDAP search on a ADS server and dump the results\n"\
+		"The SID is in string format, and the attributes are a list of LDAP fields \n"\
+		"to show in the results\n\n"\
 		"Example: net ads sid 'S-1-5-32' distinguishedName\n\n"
 		);
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
@@ -2050,7 +1905,7 @@
 /*
   general ADS search function. Useful in diagnosing problems in ADS
 */
-static int net_ads_sid(struct net_context *c, int argc, const char **argv)
+static int net_ads_sid(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS rc;
@@ -2059,11 +1914,11 @@
 	LDAPMessage *res = NULL;
 	DOM_SID sid;
 
-	if (argc < 1 || c->display_usage) {
-		return net_ads_sid_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_ads_sid_usage(argc, argv);
 	}
 
-	if (!ADS_ERR_OK(ads_startup(c, false, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(False, &ads))) {
 		return -1;
 	}
 
@@ -2094,19 +1949,35 @@
 	return 0;
 }
 
-static int net_ads_keytab_flush(struct net_context *c, int argc, const char **argv)
+
+static int net_ads_keytab_usage(int argc, const char **argv)
 {
+	d_printf(
+		"net ads keytab <COMMAND>\n"\
+"<COMMAND> can be either:\n"\
+"  ADD       Adds new service principal\n"\
+"  CREATE    Creates a fresh keytab\n"\
+"  FLUSH     Flushes out all keytab entries\n"\
+"  HELP      Prints this help message\n"\
+"  LIST      List the keytab\n"\
+"The ADD and LIST command will take arguments, the other commands\n"\
+"will not take any arguments.   The arguments given to ADD\n"\
+"should be a list of principals to add.  For example, \n"\
+"   net ads keytab add srv1 srv2\n"\
+"will add principals for the services srv1 and srv2 to the\n"\
+"system's keytab.\n"\
+"The LIST command takes a keytabname.\n"\
+"\n"
+		);
+	return -1;
+}
+
+static int net_ads_keytab_flush(int argc, const char **argv)
+{
 	int ret;
 	ADS_STRUCT *ads;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads keytab flush\n"
-			 "    Delete the whole keytab\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		return -1;
 	}
 	ret = ads_keytab_flush(ads);
@@ -2114,23 +1985,14 @@
 	return ret;
 }
 
-static int net_ads_keytab_add(struct net_context *c, int argc, const char **argv)
+static int net_ads_keytab_add(int argc, const char **argv)
 {
 	int i;
 	int ret = 0;
 	ADS_STRUCT *ads;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads keytab add <principal> [principal ...]\n"
-			 "  Add principals to local keytab\n"
-			 "    principal\tKerberos principal to add to "
-			 "keytab\n");
-		return 0;
-	}
-
 	d_printf("Processing principals to add...\n");
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		return -1;
 	}
 	for (i = 0; i < argc; i++) {
@@ -2140,19 +2002,12 @@
 	return ret;
 }
 
-static int net_ads_keytab_create(struct net_context *c, int argc, const char **argv)
+static int net_ads_keytab_create(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	int ret;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads keytab create\n"
-			 "    Create new default keytab\n");
-		return 0;
-	}
-
-	if (!ADS_ERR_OK(ads_startup(c, true, &ads))) {
+	if (!ADS_ERR_OK(ads_startup(True, &ads))) {
 		return -1;
 	}
 	ret = ads_keytab_create_default(ads);
@@ -2160,18 +2015,10 @@
 	return ret;
 }
 
-static int net_ads_keytab_list(struct net_context *c, int argc, const char **argv)
+static int net_ads_keytab_list(int argc, const char **argv)
 {
 	const char *keytab = NULL;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads keytab list [keytab]\n"
-			 "  List a local keytab\n"
-			 "    keytab\tKeytab to list\n");
-		return 0;
-	}
-
 	if (argc >= 1) {
 		keytab = argv[0];
 	}
@@ -2180,42 +2027,15 @@
 }
 
 
-int net_ads_keytab(struct net_context *c, int argc, const char **argv)
+int net_ads_keytab(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			net_ads_keytab_add,
-			NET_TRANSPORT_ADS,
-			"Add a service principal",
-			"net ads keytab add\n"
-			"    Add a service principal"
-		},
-		{
-			"create",
-			net_ads_keytab_create,
-			NET_TRANSPORT_ADS,
-			"Create a fresh keytab",
-			"net ads keytab create\n"
-			"    Create a fresh keytab"
-		},
-		{
-			"flush",
-			net_ads_keytab_flush,
-			NET_TRANSPORT_ADS,
-			"Remove all keytab entries",
-			"net ads keytab flush\n"
-			"    Remove all keytab entries"
-		},
-		{
-			"list",
-			net_ads_keytab_list,
-			NET_TRANSPORT_ADS,
-			"List a keytab",
-			"net ads keytab list\n"
-			"    List a keytab"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", net_ads_keytab_add},
+		{"CREATE", net_ads_keytab_create},
+		{"FLUSH", net_ads_keytab_flush},
+		{"HELP", net_ads_keytab_usage},
+		{"LIST", net_ads_keytab_list},
+		{NULL, NULL}
 	};
 
 	if (!lp_use_kerberos_keytab()) {
@@ -2223,21 +2043,26 @@
 use keytab functions.\n");
 	}
 
-	return net_run_function(c, argc, argv, "net ads keytab", func);
+	return net_run_function(argc, argv, func, net_ads_keytab_usage);
 }
 
-static int net_ads_kerberos_renew(struct net_context *c, int argc, const char **argv)
+static int net_ads_kerberos_usage(int argc, const char **argv)
 {
-	int ret = -1;
+	d_printf(
+		"net ads kerberos <COMMAND>\n"\
+		"<COMMAND> can be either:\n"\
+		"  RENEW     Renew TGT from existing credential cache\n"\
+		"  PAC       Dumps the Kerberos PAC\n"\
+		"  KINIT     Retrieve Ticket Granting Ticket (TGT)\n"\
+		"\n"
+	);
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads kerberos renew\n"
-			 "    Renew TGT from existing credential cache\n");
-		return 0;
-	}
+	return -1;
+}
 
-	ret = smb_krb5_renew_ticket(NULL, NULL, NULL, NULL);
+static int net_ads_kerberos_renew(int argc, const char **argv)
+{
+	int ret = smb_krb5_renew_ticket(NULL, NULL, NULL, NULL);
 	if (ret) {
 		d_printf("failed to renew kerberos ticket: %s\n",
 			error_message(ret));
@@ -2245,7 +2070,7 @@
 	return ret;
 }
 
-static int net_ads_kerberos_pac(struct net_context *c, int argc, const char **argv)
+static int net_ads_kerberos_pac(int argc, const char **argv)
 {
 	struct PAC_DATA *pac = NULL;
 	struct PAC_LOGON_INFO *info = NULL;
@@ -2253,29 +2078,22 @@
 	NTSTATUS status;
 	int ret = -1;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads kerberos pac\n"
-			 "    Dump the Kerberos PAC\n");
-		return 0;
-	}
-
 	mem_ctx = talloc_init("net_ads_kerberos_pac");
 	if (!mem_ctx) {
 		goto out;
 	}
 
-	c->opt_password = net_prompt_pass(c, c->opt_user_name);
+	opt_password = net_prompt_pass(opt_user_name);
 
 	status = kerberos_return_pac(mem_ctx,
-				     c->opt_user_name,
-				     c->opt_password,
+				     opt_user_name,
+				     opt_password,
 			     	     0,
 				     NULL,
 				     NULL,
 				     NULL,
-				     true,
-				     true,
+				     True,
+				     True,
 				     2592000, /* one month */
 				     &pac);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -2297,34 +2115,27 @@
 	return ret;
 }
 
-static int net_ads_kerberos_kinit(struct net_context *c, int argc, const char **argv)
+static int net_ads_kerberos_kinit(int argc, const char **argv)
 {
 	TALLOC_CTX *mem_ctx = NULL;
 	int ret = -1;
 	NTSTATUS status;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads kerberos kinit\n"
-			 "    Get Ticket Granting Ticket (TGT) for the user\n");
-		return 0;
-	}
-
 	mem_ctx = talloc_init("net_ads_kerberos_kinit");
 	if (!mem_ctx) {
 		goto out;
 	}
 
-	c->opt_password = net_prompt_pass(c, c->opt_user_name);
+	opt_password = net_prompt_pass(opt_user_name);
 
-	ret = kerberos_kinit_password_ext(c->opt_user_name,
-					  c->opt_password,
+	ret = kerberos_kinit_password_ext(opt_user_name,
+					  opt_password,
 					  0,
 					  NULL,
 					  NULL,
 					  NULL,
-					  true,
-					  true,
+					  True,
+					  True,
 					  2592000, /* one month */
 					  &status);
 	if (ret) {
@@ -2335,200 +2146,69 @@
 	return ret;
 }
 
-int net_ads_kerberos(struct net_context *c, int argc, const char **argv)
+int net_ads_kerberos(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"kinit",
-			net_ads_kerberos_kinit,
-			NET_TRANSPORT_ADS,
-			"Retrieve Ticket Granting Ticket (TGT)",
-			"net ads kerberos kinit\n"
-			"    Receive Ticket Granting Ticket (TGT)"
-		},
-		{
-			"renew",
-			net_ads_kerberos_renew,
-			NET_TRANSPORT_ADS,
-			"Renew Ticket Granting Ticket from credential cache"
-			"net ads kerberos renew\n"
-			"    Renew Ticket Granting Ticket from credential cache"
-		},
-		{
-			"pac",
-			net_ads_kerberos_pac,
-			NET_TRANSPORT_ADS,
-			"Dump Kerberos PAC",
-			"net ads kerberos pac\n"
-			"    Dump Kerberos PAC"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"KINIT", net_ads_kerberos_kinit},
+		{"RENEW", net_ads_kerberos_renew},
+		{"PAC", net_ads_kerberos_pac},
+		{"HELP", net_ads_kerberos_usage},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net ads kerberos", func);
+	return net_run_function(argc, argv, func, net_ads_kerberos_usage);
 }
 
-int net_ads(struct net_context *c, int argc, const char **argv)
+
+int net_ads_help(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"info",
-			net_ads_info,
-			NET_TRANSPORT_ADS,
-			"Display details on remote ADS server",
-			"net ads info\n"
-			"    Display details on remote ADS server"
-		},
-		{
-			"join",
-			net_ads_join,
-			NET_TRANSPORT_ADS,
-			"Join the local machine to ADS realm",
-			"net ads join\n"
-			"    Join the local machine to ADS realm"
-		},
-		{
-			"testjoin",
-			net_ads_testjoin,
-			NET_TRANSPORT_ADS,
-			"Validate machine account",
-			"net ads testjoin\n"
-			"    Validate machine account"
-		},
-		{
-			"leave",
-			net_ads_leave,
-			NET_TRANSPORT_ADS,
-			"Remove the local machine from ADS",
-			"net ads leave\n"
-			"    Remove the local machine from ADS"
-		},
-		{
-			"status",
-			net_ads_status,
-			NET_TRANSPORT_ADS,
-			"Display machine account details",
-			"net ads status\n"
-			"    Display machine account details"
-		},
-		{
-			"user",
-			net_ads_user,
-			NET_TRANSPORT_ADS,
-			"List/modify users",
-			"net ads user\n"
-			"    List/modify users"
-		},
-		{
-			"group",
-			net_ads_group,
-			NET_TRANSPORT_ADS,
-			"List/modify groups",
-			"net ads group\n"
-			"    List/modify groups"
-		},
-		{
-			"dns",
-			net_ads_dns,
-			NET_TRANSPORT_ADS,
-			"Issue dynamic DNS update",
-			"net ads dns\n"
-			"    Issue dynamic DNS update"
-		},
-		{
-			"password",
-			net_ads_password,
-			NET_TRANSPORT_ADS,
-			"Change user passwords",
-			"net ads password\n"
-			"    Change user passwords"
-		},
-		{
-			"changetrustpw",
-			net_ads_changetrustpw,
-			NET_TRANSPORT_ADS,
-			"Change trust account password",
-			"net ads changetrustpw\n"
-			"    Change trust account password"
-		},
-		{
-			"printer",
-			net_ads_printer,
-			NET_TRANSPORT_ADS,
-			"List/modify printer entries",
-			"net ads printer\n"
-			"    List/modify printer entries"
-		},
-		{
-			"search",
-			net_ads_search,
-			NET_TRANSPORT_ADS,
-			"Issue LDAP search using filter",
-			"net ads search\n"
-			"    Issue LDAP search using filter"
-		},
-		{
-			"dn",
-			net_ads_dn,
-			NET_TRANSPORT_ADS,
-			"Issue LDAP search by DN",
-			"net ads dn\n"
-			"    Issue LDAP search by DN"
-		},
-		{
-			"sid",
-			net_ads_sid,
-			NET_TRANSPORT_ADS,
-			"Issue LDAP search by SID",
-			"net ads sid\n"
-			"    Issue LDAP search by SID"
-		},
-		{
-			"workgroup",
-			net_ads_workgroup,
-			NET_TRANSPORT_ADS,
-			"Display workgroup name",
-			"net ads workgroup\n"
-			"    Display the workgroup name"
-		},
-		{
-			"lookup",
-			net_ads_lookup,
-			NET_TRANSPORT_ADS,
-			"Perfom CLDAP query on DC",
-			"net ads lookup\n"
-			"    Find the ADS DC using CLDAP lookups"
-		},
-		{
-			"keytab",
-			net_ads_keytab,
-			NET_TRANSPORT_ADS,
-			"Manage local keytab file",
-			"net ads keytab\n"
-			"    Manage local keytab file"
-		},
-		{
-			"gpo",
-			net_ads_gpo,
-			NET_TRANSPORT_ADS,
-			"Manage group policy objects",
-			"net ads gpo\n"
-			"    Manage group policy objects"
-		},
-		{
-			"kerberos",
-			net_ads_kerberos,
-			NET_TRANSPORT_ADS,
-			"Manage kerberos keytab",
-			"net ads kerberos\n"
-			"    Manage kerberos keytab"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"USER", net_ads_user_usage},
+		{"GROUP", net_ads_group_usage},
+		{"PRINTER", net_ads_printer_usage},
+		{"SEARCH", net_ads_search_usage},
+		{"INFO", net_ads_info},
+		{"JOIN", net_ads_join_usage},
+		{"DNS", net_ads_dns_usage},
+		{"LEAVE", net_ads_leave},
+		{"STATUS", net_ads_status},
+		{"PASSWORD", net_ads_password},
+		{"CHANGETRUSTPW", net_ads_changetrustpw},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net ads", func);
+	return net_run_function(argc, argv, func, net_ads_usage);
 }
 
+int net_ads(int argc, const char **argv)
+{
+	struct functable func[] = {
+		{"INFO", net_ads_info},
+		{"JOIN", net_ads_join},
+		{"TESTJOIN", net_ads_testjoin},
+		{"LEAVE", net_ads_leave},
+		{"STATUS", net_ads_status},
+		{"USER", net_ads_user},
+		{"GROUP", net_ads_group},
+		{"DNS", net_ads_dns},
+		{"PASSWORD", net_ads_password},
+		{"CHANGETRUSTPW", net_ads_changetrustpw},
+		{"PRINTER", net_ads_printer},
+		{"SEARCH", net_ads_search},
+		{"DN", net_ads_dn},
+		{"SID", net_ads_sid},
+		{"WORKGROUP", net_ads_workgroup},
+		{"LOOKUP", net_ads_lookup},
+		{"KEYTAB", net_ads_keytab},
+		{"GPO", net_ads_gpo},
+		{"KERBEROS", net_ads_kerberos},
+		{"HELP", net_ads_help},
+		{NULL, NULL}
+	};
+
+	return net_run_function(argc, argv, func, net_ads_usage);
+}
+
 #else
 
 static int net_ads_noads(void)
@@ -2537,50 +2217,60 @@
 	return -1;
 }
 
-int net_ads_keytab(struct net_context *c, int argc, const char **argv)
+int net_ads_keytab(int argc, const char **argv)
 {
 	return net_ads_noads();
 }
 
-int net_ads_kerberos(struct net_context *c, int argc, const char **argv)
+int net_ads_kerberos(int argc, const char **argv)
 {
 	return net_ads_noads();
 }
 
-int net_ads_changetrustpw(struct net_context *c, int argc, const char **argv)
+int net_ads_usage(int argc, const char **argv)
 {
 	return net_ads_noads();
 }
 
-int net_ads_join(struct net_context *c, int argc, const char **argv)
+int net_ads_help(int argc, const char **argv)
 {
 	return net_ads_noads();
 }
 
-int net_ads_user(struct net_context *c, int argc, const char **argv)
+int net_ads_changetrustpw(int argc, const char **argv)
 {
 	return net_ads_noads();
 }
 
-int net_ads_group(struct net_context *c, int argc, const char **argv)
+int net_ads_join(int argc, const char **argv)
 {
 	return net_ads_noads();
 }
 
+int net_ads_user(int argc, const char **argv)
+{
+	return net_ads_noads();
+}
+
+int net_ads_group(int argc, const char **argv)
+{
+	return net_ads_noads();
+}
+
 /* this one shouldn't display a message */
-int net_ads_check(struct net_context *c)
+int net_ads_check(void)
 {
 	return -1;
 }
 
-int net_ads_check_our_domain(struct net_context *c)
+int net_ads_check_our_domain(void)
 {
 	return -1;
 }
 
-int net_ads(struct net_context *c, int argc, const char **argv)
+int net_ads(int argc, const char **argv)
 {
-	return net_ads_noads();
+	return net_ads_usage(argc, argv);
 }
 
 #endif	/* WITH_ADS */

Modified: branches/samba/upstream/source/utils/net_ads_gpo.c
===================================================================
--- branches/samba/upstream/source/utils/net_ads_gpo.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_ads_gpo.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,20 +1,20 @@
-/*
-   Samba Unix/Linux SMB client library
+/* 
+   Samba Unix/Linux SMB client library 
    net ads commands for Group Policy
-   Copyright (C) 2005-2008 Guenther Deschner (gd at samba.org)
+   Copyright (C) 2005 Guenther Deschner (gd at samba.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; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  
 */
 
 #include "includes.h"
@@ -22,27 +22,40 @@
 
 #ifdef HAVE_ADS
 
-static int net_ads_gpo_refresh(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_usage(int argc, const char **argv)
 {
+	d_printf(
+		"net ads gpo <COMMAND>\n"\
+"<COMMAND> can be either:\n"\
+"  APPLY        Apply GPOs for machine/user\n"\
+"  GETGPO       Lists specified GPO\n"\
+"  HELP         Prints this help message\n"\
+"  LINKADD      Link a container to a GPO\n"\
+/* "  LINKDELETE   Delete a gPLink from a container\n"\ */
+"  LINKGET      Lists gPLink of a containter\n"\
+"  LIST         Lists all GPOs for machine/user\n"\
+"  LISTALL      Lists all GPOs on a DC\n"\
+"  REFRESH      Lists all GPOs assigned to an account and downloads them\n"\
+"\n"
+		);
+	return -1;
+}
+
+static int net_ads_gpo_refresh(int argc, const char **argv)
+{
 	TALLOC_CTX *mem_ctx;
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
 	const char *dn = NULL;
 	struct GROUP_POLICY_OBJECT *gpo_list = NULL;
-	struct GROUP_POLICY_OBJECT *read_list = NULL;
 	uint32 uac = 0;
 	uint32 flags = 0;
 	struct GROUP_POLICY_OBJECT *gpo;
 	NTSTATUS result;
 	struct nt_user_token *token = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo refresh <username|machinename>\n"
-			 "  Lists all GPOs assigned to an account and "
-			 "downloads them\n"
-			 "    username\tUser to refresh GPOs for\n"
-			 "    machinename\tMachine to refresh GPOs for\n");
+	if (argc < 1) {
+		printf("usage: net ads gpo refresh <username|machinename>\n");
 		return -1;
 	}
 
@@ -51,15 +64,14 @@
 		return -1;
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("failed to connect AD server: %s\n", ads_errstr(status));
 		goto out;
 	}
 
 	status = ads_find_samaccount(ads, mem_ctx, argv[0], &uac, &dn);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("failed to find samaccount for %s\n", argv[0]);
+		printf("failed to find samaccount for %s\n", argv[0]);
 		goto out;
 	}
 
@@ -67,137 +79,54 @@
 		flags |= GPO_LIST_FLAG_MACHINE;
 	}
 
-	d_printf("\n%s: '%s' has dn: '%s'\n\n",
-		(uac & UF_WORKSTATION_TRUST_ACCOUNT) ? "machine" : "user",
+	printf("\n%s: '%s' has dn: '%s'\n\n", 
+		(uac & UF_WORKSTATION_TRUST_ACCOUNT) ? "machine" : "user", 
 		argv[0], dn);
 
-	d_printf("* fetching token ");
-	if (uac & UF_WORKSTATION_TRUST_ACCOUNT) {
-		status = gp_get_machine_token(ads, mem_ctx, dn, &token);
-	} else {
-		status = ads_get_sid_token(ads, mem_ctx, dn, &token);
-	}
-
+	status = ads_get_sid_token(ads, mem_ctx, dn, &token);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("failed: %s\n", ads_errstr(status));
 		goto out;
 	}
-	d_printf("finished\n");
 
-	d_printf("* fetching GPO List ");
 	status = ads_get_gpo_list(ads, mem_ctx, dn, flags, token, &gpo_list);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("failed: %s\n", ads_errstr(status));
 		goto out;
 	}
-	d_printf("finished\n");
 
-	d_printf("* refreshing Group Policy Data ");
-	if (!NT_STATUS_IS_OK(result = check_refresh_gpo_list(ads, mem_ctx,
-							     flags,
-							     gpo_list))) {
-		d_printf("failed: %s\n", nt_errstr(result));
+	if (!NT_STATUS_IS_OK(result = check_refresh_gpo_list(ads, mem_ctx, flags, gpo_list))) {
+		printf("failed to refresh GPOs: %s\n", nt_errstr(result));
 		goto out;
 	}
-	d_printf("finished\n");
 
-	d_printf("* storing GPO list to registry ");
+	for (gpo = gpo_list; gpo; gpo = gpo->next) {
 
-	{
-		WERROR werr = gp_reg_state_store(mem_ctx, flags, dn,
-						 token, gpo_list);
-		if (!W_ERROR_IS_OK(werr)) {
-			d_printf("failed: %s\n", dos_errstr(werr));
-			goto out;
-		}
-	}
-
-	d_printf("finished\n");
-
-	if (c->opt_verbose) {
-
-		d_printf("* dumping GPO list\n");
-
-		for (gpo = gpo_list; gpo; gpo = gpo->next) {
-
-			dump_gpo(ads, mem_ctx, gpo, 0);
-#if 0
 		char *server, *share, *nt_path, *unix_path;
 
-		d_printf("--------------------------------------\n");
-		d_printf("Name:\t\t\t%s\n", gpo->display_name);
-		d_printf("LDAP GPO version:\t%d (user: %d, machine: %d)\n",
+		printf("--------------------------------------\n");
+		printf("Name:\t\t\t%s\n", gpo->display_name);
+		printf("LDAP GPO version:\t%d (user: %d, machine: %d)\n",
 			gpo->version,
 			GPO_VERSION_USER(gpo->version),
 			GPO_VERSION_MACHINE(gpo->version));
 
 		result = gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
-						 &server, &share, &nt_path,
-						 &unix_path);
+						 &server, &share, &nt_path, &unix_path);
 		if (!NT_STATUS_IS_OK(result)) {
-			d_printf("got: %s\n", nt_errstr(result));
+			printf("got: %s\n", nt_errstr(result));
 		}
 
-		d_printf("GPO stored on server: %s, share: %s\n", server, share);
-		d_printf("\tremote path:\t%s\n", nt_path);
-		d_printf("\tlocal path:\t%s\n", unix_path);
-#endif
-		}
+		printf("GPO stored on server: %s, share: %s\n", server, share);
+		printf("\tremote path:\t%s\n", nt_path);
+		printf("\tlocal path:\t%s\n", unix_path);
 	}
 
-	d_printf("* re-reading GPO list from registry ");
-
-	{
-		WERROR werr = gp_reg_state_read(mem_ctx, flags,
-						&token->user_sids[0],
-						&read_list);
-		if (!W_ERROR_IS_OK(werr)) {
-			d_printf("failed: %s\n", dos_errstr(werr));
-			goto out;
-		}
-	}
-
-	d_printf("finished\n");
-
-	if (c->opt_verbose) {
-
-		d_printf("* dumping GPO list from registry\n");
-
-		for (gpo = read_list; gpo; gpo = gpo->next) {
-
-			dump_gpo(ads, mem_ctx, gpo, 0);
-
-#if 0
-		char *server, *share, *nt_path, *unix_path;
-
-		d_printf("--------------------------------------\n");
-		d_printf("Name:\t\t\t%s\n", gpo->display_name);
-		d_printf("LDAP GPO version:\t%d (user: %d, machine: %d)\n",
-			gpo->version,
-			GPO_VERSION_USER(gpo->version),
-			GPO_VERSION_MACHINE(gpo->version));
-
-		result = gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
-						 &server, &share, &nt_path,
-						 &unix_path);
-		if (!NT_STATUS_IS_OK(result)) {
-			d_printf("got: %s\n", nt_errstr(result));
-		}
-
-		d_printf("GPO stored on server: %s, share: %s\n", server, share);
-		d_printf("\tremote path:\t%s\n", nt_path);
-		d_printf("\tlocal path:\t%s\n", unix_path);
-#endif
-		}
-	}
-
  out:
 	ads_destroy(&ads);
 	talloc_destroy(mem_ctx);
 	return 0;
 }
 
-static int net_ads_gpo_list_all(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_list_all(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
@@ -219,19 +148,12 @@
 		NULL
 	};
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo listall\n"
-			 "    List all GPOs on the DC\n");
-		return 0;
-	}
-
 	mem_ctx = talloc_init("net_ads_gpo_list_all");
 	if (mem_ctx == NULL) {
 		return -1;
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
@@ -246,16 +168,14 @@
 	if (!ADS_ERR_OK(status)) {
 		d_printf("search failed: %s\n", ads_errstr(status));
 		goto out;
-	}
+	}	
 
 	num_reply = ads_count_replies(ads, res);
-
+	
 	d_printf("Got %d replies\n\n", num_reply);
 
 	/* dump the results */
-	for (msg = ads_first_entry(ads, res);
-	     msg;
-	     msg = ads_next_entry(ads, msg)) {
+	for (msg = ads_first_entry(ads, res); msg; msg = ads_next_entry(ads, msg)) {
 
 		if ((dn = ads_get_dn(ads, msg)) == NULL) {
 			goto out;
@@ -264,11 +184,10 @@
 		status = ads_parse_gpo(ads, mem_ctx, msg, dn, &gpo);
 
 		if (!ADS_ERR_OK(status)) {
-			d_printf("ads_parse_gpo failed: %s\n",
-				ads_errstr(status));
+			d_printf("ads_parse_gpo failed: %s\n", ads_errstr(status));
 			ads_memfree(ads, dn);
 			goto out;
-		}
+		}	
 
 		dump_gpo(ads, mem_ctx, &gpo, 0);
 		ads_memfree(ads, dn);
@@ -279,11 +198,11 @@
 
 	talloc_destroy(mem_ctx);
 	ads_destroy(&ads);
-
+	
 	return 0;
 }
 
-static int net_ads_gpo_list(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_list(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
@@ -295,12 +214,8 @@
 	struct GROUP_POLICY_OBJECT *gpo_list;
 	struct nt_user_token *token = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo list <username|machinename>\n"
-			 "  Lists all GPOs for machine/user\n"
-			 "    username\tUser to list GPOs for\n"
-			 "    machinename\tMachine to list GPOs for\n");
+	if (argc < 1) {
+		printf("usage: net ads gpo list <username|machinename>\n");
 		return -1;
 	}
 
@@ -309,7 +224,7 @@
 		goto out;
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
@@ -323,16 +238,11 @@
 		flags |= GPO_LIST_FLAG_MACHINE;
 	}
 
-	d_printf("%s: '%s' has dn: '%s'\n",
-		(uac & UF_WORKSTATION_TRUST_ACCOUNT) ? "machine" : "user",
+	printf("%s: '%s' has dn: '%s'\n", 
+		(uac & UF_WORKSTATION_TRUST_ACCOUNT) ? "machine" : "user", 
 		argv[0], dn);
 
-	if (uac & UF_WORKSTATION_TRUST_ACCOUNT) {
-		status = gp_get_machine_token(ads, mem_ctx, dn, &token);
-	} else {
-		status = ads_get_sid_token(ads, mem_ctx, dn, &token);
-	}
-
+	status = ads_get_sid_token(ads, mem_ctx, dn, &token);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
@@ -349,12 +259,12 @@
 
 	talloc_destroy(mem_ctx);
 	ads_destroy(&ads);
-
+	
 	return 0;
 }
 
-#if 0
-static int net_ads_gpo_apply(struct net_context *c, int argc, const char **argv)
+#if 0 /* not yet */
+static int net_ads_gpo_apply(int argc, const char **argv)
 {
 	TALLOC_CTX *mem_ctx;
 	ADS_STRUCT *ads;
@@ -363,15 +273,9 @@
 	struct GROUP_POLICY_OBJECT *gpo_list;
 	uint32 uac = 0;
 	uint32 flags = 0;
-	struct nt_user_token *token = NULL;
-	const char *filter = NULL;
-
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo apply <username|machinename>\n"
-			 "  Apply GPOs for machine/user\n"
-			 "    username\tUsername to apply GPOs for\n"
-			 "    machinename\tMachine to apply GPOs for\n");
+	
+	if (argc < 1) {
+		printf("usage: net ads gpo apply <username|machinename>\n");
 		return -1;
 	}
 
@@ -380,20 +284,13 @@
 		goto out;
 	}
 
-	if (argc >= 2) {
-		filter = cse_gpo_name_to_guid_string(argv[1]);
-	}
-
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("got: %s\n", ads_errstr(status));
 		goto out;
 	}
 
 	status = ads_find_samaccount(ads, mem_ctx, argv[0], &uac, &dn);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("failed to find samaccount for %s: %s\n",
-			argv[0], ads_errstr(status));
 		goto out;
 	}
 
@@ -401,56 +298,38 @@
 		flags |= GPO_LIST_FLAG_MACHINE;
 	}
 
-	if (opt_verbose) {
-		flags |= GPO_INFO_FLAG_VERBOSE;
-	}
-
-	d_printf("%s: '%s' has dn: '%s'\n",
-		(uac & UF_WORKSTATION_TRUST_ACCOUNT) ? "machine" : "user",
+	printf("%s: '%s' has dn: '%s'\n", 
+		(uac & UF_WORKSTATION_TRUST_ACCOUNT) ? "machine" : "user", 
 		argv[0], dn);
 
-	if (uac & UF_WORKSTATION_TRUST_ACCOUNT) {
-		status = gp_get_machine_token(ads, mem_ctx, dn, &token);
-	} else {
-		status = ads_get_sid_token(ads, mem_ctx, dn, &token);
-	}
-
+	status = ads_get_gpo_list(ads, mem_ctx, dn, flags, &gpo_list);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
 
-	status = ads_get_gpo_list(ads, mem_ctx, dn, flags, token, &gpo_list);
+	/* FIXME: allow to process just a single extension */
+	status = gpo_process_gpo_list(ads, mem_ctx, gpo_list, NULL, flags); 
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
 
-	status = gpo_process_gpo_list(ads, mem_ctx, token, gpo_list,
-				      filter, flags);
-	if (!ADS_ERR_OK(status)) {
-		d_printf("failed to process gpo list: %s\n",
-			ads_errstr(status));
-		goto out;
-	}
-
 out:
 	ads_destroy(&ads);
 	talloc_destroy(mem_ctx);
 	return 0;
 }
+
 #endif
 
-static int net_ads_gpo_link_get(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_link_get(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
 	TALLOC_CTX *mem_ctx;
 	struct GP_LINK gp_link;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo linkget <container>\n"
-			 "  Lists gPLink of a containter\n"
-			 "    container\tContainer to get link for\n");
+	if (argc < 1) {
+		printf("usage: net ads gpo linkget <linkname>\n");
 		return -1;
 	}
 
@@ -459,17 +338,16 @@
 		return -1;
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
 
 	status = ads_get_gpo_link(ads, mem_ctx, argv[0], &gp_link);
 	if (!ADS_ERR_OK(status)) {
-		d_printf("get link for %s failed: %s\n", argv[0],
-			ads_errstr(status));
+		d_printf("get link for %s failed: %s\n", argv[0], ads_errstr(status));
 		goto out;
-	}
+	}	
 
 	dump_gplink(ads, mem_ctx, &gp_link);
 
@@ -480,21 +358,16 @@
 	return 0;
 }
 
-static int net_ads_gpo_link_add(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_link_add(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
 	uint32 gpo_opt = 0;
 	TALLOC_CTX *mem_ctx;
 
-	if (argc < 2 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo linkadd <linkdn> <gpodn> [options]\n"
-			 "  Link a container to a GPO\n"
-			 "    linkdn\tContainer to link to a GPO\n"
-			 "    gpodn\tGPO to link container to\n");
-		d_printf("note: DNs must be provided properly escaped.\n");
-		d_printf("See RFC 4514 for details\n");
+	if (argc < 2) {
+		printf("usage: net ads gpo linkadd <linkdn> <gpodn> [options]\n");
+		printf("note: DNs must be provided properly escaped.\n      See RFC 4514 for details\n");
 		return -1;
 	}
 
@@ -507,7 +380,7 @@
 		gpo_opt = atoi(argv[2]);
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
@@ -527,18 +400,13 @@
 
 #if 0 /* broken */
 
-static int net_ads_gpo_link_delete(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_link_delete(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
 	TALLOC_CTX *mem_ctx;
 
-	if (argc < 2 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo linkdelete <linkdn> <gpodn>\n"
-			 "  Delete a GPO link\n"
-			 "    <linkdn>\tContainer to delete GPO from\n"
-			 "    <gpodn>\tGPO to delete from container\n");
+	if (argc < 2) {
 		return -1;
 	}
 
@@ -547,7 +415,7 @@
 		return -1;
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
@@ -556,7 +424,7 @@
 	if (!ADS_ERR_OK(status)) {
 		d_printf("delete link failed: %s\n", ads_errstr(status));
 		goto out;
-	}
+	}	
 
 out:
 	talloc_destroy(mem_ctx);
@@ -567,27 +435,24 @@
 
 #endif
 
-static int net_ads_gpo_get_gpo(struct net_context *c, int argc, const char **argv)
+static int net_ads_gpo_get_gpo(int argc, const char **argv)
 {
 	ADS_STRUCT *ads;
 	ADS_STATUS status;
 	TALLOC_CTX *mem_ctx;
 	struct GROUP_POLICY_OBJECT gpo;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net ads gpo getgpo <gpo>\n"
-			 "  List speciefied GPO\n"
-			 "    gpo\t\tGPO to list\n");
+	if (argc < 1) {
+		printf("usage: net ads gpo getgpo <gpo>\n");
 		return -1;
 	}
 
-	mem_ctx = talloc_init("ads_gpo_get_gpo");
+	mem_ctx = talloc_init("add_gpo_get_gpo");
 	if (mem_ctx == NULL) {
 		return -1;
 	}
 
-	status = ads_startup(c, false, &ads);
+	status = ads_startup(False, &ads);
 	if (!ADS_ERR_OK(status)) {
 		goto out;
 	}
@@ -599,10 +464,9 @@
 	}
 
 	if (!ADS_ERR_OK(status)) {
-		d_printf("get gpo for [%s] failed: %s\n", argv[0],
-			ads_errstr(status));
+		d_printf("get gpo for [%s] failed: %s\n", argv[0], ads_errstr(status));
 		goto out;
-	}
+	}	
 
 	dump_gpo(ads, mem_ctx, &gpo, 1);
 
@@ -613,83 +477,22 @@
 	return 0;
 }
 
-int net_ads_gpo(struct net_context *c, int argc, const char **argv)
+int net_ads_gpo(int argc, const char **argv)
 {
 	struct functable func[] = {
-#if 0
-		{
-			"apply",
-			net_ads_gpo_apply,
-			NET_TRANSPORT_ADS,
-			"Apply GPO to container",
-			"net ads gpo apply\n"
-			"    Apply GPO to container"
-		},
-#endif
-		{
-			"getgpo",
-			net_ads_gpo_get_gpo,
-			NET_TRANSPORT_ADS,
-			"List specified GPO",
-			"net ads gpo getgpo\n"
-			"    List specified GPO"
-		},
-		{
-			"linkadd",
-			net_ads_gpo_link_add,
-			NET_TRANSPORT_ADS,
-			"Link a container to a GPO",
-			"net ads gpo linkadd\n"
-			"    Link a container to a GPO"
-		},
-#if 0
-		{
-			"linkdelete",
-			net_ads_gpo_link_delete,
-			NET_TRANSPORT_ADS,
-			"Delete GPO link from a container",
-			"net ads gpo linkdelete\n"
-			"    Delete GPO link from a container"
-		},
-#endif
-		{
-			"linkget",
-			net_ads_gpo_link_get,
-			NET_TRANSPORT_ADS,
-			"Lists gPLink of containter",
-			"net ads gpo linkget\n"
-			"    Lists gPLink of containter"
-		},
-		{
-			"list",
-			net_ads_gpo_list,
-			NET_TRANSPORT_ADS,
-			"Lists all GPOs for machine/user",
-			"net ads gpo list\n"
-			"    Lists all GPOs for machine/user"
-		},
-		{
-			"listall",
-			net_ads_gpo_list_all,
-			NET_TRANSPORT_ADS,
-			"Lists all GPOs on a DC",
-			"net ads gpo listall\n"
-			"    Lists all GPOs on a DC"
-		},
-		{
-			"refresh",
-			net_ads_gpo_refresh,
-			NET_TRANSPORT_ADS,
-			"Lists all GPOs assigned to an account and downloads "
-			"them",
-			"net ads gpo refresh\n"
-			"    Lists all GPOs assigned to an account and "
-			"downloads them"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		/* {"APPLY", net_ads_gpo_apply}, */
+		{"GETGPO", net_ads_gpo_get_gpo},
+		{"HELP", net_ads_gpo_usage},
+		{"LINKADD", net_ads_gpo_link_add},
+		/* {"LINKDELETE", net_ads_gpo_link_delete}, */
+		{"LINKGET", net_ads_gpo_link_get},
+		{"LIST", net_ads_gpo_list},
+		{"LISTALL", net_ads_gpo_list_all},
+		{"REFRESH", net_ads_gpo_refresh},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net ads gpo", func);
+	return net_run_function(argc, argv, func, net_ads_gpo_usage);
 }
 
 #endif /* HAVE_ADS */

Deleted: branches/samba/upstream/source/utils/net_afs.c
===================================================================
--- branches/samba/upstream/source/utils/net_afs.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_afs.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,114 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net afs commands
-   Copyright (C) 2003  Volker Lendecke  (vl at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_afs_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("  net afs key filename\n"
-		 "\tImports a OpenAFS KeyFile into our secrets.tdb\n\n");
-	d_printf("  net afs impersonate <user> <cell>\n"
-		 "\tCreates a token for user at cell\n\n");
-	return -1;
-}
-
-int net_afs_key(struct net_context *c, int argc, const char **argv)
-{
-	int fd;
-	struct afs_keyfile keyfile;
-
-	if (argc != 2) {
-		d_printf("usage: 'net afs key <keyfile> cell'\n");
-		return -1;
-	}
-
-	if (!secrets_init()) {
-		d_fprintf(stderr, "Could not open secrets.tdb\n");
-		return -1;
-	}
-
-	if ((fd = open(argv[0], O_RDONLY, 0)) < 0) {
-		d_fprintf(stderr, "Could not open %s\n", argv[0]);
-		return -1;
-	}
-
-	if (read(fd, &keyfile, sizeof(keyfile)) != sizeof(keyfile)) {
-		d_fprintf(stderr, "Could not read keyfile\n");
-		return -1;
-	}
-
-	if (!secrets_store_afs_keyfile(argv[1], &keyfile)) {
-		d_fprintf(stderr, "Could not write keyfile to secrets.tdb\n");
-		return -1;
-	}
-
-	return 0;
-}
-
-int net_afs_impersonate(struct net_context *c, int argc,
-			       const char **argv)
-{
-	char *token;
-
-	if (argc != 2) {
-		fprintf(stderr, "Usage: net afs impersonate <user> <cell>\n");
-	        exit(1);
-	}
-
-	token = afs_createtoken_str(argv[0], argv[1]);
-
-	if (token == NULL) {
-		fprintf(stderr, "Could not create token\n");
-	        exit(1);
-	}
-
-	if (!afs_settoken_str(token)) {
-		fprintf(stderr, "Could not set token into kernel\n");
-	        exit(1);
-	}
-
-	printf("Success: %s@%s\n", argv[0], argv[1]);
-	return 0;
-}
-
-int net_afs(struct net_context *c, int argc, const char **argv)
-{
-	struct functable func[] = {
-		{
-			"key",
-			net_afs_key,
-			NET_TRANSPORT_LOCAL,
-			"Import an OpenAFS keyfile",
-			"net afs key <filename>\n"
-			"    Import kefile from <filename>."
-		},
-		{
-			"impersonate",
-			net_afs_impersonate,
-			NET_TRANSPORT_LOCAL,
-			"Get a user token",
-			"net afs impersonate <user> <cell>\n"
-			"    Create token for user at cell"
-		},
-		{NULL, NULL, 0, NULL, NULL}
-	};
-	return net_run_function(c, argc, argv, "net afs", func);
-}
-

Deleted: branches/samba/upstream/source/utils/net_afs.h
===================================================================
--- branches/samba/upstream/source/utils/net_afs.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_afs.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,29 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net afs commands
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _NET_AFS_H_
-#define _NET_AFS_H_
-
-int net_afs_usage(struct net_context *c, int argc, const char **argv);
-int net_afs_key(struct net_context *c, int argc, const char **argv);
-int net_afs_impersonate(struct net_context *c, int argc,
-			       const char **argv);
-int net_afs(struct net_context *c, int argc, const char **argv);
-
-#endif /*_NET_AFS_H_*/

Modified: branches/samba/upstream/source/utils/net_cache.c
===================================================================
--- branches/samba/upstream/source/utils/net_cache.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_cache.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,21 +1,21 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) Rafal Szczesniak    2002
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+ 
 
 #include "includes.h"
 #include "net.h"
@@ -57,11 +57,11 @@
 	if (timeout_tm.tm_year != now_tm->tm_year ||
 			timeout_tm.tm_mon != now_tm->tm_mon ||
 			timeout_tm.tm_mday != now_tm->tm_mday) {
-
+	    
 		timeout_str = asctime(&timeout_tm);
 		if (!timeout_str) {
 			return;
-		}
+		}	
 		timeout_str[strlen(timeout_str) - 1] = '\0';	/* remove tailing CR */
 	} else {
 		asprintf(&alloc_str, "%.2d:%.2d:%.2d", timeout_tm.tm_hour,
@@ -71,7 +71,7 @@
 		}
 		timeout_str = alloc_str;
 	}
-
+	
 	d_printf("Key: %s\t Timeout: %s\t Value: %s  %s\n", keystr,
 	         timeout_str, datastr, timeout > now_t ? "": "(expired)");
 
@@ -105,7 +105,7 @@
 	} else {
 		number_begin = 0;
 	}
-
+	
 	/* unit detection */
 	len = strlen(timeout_str);
 	switch (timeout_str[len - 1]) {
@@ -115,12 +115,12 @@
 	case 'd':
 	case 'w': unit = timeout_str[len - 1];
 	}
-
+	
 	/* number detection */
 	len = (sign) ? strlen(&timeout_str[number_begin]) : len;
 	number_end = (unit) ? len - 1 : len;
 	number = SMB_STRNDUP(&timeout_str[number_begin], number_end);
-
+	
 	/* calculate actual timeout value */
 	timeout = (time_t)atoi(number);
 
@@ -130,52 +130,51 @@
 	case 'd': timeout *= 60*60*24; break;
 	case 'w': timeout *= 60*60*24*7; break;  /* that's fair enough, I think :) */
 	}
-
+	
 	switch (sign) {
 	case '!': timeout = time(NULL) - timeout; break;
 	case '+':
 	default:  timeout += time(NULL); break;
 	}
-
+	
 	if (number) SAFE_FREE(number);
-	return timeout;
+	return timeout;	
 }
 
 
 /**
  * Add an entry to the cache. If it does exist, then set it.
- *
- * @param c	A net_context structure
+ * 
  * @param argv key, value and timeout are passed in command line
  * @return 0 on success, otherwise failure
  **/
-static int net_cache_add(struct net_context *c, int argc, const char **argv)
+static int net_cache_add(int argc, const char **argv)
 {
 	const char *keystr, *datastr, *timeout_str;
 	time_t timeout;
-
-	if (argc < 3 || c->display_usage) {
+	
+	if (argc < 3) {
 		d_printf("\nUsage: net cache add <key string> <data string> <timeout>\n");
 		return -1;
 	}
-
+	
 	keystr = argv[0];
 	datastr = argv[1];
 	timeout_str = argv[2];
-
+	
 	/* parse timeout given in command line */
 	timeout = parse_timeout(timeout_str);
 	if (!timeout) {
 		d_fprintf(stderr, "Invalid timeout argument.\n");
 		return -1;
 	}
-
+	
 	if (gencache_set(keystr, datastr, timeout)) {
 		d_printf("New cache entry stored successfully.\n");
 		gencache_shutdown();
 		return 0;
 	}
-
+	
 	d_fprintf(stderr, "Entry couldn't be added. Perhaps there's already such a key.\n");
 	gencache_shutdown();
 	return -1;
@@ -183,20 +182,19 @@
 
 /**
  * Delete an entry in the cache
- *
- * @param c	A net_context structure
+ * 
  * @param argv key to delete an entry of
  * @return 0 on success, otherwise failure
  **/
-static int net_cache_del(struct net_context *c, int argc, const char **argv)
+static int net_cache_del(int argc, const char **argv)
 {
 	const char *keystr = argv[0];
-
-	if (argc < 1 || c->display_usage) {
+	
+	if (argc < 1) {
 		d_printf("\nUsage: net cache del <key string>\n");
 		return -1;
 	}
-
+	
 	if(gencache_del(keystr)) {
 		d_printf("Entry deleted.\n");
 		return 0;
@@ -209,22 +207,21 @@
 
 /**
  * Get and display an entry from the cache
- *
- * @param c	A net_context structure
+ * 
  * @param argv key to search an entry of
  * @return 0 on success, otherwise failure
  **/
-static int net_cache_get(struct net_context *c, int argc, const char **argv)
+static int net_cache_get(int argc, const char **argv)
 {
 	const char* keystr = argv[0];
 	char* valuestr;
 	time_t timeout;
 
-	if (argc < 1 || c->display_usage) {
+	if (argc < 1) {
 		d_printf("\nUsage: net cache get <key>\n");
 		return -1;
 	}
-
+	
 	if (gencache_get(keystr, &valuestr, &timeout)) {
 		print_cache_entry(keystr, valuestr, timeout, NULL);
 		return 0;
@@ -237,20 +234,19 @@
 
 /**
  * Search an entry/entries in the cache
- *
- * @param c	A net_context structure
+ * 
  * @param argv key pattern to match the entries to
  * @return 0 on success, otherwise failure
  **/
-static int net_cache_search(struct net_context *c, int argc, const char **argv)
+static int net_cache_search(int argc, const char **argv)
 {
 	const char* pattern;
-
-	if (argc < 1 || c->display_usage) {
+	
+	if (argc < 1) {
 		d_printf("Usage: net cache search <pattern>\n");
 		return -1;
 	}
-
+	
 	pattern = argv[0];
 	gencache_iterate(print_cache_entry, NULL, pattern);
 	return 0;
@@ -259,21 +255,13 @@
 
 /**
  * List the contents of the cache
- *
- * @param c	A net_context structure
+ * 
  * @param argv ignored in this functionailty
  * @return always returns 0
  **/
-static int net_cache_list(struct net_context *c, int argc, const char **argv)
+static int net_cache_list(int argc, const char **argv)
 {
 	const char* pattern = "*";
-
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net cache list\n"
-			 "    List all cache entries.\n");
-		return 0;
-	}
 	gencache_iterate(print_cache_entry, NULL, pattern);
 	gencache_shutdown();
 	return 0;
@@ -282,92 +270,54 @@
 
 /**
  * Flush the whole cache
- *
- * @param c	A net_context structure
+ * 
  * @param argv ignored in this functionality
  * @return always returns 0
  **/
-static int net_cache_flush(struct net_context *c, int argc, const char **argv)
+static int net_cache_flush(int argc, const char **argv)
 {
 	const char* pattern = "*";
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net cache flush\n"
-			 "    Delete all cache entries.\n");
-		return 0;
-	}
 	gencache_iterate(delete_cache_entry, NULL, pattern);
 	gencache_shutdown();
 	return 0;
 }
 
+
 /**
+ * Short help
+ *
+ * @param argv ignored in this functionality
+ * @return always returns -1
+ **/
+static int net_cache_usage(int argc, const char **argv)
+{
+	d_printf("  net cache add \t add add new cache entry\n");
+	d_printf("  net cache del \t delete existing cache entry by key\n");
+	d_printf("  net cache flush \t delete all entries existing in the cache\n");
+	d_printf("  net cache get \t get cache entry by key\n");
+	d_printf("  net cache search \t search for entries in the cache, by given pattern\n");
+	d_printf("  net cache list \t list all cache entries (just like search for \"*\")\n");
+	return -1;
+}
+
+
+/**
  * Entry point to 'net cache' subfunctionality
  *
- * @param c	A net_context structure
  * @param argv arguments passed to further called functions
  * @return whatever further functions return
  **/
-int net_cache(struct net_context *c, int argc, const char **argv)
+int net_cache(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			net_cache_add,
-			NET_TRANSPORT_LOCAL,
-			"Add new cache entry",
-			"net cache add <key string> <data string> <timeout>\n"
-			"  Add new cache entry.\n"
-			"    key string\tKey string to add cache data under.\n"
-			"    data string\tData to store under given key.\n"
-			"    timeout\tTimeout for cache data."
-		},
-		{
-			"del",
-			net_cache_del,
-			NET_TRANSPORT_LOCAL,
-			"Delete existing cache entry by key",
-			"net cache del <key string>\n"
-			"  Delete existing cache entry by key.\n"
-			"    key string\tKey string to delete."
-		},
-		{
-			"get",
-			net_cache_get,
-			NET_TRANSPORT_LOCAL,
-			"Get cache entry by key",
-			"net cache get <key string>\n"
-			"  Get cache entry by key.\n"
-			"    key string\tKey string to look up cache entry for."
-
-		},
-		{
-			"search",
-			net_cache_search,
-			NET_TRANSPORT_LOCAL,
-			"Search entry by pattern",
-			"net cache search <pattern>\n"
-			"  Search entry by pattern.\n"
-			"    pattern\tPattern to search for in cache."
-		},
-		{
-			"list",
-			net_cache_list,
-			NET_TRANSPORT_LOCAL,
-			"List all cache entries",
-			"net cache list\n"
-			"  List all cache entries"
-		},
-		{
-			"flush",
-			net_cache_flush,
-			NET_TRANSPORT_LOCAL,
-			"Delete all cache entries",
-			"net cache flush\n"
-			"  Delete all cache entries"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"add", net_cache_add},
+		{"del", net_cache_del},
+		{"get", net_cache_get},
+		{"search", net_cache_search},
+		{"list", net_cache_list},
+		{"flush", net_cache_flush},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net cache", func);
+	return net_run_function(argc, argv, func, net_cache_usage);
 }

Modified: branches/samba/upstream/source/utils/net_conf.c
===================================================================
--- branches/samba/upstream/source/utils/net_conf.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_conf.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -36,15 +36,13 @@
  *
  **********************************************************************/
 
-static int net_conf_list_usage(struct net_context *c, int argc,
-			       const char **argv)
+static int net_conf_list_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf list\n");
 	return -1;
 }
 
-static int net_conf_import_usage(struct net_context *c, int argc,
-				 const char**argv)
+static int net_conf_import_usage(int argc, const char**argv)
 {
 	d_printf("USAGE: net conf import [--test|-T] <filename> "
 		 "[<servicename>]\n"
@@ -55,29 +53,25 @@
 	return -1;
 }
 
-static int net_conf_listshares_usage(struct net_context *c, int argc,
-				     const char **argv)
+static int net_conf_listshares_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf listshares\n");
 	return -1;
 }
 
-static int net_conf_drop_usage(struct net_context *c, int argc,
-			       const char **argv)
+static int net_conf_drop_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf drop\n");
 	return -1;
 }
 
-static int net_conf_showshare_usage(struct net_context *c, int argc,
-				    const char **argv)
+static int net_conf_showshare_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf showshare <sharename>\n");
 	return -1;
 }
 
-static int net_conf_addshare_usage(struct net_context *c, int argc,
-				   const char **argv)
+static int net_conf_addshare_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf addshare <sharename> <path> "
 		 "[writeable={y|N} [guest_ok={y|N} [<comment>]]\n"
@@ -91,50 +85,43 @@
 	return -1;
 }
 
-static int net_conf_delshare_usage(struct net_context *c, int argc,
-				   const char **argv)
+static int net_conf_delshare_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf delshare <sharename>\n");
 	return -1;
 }
 
-static int net_conf_setparm_usage(struct net_context *c, int argc,
-				  const char **argv)
+static int net_conf_setparm_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf setparm <section> <param> <value>\n");
 	return -1;
 }
 
-static int net_conf_getparm_usage(struct net_context *c, int argc,
-				  const char **argv)
+static int net_conf_getparm_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf getparm <section> <param>\n");
 	return -1;
 }
 
-static int net_conf_delparm_usage(struct net_context *c, int argc,
-				  const char **argv)
+static int net_conf_delparm_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf delparm <section> <param>\n");
 	return -1;
 }
 
-static int net_conf_getincludes_usage(struct net_context *c, int argc,
-				      const char **argv)
+static int net_conf_getincludes_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf getincludes <section>\n");
 	return -1;
 }
 
-static int net_conf_setincludes_usage(struct net_context *c, int argc,
-				      const char **argv)
+static int net_conf_setincludes_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf setincludes <section> [<filename>]*\n");
 	return -1;
 }
 
-static int net_conf_delincludes_usage(struct net_context *c, int argc,
-				      const char **argv)
+static int net_conf_delincludes_usage(int argc, const char **argv)
 {
 	d_printf("USAGE: net conf delincludes <section>\n");
 	return -1;
@@ -150,8 +137,7 @@
 /**
  * This functions process a service previously loaded with libsmbconf.
  */
-static WERROR import_process_service(struct net_context *c,
-				     struct smbconf_ctx *conf_ctx,
+static WERROR import_process_service(struct smbconf_ctx *conf_ctx,
 				     struct smbconf_service *service)
 {
 	uint32_t idx;
@@ -160,7 +146,7 @@
 	char **includes = NULL;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (c->opt_testmode) {
+	if (opt_testmode) {
 		const char *indent = "";
 		if (service->name != NULL) {
 			d_printf("[%s]\n", service->name);
@@ -229,7 +215,7 @@
  *
  **********************************************************************/
 
-static int net_conf_list(struct net_context *c, struct smbconf_ctx *conf_ctx,
+static int net_conf_list(struct smbconf_ctx *conf_ctx,
 			 int argc, const char **argv)
 {
 	WERROR werr = WERR_OK;
@@ -241,8 +227,8 @@
 
 	mem_ctx = talloc_stackframe();
 
-	if (argc != 0 || c->display_usage) {
-		net_conf_list_usage(c, argc, argv);
+	if (argc != 0) {
+		net_conf_list_usage(argc, argv);
 		goto done;
 	}
 
@@ -278,7 +264,7 @@
 	return ret;
 }
 
-static int net_conf_import(struct net_context *c, struct smbconf_ctx *conf_ctx,
+static int net_conf_import(struct smbconf_ctx *conf_ctx,
 			   int argc, const char **argv)
 {
 	int ret = -1;
@@ -289,15 +275,12 @@
 	struct smbconf_ctx *txt_ctx;
 	WERROR werr;
 
-	if (c->display_usage)
-		return net_conf_import_usage(c, argc, argv);
-
 	mem_ctx = talloc_stackframe();
 
 	switch (argc) {
 		case 0:
 		default:
-			net_conf_import_usage(c, argc, argv);
+			net_conf_import_usage(argc, argv);
 			goto done;
 		case 2:
 			servicename = talloc_strdup_lower(mem_ctx, argv[1]);
@@ -326,7 +309,7 @@
 		goto done;
 	}
 
-	if (c->opt_testmode) {
+	if (opt_testmode) {
 		d_printf("\nTEST MODE - "
 			 "would import the following configuration:\n\n");
 	}
@@ -340,7 +323,7 @@
 		if (!W_ERROR_IS_OK(werr)) {
 			goto done;
 		}
-		werr = import_process_service(c, conf_ctx, service);
+		werr = import_process_service(conf_ctx, service);
 		if (!W_ERROR_IS_OK(werr)) {
 			goto done;
 		}
@@ -354,15 +337,14 @@
 		if (!W_ERROR_IS_OK(werr)) {
 			goto done;
 		}
-		if (!c->opt_testmode) {
+		if (!opt_testmode) {
 			werr = smbconf_drop(conf_ctx);
 			if (!W_ERROR_IS_OK(werr)) {
 				goto done;
 			}
 		}
 		for (sidx = 0; sidx < num_shares; sidx++) {
-			werr = import_process_service(c, conf_ctx,
-						      services[sidx]);
+			werr = import_process_service(conf_ctx, services[sidx]);
 			if (!W_ERROR_IS_OK(werr)) {
 				goto done;
 			}
@@ -376,9 +358,8 @@
 	return ret;
 }
 
-static int net_conf_listshares(struct net_context *c,
-			       struct smbconf_ctx *conf_ctx, int argc,
-			       const char **argv)
+static int net_conf_listshares(struct smbconf_ctx *conf_ctx,
+			       int argc, const char **argv)
 {
 	WERROR werr = WERR_OK;
 	int ret = -1;
@@ -388,8 +369,8 @@
 
 	mem_ctx = talloc_stackframe();
 
-	if (argc != 0 || c->display_usage) {
-		net_conf_listshares_usage(c, argc, argv);
+	if (argc != 0) {
+		net_conf_listshares_usage(argc, argv);
 		goto done;
 	}
 
@@ -411,14 +392,14 @@
 	return ret;
 }
 
-static int net_conf_drop(struct net_context *c, struct smbconf_ctx *conf_ctx,
+static int net_conf_drop(struct smbconf_ctx *conf_ctx,
 			 int argc, const char **argv)
 {
 	int ret = -1;
 	WERROR werr;
 
-	if (argc != 0 || c->display_usage) {
-		net_conf_drop_usage(c, argc, argv);
+	if (argc != 0) {
+		net_conf_drop_usage(argc, argv);
 		goto done;
 	}
 
@@ -435,9 +416,8 @@
 	return ret;
 }
 
-static int net_conf_showshare(struct net_context *c,
-			      struct smbconf_ctx *conf_ctx, int argc,
-			      const char **argv)
+static int net_conf_showshare(struct smbconf_ctx *conf_ctx,
+			      int argc, const char **argv)
 {
 	int ret = -1;
 	WERROR werr = WERR_OK;
@@ -448,8 +428,8 @@
 
 	mem_ctx = talloc_stackframe();
 
-	if (argc != 1 || c->display_usage) {
-		net_conf_showshare_usage(c, argc, argv);
+	if (argc != 1) {
+		net_conf_showshare_usage(argc, argv);
 		goto done;
 	}
 
@@ -486,9 +466,8 @@
  * This is a high level utility function of the net conf utility,
  * not a direct frontend to the smbconf API.
  */
-static int net_conf_addshare(struct net_context *c,
-			     struct smbconf_ctx *conf_ctx, int argc,
-			     const char **argv)
+static int net_conf_addshare(struct smbconf_ctx *conf_ctx,
+			     int argc, const char **argv)
 {
 	int ret = -1;
 	WERROR werr = WERR_OK;
@@ -500,23 +479,17 @@
 	SMB_STRUCT_STAT sbuf;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (c->display_usage) {
-		net_conf_addshare_usage(c, argc, argv);
-		ret = 0;
-		goto done;
-	}
-
 	switch (argc) {
 		case 0:
 		case 1:
 		default:
-			net_conf_addshare_usage(c, argc, argv);
+			net_conf_addshare_usage(argc, argv);
 			goto done;
 		case 5:
 			comment = argv[4];
 		case 4:
 			if (!strnequal(argv[3], "guest_ok=", 9)) {
-				net_conf_addshare_usage(c, argc, argv);
+				net_conf_addshare_usage(argc, argv);
 				goto done;
 			}
 			switch (argv[3][9]) {
@@ -529,12 +502,12 @@
 					guest_ok = "no";
 					break;
 				default:
-					net_conf_addshare_usage(c, argc, argv);
+					net_conf_addshare_usage(argc, argv);
 					goto done;
 			}
 		case 3:
 			if (!strnequal(argv[2], "writeable=", 10)) {
-				net_conf_addshare_usage(c, argc, argv);
+				net_conf_addshare_usage(argc, argv);
 				goto done;
 			}
 			switch (argv[2][10]) {
@@ -547,7 +520,7 @@
 					writeable = "no";
 					break;
 				default:
-					net_conf_addshare_usage(c, argc, argv);
+					net_conf_addshare_usage(argc, argv);
 					goto done;
 			}
 		case 2:
@@ -673,17 +646,16 @@
 	return ret;
 }
 
-static int net_conf_delshare(struct net_context *c,
-			     struct smbconf_ctx *conf_ctx, int argc,
-			     const char **argv)
+static int net_conf_delshare(struct smbconf_ctx *conf_ctx,
+			     int argc, const char **argv)
 {
 	int ret = -1;
 	const char *sharename = NULL;
 	WERROR werr = WERR_OK;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (argc != 1 || c->display_usage) {
-		net_conf_delshare_usage(c, argc, argv);
+	if (argc != 1) {
+		net_conf_delshare_usage(argc, argv);
 		goto done;
 	}
 	sharename = talloc_strdup_lower(mem_ctx, argv[0]);
@@ -705,7 +677,7 @@
 	return ret;
 }
 
-static int net_conf_setparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
+static int net_conf_setparm(struct smbconf_ctx *conf_ctx,
 			    int argc, const char **argv)
 {
 	int ret = -1;
@@ -715,8 +687,8 @@
 	const char *value_str = NULL;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (argc != 3 || c->display_usage) {
-		net_conf_setparm_usage(c, argc, argv);
+	if (argc != 3) {
+		net_conf_setparm_usage(argc, argv);
 		goto done;
 	}
 	service = talloc_strdup_lower(mem_ctx, argv[0]);
@@ -755,7 +727,7 @@
 	return ret;
 }
 
-static int net_conf_getparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
+static int net_conf_getparm(struct smbconf_ctx *conf_ctx,
 			    int argc, const char **argv)
 {
 	int ret = -1;
@@ -767,8 +739,8 @@
 
 	mem_ctx = talloc_stackframe();
 
-	if (argc != 2 || c->display_usage) {
-		net_conf_getparm_usage(c, argc, argv);
+	if (argc != 2) {
+		net_conf_getparm_usage(argc, argv);
 		goto done;
 	}
 	service = talloc_strdup_lower(mem_ctx, argv[0]);
@@ -808,7 +780,7 @@
 	return ret;
 }
 
-static int net_conf_delparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
+static int net_conf_delparm(struct smbconf_ctx *conf_ctx,
 			    int argc, const char **argv)
 {
 	int ret = -1;
@@ -817,8 +789,8 @@
 	char *param = NULL;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (argc != 2 || c->display_usage) {
-		net_conf_delparm_usage(c, argc, argv);
+	if (argc != 2) {
+		net_conf_delparm_usage(argc, argv);
 		goto done;
 	}
 	service = talloc_strdup_lower(mem_ctx, argv[0]);
@@ -857,8 +829,7 @@
 	return ret;
 }
 
-static int net_conf_getincludes(struct net_context *c,
-				struct smbconf_ctx *conf_ctx,
+static int net_conf_getincludes(struct smbconf_ctx *conf_ctx,
 				int argc, const char **argv)
 {
 	WERROR werr;
@@ -869,8 +840,8 @@
 	int ret = -1;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (argc != 1 || c->display_usage) {
-		net_conf_getincludes_usage(c, argc, argv);
+	if (argc != 1) {
+		net_conf_getincludes_usage(argc, argv);
 		goto done;
 	}
 
@@ -898,8 +869,7 @@
 	return ret;
 }
 
-static int net_conf_setincludes(struct net_context *c,
-				struct smbconf_ctx *conf_ctx,
+static int net_conf_setincludes(struct smbconf_ctx *conf_ctx,
 				int argc, const char **argv)
 {
 	WERROR werr;
@@ -909,8 +879,8 @@
 	int ret = -1;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (argc < 1 || c->display_usage) {
-		net_conf_setincludes_usage(c, argc, argv);
+	if (argc < 1) {
+		net_conf_setincludes_usage(argc, argv);
 		goto done;
 	}
 
@@ -940,8 +910,7 @@
 	return ret;
 }
 
-static int net_conf_delincludes(struct net_context *c,
-				struct smbconf_ctx *conf_ctx,
+static int net_conf_delincludes(struct smbconf_ctx *conf_ctx,
 				int argc, const char **argv)
 {
 	WERROR werr;
@@ -949,8 +918,8 @@
 	int ret = -1;
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
 
-	if (argc != 1 || c->display_usage) {
-		net_conf_delincludes_usage(c, argc, argv);
+	if (argc != 1) {
+		net_conf_delincludes_usage(argc, argv);
 		goto done;
 	}
 
@@ -985,9 +954,7 @@
  * The wrapper calls handles opening and closing of the
  * configuration.
  */
-static int net_conf_wrap_function(struct net_context *c,
-				  int (*fn)(struct net_context *,
-					    struct smbconf_ctx *,
+static int net_conf_wrap_function(int (*fn)(struct smbconf_ctx *,
 					    int, const char **),
 				  int argc, const char **argv)
 {
@@ -1002,7 +969,7 @@
 		return -1;
 	}
 
-	ret = fn(c, conf_ctx, argc, argv);
+	ret = fn(conf_ctx, argc, argv);
 
 	smbconf_shutdown(conf_ctx);
 
@@ -1016,19 +983,16 @@
  */
 struct conf_functable {
 	const char *funcname;
-	int (*fn)(struct net_context *c, struct smbconf_ctx *ctx, int argc,
-		  const char **argv);
-	int valid_transports;
-	const char *description;
-	const char *usage;
+	int (*fn)(struct smbconf_ctx *ctx, int argc, const char **argv);
+	const char *helptext;
 };
 
 /**
- * This imitates net_run_function but calls the main functions
+ * This imitates net_run_function2 but calls the main functions
  * through the wrapper net_conf_wrap_function().
  */
-static int net_conf_run_function(struct net_context *c, int argc,
-				 const char **argv, const char *whoami,
+static int net_conf_run_function(int argc, const char **argv,
+				 const char *whoami,
 				 struct conf_functable *table)
 {
 	int i;
@@ -1036,143 +1000,58 @@
 	if (argc != 0) {
 		for (i=0; table[i].funcname; i++) {
 			if (StrCaseCmp(argv[0], table[i].funcname) == 0)
-				return net_conf_wrap_function(c, table[i].fn,
+				return net_conf_wrap_function(table[i].fn,
 							      argc-1,
 							      argv+1);
 		}
 	}
 
-	d_printf("Usage:\n");
 	for (i=0; table[i].funcname; i++) {
-		if (c->display_usage == false)
-			d_printf("%s %-15s %s\n", whoami, table[i].funcname,
-				 table[i].description);
-		else
-			d_printf("%s\n", table[i].usage);
+		d_printf("%s %-15s %s\n", whoami, table[i].funcname,
+			 table[i].helptext);
 	}
 
-	return c->display_usage?0:-1;
+	return -1;
 }
 
 /*
  * Entry-point for all the CONF functions.
  */
 
-int net_conf(struct net_context *c, int argc, const char **argv)
+int net_conf(int argc, const char **argv)
 {
 	int ret = -1;
 	struct conf_functable func_table[] = {
-		{
-			"list",
-			net_conf_list,
-			NET_TRANSPORT_LOCAL,
-			"Dump the complete configuration in smb.conf like "
-			"format.",
-			"net conf list\n"
-			"    Dump the complete configuration in smb.conf like "
-			"format."
-
-		},
-		{
-			"import",
-			net_conf_import,
-			NET_TRANSPORT_LOCAL,
-			"Import configuration from file in smb.conf format.",
-			"net conf import\n"
-			"    Import configuration from file in smb.conf format."
-		},
-		{
-			"listshares",
-			net_conf_listshares,
-			NET_TRANSPORT_LOCAL,
-			"List the share names.",
-			"net conf listshares\n"
-			"    List the share names."
-		},
-		{
-			"drop",
-			net_conf_drop,
-			NET_TRANSPORT_LOCAL,
-			"Delete the complete configuration.",
-			"net conf drop\n"
-			"    Delete the complete configuration."
-		},
-		{
-			"showshare",
-			net_conf_showshare,
-			NET_TRANSPORT_LOCAL,
-			"Show the definition of a share.",
-			"net conf showshare\n"
-			"    Show the definition of a share."
-		},
-		{
-			"addshare",
-			net_conf_addshare,
-			NET_TRANSPORT_LOCAL,
-			"Create a new share.",
-			"net conf addshare\n"
-			"    Create a new share."
-		},
-		{
-			"delshare",
-			net_conf_delshare,
-			NET_TRANSPORT_LOCAL,
-			"Delete a share.",
-			"net conf delshare\n"
-			"    Delete a share."
-		},
-		{
-			"setparm",
-			net_conf_setparm,
-			NET_TRANSPORT_LOCAL,
-			"Store a parameter.",
-			"net conf setparm\n"
-			"    Store a parameter."
-		},
-		{
-			"getparm",
-			net_conf_getparm,
-			NET_TRANSPORT_LOCAL,
-			"Retrieve the value of a parameter.",
-			"net conf getparm\n"
-			"    Retrieve the value of a parameter."
-		},
-		{
-			"delparm",
-			net_conf_delparm,
-			NET_TRANSPORT_LOCAL,
-			"Delete a parameter.",
-			"net conf delparm\n"
-			"    Delete a parameter."
-		},
-		{
-			"getincludes",
-			net_conf_getincludes,
-			NET_TRANSPORT_LOCAL,
-			"Show the includes of a share definition.",
-			"net conf getincludes\n"
-			"    Show the includes of a share definition."
-		},
-		{
-			"setincludes",
-			net_conf_setincludes,
-			NET_TRANSPORT_LOCAL,
-			"Set includes for a share.",
-			"net conf setincludes\n"
-			"    Set includes for a share."
-		},
-		{
-			"delincludes",
-			net_conf_delincludes,
-			NET_TRANSPORT_LOCAL,
-			"Delete includes from a share definition.",
-			"net conf setincludes\n"
-			"    Delete includes from a share definition."
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"list", net_conf_list,
+		 "Dump the complete configuration in smb.conf like format."},
+		{"import", net_conf_import,
+		 "Import configuration from file in smb.conf format."},
+		{"listshares", net_conf_listshares,
+		 "List the share names."},
+		{"drop", net_conf_drop,
+		 "Delete the complete configuration."},
+		{"showshare", net_conf_showshare,
+		 "Show the definition of a share."},
+		{"addshare", net_conf_addshare,
+		 "Create a new share."},
+		{"delshare", net_conf_delshare,
+		 "Delete a share."},
+		{"setparm", net_conf_setparm,
+		 "Store a parameter."},
+		{"getparm", net_conf_getparm,
+		 "Retrieve the value of a parameter."},
+		{"delparm", net_conf_delparm,
+		 "Delete a parameter."},
+		{"getincludes", net_conf_getincludes,
+		 "Show the includes of a share definition."},
+		{"setincludes", net_conf_setincludes,
+		 "Set includes for a share."},
+		{"delincludes", net_conf_delincludes,
+		 "Delete includes from a share definition."},
+		{NULL, NULL, NULL}
 	};
 
-	ret = net_conf_run_function(c, argc, argv, "net conf", func_table);
+	ret = net_conf_run_function(argc, argv, "net conf", func_table);
 
 	return ret;
 }

Modified: branches/samba/upstream/source/utils/net_dom.c
===================================================================
--- branches/samba/upstream/source/utils/net_dom.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_dom.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,38 +20,47 @@
 #include "includes.h"
 #include "utils/net.h"
 
-int net_dom_usage(struct net_context *c, int argc, const char **argv)
+static int net_dom_usage(int argc, const char **argv)
 {
 	d_printf("usage: net dom join "
-		 "<domain=DOMAIN> <ou=OU> <account=ACCOUNT> "
-		 "<password=PASSWORD> <reboot>\n  Join a remote machine\n");
+		 "<domain=DOMAIN> <ou=OU> <account=ACCOUNT> <password=PASSWORD> <reboot>\n");
 	d_printf("usage: net dom unjoin "
-		 "<account=ACCOUNT> <password=PASSWORD> <reboot>\n"
-		 "  Unjoin a remote machine\n");
+		 "<account=ACCOUNT> <password=PASSWORD> <reboot>\n");
 
 	return -1;
 }
 
-static int net_dom_unjoin(struct net_context *c, int argc, const char **argv)
+int net_help_dom(int argc, const char **argv)
 {
+	d_printf("net dom join"\
+		"\n  Join a remote machine\n");
+	d_printf("net dom unjoin"\
+		"\n  Unjoin a remote machine\n");
+
+	return -1;
+}
+
+static int net_dom_unjoin(int argc, const char **argv)
+{
+	struct libnetapi_ctx *ctx = NULL;
 	const char *server_name = NULL;
 	const char *account = NULL;
 	const char *password = NULL;
-	uint32_t unjoin_flags = NETSETUP_ACCT_DELETE |
-				NETSETUP_JOIN_DOMAIN;
+	uint32_t unjoin_flags = WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE |
+				WKSSVC_JOIN_FLAGS_JOIN_TYPE;
 	struct cli_state *cli = NULL;
-	bool do_reboot = false;
+	bool reboot = false;
 	NTSTATUS ntstatus;
 	NET_API_STATUS status;
 	int ret = -1;
 	int i;
 
-	if (argc < 1 || c->display_usage) {
-		return net_dom_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_dom_usage(argc, argv);
 	}
 
-	if (c->opt_host) {
-		server_name = c->opt_host;
+	if (opt_host) {
+		server_name = opt_host;
 	}
 
 	for (i=0; i<argc; i++) {
@@ -68,41 +77,46 @@
 			}
 		}
 		if (strequal(argv[i], "reboot")) {
-			do_reboot = true;
+			reboot = true;
 		}
 	}
 
-	if (do_reboot) {
-		ntstatus = net_make_ipc_connection_ex(c, c->opt_workgroup,
-						      server_name, NULL, 0,
-						      &cli);
+	if (reboot) {
+		ntstatus = net_make_ipc_connection_ex(opt_workgroup, server_name,
+						      NULL, 0, &cli);
 		if (!NT_STATUS_IS_OK(ntstatus)) {
 			return -1;
 		}
 	}
 
+	status = libnetapi_init(&ctx);
+	if (status != 0) {
+		return -1;
+	}
+
+	libnetapi_set_username(ctx, opt_user_name);
+	libnetapi_set_password(ctx, opt_password);
+
 	status = NetUnjoinDomain(server_name, account, password, unjoin_flags);
 	if (status != 0) {
 		printf("Failed to unjoin domain: %s\n",
-			libnetapi_get_error_string(c->netapi_ctx, status));
+			libnetapi_get_error_string(ctx, status));
 		goto done;
 	}
 
-	if (do_reboot) {
-		c->opt_comment = "Shutting down due to a domain membership "
-				 "change";
-		c->opt_reboot = true;
-		c->opt_timeout = 30;
+	if (reboot) {
+		opt_comment = "Shutting down due to a domain membership change";
+		opt_reboot = true;
+		opt_timeout = 30;
 
-		ret = run_rpc_command(c, cli,
-				      &ndr_table_initshutdown.syntax_id,
-				      0, rpc_init_shutdown_internals,
+		ret = run_rpc_command(cli, PI_INITSHUTDOWN, 0,
+				      rpc_init_shutdown_internals,
 				      argc, argv);
 		if (ret == 0) {
 			goto done;
 		}
 
-		ret = run_rpc_command(c, cli, &ndr_table_winreg.syntax_id, 0,
+		ret = run_rpc_command(cli, PI_WINREG, 0,
 				      rpc_reg_shutdown_internals,
 				      argc, argv);
 		goto done;
@@ -118,32 +132,33 @@
 	return ret;
 }
 
-static int net_dom_join(struct net_context *c, int argc, const char **argv)
+static int net_dom_join(int argc, const char **argv)
 {
+	struct libnetapi_ctx *ctx = NULL;
 	const char *server_name = NULL;
 	const char *domain_name = NULL;
 	const char *account_ou = NULL;
 	const char *Account = NULL;
 	const char *password = NULL;
-	uint32_t join_flags = NETSETUP_ACCT_CREATE |
-			      NETSETUP_JOIN_DOMAIN;
+	uint32_t join_flags = WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE |
+			      WKSSVC_JOIN_FLAGS_JOIN_TYPE;
 	struct cli_state *cli = NULL;
-	bool do_reboot = false;
+	bool reboot = false;
 	NTSTATUS ntstatus;
 	NET_API_STATUS status;
 	int ret = -1;
 	int i;
 
-	if (argc < 1 || c->display_usage) {
-		return net_dom_usage(c, argc, argv);
+	if (argc < 1) {
+		return net_dom_usage(argc, argv);
 	}
 
-	if (c->opt_host) {
-		server_name = c->opt_host;
+	if (opt_host) {
+		server_name = opt_host;
 	}
 
-	if (c->opt_force) {
-		join_flags |= NETSETUP_DOMAIN_JOIN_IF_JOINED;
+	if (opt_force) {
+		join_flags |= WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED;
 	}
 
 	for (i=0; i<argc; i++) {
@@ -172,14 +187,13 @@
 			}
 		}
 		if (strequal(argv[i], "reboot")) {
-			do_reboot = true;
+			reboot = true;
 		}
 	}
 
-	if (do_reboot) {
-		ntstatus = net_make_ipc_connection_ex(c, c->opt_workgroup,
-						      server_name, NULL, 0,
-						      &cli);
+	if (reboot) {
+		ntstatus = net_make_ipc_connection_ex(opt_workgroup, server_name,
+						      NULL, 0, &cli);
 		if (!NT_STATUS_IS_OK(ntstatus)) {
 			return -1;
 		}
@@ -187,28 +201,35 @@
 
 	/* check if domain is a domain or a workgroup */
 
+	status = libnetapi_init(&ctx);
+	if (status != 0) {
+		return -1;
+	}
+
+	libnetapi_set_username(ctx, opt_user_name);
+	libnetapi_set_password(ctx, opt_password);
+
 	status = NetJoinDomain(server_name, domain_name, account_ou,
 			       Account, password, join_flags);
 	if (status != 0) {
 		printf("Failed to join domain: %s\n",
-			libnetapi_get_error_string(c->netapi_ctx, status));
+			libnetapi_get_error_string(ctx, status));
 		goto done;
 	}
 
-	if (do_reboot) {
-		c->opt_comment = "Shutting down due to a domain membership "
-				 "change";
-		c->opt_reboot = true;
-		c->opt_timeout = 30;
+	if (reboot) {
+		opt_comment = "Shutting down due to a domain membership change";
+		opt_reboot = true;
+		opt_timeout = 30;
 
-		ret = run_rpc_command(c, cli, &ndr_table_initshutdown.syntax_id, 0,
+		ret = run_rpc_command(cli, PI_INITSHUTDOWN, 0,
 				      rpc_init_shutdown_internals,
 				      argc, argv);
 		if (ret == 0) {
 			goto done;
 		}
 
-		ret = run_rpc_command(c, cli, &ndr_table_winreg.syntax_id, 0,
+		ret = run_rpc_command(cli, PI_WINREG, 0,
 				      rpc_reg_shutdown_internals,
 				      argc, argv);
 		goto done;
@@ -224,42 +245,14 @@
 	return ret;
 }
 
-int net_dom(struct net_context *c, int argc, const char **argv)
+int net_dom(int argc, const char **argv)
 {
-	NET_API_STATUS status;
-
 	struct functable func[] = {
-		{
-			"join",
-			net_dom_join,
-			NET_TRANSPORT_LOCAL,
-			"Join a remote machine",
-			"net dom join <domain=DOMAIN> <ou=OU> "
-			"<account=ACCOUNT> <password=PASSWORD> <reboot>\n"
-			"  Join a remote machine"
-		},
-		{
-			"unjoin",
-			net_dom_unjoin,
-			NET_TRANSPORT_LOCAL,
-			"Unjoin a remote machine",
-			"net dom unjoin <account=ACCOUNT> <password=PASSWORD> "
-			"<reboot>\n"
-			"  Unjoin a remote machine"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"JOIN", net_dom_join},
+		{"UNJOIN", net_dom_unjoin},
+		{"HELP", net_help_dom},
+		{NULL, NULL}
 	};
 
-	status = libnetapi_init(&c->netapi_ctx);
-	if (status != 0) {
-		return -1;
-	}
-
-	libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
-	libnetapi_set_password(c->netapi_ctx, c->opt_password);
-	if (c->opt_kerberos) {
-		libnetapi_set_use_kerberos(c->netapi_ctx);
-	}
-
-	return net_run_function(c, argc, argv, "net dom", func);
+	return net_run_function(argc, argv, func, net_dom_usage);
 }

Deleted: branches/samba/upstream/source/utils/net_file.c
===================================================================
--- branches/samba/upstream/source/utils/net_file.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_file.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,57 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net file commands
-   Copyright (C) 2002  Jim McDonough  (jmcd at us.ibm.com)
-   Copyright (C) 2002  Andrew Tridgell  (tridge at samba.org)
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_file_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("net [<method>] file [misc. options] [targets]\n"\
-		 "\tlists all open files on file server\n\n");
-	d_printf("net [<method>] file USER <username> "\
-		 "[misc. options] [targets]"\
-		 "\n\tlists all files opened by username on file server\n\n");
-	d_printf("net [<method>] file CLOSE <id> [misc. options] [targets]\n"\
-		 "\tcloses specified file on target server\n\n");
-	d_printf("net [rap] file INFO <id> [misc. options] [targets]\n"\
-		 "\tdisplays information about the specified open file\n");
-
-	net_common_methods_usage(c, argc, argv);
-	net_common_flags_usage(c, argc, argv);
-	return -1;
-}
-
-int net_file(struct net_context *c, int argc, const char **argv)
-{
-	if (argc < 1)
-		return net_file_usage(c, argc, argv);
-
-	if (StrCaseCmp(argv[0], "HELP") == 0) {
-		net_file_usage(c, argc, argv);
-		return 0;
-	}
-
-	if (net_rpc_check(c, 0))
-		return net_rpc_file(c, argc, argv);
-	return net_rap_file(c, argc, argv);
-}
-
-

Deleted: branches/samba/upstream/source/utils/net_group.c
===================================================================
--- branches/samba/upstream/source/utils/net_group.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_group.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,65 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net group commands
-   Copyright (C) 2002  Jim McDonough  (jmcd at us.ibm.com)
-   Copyright (C) 2002  Andrew Tridgell  (tridge at samba.org)
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_group_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("net [<method>] group [misc. options] [targets]"\
-		 "\n\tList user groups\n\n");
-	d_printf("net rpc group LIST [global|local|builtin]* [misc. options]"\
-		 "\n\tList specific user groups\n\n");
-	d_printf("net [<method>] group DELETE <name> "\
-		 "[misc. options] [targets]"\
-		 "\n\tDelete specified group\n");
-	d_printf("\nnet [<method>] group ADD <name> [-C comment] [-c container]"\
-		 " [misc. options] [targets]\n\tCreate specified group\n");
-	d_printf("\nnet rpc group MEMBERS <name>\n\tList Group Members\n\n");
-	d_printf("\nnet rpc group ADDMEM <group> <member>\n\tAdd Group Members\n\n");
-	d_printf("\nnet rpc group DELMEM <group> <member>\n\tDelete Group Members\n\n");
-	net_common_methods_usage(c, argc, argv);
-	net_common_flags_usage(c, argc, argv);
-	d_printf("\t-C or --comment=<comment>\tdescriptive comment (for add only)\n");
-	d_printf("\t-c or --container=<container>\tLDAP container, defaults to cn=Users (for add in ADS only)\n");
-	d_printf("\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n");
-	return -1;
-}
-
-int net_group(struct net_context *c, int argc, const char **argv)
-{
-	if (argc < 1)
-		return net_group_usage(c, argc, argv);
-
-	if (StrCaseCmp(argv[0], "HELP") == 0) {
-		net_group_usage(c, argc, argv);
-		return 0;
-	}
-
-	if (net_ads_check(c) == 0)
-		return net_ads_group(c, argc, argv);
-
-	if (argc == 0 && net_rpc_check(c, NET_FLAGS_PDC))
-		return net_rpc_group(c,argc, argv);
-
-	return net_rap_group(c, argc, argv);
-}
-

Modified: branches/samba/upstream/source/utils/net_groupmap.c
===================================================================
--- branches/samba/upstream/source/utils/net_groupmap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_groupmap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -36,17 +36,17 @@
 		/* Perhaps its the NT group name? */
 		if (!pdb_getgrnam(&map, input)) {
 			printf("NT Group %s doesn't exist in mapping DB\n", input);
-			return false;
+			return False;
 		} else {
 			*sid = map.sid;
 		}
 	} else {
 		if (!string_to_sid(sid, input)) {
 			printf("converting sid %s from a string failed!\n", input);
-			return false;
+			return False;
 		}
 	}
-	return true;
+	return True;
 }
 
 /*********************************************************
@@ -72,49 +72,38 @@
 /*********************************************************
  List the groups.
 **********************************************************/
-static int net_groupmap_list(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_list(int argc, const char **argv)
 {
 	size_t entries;
-	bool long_list = false;
+	bool long_list = False;
 	size_t i;
 	fstring ntgroup = "";
 	fstring sid_string = "";
-	const char list_usage_str[] = "net groupmap list [verbose] "
-				      "[ntgroup=NT group] [sid=SID]\n"
-				      "    verbose\tPrint verbose list\n"
-				      "    ntgroup\tNT group to list\n"
-				      "    sid\tSID of group to list";
 
-	if (c->display_usage) {
-		d_printf("Usage:\n%s\n", list_usage_str);
-		return 0;
-	}
-
-	if (c->opt_verbose || c->opt_long_list_entries)
-		long_list = true;
-
+	if (opt_verbose || opt_long_list_entries)
+		long_list = True;
+	
 	/* get the options */
 	for ( i=0; i<argc; i++ ) {
 		if ( !StrCaseCmp(argv[i], "verbose")) {
-			long_list = true;
+			long_list = True;
 		}
 		else if ( !StrnCaseCmp(argv[i], "ntgroup", strlen("ntgroup")) ) {
 			fstrcpy( ntgroup, get_string_param( argv[i] ) );
 			if ( !ntgroup[0] ) {
 				d_fprintf(stderr, "must supply a name\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "sid", strlen("sid")) ) {
 			fstrcpy( sid_string, get_string_param( argv[i] ) );
 			if ( !sid_string[0] ) {
 				d_fprintf(stderr, "must supply a SID\n");
 				return -1;
-			}
+			}		
 		}
 		else {
 			d_fprintf(stderr, "Bad option: %s\n", argv[i]);
-			d_printf("Usage:\n%s\n", list_usage_str);
 			return -1;
 		}
 	}
@@ -123,10 +112,10 @@
 	if ( ntgroup[0] || sid_string[0] ) {
 		DOM_SID sid;
 		GROUP_MAP map;
-
+		
 		if ( sid_string[0] )
 			fstrcpy( ntgroup, sid_string);
-
+			
 		if (!get_sid_from_input(&sid, ntgroup)) {
 			return -1;
 		}
@@ -136,7 +125,7 @@
 			d_fprintf(stderr, "Failure to local group SID in the database\n");
 			return -1;
 		}
-
+	
 		print_map_entry( map, long_list );
 	}
 	else {
@@ -144,7 +133,7 @@
 		/* enumerate all group mappings */
 		if (!pdb_enum_group_mapping(NULL, SID_NAME_UNKNOWN, &map, &entries, ENUM_ALL_MAPPED))
 			return -1;
-
+	
 		for (i=0; i<entries; i++) {
 			print_map_entry( map[i], long_list );
 		}
@@ -159,7 +148,7 @@
  Add a new group mapping entry
 **********************************************************/
 
-static int net_groupmap_add(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_add(int argc, const char **argv)
 {
 	DOM_SID sid;
 	fstring ntgroup = "";
@@ -168,16 +157,12 @@
 	fstring type = "";
 	fstring ntcomment = "";
 	enum lsa_SidType sid_type = SID_NAME_DOM_GRP;
-	uint32 rid = 0;
+	uint32 rid = 0;	
 	gid_t gid;
 	int i;
 	GROUP_MAP map;
-
+	
 	const char *name_type;
-	const char add_usage_str[] = "net groupmap add {rid=<int>|sid=<string>}"
-				     " unixgroup=<string> "
-				     "[type=<domain|local|builtin>] "
-				     "[ntgroup=<string>] [comment=<string>]";
 
 	ZERO_STRUCT(map);
 
@@ -185,11 +170,6 @@
 	map.sid_name_use = SID_NAME_DOM_GRP;
 	name_type = "domain group";
 
-	if (c->display_usage) {
-		d_printf("Usage\n%s\n", add_usage_str);
-		return 0;
-	}
-
 	/* get the options */
 	for ( i=0; i<argc; i++ ) {
 		if ( !StrnCaseCmp(argv[i], "rid", strlen("rid")) ) {
@@ -204,28 +184,28 @@
 			if ( !unixgrp[0] ) {
 				d_fprintf(stderr, "must supply a name\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "ntgroup", strlen("ntgroup")) ) {
 			fstrcpy( ntgroup, get_string_param( argv[i] ) );
 			if ( !ntgroup[0] ) {
 				d_fprintf(stderr, "must supply a name\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "sid", strlen("sid")) ) {
 			fstrcpy( string_sid, get_string_param( argv[i] ) );
 			if ( !string_sid[0] ) {
 				d_fprintf(stderr, "must supply a SID\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "comment", strlen("comment")) ) {
 			fstrcpy( ntcomment, get_string_param( argv[i] ) );
 			if ( !ntcomment[0] ) {
 				d_fprintf(stderr, "must supply a comment string\n");
 				return -1;
-			}
+			}				
 		}
 		else if ( !StrnCaseCmp(argv[i], "type", strlen("type")) )  {
 			fstrcpy( type, get_string_param( argv[i] ) );
@@ -257,10 +237,10 @@
 	}
 
 	if ( !unixgrp[0] ) {
-		d_printf("Usage:\n%s\n", add_usage_str);
+		d_printf("Usage: net groupmap add {rid=<int>|sid=<string>} unixgroup=<string> [type=<domain|local|builtin>] [ntgroup=<string>] [comment=<string>]\n");
 		return -1;
 	}
-
+	
 	if ( (gid = nametogid(unixgrp)) == (gid_t)-1 ) {
 		d_fprintf(stderr, "Can't lookup UNIX group %s\n", unixgrp);
 		return -1;
@@ -273,7 +253,7 @@
 			return -1;
 		}
 	}
-
+	
 	if ( (rid == 0) && (string_sid[0] == '\0') ) {
 		d_printf("No rid or sid specified, choosing a RID\n");
 		if (pdb_rid_algorithm()) {
@@ -309,10 +289,11 @@
 			break;
 		}
 	}
-
+		
 	if (!ntgroup[0] )
 		fstrcpy( ntgroup, unixgrp );
-
+		
+	
 	if (!NT_STATUS_IS_OK(add_initial_entry(gid, string_sid, sid_type, ntgroup, ntcomment))) {
 		d_fprintf(stderr, "adding entry for group %s failed!\n", ntgroup);
 		return -1;
@@ -323,7 +304,7 @@
 	return 0;
 }
 
-static int net_groupmap_modify(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_modify(int argc, const char **argv)
 {
 	DOM_SID sid;
 	GROUP_MAP map;
@@ -335,17 +316,7 @@
 	enum lsa_SidType sid_type = SID_NAME_UNKNOWN;
 	int i;
 	gid_t gid;
-	const char modify_usage_str[] = "net groupmap modify "
-					"{ntgroup=<string>|sid=<SID>} "
-					"[comment=<string>] "
-					"[unixgroup=<string>] "
-					"[type=<domain|local>]";
 
-	if (c->display_usage) {
-		d_printf("Usage:\n%s\n", modify_usage_str);
-		return 0;
-	}
-
 	/* get the options */
 	for ( i=0; i<argc; i++ ) {
 		if ( !StrnCaseCmp(argv[i], "ntgroup", strlen("ntgroup")) ) {
@@ -353,28 +324,28 @@
 			if ( !ntgroup[0] ) {
 				d_fprintf(stderr, "must supply a name\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "sid", strlen("sid")) ) {
 			fstrcpy( sid_string, get_string_param( argv[i] ) );
 			if ( !sid_string[0] ) {
 				d_fprintf(stderr, "must supply a name\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "comment", strlen("comment")) ) {
 			fstrcpy( ntcomment, get_string_param( argv[i] ) );
 			if ( !ntcomment[0] ) {
 				d_fprintf(stderr, "must supply a comment string\n");
 				return -1;
-			}
+			}				
 		}
 		else if ( !StrnCaseCmp(argv[i], "unixgroup", strlen("unixgroup")) ) {
 			fstrcpy( unixgrp, get_string_param( argv[i] ) );
 			if ( !unixgrp[0] ) {
 				d_fprintf(stderr, "must supply a group name\n");
 				return -1;
-			}
+			}				
 		}
 		else if ( !StrnCaseCmp(argv[i], "type", strlen("type")) )  {
 			fstrcpy( type, get_string_param( argv[i] ) );
@@ -394,17 +365,17 @@
 			return -1;
 		}
 	}
-
+	
 	if ( !ntgroup[0] && !sid_string[0] ) {
-		d_printf("Usage:\n%s\n", modify_usage_str);
+		d_printf("Usage: net groupmap modify {ntgroup=<string>|sid=<SID>} [comment=<string>] [unixgroup=<string>] [type=<domain|local>]\n");
 		return -1;
 	}
 
 	/* give preference to the SID; if both the ntgroup name and SID
-	   are defined, use the SID and assume that the group name could be a
+	   are defined, use the SID and assume that the group name could be a 
 	   new name */
-
-	if ( sid_string[0] ) {
+	   	
+	if ( sid_string[0] ) {	
 		if (!get_sid_from_input(&sid, sid_string)) {
 			return -1;
 		}
@@ -413,18 +384,18 @@
 		if (!get_sid_from_input(&sid, ntgroup)) {
 			return -1;
 		}
-	}
+	}	
 
 	/* Get the current mapping from the database */
 	if(!pdb_getgrsid(&map, sid)) {
 		d_fprintf(stderr, "Failure to local group SID in the database\n");
 		return -1;
 	}
-
+	
 	/*
 	 * Allow changing of group type only between domain and local
 	 * We disallow changing Builtin groups !!! (SID problem)
-	 */
+	 */ 
 	if (sid_type == SID_NAME_UNKNOWN) {
 		d_fprintf(stderr, "Can't map to an unknown group type.\n");
 		return -1;
@@ -440,10 +411,10 @@
 	/* Change comment if new one */
 	if ( ntcomment[0] )
 		fstrcpy( map.comment, ntcomment );
-
+		
 	if ( ntgroup[0] )
 		fstrcpy( map.nt_name, ntgroup );
-
+		
 	if ( unixgrp[0] ) {
 		gid = nametogid( unixgrp );
 		if ( gid == -1 ) {
@@ -451,7 +422,7 @@
 				unixgrp);
 			return -1;
 		}
-
+		
 		map.gid = gid;
 	}
 
@@ -459,26 +430,19 @@
 		d_fprintf(stderr, "Could not update group database\n");
 		return -1;
 	}
-
+	
 	d_printf("Updated mapping entry for %s\n", map.nt_name);
 
 	return 0;
 }
 
-static int net_groupmap_delete(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_delete(int argc, const char **argv)
 {
 	DOM_SID sid;
 	fstring ntgroup = "";
 	fstring sid_string = "";
 	int i;
-	const char delete_usage_str[] = "net groupmap delete "
-					"{ntgroup=<string>|sid=<SID>}";
 
-	if (c->display_usage) {
-		d_printf("Usage:\n%s\n", delete_usage_str);
-		return 0;
-	}
-
 	/* get the options */
 	for ( i=0; i<argc; i++ ) {
 		if ( !StrnCaseCmp(argv[i], "ntgroup", strlen("ntgroup")) ) {
@@ -486,31 +450,31 @@
 			if ( !ntgroup[0] ) {
 				d_fprintf(stderr, "must supply a name\n");
 				return -1;
-			}
+			}		
 		}
 		else if ( !StrnCaseCmp(argv[i], "sid", strlen("sid")) ) {
 			fstrcpy( sid_string, get_string_param( argv[i] ) );
 			if ( !sid_string[0] ) {
 				d_fprintf(stderr, "must supply a SID\n");
 				return -1;
-			}
+			}		
 		}
 		else {
 			d_fprintf(stderr, "Bad option: %s\n", argv[i]);
 			return -1;
 		}
 	}
-
+	
 	if ( !ntgroup[0] && !sid_string[0]) {
-		d_printf("Usage:\n%s\n", delete_usage_str);
+		d_printf("Usage: net groupmap delete {ntgroup=<string>|sid=<SID>}\n");
 		return -1;
 	}
-
+	
 	/* give preference to the SID if we have that */
-
+	
 	if ( sid_string[0] )
 		fstrcpy( ntgroup, sid_string );
-
+		
 	if ( !get_sid_from_input(&sid, ntgroup) ) {
 		d_fprintf(stderr, "Unable to resolve group %s to a SID\n", ntgroup);
 		return -1;
@@ -526,20 +490,20 @@
 	return 0;
 }
 
-static int net_groupmap_set(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_set(int argc, const char **argv)
 {
 	const char *ntgroup = NULL;
 	struct group *grp = NULL;
 	GROUP_MAP map;
-	bool have_map = false;
+	bool have_map = False;
 
-	if ((argc < 1) || (argc > 2) || c->display_usage) {
+	if ((argc < 1) || (argc > 2)) {
 		d_printf("Usage: net groupmap set \"NT Group\" "
 			 "[\"unix group\"] [-C \"comment\"] [-L] [-D]\n");
 		return -1;
 	}
 
-	if ( c->opt_localgroup && c->opt_domaingroup ) {
+	if ( opt_localgroup && opt_domaingroup ) {
 		d_printf("Can only specify -L or -D, not both\n");
 		return -1;
 	}
@@ -576,11 +540,11 @@
 
 		map.gid = grp->gr_gid;
 
-		if (c->opt_rid == 0) {
+		if (opt_rid == 0) {
 			if ( pdb_rid_algorithm() )
-				c->opt_rid = algorithmic_pdb_gid_to_group_rid(map.gid);
+				opt_rid = algorithmic_pdb_gid_to_group_rid(map.gid);
 			else {
-				if ( !pdb_new_rid((uint32*)&c->opt_rid) ) {
+				if ( !pdb_new_rid((uint32*)&opt_rid) ) {
 					d_fprintf( stderr, "Could not allocate new RID\n");
 					return -1;
 				}
@@ -588,7 +552,7 @@
 		}
 
 		sid_copy(&map.sid, get_global_sam_sid());
-		sid_append_rid(&map.sid, c->opt_rid);
+		sid_append_rid(&map.sid, opt_rid);
 
 		map.sid_name_use = SID_NAME_DOM_GRP;
 		fstrcpy(map.nt_name, ntgroup);
@@ -603,7 +567,7 @@
 
 	/* Now we have a mapping entry, update that stuff */
 
-	if ( c->opt_localgroup || c->opt_domaingroup ) {
+	if ( opt_localgroup || opt_domaingroup ) {
 		if (map.sid_name_use == SID_NAME_WKN_GRP) {
 			d_fprintf(stderr, "Can't change type of the BUILTIN group %s\n",
 				 map.nt_name);
@@ -611,19 +575,19 @@
 		}
 	}
 
-	if (c->opt_localgroup)
+	if (opt_localgroup)
 		map.sid_name_use = SID_NAME_ALIAS;
 
-	if (c->opt_domaingroup)
+	if (opt_domaingroup)
 		map.sid_name_use = SID_NAME_DOM_GRP;
 
 	/* The case (opt_domaingroup && opt_localgroup) was tested for above */
 
-	if (strlen(c->opt_comment) > 0)
-		fstrcpy(map.comment, c->opt_comment);
+	if (strlen(opt_comment) > 0)
+		fstrcpy(map.comment, opt_comment);
 
-	if (strlen(c->opt_newntname) > 0)
-		fstrcpy(map.nt_name, c->opt_newntname);
+	if (strlen(opt_newntname) > 0)
+		fstrcpy(map.nt_name, opt_newntname);
 
 	if (grp != NULL)
 		map.gid = grp->gr_gid;
@@ -636,18 +600,11 @@
 	return 0;
 }
 
-static int net_groupmap_cleanup(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_cleanup(int argc, const char **argv)
 {
 	GROUP_MAP *map = NULL;
 	size_t i, entries;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net groupmap cleanup\n"
-			 "    Delete all group mappings\n");
-		return 0;
-	}
-
 	if (!pdb_enum_group_mapping(NULL, SID_NAME_UNKNOWN, &map, &entries,
 				    ENUM_ALL_MAPPED)) {
 		d_fprintf(stderr, "Could not list group mappings\n");
@@ -672,12 +629,11 @@
 	return 0;
 }
 
-static int net_groupmap_addmem(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_addmem(int argc, const char **argv)
 {
 	DOM_SID alias, member;
 
-	if ( (argc != 2) ||
-	     c->display_usage ||
+	if ( (argc != 2) || 
 	     !string_to_sid(&alias, argv[0]) ||
 	     !string_to_sid(&member, argv[1]) ) {
 		d_printf("Usage: net groupmap addmem alias-sid member-sid\n");
@@ -693,12 +649,11 @@
 	return 0;
 }
 
-static int net_groupmap_delmem(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_delmem(int argc, const char **argv)
 {
 	DOM_SID alias, member;
 
-	if ( (argc != 2) ||
-	     c->display_usage ||
+	if ( (argc != 2) || 
 	     !string_to_sid(&alias, argv[0]) ||
 	     !string_to_sid(&member, argv[1]) ) {
 		d_printf("Usage: net groupmap delmem alias-sid member-sid\n");
@@ -714,14 +669,13 @@
 	return 0;
 }
 
-static int net_groupmap_listmem(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_listmem(int argc, const char **argv)
 {
 	DOM_SID alias;
 	DOM_SID *members;
 	size_t i, num;
 
-	if ( (argc != 1) ||
-	     c->display_usage ||
+	if ( (argc != 1) || 
 	     !string_to_sid(&alias, argv[0]) ) {
 		d_printf("Usage: net groupmap listmem alias-sid\n");
 		return -1;
@@ -759,7 +713,7 @@
 				     &alias_rids, &num_alias_rids))) {
 		d_fprintf(stderr, "Could not list memberships for sid %s\n",
 			 sid_string_tos(member));
-		return false;
+		return False;
 	}
 
 	for (i = 0; i < num_alias_rids; i++) {
@@ -769,16 +723,15 @@
 		printf("%s\n", sid_string_tos(&alias));
 	}
 
-	return true;
+	return True;
 }
 
-static int net_groupmap_memberships(struct net_context *c, int argc, const char **argv)
+static int net_groupmap_memberships(int argc, const char **argv)
 {
 	TALLOC_CTX *mem_ctx;
 	DOM_SID *domain_sid, *builtin_sid, member;
 
-	if ( (argc != 1) ||
-	     c->display_usage ||
+	if ( (argc != 1) || 
 	     !string_to_sid(&member, argv[0]) ) {
 		d_printf("Usage: net groupmap memberof sid\n");
 		return -1;
@@ -806,93 +759,51 @@
 	return 0;
 }
 
+int net_help_groupmap(int argc, const char **argv)
+{
+	d_printf("net groupmap add"\
+		"\n  Create a new group mapping\n");
+	d_printf("net groupmap modify"\
+		"\n  Update a group mapping\n");
+	d_printf("net groupmap delete"\
+		"\n  Remove a group mapping\n");
+	d_printf("net groupmap addmem"\
+		 "\n  Add a foreign alias member\n");
+	d_printf("net groupmap delmem"\
+		 "\n  Delete a foreign alias member\n");
+	d_printf("net groupmap listmem"\
+		 "\n  List foreign group members\n");
+	d_printf("net groupmap memberships"\
+		 "\n  List foreign group memberships\n");
+	d_printf("net groupmap list"\
+		"\n  List current group map\n");
+	d_printf("net groupmap set"\
+		"\n  Set group mapping\n");
+	d_printf("net groupmap cleanup"\
+		"\n  Remove foreign group mapping entries\n");
+	
+	return -1;
+}
+
+
 /***********************************************************
  migrated functionality from smbgroupedit
  **********************************************************/
-int net_groupmap(struct net_context *c, int argc, const char **argv)
+int net_groupmap(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			net_groupmap_add,
-			NET_TRANSPORT_LOCAL,
-			"Create a new group mapping",
-			"net groupmap add\n"
-			"    Create a new group mapping"
-		},
-		{
-			"modify",
-			net_groupmap_modify,
-			NET_TRANSPORT_LOCAL,
-			"Update a group mapping",
-			"net groupmap modify\n"
-			"    Modify an existing group mapping"
-		},
-		{
-			"delete",
-			net_groupmap_delete,
-			NET_TRANSPORT_LOCAL,
-			"Remove a group mapping",
-			"net groupmap delete\n"
-			"    Remove a group mapping"
-		},
-		{
-			"set",
-			net_groupmap_set,
-			NET_TRANSPORT_LOCAL,
-			"Set group mapping",
-			"net groupmap set\n"
-			"    Set a group mapping"
-		},
-		{
-			"cleanup",
-			net_groupmap_cleanup,
-			NET_TRANSPORT_LOCAL,
-			"Remove foreign group mapping entries",
-			"net groupmap cleanup\n"
-			"    Remove foreign group mapping entries"
-		},
-		{
-			"addmem",
-			net_groupmap_addmem,
-			NET_TRANSPORT_LOCAL,
-			"Add a foreign alias member",
-			"net groupmap addmem\n"
-			"    Add a foreign alias member"
-		},
-		{
-			"delmem",
-			net_groupmap_delmem,
-			NET_TRANSPORT_LOCAL,
-			"Delete foreign alias member",
-			"net groupmap delmem\n"
-			"    Delete foreign alias member"
-		},
-		{
-			"listmem",
-			net_groupmap_listmem,
-			NET_TRANSPORT_LOCAL,
-			"List foreign group members",
-			"net groupmap listmem\n"
-			"    List foreign alias members"
-		},
-		{
-			"memberships",
-			net_groupmap_memberships,
-			NET_TRANSPORT_LOCAL,
-			"List foreign group memberships",
-			"net groupmap memberships\n"
-			"    List foreign group memberships"
-		},
-		{
-			"list",
-			net_groupmap_list,
-			NET_TRANSPORT_LOCAL,
-			"List current group map",
-			"net groupmap list\n"
-			"    List current group map"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"add", net_groupmap_add},
+		{"modify", net_groupmap_modify},
+		{"delete", net_groupmap_delete},
+		{"set", net_groupmap_set},
+		{"cleanup", net_groupmap_cleanup},
+ 		{"addmem", net_groupmap_addmem},
+ 		{"delmem", net_groupmap_delmem},
+ 		{"listmem", net_groupmap_listmem},
+ 		{"memberships", net_groupmap_memberships},
+		{"list", net_groupmap_list},
+		{"help", net_help_groupmap},
+		{NULL, NULL}
 	};
 
 	/* we shouldn't have silly checks like this */
@@ -900,7 +811,10 @@
 		d_fprintf(stderr, "You must be root to edit group mappings.\n");
 		return -1;
 	}
+	
+	if ( argc )
+		return net_run_function(argc, argv, func, net_help_groupmap);
 
-	return net_run_function(c,argc, argv, "net groupmap", func);
+	return net_help_groupmap( argc, argv );
 }
 

Modified: branches/samba/upstream/source/utils/net_help.c
===================================================================
--- branches/samba/upstream/source/utils/net_help.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_help.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,5 +1,5 @@
-/*
-   Samba Unix/Linux SMB client library
+/* 
+   Samba Unix/Linux SMB client library 
    net help commands
    Copyright (C) 2002 Jim McDonough (jmcd at us.ibm.com)
 
@@ -7,63 +7,283 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  
 */
 
 #include "includes.h"
 #include "utils/net.h"
 
-static int net_usage(struct net_context *c, int argc, const char **argv);
+int net_common_methods_usage(int argc, const char**argv)
+{
+	d_printf("Valid methods: (auto-detected if not specified)\n");
+	d_printf("\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n");
+	d_printf("\trpc\t\t\t\tDCE-RPC\n");
+	d_printf("\trap\t\t\t\tRAP (older systems)\n");
+	d_printf("\n");
+	return 0;
+}
 
-static int net_help_usage(struct net_context *c, int argc, const char **argv)
+int net_common_flags_usage(int argc, const char **argv)
 {
-	c->display_usage = true;
-	return net_usage(c, argc, argv);
+	d_printf("Valid targets: choose one (none defaults to localhost)\n");
+	d_printf("\t-S or --server=<server>\t\tserver name\n");
+	d_printf("\t-I or --ipaddress=<ipaddr>\taddress of target server\n");
+	d_printf("\t-w or --workgroup=<wg>\t\ttarget workgroup or domain\n");
+
+	d_printf("\n");
+	d_printf("Valid miscellaneous options are:\n"); /* misc options */
+	d_printf("\t-p or --port=<port>\t\tconnection port on target\n");
+	d_printf("\t-W or --myworkgroup=<wg>\tclient workgroup\n");
+	d_printf("\t-d or --debuglevel=<level>\tdebug level (0-10)\n");
+	d_printf("\t-n or --myname=<name>\t\tclient name\n");
+	d_printf("\t-U or --user=<name>\t\tuser name\n");
+	d_printf("\t-s or --configfile=<path>\tpathname of smb.conf file\n");
+	d_printf("\t-l or --long\t\t\tDisplay full information\n");
+	d_printf("\t-V or --version\t\t\tPrint samba version information\n");
+	d_printf("\t-P or --machine-pass\t\tAuthenticate as machine account\n");
+	d_printf("\t-e or --encrypt\t\tEncrypt SMB transport (UNIX extended servers only)\n");
+	return -1;
 }
 
-static int net_usage(struct net_context *c, int argc, const char **argv)
+static int help_usage(int argc, const char **argv)
 {
-	struct functable *table = (struct functable*) c->private_data;
-	int i;
+	d_printf(
+"\n"\
+"Usage: net help <function>\n"\
+"\n"\
+"Valid functions are:\n"\
+"  RPC RAP ADS FILE SHARE SESSION SERVER DOMAIN PRINTQ USER GROUP VALIDATE\n"\
+"  GROUPMEMBER ADMIN SERVICE PASSWORD TIME LOOKUP GETLOCALSID SETLOCALSID\n"\
+"  GETDOMAINSID SETDOMAINSID CHANGESCRETPW LOOKUP SAM\n");
+	return -1;
+}
 
-	d_printf("Usage:\n");
-	for (i=0; table[i].funcname != NULL; i++) {
-		if (c->display_usage) {
-			d_printf("net %s usage:\n", table[i].funcname);
-			d_printf("\n%s\n\n", table[i].usage);
-		} else {
-			d_printf("%s %-15s %s\n", "net", table[i].funcname,
-				 table[i].description);
-		}
+int net_help_user(int argc, const char **argv)
+{
+	d_printf("\nnet [<method>] user [misc. options] [targets]"\
+		 "\n\tList users\n\n");
+	d_printf("net [<method>] user DELETE <name> [misc. options] [targets]"\
+		 "\n\tDelete specified user\n");
+	d_printf("\nnet [<method>] user INFO <name> [misc. options] [targets]"\
+		 "\n\tList the domain groups of the specified user\n");
+	d_printf("\nnet [<method>] user ADD <name> [password] [-c container] "\
+		 "[-F user flags] [misc. options]"\
+		 " [targets]\n\tAdd specified user\n");
+	d_printf("\nnet [<method>] user RENAME <oldusername> <newusername>"\
+		 " [targets]\n\tRename specified user\n\n");
 
-	}
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_methods_usage(argc, argv);
+	net_common_flags_usage(argc, argv);
+	d_printf("\t-C or --comment=<comment>\tdescriptive comment (for add only)\n");
+	d_printf("\t-c or --container=<container>\tLDAP container, defaults to cn=Users (for add in ADS only)\n");
 	return -1;
 }
 
+int net_help_group(int argc, const char **argv)
+{
+	d_printf("net [<method>] group [misc. options] [targets]"\
+		 "\n\tList user groups\n\n");
+	d_printf("net rpc group LIST [global|local|builtin]* [misc. options]"\
+		 "\n\tList specific user groups\n\n");
+	d_printf("net [<method>] group DELETE <name> "\
+		 "[misc. options] [targets]"\
+		 "\n\tDelete specified group\n");
+	d_printf("\nnet [<method>] group ADD <name> [-C comment] [-c container]"\
+		 " [misc. options] [targets]\n\tCreate specified group\n");
+	d_printf("\nnet rpc group MEMBERS <name>\n\tList Group Members\n\n");
+	d_printf("\nnet rpc group ADDMEM <group> <member>\n\tAdd Group Members\n\n");
+	d_printf("\nnet rpc group DELMEM <group> <member>\n\tDelete Group Members\n\n");
+	net_common_methods_usage(argc, argv);
+	net_common_flags_usage(argc, argv);
+	d_printf("\t-C or --comment=<comment>\tdescriptive comment (for add only)\n");
+	d_printf("\t-c or --container=<container>\tLDAP container, defaults to cn=Users (for add in ADS only)\n");
+	d_printf("\t-L or --localgroup\t\tWhen adding groups, create a local group (alias)\n");
+	return -1;
+}
+
+int net_help_join(int argc, const char **argv)
+{
+	d_printf("\nnet [<method>] join [misc. options]\n"
+		 "\tjoins this server to a domain\n");
+	d_printf("Valid methods: (auto-detected if not specified)\n");
+	d_printf("\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n");
+	d_printf("\trpc\t\t\t\tDCE-RPC\n");
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
+int net_help_share(int argc, const char **argv)
+{
+	d_printf(
+	 "\nnet [<method>] share [misc. options] [targets] \n"
+	 "\tenumerates all exported resources (network shares) "
+	 "on target server\n\n"
+	 "net [<method>] share ADD <name=serverpath> [misc. options] [targets]"
+	"\n\tadds a share from a server (makes the export active)\n\n"
+	"net [<method>] share DELETE <sharename> [misc. options] [targets]"
+	"\n\tdeletes a share from a server (makes the export inactive)\n\n"
+	"net [<method>] share ALLOWEDUSERS [<filename>] "
+	"[misc. options] [targets]"
+	"\n\tshows a list of all shares together with all users allowed to"
+	"\n\taccess them. This needs the output of 'net usersidlist' on"
+	"\n\tstdin or in <filename>.\n\n"
+	 "net [<method>] share MIGRATE FILES <sharename> [misc. options] [targets]"
+	 "\n\tMigrates files from remote to local server\n\n"
+	 "net [<method>] share MIGRATE SHARES <sharename> [misc. options] [targets]"
+	 "\n\tMigrates shares from remote to local server\n\n"
+	 "net [<method>] share MIGRATE SECURITY <sharename> [misc. options] [targets]"
+	 "\n\tMigrates share-ACLs from remote to local server\n\n" 
+	 "net [<method>] share MIGRATE ALL <sharename> [misc. options] [targets]"
+	 "\n\tMigrates shares (including directories, files) from remote\n"
+	 "\tto local server\n\n"
+	);
+	net_common_methods_usage(argc, argv);
+	net_common_flags_usage(argc, argv);
+	d_printf(
+	 "\t-C or --comment=<comment>\tdescriptive comment (for add only)\n"
+	 "\t-M or --maxusers=<num>\t\tmax users allowed for share\n"
+	 "\t      --acls\t\t\tcopies ACLs as well\n"
+	 "\t      --attrs\t\t\tcopies DOS Attributes as well\n"
+	 "\t      --timestamps\t\tpreserve timestamps while copying files\n"
+	 "\t      --destination\t\tmigration target server (default: localhost)\n"
+	 "\t-e or --exclude\t\t\tlist of shares to be excluded from mirroring\n"
+	 "\t-v or --verbose\t\t\tgive verbose output\n");
+	return -1;
+}
+
+int net_help_file(int argc, const char **argv)
+{
+	d_printf("net [<method>] file [misc. options] [targets]\n"\
+		 "\tlists all open files on file server\n\n");
+	d_printf("net [<method>] file USER <username> "\
+		 "[misc. options] [targets]"\
+		 "\n\tlists all files opened by username on file server\n\n");
+	d_printf("net [<method>] file CLOSE <id> [misc. options] [targets]\n"\
+		 "\tcloses specified file on target server\n\n");
+	d_printf("net [rap] file INFO <id> [misc. options] [targets]\n"\
+		 "\tdisplays information about the specified open file\n");
+
+	net_common_methods_usage(argc, argv);
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
+int net_help_printer(int argc, const char **argv)
+{
+	d_printf("net rpc printer LIST [printer] [misc. options] [targets]\n"\
+		 "\tlists all printers on print-server\n\n");
+	d_printf("net rpc printer DRIVER [printer] [misc. options] [targets]\n"\
+		 "\tlists all printer-drivers on print-server\n\n");
+	d_printf("net rpc printer PUBLISH action [printer] [misc. options] [targets]\n"\
+		 "\tpublishes printer settings in Active Directory\n"
+		 "\taction can be one of PUBLISH, UPDATE, UNPUBLISH or LIST\n\n");
+	d_printf("net rpc printer MIGRATE PRINTERS [printer] [misc. options] [targets]"\
+		 "\n\tmigrates printers from remote to local server\n\n");
+	d_printf("net rpc printer MIGRATE SETTINGS [printer] [misc. options] [targets]"\
+		 "\n\tmigrates printer-settings from remote to local server\n\n");
+	d_printf("net rpc printer MIGRATE DRIVERS [printer] [misc. options] [targets]"\
+		 "\n\tmigrates printer-drivers from remote to local server\n\n");
+	d_printf("net rpc printer MIGRATE FORMS [printer] [misc. options] [targets]"\
+		 "\n\tmigrates printer-forms from remote to local server\n\n");
+	d_printf("net rpc printer MIGRATE SECURITY [printer] [misc. options] [targets]"\
+		 "\n\tmigrates printer-ACLs from remote to local server\n\n");
+	d_printf("net rpc printer MIGRATE ALL [printer] [misc. options] [targets]"\
+		 "\n\tmigrates drivers, forms, queues, settings and acls from\n"\
+		 "\tremote to local print-server\n\n");
+	net_common_methods_usage(argc, argv);
+	net_common_flags_usage(argc, argv);
+	d_printf(
+	 "\t-v or --verbose\t\t\tgive verbose output\n"
+	 "\t      --destination\t\tmigration target server (default: localhost)\n");
+
+	return -1;
+}
+
+
+int net_help_status(int argc, const char **argv)
+{
+	d_printf("  net status sessions [parseable] "
+		 "Show list of open sessions\n");
+	d_printf("  net status shares [parseable]   "
+		 "Show list of open shares\n");
+	return -1;
+}
+
+static int net_usage(int argc, const char **argv)
+{
+	d_printf("  net time\t\tto view or set time information\n"\
+		 "  net lookup\t\tto lookup host name or ip address\n"\
+		 "  net user\t\tto manage users\n"\
+		 "  net group\t\tto manage groups\n"\
+		 "  net sam\t\tto edit the local user database directly\n"\
+		 "  net lookup\t\tto look up various things\n"\
+		 "  net groupmap\t\tto manage group mappings\n"\
+		 "  net join\t\tto join a domain\n"\
+		 "  net cache\t\tto operate on cache tdb file\n"\
+		 "  net getlocalsid [NAME]\tto get the SID for local machine name\n"\
+		 "  net setlocalsid SID\tto set the local machine SID\n"\
+		 "  net getdomainsid the machine SID and the domain SID on the local server\n"\
+		 "  net setdomainsid SID\tto set the domain SID on member servers\n"\
+		 "  net changesecretpw\tto change the machine password in the local secrets database only\n"\
+		 "                    \tthis requires the -f flag as a safety barrier\n"\
+		 "  net status\t\tShow server status\n"\
+		 "  net usersidlist\tto get a list of all users with their SIDs\n"
+		 "  net usershare\t\tto add, delete and list locally user-modifiable shares\n"
+		 "  net conf\t\tto view and edit samba's registry based configuration\n"
+		 "\n"\
+		 "  net ads <command>\tto run ADS commands\n"\
+		 "  net rap <command>\tto run RAP (pre-RPC) commands\n"\
+		 "  net rpc <command>\tto run RPC commands\n"\
+		 "\n"\
+		 "Type \"net help <option>\" to get more information on that option\n");
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
 /*
   handle "net help *" subcommands
 */
-int net_help(struct net_context *c, int argc, const char **argv)
+int net_help(int argc, const char **argv)
 {
-	struct functable *func = (struct functable *)c->private_data;
+	struct functable func[] = {
+		{"ADS", net_ads_help},	
+		{"RAP", net_rap_help},
+		{"RPC", net_rpc_help},
 
-	if (argc == 0) {
-		return net_usage(c, argc, argv);
-	}
+		{"FILE", net_help_file},
+		{"SHARE", net_help_share},
+		{"SESSION", net_rap_session_usage},
+		{"SERVER", net_rap_server_usage},
+		{"DOMAIN", net_rap_domain_usage},
+		{"PRINTQ", net_rap_printq_usage},
+		{"USER", net_help_user},
+		{"GROUP", net_help_group},
+		{"GROUPMAP", net_help_groupmap},
+		{"JOIN", net_help_join},
+		{"DOM", net_help_dom},
+		{"VALIDATE", net_rap_validate_usage},
+		{"GROUPMEMBER", net_rap_groupmember_usage},
+		{"ADMIN", net_rap_admin_usage},
+		{"SERVICE", net_rap_service_usage},
+		{"PASSWORD", net_rap_password_usage},
+		{"TIME", net_time_usage},
+		{"LOOKUP", net_lookup_usage},
+		{"USERSHARE", net_usershare_usage},
+		{"USERSIDLIST", net_usersidlist_usage},
+#ifdef WITH_FAKE_KASERVER
+		{"AFS", net_help_afs},
+#endif
 
-	if (StrCaseCmp(argv[0], "help") == 0) {
-		return net_help_usage(c, argc, argv);
-	}
+		{"HELP", help_usage},
+		{NULL, NULL}};
 
-	c->display_usage = true;
-	return net_run_function(c, argc, argv, "net help", func);
+	return net_run_function(argc, argv, func, net_usage);
 }

Deleted: branches/samba/upstream/source/utils/net_help_common.c
===================================================================
--- branches/samba/upstream/source/utils/net_help_common.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_help_common.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,55 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net help commands
-   Copyright (C) 2002 Jim McDonough (jmcd at us.ibm.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 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_common_methods_usage(struct net_context *c, int argc, const char**argv)
-{
-	d_printf("Valid methods: (auto-detected if not specified)\n");
-	d_printf("\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n");
-	d_printf("\trpc\t\t\t\tDCE-RPC\n");
-	d_printf("\trap\t\t\t\tRAP (older systems)\n");
-	d_printf("\n");
-	return 0;
-}
-
-int net_common_flags_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("Valid targets: choose one (none defaults to localhost)\n");
-	d_printf("\t-S or --server=<server>\t\tserver name\n");
-	d_printf("\t-I or --ipaddress=<ipaddr>\taddress of target server\n");
-	d_printf("\t-w or --workgroup=<wg>\t\ttarget workgroup or domain\n");
-
-	d_printf("\n");
-	d_printf("Valid miscellaneous options are:\n"); /* misc options */
-	d_printf("\t-p or --port=<port>\t\tconnection port on target\n");
-	d_printf("\t-W or --myworkgroup=<wg>\tclient workgroup\n");
-	d_printf("\t-d or --debuglevel=<level>\tdebug level (0-10)\n");
-	d_printf("\t-n or --myname=<name>\t\tclient name\n");
-	d_printf("\t-U or --user=<name>\t\tuser name\n");
-	d_printf("\t-s or --configfile=<path>\tpathname of smb.conf file\n");
-	d_printf("\t-l or --long\t\t\tDisplay full information\n");
-	d_printf("\t-V or --version\t\t\tPrint samba version information\n");
-	d_printf("\t-P or --machine-pass\t\tAuthenticate as machine account\n");
-	d_printf("\t-e or --encrypt\t\t\tEncrypt SMB transport (UNIX extended servers only)\n");
-	d_printf("\t-k or --kerberos\t\tUse kerberos (active directory) authentication\n");
-	return -1;
-}
-

Deleted: branches/samba/upstream/source/utils/net_help_common.h
===================================================================
--- branches/samba/upstream/source/utils/net_help_common.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_help_common.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,49 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net help commands
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _NET_HELP_COMMON_H_
-#define _NET_HELP_COMMON_H_
-
-/**
- * Get help for common methods.
- *
- * This will output some help for using the ADS/RPC/RAP transports.
- *
- * @param c	A net_context structure
- * @param argc	Normal argc with previous parameters removed
- * @param argv	Normal argv with previous parameters removed
- * @return	0 on success, nonzero on failure.
- */
-int net_common_methods_usage(struct net_context *c, int argc, const char**argv);
-
-/**
- * Get help for common flags.
- *
- * This will output some help for using common flags.
- *
- * @param c	A net_context structure
- * @param argc	Normal argc with previous parameters removed
- * @param argv	Normal argv with previous parameters removed
- * @return	0 on success, nonzero on failure.
- */
-int net_common_flags_usage(struct net_context *c, int argc, const char **argv);
-
-
-#endif /* _NET_HELP_COMMON_H_*/
-

Modified: branches/samba/upstream/source/utils/net_idmap.c
===================================================================
--- branches/samba/upstream/source/utils/net_idmap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_idmap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,21 +1,20 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2003 Andrew Bartlett (abartlet at samba.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; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "includes.h"
 #include "utils/net.h"
@@ -55,17 +54,12 @@
 /***********************************************************
  Dump the current idmap
  **********************************************************/
-static int net_idmap_dump(struct net_context *c, int argc, const char **argv)
+static int net_idmap_dump(int argc, const char **argv)
 {
 	TDB_CONTEXT *idmap_tdb;
 
-	if ( argc != 1  || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net idmap dump <inputfile>\n"
-			 "  Dump current ID mapping.\n"
-			 "    inputfile\tTDB file to read mappings from.\n");
-		return c->display_usage?0:-1;
-	}
+	if ( argc != 1 )
+		return net_help_idmap( argc, argv );
 
 	idmap_tdb = tdb_open_log(argv[0], 0, TDB_DEFAULT, O_RDONLY, 0);
 
@@ -85,20 +79,11 @@
  Write entries from stdin to current local idmap
  **********************************************************/
 
-static int net_idmap_restore(struct net_context *c, int argc, const char **argv)
+static int net_idmap_restore(int argc, const char **argv)
 {
 	TALLOC_CTX *ctx;
 	FILE *input;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net idmap restore [inputfile]\n"
-			 "  Restore ID mappings from file\n"
-			 "    inputfile\tFile to load ID mappings from. If not "
-			 "given, load data from stdin.\n");
-		return 0;
-	}
-
 	if (! winbind_ping()) {
 		d_fprintf(stderr, "To use net idmap Winbindd must be running.\n");
 		return -1;
@@ -186,13 +171,13 @@
 /***********************************************************
  Delete a SID mapping from a winbindd_idmap.tdb
  **********************************************************/
-static int net_idmap_delete(struct net_context *c, int argc, const char **argv)
+static int net_idmap_delete(int argc, const char **argv)
 {
 	d_printf("Not Implemented yet\n");
 	return -1;
 }
 
-static int net_idmap_set(struct net_context *c, int argc, const char **argv)
+static int net_idmap_set(int argc, const char **argv)
 {
 	d_printf("Not Implemented yet\n");
 	return -1;
@@ -221,7 +206,7 @@
 }
 
 
-static int net_idmap_secret(struct net_context *c, int argc, const char **argv)
+static int net_idmap_secret(int argc, const char **argv)
 {
 	TALLOC_CTX *ctx;
 	const char *secret;
@@ -231,15 +216,8 @@
 	char *opt = NULL;
 	bool ret;
 
-	if (argc != 2 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net idmap secret {<DOMAIN>|alloc} <secret>\n"
-			 "  Set the secret for the specified domain "
-			 "(or alloc module)\n"
-			 "    DOMAIN\tDomain to set secret for.\n"
-			 "    alloc\tSet secret for the alloc module\n"
-			 "    secret\tNew secret to set.\n");
-		return c->display_usage?0:-1;
+	if (argc != 2) {
+		return net_help_idmap(argc, argv);
 	}
 
 	secret = argv[1];
@@ -298,23 +276,23 @@
 	return 0;
 }
 
-int net_help_idmap(struct net_context *c, int argc, const char **argv)
+int net_help_idmap(int argc, const char **argv)
 {
-	d_printf("net idmap dump <inputfile>\n"
+	d_printf("net idmap dump <inputfile>\n"\
 		 "    Dump current id mapping\n");
 
-	d_printf("net idmap restore\n"
+	d_printf("net idmap restore\n"\
 		 "    Restore entries from stdin\n");
 
 	/* Deliberately *not* document net idmap delete */
 
-	d_printf("net idmap secret <DOMAIN>|alloc <secret>\n"
+	d_printf("net idmap secret <DOMAIN>|alloc <secret>\n"\
 		 "    Set the secret for the specified DOMAIN (or the alloc module)\n");
 
 	return -1;
 }
 
-static int net_idmap_aclmapset(struct net_context *c, int argc, const char **argv)
+static int net_idmap_aclmapset(int argc, const char **argv)
 {
 	TALLOC_CTX *mem_ctx;
 	int result = -1;
@@ -324,7 +302,7 @@
 	struct db_record *rec;
 	NTSTATUS status;
 
-	if (argc != 3 || c->display_usage) {
+	if (argc != 3) {
 		d_fprintf(stderr, "usage: net idmap aclmapset <tdb> "
 			  "<src-sid> <dst-sid>\n");
 		return -1;
@@ -381,61 +359,20 @@
 /***********************************************************
  Look at the current idmap
  **********************************************************/
-int net_idmap(struct net_context *c, int argc, const char **argv)
+int net_idmap(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"dump",
-			net_idmap_dump,
-			NET_TRANSPORT_LOCAL,
-			"Dump the current ID mappings",
-			"net idmap dump\n"
-			"  Dump the current ID mappings"
-		},
-		{
-			"restore",
-			net_idmap_restore,
-			NET_TRANSPORT_LOCAL,
-			"Restore entries from stdin",
-			"net idmap restore\n"
-			"  Restore entries from stdin"
-		},
-		{
-			"setmap",
-			net_idmap_set,
-			NET_TRANSPORT_LOCAL,
-			"Not implemented yet",
-			"net idmap setmap\n"
-			"  Not implemented yet"
-		},
-		{
-			"delete",
-			net_idmap_delete,
-			NET_TRANSPORT_LOCAL,
-			"Not implemented yet",
-			"net idmap delete\n"
-			"  Not implemented yet"
-		},
-		{
-			"secret",
-			net_idmap_secret,
-			NET_TRANSPORT_LOCAL,
-			"Set secret for specified domain",
-			"net idmap secret {<DOMAIN>|alloc} <secret>\n"
-			"  Set secret for specified domain or alloc module"
-		},
-		{
-			"aclmapset",
-			net_idmap_aclmapset,
-			NET_TRANSPORT_LOCAL,
-			"Set acl map",
-			"net idmap aclmapset\n"
-			"  Set acl map"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"dump", net_idmap_dump},
+		{"restore", net_idmap_restore},
+		{"setmap", net_idmap_set },
+		{"delete", net_idmap_delete},
+		{"secret", net_idmap_secret},
+		{"aclmapset", net_idmap_aclmapset},
+		{"help", net_help_idmap},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net idmap", func);
+	return net_run_function(argc, argv, func, net_help_idmap);
 }
 
 

Deleted: branches/samba/upstream/source/utils/net_join.c
===================================================================
--- branches/samba/upstream/source/utils/net_join.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_join.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,54 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net join commands
-   Copyright (C) 2002  Jim McDonough  (jmcd at us.ibm.com)
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_join_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("\nnet [<method>] join [misc. options]\n"
-		 "\tjoins this server to a domain\n");
-	d_printf("Valid methods: (auto-detected if not specified)\n");
-	d_printf("\tads\t\t\t\tActive Directory (LDAP/Kerberos)\n");
-	d_printf("\trpc\t\t\t\tDCE-RPC\n");
-	net_common_flags_usage(c, argc, argv);
-	return -1;
-}
-
-int net_join(struct net_context *c, int argc, const char **argv)
-{
-	if (argc < 1)
-		return net_join_usage(c, argc, argv);
-
-	if (StrCaseCmp(argv[0], "HELP") == 0) {
-		net_join_usage(c, argc, argv);
-		return 0;
-	}
-
-	if (net_ads_check_our_domain(c) == 0) {
-		if (net_ads_join(c, argc, argv) == 0)
-			return 0;
-		else
-			d_fprintf(stderr, "ADS join did not work, falling back to RPC...\n");
-	}
-	return net_rpc_join(c, argc, argv);
-}
-
-

Modified: branches/samba/upstream/source/utils/net_lookup.c
===================================================================
--- branches/samba/upstream/source/utils/net_lookup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_lookup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -19,7 +19,7 @@
 #include "includes.h"
 #include "utils/net.h"
 
-int net_lookup_usage(struct net_context *c, int argc, const char **argv)
+int net_lookup_usage(int argc, const char **argv)
 {
 	d_printf(
 "  net lookup [host] HOSTNAME[#<type>]\n\tgives IP for a hostname\n\n"
@@ -36,7 +36,7 @@
 }
 
 /* lookup a hostname giving an IP */
-static int net_lookup_host(struct net_context *c, int argc, const char **argv)
+static int net_lookup_host(int argc, const char **argv)
 {
 	struct sockaddr_storage ss;
 	int name_type = 0x20;
@@ -45,7 +45,7 @@
 	char *p;
 
 	if (argc == 0)
-		return net_lookup_usage(c, argc, argv);
+		return net_lookup_usage(argc, argv);
 
 	p = strchr_m(name,'#');
 	if (p) {
@@ -88,7 +88,7 @@
 }
 #endif
 
-static int net_lookup_ldap(struct net_context *c, int argc, const char **argv)
+static int net_lookup_ldap(int argc, const char **argv)
 {
 #ifdef HAVE_ADS
 	const char *domain;
@@ -104,7 +104,7 @@
 	if (argc > 0)
 		domain = argv[0];
 	else
-		domain = c->opt_target_workgroup;
+		domain = opt_target_workgroup;
 
 	sitename = sitename_fetch(domain);
 
@@ -171,7 +171,7 @@
 	return -1;
 }
 
-static int net_lookup_dc(struct net_context *c, int argc, const char **argv)
+static int net_lookup_dc(int argc, const char **argv)
 {
 	struct ip_service *ip_list;
 	struct sockaddr_storage ss;
@@ -185,7 +185,7 @@
 	if (sec_ads) {
 		domain = lp_realm();
 	} else {
-		domain = c->opt_target_workgroup;
+		domain = opt_target_workgroup;
 	}
 
 	if (argc > 0)
@@ -216,7 +216,7 @@
 	return 0;
 }
 
-static int net_lookup_pdc(struct net_context *c, int argc, const char **argv)
+static int net_lookup_pdc(int argc, const char **argv)
 {
 	struct sockaddr_storage ss;
 	char *pdc_str = NULL;
@@ -226,7 +226,7 @@
 	if (lp_security() == SEC_ADS) {
 		domain = lp_realm();
 	} else {
-		domain = c->opt_target_workgroup;
+		domain = opt_target_workgroup;
 	}
 
 	if (argc > 0)
@@ -244,10 +244,10 @@
 }
 
 
-static int net_lookup_master(struct net_context *c, int argc, const char **argv)
+static int net_lookup_master(int argc, const char **argv)
 {
 	struct sockaddr_storage master_ss;
-	const char *domain = c->opt_target_workgroup;
+	const char *domain=opt_target_workgroup;
 	char addr[INET6_ADDRSTRLEN];
 
 	if (argc > 0)
@@ -260,7 +260,7 @@
 	return 0;
 }
 
-static int net_lookup_kdc(struct net_context *c, int argc, const char **argv)
+static int net_lookup_kdc(int argc, const char **argv)
 {
 #ifdef HAVE_KRB5
 	krb5_error_code rc;
@@ -273,7 +273,7 @@
 	initialize_krb5_error_table();
 	rc = krb5_init_context(&ctx);
 	if (rc) {
-		DEBUG(1,("krb5_init_context failed (%s)\n",
+		DEBUG(1,("krb5_init_context failed (%s)\n", 
 			 error_message(rc)));
 		return -1;
 	}
@@ -311,7 +311,7 @@
 	return -1;
 }
 
-static int net_lookup_name(struct net_context *c, int argc, const char **argv)
+static int net_lookup_name(int argc, const char **argv)
 {
 	const char *dom, *name;
 	DOM_SID sid;
@@ -333,7 +333,7 @@
 	return 0;
 }
 
-static int net_lookup_sid(struct net_context *c, int argc, const char **argv)
+static int net_lookup_sid(int argc, const char **argv)
 {
 	const char *dom, *name;
 	DOM_SID sid;
@@ -360,7 +360,7 @@
 	return 0;
 }
 
-static int net_lookup_dsgetdcname(struct net_context *c, int argc, const char **argv)
+static int net_lookup_dsgetdcname(int argc, const char **argv)
 {
 	NTSTATUS status;
 	const char *domain_name = NULL;
@@ -412,7 +412,7 @@
 
 
 /* lookup hosts or IP addresses using internal samba lookup fns */
-int net_lookup(struct net_context *c, int argc, const char **argv)
+int net_lookup(int argc, const char **argv)
 {
 	int i;
 
@@ -431,17 +431,17 @@
 
 	if (argc < 1) {
 		d_printf("\nUsage: \n");
-		return net_lookup_usage(c, argc, argv);
+		return net_lookup_usage(argc, argv);
 	}
 	for (i=0; table[i].funcname; i++) {
 		if (StrCaseCmp(argv[0], table[i].funcname) == 0)
-			return table[i].fn(c, argc-1, argv+1);
+			return table[i].fn(argc-1, argv+1);
 	}
 
-	/* Default to lookup a hostname so 'net lookup foo#1b' can be
+	/* Default to lookup a hostname so 'net lookup foo#1b' can be 
 	   used instead of 'net lookup host foo#1b'.  The host syntax
-	   is a bit confusing as non #00 names can't really be
+	   is a bit confusing as non #00 names can't really be 
 	   considered hosts as such. */
 
-	return net_lookup_host(c, argc, argv);
+	return net_lookup_host(argc, argv);
 }

Deleted: branches/samba/upstream/source/utils/net_proto.h
===================================================================
--- branches/samba/upstream/source/utils/net_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,491 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _NET_PROTO_H_
-#define _NET_PROTO_H_
-
-
-/* The following definitions come from auth/token_util.c  */
-
-bool nt_token_check_sid ( const DOM_SID *sid, const NT_USER_TOKEN *token );
-bool nt_token_check_domain_rid( NT_USER_TOKEN *token, uint32 rid );
-NT_USER_TOKEN *get_root_nt_token( void );
-NTSTATUS add_aliases(const DOM_SID *domain_sid,
-		     struct nt_user_token *token);
-struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx,
-					    const DOM_SID *user_sid,
-					    bool is_guest,
-					    int num_groupsids,
-					    const DOM_SID *groupsids);
-void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token);
-void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid,
-			   int n_groups, gid_t *groups);
-
-/* The following definitions come from utils/net.c  */
-
-uint32 get_sec_channel_type(const char *param);
-
-/* The following definitions come from utils/net_ads.c  */
-
-ADS_STATUS ads_startup(struct net_context *c, bool only_own_domain, ADS_STRUCT **ads);
-ADS_STATUS ads_startup_nobind(struct net_context *c, bool only_own_domain, ADS_STRUCT **ads);
-int net_ads_check_our_domain(struct net_context *c);
-int net_ads_check(struct net_context *c);
-int net_ads_user(struct net_context *c, int argc, const char **argv);
-int net_ads_group(struct net_context *c, int argc, const char **argv);
-int net_ads_testjoin(struct net_context *c, int argc, const char **argv);
-int net_ads_join(struct net_context *c, int argc, const char **argv);
-int net_ads_printer_usage(struct net_context *c, int argc, const char **argv);
-int net_ads_changetrustpw(struct net_context *c, int argc, const char **argv);
-int net_ads_keytab(struct net_context *c, int argc, const char **argv);
-int net_ads_kerberos(struct net_context *c, int argc, const char **argv);
-int net_ads(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_ads_gpo.c  */
-
-int net_ads_gpo(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_cache.c  */
-
-int net_cache(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_conf.c  */
-
-int net_conf(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_dns.c  */
-
-int get_my_ip_address( struct sockaddr_storage **pp_ss );
-
-/* The following definitions come from utils/net_dom.c  */
-
-int net_dom_usage(struct net_context *c, int argc, const char **argv);
-int net_dom(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_file.c  */
-
-int net_file_usage(struct net_context *c, int argc, const char **argv);
-int net_file(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_group.c  */
-
-int net_group_usage(struct net_context *c, int argc, const char **argv);
-int net_group(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_groupmap.c  */
-
-int net_groupmap_usage(struct net_context *c, int argc, const char **argv);
-int net_groupmap(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_help.c  */
-
-int net_help(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_idmap.c  */
-
-bool idmap_store_secret(const char *backend, bool alloc,
-			const char *domain, const char *identity,
-			const char *secret);
-int net_help_idmap(struct net_context *c, int argc, const char **argv);
-int net_idmap(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_join.c  */
-
-int net_join_usage(struct net_context *c, int argc, const char **argv);
-int net_join(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_lookup.c  */
-
-int net_lookup_usage(struct net_context *c, int argc, const char **argv);
-int net_lookup(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rap.c  */
-
-int net_rap_file_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_file(struct net_context *c, int argc, const char **argv);
-int net_rap_share_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_share(struct net_context *c, int argc, const char **argv);
-int net_rap_session_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_session(struct net_context *c, int argc, const char **argv);
-int net_rap_server_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_server(struct net_context *c, int argc, const char **argv);
-int net_rap_domain_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_domain(struct net_context *c, int argc, const char **argv);
-int net_rap_printq_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_printq(struct net_context *c, int argc, const char **argv);
-int net_rap_user(struct net_context *c, int argc, const char **argv);
-int net_rap_group_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_group(struct net_context *c, int argc, const char **argv);
-int net_rap_groupmember_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_groupmember(struct net_context *c, int argc, const char **argv);
-int net_rap_validate_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_validate(struct net_context *c, int argc, const char **argv);
-int net_rap_service_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_service(struct net_context *c, int argc, const char **argv);
-int net_rap_password_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_password(struct net_context *c, int argc, const char **argv);
-int net_rap_admin_usage(struct net_context *c, int argc, const char **argv);
-int net_rap_admin(struct net_context *c, int argc, const char **argv);
-int net_rap(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_registry.c  */
-
-int net_registry(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc.c  */
-
-NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx,
-				   DOM_SID **domain_sid,
-				   const char **domain_name);
-int run_rpc_command(struct net_context *c,
-			struct cli_state *cli_arg,
-			const struct ndr_syntax_id *interface,
-			int conn_flags,
-			rpc_command_fn fn,
-			int argc,
-			const char **argv);
-int net_rpc_changetrustpw(struct net_context *c, int argc, const char **argv);
-int net_rpc_join(struct net_context *c, int argc, const char **argv);
-NTSTATUS rpc_info_internals(struct net_context *c,
-			const DOM_SID *domain_sid,
-			const char *domain_name,
-			struct cli_state *cli,
-			struct rpc_pipe_client *pipe_hnd,
-			TALLOC_CTX *mem_ctx,
-			int argc,
-			const char **argv);
-int net_rpc_info(struct net_context *c, int argc, const char **argv);
-int net_rpc_getsid(struct net_context *c, int argc, const char **argv);
-int net_rpc_user(struct net_context *c, int argc, const char **argv);
-struct rpc_sh_cmd *net_rpc_user_edit_cmds(struct net_context *c,
-					  TALLOC_CTX *mem_ctx,
-					  struct rpc_sh_ctx *ctx);
-struct rpc_sh_cmd *net_rpc_user_cmds(struct net_context *c,
-				     TALLOC_CTX *mem_ctx,
-				     struct rpc_sh_ctx *ctx);
-int net_rpc_group(struct net_context *c, int argc, const char **argv);
-bool copy_top_level_perms(struct net_context *c,
-				struct copy_clistate *cp_clistate,
-				const char *sharename);
-int net_usersidlist(struct net_context *c, int argc, const char **argv);
-int net_usersidlist_usage(struct net_context *c, int argc, const char **argv);
-int net_rpc_share(struct net_context *c, int argc, const char **argv);
-struct rpc_sh_cmd *net_rpc_share_cmds(struct net_context *c, TALLOC_CTX *mem_ctx,
-				      struct rpc_sh_ctx *ctx);
-int net_rpc_file(struct net_context *c, int argc, const char **argv);
-NTSTATUS rpc_init_shutdown_internals(struct net_context *c,
-				     const DOM_SID *domain_sid,
-				     const char *domain_name,
-				     struct cli_state *cli,
-				     struct rpc_pipe_client *pipe_hnd,
-				     TALLOC_CTX *mem_ctx,
-				     int argc,
-				     const char **argv);
-NTSTATUS rpc_reg_shutdown_internals(struct net_context *c,
-				    const DOM_SID *domain_sid,
-				    const char *domain_name,
-				    struct cli_state *cli,
-				    struct rpc_pipe_client *pipe_hnd,
-				    TALLOC_CTX *mem_ctx,
-				    int argc,
-				    const char **argv);
-bool net_rpc_check(struct net_context *c, unsigned flags);
-int rpc_printer_migrate(struct net_context *c, int argc, const char **argv);
-int rpc_printer_usage(struct net_context *c, int argc, const char **argv);
-int net_rpc_printer(struct net_context *c, int argc, const char **argv);
-int net_rpc(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc_audit.c  */
-
-int net_rpc_audit(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc_join.c  */
-
-NTSTATUS net_rpc_join_ok(struct net_context *c, const char *domain,
-			 const char *server, struct sockaddr_storage *pss);
-int net_rpc_join_newstyle(struct net_context *c, int argc, const char **argv);
-int net_rpc_testjoin(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc_printer.c  */
-
-NTSTATUS net_copy_fileattr(struct net_context *c,
-		  TALLOC_CTX *mem_ctx,
-		  struct cli_state *cli_share_src,
-		  struct cli_state *cli_share_dst,
-		  const char *src_name, const char *dst_name,
-		  bool copy_acls, bool copy_attrs,
-		  bool copy_timestamps, bool is_file);
-NTSTATUS net_copy_file(struct net_context *c,
-		       TALLOC_CTX *mem_ctx,
-		       struct cli_state *cli_share_src,
-		       struct cli_state *cli_share_dst,
-		       const char *src_name, const char *dst_name,
-		       bool copy_acls, bool copy_attrs,
-		       bool copy_timestamps, bool is_file);
-NTSTATUS rpc_printer_list_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
-					struct cli_state *cli,
-					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
-					int argc,
-					const char **argv);
-NTSTATUS rpc_printer_driver_list_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_publish_publish_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_publish_unpublish_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_publish_update_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_publish_list_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_migrate_security_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_migrate_forms_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_migrate_drivers_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_migrate_printers_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-NTSTATUS rpc_printer_migrate_settings_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv);
-
-/* The following definitions come from utils/net_rpc_registry.c  */
-
-int net_rpc_registry(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc_rights.c  */
-
-int net_rpc_rights(struct net_context *c, int argc, const char **argv);
-struct rpc_sh_cmd *net_rpc_rights_cmds(struct net_context *c, TALLOC_CTX *mem_ctx,
-				       struct rpc_sh_ctx *ctx);
-
-/* The following definitions come from utils/net_rpc_samsync.c  */
-
-NTSTATUS rpc_samdump_internals(struct net_context *c,
-				const DOM_SID *domain_sid,
-				const char *domain_name,
-				struct cli_state *cli,
-				struct rpc_pipe_client *pipe_hnd,
-				TALLOC_CTX *mem_ctx,
-				int argc,
-				const char **argv);
-int rpc_vampire_usage(struct net_context *c, int argc, const char **argv);
-NTSTATUS rpc_vampire_internals(struct net_context *c,
-				const DOM_SID *domain_sid,
-				const char *domain_name,
-				struct cli_state *cli,
-				struct rpc_pipe_client *pipe_hnd,
-				TALLOC_CTX *mem_ctx,
-				int argc,
-				const char **argv);
-int rpc_vampire_ldif(struct net_context *c, int argc, const char **argv);
-NTSTATUS rpc_vampire_ldif_internals(struct net_context *c,
-				    const DOM_SID *domain_sid,
-				    const char *domain_name,
-				    struct cli_state *cli,
-				    struct rpc_pipe_client *pipe_hnd,
-				    TALLOC_CTX *mem_ctx,
-				    int argc,
-				    const char **argv);
-NTSTATUS rpc_vampire_keytab_internals(struct net_context *c,
-				      const DOM_SID *domain_sid,
-				      const char *domain_name,
-				      struct cli_state *cli,
-				      struct rpc_pipe_client *pipe_hnd,
-				      TALLOC_CTX *mem_ctx,
-				      int argc,
-				      const char **argv);
-int rpc_vampire_keytab(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc_service.c  */
-
-const char *svc_status_string( uint32 state );
-int net_rpc_service(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_rpc_sh_acct.c  */
-
-struct rpc_sh_cmd *net_rpc_acct_cmds(struct net_context *c, TALLOC_CTX *mem_ctx,
-				     struct rpc_sh_ctx *ctx);
-
-/* The following definitions come from utils/net_rpc_shell.c  */
-
-int net_rpc_shell(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_sam.c  */
-
-int net_sam(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_share.c  */
-
-int net_share_usage(struct net_context *c, int argc, const char **argv);
-int net_share(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_status.c  */
-
-int net_status_usage(struct net_context *c, int argc, const char **argv);
-int net_status(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_time.c  */
-
-int net_time_usage(struct net_context *c, int argc, const char **argv);
-int net_time(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_user.c  */
-
-int net_user_usage(struct net_context *c, int argc, const char **argv);
-int net_user(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_usershare.c  */
-
-int net_usershare_usage(struct net_context *c, int argc, const char **argv);
-int net_usershare_help(struct net_context *c, int argc, const char **argv);
-int net_usershare(struct net_context *c, int argc, const char **argv);
-
-/* The following definitions come from utils/net_util.c  */
-
-NTSTATUS net_rpc_lookup_name(struct net_context *c,
-			     TALLOC_CTX *mem_ctx, struct cli_state *cli,
-			     const char *name, const char **ret_domain,
-			     const char **ret_name, DOM_SID *ret_sid,
-			     enum lsa_SidType *ret_type);
-NTSTATUS connect_to_service(struct net_context *c,
-					struct cli_state **cli_ctx,
-					struct sockaddr_storage *server_ss,
-					const char *server_name,
-					const char *service_name,
-					const char *service_type);
-NTSTATUS connect_to_ipc(struct net_context *c,
-			struct cli_state **cli_ctx,
-			struct sockaddr_storage *server_ss,
-			const char *server_name);
-NTSTATUS connect_to_ipc_anonymous(struct net_context *c,
-				struct cli_state **cli_ctx,
-				struct sockaddr_storage *server_ss,
-				const char *server_name);
-NTSTATUS connect_to_ipc_krb5(struct net_context *c,
-			struct cli_state **cli_ctx,
-			struct sockaddr_storage *server_ss,
-			const char *server_name);
-NTSTATUS connect_dst_pipe(struct net_context *c, struct cli_state **cli_dst,
-			  struct rpc_pipe_client **pp_pipe_hnd,
-			  const struct ndr_syntax_id *interface);
-int net_use_krb_machine_account(struct net_context *c);
-int net_use_machine_account(struct net_context *c);
-bool net_find_server(struct net_context *c,
-			const char *domain,
-			unsigned flags,
-			struct sockaddr_storage *server_ss,
-			char **server_name);
-bool net_find_pdc(struct sockaddr_storage *server_ss,
-		fstring server_name,
-		const char *domain_name);
-NTSTATUS net_make_ipc_connection(struct net_context *c, unsigned flags,
-				 struct cli_state **pcli);
-NTSTATUS net_make_ipc_connection_ex(struct net_context *c ,const char *domain,
-				    const char *server,
-				    struct sockaddr_storage *pss,
-				    unsigned flags, struct cli_state **pcli);
-const char *net_prompt_pass(struct net_context *c, const char *user);
-int net_run_function(struct net_context *c, int argc, const char **argv,
-		      const char *whoami, struct functable *table);
-void net_display_usage_from_functable(struct functable *table);
-
-const char *net_share_type_str(int num_type);
-
-/* The following definitions come from utils/netlookup.c  */
-
-NTSTATUS net_lookup_name_from_sid(struct net_context *c,
-				TALLOC_CTX *ctx,
-				DOM_SID *psid,
-				const char **ppdomain,
-				const char **ppname);
-NTSTATUS net_lookup_sid_from_name(struct net_context *c, TALLOC_CTX *ctx,
-				  const char *full_name, DOM_SID *pret_sid);
-
-/* The following definitions come from utils/passwd_util.c  */
-
-char *stdin_new_passwd( void);
-char *get_pass( const char *prompt, bool stdin_get);
-
-#endif /*  _NET_PROTO_H_  */

Modified: branches/samba/upstream/source/utils/net_rap.c
===================================================================
--- branches/samba/upstream/source/utils/net_rap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,6 +1,6 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2001 Steve French  (sfrench at us.ibm.com)
    Copyright (C) 2001 Jim McDonough (jmcd at us.ibm.com)
    Copyright (C) 2001 Andrew Tridgell (tridge at samba.org)
@@ -13,19 +13,19 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "includes.h"
 #include "utils/net.h"
 
-/* The following messages were for error checking that is not properly
+/* The following messages were for error checking that is not properly 
    reported at the moment.  Which should be reinstated? */
 #define ERRMSG_TARGET_WG_NOT_VALID      "\nTarget workgroup option not valid "\
 					"except on net rap server command, ignored"
@@ -34,48 +34,56 @@
 #define ERRMSG_BOTH_SERVER_IPADDRESS    "\nTarget server and IP address both "\
   "specified. Do not set both at the same time.  The target IP address was used\n"
 
+const char *share_type[] = {
+  "Disk",
+  "Print",
+  "Dev",
+  "IPC"
+};
+
 static int errmsg_not_implemented(void)
 {
 	d_printf("\nNot implemented\n");
 	return 0;
 }
 
-int net_rap_file_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_file_usage(int argc, const char **argv)
 {
-	return net_file_usage(c, argc, argv);
+	return net_help_file(argc, argv);
 }
 
 /***************************************************************************
   list info on an open file
 ***************************************************************************/
-static void file_fn(const char * pPath, const char * pUser, uint16 perms,
+static void file_fn(const char * pPath, const char * pUser, uint16 perms, 
 		    uint16 locks, uint32 id)
 {
 	d_printf("%-7.1d %-20.20s 0x%-4.2x %-6.1d %s\n",
 		 id, pUser, perms, locks, pPath);
 }
 
-static void one_file_fn(const char *pPath, const char *pUser, uint16 perms,
+static void one_file_fn(const char *pPath, const char *pUser, uint16 perms, 
 			uint16 locks, uint32 id)
 {
-	d_printf("File ID          %d\n"
-		 "User name        %s\n"
-		 "Locks            0x%-4.2x\n"
-		 "Path             %s\n"
+	d_printf("File ID          %d\n"\
+		 "User name        %s\n"\
+		 "Locks            0x%-4.2x\n"\
+		 "Path             %s\n"\
 		 "Permissions      0x%x\n",
 		 id, pUser, locks, pPath, perms);
 }
 
 
-static int rap_file_close(struct net_context *c, int argc, const char **argv)
+static int rap_file_close(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc == 0 || c->display_usage) {
-		return net_rap_file_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\nMissing fileid of file to close\n\n");
+		return net_rap_file_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetFileClose(cli, atoi(argv[0]));
@@ -83,14 +91,14 @@
 	return ret;
 }
 
-static int rap_file_info(struct net_context *c, int argc, const char **argv)
+static int rap_file_info(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc == 0 || c->display_usage)
-		return net_rap_file_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (argc == 0)
+		return net_rap_file_usage(argc, argv);
+	
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetFileGetInfo(cli, atoi(argv[0]), one_file_fn);
@@ -98,15 +106,15 @@
 	return ret;
 }
 
-static int rap_file_user(struct net_context *c, int argc, const char **argv)
+static int rap_file_user(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
 
-	if (argc == 0 || c->display_usage)
-		return net_rap_file_usage(c, argc, argv);
+	if (argc == 0)
+		return net_rap_file_usage(argc, argv);
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
 		return -1;
 
 	/* list open files */
@@ -123,49 +131,20 @@
 	return ret;
 }
 
-int net_rap_file(struct net_context *c, int argc, const char **argv)
+int net_rap_file(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"close",
-			rap_file_close,
-			NET_TRANSPORT_RAP,
-			"Close specified file on server",
-			"net rap file close\n"
-			"    Close specified file on server"
-		},
-		{
-			"user",
-			rap_file_user,
-			NET_TRANSPORT_RAP,
-			"List all files opened by username",
-			"net rap file user\n"
-			"    List all files opened by username"
-		},
-		{
-			"info",
-			rap_file_info,
-			NET_TRANSPORT_RAP,
-			"Display info about an opened file",
-			"net rap file info\n"
-			"    Display info about an opened file"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"CLOSE", rap_file_close},
+		{"USER", rap_file_user},
+		{"INFO", rap_file_info},
+		{NULL, NULL}
 	};
-
+	
 	if (argc == 0) {
 		struct cli_state *cli;
 		int ret;
-
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap file\n"
-				 "    List all open files on rempte server\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                         return -1;
 
 		/* list open files */
@@ -181,38 +160,39 @@
 		cli_shutdown(cli);
 		return ret;
 	}
-
-	return net_run_function(c, argc, argv, "net rap file", func);
+	
+	return net_run_function(argc, argv, func, net_rap_file_usage);
 }
-
-int net_rap_share_usage(struct net_context *c, int argc, const char **argv)
+		       
+int net_rap_share_usage(int argc, const char **argv)
 {
-	return net_share_usage(c, argc, argv);
+	return net_help_share(argc, argv);
 }
 
-static void long_share_fn(const char *share_name, uint32 type,
+static void long_share_fn(const char *share_name, uint32 type, 
 			  const char *comment, void *state)
 {
 	d_printf("%-12s %-8.8s %-50s\n",
-		 share_name, net_share_type_str(type), comment);
+		 share_name, share_type[type], comment);
 }
 
-static void share_fn(const char *share_name, uint32 type,
+static void share_fn(const char *share_name, uint32 type, 
 		     const char *comment, void *state)
 {
 	d_printf("%s\n", share_name);
 }
 
-static int rap_share_delete(struct net_context *c, int argc, const char **argv)
+static int rap_share_delete(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-
-	if (argc == 0 || c->display_usage) {
-		return net_rap_share_usage(c, argc, argv);
+	
+	if (argc == 0) {
+		d_printf("\n\nShare name not specified\n");
+		return net_rap_share_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetShareDelete(cli, argv[0]);
@@ -220,20 +200,21 @@
 	return ret;
 }
 
-static int rap_share_add(struct net_context *c, int argc, const char **argv)
+static int rap_share_add(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-
+	
 	RAP_SHARE_INFO_2 sinfo;
 	char *p;
 	char *sharename;
 
-	if (argc == 0 || c->display_usage) {
-		return net_rap_share_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\n\nShare name not specified\n");
+		return net_rap_share_usage(argc, argv);
 	}
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+			
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	sharename = SMB_STRDUP(argv[0]);
@@ -241,20 +222,20 @@
 	if (p == NULL) {
 		d_printf("Server path not specified\n");
 		SAFE_FREE(sharename);
-		return net_rap_share_usage(c, argc, argv);
+		return net_rap_share_usage(argc, argv);
 	}
 	*p = 0;
 	strlcpy(sinfo.share_name, sharename, sizeof(sinfo.share_name));
 	sinfo.reserved1 = '\0';
 	sinfo.share_type = 0;
-	sinfo.comment = smb_xstrdup(c->opt_comment);
+	sinfo.comment = smb_xstrdup(opt_comment);
 	sinfo.perms = 0;
-	sinfo.maximum_users = c->opt_maxusers;
+	sinfo.maximum_users = opt_maxusers;
 	sinfo.active_users = 0;
 	sinfo.path = p+1;
 	memset(sinfo.password, '\0', sizeof(sinfo.password));
 	sinfo.reserved2 = '\0';
-
+	
 	ret = cli_NetShareAdd(cli, &sinfo);
 	cli_shutdown(cli);
 	SAFE_FREE(sharename);
@@ -262,56 +243,26 @@
 }
 
 
-int net_rap_share(struct net_context *c, int argc, const char **argv)
+int net_rap_share(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"delete",
-			rap_share_delete,
-			NET_TRANSPORT_RAP,
-			"Delete a share from server",
-			"net rap share delete\n"
-			"    Delete a share from server"
-		},
-		{
-			"close",
-			rap_share_delete,
-			NET_TRANSPORT_RAP,
-			"Delete a share from server",
-			"net rap share close\n"
-			"    Delete a share from server\n"
-			"    Alias for net rap share delete"
-		},
-		{
-			"add",
-			rap_share_add,
-			NET_TRANSPORT_RAP,
-			"Add a share to server",
-			"net rap share add\n"
-			"    Add a share to server"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"DELETE", rap_share_delete},
+		{"CLOSE", rap_share_delete},
+		{"ADD", rap_share_add},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
 		struct cli_state *cli;
 		int ret;
-
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap share\n"
-				 "    List all shares on remote server\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
 			return -1;
-
-		if (c->opt_long_list_entries) {
+		
+		if (opt_long_list_entries) {
 			d_printf(
-	"\nEnumerating shared resources (exports) on remote server:\n\n"
-	"\nShare name   Type     Description\n"
+	"\nEnumerating shared resources (exports) on remote server:\n\n"\
+	"\nShare name   Type     Description\n"\
 	"----------   ----     -----------\n");
 			ret = cli_RNetShareEnum(cli, long_share_fn, NULL);
 		} else {
@@ -321,27 +272,28 @@
 		return ret;
 	}
 
-	return net_run_function(c, argc, argv, "net rap share", func);
+	return net_run_function(argc, argv, func, net_rap_share_usage);
 }
-
-int net_rap_session_usage(struct net_context *c, int argc, const char **argv)
+		    
+		
+int net_rap_session_usage(int argc, const char **argv)
 {
 	d_printf(
-	 "\nnet rap session [misc. options] [targets]"
+	 "\nnet rap session [misc. options] [targets]"\
 	 "\n\tenumerates all active SMB/CIFS sessions on target server\n");
 	d_printf(
-	 "\nnet rap session DELETE <client_name> [misc. options] [targets] \n"
-	 "\tor"
-	 "\nnet rap session CLOSE <client_name> [misc. options] [targets]"
+	 "\nnet rap session DELETE <client_name> [misc. options] [targets] \n"\
+	 "\tor"\
+	 "\nnet rap session CLOSE <client_name> [misc. options] [targets]"\
 	 "\n\tDeletes (closes) a session from specified client to server\n");
 	d_printf(
-	"\nnet rap session INFO <client_name>"
+	"\nnet rap session INFO <client_name>"\
 	"\n\tEnumerates all open files in specified session\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
-
+    
 static void list_sessions_func(char *wsname, char *username, uint16 conns,
 			uint16 opens, uint16 users, uint32 sess_time,
 			uint32 idle_time, uint32 user_flags, char *clitype)
@@ -349,14 +301,14 @@
 	int hrs = idle_time / 3600;
 	int min = (idle_time / 60) % 60;
 	int sec = idle_time % 60;
-
+	
 	d_printf("\\\\%-18.18s %-20.20s %-18.18s %5d %2.2d:%2.2d:%2.2d\n",
 		 wsname, username, clitype, opens, hrs, min, sec);
 }
 
-static void display_session_func(const char *wsname, const char *username,
-				 uint16 conns, uint16 opens, uint16 users,
-				 uint32 sess_time, uint32 idle_time,
+static void display_session_func(const char *wsname, const char *username, 
+				 uint16 conns, uint16 opens, uint16 users, 
+				 uint32 sess_time, uint32 idle_time, 
 				 uint32 user_flags, const char *clitype)
 {
 	int ihrs = idle_time / 3600;
@@ -365,13 +317,13 @@
 	int shrs = sess_time / 3600;
 	int smin = (sess_time / 60) % 60;
 	int ssec = sess_time % 60;
-	d_printf("User name       %-20.20s\n"
-		 "Computer        %-20.20s\n"
-		 "Guest logon     %-20.20s\n"
-		 "Client Type     %-40.40s\n"
-		 "Sess time       %2.2d:%2.2d:%2.2d\n"
-		 "Idle time       %2.2d:%2.2d:%2.2d\n",
-		 username, wsname,
+	d_printf("User name       %-20.20s\n"\
+		 "Computer        %-20.20s\n"\
+		 "Guest logon     %-20.20s\n"\
+		 "Client Type     %-40.40s\n"\
+		 "Sess time       %2.2d:%2.2d:%2.2d\n"\
+		 "Idle time       %2.2d:%2.2d:%2.2d\n", 
+		 username, wsname, 
 		 (user_flags&0x0)?"yes":"no", clitype,
 		 shrs, smin, ssec, ihrs, imin, isec);
 }
@@ -381,21 +333,21 @@
 			       const char *username, const char *netname)
 {
 	d_printf("%-14.14s %-8.8s %5d\n",
-		 netname, net_share_type_str(conn_type), opens);
+		 netname, share_type[conn_type], opens);
 }
 
-static int rap_session_info(struct net_context *c, int argc, const char **argv)
+static int rap_session_info(int argc, const char **argv)
 {
 	const char *sessname;
 	struct cli_state *cli;
 	int ret;
-
-	if (argc == 0 || c->display_usage)
-                return net_rap_session_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
+	if (argc == 0) 
+                return net_rap_session_usage(argc, argv);
+
 	sessname = argv[0];
 
 	ret = cli_NetSessionGetInfo(cli, sessname, display_session_func);
@@ -404,78 +356,48 @@
                 return ret;
 	}
 
-	d_printf("Share name     Type     # Opens\n-------------------------"
+	d_printf("Share name     Type     # Opens\n-------------------------"\
 		 "-----------------------------------------------------\n");
 	ret = cli_NetConnectionEnum(cli, sessname, display_conns_func);
 	cli_shutdown(cli);
 	return ret;
 }
 
-static int rap_session_delete(struct net_context *c, int argc, const char **argv)
+static int rap_session_delete(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-
-	if (argc == 0 || c->display_usage)
-                return net_rap_session_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
+	if (argc == 0) 
+                return net_rap_session_usage(argc, argv);
+
 	ret = cli_NetSessionDel(cli, argv[0]);
 	cli_shutdown(cli);
 	return ret;
 }
 
-int net_rap_session(struct net_context *c, int argc, const char **argv)
+int net_rap_session(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"info",
-			rap_session_info,
-			NET_TRANSPORT_RAP,
-			"Display information about session",
-			"net rap session info\n"
-			"    Display information about session"
-		},
-		{
-			"delete",
-			rap_session_delete,
-			NET_TRANSPORT_RAP,
-			"Close specified session",
-			"net rap session delete\n"
-			"    Close specified session\n"
-			"    Alias for net rap session close"
-		},
-		{
-			"close",
-			rap_session_delete,
-			NET_TRANSPORT_RAP,
-			"Close specified session",
-			"net rap session close\n"
-			"    Close specified session"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"INFO", rap_session_info},
+		{"DELETE", rap_session_delete},
+		{"CLOSE", rap_session_delete},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
 		struct cli_state *cli;
 		int ret;
-
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap session\n"
-				 "    List all open sessions on remote server\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
 			return -1;
 
-		d_printf("Computer             User name            "
-			 "Client Type        Opens Idle time\n"
-			 "------------------------------------------"
+		d_printf("Computer             User name            "\
+			 "Client Type        Opens Idle time\n"\
+			 "------------------------------------------"\
 			 "------------------------------------\n");
 		ret = cli_NetSessionEnum(cli, list_sessions_func);
 
@@ -483,9 +405,9 @@
 		return ret;
 	}
 
-	return net_run_function(c, argc, argv, "net rap session", func);
+	return net_run_function(argc, argv, func, net_rap_session_usage);
 }
-
+	
 /****************************************************************************
 list a server name
 ****************************************************************************/
@@ -495,19 +417,24 @@
 	d_printf("\t%-16.16s     %s\n", name, comment);
 }
 
-static int net_rap_server_name(struct net_context *c, int argc, const char *argv[])
+
+int net_rap_server_usage(int argc, const char **argv)
 {
+	d_printf("net rap server [misc. options] [target]\n\t"\
+		 "lists the servers in the specified domain or workgroup.\n");
+	d_printf("\n\tIf domain is not specified, it uses the current"\
+		 " domain or workgroup as\n\tthe default.\n");
+
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
+static int net_rap_server_name(int argc, const char *argv[])
+{
 	struct cli_state *cli;
 	char *name;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rap server name\n"
-			 "    Get the name of the server\n");
-		return 0;
-	}
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	if (!cli_get_server_name(NULL, cli, &name)) {
@@ -522,113 +449,86 @@
 	cli_shutdown(cli);
 	return 0;
 }
-
-static int net_rap_server_domain(struct net_context *c, int argc,
-				 const char **argv)
+		    
+int net_rap_server(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rap server domain\n"
-			 "    Enumerate servers in this domain/workgroup\n");
-		return 0;
+	if (argc > 0) {
+		if (strequal(argv[0], "name")) {
+			return net_rap_server_name(argc, argv);
+		}
+		/* smb4k uses 'net [rap|rpc] server domain' to query servers in a domain */
+		/* Fall through for 'domain', any other forms will cause to show usage message */
+		if (!strequal(argv[0], "domain")) {
+			return net_rap_server_usage(argc-1, argv+1);
+		}
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
-	d_printf("\nEnumerating servers in this domain or workgroup: \n\n"
-		 "\tServer name          Server description\n"
+	d_printf("\nEnumerating servers in this domain or workgroup: \n\n"\
+		 "\tServer name          Server description\n"\
 		 "\t-------------        ----------------------------\n");
 
-	ret = cli_NetServerEnum(cli, cli->server_domain, SV_TYPE_ALL,
-				display_server_func,NULL);
+	ret = cli_NetServerEnum(cli, cli->server_domain, SV_TYPE_ALL, 
+				display_server_func,NULL); 
 	cli_shutdown(cli);
-	return ret;
+	return ret;	
 }
-
-int net_rap_server(struct net_context *c, int argc, const char **argv)
+		      
+int net_rap_domain_usage(int argc, const char **argv)
 {
-	struct functable func[] = {
-		{
-			"name",
-			net_rap_server_name,
-			NET_TRANSPORT_RAP,
-			"Get the name of the server",
-			"net rap server name\n"
-			"    Get the name of the server"
-		},
-		{
-			"domain",
-			net_rap_server_domain,
-			NET_TRANSPORT_RAP,
-			"Get the servers in this domain/workgroup",
-			"net rap server domain\n"
-			"    Get the servers in this domain/workgroup"
-		},
-		{NULL, NULL, 0, NULL, NULL}
-	};
-
-	/* smb4k uses 'net [rap|rpc] server domain' to query servers in a domain */
-	/* Fall through for 'domain', any other forms will cause to show usage message */
-	return net_run_function(c, argc, argv, "net rap server", func);
-
-}
-
-int net_rap_domain_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("net rap domain [misc. options] [target]\n\tlists the"
+	d_printf("net rap domain [misc. options] [target]\n\tlists the"\
 		 " domains or workgroups visible on the current network\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
-int net_rap_domain(struct net_context *c, int argc, const char **argv)
+		  
+int net_rap_domain(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-
-	if (c->display_usage)
-		return net_rap_domain_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
-	d_printf("\nEnumerating domains:\n\n"
-		 "\tDomain name          Server name of Browse Master\n"
+	d_printf("\nEnumerating domains:\n\n"\
+		 "\tDomain name          Server name of Browse Master\n"\
 		 "\t-------------        ----------------------------\n");
 
 	ret = cli_NetServerEnum(cli, cli->server_domain, SV_TYPE_DOMAIN_ENUM,
-				display_server_func,NULL);
+				display_server_func,NULL);	
 	cli_shutdown(cli);
-	return ret;
+	return ret;	
 }
-
-int net_rap_printq_usage(struct net_context *c, int argc, const char **argv)
+		      
+int net_rap_printq_usage(int argc, const char **argv)
 {
 	d_printf(
-	 "net rap printq [misc. options] [targets]\n"
-	 "\tor\n"
-	 "net rap printq list [<queue_name>] [misc. options] [targets]\n"
-	 "\tlists the specified queue and jobs on the target server.\n"
+	 "net rap printq [misc. options] [targets]\n"\
+	 "\tor\n"\
+	 "net rap printq list [<queue_name>] [misc. options] [targets]\n"\
+	 "\tlists the specified queue and jobs on the target server.\n"\
 	 "\tIf the queue name is not specified, all queues are listed.\n\n");
 	d_printf(
-	 "net rap printq delete [<queue name>] [misc. options] [targets]\n"
-	 "\tdeletes the specified job number on the target server, or the\n"
+	 "net rap printq delete [<queue name>] [misc. options] [targets]\n"\
+	 "\tdeletes the specified job number on the target server, or the\n"\
 	 "\tprinter queue if no job number is specified\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 
 	return -1;
-}
+}	
 
-static void enum_queue(const char *queuename, uint16 pri, uint16 start,
-		       uint16 until, const char *sep, const char *pproc,
-		       const char *dest, const char *qparms,
-		       const char *qcomment, uint16 status, uint16 jobcount)
+static void enum_queue(const char *queuename, uint16 pri, uint16 start, 
+		       uint16 until, const char *sep, const char *pproc, 
+		       const char *dest, const char *qparms, 
+		       const char *qcomment, uint16 status, uint16 jobcount) 
 {
 	d_printf("%-17.17s Queue %5d jobs                      ",
 		 queuename, jobcount);
@@ -651,10 +551,10 @@
 	}
 }
 
-static void enum_jobs(uint16 jobid, const char *ownername,
+static void enum_jobs(uint16 jobid, const char *ownername, 
 		      const char *notifyname, const char *datatype,
-		      const char *jparms, uint16 pos, uint16 status,
-		      const char *jstatus, unsigned int submitted, unsigned int jobsize,
+		      const char *jparms, uint16 pos, uint16 status, 
+		      const char *jstatus, unsigned int submitted, unsigned int jobsize, 
 		      const char *comment)
 {
 	d_printf("     %-23.23s %5d %9d            ",
@@ -683,15 +583,15 @@
     "------------------------------------------------------------------"\
     "-------------\n"
 
-static int rap_printq_info(struct net_context *c, int argc, const char **argv)
+static int rap_printq_info(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
+	
+	if (argc == 0) 
+                return net_rap_printq_usage(argc, argv);
 
-	if (argc == 0 || c->display_usage)
-                return net_rap_printq_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	d_printf(PRINTQ_ENUM_DISPLAY, cli->desthost); /* list header */
@@ -700,15 +600,15 @@
 	return ret;
 }
 
-static int rap_printq_delete(struct net_context *c, int argc, const char **argv)
+static int rap_printq_delete(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
+	
+	if (argc == 0) 
+                return net_rap_printq_usage(argc, argv);
 
-	if (argc == 0 || c->display_usage)
-                return net_rap_printq_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_printjob_del(cli, atoi(argv[0]));
@@ -716,41 +616,19 @@
 	return ret;
 }
 
-int net_rap_printq(struct net_context *c, int argc, const char **argv)
+int net_rap_printq(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-
+	
 	struct functable func[] = {
-		{
-			"info",
-			rap_printq_info,
-			NET_TRANSPORT_RAP,
-			"Display info about print job",
-			"net rap printq info\n"
-			"    Display info about print job"
-		},
-		{
-			"delete",
-			rap_printq_delete,
-			NET_TRANSPORT_RAP,
-			"Delete print job(s)",
-			"net rap printq delete\n"
-			"    Delete print job(s)"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"INFO", rap_printq_info},
+		{"DELETE", rap_printq_delete},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap printq\n"
-				 "    List the print queue\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
 			return -1;
 
 		d_printf(PRINTQ_ENUM_DISPLAY, cli->desthost); /* list header */
@@ -759,21 +637,22 @@
 		return ret;
 	}
 
-	return net_run_function(c, argc, argv, "net rap printq", func);
+	return net_run_function(argc, argv, func, net_rap_printq_usage);
 }
 
-static int net_rap_user_usage(struct net_context *c, int argc, const char **argv)
+	
+static int net_rap_user_usage(int argc, const char **argv)
 {
-	return net_user_usage(c, argc, argv);
-}
-
+	return net_help_user(argc, argv);
+} 
+	
 static void user_fn(const char *user_name, void *state)
 {
 	d_printf("%-21.21s\n", user_name);
 }
 
 static void long_user_fn(const char *user_name, const char *comment,
-			 const char * home_dir, const char * logon_script,
+			 const char * home_dir, const char * logon_script, 
 			 void *state)
 {
 	d_printf("%-21.21s %s\n",
@@ -785,16 +664,17 @@
 	d_printf("%-21.21s\n", user_name);
 }
 
-static int rap_user_delete(struct net_context *c, int argc, const char **argv)
+static int rap_user_delete(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-
-	if (argc == 0 || c->display_usage) {
-                return net_rap_user_usage(c, argc, argv);
+	
+	if (argc == 0) {
+		d_printf("\n\nUser name not specified\n");
+                return net_rap_user_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetUserDelete(cli, argv[0]);
@@ -802,27 +682,28 @@
 	return ret;
 }
 
-static int rap_user_add(struct net_context *c, int argc, const char **argv)
+static int rap_user_add(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
 	RAP_USER_INFO_1 userinfo;
 
-	if (argc == 0 || c->display_usage) {
-                return net_rap_user_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\n\nUser name not specified\n");
+                return net_rap_user_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
-
+			
 	safe_strcpy(userinfo.user_name, argv[0], sizeof(userinfo.user_name)-1);
-	if (c->opt_flags == -1)
-                c->opt_flags = 0x21;
-
-	userinfo.userflags = c->opt_flags;
+	if (opt_flags == -1) 
+                opt_flags = 0x21; 
+			
+	userinfo.userflags = opt_flags;
 	userinfo.reserved1 = '\0';
-	userinfo.comment = smb_xstrdup(c->opt_comment);
-	userinfo.priv = 1;
+	userinfo.comment = smb_xstrdup(opt_comment);
+	userinfo.priv = 1; 
 	userinfo.home_dir = NULL;
 	userinfo.logon_script = NULL;
 
@@ -832,15 +713,16 @@
 	return ret;
 }
 
-static int rap_user_info(struct net_context *c, int argc, const char **argv)
+static int rap_user_info(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc == 0 || c->display_usage) {
-                return net_rap_user_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\n\nUser name not specified\n");
+                return net_rap_user_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetUserGetGroups(cli, argv[0], group_member_fn, NULL);
@@ -848,63 +730,33 @@
 	return ret;
 }
 
-int net_rap_user(struct net_context *c, int argc, const char **argv)
+int net_rap_user(int argc, const char **argv)
 {
 	int ret = -1;
 	struct functable func[] = {
-		{
-			"add",
-			rap_user_add,
-			NET_TRANSPORT_RAP,
-			"Add specified user",
-			"net rap user add\n"
-			"    Add specified user"
-		},
-		{
-			"info",
-			rap_user_info,
-			NET_TRANSPORT_RAP,
-			"List domain groups of specified user",
-			"net rap user info\n"
-			"    List domain groups of specified user"
-
-		},
-		{
-			"delete",
-			rap_user_delete,
-			NET_TRANSPORT_RAP,
-			"Remove specified user",
-			"net rap user delete\n"
-			"    Remove specified user"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", rap_user_add},
+		{"INFO", rap_user_info},
+		{"DELETE", rap_user_delete},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
 		struct cli_state *cli;
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap user\n"
-				 "    List all users\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                         goto done;
-		if (c->opt_long_list_entries) {
-			d_printf("\nUser name             Comment"
+		if (opt_long_list_entries) {
+			d_printf("\nUser name             Comment"\
 				 "\n-----------------------------\n");
 			ret = cli_RNetUserEnum(cli, long_user_fn, NULL);
 			cli_shutdown(cli);
 			goto done;
 		}
-		ret = cli_RNetUserEnum0(cli, user_fn, NULL);
+		ret = cli_RNetUserEnum0(cli, user_fn, NULL); 
 		cli_shutdown(cli);
 		goto done;
 	}
 
-	ret = net_run_function(c, argc, argv, "net rap user", func);
+	ret = net_run_function(argc, argv, func, net_rap_user_usage);
  done:
 	if (ret != 0) {
 		DEBUG(1, ("Net user returned: %d\n", ret));
@@ -913,9 +765,9 @@
 }
 
 
-int net_rap_group_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_group_usage(int argc, const char **argv)
 {
-	return net_group_usage(c, argc, argv);
+	return net_help_group(argc, argv);
 }
 
 static void long_group_fn(const char *group_name, const char *comment,
@@ -929,15 +781,16 @@
 	d_printf("%-21.21s\n", group_name);
 }
 
-static int rap_group_delete(struct net_context *c, int argc, const char **argv)
+static int rap_group_delete(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc == 0 || c->display_usage) {
-                return net_rap_group_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\n\nGroup name not specified\n");
+                return net_rap_group_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetGroupDelete(cli, argv[0]);
@@ -945,103 +798,83 @@
 	return ret;
 }
 
-static int rap_group_add(struct net_context *c, int argc, const char **argv)
+static int rap_group_add(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
 	RAP_GROUP_INFO_1 grinfo;
 
-	if (argc == 0 || c->display_usage) {
-                return net_rap_group_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\n\nGroup name not specified\n");
+                return net_rap_group_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
-
+			
 	/* BB check for length 21 or smaller explicitly ? BB */
 	safe_strcpy(grinfo.group_name, argv[0], sizeof(grinfo.group_name)-1);
 	grinfo.reserved1 = '\0';
-	grinfo.comment = smb_xstrdup(c->opt_comment);
-
+	grinfo.comment = smb_xstrdup(opt_comment);
+	
 	ret = cli_NetGroupAdd(cli, &grinfo);
 	cli_shutdown(cli);
 	return ret;
 }
 
-int net_rap_group(struct net_context *c, int argc, const char **argv)
+int net_rap_group(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			rap_group_add,
-			NET_TRANSPORT_RAP,
-			"Add specified group",
-			"net rap group add\n"
-			"    Add specified group"
-		},
-		{
-			"delete",
-			rap_group_delete,
-			NET_TRANSPORT_RAP,
-			"Delete specified group",
-			"net rap group delete\n"
-			"    Delete specified group"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", rap_group_add},
+		{"DELETE", rap_group_delete},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
 		struct cli_state *cli;
 		int ret;
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap group\n"
-				 "    List all groups\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                         return -1;
-		if (c->opt_long_list_entries) {
+		if (opt_long_list_entries) {
 			d_printf("Group name            Comment\n");
 			d_printf("-----------------------------\n");
 			ret = cli_RNetGroupEnum(cli, long_group_fn, NULL);
 			cli_shutdown(cli);
 			return ret;
 		}
-		ret = cli_RNetGroupEnum0(cli, group_fn, NULL);
+		ret = cli_RNetGroupEnum0(cli, group_fn, NULL); 
 		cli_shutdown(cli);
 		return ret;
 	}
 
-	return net_run_function(c, argc, argv, "net rap group", func);
+	return net_run_function(argc, argv, func, net_rap_group_usage);
 }
 
-int net_rap_groupmember_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_groupmember_usage(int argc, const char **argv)
 {
 	d_printf(
-	 "net rap groupmember LIST <group> [misc. options] [targets]"
-	 "\n\t Enumerate users in a group\n"
-	 "\nnet rap groupmember DELETE <group> <user> [misc. options] "
-	 "[targets]\n\t Delete sepcified user from specified group\n"
-	 "\nnet rap groupmember ADD <group> <user> [misc. options] [targets]"
+	 "net rap groupmember LIST <group> [misc. options] [targets]"\
+	 "\n\t Enumerate users in a group\n"\
+	 "\nnet rap groupmember DELETE <group> <user> [misc. options] "\
+	 "[targets]\n\t Delete sepcified user from specified group\n"\
+	 "\nnet rap groupmember ADD <group> <user> [misc. options] [targets]"\
 	 "\n\t Add specified user to specified group\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
 
-static int rap_groupmember_add(struct net_context *c, int argc, const char **argv)
+static int rap_groupmember_add(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc != 2 || c->display_usage) {
-                return net_rap_groupmember_usage(c, argc, argv);
+	if (argc != 2) {
+		d_printf("\n\nGroup or user name not specified\n");
+                return net_rap_groupmember_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetGroupAddUser(cli, argv[0], argv[1]);
@@ -1049,15 +882,16 @@
 	return ret;
 }
 
-static int rap_groupmember_delete(struct net_context *c, int argc, const char **argv)
+static int rap_groupmember_delete(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc != 2 || c->display_usage) {
-                return net_rap_groupmember_usage(c, argc, argv);
+	if (argc != 2) {
+		d_printf("\n\nGroup or user name not specified\n");
+                return net_rap_groupmember_usage(argc, argv);
 	}
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	ret = cli_NetGroupDelUser(cli, argv[0], argv[1]);
@@ -1065,90 +899,70 @@
 	return ret;
 }
 
-static int rap_groupmember_list(struct net_context *c, int argc, const char **argv)
+static int rap_groupmember_list(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
-	if (argc == 0 || c->display_usage) {
-                return net_rap_groupmember_usage(c, argc, argv);
+	if (argc == 0) {
+		d_printf("\n\nGroup name not specified\n");
+                return net_rap_groupmember_usage(argc, argv);
 	}
 
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
-	ret = cli_NetGroupGetUsers(cli, argv[0], group_member_fn, NULL );
+	ret = cli_NetGroupGetUsers(cli, argv[0], group_member_fn, NULL ); 
 	cli_shutdown(cli);
 	return ret;
 }
 
-int net_rap_groupmember(struct net_context *c, int argc, const char **argv)
+int net_rap_groupmember(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			rap_groupmember_add,
-			NET_TRANSPORT_RAP,
-			"Add specified user to group",
-			"net rap groupmember add\n"
-			"    Add specified user to group"
-		},
-		{
-			"list",
-			rap_groupmember_list,
-			NET_TRANSPORT_RAP,
-			"List users in group",
-			"net rap groupmember list\n"
-			"    List users in group"
-		},
-		{
-			"delete",
-			rap_groupmember_delete,
-			NET_TRANSPORT_RAP,
-			"Remove user from group",
-			"net rap groupmember delete\n"
-			"    Remove user from group"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", rap_groupmember_add},
+		{"LIST", rap_groupmember_list},
+		{"DELETE", rap_groupmember_delete},
+		{NULL, NULL}
 	};
-
-	return net_run_function(c, argc, argv, "net rap groupmember", func);
+	
+	return net_run_function(argc, argv, func, net_rap_groupmember_usage);
 }
 
-int net_rap_validate_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_validate_usage(int argc, const char **argv)
 {
-	d_printf("net rap validate <username> [password]\n"
-		 "\tValidate user and password to check whether they"
+	d_printf("net rap validate <username> [password]\n"\
+		 "\tValidate user and password to check whether they"\
 		 " can access target server or domain\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
-int net_rap_validate(struct net_context *c, int argc, const char **argv)
+int net_rap_validate(int argc, const char **argv)
 {
 	return errmsg_not_implemented();
 }
 
-int net_rap_service_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_service_usage(int argc, const char **argv)
 {
-	d_printf("net rap service [misc. options] [targets] \n"
+	d_printf("net rap service [misc. options] [targets] \n"\
 		 "\tlists all running service daemons on target server\n");
-	d_printf("\nnet rap service START <name> [service startup arguments]"
-		 " [misc. options] [targets]"
+	d_printf("\nnet rap service START <name> [service startup arguments]"\
+		 " [misc. options] [targets]"\
 		 "\n\tStart named service on remote server\n");
-	d_printf("\nnet rap service STOP <name> [misc. options] [targets]\n"
+	d_printf("\nnet rap service STOP <name> [misc. options] [targets]\n"\
 		 "\n\tStop named service on remote server\n");
-
-	net_common_flags_usage(c, argc, argv);
+    
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
-static int rap_service_start(struct net_context *c, int argc, const char **argv)
+static int rap_service_start(int argc, const char **argv)
 {
 	return errmsg_not_implemented();
 }
 
-static int rap_service_stop(struct net_context *c, int argc, const char **argv)
+static int rap_service_stop(int argc, const char **argv)
 {
 	return errmsg_not_implemented();
 }
@@ -1159,74 +973,52 @@
 	d_printf("%-21.21s\n", service_name);
 }
 
-int net_rap_service(struct net_context *c, int argc, const char **argv)
+int net_rap_service(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"start",
-			rap_service_start,
-			NET_TRANSPORT_RAP,
-			"Start service on remote server",
-			"net rap service start\n"
-			"    Start service on remote server"
-		},
-		{
-			"stop",
-			rap_service_stop,
-			NET_TRANSPORT_RAP,
-			"Stop named serve on remote server",
-			"net rap service stop\n"
-			"    Stop named serve on remote server"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"START", rap_service_start},
+		{"STOP", rap_service_stop},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
 		struct cli_state *cli;
 		int ret;
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rap service\n"
-				 "    List services on remote server\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+		if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
 			return -1;
 
-		if (c->opt_long_list_entries) {
+		if (opt_long_list_entries) {
 			d_printf("Service name          Comment\n");
 			d_printf("-----------------------------\n");
 			ret = cli_RNetServiceEnum(cli, long_group_fn, NULL);
 		}
-		ret = cli_RNetServiceEnum(cli, service_fn, NULL);
+		ret = cli_RNetServiceEnum(cli, service_fn, NULL); 
 		cli_shutdown(cli);
 		return ret;
 	}
 
-	return net_run_function(c, argc, argv, "net rap service", func);
+	return net_run_function(argc, argv, func, net_rap_service_usage);
 }
 
-int net_rap_password_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_password_usage(int argc, const char **argv)
 {
 	d_printf(
-	 "net rap password <user> <oldpwo> <newpw> [misc. options] [target]\n"
-	 "\tchanges the password for the specified user at target\n");
-
+	 "net rap password <user> <oldpwo> <newpw> [misc. options] [target]\n"\
+	 "\tchanges the password for the specified user at target\n"); 
+	
 	return -1;
 }
 
 
-int net_rap_password(struct net_context *c, int argc, const char **argv)
+int net_rap_password(int argc, const char **argv)
 {
 	struct cli_state *cli;
 	int ret;
+	
+	if (argc < 3) 
+                return net_rap_password_usage(argc, argv);
 
-	if (argc < 3 || c->display_usage)
-                return net_rap_password_usage(c, argc, argv);
-
-	if (!NT_STATUS_IS_OK(net_make_ipc_connection(c, 0, &cli)))
+	if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
                 return -1;
 
 	/* BB Add check for password lengths? */
@@ -1235,133 +1027,89 @@
 	return ret;
 }
 
-int net_rap_admin_usage(struct net_context *c, int argc, const char **argv)
+int net_rap_admin_usage(int argc, const char **argv)
 {
 	d_printf(
-   "net rap admin <remote command> [cmd args [env]] [misc. options] [targets]"
-   "\n\texecutes a remote command on an os/2 target server\n");
-
+   "net rap admin <remote command> [cmd args [env]] [misc. options] [targets]"\
+   "\n\texecutes a remote command on an os/2 target server\n"); 
+	
 	return -1;
 }
 
 
-int net_rap_admin(struct net_context *c, int argc, const char **argv)
+int net_rap_admin(int argc, const char **argv)
 {
 	return errmsg_not_implemented();
 }
 
+/* The help subsystem for the RAP subcommand */
+
+int net_rap_usage(int argc, const char **argv)
+{
+	d_printf("  net rap domain \tto list domains \n"\
+		 "  net rap file \t\tto list open files on a server \n"\
+		 "  net rap group \tto list user groups  \n"\
+		 "  net rap groupmember \tto list users in a group \n"\
+		 "  net rap password \tto change the password of a user\n"\
+		 "  net rap printq \tto list the print queues on a server\n"\
+		 "  net rap server \tto list servers in a domain\n"\
+		 "  net rap session \tto list clients with open sessions to a server\n"\
+		 "  net rap share \tto list shares exported by a server\n"\
+		 "  net rap user \t\tto list users\n"\
+		 "  net rap validate \tto check whether a user and the corresponding password are valid\n"\
+		 "  net rap help\n"\
+		 "\nType \"net help <option>\" to get more information on that option\n\n");
+
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
+/*
+  handle "net rap help *" subcommands
+*/
+int net_rap_help(int argc, const char **argv)
+{
+	struct functable func[] = {
+		{"FILE", net_rap_file_usage},
+		{"SHARE", net_rap_share_usage},
+		{"SESSION", net_rap_session_usage},
+		{"SERVER", net_rap_server_usage},
+		{"DOMAIN", net_rap_domain_usage},
+		{"PRINTQ", net_rap_printq_usage},
+		{"USER", net_rap_user_usage},
+		{"GROUP", net_rap_group_usage},
+		{"VALIDATE", net_rap_validate_usage},
+		{"GROUPMEMBER", net_rap_groupmember_usage},
+		{"ADMIN", net_rap_admin_usage},
+		{"SERVICE", net_rap_service_usage},
+		{"PASSWORD", net_rap_password_usage},
+		{NULL, NULL}};
+
+	return net_run_function(argc, argv, func, net_rap_usage);
+}
+
 /* Entry-point for all the RAP functions. */
 
-int net_rap(struct net_context *c, int argc, const char **argv)
+int net_rap(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"file",
-			net_rap_file,
-			NET_TRANSPORT_RAP,
-			"List open files",
-			"net rap file\n"
-			"    List open files"
-		},
-		{
-			"share",
-			net_rap_share,
-			NET_TRANSPORT_RAP,
-			"List shares exported by server",
-			"net rap share\n"
-			"    List shares exported by server"
-		},
-		{
-			"session",
-			net_rap_session,
-			NET_TRANSPORT_RAP,
-			"List open sessions",
-			"net rap session\n"
-			"    List open sessions"
-		},
-		{
-			"server",
-			net_rap_server,
-			NET_TRANSPORT_RAP,
-			"List servers in workgroup",
-			"net rap server\n"
-			"    List servers in domain/workgroup"
-		},
-		{
-			"domain",
-			net_rap_domain,
-			NET_TRANSPORT_RAP,
-			"List domains in network",
-			"net rap domain\n"
-			"    List domains in network"
-		},
-		{
-			"printq",
-			net_rap_printq,
-			NET_TRANSPORT_RAP,
-			"List printer queues on server",
-			"net rap printq\n"
-			"    List printer queues on server"
-		},
-		{
-			"user",
-			net_rap_user,
-			NET_TRANSPORT_RAP,
-			"List users",
-			"net rap user\n"
-			"    List users"
-		},
-		{
-			"group",
-			net_rap_group,
-			NET_TRANSPORT_RAP,
-			"List user groups",
-			"net rap group\n"
-			"    List user groups"
-		},
-		{
-			"validate",
-			net_rap_validate,
-			NET_TRANSPORT_RAP,
-			"Check username/password",
-			"net rap validate\n"
-			"    Check username/password"
-		},
-		{
-			"groupmember",
-			net_rap_groupmember,
-			NET_TRANSPORT_RAP,
-			"List/modify group memberships",
-			"net rap groupmember\n"
-			"    List/modify group memberships"
-		},
-		{
-			"admin",
-			net_rap_admin,
-			NET_TRANSPORT_RAP,
-			"Execute commands on remote OS/2",
-			"net rap admin\n"
-			"    Execute commands on remote OS/2"
-		},
-		{
-			"service",
-			net_rap_service,
-			NET_TRANSPORT_RAP,
-			"Start/stop remote service",
-			"net rap service\n"
-			"    Start/stop remote service"
-		},
-		{
-			"password",
-			net_rap_password,
-			NET_TRANSPORT_RAP,
-			"Change user password",
-			"net rap password\n"
-			"    Change user password"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"FILE", net_rap_file},
+		{"SHARE", net_rap_share},
+		{"SESSION", net_rap_session},
+		{"SERVER", net_rap_server},
+		{"DOMAIN", net_rap_domain},
+		{"PRINTQ", net_rap_printq},
+		{"USER", net_rap_user},
+		{"GROUP", net_rap_group},
+		{"VALIDATE", net_rap_validate},
+		{"GROUPMEMBER", net_rap_groupmember},
+		{"ADMIN", net_rap_admin},
+		{"SERVICE", net_rap_service},	
+		{"PASSWORD", net_rap_password},
+		{"HELP", net_rap_help},
+		{NULL, NULL}
 	};
-
-	return net_run_function(c, argc, argv, "net rap", func);
+	
+	return net_run_function(argc, argv, func, net_rap_usage);
 }
 

Modified: branches/samba/upstream/source/utils/net_registry.c
===================================================================
--- branches/samba/upstream/source/utils/net_registry.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_registry.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -115,8 +115,7 @@
  *
  */
 
-static int net_registry_enumerate(struct net_context *c, int argc,
-				  const char **argv)
+static int net_registry_enumerate(int argc, const char **argv)
 {
 	WERROR werr;
 	struct registry_key *key = NULL;
@@ -128,7 +127,7 @@
 	struct registry_value *valvalue = NULL;
 	int ret = -1;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_printf("Usage:    net registry enumerate <path>\n");
 		d_printf("Example:  net registry enumerate "
 			 "'HKLM\\Software\\Samba'\n");
@@ -169,8 +168,7 @@
 	return ret;
 }
 
-static int net_registry_createkey(struct net_context *c, int argc,
-				  const char **argv)
+static int net_registry_createkey(int argc, const char **argv)
 {
 	WERROR werr;
 	enum winreg_CreateAction action;
@@ -180,7 +178,7 @@
 	TALLOC_CTX *ctx = talloc_stackframe();
 	int ret = -1;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_printf("Usage:    net registry createkey <path>\n");
 		d_printf("Example:  net registry createkey "
 			 "'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n");
@@ -223,8 +221,7 @@
 	return ret;
 }
 
-static int net_registry_deletekey(struct net_context *c, int argc,
-				  const char **argv)
+static int net_registry_deletekey(int argc, const char **argv)
 {
 	WERROR werr;
 	char *subkeyname;
@@ -232,7 +229,7 @@
 	TALLOC_CTX *ctx = talloc_stackframe();
 	int ret = -1;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_printf("Usage:    net registry deletekey <path>\n");
 		d_printf("Example:  net registry deletekey "
 			 "'HKLM\\Software\\Samba\\smbconf.127.0.0.1'\n");
@@ -263,8 +260,7 @@
 	return ret;
 }
 
-static int net_registry_getvalue_internal(struct net_context *c, int argc,
-					  const char **argv, bool raw)
+static int net_registry_getvalue(int argc, const char **argv)
 {
 	WERROR werr;
 	int ret = -1;
@@ -272,7 +268,7 @@
 	struct registry_value *value = NULL;
 	TALLOC_CTX *ctx = talloc_stackframe();
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net rpc registry getvalue <key> "
 				  "<valuename>\n");
 		goto done;
@@ -291,7 +287,7 @@
 		goto done;
 	}
 
-	print_registry_value(value, raw);
+	print_registry_value(value);
 
 	ret = 0;
 
@@ -300,28 +296,15 @@
 	return ret;
 }
 
-static int net_registry_getvalue(struct net_context *c, int argc,
-				 const char **argv)
+static int net_registry_setvalue(int argc, const char **argv)
 {
-	return net_registry_getvalue_internal(c, argc, argv, false);
-}
-
-static int net_registry_getvalueraw(struct net_context *c, int argc,
-				    const char **argv)
-{
-	return net_registry_getvalue_internal(c, argc, argv, true);
-}
-
-static int net_registry_setvalue(struct net_context *c, int argc,
-				 const char **argv)
-{
 	WERROR werr;
 	struct registry_value value;
 	struct registry_key *key = NULL;
 	int ret = -1;
 	TALLOC_CTX *ctx = talloc_stackframe();
 
-	if (argc < 4 || c->display_usage) {
+	if (argc < 4) {
 		d_fprintf(stderr, "usage: net rpc registry setvalue <key> "
 			  "<valuename> <type> [<val>]+\n");
 		goto done;
@@ -364,15 +347,14 @@
 	return ret;
 }
 
-static int net_registry_deletevalue(struct net_context *c, int argc,
-				    const char **argv)
+static int net_registry_deletevalue(int argc, const char **argv)
 {
 	WERROR werr;
 	struct registry_key *key = NULL;
 	TALLOC_CTX *ctx = talloc_stackframe();
 	int ret = -1;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net rpc registry deletevalue <key> "
 			  "<valuename>\n");
 		goto done;
@@ -398,8 +380,7 @@
 	return ret;
 }
 
-static int net_registry_getsd(struct net_context *c, int argc,
-			      const char **argv)
+static int net_registry_getsd(int argc, const char **argv)
 {
 	WERROR werr;
 	int ret = -1;
@@ -416,7 +397,7 @@
 	 */
 	access_mask = REG_KEY_READ;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_printf("Usage:    net registry getsd <path>\n");
 		d_printf("Example:  net registry getsd "
 			 "'HKLM\\Software\\Samba'\n");
@@ -449,83 +430,54 @@
 	return ret;
 }
 
-int net_registry(struct net_context *c, int argc, const char **argv)
+int net_registry(int argc, const char **argv)
 {
 	int ret = -1;
 
-	struct functable func[] = {
+	struct functable2 func[] = {
 		{
 			"enumerate",
 			net_registry_enumerate,
-			NET_TRANSPORT_LOCAL,
-			"Enumerate registry keys and values",
-			"net registry enumerate\n"
-			"    Enumerate registry keys and values"
+			"Enumerate registry keys and values"
 		},
 		{
 			"createkey",
 			net_registry_createkey,
-			NET_TRANSPORT_LOCAL,
-			"Create a new registry key",
-			"net registry createkey\n"
-			"    Create a new registry key"
+			"Create a new registry key"
 		},
 		{
 			"deletekey",
 			net_registry_deletekey,
-			NET_TRANSPORT_LOCAL,
-			"Delete a registry key",
-			"net registry deletekey\n"
-			"    Delete a registry key"
+			"Delete a registry key"
 		},
 		{
 			"getvalue",
 			net_registry_getvalue,
-			NET_TRANSPORT_LOCAL,
 			"Print a registry value",
-			"net registry getvalue\n"
-			"    Print a registry value"
 		},
 		{
-			"getvalueraw",
-			net_registry_getvalueraw,
-			NET_TRANSPORT_LOCAL,
-			"Print a registry value (raw format)",
-			"net registry getvalueraw\n"
-			"    Print a registry value (raw format)"
-		},
-		{
 			"setvalue",
 			net_registry_setvalue,
-			NET_TRANSPORT_LOCAL,
-			"Set a new registry value",
-			"net registry setvalue\n"
-			"    Set a new registry value"
+			"Set a new registry value"
 		},
 		{
 			"deletevalue",
 			net_registry_deletevalue,
-			NET_TRANSPORT_LOCAL,
-			"Delete a registry value",
-			"net registry deletevalue\n"
-			"    Delete a registry value"
+			"Delete a registry value"
 		},
 		{
 			"getsd",
 			net_registry_getsd,
-			NET_TRANSPORT_LOCAL,
-			"Get security descriptor",
-			"net registry getsd\n"
-			"    Get security descriptor"
+			"Get security descriptor"
 		},
-	{ NULL, NULL, 0, NULL, NULL }
+	{ NULL, NULL, NULL }
 	};
 
 	if (!W_ERROR_IS_OK(registry_init_basic())) {
 		return -1;
 	}
 
-	ret = net_run_function(c, argc, argv, "net registry", func);
+	ret = net_run_function2(argc, argv, "net registry", func);
 
 	return ret;
 }

Modified: branches/samba/upstream/source/utils/net_registry_util.c
===================================================================
--- branches/samba/upstream/source/utils/net_registry_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_registry_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -32,55 +32,32 @@
 	d_printf("\n");
 }
 
-void print_registry_value(const struct registry_value *valvalue, bool raw)
+void print_registry_value(const struct registry_value *valvalue)
 {
-	if (!raw) {
-		d_printf("Type       = %s\n",
-			 reg_type_lookup(valvalue->type));
-	}
+	d_printf("Type       = %s\n",
+		 reg_type_lookup(valvalue->type));
 	switch(valvalue->type) {
 	case REG_DWORD:
-		if (!raw) {
-			d_printf("Value      = ");
-		}
-		d_printf("%d\n", valvalue->v.dword);
+		d_printf("Value      = %d\n", valvalue->v.dword);
 		break;
 	case REG_SZ:
 	case REG_EXPAND_SZ:
-		if (!raw) {
-			d_printf("Value      = \"");
-		}
-		d_printf("%s", valvalue->v.sz.str);
-		if (!raw) {
-			d_printf("\"");
-		}
-		d_printf("\n");
+		d_printf("Value      = \"%s\"\n", valvalue->v.sz.str);
 		break;
 	case REG_MULTI_SZ: {
 		uint32 j;
 		for (j = 0; j < valvalue->v.multi_sz.num_strings; j++) {
-			if (!raw) {
-				d_printf("Value[%3.3d] = \"", j);
-			}
-			d_printf("%s", valvalue->v.multi_sz.strings[j]);
-			if (!raw) {
-				d_printf("\"");
-			}
-			d_printf("\n");
+			d_printf("Value[%3.3d] = \"%s\"\n", j,
+				 valvalue->v.multi_sz.strings[j]);
 		}
 		break;
 	}
 	case REG_BINARY:
-		if (!raw) {
-			d_printf("Value      = ");
-		}
-		d_printf("%d bytes\n", (int)valvalue->v.binary.length);
+		d_printf("Value      = %d bytes\n",
+			 (int)valvalue->v.binary.length);
 		break;
 	default:
-		if (!raw) {
-			d_printf("Value      = ");
-		}
-		d_printf("<unprintable>\n");
+		d_printf("Value      = <unprintable>\n");
 		break;
 	}
 }
@@ -89,7 +66,7 @@
 				    const struct registry_value *valvalue)
 {
 	d_printf("Valuename  = %s\n", valname);
-	print_registry_value(valvalue, false);
+	print_registry_value(valvalue);
 	d_printf("\n");
 }
 

Modified: branches/samba/upstream/source/utils/net_registry_util.h
===================================================================
--- branches/samba/upstream/source/utils/net_registry_util.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_registry_util.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,7 +24,7 @@
 
 void print_registry_key(const char *keyname, NTTIME *modtime);
 
-void print_registry_value(const struct registry_value *valvalue, bool raw);
+void print_registry_value(const struct registry_value *valvalue);
 
 void print_registry_value_with_name(const char *valname,
 				    const struct registry_value *valvalue);

Modified: branches/samba/upstream/source/utils/net_rpc.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,6 +1,6 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2001 Andrew Bartlett (abartlet at samba.org)
    Copyright (C) 2002 Jim McDonough (jmcd at us.ibm.com)
    Copyright (C) 2004,2008 Guenther Deschner (gd at samba.org)
@@ -11,15 +11,15 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
+ 
 #include "includes.h"
 #include "utils/net.h"
 
@@ -32,8 +32,8 @@
  * @brief RPC based subcommands for the 'net' utility.
  *
  * This file should contain much of the functionality that used to
- * be found in rpcclient, execpt that the commands should change
- * less often, and the fucntionality should be sane (the user is not
+ * be found in rpcclient, execpt that the commands should change 
+ * less often, and the fucntionality should be sane (the user is not 
  * expected to know a rid/sid before they conduct an operation etc.)
  *
  * @todo Perhaps eventually these should be split out into a number
@@ -43,7 +43,7 @@
 
 /**
  * Many of the RPC functions need the domain sid.  This function gets
- *  it at the start of every run
+ *  it at the start of every run 
  *
  * @param cli A cli_state already connected to the remote machine
  *
@@ -59,14 +59,13 @@
 	NTSTATUS result = NT_STATUS_OK;
 	union lsa_PolicyInformation *info = NULL;
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &lsa_pipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	lsa_pipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
+	if (!lsa_pipe) {
 		d_fprintf(stderr, "Could not initialise lsa pipe\n");
 		return result;
 	}
-
-	result = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, false,
+	
+	result = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False, 
 				     SEC_RIGHTS_MAXIMUM_ALLOWED,
 				     &pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -89,7 +88,7 @@
 	*domain_sid = info->account_domain.sid;
 
 	rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
-	TALLOC_FREE(lsa_pipe);
+	cli_rpc_pipe_close(lsa_pipe);
 
 	return NT_STATUS_OK;
 }
@@ -98,7 +97,7 @@
  * Run a single RPC command, from start to finish.
  *
  * @param pipe_name the pipe to connect to (usually a PIPE_ constant)
- * @param conn_flag a NET_FLAG_ combination.  Passed to
+ * @param conn_flag a NET_FLAG_ combination.  Passed to 
  *                   net_make_ipc_connection.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
@@ -106,13 +105,12 @@
  * @return A shell status integer (0 for success).
  */
 
-int run_rpc_command(struct net_context *c,
-			struct cli_state *cli_arg,
-			const struct ndr_syntax_id *interface,
+int run_rpc_command(struct cli_state *cli_arg,
+			const int pipe_idx,
 			int conn_flags,
 			rpc_command_fn fn,
 			int argc,
-			const char **argv)
+			const char **argv) 
 {
 	struct cli_state *cli = NULL;
 	struct rpc_pipe_client *pipe_hnd = NULL;
@@ -123,7 +121,7 @@
 
 	/* make use of cli_state handed over as an argument, if possible */
 	if (!cli_arg) {
-		nt_status = net_make_ipc_connection(c, conn_flags, &cli);
+		nt_status = net_make_ipc_connection(conn_flags, &cli);
 		if (!NT_STATUS_IS_OK(nt_status)) {
 			DEBUG(1, ("failed to make ipc connection: %s\n",
 				  nt_errstr(nt_status)));
@@ -138,13 +136,13 @@
 	}
 
 	/* Create mem_ctx */
-
+	
 	if (!(mem_ctx = talloc_init("run_rpc_command"))) {
 		DEBUG(0, ("talloc_init() failed\n"));
 		cli_shutdown(cli);
 		return -1;
 	}
-
+	
 	nt_status = net_get_remote_domain_sid(cli, mem_ctx, &domain_sid,
 					      &domain_name);
 	if (!NT_STATUS_IS_OK(nt_status)) {
@@ -153,54 +151,41 @@
 	}
 
 	if (!(conn_flags & NET_FLAGS_NO_PIPE)) {
-		if (lp_client_schannel()
-		    && (ndr_syntax_id_equal(interface,
-					    &ndr_table_netlogon.syntax_id))) {
+		if (lp_client_schannel() && (pipe_idx == PI_NETLOGON)) {
 			/* Always try and create an schannel netlogon pipe. */
-			nt_status = cli_rpc_pipe_open_schannel(
-				cli, interface,
-				PIPE_AUTH_LEVEL_PRIVACY, domain_name,
-				&pipe_hnd);
-			if (!NT_STATUS_IS_OK(nt_status)) {
+			pipe_hnd = cli_rpc_pipe_open_schannel(cli, pipe_idx,
+							PIPE_AUTH_LEVEL_PRIVACY,
+							domain_name,
+							&nt_status);
+			if (!pipe_hnd) {
 				DEBUG(0, ("Could not initialise schannel netlogon pipe. Error was %s\n",
 					nt_errstr(nt_status) ));
 				cli_shutdown(cli);
 				return -1;
 			}
 		} else {
-			if (conn_flags & NET_FLAGS_SEAL) {
-				nt_status = cli_rpc_pipe_open_ntlmssp(
-					cli, interface,
-					PIPE_AUTH_LEVEL_PRIVACY,
-					lp_workgroup(), c->opt_user_name,
-					c->opt_password, &pipe_hnd);
-			} else {
-				nt_status = cli_rpc_pipe_open_noauth(
-					cli, interface,
-					&pipe_hnd);
-			}
-			if (!NT_STATUS_IS_OK(nt_status)) {
+			pipe_hnd = cli_rpc_pipe_open_noauth(cli, pipe_idx, &nt_status);
+			if (!pipe_hnd) {
 				DEBUG(0, ("Could not initialise pipe %s. Error was %s\n",
-					cli_get_pipe_name_from_iface(
-						debug_ctx(), cli, interface),
+					cli_get_pipe_name(pipe_idx),
 					nt_errstr(nt_status) ));
 				cli_shutdown(cli);
 				return -1;
 			}
 		}
 	}
-
-	nt_status = fn(c, domain_sid, domain_name, cli, pipe_hnd, mem_ctx, argc, argv);
-
+	
+	nt_status = fn(domain_sid, domain_name, cli, pipe_hnd, mem_ctx, argc, argv);
+	
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(1, ("rpc command function failed! (%s)\n", nt_errstr(nt_status)));
 	} else {
 		DEBUG(5, ("rpc command function succedded\n"));
 	}
-
+		
 	if (!(conn_flags & NET_FLAGS_NO_PIPE)) {
 		if (pipe_hnd) {
-			TALLOC_FREE(pipe_hnd);
+			cli_rpc_pipe_close(pipe_hnd);
 		}
 	}
 
@@ -208,18 +193,18 @@
 	if (!cli_arg) {
 		cli_shutdown(cli);
 	}
-
+	
 	talloc_destroy(mem_ctx);
 	return (!NT_STATUS_IS_OK(nt_status));
 }
 
-/**
+/** 
  * Force a change of the trust acccount password.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param domain_sid The domain sid acquired from the remote server.
+ * @param domain_sid The domain sid acquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
@@ -229,20 +214,19 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_changetrustpw_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_changetrustpw_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv)
 {
-
-	return trust_pw_find_change_and_store_it(pipe_hnd, mem_ctx, c->opt_target_workgroup);
+	
+	return trust_pw_find_change_and_store_it(pipe_hnd, mem_ctx, opt_target_workgroup);
 }
 
-/**
+/** 
  * Force a change of the trust acccount password.
  *
  * @param argc  Standard main() style argc.
@@ -252,30 +236,22 @@
  * @return A shell status integer (0 for success).
  **/
 
-int net_rpc_changetrustpw(struct net_context *c, int argc, const char **argv)
+int net_rpc_changetrustpw(int argc, const char **argv) 
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc changetrustpw\n"
-			 "    Change the machine trust password\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
-			       NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
+	return run_rpc_command(NULL, PI_NETLOGON, NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC, 
 			       rpc_changetrustpw_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Join a domain, the old way.
  *
- * This uses 'machinename' as the inital password, and changes it.
+ * This uses 'machinename' as the inital password, and changes it. 
  *
  * The password should be created with 'server manager' or equiv first.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -287,24 +263,22 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_oldjoin_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
-					struct cli_state *cli,
+static NTSTATUS rpc_oldjoin_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli, 
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv)
 {
-
+	
 	fstring trust_passwd;
 	unsigned char orig_trust_passwd_hash[16];
 	NTSTATUS result;
 	uint32 sec_channel_type;
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(result)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &result);
+	if (!pipe_hnd) {
 		DEBUG(0,("rpc_oldjoin_internals: netlogon pipe open to machine %s failed. "
 			"error was %s\n",
 			cli->desthost,
@@ -312,7 +286,7 @@
 		return result;
 	}
 
-	/*
+	/* 
 	   check what type of join - if the user want's to join as
 	   a BDC, the server must agree that we are a BDC.
 	*/
@@ -321,7 +295,7 @@
 	} else {
 		sec_channel_type = get_sec_channel_type(NULL);
 	}
-
+	
 	fstrcpy(trust_passwd, global_myname());
 	strlower_m(trust_passwd);
 
@@ -334,65 +308,56 @@
 
 	E_md4hash(trust_passwd, orig_trust_passwd_hash);
 
-	result = trust_pw_change_and_store_it(pipe_hnd, mem_ctx, c->opt_target_workgroup,
+	result = trust_pw_change_and_store_it(pipe_hnd, mem_ctx, opt_target_workgroup,
 					      orig_trust_passwd_hash,
 					      sec_channel_type);
 
 	if (NT_STATUS_IS_OK(result))
-		printf("Joined domain %s.\n", c->opt_target_workgroup);
+		printf("Joined domain %s.\n",opt_target_workgroup);
 
 
-	if (!secrets_store_domain_sid(c->opt_target_workgroup, domain_sid)) {
-		DEBUG(0, ("error storing domain sid for %s\n", c->opt_target_workgroup));
+	if (!secrets_store_domain_sid(opt_target_workgroup, domain_sid)) {
+		DEBUG(0, ("error storing domain sid for %s\n", opt_target_workgroup));
 		result = NT_STATUS_UNSUCCESSFUL;
 	}
 
 	return result;
 }
 
-/**
+/** 
  * Join a domain, the old way.
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return A shell status integer (0 for success)
  **/
 
-static int net_rpc_perform_oldjoin(struct net_context *c, int argc, const char **argv)
+static int net_rpc_perform_oldjoin(int argc, const char **argv)
 {
-	return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
-			       NET_FLAGS_NO_PIPE | NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
+	return run_rpc_command(NULL, PI_NETLOGON, 
+			       NET_FLAGS_NO_PIPE | NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC, 
 			       rpc_oldjoin_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Join a domain, the old way.  This function exists to allow
- * the message to be displayed when oldjoin was explicitly
+ * the message to be displayed when oldjoin was explicitly 
  * requested, but not when it was implied by "net rpc join".
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return A shell status integer (0 for success)
  **/
 
-static int net_rpc_oldjoin(struct net_context *c, int argc, const char **argv)
+static int net_rpc_oldjoin(int argc, const char **argv) 
 {
-	int rc = -1;
+	int rc = net_rpc_perform_oldjoin(argc, argv);
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc oldjoin\n"
-			 "    Join a domain the old way\n");
-		return 0;
-	}
-
-	rc = net_rpc_perform_oldjoin(c, argc, argv);
-
 	if (rc) {
 		d_fprintf(stderr, "Failed to join domain\n");
 	}
@@ -400,34 +365,41 @@
 	return rc;
 }
 
-/**
+/** 
+ * Basic usage function for 'net rpc join'.
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ **/
+
+static int rpc_join_usage(int argc, const char **argv) 
+{	
+	d_printf("net rpc join -U <username>[%%password] <type>[options]\n"\
+		 "\t to join a domain with admin username & password\n"\
+		 "\t\t password will be prompted if needed and none is specified\n"\
+		 "\t <type> can be (default MEMBER)\n"\
+		 "\t\t BDC - Join as a BDC\n"\
+		 "\t\t PDC - Join as a PDC\n"\
+		 "\t\t MEMBER - Join as a MEMBER server\n");
+
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
+/** 
  * 'net rpc join' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
- *              stripped
+ *              stripped.
  *
- * Main 'net_rpc_join()' (where the admin username/password is used) is
+ * Main 'net_rpc_join()' (where the admin username/password is used) is 
  * in net_rpc_join.c.
  * Try to just change the password, but if that doesn't work, use/prompt
  * for a username/password.
  **/
 
-int net_rpc_join(struct net_context *c, int argc, const char **argv)
+int net_rpc_join(int argc, const char **argv) 
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc join -U <username>[%%password] <type>\n"
-			 "  Join a domain\n"
-			 "    username\tName of the admin user"
-			 "    password\tPassword of the admin user, will "
-			 "prompt if not specified\n"
-			 "    type\tCan be one of the following:\n"
-			 "\t\tMEMBER\tJoin as member server (default)\n"
-			 "\t\tBDC\tJoin as BDC\n"
-			 "\t\tPDC\tJoin as PDC\n");
-		return 0;
-	}
-
 	if (lp_server_role() == ROLE_STANDALONE) {
 		d_printf("cannot join as standalone machine\n");
 		return -1;
@@ -440,19 +412,19 @@
 		return -1;
 	}
 
-	if ((net_rpc_perform_oldjoin(c, argc, argv) == 0))
+	if ((net_rpc_perform_oldjoin(argc, argv) == 0))
 		return 0;
-
-	return net_rpc_join_newstyle(c, argc, argv);
+	
+	return net_rpc_join_newstyle(argc, argv);
 }
 
-/**
+/** 
  * display info about a rpc domain
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param domain_sid The domain sid acquired from the remote server
+ * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
@@ -462,9 +434,8 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_info_internals(struct net_context *c,
-			const DOM_SID *domain_sid,
-			const char *domain_name,
+NTSTATUS rpc_info_internals(const DOM_SID *domain_sid,
+			const char *domain_name, 
 			struct cli_state *cli,
 			struct rpc_pipe_client *pipe_hnd,
 			TALLOC_CTX *mem_ctx,
@@ -480,7 +451,7 @@
 
 	/* Get sam policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -517,32 +488,25 @@
 	return result;
 }
 
-/**
+/** 
  * 'net rpc info' entrypoint.
- * @param argc  Standard main() style argc.
+ * @param argc  Standard main() style argc
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int net_rpc_info(struct net_context *c, int argc, const char **argv)
+int net_rpc_info(int argc, const char **argv) 
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc info\n"
-			 "  Display information about the domain\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id,
-			       NET_FLAGS_PDC, rpc_info_internals,
+	return run_rpc_command(NULL, PI_SAMR, NET_FLAGS_PDC, 
+			       rpc_info_internals,
 			       argc, argv);
 }
 
-/**
- * Fetch domain SID into the local secrets.tdb.
+/** 
+ * Fetch domain SID into the local secrets.tdb
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -554,9 +518,8 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_getsid_internals(struct net_context *c,
-			const DOM_SID *domain_sid,
-			const char *domain_name,
+static NTSTATUS rpc_getsid_internals(const DOM_SID *domain_sid,
+			const char *domain_name, 
 			struct cli_state *cli,
 			struct rpc_pipe_client *pipe_hnd,
 			TALLOC_CTX *mem_ctx,
@@ -577,24 +540,16 @@
 	return NT_STATUS_OK;
 }
 
-/**
+/** 
  * 'net rpc getsid' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int net_rpc_getsid(struct net_context *c, int argc, const char **argv)
+int net_rpc_getsid(int argc, const char **argv) 
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc getsid\n"
-			 "    Fetch domain SID into local secrets.tdb\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id,
-			       NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
+	return run_rpc_command(NULL, PI_SAMR, NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC, 
 			       rpc_getsid_internals,
 			       argc, argv);
 }
@@ -608,29 +563,30 @@
  *		stripped.
  **/
 
-static int rpc_user_usage(struct net_context *c, int argc, const char **argv)
+static int rpc_user_usage(int argc, const char **argv)
 {
-	return net_user_usage(c, argc, argv);
+	return net_help_user(argc, argv);
 }
 
-/**
+/** 
  * Add a new user to a remote RPC server.
  *
  * @param argc  Standard main() style argc.
- * @param argv  Standard main() style argv. Initial components are already
+ * @param argv  Standard main() style argv.  Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return A shell status integer (0 for success)
  **/
 
-static int rpc_user_add(struct net_context *c, int argc, const char **argv)
+static int rpc_user_add(int argc, const char **argv) 
 {
 	NET_API_STATUS status;
 	struct USER_INFO_1 info1;
 	uint32_t parm_error = 0;
 
-	if (argc < 1 || c->display_usage) {
-		rpc_user_usage(c, argc, argv);
+	if (argc < 1) {
+		d_printf("User must be specified\n");
+		rpc_user_usage(argc, argv);
 		return 0;
 	}
 
@@ -641,12 +597,11 @@
 		info1.usri1_password = argv[1];
 	}
 
-	status = NetUserAdd(c->opt_host, 1, (uint8_t *)&info1, &parm_error);
+	status = NetUserAdd(opt_host, 1, (uint8_t *)&info1, &parm_error);
 
 	if (status != 0) {
 		d_fprintf(stderr, "Failed to add user '%s' with: %s.\n",
-			argv[0], libnetapi_get_error_string(c->netapi_ctx,
-							    status));
+			argv[0], libnetapi_get_error_string(netapi_ctx, status));
 		return -1;
 	} else {
 		d_printf("Added user '%s'.\n", argv[0]);
@@ -655,43 +610,141 @@
 	return 0;
 }
 
-/**
+/** 
  * Rename a user on a remote RPC server.
  *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return Normal NTSTATUS return.
  **/
 
-static int rpc_user_rename(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_user_rename_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx, 
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
-	struct USER_INFO_0 u0;
-	uint32_t parm_err = 0;
+	POLICY_HND connect_pol, domain_pol, user_pol;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	uint32 info_level = 7;
+	const char *old_name, *new_name;
+	struct samr_Ids user_rids, name_types;
+	struct lsa_String lsa_acct_name;
+	union samr_UserInfo *info = NULL;
 
-	if (argc != 2 || c->display_usage) {
-		rpc_user_usage(c, argc, argv);
-		return 0;
+	if (argc != 2) {
+		d_printf("Old and new username must be specified\n");
+		rpc_user_usage(argc, argv);
+		return NT_STATUS_OK;
 	}
 
-	u0.usri0_name = argv[1];
+	old_name = argv[0];
+	new_name = argv[1];
 
-	status = NetUserSetInfo(c->opt_host, argv[0],
-				0, (uint8_t *)&u0, &parm_err);
-	if (status) {
-		d_fprintf(stderr, "Failed to rename user from %s to %s - %s\n",
-			  argv[0], argv[1],
-			  libnetapi_get_error_string(c->netapi_ctx, status));
+	/* Get sam policy handle */
+
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+	
+	/* Get domain policy handle */
+
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	init_lsa_String(&lsa_acct_name, old_name);
+
+	result = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+					 &domain_pol,
+					 1,
+					 &lsa_acct_name,
+					 &user_rids,
+					 &name_types);
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	/* Open domain user */
+	result = rpccli_samr_OpenUser(pipe_hnd, mem_ctx,
+				      &domain_pol,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      user_rids.ids[0],
+				      &user_pol);
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	/* Query user info */
+	result = rpccli_samr_QueryUserInfo(pipe_hnd, mem_ctx,
+					   &user_pol,
+					   info_level,
+					   &info);
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	init_samr_user_info7(&info->info7, new_name);
+
+	/* Set new name */
+	result = rpccli_samr_SetUserInfo2(pipe_hnd, mem_ctx,
+					  &user_pol,
+					  info_level,
+					  info);
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+ done:
+	if (!NT_STATUS_IS_OK(result)) {
+		d_fprintf(stderr, "Failed to rename user from %s to %s - %s\n", old_name, new_name, 
+			 nt_errstr(result));
 	} else {
-		d_printf("Renamed user from %s to %s\n", argv[0], argv[1]);
+		d_printf("Renamed user from %s to %s\n", old_name, new_name);
 	}
+	return result;
+}
 
-	return status;
+/** 
+ * Rename a user on a remote RPC server.
+ *
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ *
+ * @return A shell status integer (0 for success).
+ **/
+
+static int rpc_user_rename(int argc, const char **argv) 
+{
+	return run_rpc_command(NULL, PI_SAMR, 0, rpc_user_rename_internals,
+			       argc, argv);
 }
 
-/**
+/** 
  * Delete a user from a remote RPC server.
  *
  * @param argc  Standard main() style argc.
@@ -701,21 +754,22 @@
  * @return A shell status integer (0 for success).
  **/
 
-static int rpc_user_delete(struct net_context *c, int argc, const char **argv)
+static int rpc_user_delete(int argc, const char **argv) 
 {
 	NET_API_STATUS status;
 
-	if (argc < 1 || c->display_usage) {
-		rpc_user_usage(c, argc, argv);
+	if (argc < 1) {
+		d_printf("User must be specified\n");
+		rpc_user_usage(argc, argv);
 		return 0;
 	}
 
-	status = NetUserDel(c->opt_host, argv[0]);
+	status = NetUserDel(opt_host, argv[0]);
 
 	if (status != 0) {
                 d_fprintf(stderr, "Failed to delete user '%s' with: %s.\n",
 			  argv[0],
-			  libnetapi_get_error_string(c->netapi_ctx, status));
+			  libnetapi_get_error_string(netapi_ctx, status));
 		return -1;
         } else {
                 d_printf("Deleted user '%s'.\n", argv[0]);
@@ -724,101 +778,280 @@
 	return 0;
 }
 
-/**
- * Set a user's password on a remote RPC server.
+/** 
+ * Set a password for a user on a remote RPC server.
  *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return Normal NTSTATUS return.
  **/
 
-static int rpc_user_password(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_user_password_internals(const DOM_SID *domain_sid, 
+					const char *domain_name, 
+					struct cli_state *cli, 
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx, 
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	POLICY_HND connect_pol, domain_pol, user_pol;
+	uchar pwbuf[516];
+	const char *user;
+	const char *new_password;
 	char *prompt = NULL;
-	struct USER_INFO_1003 u1003;
-	uint32_t parm_err = 0;
+	union samr_UserInfo info;
 
-	if (argc < 1 || c->display_usage) {
-		rpc_user_usage(c, argc, argv);
-		return 0;
+	if (argc < 1) {
+		d_printf("User must be specified\n");
+		rpc_user_usage(argc, argv);
+		return NT_STATUS_OK;
 	}
+	
+	user = argv[0];
 
 	if (argv[1]) {
-		u1003.usri1003_password = argv[1];
+		new_password = argv[1];
 	} else {
-		asprintf(&prompt, "Enter new password for %s:", argv[0]);
-		u1003.usri1003_password = getpass(prompt);
+		asprintf(&prompt, "Enter new password for %s:", user);
+		new_password = getpass(prompt);
 		SAFE_FREE(prompt);
 	}
 
-	status = NetUserSetInfo(c->opt_host, argv[0], 1003, (uint8_t *)&u1003, &parm_err);
+	/* Get sam policy and domain handles */
 
-	/* Display results */
-	if (status != 0) {
-		d_fprintf(stderr, "Failed to set password for '%s' with: %s.\n",
-			argv[0], libnetapi_get_error_string(c->netapi_ctx,
-							    status));
-		return -1;
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
 	}
 
-	return 0;
-}
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
 
-/**
- * List a user's groups from a remote RPC server.
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	/* Get handle on user */
+
+	{
+		struct samr_Ids user_rids, name_types;
+		struct lsa_String lsa_acct_name;
+
+		init_lsa_String(&lsa_acct_name, user);
+
+		result = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+						 &domain_pol,
+						 1,
+						 &lsa_acct_name,
+						 &user_rids,
+						 &name_types);
+		if (!NT_STATUS_IS_OK(result)) {
+			goto done;
+		}
+
+		result = rpccli_samr_OpenUser(pipe_hnd, mem_ctx,
+					      &domain_pol,
+					      MAXIMUM_ALLOWED_ACCESS,
+					      user_rids.ids[0],
+					      &user_pol);
+
+		if (!NT_STATUS_IS_OK(result)) {
+			goto done;
+		}
+	}
+
+	/* Set password on account */
+
+	encode_pw_buffer(pwbuf, new_password, STR_UNICODE);
+
+	init_samr_user_info24(&info.info24, pwbuf, 24);
+
+	SamOEMhashBlob(info.info24.password.data, 516,
+		       &cli->user_session_key);
+
+	result = rpccli_samr_SetUserInfo2(pipe_hnd, mem_ctx,
+					  &user_pol,
+					  24,
+					  &info);
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	/* Display results */
+
+ done:
+	return result;
+
+}	
+
+/** 
+ * Set a user's password on a remote RPC server.
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success)
+ * @return A shell status integer (0 for success).
  **/
 
-static int rpc_user_info(struct net_context *c, int argc, const char **argv)
+static int rpc_user_password(int argc, const char **argv) 
+{
+	return run_rpc_command(NULL, PI_SAMR, 0, rpc_user_password_internals,
+			       argc, argv);
+}
 
+/** 
+ * List user's groups on a remote RPC server.
+ *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv.  Initial components are already
+ *              stripped.
+ *
+ * @return Normal NTSTATUS return.
+ **/
+
+static NTSTATUS rpc_user_info_internals(const DOM_SID *domain_sid,
+			const char *domain_name, 
+			struct cli_state *cli,
+			struct rpc_pipe_client *pipe_hnd,
+			TALLOC_CTX *mem_ctx,
+			int argc,
+			const char **argv)
 {
-	NET_API_STATUS status;
-	struct GROUP_USERS_INFO_0 *u0 = NULL;
-	uint32_t entries_read = 0;
-	uint32_t total_entries = 0;
+	POLICY_HND connect_pol, domain_pol, user_pol;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	int i;
+	struct samr_RidWithAttributeArray *rid_array = NULL;
+	struct lsa_Strings names;
+	struct samr_Ids types;
+	uint32_t *lrids = NULL;
+	struct samr_Ids rids, name_types;
+	struct lsa_String lsa_acct_name;
 
 
-	if (argc < 1 || c->display_usage) {
-		rpc_user_usage(c, argc, argv);
-		return 0;
+	if (argc < 1) {
+		d_printf("User must be specified\n");
+		rpc_user_usage(argc, argv);
+		return NT_STATUS_OK;
 	}
+	/* Get sam policy handle */
 
-	status = NetUserGetGroups(c->opt_host,
-				  argv[0],
-				  0,
-				  (uint8_t **)&u0,
-				  (uint32_t)-1,
-				  &entries_read,
-				  &total_entries);
-	if (status != 0) {
-		d_fprintf(stderr, "Failed to get groups for '%s' with: %s.\n",
-			argv[0], libnetapi_get_error_string(c->netapi_ctx,
-							    status));
-		return -1;
-	}
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+	
+	/* Get domain policy handle */
 
-	for (i=0; i < entries_read; i++) {
-		printf("%s\n", u0->grui0_name);
-		u0++;
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+
+	/* Get handle on user */
+
+	init_lsa_String(&lsa_acct_name, argv[0]);
+
+	result = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+					 &domain_pol,
+					 1,
+					 &lsa_acct_name,
+					 &rids,
+					 &name_types);
+
+	if (!NT_STATUS_IS_OK(result)) goto done;
+
+	result = rpccli_samr_OpenUser(pipe_hnd, mem_ctx,
+				      &domain_pol,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      rids.ids[0],
+				      &user_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+
+	result = rpccli_samr_GetGroupsForUser(pipe_hnd, mem_ctx,
+					      &user_pol,
+					      &rid_array);
+
+	if (!NT_STATUS_IS_OK(result)) goto done;
+
+	/* Look up rids */
+
+	if (rid_array->count) {
+		if ((lrids = TALLOC_ARRAY(mem_ctx, uint32, rid_array->count)) == NULL) {
+			result = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+
+		for (i = 0; i < rid_array->count; i++)
+			lrids[i] = rid_array->rids[i].rid;
+
+		result = rpccli_samr_LookupRids(pipe_hnd, mem_ctx,
+						&domain_pol,
+						rid_array->count,
+						lrids,
+						&names,
+						&types);
+
+		if (!NT_STATUS_IS_OK(result)) {
+			goto done;
+		}
+
+		/* Display results */
+
+		for (i = 0; i < names.count; i++)
+			printf("%s\n", names.names[i].string);
 	}
+ done:
+	return result;
+}
 
-	return 0;
+/** 
+ * List a user's groups from a remote RPC server.
+ *
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ *
+ * @return A shell status integer (0 for success).
+ **/
+
+static int rpc_user_info(int argc, const char **argv) 
+{
+	return run_rpc_command(NULL, PI_SAMR, 0, rpc_user_info_internals,
+			       argc, argv);
 }
 
-/**
+/** 
  * List users on a remote RPC server.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -830,161 +1063,142 @@
  * @return Normal NTSTATUS return.
  **/
 
-static int rpc_user_list(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_user_list_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
-	uint32_t start_idx=0, num_entries, i, loop_count = 0;
-	struct NET_DISPLAY_USER *info = NULL;
-	void *buffer = NULL;
+	POLICY_HND connect_pol, domain_pol;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	uint32 start_idx=0, num_entries, i, loop_count = 0;
 
+	/* Get sam policy handle */
+
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+	
+	/* Get domain policy handle */
+
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
 	/* Query domain users */
-	if (c->opt_long_list_entries)
-		d_printf("\nUser name             Comment"
+	if (opt_long_list_entries)
+		d_printf("\nUser name             Comment"\
 			 "\n-----------------------------\n");
 	do {
-		uint32_t max_entries, max_size;
+		const char *user = NULL;
+		const char *desc = NULL;
+		uint32 max_entries, max_size;
+		uint32_t total_size, returned_size;
+		union samr_DispInfo info;
 
 		get_query_dispinfo_params(
 			loop_count, &max_entries, &max_size);
 
-		status = NetQueryDisplayInformation(c->opt_host,
-						    1,
-						    start_idx,
-						    max_entries,
-						    max_size,
-						    &num_entries,
-						    &buffer);
-		if (status != 0 && status != ERROR_MORE_DATA) {
-			return status;
-		}
+		result = rpccli_samr_QueryDisplayInfo(pipe_hnd, mem_ctx,
+						      &domain_pol,
+						      1,
+						      start_idx,
+						      max_entries,
+						      max_size,
+						      &total_size,
+						      &returned_size,
+						      &info);
+		loop_count++;
+		start_idx += info.info1.count;
+		num_entries = info.info1.count;
 
-		info = (struct NET_DISPLAY_USER *)buffer;
-
 		for (i = 0; i < num_entries; i++) {
-
-			if (c->opt_long_list_entries)
-				printf("%-21.21s %s\n", info->usri1_name,
-					info->usri1_comment);
+			user = info.info1.entries[i].account_name.string;
+			if (opt_long_list_entries)
+				desc = info.info1.entries[i].description.string;
+			if (opt_long_list_entries)
+				printf("%-21.21s %s\n", user, desc);
 			else
-				printf("%s\n", info->usri1_name);
-			info++;
+				printf("%s\n", user);
 		}
+	} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
 
-		NetApiBufferFree(buffer);
-
-		loop_count++;
-		start_idx += num_entries;
-
-	} while (status == ERROR_MORE_DATA);
-
-	return status;
+ done:
+	return result;
 }
 
-/**
+/** 
  * 'net rpc user' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int net_rpc_user(struct net_context *c, int argc, const char **argv)
+int net_rpc_user(int argc, const char **argv) 
 {
 	NET_API_STATUS status;
 
 	struct functable func[] = {
-		{
-			"add",
-			rpc_user_add,
-			NET_TRANSPORT_RPC,
-			"Add specified user",
-			"net rpc user add\n"
-			"    Add specified user"
-		},
-		{
-			"info",
-			rpc_user_info,
-			NET_TRANSPORT_RPC,
-			"List domain groups of user",
-			"net rpc user info\n"
-			"    Lis domain groups of user"
-		},
-		{
-			"delete",
-			rpc_user_delete,
-			NET_TRANSPORT_RPC,
-			"Remove specified user",
-			"net rpc user delete\n"
-			"    Remove specified user"
-		},
-		{
-			"password",
-			rpc_user_password,
-			NET_TRANSPORT_RPC,
-			"Change user password",
-			"net rpc user password\n"
-			"    Change user password"
-		},
-		{
-			"rename",
-			rpc_user_rename,
-			NET_TRANSPORT_RPC,
-			"Rename specified user",
-			"net rpc user rename\n"
-			"    Rename specified user"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"add", rpc_user_add},
+		{"info", rpc_user_info},
+		{"delete", rpc_user_delete},
+		{"password", rpc_user_password},
+		{"rename", rpc_user_rename},
+		{NULL, NULL}
 	};
 
-	status = libnetapi_init(&c->netapi_ctx);
+	status = libnetapi_init(&netapi_ctx);
 	if (status != 0) {
 		return -1;
 	}
-	libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
-	libnetapi_set_password(c->netapi_ctx, c->opt_password);
-	if (c->opt_kerberos) {
-		libnetapi_set_use_kerberos(c->netapi_ctx);
-	}
+	libnetapi_set_username(netapi_ctx, opt_user_name);
+	libnetapi_set_password(netapi_ctx, opt_password);
 
 	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rpc user\n"
-				 "    List all users\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		return rpc_user_list(c, argc, argv);
+		return run_rpc_command(NULL,PI_SAMR, 0, 
+				       rpc_user_list_internals,
+				       argc, argv);
 	}
 
-	return net_run_function(c, argc, argv, "net rpc user", func);
+	return net_run_function(argc, argv, func, rpc_user_usage);
 }
 
-static NTSTATUS rpc_sh_user_list(struct net_context *c,
-				 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_list(TALLOC_CTX *mem_ctx,
 				 struct rpc_sh_ctx *ctx,
 				 struct rpc_pipe_client *pipe_hnd,
 				 int argc, const char **argv)
 {
-	return werror_to_ntstatus(W_ERROR(rpc_user_list(c, argc, argv)));
+	return rpc_user_list_internals(ctx->domain_sid, ctx->domain_name,
+				       ctx->cli, pipe_hnd, mem_ctx,
+				       argc, argv);
 }
 
-static NTSTATUS rpc_sh_user_info(struct net_context *c,
-				 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_info(TALLOC_CTX *mem_ctx,
 				 struct rpc_sh_ctx *ctx,
 				 struct rpc_pipe_client *pipe_hnd,
 				 int argc, const char **argv)
 {
-	return werror_to_ntstatus(W_ERROR(rpc_user_info(c, argc, argv)));
+	return rpc_user_info_internals(ctx->domain_sid, ctx->domain_name,
+				       ctx->cli, pipe_hnd, mem_ctx,
+				       argc, argv);
 }
 
-static NTSTATUS rpc_sh_handle_user(struct net_context *c,
-				   TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_handle_user(TALLOC_CTX *mem_ctx,
 				   struct rpc_sh_ctx *ctx,
 				   struct rpc_pipe_client *pipe_hnd,
 				   int argc, const char **argv,
 				   NTSTATUS (*fn)(
-					   struct net_context *c,
 					   TALLOC_CTX *mem_ctx,
 					   struct rpc_sh_ctx *ctx,
 					   struct rpc_pipe_client *pipe_hnd,
@@ -1006,8 +1220,8 @@
 	ZERO_STRUCT(domain_pol);
 	ZERO_STRUCT(user_pol);
 
-	result = net_rpc_lookup_name(c, mem_ctx, rpc_pipe_np_smb_conn(pipe_hnd),
-				     argv[0], NULL, NULL, &sid, &type);
+	result = net_rpc_lookup_name(mem_ctx, pipe_hnd->cli, argv[0],
+				     NULL, NULL, &sid, &type);
 	if (!NT_STATUS_IS_OK(result)) {
 		d_fprintf(stderr, "Could not lookup %s: %s\n", argv[0],
 			  nt_errstr(result));
@@ -1028,7 +1242,7 @@
 	}
 
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -1053,7 +1267,7 @@
 		goto done;
 	}
 
-	result = fn(c, mem_ctx, ctx, pipe_hnd, &user_pol, argc-1, argv+1);
+	result = fn(mem_ctx, ctx, pipe_hnd, &user_pol, argc-1, argv+1);
 
  done:
 	if (is_valid_policy_hnd(&user_pol)) {
@@ -1068,8 +1282,7 @@
 	return result;
 }
 
-static NTSTATUS rpc_sh_user_show_internals(struct net_context *c,
-					   TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_show_internals(TALLOC_CTX *mem_ctx,
 					   struct rpc_sh_ctx *ctx,
 					   struct rpc_pipe_client *pipe_hnd,
 					   POLICY_HND *user_hnd,
@@ -1098,13 +1311,12 @@
 	return result;
 }
 
-static NTSTATUS rpc_sh_user_show(struct net_context *c,
-				 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_show(TALLOC_CTX *mem_ctx,
 				 struct rpc_sh_ctx *ctx,
 				 struct rpc_pipe_client *pipe_hnd,
 				 int argc, const char **argv)
 {
-	return rpc_sh_handle_user(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_handle_user(mem_ctx, ctx, pipe_hnd, argc, argv,
 				  rpc_sh_user_show_internals);
 }
 
@@ -1119,8 +1331,7 @@
 	info->info21.fields_present |= SAMR_FIELD_##flag; } \
 } while (0);
 
-static NTSTATUS rpc_sh_user_str_edit_internals(struct net_context *c,
-					       TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_str_edit_internals(TALLOC_CTX *mem_ctx,
 					       struct rpc_sh_ctx *ctx,
 					       struct rpc_pipe_client *pipe_hnd,
 					       POLICY_HND *user_hnd,
@@ -1194,18 +1405,16 @@
 		newflags = oldflags & ~ACB_##rec; \
 	} } } while (0);
 
-static NTSTATUS rpc_sh_user_str_edit(struct net_context *c,
-				     TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_str_edit(TALLOC_CTX *mem_ctx,
 				     struct rpc_sh_ctx *ctx,
 				     struct rpc_pipe_client *pipe_hnd,
 				     int argc, const char **argv)
 {
-	return rpc_sh_handle_user(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_handle_user(mem_ctx, ctx, pipe_hnd, argc, argv,
 				  rpc_sh_user_str_edit_internals);
 }
 
-static NTSTATUS rpc_sh_user_flag_edit_internals(struct net_context *c,
-						TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_flag_edit_internals(TALLOC_CTX *mem_ctx,
 						struct rpc_sh_ctx *ctx,
 						struct rpc_pipe_client *pipe_hnd,
 						POLICY_HND *user_hnd,
@@ -1270,50 +1479,48 @@
 	return result;
 }
 
-static NTSTATUS rpc_sh_user_flag_edit(struct net_context *c,
-				      TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_user_flag_edit(TALLOC_CTX *mem_ctx,
 				      struct rpc_sh_ctx *ctx,
 				      struct rpc_pipe_client *pipe_hnd,
 				      int argc, const char **argv)
 {
-	return rpc_sh_handle_user(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_handle_user(mem_ctx, ctx, pipe_hnd, argc, argv,
 				  rpc_sh_user_flag_edit_internals);
 }
 
-struct rpc_sh_cmd *net_rpc_user_edit_cmds(struct net_context *c,
-					  TALLOC_CTX *mem_ctx,
+struct rpc_sh_cmd *net_rpc_user_edit_cmds(TALLOC_CTX *mem_ctx,
 					  struct rpc_sh_ctx *ctx)
 {
 	static struct rpc_sh_cmd cmds[] = {
 
-		{ "fullname", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+		{ "fullname", NULL, PI_SAMR, rpc_sh_user_str_edit,
 		  "Show/Set a user's full name" },
 
-		{ "homedir", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+		{ "homedir", NULL, PI_SAMR, rpc_sh_user_str_edit,
 		  "Show/Set a user's home directory" },
 
-		{ "homedrive", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+		{ "homedrive", NULL, PI_SAMR, rpc_sh_user_str_edit,
 		  "Show/Set a user's home drive" },
 
-		{ "logonscript", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+		{ "logonscript", NULL, PI_SAMR, rpc_sh_user_str_edit,
 		  "Show/Set a user's logon script" },
 
-		{ "profilepath", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+		{ "profilepath", NULL, PI_SAMR, rpc_sh_user_str_edit,
 		  "Show/Set a user's profile path" },
 
-		{ "description", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+		{ "description", NULL, PI_SAMR, rpc_sh_user_str_edit,
 		  "Show/Set a user's description" },
 
-		{ "disabled", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+		{ "disabled", NULL, PI_SAMR, rpc_sh_user_flag_edit,
 		  "Show/Set whether a user is disabled" },
 
-		{ "autolock", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+		{ "autolock", NULL, PI_SAMR, rpc_sh_user_flag_edit,
 		  "Show/Set whether a user locked out" },
 
-		{ "pwnotreq", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+		{ "pwnotreq", NULL, PI_SAMR, rpc_sh_user_flag_edit,
 		  "Show/Set whether a user does not need a password" },
 
-		{ "pwnoexp", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+		{ "pwnoexp", NULL, PI_SAMR, rpc_sh_user_flag_edit,
 		  "Show/Set whether a user's password does not expire" },
 
 		{ NULL, NULL, 0, NULL, NULL }
@@ -1322,22 +1529,21 @@
 	return cmds;
 }
 
-struct rpc_sh_cmd *net_rpc_user_cmds(struct net_context *c,
-				     TALLOC_CTX *mem_ctx,
+struct rpc_sh_cmd *net_rpc_user_cmds(TALLOC_CTX *mem_ctx,
 				     struct rpc_sh_ctx *ctx)
 {
 	static struct rpc_sh_cmd cmds[] = {
 
-		{ "list", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_list,
+		{ "list", NULL, PI_SAMR, rpc_sh_user_list,
 		  "List available users" },
 
-		{ "info", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_info,
+		{ "info", NULL, PI_SAMR, rpc_sh_user_info,
 		  "List the domain groups a user is member of" },
 
-		{ "show", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_show,
+		{ "show", NULL, PI_SAMR, rpc_sh_user_show,
 		  "Show info about a user" },
 
-		{ "edit", net_rpc_user_edit_cmds, 0, NULL,
+		{ "edit", net_rpc_user_edit_cmds, 0, NULL, 
 		  "Show/Modify a user's fields" },
 
 		{ NULL, NULL, 0, NULL, NULL }
@@ -1355,9 +1561,9 @@
  *		stripped.
  **/
 
-static int rpc_group_usage(struct net_context *c, int argc, const char **argv)
+static int rpc_group_usage(int argc, const char **argv)
 {
-	return net_group_usage(c, argc, argv);
+	return net_help_group(argc, argv);
 }
 
 /**
@@ -1375,9 +1581,8 @@
  *
  * @return Normal NTSTATUS return.
  **/
-
-static NTSTATUS rpc_group_delete_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
+                                                                                                             
+static NTSTATUS rpc_group_delete_internals(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -1386,7 +1591,7 @@
 					const char **argv)
 {
 	POLICY_HND connect_pol, domain_pol, group_pol, user_pol;
-	bool group_is_primary = false;
+	bool group_is_primary = False;
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	uint32_t group_rid;
 	struct samr_RidTypeArray *rids = NULL;
@@ -1398,13 +1603,14 @@
 	struct lsa_String lsa_acct_name;
 	union samr_UserInfo *info = NULL;
 
-	if (argc < 1 || c->display_usage) {
-		rpc_group_usage(c, argc,argv);
+	if (argc < 1) {
+        	d_printf("specify group\n");
+		rpc_group_usage(argc,argv);
 		return NT_STATUS_OK; /* ok? */
 	}
 
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 
@@ -1460,8 +1666,8 @@
 			d_fprintf(stderr, "Unable to query group members of %s",argv[0]);
    			goto done;
 		}
-
-		if (c->opt_verbose) {
+		
+		if (opt_verbose) {
 			d_printf("Domain Group %s (rid: %d) has %d members\n",
 				argv[0],group_rid, rids->count);
 		}
@@ -1474,7 +1680,7 @@
 						      MAXIMUM_ALLOWED_ACCESS,
 						      rids->rids[i],
 						      &user_pol);
-
+	
 	        	if (!NT_STATUS_IS_OK(result)) {
 				d_fprintf(stderr, "Unable to open group member %d\n",
 					rids->rids[i]);
@@ -1493,27 +1699,27 @@
 	        	}
 
 			if (info->info21.primary_gid == group_rid) {
-				if (c->opt_verbose) {
+				if (opt_verbose) {
 					d_printf("Group is primary group of %s\n",
 						info->info21.account_name.string);
 				}
-				group_is_primary = true;
+				group_is_primary = True;
                         }
 
 			rpccli_samr_Close(pipe_hnd, mem_ctx, &user_pol);
 		}
-
+                
 		if (group_is_primary) {
 			d_fprintf(stderr, "Unable to delete group because some "
 				 "of it's members have it as primary group\n");
 			result = NT_STATUS_MEMBERS_PRIMARY_GROUP;
 			goto done;
 		}
-
+     
 		/* remove all group members */
 		for (i = 0; i < rids->count; i++)
 		{
-			if (c->opt_verbose)
+			if (opt_verbose) 
 				d_printf("Remove group member %d...",
 					rids->rids[i]);
 			result = rpccli_samr_DeleteGroupMember(pipe_hnd, mem_ctx,
@@ -1521,13 +1727,13 @@
 							       rids->rids[i]);
 
 			if (NT_STATUS_IS_OK(result)) {
-				if (c->opt_verbose)
+				if (opt_verbose)
 					d_printf("ok\n");
 			} else {
-				if (c->opt_verbose)
+				if (opt_verbose)
 					d_printf("failed\n");
 				goto done;
-			}
+			}	
 		}
 
 		result = rpccli_samr_DeleteDomainGroup(pipe_hnd, mem_ctx,
@@ -1556,96 +1762,178 @@
 		result = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
-
+         
+	
 	if (NT_STATUS_IS_OK(result)) {
-		if (c->opt_verbose)
+		if (opt_verbose)
 			d_printf("Deleted %s '%s'\n",sid_type_lookup(name_types.ids[0]),argv[0]);
 	} else {
 		d_fprintf(stderr, "Deleting of %s failed: %s\n",argv[0],
 			get_friendly_nt_error_msg(result));
 	}
-
+	
  done:
-	return result;
-
+	return result;	
+        
 }
 
-static int rpc_group_delete(struct net_context *c, int argc, const char **argv)
+static int rpc_group_delete(int argc, const char **argv)
 {
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
-			       rpc_group_delete_internals, argc,argv);
+	return run_rpc_command(NULL, PI_SAMR, 0, rpc_group_delete_internals,
+                               argc,argv);
 }
 
-static int rpc_group_add_internals(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_group_add_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
-	struct GROUP_INFO_1 info1;
-	uint32_t parm_error = 0;
+	POLICY_HND connect_pol, domain_pol, group_pol;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	union samr_GroupInfo group_info;
+	struct lsa_String grp_name;
+	uint32_t rid = 0;
 
-	if (argc != 1 || c->display_usage) {
-		rpc_group_usage(c, argc, argv);
-		return 0;
+	if (argc != 1) {
+		d_printf("Group name must be specified\n");
+		rpc_group_usage(argc, argv);
+		return NT_STATUS_OK;
 	}
 
-	ZERO_STRUCT(info1);
+	init_lsa_String(&grp_name, argv[0]);
 
-	info1.grpi1_name = argv[0];
-	if (c->opt_comment && strlen(c->opt_comment) > 0) {
-		info1.grpi1_comment = c->opt_comment;
-	}
+	/* Get sam policy handle */
 
-	status = NetGroupAdd(c->opt_host, 1, (uint8_t *)&info1, &parm_error);
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+	
+	/* Get domain policy handle */
 
-	if (status != 0) {
-		d_fprintf(stderr, "Failed to add group '%s' with: %s.\n",
-			argv[0], libnetapi_get_error_string(c->netapi_ctx,
-							    status));
-		return -1;
-	} else {
-		d_printf("Added group '%s'.\n", argv[0]);
-	}
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
 
-	return 0;
+	/* Create the group */
+
+	result = rpccli_samr_CreateDomainGroup(pipe_hnd, mem_ctx,
+					       &domain_pol,
+					       &grp_name,
+					       MAXIMUM_ALLOWED_ACCESS,
+					       &group_pol,
+					       &rid);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+
+	if (strlen(opt_comment) == 0) goto done;
+
+	/* We've got a comment to set */
+
+	init_lsa_String(&group_info.description, opt_comment);
+
+	result = rpccli_samr_SetGroupInfo(pipe_hnd, mem_ctx,
+					  &group_pol,
+					  4,
+					  &group_info);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+	
+ done:
+	if (NT_STATUS_IS_OK(result))
+		DEBUG(5, ("add group succeeded\n"));
+	else
+		d_fprintf(stderr, "add group failed: %s\n", nt_errstr(result));
+
+	return result;
 }
 
-static int rpc_alias_add_internals(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_alias_add_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
-	struct LOCALGROUP_INFO_1 info1;
-	uint32_t parm_error = 0;
+	POLICY_HND connect_pol, domain_pol, alias_pol;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+	union samr_AliasInfo alias_info;
+	struct lsa_String alias_name;
+	uint32_t rid = 0;
 
-	if (argc != 1 || c->display_usage) {
-		rpc_group_usage(c, argc, argv);
-		return 0;
+	if (argc != 1) {
+		d_printf("Alias name must be specified\n");
+		rpc_group_usage(argc, argv);
+		return NT_STATUS_OK;
 	}
 
-	ZERO_STRUCT(info1);
+	init_lsa_String(&alias_name, argv[0]);
 
-	info1.lgrpi1_name = argv[0];
-	if (c->opt_comment && strlen(c->opt_comment) > 0) {
-		info1.lgrpi1_comment = c->opt_comment;
-	}
+	/* Get sam policy handle */
 
-	status = NetLocalGroupAdd(c->opt_host, 1, (uint8_t *)&info1, &parm_error);
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+	
+	/* Get domain policy handle */
 
-	if (status != 0) {
-		d_fprintf(stderr, "Failed to add alias '%s' with: %s.\n",
-			argv[0], libnetapi_get_error_string(c->netapi_ctx,
-							    status));
-		return -1;
-	} else {
-		d_printf("Added alias '%s'.\n", argv[0]);
-	}
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
+	if (!NT_STATUS_IS_OK(result)) goto done;
 
-	return 0;
+	/* Create the group */
+
+	result = rpccli_samr_CreateDomAlias(pipe_hnd, mem_ctx,
+					    &domain_pol,
+					    &alias_name,
+					    MAXIMUM_ALLOWED_ACCESS,
+					    &alias_pol,
+					    &rid);
+	if (!NT_STATUS_IS_OK(result)) goto done;
+
+	if (strlen(opt_comment) == 0) goto done;
+
+	/* We've got a comment to set */
+
+	init_lsa_String(&alias_info.description, opt_comment);
+
+	result = rpccli_samr_SetAliasInfo(pipe_hnd, mem_ctx,
+					  &alias_pol,
+					  3,
+					  &alias_info);
+
+	if (!NT_STATUS_IS_OK(result)) goto done;
+	
+ done:
+	if (NT_STATUS_IS_OK(result))
+		DEBUG(5, ("add alias succeeded\n"));
+	else
+		d_fprintf(stderr, "add alias failed: %s\n", nt_errstr(result));
+
+	return result;
 }
 
-static int rpc_group_add(struct net_context *c, int argc, const char **argv)
+static int rpc_group_add(int argc, const char **argv)
 {
-	if (c->opt_localgroup)
-		return rpc_alias_add_internals(c, argc, argv);
+	if (opt_localgroup)
+		return run_rpc_command(NULL, PI_SAMR, 0,
+				       rpc_alias_add_internals,
+				       argc, argv);
 
-	return rpc_group_add_internals(c, argc, argv);
+	return run_rpc_command(NULL, PI_SAMR, 0,
+			       rpc_group_add_internals,
+			       argc, argv);
 }
 
 static NTSTATUS get_sid_from_name(struct cli_state *cli,
@@ -1660,13 +1948,12 @@
 	POLICY_HND lsa_pol;
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(result)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
+	if (!pipe_hnd) {
 		goto done;
 	}
 
-	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, false,
+	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, False,
 				     SEC_RIGHTS_MAXIMUM_ALLOWED, &lsa_pol);
 
 	if (!NT_STATUS_IS_OK(result)) {
@@ -1685,7 +1972,7 @@
 
  done:
 	if (pipe_hnd) {
-		TALLOC_FREE(pipe_hnd);
+		cli_rpc_pipe_close(pipe_hnd);
 	}
 
 	if (!NT_STATUS_IS_OK(result) && (StrnCaseCmp(name, "S-", 2) == 0)) {
@@ -1727,7 +2014,7 @@
 
 	/* Get sam policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -1799,8 +2086,8 @@
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
-	result = get_sid_from_name(rpc_pipe_np_smb_conn(pipe_hnd), mem_ctx,
-				   member, &member_sid, &member_type);
+	result = get_sid_from_name(pipe_hnd->cli, mem_ctx, member,
+				   &member_sid, &member_type);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		d_fprintf(stderr, "Could not lookup up group member %s\n", member);
@@ -1809,7 +2096,7 @@
 
 	/* Get sam policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -1849,9 +2136,8 @@
 	return result;
 }
 
-static NTSTATUS rpc_group_addmem_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_group_addmem_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
@@ -1861,12 +2147,8 @@
 	DOM_SID group_sid;
 	enum lsa_SidType group_type;
 
-	if (argc != 2 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc group addmem <group> <member>\n"
-			 "  Add a member to a group\n"
-			 "    group\tGroup to add member to\n"
-			 "    member\tMember to add to group\n");
+	if (argc != 2) {
+		d_printf("Usage: 'net rpc group addmem <group> <member>\n");
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
@@ -1904,15 +2186,14 @@
 	return NT_STATUS_UNSUCCESSFUL;
 }
 
-static int rpc_group_addmem(struct net_context *c, int argc, const char **argv)
+static int rpc_group_addmem(int argc, const char **argv)
 {
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SAMR, 0,
 			       rpc_group_addmem_internals,
 			       argc, argv);
 }
 
-static NTSTATUS rpc_del_groupmem(struct net_context *c,
-				struct rpc_pipe_client *pipe_hnd,
+static NTSTATUS rpc_del_groupmem(struct rpc_pipe_client *pipe_hnd,
 				TALLOC_CTX *mem_ctx,
 				const DOM_SID *group_sid,
 				const char *member)
@@ -1934,7 +2215,7 @@
 
 	/* Get sam policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result))
@@ -2000,8 +2281,8 @@
 	if (!sid_split_rid(&sid, &alias_rid))
 		return NT_STATUS_UNSUCCESSFUL;
 
-	result = get_sid_from_name(rpc_pipe_np_smb_conn(pipe_hnd), mem_ctx,
-				   member, &member_sid, &member_type);
+	result = get_sid_from_name(pipe_hnd->cli, mem_ctx, member,
+				   &member_sid, &member_type);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		d_fprintf(stderr, "Could not lookup up group member %s\n", member);
@@ -2010,7 +2291,7 @@
 
 	/* Get sam policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -2048,9 +2329,8 @@
 	return result;
 }
 
-static NTSTATUS rpc_group_delmem_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_group_delmem_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
@@ -2060,12 +2340,8 @@
 	DOM_SID group_sid;
 	enum lsa_SidType group_type;
 
-	if (argc != 2 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc group delmem <group> <member>\n"
-			 "  Delete a member from a group\n"
-			 "    group\tGroup to delete member from\n"
-			 "    member\tMember to delete from group\n");
+	if (argc != 2) {
+		d_printf("Usage: 'net rpc group delmem <group> <member>\n");
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
@@ -2076,7 +2352,7 @@
 	}
 
 	if (group_type == SID_NAME_DOM_GRP) {
-		NTSTATUS result = rpc_del_groupmem(c, pipe_hnd, mem_ctx,
+		NTSTATUS result = rpc_del_groupmem(pipe_hnd, mem_ctx,
 						   &group_sid, argv[1]);
 
 		if (!NT_STATUS_IS_OK(result)) {
@@ -2087,7 +2363,7 @@
 	}
 
 	if (group_type == SID_NAME_ALIAS) {
-		NTSTATUS result = rpc_del_aliasmem(pipe_hnd, mem_ctx,
+		NTSTATUS result = rpc_del_aliasmem(pipe_hnd, mem_ctx, 
 						   &group_sid, argv[1]);
 
 		if (!NT_STATUS_IS_OK(result)) {
@@ -2103,18 +2379,18 @@
 	return NT_STATUS_UNSUCCESSFUL;
 }
 
-static int rpc_group_delmem(struct net_context *c, int argc, const char **argv)
+static int rpc_group_delmem(int argc, const char **argv)
 {
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SAMR, 0,
 			       rpc_group_delmem_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * List groups on a remote RPC server.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passes through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -2126,9 +2402,8 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_group_list_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_group_list_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
@@ -2139,49 +2414,37 @@
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	uint32 start_idx=0, max_entries=250, num_entries, i, loop_count = 0;
 	struct samr_SamArray *groups = NULL;
-	bool global = false;
-	bool local = false;
-	bool builtin = false;
+	bool global = False;
+	bool local = False;
+	bool builtin = False;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc group list [global] [local] [builtin]\n"
-			 "  List groups on RPC server\n"
-			 "    global\tList global groups\n"
-			 "    local\tList local groups\n"
-			 "    builtin\tList builtin groups\n"
-			 "    If none of global, local or builtin is "
-			 "specified, all three options are considered set\n");
-		return NT_STATUS_OK;
-	}
-
 	if (argc == 0) {
-		global = true;
-		local = true;
-		builtin = true;
+		global = True;
+		local = True;
+		builtin = True;
 	}
 
 	for (i=0; i<argc; i++) {
 		if (strequal(argv[i], "global"))
-			global = true;
+			global = True;
 
 		if (strequal(argv[i], "local"))
-			local = true;
+			local = True;
 
 		if (strequal(argv[i], "builtin"))
-			builtin = true;
+			builtin = True;
 	}
 
 	/* Get sam policy handle */
 
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
 		goto done;
 	}
-
+	
 	/* Get domain policy handle */
 
 	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
@@ -2194,8 +2457,8 @@
 	}
 
 	/* Query domain groups */
-	if (c->opt_long_list_entries)
-		d_printf("\nGroup name            Comment"
+	if (opt_long_list_entries)
+		d_printf("\nGroup name            Comment"\
 			 "\n-----------------------------\n");
 	do {
 		uint32_t max_size, total_size, returned_size;
@@ -2230,7 +2493,7 @@
 			group = info.info3.entries[i].account_name.string;
 			desc = info.info3.entries[i].description.string;
 
-			if (c->opt_long_list_entries)
+			if (opt_long_list_entries)
 				printf("%-21.21s %-50.50s\n",
 				       group, desc);
 			else
@@ -2256,7 +2519,7 @@
 
 			const char *description = NULL;
 
-			if (c->opt_long_list_entries) {
+			if (opt_long_list_entries) {
 
 				POLICY_HND alias_pol;
 				union samr_AliasInfo *info = NULL;
@@ -2315,7 +2578,7 @@
 
 			const char *description = NULL;
 
-			if (c->opt_long_list_entries) {
+			if (opt_long_list_entries) {
 
 				POLICY_HND alias_pol;
 				union samr_AliasInfo *info = NULL;
@@ -2349,15 +2612,14 @@
 	return result;
 }
 
-static int rpc_group_list(struct net_context *c, int argc, const char **argv)
+static int rpc_group_list(int argc, const char **argv)
 {
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SAMR, 0,
 			       rpc_group_list_internals,
 			       argc, argv);
 }
 
-static NTSTATUS rpc_list_group_members(struct net_context *c,
-					struct rpc_pipe_client *pipe_hnd,
+static NTSTATUS rpc_list_group_members(struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
 					const char *domain_name,
 					const DOM_SID *domain_sid,
@@ -2415,7 +2677,7 @@
 
 		for (i = 0; i < this_time; i++) {
 
-			if (c->opt_long_list_entries) {
+			if (opt_long_list_entries) {
 				printf("%s-%d %s\\%s %d\n", sid_str,
 				       group_rids[i], domain_name,
 				       names.names[i].string,
@@ -2433,8 +2695,7 @@
 	return NT_STATUS_OK;
 }
 
-static NTSTATUS rpc_list_alias_members(struct net_context *c,
-					struct rpc_pipe_client *pipe_hnd,
+static NTSTATUS rpc_list_alias_members(struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
 					POLICY_HND *domain_pol,
 					uint32 rid)
@@ -2474,28 +2735,26 @@
 		return NT_STATUS_OK;
 	}
 
-	result = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(pipe_hnd),
-					  &ndr_table_lsarpc.syntax_id,
-					  &lsa_pipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	lsa_pipe = cli_rpc_pipe_open_noauth(pipe_hnd->cli, PI_LSARPC, &result);
+	if (!lsa_pipe) {
 		d_fprintf(stderr, "Couldn't open LSA pipe. Error was %s\n",
 			nt_errstr(result) );
 		return result;
 	}
 
-	result = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, true,
+	result = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, True,
 				     SEC_RIGHTS_MAXIMUM_ALLOWED, &lsa_pol);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		d_fprintf(stderr, "Couldn't open LSA policy handle\n");
-		TALLOC_FREE(lsa_pipe);
+		cli_rpc_pipe_close(lsa_pipe);
 		return result;
 	}
 
 	alias_sids = TALLOC_ZERO_ARRAY(mem_ctx, DOM_SID, num_members);
 	if (!alias_sids) {
 		d_fprintf(stderr, "Out of memory\n");
-		TALLOC_FREE(lsa_pipe);
+		cli_rpc_pipe_close(lsa_pipe);
 		return NT_STATUS_NO_MEMORY;
 	}
 
@@ -2503,14 +2762,14 @@
 		sid_copy(&alias_sids[i], sid_array.sids[i].sid);
 	}
 
-	result = rpccli_lsa_lookup_sids(lsa_pipe, mem_ctx, &lsa_pol,
-				     num_members,  alias_sids,
+	result = rpccli_lsa_lookup_sids(lsa_pipe, mem_ctx, &lsa_pol, num_members,
+				     alias_sids, 
 				     &domains, &names, &types);
 
 	if (!NT_STATUS_IS_OK(result) &&
 	    !NT_STATUS_EQUAL(result, STATUS_SOME_UNMAPPED)) {
 		d_fprintf(stderr, "Couldn't lookup SIDs\n");
-		TALLOC_FREE(lsa_pipe);
+		cli_rpc_pipe_close(lsa_pipe);
 		return result;
 	}
 
@@ -2518,9 +2777,9 @@
 		fstring sid_str;
 		sid_to_fstring(sid_str, &alias_sids[i]);
 
-		if (c->opt_long_list_entries) {
-			printf("%s %s\\%s %d\n", sid_str,
-			       domains[i] ? domains[i] : "*unknown*",
+		if (opt_long_list_entries) {
+			printf("%s %s\\%s %d\n", sid_str, 
+			       domains[i] ? domains[i] : "*unknown*", 
 			       names[i] ? names[i] : "*unknown*", types[i]);
 		} else {
 			if (domains[i])
@@ -2530,13 +2789,12 @@
 		}
 	}
 
-	TALLOC_FREE(lsa_pipe);
+	cli_rpc_pipe_close(lsa_pipe);
 	return NT_STATUS_OK;
 }
-
-static NTSTATUS rpc_group_members_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+ 
+static NTSTATUS rpc_group_members_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
@@ -2551,13 +2809,13 @@
 	/* Get sam policy handle */
 
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		return result;
-
+	
 	/* Get domain policy handle */
 
 	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
@@ -2618,271 +2876,304 @@
 	}
 
 	if (rid_types.ids[0] == SID_NAME_DOM_GRP) {
-		return rpc_list_group_members(c, pipe_hnd, mem_ctx, domain_name,
+		return rpc_list_group_members(pipe_hnd, mem_ctx, domain_name,
 					      domain_sid, &domain_pol,
 					      rids.ids[0]);
 	}
 
 	if (rid_types.ids[0] == SID_NAME_ALIAS) {
-		return rpc_list_alias_members(c, pipe_hnd, mem_ctx, &domain_pol,
+		return rpc_list_alias_members(pipe_hnd, mem_ctx, &domain_pol,
 					      rids.ids[0]);
 	}
 
 	return NT_STATUS_NO_SUCH_GROUP;
 }
 
-static int rpc_group_members(struct net_context *c, int argc, const char **argv)
+static int rpc_group_members(int argc, const char **argv)
 {
-	if (argc != 1 || c->display_usage) {
-		return rpc_group_usage(c, argc, argv);
+	if (argc != 1) {
+		return rpc_group_usage(argc, argv);
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SAMR, 0,
 			       rpc_group_members_internals,
 			       argc, argv);
 }
 
-static int rpc_group_rename_internals(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_group_rename_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
-	struct GROUP_INFO_0 g0;
-	uint32_t parm_err;
+	NTSTATUS result;
+	POLICY_HND connect_pol, domain_pol, group_pol;
+	union samr_GroupInfo group_info;
+	struct samr_Ids rids, rid_types;
+	struct lsa_String lsa_acct_name;
 
 	if (argc != 2) {
 		d_printf("Usage: 'net rpc group rename group newname'\n");
-		return -1;
+		return NT_STATUS_UNSUCCESSFUL;
 	}
 
-	g0.grpi0_name = argv[1];
+	/* Get sam policy handle */
 
-	status = NetGroupSetInfo(c->opt_host,
-				 argv[0],
-				 0,
-				 (uint8_t *)&g0,
-				 &parm_err);
+	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
+				      pipe_hnd->cli->desthost,
+				      MAXIMUM_ALLOWED_ACCESS,
+				      &connect_pol);
 
-	if (status != 0) {
-		d_fprintf(stderr, "Renaming group %s failed with: %s\n",
-			argv[0], libnetapi_get_error_string(c->netapi_ctx,
-			status));
-		return -1;
+	if (!NT_STATUS_IS_OK(result))
+		return result;
+	
+	/* Get domain policy handle */
+
+	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
+					&connect_pol,
+					MAXIMUM_ALLOWED_ACCESS,
+					CONST_DISCARD(struct dom_sid2 *, domain_sid),
+					&domain_pol);
+
+	if (!NT_STATUS_IS_OK(result))
+		return result;
+
+	init_lsa_String(&lsa_acct_name, argv[0]);
+
+	result = rpccli_samr_LookupNames(pipe_hnd, mem_ctx,
+					 &domain_pol,
+					 1,
+					 &lsa_acct_name,
+					 &rids,
+					 &rid_types);
+
+	if (rids.count != 1) {
+		d_fprintf(stderr, "Couldn't find group %s\n", argv[0]);
+		return result;
 	}
 
-	return 0;
+	if (rid_types.ids[0] != SID_NAME_DOM_GRP) {
+		d_fprintf(stderr, "Can only rename domain groups\n");
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	result = rpccli_samr_OpenGroup(pipe_hnd, mem_ctx,
+				       &domain_pol,
+				       MAXIMUM_ALLOWED_ACCESS,
+				       rids.ids[0],
+				       &group_pol);
+
+	if (!NT_STATUS_IS_OK(result))
+		return result;
+
+	init_lsa_String(&group_info.name, argv[1]);
+
+	result = rpccli_samr_SetGroupInfo(pipe_hnd, mem_ctx,
+					  &group_pol,
+					  2,
+					  &group_info);
+
+	if (!NT_STATUS_IS_OK(result))
+		return result;
+
+	return NT_STATUS_NO_SUCH_GROUP;
 }
 
-static int rpc_group_rename(struct net_context *c, int argc, const char **argv)
+static int rpc_group_rename(int argc, const char **argv)
 {
-	if (argc != 2 || c->display_usage) {
-		return rpc_group_usage(c, argc, argv);
+	if (argc != 2) {
+		return rpc_group_usage(argc, argv);
 	}
 
-	return rpc_group_rename_internals(c, argc, argv);
+	return run_rpc_command(NULL, PI_SAMR, 0,
+			       rpc_group_rename_internals,
+			       argc, argv);
 }
 
-/**
+/** 
  * 'net rpc group' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int net_rpc_group(struct net_context *c, int argc, const char **argv)
+int net_rpc_group(int argc, const char **argv) 
 {
-	NET_API_STATUS status;
-
 	struct functable func[] = {
-		{
-			"add",
-			rpc_group_add,
-			NET_TRANSPORT_RPC,
-			"Create specified group",
-			"net rpc group add\n"
-			"    Create specified group"
-		},
-		{
-			"delete",
-			rpc_group_delete,
-			NET_TRANSPORT_RPC,
-			"Delete specified group",
-			"net rpc group delete\n"
-			"    Delete specified group"
-		},
-		{
-			"addmem",
-			rpc_group_addmem,
-			NET_TRANSPORT_RPC,
-			"Add member to group",
-			"net rpc group addmem\n"
-			"    Add member to group"
-		},
-		{
-			"delmem",
-			rpc_group_delmem,
-			NET_TRANSPORT_RPC,
-			"Remove member from group",
-			"net rpc group delmem\n"
-			"    Remove member from group"
-		},
-		{
-			"list",
-			rpc_group_list,
-			NET_TRANSPORT_RPC,
-			"List groups",
-			"net rpc group list\n"
-			"    List groups"
-		},
-		{
-			"members",
-			rpc_group_members,
-			NET_TRANSPORT_RPC,
-			"List group members",
-			"net rpc group members\n"
-			"    List group members"
-		},
-		{
-			"rename",
-			rpc_group_rename,
-			NET_TRANSPORT_RPC,
-			"Rename group",
-			"net rpc group rename\n"
-			"    Rename group"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"add", rpc_group_add},
+		{"delete", rpc_group_delete},
+		{"addmem", rpc_group_addmem},
+		{"delmem", rpc_group_delmem},
+		{"list", rpc_group_list},
+		{"members", rpc_group_members},
+		{"rename", rpc_group_rename},
+		{NULL, NULL}
 	};
-
-	status = libnetapi_init(&c->netapi_ctx);
-	if (status != 0) {
-		return -1;
-	}
-	libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
-	libnetapi_set_password(c->netapi_ctx, c->opt_password);
-	if (c->opt_kerberos) {
-		libnetapi_set_use_kerberos(c->netapi_ctx);
-	}
-
+	
 	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rpc group\n"
-				 "    Alias for net rpc group list global local "
-				 "builtin\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+		return run_rpc_command(NULL, PI_SAMR, 0, 
 				       rpc_group_list_internals,
 				       argc, argv);
 	}
 
-	return net_run_function(c, argc, argv, "net rpc group", func);
+	return net_run_function(argc, argv, func, rpc_group_usage);
 }
 
 /****************************************************************************/
 
-static int rpc_share_usage(struct net_context *c, int argc, const char **argv)
+static int rpc_share_usage(int argc, const char **argv)
 {
-	return net_share_usage(c, argc, argv);
+	return net_help_share(argc, argv);
 }
 
-/**
+/** 
  * Add a share on a remote RPC server.
  *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return Normal NTSTATUS return.
  **/
-
-static int rpc_share_add(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_share_add_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
+	WERROR result;
+	NTSTATUS status;
 	char *sharename;
 	char *path;
 	uint32 type = STYPE_DISKTREE; /* only allow disk shares to be added */
 	uint32 num_users=0, perms=0;
 	char *password=NULL; /* don't allow a share password */
-	struct SHARE_INFO_2 i2;
+	uint32 level = 2;
+	union srvsvc_NetShareInfo info;
+	struct srvsvc_NetShareInfo2 info2;
 	uint32_t parm_error = 0;
 
-	if ((argc < 1) || !strchr(argv[0], '=') || c->display_usage) {
-		return rpc_share_usage(c, argc, argv);
+	if ((sharename = talloc_strdup(mem_ctx, argv[0])) == NULL) {
+		return NT_STATUS_NO_MEMORY;
 	}
 
-	if ((sharename = talloc_strdup(c, argv[0])) == NULL) {
-		return -1;
-	}
-
 	path = strchr(sharename, '=');
-	if (!path) {
-		return -1;
-	}
-
+	if (!path)
+		return NT_STATUS_UNSUCCESSFUL;
 	*path++ = '\0';
 
-	i2.shi2_netname		= sharename;
-	i2.shi2_type		= type;
-	i2.shi2_remark		= c->opt_comment;
-	i2.shi2_permissions	= perms;
-	i2.shi2_max_uses	= c->opt_maxusers;
-	i2.shi2_current_uses	= num_users;
-	i2.shi2_path		= path;
-	i2.shi2_passwd		= password;
+	info2.name		= sharename;
+	info2.type		= type;
+	info2.comment		= opt_comment;
+	info2.permissions	= perms;
+	info2.max_users		= opt_maxusers;
+	info2.current_users	= num_users;
+	info2.path		= path;
+	info2.password		= password;
 
-	status = NetShareAdd(c->opt_host,
-			     2,
-			     (uint8_t *)&i2,
-			     &parm_error);
-	if (status != 0) {
-		printf("NetShareAdd failed with: %s\n",
-			libnetapi_get_error_string(c->netapi_ctx, status));
-	}
+	info.info2 = &info2;
 
+	status = rpccli_srvsvc_NetShareAdd(pipe_hnd, mem_ctx,
+					   pipe_hnd->cli->desthost,
+					   level,
+					   &info,
+					   &parm_error,
+					   &result);
 	return status;
 }
 
-/**
+static int rpc_share_add(int argc, const char **argv)
+{
+	if ((argc < 1) || !strchr(argv[0], '=')) {
+		DEBUG(1,("Sharename or path not specified on add\n"));
+		return rpc_share_usage(argc, argv);
+	}
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
+			       rpc_share_add_internals,
+			       argc, argv);
+}
+
+/** 
  * Delete a share on a remote RPC server.
  *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
  * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
+ * @return Normal NTSTATUS return.
+ **/
+static NTSTATUS rpc_share_del_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
+{
+	WERROR result;
+
+	return rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx,
+					 pipe_hnd->cli->desthost,
+					 argv[0],
+					 0,
+					 &result);
+}
+
+/** 
+ * Delete a share on a remote RPC server.
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_share_delete(struct net_context *c, int argc, const char **argv)
+static int rpc_share_delete(int argc, const char **argv)
 {
-	if (argc < 1 || c->display_usage) {
-		return rpc_share_usage(c, argc, argv);
+	if (argc < 1) {
+		DEBUG(1,("Sharename not specified on delete\n"));
+		return rpc_share_usage(argc, argv);
 	}
-
-	return NetShareDel(c->opt_host, argv[0], 0);
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
+			       rpc_share_del_internals,
+			       argc, argv);
 }
 
 /**
  * Formatted print of share info
  *
- * @param r  pointer to SHARE_INFO_1 to format
+ * @param info1  pointer to SRV_SHARE_INFO_1 to format
  **/
 
-static void display_share_info_1(struct net_context *c,
-				 struct SHARE_INFO_1 *r)
+static void display_share_info_1(struct srvsvc_NetShareInfo1 *r)
 {
-	if (c->opt_long_list_entries) {
+	if (opt_long_list_entries) {
 		d_printf("%-12s %-8.8s %-50s\n",
-			 r->shi1_netname,
-			 net_share_type_str(r->shi1_type & ~(STYPE_TEMPORARY|STYPE_HIDDEN)),
-			 r->shi1_remark);
+			 r->name,
+			 share_type[r->type & ~(STYPE_TEMPORARY|STYPE_HIDDEN)],
+			 r->comment);
 	} else {
-		d_printf("%s\n", r->shi1_netname);
+		d_printf("%s\n", r->name);
 	}
 }
 
-static WERROR get_share_info(struct net_context *c,
-			     struct rpc_pipe_client *pipe_hnd,
+static WERROR get_share_info(struct rpc_pipe_client *pipe_hnd,
 			     TALLOC_CTX *mem_ctx,
 			     uint32 level,
 			     int argc,
@@ -2903,7 +3194,7 @@
 		info_ctr->level = level;
 
 		status = rpccli_srvsvc_NetShareEnumAll(pipe_hnd, mem_ctx,
-						       pipe_hnd->desthost,
+						       pipe_hnd->cli->desthost,
 						       info_ctr,
 						       preferred_len,
 						       &total_entries,
@@ -2914,7 +3205,7 @@
 
 	/* request just one share */
 	status = rpccli_srvsvc_NetShareGetInfo(pipe_hnd, mem_ctx,
-					       pipe_hnd->desthost,
+					       pipe_hnd->cli->desthost,
 					       argv[0],
 					       level,
 					       &info,
@@ -2971,94 +3262,110 @@
 	return result;
 }
 
-/***
- * 'net rpc share list' entrypoint.
+/** 
+ * List shares on a remote RPC server.
+ *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
+ *
+ * @return Normal NTSTATUS return.
  **/
-static int rpc_share_list(struct net_context *c, int argc, const char **argv)
+
+static NTSTATUS rpc_share_list_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
-	struct SHARE_INFO_1 *i1 = NULL;
-	uint32_t entries_read = 0;
-	uint32_t total_entries = 0;
-	uint32_t resume_handle = 0;
-	uint32_t i, level = 1;
+	struct srvsvc_NetShareInfoCtr info_ctr;
+	struct srvsvc_NetShareCtr1 ctr1;
+	WERROR result;
+	uint32 i, level = 1;
 
-	if (c->display_usage) {
-		d_printf("Usage\n"
-			 "net rpc share list\n"
-			 "    List shares on remote server\n");
-		return 0;
-	}
+	ZERO_STRUCT(info_ctr);
+	ZERO_STRUCT(ctr1);
 
-	status = NetShareEnum(c->opt_host,
-			      level,
-			      (uint8_t **)&i1,
-			      (uint32_t)-1,
-			      &entries_read,
-			      &total_entries,
-			      &resume_handle);
-	if (status != 0) {
+	info_ctr.level = 1;
+	info_ctr.ctr.ctr1 = &ctr1;
+
+	result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &info_ctr);
+	if (!W_ERROR_IS_OK(result))
 		goto done;
-	}
 
 	/* Display results */
 
-	if (c->opt_long_list_entries) {
+	if (opt_long_list_entries) {
 		d_printf(
-	"\nEnumerating shared resources (exports) on remote server:\n\n"
-	"\nShare name   Type     Description\n"
+	"\nEnumerating shared resources (exports) on remote server:\n\n"\
+	"\nShare name   Type     Description\n"\
 	"----------   ----     -----------\n");
 	}
-	for (i = 0; i < entries_read; i++)
-		display_share_info_1(c, &i1[i]);
+	for (i = 0; i < info_ctr.ctr.ctr1->count; i++)
+		display_share_info_1(&info_ctr.ctr.ctr1->array[i]);
  done:
-	return status;
+	return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
 }
 
+/*** 
+ * 'net rpc share list' entrypoint.
+ * @param argc  Standard main() style argc
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ **/
+static int rpc_share_list(int argc, const char **argv)
+{
+	return run_rpc_command(NULL, PI_SRVSVC, 0, rpc_share_list_internals, argc, argv);
+}
+
 static bool check_share_availability(struct cli_state *cli, const char *netname)
 {
 	if (!cli_send_tconX(cli, netname, "A:", "", 0)) {
 		d_printf("skipping   [%s]: not a file share.\n", netname);
-		return false;
+		return False;
 	}
 
-	if (!cli_tdis(cli))
-		return false;
+	if (!cli_tdis(cli)) 
+		return False;
 
-	return true;
+	return True;
 }
 
-static bool check_share_sanity(struct net_context *c, struct cli_state *cli,
-			       const char *netname, uint32 type)
+static bool check_share_sanity(struct cli_state *cli, const char *netname, uint32 type)
 {
 	/* only support disk shares */
 	if (! ( type == STYPE_DISKTREE || type == (STYPE_DISKTREE | STYPE_HIDDEN)) ) {
 		printf("share [%s] is not a diskshare (type: %x)\n", netname, type);
-		return false;
+		return False;
 	}
 
 	/* skip builtin shares */
 	/* FIXME: should print$ be added too ? */
-	if (strequal(netname,"IPC$") || strequal(netname,"ADMIN$") ||
-	    strequal(netname,"global"))
-		return false;
+	if (strequal(netname,"IPC$") || strequal(netname,"ADMIN$") || 
+	    strequal(netname,"global")) 
+		return False;
 
-	if (c->opt_exclude && in_list(netname, c->opt_exclude, false)) {
+	if (opt_exclude && in_list(netname, opt_exclude, False)) {
 		printf("excluding  [%s]\n", netname);
-		return false;
+		return False;
 	}
 
 	return check_share_availability(cli, netname);
 }
 
-/**
+/** 
  * Migrate shares from a remote RPC server to the local RPC server.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -3070,12 +3377,11 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_share_migrate_shares_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_share_migrate_shares_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -3088,14 +3394,12 @@
 	uint32 level = 502; /* includes secdesc */
 	uint32_t parm_error = 0;
 
-	result = get_share_info(c, pipe_hnd, mem_ctx, level, argc, argv,
-				&ctr_src);
+	result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src);
 	if (!W_ERROR_IS_OK(result))
 		goto done;
 
 	/* connect destination PI_SRVSVC */
-        nt_status = connect_dst_pipe(c, &cli_dst, &srvsvc_pipe,
-				     &ndr_table_srvsvc.syntax_id);
+        nt_status = connect_dst_pipe(&cli_dst, &srvsvc_pipe, PI_SRVSVC);
         if (!NT_STATUS_IS_OK(nt_status))
                 return nt_status;
 
@@ -3109,10 +3413,10 @@
 		/* reset error-code */
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 
-		if (!check_share_sanity(c, cli, info502.name, info502.type))
+		if (!check_share_sanity(cli, info502.name, info502.type))
 			continue;
 
-		/* finally add the share on the dst server */
+		/* finally add the share on the dst server */ 
 
 		printf("migrating: [%s], path: %s, comment: %s, without share-ACLs\n", 
 			info502.name, info502.path, info502.comment);
@@ -3120,7 +3424,7 @@
 		info.info502 = &info502;
 
 		nt_status = rpccli_srvsvc_NetShareAdd(srvsvc_pipe, mem_ctx,
-						      srvsvc_pipe->desthost,
+						      srvsvc_pipe->cli->desthost,
 						      502,
 						      &info,
 						      &parm_error,
@@ -3150,8 +3454,8 @@
 
 }
 
-/**
- * Migrate shares from a RPC server to another.
+/** 
+ * Migrate shares from a rpc-server to another.
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
@@ -3159,49 +3463,38 @@
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_share_migrate_shares(struct net_context *c, int argc,
-				    const char **argv)
+static int rpc_share_migrate_shares(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc share migrate shares\n"
-			 "    Migrate shares to local server\n");
-		return 0;
-	}
 
-	if (!c->opt_host) {
+	if (!opt_host) {
 		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
 			       rpc_share_migrate_shares_internals,
 			       argc, argv);
 }
 
 /**
- * Copy a file/dir
+ * Copy a file/dir 
  *
  * @param f	file_info
  * @param mask	current search mask
  * @param state	arg-pointer
  *
  **/
-static void copy_fn(const char *mnt, file_info *f,
-		    const char *mask, void *state)
+static void copy_fn(const char *mnt, file_info *f, const char *mask, void *state)
 {
 	static NTSTATUS nt_status;
 	static struct copy_clistate *local_state;
 	static fstring filename, new_mask;
 	fstring dir;
 	char *old_dir;
-	struct net_context *c;
 
 	local_state = (struct copy_clistate *)state;
 	nt_status = NT_STATUS_UNSUCCESSFUL;
 
-	c = local_state->c;
-
 	if (strequal(f->name, ".") || strequal(f->name, ".."))
 		return;
 
@@ -3220,22 +3513,22 @@
 		{
 		case NET_MODE_SHARE_MIGRATE:
 			/* create that directory */
-			nt_status = net_copy_file(c, local_state->mem_ctx,
+			nt_status = net_copy_file(local_state->mem_ctx,
 						  local_state->cli_share_src,
 						  local_state->cli_share_dst,
 						  dir, dir,
-						  c->opt_acls? true : false,
-						  c->opt_attrs? true : false,
-						  c->opt_timestamps? true:false,
-						  false);
+						  opt_acls? True : False,
+						  opt_attrs? True : False,
+						  opt_timestamps? True : False,
+						  False);
 			break;
 		default:
 			d_fprintf(stderr, "Unsupported mode %d\n", net_mode_share);
 			return;
 		}
 
-		if (!NT_STATUS_IS_OK(nt_status))
-			printf("could not handle dir %s: %s\n",
+		if (!NT_STATUS_IS_OK(nt_status)) 
+			printf("could not handle dir %s: %s\n", 
 				dir, nt_errstr(nt_status));
 
 		/* search below that directory */
@@ -3262,29 +3555,29 @@
 	switch (net_mode_share)
 	{
 	case NET_MODE_SHARE_MIGRATE:
-		nt_status = net_copy_file(c, local_state->mem_ctx,
-					  local_state->cli_share_src,
-					  local_state->cli_share_dst,
-					  filename, filename,
-					  c->opt_acls? true : false,
-					  c->opt_attrs? true : false,
-					  c->opt_timestamps? true: false,
-					  true);
+		nt_status = net_copy_file(local_state->mem_ctx, 
+					  local_state->cli_share_src, 
+					  local_state->cli_share_dst, 
+					  filename, filename, 
+					  opt_acls? True : False, 
+					  opt_attrs? True : False,
+					  opt_timestamps? True: False,
+					  True);
 		break;
 	default:
 		d_fprintf(stderr, "Unsupported file mode %d\n", net_mode_share);
 		return;
 	}
 
-	if (!NT_STATUS_IS_OK(nt_status))
-		printf("could not handle file %s: %s\n",
+	if (!NT_STATUS_IS_OK(nt_status)) 
+		printf("could not handle file %s: %s\n", 
 			filename, nt_errstr(nt_status));
 
 }
 
 /**
- * sync files, can be called recursivly to list files
- * and then call copy_fn for each file
+ * sync files, can be called recursivly to list files 
+ * and then call copy_fn for each file 
  *
  * @param cp_clistate	pointer to the copy_clistate we work with
  * @param mask		the current search mask
@@ -3302,16 +3595,16 @@
 				mask, &targetcli, &targetpath ) ) {
 		d_fprintf(stderr, "cli_resolve_path %s failed with error: %s\n", 
 			mask, cli_errstr(cp_clistate->cli_share_src));
-		return false;
+		return False;
 	}
 
 	if (cli_list(targetcli, targetpath, cp_clistate->attribute, copy_fn, cp_clistate) == -1) {
-		d_fprintf(stderr, "listing %s failed with error: %s\n",
+		d_fprintf(stderr, "listing %s failed with error: %s\n", 
 			mask, cli_errstr(targetcli));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 
@@ -3320,8 +3613,7 @@
  * Should set up ACL inheritance.
  **/
 
-bool copy_top_level_perms(struct net_context *c,
-				struct copy_clistate *cp_clistate,
+bool copy_top_level_perms(struct copy_clistate *cp_clistate, 
 				const char *sharename)
 {
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
@@ -3329,15 +3621,14 @@
 	switch (net_mode_share) {
 	case NET_MODE_SHARE_MIGRATE:
 		DEBUG(3,("calling net_copy_fileattr for '.' directory in share %s\n", sharename));
-		nt_status = net_copy_fileattr(c,
-						cp_clistate->mem_ctx,
-						cp_clistate->cli_share_src,
+		nt_status = net_copy_fileattr(cp_clistate->mem_ctx,
+						cp_clistate->cli_share_src, 
 						cp_clistate->cli_share_dst,
 						"\\", "\\",
-						c->opt_acls? true : false,
-						c->opt_attrs? true : false,
-						c->opt_timestamps? true: false,
-						false);
+						opt_acls? True : False, 
+						opt_attrs? True : False,
+						opt_timestamps? True: False,
+						False);
 		break;
 	default:
 		d_fprintf(stderr, "Unsupported mode %d\n", net_mode_share);
@@ -3347,17 +3638,17 @@
 	if (!NT_STATUS_IS_OK(nt_status))  {
 		printf("Could handle directory attributes for top level directory of share %s. Error %s\n", 
 			sharename, nt_errstr(nt_status));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
-/**
+/** 
  * Sync all files inside a remote share to another share (over smb).
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -3369,9 +3660,8 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_share_migrate_files_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_share_migrate_files_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
 						TALLOC_CTX *mem_ctx,
@@ -3384,19 +3674,18 @@
 	uint32 i;
 	uint32 level = 502;
 	struct copy_clistate cp_clistate;
-	bool got_src_share = false;
-	bool got_dst_share = false;
+	bool got_src_share = False;
+	bool got_dst_share = False;
 	const char *mask = "\\*";
 	char *dst = NULL;
 
-	dst = SMB_STRDUP(c->opt_destination?c->opt_destination:"127.0.0.1");
+	dst = SMB_STRDUP(opt_destination?opt_destination:"127.0.0.1");
 	if (dst == NULL) {
 		nt_status = NT_STATUS_NO_MEMORY;
 		goto done;
 	}
 
-	result = get_share_info(c, pipe_hnd, mem_ctx, level, argc, argv,
-				&ctr_src);
+	result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src);
 
 	if (!W_ERROR_IS_OK(result))
 		goto done;
@@ -3406,7 +3695,7 @@
 		struct srvsvc_NetShareInfo502 info502 =
 			ctr_src.ctr.ctr502->array[i];
 
-		if (!check_share_sanity(c, cli, info502.name, info502.type))
+		if (!check_share_sanity(cli, info502.name, info502.type))
 			continue;
 
 		/* one might not want to mirror whole discs :) */
@@ -3426,37 +3715,36 @@
 		}
 		printf("    [%s] files and directories %s ACLs, %s DOS Attributes %s\n", 
 			info502.name,
-			c->opt_acls ? "including" : "without",
-			c->opt_attrs ? "including" : "without",
-			c->opt_timestamps ? "(preserving timestamps)" : "");
+			opt_acls ? "including" : "without", 
+			opt_attrs ? "including" : "without",
+			opt_timestamps ? "(preserving timestamps)" : "");
 
 		cp_clistate.mem_ctx = mem_ctx;
 		cp_clistate.cli_share_src = NULL;
 		cp_clistate.cli_share_dst = NULL;
 		cp_clistate.cwd = NULL;
 		cp_clistate.attribute = aSYSTEM | aHIDDEN | aDIR;
-		cp_clistate.c = c;
 
 	        /* open share source */
-		nt_status = connect_to_service(c, &cp_clistate.cli_share_src,
+		nt_status = connect_to_service(&cp_clistate.cli_share_src,
 					       &cli->dest_ss, cli->desthost,
 					       info502.name, "A:");
 		if (!NT_STATUS_IS_OK(nt_status))
 			goto done;
 
-		got_src_share = true;
+		got_src_share = True;
 
 		if (net_mode_share == NET_MODE_SHARE_MIGRATE) {
 			/* open share destination */
-			nt_status = connect_to_service(c, &cp_clistate.cli_share_dst,
+			nt_status = connect_to_service(&cp_clistate.cli_share_dst,
 						       NULL, dst, info502.name, "A:");
 			if (!NT_STATUS_IS_OK(nt_status))
 				goto done;
 
-			got_dst_share = true;
+			got_dst_share = True;
 		}
 
-		if (!copy_top_level_perms(c, &cp_clistate, info502.name)) {
+		if (!copy_top_level_perms(&cp_clistate, info502.name)) {
 			d_fprintf(stderr, "Could not handle the top level directory permissions for the share: %s\n", info502.name);
 			nt_status = NT_STATUS_UNSUCCESSFUL;
 			goto done;
@@ -3484,30 +3772,24 @@
 
 }
 
-static int rpc_share_migrate_files(struct net_context *c, int argc, const char **argv)
+static int rpc_share_migrate_files(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net share migrate files\n"
-			 "    Migrate files to local server\n");
-		return 0;
-	}
 
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
 			       rpc_share_migrate_files_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Migrate share-ACLs from a remote RPC server to the local RPC server.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -3519,12 +3801,11 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_share_migrate_security_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_share_migrate_security_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -3538,15 +3819,13 @@
 	uint32 level = 502; /* includes secdesc */
 	uint32_t parm_error = 0;
 
-	result = get_share_info(c, pipe_hnd, mem_ctx, level, argc, argv,
-				&ctr_src);
+	result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src);
 
 	if (!W_ERROR_IS_OK(result))
 		goto done;
 
 	/* connect destination PI_SRVSVC */
-        nt_status = connect_dst_pipe(c, &cli_dst, &srvsvc_pipe,
-				     &ndr_table_srvsvc.syntax_id);
+        nt_status = connect_dst_pipe(&cli_dst, &srvsvc_pipe, PI_SRVSVC);
         if (!NT_STATUS_IS_OK(nt_status))
                 return nt_status;
 
@@ -3559,13 +3838,13 @@
 		/* reset error-code */
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 
-		if (!check_share_sanity(c, cli, info502.name, info502.type))
+		if (!check_share_sanity(cli, info502.name, info502.type))
 			continue;
 
 		printf("migrating: [%s], path: %s, comment: %s, including share-ACLs\n", 
 			info502.name, info502.path, info502.comment);
 
-		if (c->opt_verbose)
+		if (opt_verbose)
 			display_sec_desc(info502.sd_buf.sd);
 
 		/* FIXME: shouldn't we be able to just set the security descriptor ? */
@@ -3573,7 +3852,7 @@
 
 		/* finally modify the share on the dst server */
 		nt_status = rpccli_srvsvc_NetShareSetInfo(srvsvc_pipe, mem_ctx,
-							  srvsvc_pipe->desthost,
+							  srvsvc_pipe->cli->desthost,
 							  info502.name,
 							  level,
 							  &info,
@@ -3597,130 +3876,84 @@
 
 }
 
-/**
- * Migrate share-acls from a RPC server to another.
+/** 
+ * Migrate share-acls from a rpc-server to another.
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return A shell status integer (0 for success)
  **/
-static int rpc_share_migrate_security(struct net_context *c, int argc,
-				      const char **argv)
+static int rpc_share_migrate_security(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc share migrate security\n"
-			 "    Migrate share-acls to local server\n");
-		return 0;
-	}
 
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
 			       rpc_share_migrate_security_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Migrate shares (including share-definitions, share-acls and files with acls/attrs)
- * from one server to another.
+ * from one server to another
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success).
+ * @return A shell status integer (0 for success)
  *
  **/
-static int rpc_share_migrate_all(struct net_context *c, int argc,
-				 const char **argv)
+static int rpc_share_migrate_all(int argc, const char **argv)
 {
 	int ret;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc share migrate all\n"
-			 "    Migrates shares including all share settings\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
 	/* order is important. we don't want to be locked out by the share-acl
 	 * before copying files - gd */
-
-	ret = run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
-			      rpc_share_migrate_shares_internals, argc, argv);
+	
+	ret = run_rpc_command(NULL, PI_SRVSVC, 0, rpc_share_migrate_shares_internals, argc, argv);
 	if (ret)
 		return ret;
 
-	ret = run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
-			      rpc_share_migrate_files_internals, argc, argv);
+	ret = run_rpc_command(NULL, PI_SRVSVC, 0, rpc_share_migrate_files_internals, argc, argv);
 	if (ret)
 		return ret;
-
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
-			       rpc_share_migrate_security_internals, argc,
-			       argv);
+	
+	return run_rpc_command(NULL, PI_SRVSVC, 0, rpc_share_migrate_security_internals, argc, argv);
 }
 
 
-/**
+/** 
  * 'net rpc share migrate' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
-static int rpc_share_migrate(struct net_context *c, int argc, const char **argv)
+static int rpc_share_migrate(int argc, const char **argv)
 {
 
 	struct functable func[] = {
-		{
-			"all",
-			rpc_share_migrate_all,
-			NET_TRANSPORT_RPC,
-			"Migrate shares from remote to local server",
-			"net rpc share migrate all\n"
-			"    Migrate shares from remote to local server"
-		},
-		{
-			"files",
-			rpc_share_migrate_files,
-			NET_TRANSPORT_RPC,
-			"Migrate files from remote to local server",
-			"net rpc share migrate files\n"
-			"    Migrate files from remote to local server"
-		},
-		{
-			"security",
-			rpc_share_migrate_security,
-			NET_TRANSPORT_RPC,
-			"Migrate share-ACLs from remote to local server",
-			"net rpc share migrate security\n"
-			"    Migrate share-ACLs from remote to local server"
-		},
-		{
-			"shares",
-			rpc_share_migrate_shares,
-			NET_TRANSPORT_RPC,
-			"Migrate shares from remote to local server",
-			"net rpc share migrate shares\n"
-			"    Migrate shares from remote to local server"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"all", 	rpc_share_migrate_all},
+		{"files", 	rpc_share_migrate_files},
+		{"help",	rpc_share_usage},
+		{"security", 	rpc_share_migrate_security},
+		{"shares", 	rpc_share_migrate_shares},
+		{NULL, NULL}
 	};
 
 	net_mode_share = NET_MODE_SHARE_MIGRATE;
 
-	return net_run_function(c, argc, argv, "net rpc share migrate", func);
+	return net_run_function(argc, argv, func, rpc_share_usage);
 }
 
 struct full_alias {
@@ -3835,12 +4068,11 @@
  * Dump server_aliases as names for debugging purposes.
  */
 
-static NTSTATUS rpc_aliaslist_dump(struct net_context *c,
-				const DOM_SID *domain_sid,
+static NTSTATUS rpc_aliaslist_dump(const DOM_SID *domain_sid,
 				const char *domain_name,
 				struct cli_state *cli,
 				struct rpc_pipe_client *pipe_hnd,
-				TALLOC_CTX *mem_ctx,
+				TALLOC_CTX *mem_ctx, 
 				int argc,
 				const char **argv)
 {
@@ -3848,7 +4080,7 @@
 	NTSTATUS result;
 	POLICY_HND lsa_pol;
 
-	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, true,
+	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, True, 
 				     SEC_RIGHTS_MAXIMUM_ALLOWED,
 				     &lsa_pol);
 	if (!NT_STATUS_IS_OK(result))
@@ -3901,12 +4133,11 @@
  * server_aliases.
  */
 
-static NTSTATUS rpc_aliaslist_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_aliaslist_internals(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv)
 {
@@ -3914,19 +4145,19 @@
 	POLICY_HND connect_pol;
 
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
-
+	
 	result = rpc_fetch_domain_aliases(pipe_hnd, mem_ctx, &connect_pol,
 					  &global_sid_Builtin);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
-
+	
 	result = rpc_fetch_domain_aliases(pipe_hnd, mem_ctx, &connect_pol,
 					  domain_sid);
 
@@ -3962,9 +4193,9 @@
 
 	for (i=0; i<token->num_sids; i++) {
 		if (sid_compare(sid, &token->user_sids[i]) == 0)
-			return true;
+			return True;
 	}
-	return false;
+	return False;
 }
 
 static void add_sid_to_token(NT_USER_TOKEN *token, DOM_SID *sid)
@@ -4004,10 +4235,10 @@
 
 	for (i=0; i<alias->num_members; i++) {
 		if (sid_compare(sid, &alias->members[i]) == 0)
-			return true;
+			return True;
 	}
 
-	return false;
+	return False;
 }
 
 static void collect_sid_memberships(NT_USER_TOKEN *token, DOM_SID sid)
@@ -4118,13 +4349,12 @@
 
 	return true;
 }
-
+	
 /**
  * Get a list of all user tokens we want to look at
  **/
 
-static bool get_user_tokens(struct net_context *c, int *num_tokens,
-			    struct user_token **user_tokens)
+static bool get_user_tokens(int *num_tokens, struct user_token **user_tokens)
 {
 	wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
 	uint32_t i, num_users;
@@ -4133,7 +4363,7 @@
 	TALLOC_CTX *frame = NULL;
 
 	if (lp_winbind_use_default_domain() &&
-	    (c->opt_target_workgroup == NULL)) {
+	    (opt_target_workgroup == NULL)) {
 		d_fprintf(stderr, "winbind use default domain = yes set, "
 			 "please specify a workgroup\n");
 		return false;
@@ -4168,7 +4398,7 @@
 		DEBUG(3, ("%s\n", users[i]));
 
 		if (p == NULL) {
-			fstrcpy(domain, c->opt_target_workgroup);
+			fstrcpy(domain, opt_target_workgroup);
 			fstrcpy(user, users[i]);
 		} else {
 			*p++ = '\0';
@@ -4199,7 +4429,7 @@
 		fstring line;
 
 		if (fgets(line, sizeof(line)-1, f) == NULL) {
-			return true;
+			return True;
 		}
 
 		if (line[strlen(line)-1] == '\n')
@@ -4213,7 +4443,7 @@
 
 			if (token == NULL) {
 				DEBUG(0, ("File does not begin with username"));
-				return false;
+				return False;
 			}
 
 			add_sid_to_token(&token->token, &sid);
@@ -4226,7 +4456,7 @@
 		*tokens = SMB_REALLOC_ARRAY(*tokens, struct user_token, *num_tokens);
 		if (*tokens == NULL) {
 			DEBUG(0, ("Could not realloc tokens\n"));
-			return false;
+			return False;
 		}
 
 		token = &((*tokens)[*num_tokens-1]);
@@ -4237,7 +4467,7 @@
 		continue;
 	}
 	
-	return false;
+	return False;
 }
 
 
@@ -4254,7 +4484,7 @@
 	int fnum;
 	SEC_DESC *share_sd = NULL;
 	SEC_DESC *root_sd = NULL;
-	struct cli_state *cli = rpc_pipe_np_smb_conn(pipe_hnd);
+	struct cli_state *cli = pipe_hnd->cli;
 	int i;
 	union srvsvc_NetShareInfo info;
 	WERROR result;
@@ -4262,7 +4492,7 @@
 	uint16 cnum;
 
 	status = rpccli_srvsvc_NetShareGetInfo(pipe_hnd, mem_ctx,
-					       pipe_hnd->desthost,
+					       pipe_hnd->cli->desthost,
 					       netname,
 					       502,
 					       &info,
@@ -4356,11 +4586,16 @@
 	share_list->shares[share_list->num_shares-1] = SMB_STRDUP(name);
 }
 
-/**
+static void rpc_share_userlist_usage(void)
+{
+	return;
+}
+	
+/** 
  * List shares on a remote RPC server, including the security descriptors.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
@@ -4372,8 +4607,7 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_share_allowedusers_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
+static NTSTATUS rpc_share_allowedusers_internals(const DOM_SID *domain_sid,
 						const char *domain_name,
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
@@ -4392,6 +4626,11 @@
 
 	struct share_list share_list;
 
+	if (argc > 1) {
+		rpc_share_userlist_usage();
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
 	if (argc == 0) {
 		f = stdin;
 	} else {
@@ -4450,47 +4689,39 @@
 	return NT_STATUS_OK;
 }
 
-static int rpc_share_allowedusers(struct net_context *c, int argc,
-				  const char **argv)
+static int rpc_share_allowedusers(int argc, const char **argv)
 {
 	int result;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc share allowedusers\n"
-			 "    List allowed users\n");
-		return 0;
-	}
-
-	result = run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+	result = run_rpc_command(NULL, PI_SAMR, 0,
 				 rpc_aliaslist_internals,
 				 argc, argv);
 	if (result != 0)
 		return result;
 
-	result = run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	result = run_rpc_command(NULL, PI_LSARPC, 0,
 				 rpc_aliaslist_dump,
 				 argc, argv);
 	if (result != 0)
 		return result;
 
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_SRVSVC, 0,
 			       rpc_share_allowedusers_internals,
 			       argc, argv);
 }
 
-int net_usersidlist(struct net_context *c, int argc, const char **argv)
+int net_usersidlist(int argc, const char **argv)
 {
 	int num_tokens = 0;
 	struct user_token *tokens = NULL;
 	int i;
 
 	if (argc != 0) {
-		net_usersidlist_usage(c, argc, argv);
+		net_usersidlist_usage(argc, argv);
 		return 0;
 	}
 
-	if (!get_user_tokens(c, &num_tokens, &tokens)) {
+	if (!get_user_tokens(&num_tokens, &tokens)) {
 		DEBUG(0, ("Could not get the user/sid list\n"));
 		return 0;
 	}
@@ -4504,117 +4735,63 @@
 	return 1;
 }
 
-int net_usersidlist_usage(struct net_context *c, int argc, const char **argv)
+int net_usersidlist_usage(int argc, const char **argv)
 {
 	d_printf("net usersidlist\n"
 		 "\tprints out a list of all users the running winbind knows\n"
 		 "\tabout, together with all their SIDs. This is used as\n"
 		 "\tinput to the 'net rpc share allowedusers' command.\n\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
-/**
+/** 
  * 'net rpc share' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int net_rpc_share(struct net_context *c, int argc, const char **argv)
+int net_rpc_share(int argc, const char **argv) 
 {
-	NET_API_STATUS status;
-
 	struct functable func[] = {
-		{
-			"add",
-			rpc_share_add,
-			NET_TRANSPORT_RPC,
-			"Add share",
-			"net rpc share add\n"
-			"    Add share"
-		},
-		{
-			"delete",
-			rpc_share_delete,
-			NET_TRANSPORT_RPC,
-			"Remove share",
-			"net rpc share delete\n"
-			"    Remove share"
-		},
-		{
-			"allowedusers",
-			rpc_share_allowedusers,
-			NET_TRANSPORT_RPC,
-			"Modify allowed users",
-			"net rpc share allowedusers\n"
-			"    Modify allowed users"
-		},
-		{
-			"migrate",
-			rpc_share_migrate,
-			NET_TRANSPORT_RPC,
-			"Migrate share to local server",
-			"net rpc share migrate\n"
-			"    Migrate share to local server"
-		},
-		{
-			"list",
-			rpc_share_list,
-			NET_TRANSPORT_RPC,
-			"List shares",
-			"net rpc share list\n"
-			"    List shares"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"add", rpc_share_add},
+		{"delete", rpc_share_delete},
+		{"allowedusers", rpc_share_allowedusers},
+		{"migrate", rpc_share_migrate},
+		{"list", rpc_share_list},
+		{NULL, NULL}
 	};
 
-	status = libnetapi_init(&c->netapi_ctx);
-	if (status != 0) {
-		return -1;
-	}
-	libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
-	libnetapi_set_password(c->netapi_ctx, c->opt_password);
-	if (c->opt_kerberos) {
-		libnetapi_set_use_kerberos(c->netapi_ctx);
-	}
+	if (argc == 0)
+		return run_rpc_command(NULL, PI_SRVSVC, 0, 
+				       rpc_share_list_internals,
+				       argc, argv);
 
-	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n"
-				 "net rpc share\n"
-				 "    List shares\n"
-				 "    Alias for net rpc share list\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		return rpc_share_list(c, argc, argv);
-	}
-
-	return net_run_function(c, argc, argv, "net rpc share", func);
+	return net_run_function(argc, argv, func, rpc_share_usage);
 }
 
-static NTSTATUS rpc_sh_share_list(struct net_context *c,
-				  TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_share_list(TALLOC_CTX *mem_ctx,
 				  struct rpc_sh_ctx *ctx,
 				  struct rpc_pipe_client *pipe_hnd,
 				  int argc, const char **argv)
 {
-
-	return werror_to_ntstatus(W_ERROR(rpc_share_list(c, argc, argv)));
+	return rpc_share_list_internals(ctx->domain_sid, ctx->domain_name,
+					ctx->cli, pipe_hnd, mem_ctx,
+					argc, argv);
 }
 
-static NTSTATUS rpc_sh_share_add(struct net_context *c,
-				 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_share_add(TALLOC_CTX *mem_ctx,
 				 struct rpc_sh_ctx *ctx,
 				 struct rpc_pipe_client *pipe_hnd,
 				 int argc, const char **argv)
 {
-	NET_API_STATUS status;
+	WERROR result;
+	NTSTATUS status;
 	uint32_t parm_err = 0;
-	struct SHARE_INFO_2 i2;
+	union srvsvc_NetShareInfo info;
+	struct srvsvc_NetShareInfo2 info2;
 
 	if ((argc < 2) || (argc > 3)) {
 		d_fprintf(stderr, "usage: %s <share> <path> [comment]\n",
@@ -4622,39 +4799,50 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	i2.shi2_netname		= argv[0];
-	i2.shi2_type		= STYPE_DISKTREE;
-	i2.shi2_remark		= (argc == 3) ? argv[2] : "";
-	i2.shi2_permissions	= 0;
-	i2.shi2_max_uses	= 0;
-	i2.shi2_current_uses	= 0;
-	i2.shi2_path		= argv[1];
-	i2.shi2_passwd		= NULL;
+	info2.name		= argv[0];
+	info2.type		= STYPE_DISKTREE;
+	info2.comment		= (argc == 3) ? argv[2] : "";
+	info2.permissions	= 0;
+	info2.max_users		= 0;
+	info2.current_users	= 0;
+	info2.path		= argv[1];
+	info2.password		= NULL;
 
-	status = NetShareAdd(pipe_hnd->desthost,
-			     2,
-			     (uint8_t *)&i2,
-			     &parm_err);
+	info.info2 = &info2;
 
-	return werror_to_ntstatus(W_ERROR(status));
+	status = rpccli_srvsvc_NetShareAdd(pipe_hnd, mem_ctx,
+					   pipe_hnd->cli->desthost,
+					   2,
+					   &info,
+					   &parm_err,
+					   &result);
+
+	return status;
 }
 
-static NTSTATUS rpc_sh_share_delete(struct net_context *c,
-				    TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_share_delete(TALLOC_CTX *mem_ctx,
 				    struct rpc_sh_ctx *ctx,
 				    struct rpc_pipe_client *pipe_hnd,
 				    int argc, const char **argv)
 {
+	WERROR result;
+	NTSTATUS status;
+
 	if (argc != 1) {
 		d_fprintf(stderr, "usage: %s <share>\n", ctx->whoami);
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	return werror_to_ntstatus(W_ERROR(NetShareDel(pipe_hnd->desthost, argv[0], 0)));
+	status = rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx,
+					   pipe_hnd->cli->desthost,
+					   argv[0],
+					   0,
+					   &result);
+
+	return status;
 }
 
-static NTSTATUS rpc_sh_share_info(struct net_context *c,
-				  TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_share_info(TALLOC_CTX *mem_ctx,
 				  struct rpc_sh_ctx *ctx,
 				  struct rpc_pipe_client *pipe_hnd,
 				  int argc, const char **argv)
@@ -4669,7 +4857,7 @@
 	}
 
 	status = rpccli_srvsvc_NetShareGetInfo(pipe_hnd, mem_ctx,
-					       pipe_hnd->desthost,
+					       pipe_hnd->cli->desthost,
 					       argv[0],
 					       2,
 					       &info,
@@ -4687,21 +4875,21 @@
 	return werror_to_ntstatus(result);
 }
 
-struct rpc_sh_cmd *net_rpc_share_cmds(struct net_context *c, TALLOC_CTX *mem_ctx,
+struct rpc_sh_cmd *net_rpc_share_cmds(TALLOC_CTX *mem_ctx,
 				      struct rpc_sh_ctx *ctx)
 {
 	static struct rpc_sh_cmd cmds[] = {
 
-	{ "list", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_list,
+	{ "list", NULL, PI_SRVSVC, rpc_sh_share_list,
 	  "List available shares" },
 
-	{ "add", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_add,
+	{ "add", NULL, PI_SRVSVC, rpc_sh_share_add,
 	  "Add a share" },
 
-	{ "delete", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_delete,
+	{ "delete", NULL, PI_SRVSVC, rpc_sh_share_delete,
 	  "Delete a share" },
 
-	{ "info", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_info,
+	{ "info", NULL, PI_SRVSVC, rpc_sh_share_info,
 	  "Get information about a share" },
 
 	{ NULL, NULL, 0, NULL, NULL }
@@ -4712,171 +4900,194 @@
 
 /****************************************************************************/
 
-static int rpc_file_usage(struct net_context *c, int argc, const char **argv)
+static int rpc_file_usage(int argc, const char **argv)
 {
-	return net_file_usage(c, argc, argv);
+	return net_help_file(argc, argv);
 }
 
-/**
+/** 
  * Close a file on a remote RPC server.
  *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
+ * @return Normal NTSTATUS return.
+ **/
+static NTSTATUS rpc_file_close_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
+{
+	return rpccli_srvsvc_NetFileClose(pipe_hnd, mem_ctx, 
+					    pipe_hnd->cli->desthost, 
+					    atoi(argv[0]), NULL);
+}
+
+/** 
+ * Close a file on a remote RPC server.
+ *
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_file_close(struct net_context *c, int argc, const char **argv)
+static int rpc_file_close(int argc, const char **argv)
 {
-	if (argc < 1 || c->display_usage) {
-		return rpc_file_usage(c, argc, argv);
+	if (argc < 1) {
+		DEBUG(1, ("No fileid given on close\n"));
+		return(rpc_file_usage(argc, argv));
 	}
 
-	return NetFileClose(c->opt_host, atoi(argv[0]));
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
+			       rpc_file_close_internals,
+			       argc, argv);
 }
 
-/**
- * Formatted print of open file info
+/** 
+ * Formatted print of open file info 
  *
- * @param r  struct FILE_INFO_3 contents
+ * @param r  struct srvsvc_NetFileInfo3 contents
  **/
 
-static void display_file_info_3(struct FILE_INFO_3 *r)
+static void display_file_info_3(struct srvsvc_NetFileInfo3 *r)
 {
 	d_printf("%-7.1d %-20.20s 0x%-4.2x %-6.1d %s\n",
-		 r->fi3_id, r->fi3_username, r->fi3_permissions,
-		 r->fi3_num_locks, r->fi3_pathname);
+		 r->fid, r->user, r->permissions, r->num_locks, r->path);
 }
 
-/**
- * List files for a user on a remote RPC server.
+/** 
+ * List open files on a remote RPC server.
  *
+ * All parameters are provided by the run_rpc_command function, except for
+ * argc, argv which are passed through. 
+ *
+ * @param domain_sid The domain sid acquired from the remote server.
+ * @param cli A cli_state connected to the server.
+ * @param mem_ctx Talloc context, destroyed on completion of the function.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
- * @return A shell status integer (0 for success)..
+ * @return Normal NTSTATUS return.
  **/
 
-static int rpc_file_user(struct net_context *c, int argc, const char **argv)
+static NTSTATUS rpc_file_list_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
+					struct cli_state *cli,
+					struct rpc_pipe_client *pipe_hnd,
+					TALLOC_CTX *mem_ctx,
+					int argc,
+					const char **argv)
 {
-	NET_API_STATUS status;
+	struct srvsvc_NetFileInfoCtr info_ctr;
+	struct srvsvc_NetFileCtr3 ctr3;
+	WERROR result;
+	NTSTATUS status;
 	uint32 preferred_len = 0xffffffff, i;
 	const char *username=NULL;
 	uint32_t total_entries = 0;
-	uint32_t entries_read = 0;
 	uint32_t resume_handle = 0;
-	struct FILE_INFO_3 *i3 = NULL;
 
-	if (c->display_usage) {
-		return rpc_file_usage(c, argc, argv);
-	}
-
 	/* if argc > 0, must be user command */
-	if (argc > 0) {
+	if (argc > 0)
 		username = smb_xstrdup(argv[0]);
-	}
 
-	status = NetFileEnum(c->opt_host,
-			     NULL,
-			     username,
-			     3,
-			     (uint8_t **)&i3,
-			     preferred_len,
-			     &entries_read,
-			     &total_entries,
-			     &resume_handle);
+	ZERO_STRUCT(info_ctr);
+	ZERO_STRUCT(ctr3);
 
-	if (status != 0) {
+	info_ctr.level = 3;
+	info_ctr.ctr.ctr3 = &ctr3;
+
+	status = rpccli_srvsvc_NetFileEnum(pipe_hnd, mem_ctx,
+					   pipe_hnd->cli->desthost,
+					   NULL,
+					   username,
+					   &info_ctr,
+					   preferred_len,
+					   &total_entries,
+					   &resume_handle,
+					   &result);
+
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result))
 		goto done;
-	}
 
 	/* Display results */
 
 	d_printf(
-		 "\nEnumerating open files on remote server:\n\n"
-		 "\nFileId  Opened by            Perms  Locks  Path"
+		 "\nEnumerating open files on remote server:\n\n"\
+		 "\nFileId  Opened by            Perms  Locks  Path"\
 		 "\n------  ---------            -----  -----  ---- \n");
-	for (i = 0; i < entries_read; i++) {
-		display_file_info_3(&i3[i]);
-	}
+	for (i = 0; i < total_entries; i++)
+		display_file_info_3(&info_ctr.ctr.ctr3->array[i]);
  done:
-	return status;
+	return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
 }
 
-/**
- * 'net rpc file' entrypoint.
+/** 
+ * List files for a user on a remote RPC server.
+ *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
+ *
+ * @return A shell status integer (0 for success).
  **/
 
-int net_rpc_file(struct net_context *c, int argc, const char **argv)
+static int rpc_file_user(int argc, const char **argv)
 {
-	NET_API_STATUS status;
+	if (argc < 1) {
+		DEBUG(1, ("No username given\n"));
+		return(rpc_file_usage(argc, argv));
+	}
 
+	return run_rpc_command(NULL, PI_SRVSVC, 0, 
+			       rpc_file_list_internals,
+			       argc, argv);
+}
+
+/** 
+ * 'net rpc file' entrypoint.
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ **/
+
+int net_rpc_file(int argc, const char **argv) 
+{
 	struct functable func[] = {
-		{
-			"close",
-			rpc_file_close,
-			NET_TRANSPORT_RPC,
-			"Close opened file",
-			"net rpc file close\n"
-			"    Close opened file"
-		},
-		{
-			"user",
-			rpc_file_user,
-			NET_TRANSPORT_RPC,
-			"List files opened by user",
-			"net rpc file user\n"
-			"    List files opened by user"
-		},
+		{"close", rpc_file_close},
+		{"user", rpc_file_user},
 #if 0
-		{
-			"info",
-			rpc_file_info,
-			NET_TRANSPORT_RPC,
-			"Display information about opened file",
-			"net rpc file info\n"
-			"    Display information about opened file"
-		},
+		{"info", rpc_file_info},
 #endif
-		{NULL, NULL, 0, NULL, NULL}
+		{NULL, NULL}
 	};
 
-	status = libnetapi_init(&c->netapi_ctx);
-	if (status != 0) {
-		return -1;
-	}
-	libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
-	libnetapi_set_password(c->netapi_ctx, c->opt_password);
-	if (c->opt_kerberos) {
-		libnetapi_set_use_kerberos(c->netapi_ctx);
-	}
+	if (argc == 0)
+		return run_rpc_command(NULL, PI_SRVSVC, 0, 
+				       rpc_file_list_internals,
+				       argc, argv);
 
-	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rpc file\n"
-				 "    List opened files\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-
-		return rpc_file_user(c, argc, argv);
-	}
-
-	return net_run_function(c, argc, argv, "net rpc file", func);
+	return net_run_function(argc, argv, func, rpc_file_usage);
 }
 
-/**
+/** 
  * ABORT the shutdown of a remote RPC Server, over initshutdown pipe.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure.
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
@@ -4887,35 +5098,33 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_shutdown_abort_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
-					struct cli_state *cli,
+static NTSTATUS rpc_shutdown_abort_internals(const DOM_SID *domain_sid, 
+					const char *domain_name, 
+					struct cli_state *cli, 
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
-					const char **argv)
+					const char **argv) 
 {
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
+	
 	result = rpccli_initshutdown_Abort(pipe_hnd, mem_ctx, NULL, NULL);
-
+	
 	if (NT_STATUS_IS_OK(result)) {
 		d_printf("\nShutdown successfully aborted\n");
 		DEBUG(5,("cmd_shutdown_abort: query succeeded\n"));
 	} else
 		DEBUG(5,("cmd_shutdown_abort: query failed\n"));
-
+	
 	return result;
 }
 
-/**
+/** 
  * ABORT the shutdown of a remote RPC Server, over winreg pipe.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure.
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
@@ -4926,30 +5135,29 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS rpc_reg_shutdown_abort_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
+static NTSTATUS rpc_reg_shutdown_abort_internals(const DOM_SID *domain_sid, 
+						const char *domain_name, 
+						struct cli_state *cli, 
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
-						const char **argv)
+						const char **argv) 
 {
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
+	
 	result = rpccli_winreg_AbortSystemShutdown(pipe_hnd, mem_ctx, NULL, NULL);
-
+	
 	if (NT_STATUS_IS_OK(result)) {
 		d_printf("\nShutdown successfully aborted\n");
 		DEBUG(5,("cmd_reg_abort_shutdown: query succeeded\n"));
 	} else
 		DEBUG(5,("cmd_reg_abort_shutdown: query failed\n"));
-
+	
 	return result;
 }
 
-/**
- * ABORT the shutdown of a remote RPC server.
+/** 
+ * ABORT the Shut down of a remote RPC server.
  *
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
@@ -4958,38 +5166,28 @@
  * @return A shell status integer (0 for success).
  **/
 
-static int rpc_shutdown_abort(struct net_context *c, int argc,
-			      const char **argv)
+static int rpc_shutdown_abort(int argc, const char **argv) 
 {
-	int rc = -1;
+	int rc = run_rpc_command(NULL, PI_INITSHUTDOWN, 0, 
+				 rpc_shutdown_abort_internals,
+				 argc, argv);
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc abortshutdown\n"
-			 "    Abort a scheduled shutdown\n");
-		return 0;
-	}
-
-	rc = run_rpc_command(c, NULL, &ndr_table_initshutdown.syntax_id, 0,
-			     rpc_shutdown_abort_internals, argc, argv);
-
 	if (rc == 0)
 		return rc;
 
 	DEBUG(1, ("initshutdown pipe didn't work, trying winreg pipe\n"));
 
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command(NULL, PI_WINREG, 0, 
 			       rpc_reg_shutdown_abort_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Shut down a remote RPC Server via initshutdown pipe.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure.
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
@@ -5000,14 +5198,13 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_init_shutdown_internals(struct net_context *c,
-				     const DOM_SID *domain_sid,
-				     const char *domain_name,
-				     struct cli_state *cli,
-				     struct rpc_pipe_client *pipe_hnd,
-				     TALLOC_CTX *mem_ctx,
-				     int argc,
-				     const char **argv)
+NTSTATUS rpc_init_shutdown_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
+						struct cli_state *cli, 
+						struct rpc_pipe_client *pipe_hnd,
+						TALLOC_CTX *mem_ctx, 
+						int argc,
+						const char **argv) 
 {
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
         const char *msg = "This machine will be shutdown shortly";
@@ -5015,11 +5212,11 @@
 	struct initshutdown_String msg_string;
 	struct initshutdown_String_sub s;
 
-	if (c->opt_comment) {
-		msg = c->opt_comment;
+	if (opt_comment) {
+		msg = opt_comment;
 	}
-	if (c->opt_timeout) {
-		timeout = c->opt_timeout;
+	if (opt_timeout) {
+		timeout = opt_timeout;
 	}
 
 	s.name = msg;
@@ -5027,8 +5224,7 @@
 
 	/* create an entry */
 	result = rpccli_initshutdown_Init(pipe_hnd, mem_ctx, NULL,
-			&msg_string, timeout, c->opt_force, c->opt_reboot,
-			NULL);
+			&msg_string, timeout, opt_force, opt_reboot, NULL);
 
 	if (NT_STATUS_IS_OK(result)) {
 		d_printf("\nShutdown of remote machine succeeded\n");
@@ -5039,13 +5235,12 @@
 	return result;
 }
 
-/**
+/** 
  * Shut down a remote RPC Server via winreg pipe.
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure.
  * @param domain_sid The domain sid acquired from the remote server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
@@ -5056,14 +5251,13 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_reg_shutdown_internals(struct net_context *c,
-				    const DOM_SID *domain_sid,
-				    const char *domain_name,
-				    struct cli_state *cli,
-				    struct rpc_pipe_client *pipe_hnd,
-				    TALLOC_CTX *mem_ctx,
-				    int argc,
-				    const char **argv)
+NTSTATUS rpc_reg_shutdown_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
+						struct cli_state *cli, 
+						struct rpc_pipe_client *pipe_hnd,
+						TALLOC_CTX *mem_ctx, 
+						int argc,
+						const char **argv) 
 {
         const char *msg = "This machine will be shutdown shortly";
 	uint32 timeout = 20;
@@ -5072,20 +5266,19 @@
 	NTSTATUS result;
 	WERROR werr;
 
-	if (c->opt_comment) {
-		msg = c->opt_comment;
+	if (opt_comment) {
+		msg = opt_comment;
 	}
 	s.name = msg;
 	msg_string.name = &s;
 
-	if (c->opt_timeout) {
-		timeout = c->opt_timeout;
+	if (opt_timeout) {
+		timeout = opt_timeout;
 	}
 
 	/* create an entry */
 	result = rpccli_winreg_InitiateSystemShutdown(pipe_hnd, mem_ctx, NULL,
-			&msg_string, timeout, c->opt_force, c->opt_reboot,
-			&werr);
+			&msg_string, timeout, opt_force, opt_reboot, &werr);
 
 	if (NT_STATUS_IS_OK(result)) {
 		d_printf("\nShutdown of remote machine succeeded\n");
@@ -5100,7 +5293,7 @@
 	return result;
 }
 
-/**
+/** 
  * Shut down a remote RPC server.
  *
  * @param argc  Standard main() style argc.
@@ -5110,23 +5303,15 @@
  * @return A shell status integer (0 for success).
  **/
 
-static int rpc_shutdown(struct net_context *c, int argc, const char **argv)
+static int rpc_shutdown(int argc, const char **argv) 
 {
-	int rc =  -1;
+	int rc = run_rpc_command(NULL, PI_INITSHUTDOWN, 0, 
+				 rpc_init_shutdown_internals,
+				 argc, argv);
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc shutdown\n"
-			 "    Shut down a remote RPC server\n");
-		return 0;
-	}
-
-	rc = run_rpc_command(c, NULL, &ndr_table_initshutdown.syntax_id, 0,
-			     rpc_init_shutdown_internals, argc, argv);
-
 	if (rc) {
 		DEBUG(1, ("initshutdown pipe failed, trying winreg pipe\n"));
-		rc = run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+		rc = run_rpc_command(NULL, PI_WINREG, 0, 
 				     rpc_reg_shutdown_internals, argc, argv);
 	}
 
@@ -5135,6 +5320,7 @@
 
 /***************************************************************************
   NT Domain trusts code (i.e. 'net rpc trustdom' functionality)
+  
  ***************************************************************************/
 
 /**
@@ -5142,7 +5328,6 @@
  * All parameters (except for argc and argv) are passed by run_rpc_command
  * function.
  *
- * @param c	A net_context structure.
  * @param domain_sid The domain sid acquired from the server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
@@ -5153,12 +5338,11 @@
  * @return normal NTSTATUS return code.
  */
 
-static NTSTATUS rpc_trustdom_add_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_trustdom_add_internals(const DOM_SID *domain_sid, 
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -5174,8 +5358,7 @@
 	unsigned int orig_timeout;
 
 	if (argc != 2) {
-		d_printf("Usage: net rpc trustdom add <domain_name> "
-			 "<trust password>\n");
+		d_printf("Usage: net rpc trustdom add <domain_name> <trust password>\n");
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
@@ -5193,7 +5376,7 @@
 
 	/* Get samr policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -5213,7 +5396,7 @@
         /* This call can take a long time - allow the server to time out.
 	 * 35 seconds should do it. */
 
-        orig_timeout = rpccli_set_timeout(pipe_hnd, 35000);
+        orig_timeout = cli_set_timeout(pipe_hnd->cli, 35000);
 
 	/* Create trusting domain's account */
 	acb_info = ACB_NORMAL;
@@ -5233,7 +5416,7 @@
 					 &user_rid);
 
 	/* And restore our original timeout. */
-	rpccli_set_timeout(pipe_hnd, orig_timeout);
+	cli_set_timeout(pipe_hnd->cli, orig_timeout);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		d_printf("net rpc trustdom add: create user %s failed %s\n",
@@ -5246,8 +5429,10 @@
 		struct samr_LogonHours hours;
 		struct lsa_BinaryString parameters;
 		const int units_per_week = 168;
-		struct samr_CryptPassword crypt_pwd;
+		uchar pwbuf[516];
 
+		encode_pw_buffer(pwbuf, argv[1], STR_UNICODE);
+
 		ZERO_STRUCT(notime);
 		ZERO_STRUCT(hours);
 		ZERO_STRUCT(parameters);
@@ -5260,10 +5445,6 @@
 		hours.units_per_week = units_per_week;
 		memset(hours.bits, 0xFF, units_per_week);
 
-		init_samr_CryptPassword(argv[1],
-					&cli->user_session_key,
-					&crypt_pwd);
-
 		init_samr_user_info23(&info.info23,
 				      notime, notime, notime,
 				      notime, notime, notime,
@@ -5272,8 +5453,11 @@
 				      0, 0, ACB_DOMTRUST, SAMR_FIELD_ACCT_FLAGS,
 				      hours,
 				      0, 0, 0, 0, 0, 0, 0,
-				      crypt_pwd.data, 24);
+				      pwbuf, 24);
 
+		SamOEMhashBlob(info.info23.password.data, 516,
+			       &cli->user_session_key);
+
 		result = rpccli_samr_SetUserInfo2(pipe_hnd, mem_ctx,
 						  &user_pol,
 						  23,
@@ -5297,17 +5481,16 @@
  * @param argc Standard argc.
  * @param argv Standard argv without initial components.
  *
- * @return Integer status (0 means success).
+ * @return Integer status (0 means success)
  **/
 
-static int rpc_trustdom_add(struct net_context *c, int argc, const char **argv)
+static int rpc_trustdom_add(int argc, const char **argv)
 {
-	if (argc > 0 && !c->display_usage) {
-		return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
-				       rpc_trustdom_add_internals, argc, argv);
+	if (argc > 0) {
+		return run_rpc_command(NULL, PI_SAMR, 0, rpc_trustdom_add_internals,
+		                       argc, argv);
 	} else {
-		d_printf("Usage:\n"
-			"net rpc trustdom add <domain_name> <trust password>\n");
+		d_printf("Usage: net rpc trustdom add <domain_name> <trust password>\n");
 		return -1;
 	}
 }
@@ -5318,7 +5501,6 @@
  * All parameters (except for argc and argv) are passed by run_rpc_command
  * function.
  *
- * @param c	A net_context structure.
  * @param domain_sid The domain sid acquired from the server.
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destroyed on completion of the function.
@@ -5329,12 +5511,11 @@
  * @return normal NTSTATUS return code.
  */
 
-static NTSTATUS rpc_trustdom_del_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_trustdom_del_internals(const DOM_SID *domain_sid, 
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv)
 {
@@ -5350,7 +5531,7 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	/*
+	/* 
 	 * Make valid trusting domain account (ie. uppercased and with '$' appended)
 	 */
 	acct_name = talloc_asprintf(mem_ctx, "%s$", argv[0]);
@@ -5362,7 +5543,7 @@
 
 	/* Get samr policy handle */
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -5453,20 +5634,18 @@
  * @return Integer status (0 means success).
  **/
 
-static int rpc_trustdom_del(struct net_context *c, int argc, const char **argv)
+static int rpc_trustdom_del(int argc, const char **argv)
 {
-	if (argc > 0 && !c->display_usage) {
-		return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
-				       rpc_trustdom_del_internals, argc, argv);
+	if (argc > 0) {
+		return run_rpc_command(NULL, PI_SAMR, 0, rpc_trustdom_del_internals,
+		                       argc, argv);
 	} else {
-		d_printf("Usage:\n"
-			 "net rpc trustdom del <domain>\n");
+		d_printf("Usage: net rpc trustdom del <domain>\n");
 		return -1;
 	}
 }
 
-static NTSTATUS rpc_trustdom_get_pdc(struct net_context *c,
-				     struct cli_state *cli,
+static NTSTATUS rpc_trustdom_get_pdc(struct cli_state *cli,
 				     TALLOC_CTX *mem_ctx,
 				     const char *domain_name)
 {
@@ -5487,9 +5666,8 @@
 
 	/* Try netr_GetDcName */
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
-					  &netr);
-	if (!NT_STATUS_IS_OK(status)) {
+	netr = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &status);
+	if (!netr) {
 		return status;
 	}
 
@@ -5498,7 +5676,7 @@
 				       domain_name,
 				       &buffer,
 				       NULL);
-	TALLOC_FREE(netr);
+	cli_rpc_pipe_close(netr);
 
 	if (NT_STATUS_IS_OK(status)) {
 		return status;
@@ -5514,15 +5692,13 @@
  * Establish trust relationship to a trusting domain.
  * Interdomain account must already be created on remote PDC.
  *
- * @param c    A net_context structure.
  * @param argc Standard argc.
  * @param argv Standard argv without initial components.
  *
  * @return Integer status (0 means success).
  **/
 
-static int rpc_trustdom_establish(struct net_context *c, int argc,
-				  const char **argv)
+static int rpc_trustdom_establish(int argc, const char **argv)
 {
 	struct cli_state *cli = NULL;
 	struct sockaddr_storage server_ss;
@@ -5541,9 +5717,8 @@
 	 * Connect to \\server\ipc$ as 'our domain' account with password
 	 */
 
-	if (argc != 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc trustdom establish <domain_name>\n");
+	if (argc != 1) {
+		d_printf("Usage: net rpc trustdom establish <domain_name>\n");
 		return -1;
 	}
 
@@ -5558,11 +5733,11 @@
 	 * opt_workgroup will be used by connection functions further,
 	 * hence it should be set to remote domain name instead of ours
 	 */
-	if (c->opt_workgroup) {
-		c->opt_workgroup = smb_xstrdup(domain_name);
+	if (opt_workgroup) {
+		opt_workgroup = smb_xstrdup(domain_name);
 	};
 
-	c->opt_user_name = acct_name;
+	opt_user_name = acct_name;
 
 	/* find the domain controller */
 	if (!net_find_pdc(&server_ss, pdc_name, domain_name)) {
@@ -5571,7 +5746,7 @@
 	}
 
 	/* connect to ipc$ as username/password */
-	nt_status = connect_to_ipc(c, &cli, &server_ss, pdc_name);
+	nt_status = connect_to_ipc(&cli, &server_ss, pdc_name);
 	if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT)) {
 
 		/* Is it trusting domain account for sure ? */
@@ -5588,8 +5763,7 @@
 	 * Connect to \\server\ipc$ again (this time anonymously)
 	 */
 
-	nt_status = connect_to_ipc_anonymous(c, &cli, &server_ss,
-					     (char*)pdc_name);
+	nt_status = connect_to_ipc_anonymous(&cli, &server_ss, (char*)pdc_name);
 
 	if (NT_STATUS_IS_ERR(nt_status)) {
 		DEBUG(0, ("Couldn't connect to domain %s controller. Error was %s.\n",
@@ -5606,7 +5780,7 @@
 
 	/* Make sure we're talking to a proper server */
 
-	nt_status = rpc_trustdom_get_pdc(c, cli, mem_ctx, domain_name);
+	nt_status = rpc_trustdom_get_pdc(cli, mem_ctx, domain_name);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		cli_shutdown(cli);
 		talloc_destroy(mem_ctx);
@@ -5616,17 +5790,16 @@
 	/*
 	 * Call LsaOpenPolicy and LsaQueryInfo
 	 */
-
-	nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					     &pipe_hnd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	 
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &nt_status);
+	if (!pipe_hnd) {
 		DEBUG(0, ("Could not initialise lsa pipe. Error was %s\n", nt_errstr(nt_status) ));
 		cli_shutdown(cli);
 		talloc_destroy(mem_ctx);
 		return -1;
 	}
 
-	nt_status = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, true, SEC_RIGHTS_QUERY_VALUE,
+	nt_status = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, True, SEC_RIGHTS_QUERY_VALUE,
 	                                 &connect_hnd);
 	if (NT_STATUS_IS_ERR(nt_status)) {
 		DEBUG(0, ("Couldn't open policy handle. Error was %s\n",
@@ -5654,22 +5827,22 @@
 
 	/* There should be actually query info level 3 (following nt serv behaviour),
 	   but I still don't know if it's _really_ necessary */
-
+			
 	/*
 	 * Store the password in secrets db
 	 */
 
-	if (!pdb_set_trusteddom_pw(domain_name, c->opt_password, domain_sid)) {
+	if (!pdb_set_trusteddom_pw(domain_name, opt_password, domain_sid)) {
 		DEBUG(0, ("Storing password for trusted domain failed.\n"));
 		cli_shutdown(cli);
 		talloc_destroy(mem_ctx);
 		return -1;
 	}
-
+	
 	/*
 	 * Close the pipes and clean up
 	 */
-
+	 
 	nt_status = rpccli_lsa_Close(pipe_hnd, mem_ctx, &connect_hnd);
 	if (NT_STATUS_IS_ERR(nt_status)) {
 		DEBUG(0, ("Couldn't close LSA pipe. Error was %s\n",
@@ -5680,9 +5853,9 @@
 	}
 
 	cli_shutdown(cli);
-
+	 
 	talloc_destroy(mem_ctx);
-
+	 
 	d_printf("Trust to domain %s established\n", domain_name);
 	return 0;
 }
@@ -5690,27 +5863,19 @@
 /**
  * Revoke trust relationship to the remote domain.
  *
- * @param c    A net_context structure.
  * @param argc Standard argc.
  * @param argv Standard argv without initial components.
  *
  * @return Integer status (0 means success).
  **/
 
-static int rpc_trustdom_revoke(struct net_context *c, int argc,
-			       const char **argv)
+static int rpc_trustdom_revoke(int argc, const char **argv)
 {
 	char* domain_name;
 	int rc = -1;
 
-	if (argc < 1 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc trustdom revoke <domain_name>\n"
-			 "  Revoke trust relationship\n"
-			 "    domain_name\tName of domain to revoke trust\n");
-		return -1;
-	}
-
+	if (argc < 1) return -1;
+	
 	/* generate upper cased domain name */
 	domain_name = smb_xstrdup(argv[0]);
 	strupper_m(domain_name);
@@ -5721,16 +5886,36 @@
 			  domain_name));
 		goto done;
 	};
-
+	
 	rc = 0;
 done:
 	SAFE_FREE(domain_name);
 	return rc;
 }
 
-static NTSTATUS rpc_query_domain_sid(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+/**
+ * Usage for 'net rpc trustdom' command
+ *
+ * @param argc standard argc
+ * @param argv standard argv without inital components
+ *
+ * @return Integer status returned to shell
+ **/
+ 
+static int rpc_trustdom_usage(int argc, const char **argv)
+{
+	d_printf("  net rpc trustdom add \t\t add trusting domain's account\n");
+	d_printf("  net rpc trustdom del \t\t delete trusting domain's account\n");
+	d_printf("  net rpc trustdom establish \t establish relationship to trusted domain\n");
+	d_printf("  net rpc trustdom revoke \t abandon relationship to trusted domain\n");
+	d_printf("  net rpc trustdom list \t show current interdomain trust relationships\n");
+	d_printf("  net rpc trustdom vampire \t vampire interdomain trust relationships from remote server\n");
+	return -1;
+}
+
+
+static NTSTATUS rpc_query_domain_sid(const DOM_SID *domain_sid, 
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
@@ -5755,20 +5940,19 @@
 	pad_len = col_len - strlen(trusted_dom_name);
 	padding[pad_len] = 0;
 	do padding[--pad_len] = ' '; while (pad_len);
-
+			
 	d_printf("%s%s%s\n", trusted_dom_name, padding, ascii_sid);
 }
 
 static NTSTATUS vampire_trusted_domain(struct rpc_pipe_client *pipe_hnd,
-				      TALLOC_CTX *mem_ctx,
-				      POLICY_HND *pol,
-				      DOM_SID dom_sid,
+				      TALLOC_CTX *mem_ctx, 
+				      POLICY_HND *pol, 
+				      DOM_SID dom_sid, 
 				      const char *trusted_dom_name)
 {
 	NTSTATUS nt_status;
 	union lsa_TrustedDomainInfo *info = NULL;
 	char *cleartextpwd = NULL;
-	uint8_t nt_hash[16];
 	DATA_BLOB data;
 
 	nt_status = rpccli_lsa_QueryTrustedDomainInfoBySid(pipe_hnd, mem_ctx,
@@ -5785,19 +5969,15 @@
 	data = data_blob(info->password.password->data,
 			 info->password.password->length);
 
-	if (!rpccli_get_pwd_hash(pipe_hnd, nt_hash)) {
-		DEBUG(0, ("Could not retrieve password hash\n"));
-		goto done;
-	}
+	cleartextpwd = decrypt_trustdom_secret(pipe_hnd->cli->pwd.password,
+					       &data);
 
-	cleartextpwd = decrypt_trustdom_secret(nt_hash, &data);
-
 	if (cleartextpwd == NULL) {
 		DEBUG(0,("retrieved NULL password\n"));
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
-
+	
 	if (!pdb_set_trusteddom_pw(trusted_dom_name, cleartextpwd, &dom_sid)) {
 		DEBUG(0, ("Storing password for trusted domain failed.\n"));
 		nt_status = NT_STATUS_UNSUCCESSFUL;
@@ -5817,8 +5997,7 @@
 	return nt_status;
 }
 
-static int rpc_trustdom_vampire(struct net_context *c, int argc,
-				const char **argv)
+static int rpc_trustdom_vampire(int argc, const char **argv)
 {
 	/* common variables */
 	TALLOC_CTX* mem_ctx;
@@ -5836,13 +6015,6 @@
 	struct lsa_DomainList dom_list;
 	fstring pdc_name;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc trustdom vampire\n"
-			 "  Vampire trust relationship from remote server\n");
-		return 0;
-	}
-
 	/*
 	 * Listing trusted domains (stored in secrets.tdb, if local)
 	 */
@@ -5854,17 +6026,17 @@
 	 * or to remote one given in command line
 	 */
 
-	if (StrCaseCmp(c->opt_workgroup, lp_workgroup())) {
-		domain_name = c->opt_workgroup;
-		c->opt_target_workgroup = c->opt_workgroup;
+	if (StrCaseCmp(opt_workgroup, lp_workgroup())) {
+		domain_name = opt_workgroup;
+		opt_target_workgroup = opt_workgroup;
 	} else {
 		fstrcpy(pdc_name, global_myname());
 		domain_name = talloc_strdup(mem_ctx, lp_workgroup());
-		c->opt_target_workgroup = domain_name;
+		opt_target_workgroup = domain_name;
 	};
 
 	/* open \PIPE\lsarpc and open policy handle */
-	nt_status = net_make_ipc_connection(c, NET_FLAGS_PDC, &cli);
+	nt_status = net_make_ipc_connection(NET_FLAGS_PDC, &cli);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(0, ("Couldn't connect to domain controller: %s\n",
 			  nt_errstr(nt_status)));
@@ -5872,9 +6044,8 @@
 		return -1;
 	};
 
-	nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					     &pipe_hnd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &nt_status);
+	if (!pipe_hnd) {
 		DEBUG(0, ("Could not initialise lsa pipe. Error was %s\n",
 			nt_errstr(nt_status) ));
 		cli_shutdown(cli);
@@ -5882,7 +6053,7 @@
 		return -1;
 	};
 
-	nt_status = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, false, SEC_RIGHTS_QUERY_VALUE,
+	nt_status = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, False, SEC_RIGHTS_QUERY_VALUE,
 					&connect_hnd);
 	if (NT_STATUS_IS_ERR(nt_status)) {
 		DEBUG(0, ("Couldn't open policy handle. Error was %s\n",
@@ -5965,11 +6136,11 @@
 	/* close lsarpc pipe and connection to IPC$ */
 	cli_shutdown(cli);
 
-	talloc_destroy(mem_ctx);
+	talloc_destroy(mem_ctx);	 
 	return 0;
 }
 
-static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
+static int rpc_trustdom_list(int argc, const char **argv)
 {
 	/* common variables */
 	TALLOC_CTX* mem_ctx;
@@ -5993,13 +6164,6 @@
 	POLICY_HND domain_hnd;
 	struct samr_SamArray *trusts = NULL;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc trustdom list\n"
-			 "    List trust relationships\n");
-		return 0;
-	}
-
 	/*
 	 * Listing trusted domains (stored in secrets.tdb, if local)
 	 */
@@ -6010,18 +6174,18 @@
 	 * set domain and pdc name to local samba server (default)
 	 * or to remote one given in command line
 	 */
-
-	if (StrCaseCmp(c->opt_workgroup, lp_workgroup())) {
-		domain_name = c->opt_workgroup;
-		c->opt_target_workgroup = c->opt_workgroup;
+	
+	if (StrCaseCmp(opt_workgroup, lp_workgroup())) {
+		domain_name = opt_workgroup;
+		opt_target_workgroup = opt_workgroup;
 	} else {
 		fstrcpy(pdc_name, global_myname());
 		domain_name = talloc_strdup(mem_ctx, lp_workgroup());
-		c->opt_target_workgroup = domain_name;
+		opt_target_workgroup = domain_name;
 	};
 
 	/* open \PIPE\lsarpc and open policy handle */
-	nt_status = net_make_ipc_connection(c, NET_FLAGS_PDC, &cli);
+	nt_status = net_make_ipc_connection(NET_FLAGS_PDC, &cli);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(0, ("Couldn't connect to domain controller: %s\n",
 			  nt_errstr(nt_status)));
@@ -6029,9 +6193,8 @@
 		return -1;
 	};
 
-	nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					     &pipe_hnd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &nt_status);
+	if (!pipe_hnd) {
 		DEBUG(0, ("Could not initialise lsa pipe. Error was %s\n",
 			nt_errstr(nt_status) ));
 		cli_shutdown(cli);
@@ -6039,7 +6202,7 @@
 		return -1;
 	};
 
-	nt_status = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, false, SEC_RIGHTS_QUERY_VALUE,
+	nt_status = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, False, SEC_RIGHTS_QUERY_VALUE,
 					&connect_hnd);
 	if (NT_STATUS_IS_ERR(nt_status)) {
 		DEBUG(0, ("Couldn't open policy handle. Error was %s\n",
@@ -6109,7 +6272,7 @@
 		return -1;
 	};
 	
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 
 	/*
 	 * Listing trusting domains (stored in passdb backend, if local)
@@ -6120,9 +6283,8 @@
 	/*
 	 * Open \PIPE\samr and get needed policy handles
 	 */
-	nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
-					     &pipe_hnd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &nt_status);
+	if (!pipe_hnd) {
 		DEBUG(0, ("Could not initialise samr pipe. Error was %s\n", nt_errstr(nt_status)));
 		cli_shutdown(cli);
 		talloc_destroy(mem_ctx);
@@ -6131,7 +6293,7 @@
 
 	/* SamrConnect2 */
 	nt_status = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-					 pipe_hnd->desthost,
+					 pipe_hnd->cli->desthost,
 					 SA_RIGHT_SAM_OPEN_DOMAIN,
 					 &connect_hnd);
 	if (!NT_STATUS_IS_OK(nt_status)) {
@@ -6156,11 +6318,11 @@
 		talloc_destroy(mem_ctx);
 		return -1;
 	};
-
+	
 	/*
 	 * perform actual enumeration
 	 */
-
+	 
 	enum_ctx = 0;	/* reset enumeration context from last enumeration */
 	do {
 
@@ -6201,35 +6363,31 @@
 
 			/* set opt_* variables to remote domain */
 			strupper_m(str);
-			c->opt_workgroup = talloc_strdup(mem_ctx, str);
-			c->opt_target_workgroup = c->opt_workgroup;
+			opt_workgroup = talloc_strdup(mem_ctx, str);
+			opt_target_workgroup = opt_workgroup;
 
 			d_printf("%s%s", str, padding);
 
 			/* connect to remote domain controller */
-			nt_status = net_make_ipc_connection(c,
+			nt_status = net_make_ipc_connection(
 					NET_FLAGS_PDC | NET_FLAGS_ANONYMOUS,
 					&remote_cli);
 			if (NT_STATUS_IS_OK(nt_status)) {
 				/* query for domain's sid */
-				if (run_rpc_command(
-					    c, remote_cli,
-					    &ndr_table_lsarpc.syntax_id, 0,
-					    rpc_query_domain_sid, argc,
-					    argv))
+				if (run_rpc_command(remote_cli, PI_LSARPC, 0, rpc_query_domain_sid, argc, argv))
 					d_fprintf(stderr, "couldn't get domain's sid\n");
 
 				cli_shutdown(remote_cli);
-
+			
 			} else {
 				d_fprintf(stderr, "domain controller is not "
 					  "responding: %s\n",
 					  nt_errstr(nt_status));
 			};
 		};
-
+		
 		if (!num_domains) d_printf("none\n");
-
+		
 	} while (NT_STATUS_EQUAL(nt_status, STATUS_MORE_ENTRIES));
 
 	/* close opened samr and domain policy handles */
@@ -6237,16 +6395,16 @@
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(0, ("Couldn't properly close domain policy handle for domain %s\n", domain_name));
 	};
-
+	
 	nt_status = rpccli_samr_Close(pipe_hnd, mem_ctx, &connect_hnd);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(0, ("Couldn't properly close samr policy handle for domain %s\n", domain_name));
 	};
-
+	
 	/* close samr pipe and connection to IPC$ */
 	cli_shutdown(cli);
 
-	talloc_destroy(mem_ctx);
+	talloc_destroy(mem_ctx);	 
 	return 0;
 }
 
@@ -6259,61 +6417,25 @@
  * @return Integer status (0 means success).
  */
 
-static int rpc_trustdom(struct net_context *c, int argc, const char **argv)
+static int rpc_trustdom(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"add",
-			rpc_trustdom_add,
-			NET_TRANSPORT_RPC,
-			"Add trusted domain's account",
-			"net rpc trustdom add\n"
-			"    Add trusted domain's account"
-		},
-		{
-			"del",
-			rpc_trustdom_del,
-			NET_TRANSPORT_RPC,
-			"Remove trusted domain's account",
-			"net rpc trustdom del\n"
-			"    Remove trusted domain's account"
-		},
-		{
-			"establish",
-			rpc_trustdom_establish,
-			NET_TRANSPORT_RPC,
-			"Establish trust relationship",
-			"net rpc trustdom establish\n"
-			"    Establish trust relationship"
-		},
-		{
-			"revoke",
-			rpc_trustdom_revoke,
-			NET_TRANSPORT_RPC,
-			"Revoke trust relationship",
-			"net rpc trustdom revoke\n"
-			"    Revoke trust relationship"
-		},
-		{
-			"list",
-			rpc_trustdom_list,
-			NET_TRANSPORT_RPC,
-			"List domain trusts",
-			"net rpc trustdom list\n"
-			"    List domain trusts"
-		},
-		{
-			"vampire",
-			rpc_trustdom_vampire,
-			NET_TRANSPORT_RPC,
-			"Vampire trusts from remote server",
-			"net rpc trustdom vampire\n"
-			"    Vampire trusts from remote server"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"add", rpc_trustdom_add},
+		{"del", rpc_trustdom_del},
+		{"establish", rpc_trustdom_establish},
+		{"revoke", rpc_trustdom_revoke},
+		{"help", rpc_trustdom_usage},
+		{"list", rpc_trustdom_list},
+		{"vampire", rpc_trustdom_vampire},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net rpc trustdom", func);
+	if (argc == 0) {
+		rpc_trustdom_usage(argc, argv);
+		return -1;
+	}
+
+	return (net_run_function(argc, argv, func, rpc_trustdom_usage));
 }
 
 /**
@@ -6322,20 +6444,20 @@
  *		if the host is not explicitly specified
  * @return  bool (true means rpc supported)
  */
-bool net_rpc_check(struct net_context *c, unsigned flags)
+bool net_rpc_check(unsigned flags)
 {
 	struct cli_state *cli;
-	bool ret = false;
+	bool ret = False;
 	struct sockaddr_storage server_ss;
 	char *server_name = NULL;
 	NTSTATUS status;
 
 	/* flags (i.e. server type) may depend on command */
-	if (!net_find_server(c, NULL, flags, &server_ss, &server_name))
-		return false;
+	if (!net_find_server(NULL, flags, &server_ss, &server_name))
+		return False;
 
 	if ((cli = cli_initialise()) == NULL) {
-		return false;
+		return False;
 	}
 
 	status = cli_connect(cli, server_name, &server_ss);
@@ -6349,71 +6471,27 @@
 	if (cli->protocol < PROTOCOL_NT1)
 		goto done;
 
-	ret = true;
+	ret = True;
  done:
 	cli_shutdown(cli);
 	return ret;
 }
 
 /* dump sam database via samsync rpc calls */
-static int rpc_samdump(struct net_context *c, int argc, const char **argv) {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc samdump\n"
-			 "    Dump remote SAM database\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
-			       NET_FLAGS_ANONYMOUS,
-			       rpc_samdump_internals, argc, argv);
+static int rpc_samdump(int argc, const char **argv) {
+		return run_rpc_command(NULL, PI_NETLOGON, NET_FLAGS_ANONYMOUS, rpc_samdump_internals,
+			       argc, argv);
 }
 
 /* syncronise sam database via samsync rpc calls */
-static int rpc_vampire(struct net_context *c, int argc, const char **argv)
-{
-	struct functable func[] = {
-		{
-			"ldif",
-			rpc_vampire_ldif,
-			NET_TRANSPORT_RPC,
-			"Dump remote SAM database to ldif",
-			"net rpc vampire ldif\n"
-			"    Dump remote SAM database to LDIF file or stdout"
-		},
-		{
-			"keytab",
-			rpc_vampire_keytab,
-			NET_TRANSPORT_RPC,
-			"Dump remote SAM database to Kerberos Keytab",
-			"net rpc vampire keytab\n"
-			"    Dump remote SAM database to Kerberos keytab file"
-		},
-
-		{NULL, NULL, 0, NULL, NULL}
-	};
-
-	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n"
-				 "net rpc vampire\n"
-				 "    Vampire remote SAM database\n");
-			return 0;
-		}
-
-		return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
-				       NET_FLAGS_ANONYMOUS,
-				       rpc_vampire_internals,
-				       argc, argv);
-	}
-
-	return net_run_function(c, argc, argv, "net rpc vampire", func);
+static int rpc_vampire(int argc, const char **argv) {
+	return run_rpc_command(NULL, PI_NETLOGON, NET_FLAGS_ANONYMOUS, rpc_vampire_internals,
+			       argc, argv);
 }
 
-/**
- * Migrate everything from a print server.
+/** 
+ * Migrate everything from a print-server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
@@ -6421,216 +6499,152 @@
  * @return A shell status integer (0 for success).
  *
  * The order is important !
- * To successfully add drivers the print queues have to exist !
+ * To successfully add drivers the print-queues have to exist !
  * Applying ACLs should be the last step, because you're easily locked out.
  *
  **/
-static int rpc_printer_migrate_all(struct net_context *c, int argc,
-				   const char **argv)
+static int rpc_printer_migrate_all(int argc, const char **argv)
 {
 	int ret;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer migrate all\n"
-			 "    Migrate everything from a print server\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	ret = run_rpc_command(c, NULL, &syntax_spoolss, 0,
-			      rpc_printer_migrate_printers_internals, argc,
-			      argv);
+	ret = run_rpc_command(NULL, PI_SPOOLSS, 0, rpc_printer_migrate_printers_internals, argc, argv);
 	if (ret)
 		return ret;
 
-	ret = run_rpc_command(c, NULL, &syntax_spoolss, 0,
-			      rpc_printer_migrate_drivers_internals, argc,
-			      argv);
+	ret = run_rpc_command(NULL, PI_SPOOLSS, 0, rpc_printer_migrate_drivers_internals, argc, argv);
 	if (ret)
 		return ret;
 
-	ret = run_rpc_command(c, NULL, &syntax_spoolss, 0,
-			      rpc_printer_migrate_forms_internals, argc, argv);
+	ret = run_rpc_command(NULL, PI_SPOOLSS, 0, rpc_printer_migrate_forms_internals, argc, argv);
 	if (ret)
 		return ret;
 
-	ret = run_rpc_command(c, NULL, &syntax_spoolss, 0,
-			      rpc_printer_migrate_settings_internals, argc,
-			      argv);
+	ret = run_rpc_command(NULL, PI_SPOOLSS, 0, rpc_printer_migrate_settings_internals, argc, argv);
 	if (ret)
 		return ret;
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
-			       rpc_printer_migrate_security_internals, argc,
-			       argv);
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, rpc_printer_migrate_security_internals, argc, argv);
 
 }
 
-/**
- * Migrate print drivers from a print server.
+/** 
+ * Migrate print-drivers from a print-server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_migrate_drivers(struct net_context *c, int argc,
-				       const char **argv)
+static int rpc_printer_migrate_drivers(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer migrate drivers\n"
-			 "     Migrate print-drivers from a print-server\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_migrate_drivers_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Migrate print-forms from a print-server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_migrate_forms(struct net_context *c, int argc,
-				     const char **argv)
+static int rpc_printer_migrate_forms(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer migrate forms\n"
-			 "    Migrate print-forms from a print-server\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_migrate_forms_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Migrate printers from a print-server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_migrate_printers(struct net_context *c, int argc,
-					const char **argv)
+static int rpc_printer_migrate_printers(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer migrate printers\n"
-			 "    Migrate printers from a print-server\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_migrate_printers_internals,
 			       argc, argv);
 }
 
-/**
- * Migrate printer-ACLs from a print-server
+/** 
+ * Migrate printer-ACLs from a print-server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_migrate_security(struct net_context *c, int argc,
-					const char **argv)
+static int rpc_printer_migrate_security(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer migrate security\n"
-			 "    Migrate printer-ACLs from a print-server\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_migrate_security_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Migrate printer-settings from a print-server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_migrate_settings(struct net_context *c, int argc,
-					const char **argv)
+static int rpc_printer_migrate_settings(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer migrate settings\n"
-			 "    Migrate printer-settings from a print-server\n");
-		return 0;
-	}
-
-	if (!c->opt_host) {
-		d_printf("no server to migrate\n");
+	if (!opt_host) {
+		printf("no server to migrate\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_migrate_settings_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * 'net rpc printer' entrypoint.
- *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int rpc_printer_migrate(struct net_context *c, int argc, const char **argv)
+int rpc_printer_migrate(int argc, const char **argv) 
 {
 
 	/* ouch: when addriver and setdriver are called from within
@@ -6638,570 +6652,298 @@
 	   *has* to exist */
 
 	struct functable func[] = {
-		{
-			"all",
-			rpc_printer_migrate_all,
-			NET_TRANSPORT_RPC,
-			"Migrate all from remote to local print server",
-			"net rpc printer migrate all\n"
-			"    Migrate all from remote to local print server"
-		},
-		{
-			"drivers",
-			rpc_printer_migrate_drivers,
-			NET_TRANSPORT_RPC,
-			"Migrate drivers to local server",
-			"net rpc printer migrate drivers\n"
-			"    Migrate drivers to local server"
-		},
-		{
-			"forms",
-			rpc_printer_migrate_forms,
-			NET_TRANSPORT_RPC,
-			"Migrate froms to local server",
-			"net rpc printer migrate forms\n"
-			"    Migrate froms to local server"
-		},
-		{
-			"printers",
-			rpc_printer_migrate_printers,
-			NET_TRANSPORT_RPC,
-			"Migrate printers to local server",
-			"net rpc printer migrate printers\n"
-			"    Migrate printers to local server"
-		},
-		{
-			"security",
-			rpc_printer_migrate_security,
-			NET_TRANSPORT_RPC,
-			"Mirgate printer ACLs to local server",
-			"net rpc printer migrate security\n"
-			"    Mirgate printer ACLs to local server"
-		},
-		{
-			"settings",
-			rpc_printer_migrate_settings,
-			NET_TRANSPORT_RPC,
-			"Migrate printer settings to local server",
-			"net rpc printer migrate settings\n"
-			"    Migrate printer settings to local server"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"all", 	rpc_printer_migrate_all},
+		{"drivers", 	rpc_printer_migrate_drivers},
+		{"forms", 	rpc_printer_migrate_forms},
+		{"help", 	rpc_printer_usage},
+		{"printers", 	rpc_printer_migrate_printers},
+		{"security", 	rpc_printer_migrate_security},
+		{"settings", 	rpc_printer_migrate_settings},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net rpc printer migrate",func);
+	return net_run_function(argc, argv, func, rpc_printer_usage);
 }
 
 
-/**
+/** 
  * List printers on a remote RPC server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_list(struct net_context *c, int argc, const char **argv)
+static int rpc_printer_list(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer list\n"
-			 "    List printers on a remote RPC server\n");
-		return 0;
-	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_list_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * List printer-drivers on a remote RPC server.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
- * @param argv  Standard main() style argv. Initial components are already
+ * @param argv  Standard main() style argv.  Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_driver_list(struct net_context *c, int argc,
-				   const char **argv)
+static int rpc_printer_driver_list(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer driver\n"
-			 "    List printer-drivers on a remote RPC server\n");
-		return 0;
-	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_driver_list_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Publish printer in ADS via MSRPC.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_publish_publish(struct net_context *c, int argc,
-				       const char **argv)
+static int rpc_printer_publish_publish(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer publish publish\n"
-			 "     Publish printer in ADS via MSRPC\n");
-		return 0;
-	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_publish_publish_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * Update printer in ADS via MSRPC.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_publish_update(struct net_context *c, int argc, const char **argv)
+static int rpc_printer_publish_update(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer publish update\n"
-			 "    Update printer in ADS via MSRPC\n");
-		return 0;
-	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_publish_update_internals,
 			       argc, argv);
 }
 
-/**
- * UnPublish printer in ADS via MSRPC.
+/** 
+ * UnPublish printer in ADS via MSRPC
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
- * @param argv  Standard main() style argv. Initial components are already
+ * @param argv  Standard main() style argv.  Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_publish_unpublish(struct net_context *c, int argc,
-					 const char **argv)
+static int rpc_printer_publish_unpublish(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer publish unpublish\n"
-			 "    UnPublish printer in ADS via MSRPC\n");
-		return 0;
-	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_publish_unpublish_internals,
 			       argc, argv);
 }
 
-/**
+/** 
  * List published printers via MSRPC.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_publish_list(struct net_context *c, int argc,
-				    const char **argv)
+static int rpc_printer_publish_list(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc printer publish list\n"
-			 "    List published printers via MSRPC\n");
-		return 0;
-	}
 
-	return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_publish_list_internals,
 			       argc, argv);
 }
 
 
-/**
+/** 
  * Publish printer in ADS.
  *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  *
  * @return A shell status integer (0 for success).
  **/
-static int rpc_printer_publish(struct net_context *c, int argc,
-			       const char **argv)
+static int rpc_printer_publish(int argc, const char **argv)
 {
 
 	struct functable func[] = {
-		{
-			"publish",
-			rpc_printer_publish_publish,
-			NET_TRANSPORT_RPC,
-			"Publish printer in AD",
-			"net rpc printer publish publish\n"
-			"    Publish printer in AD"
-		},
-		{
-			"update",
-			rpc_printer_publish_update,
-			NET_TRANSPORT_RPC,
-			"Update printer in AD",
-			"net rpc printer publish update\n"
-			"    Update printer in AD"
-		},
-		{
-			"unpublish",
-			rpc_printer_publish_unpublish,
-			NET_TRANSPORT_RPC,
-			"Unpublish printer",
-			"net rpc printer publish unpublish\n"
-			"    Unpublish printer"
-		},
-		{
-			"list",
-			rpc_printer_publish_list,
-			NET_TRANSPORT_RPC,
-			"List published printers",
-			"net rpc printer publish list\n"
-			"    List published printers"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"publish", 	rpc_printer_publish_publish},
+		{"update", 	rpc_printer_publish_update},
+		{"unpublish", 	rpc_printer_publish_unpublish},
+		{"list", 	rpc_printer_publish_list},
+		{"help", 	rpc_printer_usage},
+		{NULL, NULL}
 	};
 
-	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rpc printer publish\n"
-				 "    List published printers\n"
-				 "    Alias of net rpc printer publish list\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-		return run_rpc_command(c, NULL, &syntax_spoolss, 0,
+	if (argc == 0)
+		return run_rpc_command(NULL, PI_SPOOLSS, 0, 
 			       rpc_printer_publish_list_internals,
 			       argc, argv);
-	}
 
-	return net_run_function(c, argc, argv, "net rpc printer publish",func);
+	return net_run_function(argc, argv, func, rpc_printer_usage);
 
 }
 
 
-/**
+/** 
  * Display rpc printer help page.
- *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
-int rpc_printer_usage(struct net_context *c, int argc, const char **argv)
+int rpc_printer_usage(int argc, const char **argv)
 {
-	d_printf("net rpc printer LIST [printer] [misc. options] [targets]\n"
-		 "\tlists all printers on print-server\n\n");
-	d_printf("net rpc printer DRIVER [printer] [misc. options] [targets]\n"
-		 "\tlists all printer-drivers on print-server\n\n");
-	d_printf("net rpc printer PUBLISH action [printer] [misc. options] [targets]\n"
-		 "\tpublishes printer settings in Active Directory\n"
-		 "\taction can be one of PUBLISH, UPDATE, UNPUBLISH or LIST\n\n");
-	d_printf("net rpc printer MIGRATE PRINTERS [printer] [misc. options] [targets]"
-		 "\n\tmigrates printers from remote to local server\n\n");
-	d_printf("net rpc printer MIGRATE SETTINGS [printer] [misc. options] [targets]"
-		 "\n\tmigrates printer-settings from remote to local server\n\n");
-	d_printf("net rpc printer MIGRATE DRIVERS [printer] [misc. options] [targets]"
-		 "\n\tmigrates printer-drivers from remote to local server\n\n");
-	d_printf("net rpc printer MIGRATE FORMS [printer] [misc. options] [targets]"
-		 "\n\tmigrates printer-forms from remote to local server\n\n");
-	d_printf("net rpc printer MIGRATE SECURITY [printer] [misc. options] [targets]"
-		 "\n\tmigrates printer-ACLs from remote to local server\n\n");
-	d_printf("net rpc printer MIGRATE ALL [printer] [misc. options] [targets]"
-		 "\n\tmigrates drivers, forms, queues, settings and acls from\n"
-		 "\tremote to local print-server\n\n");
-	net_common_methods_usage(c, argc, argv);
-	net_common_flags_usage(c, argc, argv);
-	d_printf(
-	 "\t-v or --verbose\t\t\tgive verbose output\n"
-	 "\t      --destination\t\tmigration target server (default: localhost)\n");
+        return net_help_printer(argc, argv);
+}
 
+/** 
+ * 'net rpc printer' entrypoint.
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ **/
+int net_rpc_printer(int argc, const char **argv) 
+{
+	struct functable func[] = {
+		{"list", rpc_printer_list},
+		{"migrate", rpc_printer_migrate},
+		{"driver", rpc_printer_driver_list},
+		{"publish", rpc_printer_publish},
+		{NULL, NULL}
+	};
+
+	if (argc == 0)
+		return run_rpc_command(NULL, PI_SPOOLSS, 0, 
+			       rpc_printer_list_internals,
+			       argc, argv);
+
+	return net_run_function(argc, argv, func, rpc_printer_usage);
+}
+
+/****************************************************************************/
+
+
+/** 
+ * Basic usage function for 'net rpc'.
+ * @param argc  Standard main() style argc.
+ * @param argv  Standard main() style argv. Initial components are already
+ *              stripped.
+ **/
+
+int net_rpc_usage(int argc, const char **argv) 
+{
+	d_printf("  net rpc info \t\t\tshow basic info about a domain \n");
+	d_printf("  net rpc join \t\t\tto join a domain \n");
+	d_printf("  net rpc oldjoin \t\tto join a domain created in server manager\n");
+	d_printf("  net rpc testjoin \t\ttests that a join is valid\n");
+	d_printf("  net rpc user \t\t\tto add, delete and list users\n");
+	d_printf("  net rpc password <username> [<password>] -Uadmin_username%%admin_pass\n");
+	d_printf("  net rpc group \t\tto list groups\n");
+	d_printf("  net rpc share \t\tto add, delete, list and migrate shares\n");
+	d_printf("  net rpc printer \t\tto list and migrate printers\n");
+	d_printf("  net rpc file \t\t\tto list open files\n");
+	d_printf("  net rpc changetrustpw \tto change the trust account password\n");
+	d_printf("  net rpc getsid \t\tfetch the domain sid into the local secrets.tdb\n");
+	d_printf("  net rpc vampire \t\tsyncronise an NT PDC's users and groups into the local passdb\n");
+	d_printf("  net rpc samdump \t\tdisplay an NT PDC's users, groups and other data\n");
+	d_printf("  net rpc trustdom \t\tto create trusting domain's account or establish trust\n");
+	d_printf("  net rpc abortshutdown \tto abort the shutdown of a remote server\n");
+	d_printf("  net rpc shutdown \t\tto shutdown a remote server\n");
+	d_printf("  net rpc rights\t\tto manage privileges assigned to SIDs\n");
+	d_printf("  net rpc registry\t\tto manage registry hives\n");
+	d_printf("  net rpc service\t\tto start, stop and query services\n");
+	d_printf("  net rpc audit\t\t\tto modify global auditing settings\n");
+	d_printf("  net rpc shell\t\t\tto open an interactive shell for remote server/account management\n");
+	d_printf("\n");
+	d_printf("'net rpc shutdown' also accepts the following miscellaneous options:\n"); /* misc options */
+	d_printf("\t-r or --reboot\trequest remote server reboot on shutdown\n");
+	d_printf("\t-f or --force\trequest the remote server force its shutdown\n");
+	d_printf("\t-t or --timeout=<timeout>\tnumber of seconds before shutdown\n");
+	d_printf("\t-C or --comment=<message>\ttext message to display on impending shutdown\n");
 	return -1;
 }
 
+
 /**
- * 'net rpc printer' entrypoint.
- *
- * @param c	A net_context structure.
+ * Help function for 'net rpc'.  Calls command specific help if requested
+ * or displays usage of net rpc.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
-int net_rpc_printer(struct net_context *c, int argc, const char **argv)
+
+int net_rpc_help(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"list",
-			rpc_printer_list,
-			NET_TRANSPORT_RPC,
-			"List all printers on print server",
-			"net rpc printer list\n"
-			"    List all printers on print server"
-		},
-		{
-			"migrate",
-			rpc_printer_migrate,
-			NET_TRANSPORT_RPC,
-			"Migrate printer to local server",
-			"net rpc printer migrate\n"
-			"    Migrate printer to local server"
-		},
-		{
-			"driver",
-			rpc_printer_driver_list,
-			NET_TRANSPORT_RPC,
-			"List printer drivers",
-			"net rpc printer driver\n"
-			"    List printer drivers"
-		},
-		{
-			"publish",
-			rpc_printer_publish,
-			NET_TRANSPORT_RPC,
-			"Publish printer in AD",
-			"net rpc printer publish\n"
-			"    Publish printer in AD"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"join", rpc_join_usage},
+		{"user", rpc_user_usage},
+		{"group", rpc_group_usage},
+		{"share", rpc_share_usage},
+		/*{"changetrustpw", rpc_changetrustpw_usage}, */
+		{"trustdom", rpc_trustdom_usage},
+		/*{"abortshutdown", rpc_shutdown_abort_usage},*/
+		/*{"shutdown", rpc_shutdown_usage}, */
+		{"vampire", rpc_vampire_usage},
+		{NULL, NULL}
 	};
 
 	if (argc == 0) {
-		if (c->display_usage) {
-			d_printf("Usage:\n");
-			d_printf("net rpc printer\n"
-				 "    List printers\n");
-			net_display_usage_from_functable(func);
-			return 0;
-		}
-		return run_rpc_command(c, NULL, &syntax_spoolss, 0,
-			       rpc_printer_list_internals,
-			       argc, argv);
+		net_rpc_usage(argc, argv);
+		return -1;
 	}
 
-	return net_run_function(c, argc, argv, "net rpc printer", func);
+	return (net_run_function(argc, argv, func, rpc_user_usage));
 }
 
-/**
+/** 
  * 'net rpc' entrypoint.
- *
- * @param c	A net_context structure.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
  **/
 
-int net_rpc(struct net_context *c, int argc, const char **argv)
+int net_rpc(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"audit",
-			net_rpc_audit,
-			NET_TRANSPORT_RPC,
-			"Modify global audit settings",
-			"net rpc audit\n"
-			"    Modify global audit settings"
-		},
-		{
-			"info",
-			net_rpc_info,
-			NET_TRANSPORT_RPC,
-			"Show basic info about a domain",
-			"net rpc info\n"
-			"    Show basic info about a domain"
-		},
-		{
-			"join",
-			net_rpc_join,
-			NET_TRANSPORT_RPC,
-			"Join a domain",
-			"net rpc join\n"
-			"    Join a domain"
-		},
-		{
-			"oldjoin",
-			net_rpc_oldjoin,
-			NET_TRANSPORT_RPC,
-			"Join a domain created in server manager",
-			"net rpc oldjoin\n"
-			"    Join a domain created in server manager"
-		},
-		{
-			"testjoin",
-			net_rpc_testjoin,
-			NET_TRANSPORT_RPC,
-			"Test that a join is valid",
-			"net rpc testjoin\n"
-			"    Test that a join is valid"
-		},
-		{
-			"user",
-			net_rpc_user,
-			NET_TRANSPORT_RPC,
-			"List/modify users",
-			"net rpc user\n"
-			"    List/modify users"
-		},
-		{
-			"password",
-			rpc_user_password,
-			NET_TRANSPORT_RPC,
-			"Change a user password",
-			"net rpc password\n"
-			"    Change a user password\n"
-			"    Alias for net rpc user password"
-		},
-		{
-			"group",
-			net_rpc_group,
-			NET_TRANSPORT_RPC,
-			"List/modify groups",
-			"net rpc group\n"
-			"    List/modify groups"
-		},
-		{
-			"share",
-			net_rpc_share,
-			NET_TRANSPORT_RPC,
-			"List/modify shares",
-			"net rpc share\n"
-			"    List/modify shares"
-		},
-		{
-			"file",
-			net_rpc_file,
-			NET_TRANSPORT_RPC,
-			"List open files",
-			"net rpc file\n"
-			"    List open files"
-		},
-		{
-			"printer",
-			net_rpc_printer,
-			NET_TRANSPORT_RPC,
-			"List/modify printers",
-			"net rpc printer\n"
-			"    List/modify printers"
-		},
-		{
-			"changetrustpw",
-			net_rpc_changetrustpw,
-			NET_TRANSPORT_RPC,
-			"Change trust account password",
-			"net rpc changetrustpw\n"
-			"    Change trust account password"
-		},
-		{
-			"trustdom",
-			rpc_trustdom,
-			NET_TRANSPORT_RPC,
-			"Modify domain trusts",
-			"net rpc trustdom\n"
-			"    Modify domain trusts"
-		},
-		{
-			"abortshutdown",
-			rpc_shutdown_abort,
-			NET_TRANSPORT_RPC,
-			"Abort a remote shutdown",
-			"net rpc abortshutdown\n"
-			"    Abort a remote shutdown"
-		},
-		{
-			"shutdown",
-			rpc_shutdown,
-			NET_TRANSPORT_RPC,
-			"Shutdown a remote server",
-			"net rpc shutdown\n"
-			"    Shutdown a remote server"
-		},
-		{
-			"samdump",
-			rpc_samdump,
-			NET_TRANSPORT_RPC,
-			"Dump SAM data of remote NT PDC",
-			"net rpc samdump\n"
-			"    Dump SAM data of remote NT PDC"
-		},
-		{
-			"vampire",
-			rpc_vampire,
-			NET_TRANSPORT_RPC,
-			"Sync a remote NT PDC's data into local passdb",
-			"net rpc vampire\n"
-			"    Sync a remote NT PDC's data into local passdb"
-		},
-		{
-			"getsid",
-			net_rpc_getsid,
-			NET_TRANSPORT_RPC,
-			"Fetch the domain sid into local secrets.tdb",
-			"net rpc getsid\n"
-			"    Fetch the domain sid into local secrets.tdb"
-		},
-		{
-			"rights",
-			net_rpc_rights,
-			NET_TRANSPORT_RPC,
-			"Manage privileges assigned to SID",
-			"net rpc rights\n"
-			"    Manage privileges assigned to SID"
-		},
-		{
-			"service",
-			net_rpc_service,
-			NET_TRANSPORT_RPC,
-			"Start/stop/query remote services",
-			"net rpc service\n"
-			"    Start/stop/query remote services"
-		},
-		{
-			"registry",
-			net_rpc_registry,
-			NET_TRANSPORT_RPC,
-			"Manage registry hives",
-			"net rpc registry\n"
-			"    Manage registry hives"
-		},
-		{
-			"shell",
-			net_rpc_shell,
-			NET_TRANSPORT_RPC,
-			"Open interactive shell on remote server",
-			"net rpc shell\n"
-			"    Open interactive shell on remote server"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"audit", net_rpc_audit},
+		{"info", net_rpc_info},
+		{"join", net_rpc_join},
+		{"oldjoin", net_rpc_oldjoin},
+		{"testjoin", net_rpc_testjoin},
+		{"user", net_rpc_user},
+		{"password", rpc_user_password},
+		{"group", net_rpc_group},
+		{"share", net_rpc_share},
+		{"file", net_rpc_file},
+		{"printer", net_rpc_printer},
+		{"changetrustpw", net_rpc_changetrustpw},
+		{"trustdom", rpc_trustdom},
+		{"abortshutdown", rpc_shutdown_abort},
+		{"shutdown", rpc_shutdown},
+		{"samdump", rpc_samdump},
+		{"vampire", rpc_vampire},
+		{"getsid", net_rpc_getsid},
+		{"rights", net_rpc_rights},
+		{"service", net_rpc_service},
+		{"registry", net_rpc_registry},
+		{"shell", net_rpc_shell},
+		{"help", net_rpc_help},
+		{NULL, NULL}
 	};
-	return net_run_function(c, argc, argv, "net rpc", func);
+	return net_run_function(argc, argv, func, net_rpc_usage);
 }

Modified: branches/samba/upstream/source/utils/net_rpc_audit.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_audit.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_audit.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -22,7 +22,7 @@
 /********************************************************************
 ********************************************************************/
 
-static int net_help_audit(struct net_context *c, int argc, const char **argv)
+static int net_help_audit(int argc, const char **argv)
 {
 	d_printf("net rpc audit list                       View configured Auditing policies\n");
 	d_printf("net rpc audit enable                     Enable Auditing\n");
@@ -61,8 +61,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_audit_get_internal(struct net_context *c,
-				       const DOM_SID *domain_sid,
+static NTSTATUS rpc_audit_get_internal(const DOM_SID *domain_sid,
 				       const char *domain_name,
 				       struct cli_state *cli,
 				       struct rpc_pipe_client *pipe_hnd,
@@ -78,7 +77,7 @@
 
 	if (argc < 1 || argc > 2) {
 		d_printf("insufficient arguments\n");
-		net_help_audit(c, argc, argv);
+		net_help_audit(argc, argv);
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
@@ -129,8 +128,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_audit_set_internal(struct net_context *c,
-				       const DOM_SID *domain_sid,
+static NTSTATUS rpc_audit_set_internal(const DOM_SID *domain_sid,
 				       const char *domain_name,
 				       struct cli_state *cli,
 				       struct rpc_pipe_client *pipe_hnd,
@@ -145,7 +143,7 @@
 
 	if (argc < 2 || argc > 3) {
 		d_printf("insufficient arguments\n");
-		net_help_audit(c, argc, argv);
+		net_help_audit(argc, argv);
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
@@ -267,8 +265,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_audit_disable_internal(struct net_context *c,
-					   const DOM_SID *domain_sid,
+static NTSTATUS rpc_audit_disable_internal(const DOM_SID *domain_sid,
 					   const char *domain_name,
 					   struct cli_state *cli,
 					   struct rpc_pipe_client *pipe_hnd,
@@ -283,8 +280,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_audit_enable_internal(struct net_context *c,
-					  const DOM_SID *domain_sid,
+static NTSTATUS rpc_audit_enable_internal(const DOM_SID *domain_sid,
 					  const char *domain_name,
 					  struct cli_state *cli,
 					  struct rpc_pipe_client *pipe_hnd,
@@ -299,8 +295,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_audit_list_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_audit_list_internal(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -364,131 +359,64 @@
 /********************************************************************
 ********************************************************************/
 
-static int rpc_audit_get(struct net_context *c, int argc, const char **argv)
+static int rpc_audit_get(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc audit get\n"
-			 "    View configured audit setting\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_LSARPC, 0,
 		rpc_audit_get_internal, argc, argv);
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_audit_set(struct net_context *c, int argc, const char **argv)
+static int rpc_audit_set(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc audit set\n"
-			 "    Set audit policies\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_LSARPC, 0,
 		rpc_audit_set_internal, argc, argv);
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_audit_enable(struct net_context *c, int argc, const char **argv)
+static int rpc_audit_enable(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc audit enable\n"
-			 "    Enable auditing\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_LSARPC, 0,
 		rpc_audit_enable_internal, argc, argv);
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_audit_disable(struct net_context *c, int argc, const char **argv)
+static int rpc_audit_disable(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc audit disable\n"
-			 "    Disable auditing\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_LSARPC, 0,
 		rpc_audit_disable_internal, argc, argv);
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_audit_list(struct net_context *c, int argc, const char **argv)
+static int rpc_audit_list(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc audit list\n"
-			 "    List auditing settings\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command(NULL, PI_LSARPC, 0,
 		rpc_audit_list_internal, argc, argv);
 }
 
 /********************************************************************
 ********************************************************************/
 
-int net_rpc_audit(struct net_context *c, int argc, const char **argv)
+int net_rpc_audit(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"get",
-			rpc_audit_get,
-			NET_TRANSPORT_RPC,
-			"View configured auditing settings",
-			"net rpc audit get\n"
-			"    View configured auditing settings"
-		},
-		{
-			"set",
-			rpc_audit_set,
-			NET_TRANSPORT_RPC,
-			"Set auditing policies",
-			"net rpc audit set\n"
-			"    Set auditing policies"
-		},
-		{
-			"enable",
-			rpc_audit_enable,
-			NET_TRANSPORT_RPC,
-			"Enable auditing",
-			"net rpc audit enable\n"
-			"    Enable auditing"
-		},
-		{
-			"disable",
-			rpc_audit_disable,
-			NET_TRANSPORT_RPC,
-			"Disable auditing",
-			"net rpc audit disable\n"
-			"    Disable auditing"
-		},
-		{
-			"list",
-			rpc_audit_list,
-			NET_TRANSPORT_RPC,
-			"List configured auditing settings",
-			"net rpc audit list\n"
-			"    List configured auditing settings"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"get", rpc_audit_get},
+		{"set", rpc_audit_set},
+		{"enable", rpc_audit_enable},
+		{"disable", rpc_audit_disable},
+		{"list", rpc_audit_list},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net rpc audit", func);
+	if (argc)
+		return net_run_function(argc, argv, func, net_help_audit);
+
+	return net_help_audit(argc, argv);
 }

Modified: branches/samba/upstream/source/utils/net_rpc_join.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_join.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_join.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,6 +1,6 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2001 Andrew Bartlett (abartlet at samba.org)
    Copyright (C) Tim Potter     2001
    Copyright (C) 2008 Guenther Deschner
@@ -9,15 +9,15 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
+ 
 #include "includes.h"
 #include "utils/net.h"
 
@@ -41,8 +41,8 @@
  * @return A shell status integer (0 for success)
  *
  **/
-NTSTATUS net_rpc_join_ok(struct net_context *c, const char *domain,
-			 const char *server, struct sockaddr_storage *pss)
+NTSTATUS net_rpc_join_ok(const char *domain, const char *server,
+			 struct sockaddr_storage *pss)
 {
 	enum security_types sec;
 	unsigned int conn_flags = NET_FLAGS_PDC;
@@ -57,7 +57,7 @@
 	if (sec == SEC_ADS) {
 		/* Connect to IPC$ using machine account's credentials. We don't use anonymous
 		   connection here, as it may be denied by server's local policy. */
-		net_use_machine_account(c);
+		net_use_machine_account();
 
 	} else {
 		/* some servers (e.g. WinNT) don't accept machine-authenticated
@@ -66,20 +66,18 @@
 	}
 
 	/* Connect to remote machine */
-	ntret = net_make_ipc_connection_ex(c, domain, server, pss, conn_flags,
-					   &cli);
+	ntret = net_make_ipc_connection_ex(domain, server, pss, conn_flags, &cli);
 	if (!NT_STATUS_IS_OK(ntret)) {
 		return ntret;
 	}
 
 	/* Setup the creds as though we're going to do schannel... */
-	ntret = get_schannel_session_key(cli, domain, &neg_flags,
-					 &netlogon_pipe);
+        netlogon_pipe = get_schannel_session_key(cli, domain, &neg_flags, &ntret);
 
 	/* We return NT_STATUS_INVALID_NETWORK_RESPONSE if the server is refusing
 	   to negotiate schannel, but the creds were set up ok. That'll have to do. */
 
-        if (!NT_STATUS_IS_OK(ntret)) {
+        if (!netlogon_pipe) {
 		if (NT_STATUS_EQUAL(ntret, NT_STATUS_INVALID_NETWORK_RESPONSE)) {
 			cli_shutdown(cli);
 			return NT_STATUS_OK;
@@ -99,11 +97,11 @@
 		return ntret;
 	}
 
-	ntret = cli_rpc_pipe_open_schannel_with_key(
-		cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-		domain, netlogon_pipe->dc, &pipe_hnd);
+	pipe_hnd = cli_rpc_pipe_open_schannel_with_key(cli, PI_NETLOGON,
+				PIPE_AUTH_LEVEL_PRIVACY,
+				domain, netlogon_pipe->dc, &ntret);
 
-	if (!NT_STATUS_IS_OK(ntret)) {
+	if (!pipe_hnd) {
 		DEBUG(0,("net_rpc_join_ok: failed to open schannel session "
 				"on netlogon pipe to server %s for domain %s. Error was %s\n",
 			cli->desthost, domain, nt_errstr(ntret) ));
@@ -127,7 +125,7 @@
  *
  **/
 
-int net_rpc_join_newstyle(struct net_context *c, int argc, const char **argv)
+int net_rpc_join_newstyle(int argc, const char **argv) 
 {
 
 	/* libsmb variables */
@@ -148,7 +146,7 @@
 	/* Password stuff */
 
 	char *clear_trust_password = NULL;
-	struct samr_CryptPassword crypt_pwd;
+	uchar pwbuf[516];
 	uchar md4_trust_password[16];
 	union samr_UserInfo set_info;
 
@@ -188,7 +186,7 @@
 
 	/* Make authenticated connection to remote machine */
 
-	result = net_make_ipc_connection(c, NET_FLAGS_PDC, &cli);
+	result = net_make_ipc_connection(NET_FLAGS_PDC, &cli);
 	if (!NT_STATUS_IS_OK(result)) {
 		return 1;
 	}
@@ -200,16 +198,15 @@
 
 	/* Fetch domain sid */
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(result)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
+	if (!pipe_hnd) {
 		DEBUG(0, ("Error connecting to LSA pipe. Error was %s\n",
 			nt_errstr(result) ));
 		goto done;
 	}
 
 
-	CHECK_RPC_ERR(rpccli_lsa_open_policy(pipe_hnd, mem_ctx, true,
+	CHECK_RPC_ERR(rpccli_lsa_open_policy(pipe_hnd, mem_ctx, True,
 					  SEC_RIGHTS_MAXIMUM_ALLOWED,
 					  &lsa_pol),
 		      "error opening lsa policy handle");
@@ -224,7 +221,7 @@
 	domain_sid = info->account_domain.sid;
 
 	rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
-	TALLOC_FREE(pipe_hnd); /* Done with this pipe */
+	cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
 
 	/* Bail out if domain didn't get set. */
 	if (!domain) {
@@ -233,16 +230,15 @@
 	}
 
 	/* Create domain user */
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(result)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
+	if (!pipe_hnd) {
 		DEBUG(0, ("Error connecting to SAM pipe. Error was %s\n",
 			nt_errstr(result) ));
 		goto done;
 	}
 
 	CHECK_RPC_ERR(rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-					   pipe_hnd->desthost,
+					   pipe_hnd->cli->desthost,
 					   SEC_RIGHTS_MAXIMUM_ALLOWED,
 					   &sam_pol),
 		      "could not connect to SAM database");
@@ -337,13 +333,14 @@
 		E_md4hash(clear_trust_password, md4_trust_password);
 	}
 
+	encode_pw_buffer(pwbuf, clear_trust_password, STR_UNICODE);
+
 	/* Set password on machine account */
 
-	init_samr_CryptPassword(clear_trust_password,
-				&cli->user_session_key,
-				&crypt_pwd);
+	init_samr_user_info24(&set_info.info24, pwbuf, 24);
 
-	init_samr_user_info24(&set_info.info24, crypt_pwd.data, 24);
+	SamOEMhashBlob(set_info.info24.password.data, 516,
+		       &cli->user_session_key);
 
 	CHECK_RPC_ERR(rpccli_samr_SetUserInfo2(pipe_hnd, mem_ctx,
 					       &user_pol,
@@ -371,13 +368,12 @@
 					 &set_info);
 
 	rpccli_samr_Close(pipe_hnd, mem_ctx, &user_pol);
-	TALLOC_FREE(pipe_hnd); /* Done with this pipe */
+	cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
 
 	/* Now check the whole process from top-to-bottom */
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(result)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &result);
+	if (!pipe_hnd) {
 		DEBUG(0,("Error connecting to NETLOGON pipe. Error was %s\n",
 			nt_errstr(result) ));
 		goto done;
@@ -412,13 +408,14 @@
 	   do the same again (setup creds) in net_rpc_join_ok(). JRA. */
 
 	if (lp_client_schannel() && (neg_flags & NETLOGON_NEG_SCHANNEL)) {
-		struct rpc_pipe_client *netlogon_schannel_pipe;
+		struct rpc_pipe_client *netlogon_schannel_pipe = 
+						cli_rpc_pipe_open_schannel_with_key(cli,
+							PI_NETLOGON,
+							PIPE_AUTH_LEVEL_PRIVACY,
+							domain,
+							pipe_hnd->dc,
+							&result);
 
-		result = cli_rpc_pipe_open_schannel_with_key(
-			cli, &ndr_table_netlogon.syntax_id,
-			PIPE_AUTH_LEVEL_PRIVACY, domain, pipe_hnd->dc,
-			&netlogon_schannel_pipe);
-
 		if (!NT_STATUS_IS_OK(result)) {
 			DEBUG(0, ("Error in domain join verification (schannel setup failed): %s\n\n",
 				  nt_errstr(result)));
@@ -432,10 +429,10 @@
 
 			goto done;
 		}
-		TALLOC_FREE(netlogon_schannel_pipe);
+		cli_rpc_pipe_close(netlogon_schannel_pipe);
 	}
 
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 
 	/* Now store the secret in the secrets database */
 
@@ -451,7 +448,7 @@
 	}
 
 	/* double-check, connection from scratch */
-	result = net_rpc_join_ok(c, domain, cli->desthost, &cli->dest_ss);
+	result = net_rpc_join_ok(domain, cli->desthost, &cli->dest_ss);
 	retval = NT_STATUS_IS_OK(result) ? 0 : -1;
 
 done:
@@ -465,7 +462,7 @@
 			printf("Joined domain %s.\n",domain);
 		}
 	}
-
+	
 	cli_shutdown(cli);
 
 	SAFE_FREE(clear_trust_password);
@@ -479,20 +476,13 @@
  * @return A shell status integer (0 for success)
  *
  **/
-int net_rpc_testjoin(struct net_context *c, int argc, const char **argv)
+int net_rpc_testjoin(int argc, const char **argv) 
 {
-	char *domain = smb_xstrdup(c->opt_target_workgroup);
+	char *domain = smb_xstrdup(opt_target_workgroup);
 	NTSTATUS nt_status;
 
-	if (c->display_usage) {
-		d_printf("Usage\n"
-			 "net rpc testjoin\n"
-			 "    Test if a join is OK\n");
-		return 0;
-	}
-
 	/* Display success or failure */
-	nt_status = net_rpc_join_ok(c, domain, NULL, NULL);
+	nt_status = net_rpc_join_ok(domain, NULL, NULL);
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		fprintf(stderr,"Join to domain '%s' is not valid: %s\n",
 			domain, nt_errstr(nt_status));

Modified: branches/samba/upstream/source/utils/net_rpc_printer.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_printer.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_printer.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,21 +1,21 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2004 Guenther Deschner (gd at samba.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; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+ 
 #include "includes.h"
 #include "utils/net.h"
 
@@ -61,10 +61,10 @@
 	fstring dependentfiles = "";
 	fstring monitorname = "";
 	fstring defaultdatatype = "";
-
+	
 	int length=0;
-	bool valid = true;
-
+	bool valid = True;
+	
 	if (i1 == NULL)
 		return;
 
@@ -88,22 +88,22 @@
 
 	while (valid) {
 		rpcstr_pull(dependentfiles, i1->dependentfiles+length, sizeof(dependentfiles), -1, STR_TERMINATE);
-
+		
 		length+=strlen(dependentfiles)+1;
-
+		
 		if (strlen(dependentfiles) > 0) {
 			d_printf ("\tDependentfiles: [%s]\n", dependentfiles);
 		} else {
-			valid = false;
+			valid = False;
 		}
 	}
-
+	
 	printf ("\n");
 
 	d_printf ("\tMonitorname: [%s]\n", monitorname);
 	d_printf ("\tDefaultdatatype: [%s]\n\n", defaultdatatype);
 
-	return;
+	return;	
 }
 
 static void display_reg_value(const char *subkey, REGISTRY_VALUE value)
@@ -112,7 +112,7 @@
 
 	switch(value.type) {
 	case REG_DWORD:
-		d_printf("\t[%s:%s]: REG_DWORD: 0x%08x\n", subkey, value.valuename,
+		d_printf("\t[%s:%s]: REG_DWORD: 0x%08x\n", subkey, value.valuename, 
 		       *((uint32 *) value.data_p));
 		break;
 
@@ -129,7 +129,7 @@
 		break;
 
 	case REG_BINARY:
-		d_printf("\t[%s:%s]: REG_BINARY: unknown length value not displayed\n",
+		d_printf("\t[%s:%s]: REG_BINARY: unknown length value not displayed\n", 
 			 subkey, value.valuename);
 		break;
 
@@ -154,17 +154,16 @@
 	default:
 		d_printf("\t%s: unknown type %d\n", value.valuename, value.type);
 	}
-
+	
 }
 
 /**
- * Copies ACLs, DOS-attributes and timestamps from one
- * file or directory from one connected share to another connected share
+ * Copies ACLs, DOS-attributes and timestamps from one 
+ * file or directory from one connected share to another connected share 
  *
- * @param c			A net_context structure
  * @param mem_ctx		A talloc-context
- * @param cli_share_src		A connected cli_state
- * @param cli_share_dst		A connected cli_state
+ * @param cli_share_src		A connected cli_state 
+ * @param cli_share_dst		A connected cli_state 
  * @param src_file		The source file-name
  * @param dst_file		The destination file-name
  * @param copy_acls		Whether to copy acls
@@ -173,12 +172,11 @@
  * @param is_file		Whether this file is a file or a dir
  *
  * @return Normal NTSTATUS return.
- **/
+ **/ 
 
-NTSTATUS net_copy_fileattr(struct net_context *c,
-		  TALLOC_CTX *mem_ctx,
+NTSTATUS net_copy_fileattr(TALLOC_CTX *mem_ctx,
 		  struct cli_state *cli_share_src,
-		  struct cli_state *cli_share_dst,
+		  struct cli_state *cli_share_dst, 
 		  const char *src_name, const char *dst_name,
 		  bool copy_acls, bool copy_attrs,
 		  bool copy_timestamps, bool is_file)
@@ -196,12 +194,12 @@
 
 	/* open file/dir on the originating server */
 
-	DEBUGADD(3,("opening %s %s on originating server\n",
+	DEBUGADD(3,("opening %s %s on originating server\n", 
 		is_file?"file":"dir", src_name));
 
 	fnum_src = cli_nt_create(cli_share_src, src_name, READ_CONTROL_ACCESS);
 	if (fnum_src == -1) {
-		DEBUGADD(0,("cannot open %s %s on originating server %s\n",
+		DEBUGADD(0,("cannot open %s %s on originating server %s\n", 
 			is_file?"file":"dir", src_name, cli_errstr(cli_share_src)));
 		nt_status = cli_nt_error(cli_share_src);
 		goto out;
@@ -219,7 +217,7 @@
 			goto out;
 		}
 
-		if (c->opt_verbose && DEBUGLEVEL >= 3)
+		if (opt_verbose && DEBUGLEVEL >= 3)
 			display_sec_desc(sd);
 	}
 
@@ -227,9 +225,9 @@
 	if (copy_attrs || copy_timestamps) {
 
 		/* get file attributes */
-		if (!cli_getattrE(cli_share_src, fnum_src, &attr, NULL,
+		if (!cli_getattrE(cli_share_src, fnum_src, &attr, NULL, 
 				 &f_ctime, &f_atime, &f_mtime)) {
-			DEBUG(0,("failed to get file-attrs: %s\n",
+			DEBUG(0,("failed to get file-attrs: %s\n", 
 				cli_errstr(cli_share_src)));
 			nt_status = cli_nt_error(cli_share_src);
 			goto out;
@@ -237,7 +235,7 @@
 	}
 
 
-	/* open the file/dir on the destination server */
+	/* open the file/dir on the destination server */ 
 
 	fnum_dst = cli_nt_create(cli_share_dst, dst_name, WRITE_DAC_ACCESS | WRITE_OWNER_ACCESS);
 	if (fnum_dst == -1) {
@@ -284,14 +282,14 @@
 	/* closing files */
 
 	if (!cli_close(cli_share_src, fnum_src)) {
-		d_fprintf(stderr, "could not close %s on originating server: %s\n",
+		d_fprintf(stderr, "could not close %s on originating server: %s\n", 
 			is_file?"file":"dir", cli_errstr(cli_share_src));
 		nt_status = cli_nt_error(cli_share_src);
 		goto out;
 	}
 
 	if (!cli_close(cli_share_dst, fnum_dst)) {
-		d_fprintf(stderr, "could not close %s on destination server: %s\n",
+		d_fprintf(stderr, "could not close %s on destination server: %s\n", 
 			is_file?"file":"dir", cli_errstr(cli_share_dst));
 		nt_status = cli_nt_error(cli_share_dst);
 		goto out;
@@ -313,12 +311,11 @@
 }
 
 /**
- * Copy a file or directory from a connected share to another connected share
+ * Copy a file or directory from a connected share to another connected share 
  *
- * @param c			A net_context structure
  * @param mem_ctx		A talloc-context
- * @param cli_share_src		A connected cli_state
- * @param cli_share_dst		A connected cli_state
+ * @param cli_share_src		A connected cli_state 
+ * @param cli_share_dst		A connected cli_state 
  * @param src_file		The source file-name
  * @param dst_file		The destination file-name
  * @param copy_acls		Whether to copy acls
@@ -327,12 +324,11 @@
  * @param is_file		Whether this file is a file or a dir
  *
  * @return Normal NTSTATUS return.
- **/
+ **/ 
 
-NTSTATUS net_copy_file(struct net_context *c,
-		       TALLOC_CTX *mem_ctx,
+NTSTATUS net_copy_file(TALLOC_CTX *mem_ctx,
 		       struct cli_state *cli_share_src,
-		       struct cli_state *cli_share_dst,
+		       struct cli_state *cli_share_dst, 
 		       const char *src_name, const char *dst_name,
 		       bool copy_acls, bool copy_attrs,
 		       bool copy_timestamps, bool is_file)
@@ -350,10 +346,11 @@
 		goto out;
 
 	if (cli_share_src == NULL || cli_share_dst == NULL)
-		goto out;
+		goto out; 
+		
 
 	/* open on the originating server */
-	DEBUGADD(3,("opening %s %s on originating server\n",
+	DEBUGADD(3,("opening %s %s on originating server\n", 
 		is_file ? "file":"dir", src_name));
 	if (is_file)
 		fnum_src = cli_open(cli_share_src, src_name, O_RDONLY, DENY_NONE);
@@ -373,7 +370,7 @@
 
 		/* open file on the destination server */
 		DEBUGADD(3,("opening file %s on destination server\n", dst_name));
-		fnum_dst = cli_open(cli_share_dst, dst_name,
+		fnum_dst = cli_open(cli_share_dst, dst_name, 
 				O_RDWR|O_CREAT|O_TRUNC, DENY_NONE);
 
 		if (fnum_dst == -1) {
@@ -393,13 +390,13 @@
 	}
 
 
-	if (c->opt_verbose) {
+	if (opt_verbose) {
 
 		d_printf("copying [\\\\%s\\%s%s] => [\\\\%s\\%s%s] "
-			 "%s ACLs and %s DOS Attributes %s\n",
+			 "%s ACLs and %s DOS Attributes %s\n", 
 			cli_share_src->desthost, cli_share_src->share, src_name,
 			cli_share_dst->desthost, cli_share_dst->share, dst_name,
-			copy_acls ?  "with" : "without",
+			copy_acls ?  "with" : "without", 
 			copy_attrs ? "with" : "without",
 			copy_timestamps ? "(preserving timestamps)" : "" );
 	}
@@ -409,17 +406,17 @@
 
 		/* copying file */
 		int n, ret;
-		n = cli_read(cli_share_src, fnum_src, data, nread,
+		n = cli_read(cli_share_src, fnum_src, data, nread, 
 				read_size);
 
 		if (n <= 0)
 			break;
 
-		ret = cli_write(cli_share_dst, fnum_dst, 0, data,
+		ret = cli_write(cli_share_dst, fnum_dst, 0, data, 
 			nread, n);
 
 		if (n != ret) {
-			d_fprintf(stderr, "Error writing file: %s\n",
+			d_fprintf(stderr, "Error writing file: %s\n", 
 				cli_errstr(cli_share_dst));
 			nt_status = cli_nt_error(cli_share_dst);
 			goto out;
@@ -432,7 +429,7 @@
 	if (!is_file && !cli_chkpath(cli_share_dst, dst_name)) {
 
 		/* creating dir */
-		DEBUGADD(3,("creating dir %s on the destination server\n",
+		DEBUGADD(3,("creating dir %s on the destination server\n", 
 			dst_name));
 
 		if (!cli_mkdir(cli_share_dst, dst_name)) {
@@ -451,22 +448,22 @@
 
 	/* closing files */
 	if (!cli_close(cli_share_src, fnum_src)) {
-		d_fprintf(stderr, "could not close file on originating server: %s\n",
+		d_fprintf(stderr, "could not close file on originating server: %s\n", 
 			cli_errstr(cli_share_src));
 		nt_status = cli_nt_error(cli_share_src);
 		goto out;
 	}
 
 	if (is_file && !cli_close(cli_share_dst, fnum_dst)) {
-		d_fprintf(stderr, "could not close file on destination server: %s\n",
+		d_fprintf(stderr, "could not close file on destination server: %s\n", 
 			cli_errstr(cli_share_dst));
 		nt_status = cli_nt_error(cli_share_dst);
 		goto out;
 	}
 
 	/* possibly we have to copy some file-attributes / acls / sd */
-	nt_status = net_copy_fileattr(c, mem_ctx, cli_share_src, cli_share_dst,
-				      src_name, dst_name, copy_acls,
+	nt_status = net_copy_fileattr(mem_ctx, cli_share_src, cli_share_dst, 
+				      src_name, dst_name, copy_acls, 
 				      copy_attrs, copy_timestamps, is_file);
 	if (!NT_STATUS_IS_OK(nt_status))
 		goto out;
@@ -489,30 +486,28 @@
 }
 
 /**
- * Copy a driverfile from on connected share to another connected share
- * This silently assumes that a driver-file is picked up from
+ * Copy a driverfile from on connected share to another connected share 
+ * This silently assumes that a driver-file is picked up from 
  *
- *	\\src_server\print$\{arch}\{version}\file
+ *	\\src_server\print$\{arch}\{version}\file 
  *
  * and copied to
  *
- * 	\\dst_server\print$\{arch}\file
- *
+ * 	\\dst_server\print$\{arch}\file 
+ * 
  * to be added via setdriver-calls later.
- * @param c			A net_context structure
  * @param mem_ctx		A talloc-context
  * @param cli_share_src		A cli_state connected to source print$-share
  * @param cli_share_dst		A cli_state connected to destination print$-share
- * @param file			The file-name to be copied
+ * @param file			The file-name to be copied 
  * @param short_archi		The name of the driver-architecture (short form)
  *
  * @return Normal NTSTATUS return.
- **/
+ **/ 
 
-static NTSTATUS net_copy_driverfile(struct net_context *c,
-				    TALLOC_CTX *mem_ctx,
+static NTSTATUS net_copy_driverfile(TALLOC_CTX *mem_ctx,
 				    struct cli_state *cli_share_src,
-				    struct cli_state *cli_share_dst,
+				    struct cli_state *cli_share_dst, 
 				    char *file, const char *short_archi) {
 
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
@@ -523,7 +518,7 @@
 	char *filename;
 	char *tok;
 
-	/* scroll through the file until we have the part
+	/* scroll through the file until we have the part 
 	   beyond archi_table.short_archi */
 	p = file;
 	while (next_token_talloc(mem_ctx, &p, &tok, "\\")) {
@@ -534,7 +529,7 @@
 	}
 
 	/* build source file name */
-	if (asprintf(&src_name, "\\%s\\%s\\%s", short_archi, version, filename) < 0 )
+	if (asprintf(&src_name, "\\%s\\%s\\%s", short_archi, version, filename) < 0 ) 
 		return NT_STATUS_NO_MEMORY;
 
 
@@ -544,8 +539,8 @@
 
 
 	/* finally copy the file */
-	nt_status = net_copy_file(c, mem_ctx, cli_share_src, cli_share_dst,
-				  src_name, dst_name, false, false, false, true);
+	nt_status = net_copy_file(mem_ctx, cli_share_src, cli_share_dst, 
+				  src_name, dst_name, False, False, False, True);
 	if (!NT_STATUS_IS_OK(nt_status))
 		goto out;
 
@@ -577,7 +572,7 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	DEBUG(10,("creating print-driver dir for architecture: %s\n",
+	DEBUG(10,("creating print-driver dir for architecture: %s\n", 
 		short_archi));
 
 	if (!cli_mkdir(cli_share, dir)) {
@@ -587,7 +582,7 @@
         }
 
 	if (!cli_chkpath(cli_share, dir)) {
-		d_fprintf(stderr, "cannot check %s: %s\n",
+		d_fprintf(stderr, "cannot check %s: %s\n", 
 			dir, cli_errstr(cli_share));
 		goto out;
 	}
@@ -600,10 +595,9 @@
 }
 
 /**
- * Copy a print-driver (level 3) from one connected print$-share to another
+ * Copy a print-driver (level 3) from one connected print$-share to another 
  * connected print$-share
  *
- * @param c			A net_context structure
  * @param mem_ctx		A talloc-context
  * @param cli_share_src		A cli_state connected to a print$-share
  * @param cli_share_dst		A cli_state connected to a print$-share
@@ -613,23 +607,22 @@
  * @return Normal NTSTATUS return.
  **/
 
-static NTSTATUS copy_print_driver_3(struct net_context *c,
-		    TALLOC_CTX *mem_ctx,
-		    struct cli_state *cli_share_src,
-		    struct cli_state *cli_share_dst,
+static NTSTATUS copy_print_driver_3(TALLOC_CTX *mem_ctx,
+		    struct cli_state *cli_share_src, 
+		    struct cli_state *cli_share_dst, 
 		    const char *short_archi, DRIVER_INFO_3 *i1)
 {
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 	int length = 0;
-	bool valid = true;
-
+	bool valid = True;
+	
 	fstring name = "";
 	fstring driverpath = "";
 	fstring datafile = "";
 	fstring configfile = "";
 	fstring helpfile = "";
 	fstring dependentfiles = "";
-
+	
 	if (i1 == NULL)
 		return nt_status;
 
@@ -640,44 +633,44 @@
 	rpcstr_pull(helpfile, i1->helpfile.buffer, sizeof(helpfile), -1, STR_TERMINATE);
 
 
-	if (c->opt_verbose)
-		d_printf("copying driver: [%s], for architecture: [%s], version: [%d]\n",
+	if (opt_verbose)
+		d_printf("copying driver: [%s], for architecture: [%s], version: [%d]\n", 
 			  name, short_archi, i1->version);
-
-	nt_status = net_copy_driverfile(c, mem_ctx, cli_share_src, cli_share_dst,
+	
+	nt_status = net_copy_driverfile(mem_ctx, cli_share_src, cli_share_dst, 
 		driverpath, short_archi);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
-
-	nt_status = net_copy_driverfile(c, mem_ctx, cli_share_src, cli_share_dst,
+		
+	nt_status = net_copy_driverfile(mem_ctx, cli_share_src, cli_share_dst, 
 		datafile, short_archi);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
-
-	nt_status = net_copy_driverfile(c, mem_ctx, cli_share_src, cli_share_dst,
+		
+	nt_status = net_copy_driverfile(mem_ctx, cli_share_src, cli_share_dst, 
 		configfile, short_archi);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
-
-	nt_status = net_copy_driverfile(c, mem_ctx, cli_share_src, cli_share_dst,
+		
+	nt_status = net_copy_driverfile(mem_ctx, cli_share_src, cli_share_dst, 
 		helpfile, short_archi);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
 	while (valid) {
-
+		
 		rpcstr_pull(dependentfiles, i1->dependentfiles+length, sizeof(dependentfiles), -1, STR_TERMINATE);
 		length += strlen(dependentfiles)+1;
-
+		
 		if (strlen(dependentfiles) > 0) {
 
-			nt_status = net_copy_driverfile(c, mem_ctx,
-					cli_share_src, cli_share_dst,
+			nt_status = net_copy_driverfile(mem_ctx, 
+					cli_share_src, cli_share_dst, 
 					dependentfiles, short_archi);
 			if (!NT_STATUS_IS_OK(nt_status))
 				return nt_status;
 		} else {
-			valid = false;
+			valid = False;
 		}
 	}
 
@@ -690,17 +683,17 @@
  *
  * the net_spoolss-functions aim to simplify spoolss-client-functions
  * required during the migration-process wrt buffer-sizes, returned
- * error-codes, etc.
+ * error-codes, etc. 
  *
  * this greatly reduces the complexitiy of the migrate-functions.
  *
  **/
 
 static bool net_spoolss_enum_printers(struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					char *name,
 					uint32 flags,
-					uint32 level,
+					uint32 level, 
 					uint32 *num_printers,
 					PRINTER_INFO_CTR *ctr)
 {
@@ -712,30 +705,29 @@
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf("cannot enum printers: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 static bool net_spoolss_open_printer_ex(struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
 					const char *printername,
-					uint32 access_required,
+					uint32 access_required, 
 					const char *username,
 					POLICY_HND *hnd)
 {
 	WERROR result;
 	fstring servername, printername2;
 
-	slprintf(servername, sizeof(servername)-1, "\\\\%s",
-		 pipe_hnd->desthost);
+	slprintf(servername, sizeof(servername)-1, "\\\\%s", pipe_hnd->cli->desthost);
 
 	fstrcpy(printername2, servername);
 	fstrcat(printername2, "\\");
 	fstrcat(printername2, printername);
 
-	DEBUG(10,("connecting to: %s as %s for %s and access: %x\n",
+	DEBUG(10,("connecting to: %s as %s for %s and access: %x\n", 
 		servername, username, printername2, access_required));
 
 	/* open printer */
@@ -745,27 +737,27 @@
 
 	/* be more verbose */
 	if (W_ERROR_V(result) == W_ERROR_V(WERR_ACCESS_DENIED)) {
-		d_fprintf(stderr, "no access to printer [%s] on [%s] for user [%s] granted\n",
+		d_fprintf(stderr, "no access to printer [%s] on [%s] for user [%s] granted\n", 
 			printername2, servername, username);
-		return false;
+		return False;
 	}
 
 	if (!W_ERROR_IS_OK(result)) {
-		d_fprintf(stderr, "cannot open printer %s on server %s: %s\n",
+		d_fprintf(stderr, "cannot open printer %s on server %s: %s\n", 
 			printername2, servername, dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	DEBUG(2,("got printer handle for printer: %s, server: %s\n",
+	DEBUG(2,("got printer handle for printer: %s, server: %s\n", 
 		printername2, servername));
 
-	return true;
+	return True;
 }
 
 static bool net_spoolss_getprinter(struct rpc_pipe_client *pipe_hnd,
 				TALLOC_CTX *mem_ctx,
 				POLICY_HND *hnd,
-				uint32 level,
+				uint32 level, 
 				PRINTER_INFO_CTR *ctr)
 {
 	WERROR result;
@@ -775,16 +767,16 @@
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf("cannot get printer-info: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 static bool net_spoolss_setprinter(struct rpc_pipe_client *pipe_hnd,
 				TALLOC_CTX *mem_ctx,
 				POLICY_HND *hnd,
-				uint32 level,
+				uint32 level, 
 				PRINTER_INFO_CTR *ctr)
 {
 	WERROR result;
@@ -794,10 +786,10 @@
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf("cannot set printer-info: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 
@@ -807,16 +799,16 @@
 					REGISTRY_VALUE *value)
 {
 	WERROR result;
-
+	
 	/* setprinterdata call */
 	result = rpccli_spoolss_setprinterdata(pipe_hnd, mem_ctx, hnd, value);
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf ("unable to set printerdata: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 
@@ -830,54 +822,54 @@
 
 	/* enumprinterkey call */
 	result = rpccli_spoolss_enumprinterkey(pipe_hnd, mem_ctx, hnd, keyname, keylist, NULL);
-
+		
 	if (!W_ERROR_IS_OK(result)) {
 		printf("enumprinterkey failed: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
-
-	return true;
+	
+	return True;
 }
 
 static bool net_spoolss_enumprinterdataex(struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
-					uint32 offered,
+					uint32 offered, 
 					POLICY_HND *hnd,
-					const char *keyname,
-					REGVAL_CTR *ctr)
+					const char *keyname, 
+					REGVAL_CTR *ctr) 
 {
 	WERROR result;
 
 	/* enumprinterdataex call */
 	result = rpccli_spoolss_enumprinterdataex(pipe_hnd, mem_ctx, hnd, keyname, ctr);
-
+			
 	if (!W_ERROR_IS_OK(result)) {
 		printf("enumprinterdataex failed: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
-
-	return true;
+	
+	return True;
 }
 
 
 static bool net_spoolss_setprinterdataex(struct rpc_pipe_client *pipe_hnd,
 					TALLOC_CTX *mem_ctx,
 					POLICY_HND *hnd,
-					char *keyname,
+					char *keyname, 
 					REGISTRY_VALUE *value)
 {
 	WERROR result;
 
 	/* setprinterdataex call */
-	result = rpccli_spoolss_setprinterdataex(pipe_hnd, mem_ctx, hnd,
+	result = rpccli_spoolss_setprinterdataex(pipe_hnd, mem_ctx, hnd, 
 					      keyname, value);
-
+	
 	if (!W_ERROR_IS_OK(result)) {
 		printf("could not set printerdataex: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
-
-	return true;
+	
+	return True;
 }
 
 static bool net_spoolss_enumforms(struct rpc_pipe_client *pipe_hnd,
@@ -886,6 +878,7 @@
 				int level,
 				uint32 *num_forms,
 				FORM_1 **forms)
+										       
 {
 	WERROR result;
 
@@ -894,10 +887,10 @@
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf("could not enum forms: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
-
-	return true;
+	
+	return True;
 }
 
 static bool net_spoolss_enumprinterdrivers (struct rpc_pipe_client *pipe_hnd,
@@ -915,36 +908,36 @@
 
 	if (!W_ERROR_IS_OK(result)) {
 		printf("cannot enum drivers: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 static bool net_spoolss_getprinterdriver(struct rpc_pipe_client *pipe_hnd,
-			     TALLOC_CTX *mem_ctx,
-			     POLICY_HND *hnd, uint32 level,
-			     const char *env, int version,
+			     TALLOC_CTX *mem_ctx, 
+			     POLICY_HND *hnd, uint32 level, 
+			     const char *env, int version, 
 			     PRINTER_DRIVER_CTR *ctr)
 {
 	WERROR result;
-
+	
 	/* getprinterdriver call */
 	result = rpccli_spoolss_getprinterdriver(
 			pipe_hnd, mem_ctx, hnd, level,
 			env, version, ctr);
 
 	if (!W_ERROR_IS_OK(result)) {
-		DEBUG(1,("cannot get driver (for architecture: %s): %s\n",
+		DEBUG(1,("cannot get driver (for architecture: %s): %s\n", 
 			env, dos_errstr(result)));
 		if (W_ERROR_V(result) != W_ERROR_V(WERR_UNKNOWN_PRINTER_DRIVER) &&
 		    W_ERROR_V(result) != W_ERROR_V(WERR_INVALID_ENVIRONMENT)) {
 			printf("cannot get driver: %s\n", dos_errstr(result));
 		}
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 
@@ -960,26 +953,26 @@
 	/* be more verbose */
 	if (W_ERROR_V(result) == W_ERROR_V(WERR_ACCESS_DENIED)) {
 		printf("You are not allowed to add drivers\n");
-		return false;
+		return False;
 	}
 	if (!W_ERROR_IS_OK(result)) {
 		printf("cannot add driver: %s\n", dos_errstr(result));
-		return false;
+		return False;
 	}
 
-	return true;
+	return True;
 }
 
 /**
- * abstraction function to get uint32 num_printers and PRINTER_INFO_CTR ctr
- * for a single printer or for all printers depending on argc/argv
+ * abstraction function to get uint32 num_printers and PRINTER_INFO_CTR ctr 
+ * for a single printer or for all printers depending on argc/argv 
  **/
 
 static bool get_printer_info(struct rpc_pipe_client *pipe_hnd,
-			TALLOC_CTX *mem_ctx,
+			TALLOC_CTX *mem_ctx, 
 			int level,
 			int argc,
-			const char **argv,
+			const char **argv, 
 			uint32 *num_printers,
 			PRINTER_INFO_CTR *ctr)
 {
@@ -989,10 +982,10 @@
 	/* no arguments given, enumerate all printers */
 	if (argc == 0) {
 
-		if (!net_spoolss_enum_printers(pipe_hnd, mem_ctx, NULL,
-				PRINTER_ENUM_LOCAL|PRINTER_ENUM_SHARED,
-				level, num_printers, ctr))
-			return false;
+		if (!net_spoolss_enum_printers(pipe_hnd, mem_ctx, NULL, 
+				PRINTER_ENUM_LOCAL|PRINTER_ENUM_SHARED, 
+				level, num_printers, ctr)) 
+			return False;
 
 		goto out;
 	}
@@ -1000,14 +993,12 @@
 
 	/* argument given, get a single printer by name */
 	if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, argv[0],
-					 MAXIMUM_ALLOWED_ACCESS,
-					 pipe_hnd->auth->user_name,
-					 &hnd))
-		return false;
+			MAXIMUM_ALLOWED_ACCESS,	pipe_hnd->cli->user_name, &hnd)) 
+		return False;
 
 	if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd, level, ctr)) {
 		rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd);
-		return false;
+		return False;
 	}
 
 	rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd);
@@ -1017,17 +1008,16 @@
 out:
 	DEBUG(3,("got %d printers\n", *num_printers));
 
-	return true;
+	return True;
 
 }
 
-/**
+/** 
  * List print-queues (including local printers that are not shared)
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1038,17 +1028,16 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_list_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+NTSTATUS rpc_printer_list_internals(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv)
 {
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-	uint32 i, num_printers;
+	uint32 i, num_printers; 
 	uint32 level = 2;
 	char *printername, *sharename;
 	PRINTER_INFO_CTR ctr;
@@ -1080,13 +1069,12 @@
 	return NT_STATUS_OK;
 }
 
-/**
- * List printer-drivers from a server
+/** 
+ * List printer-drivers from a server 
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1097,21 +1085,20 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_driver_list_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_driver_list_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 	uint32 i;
-	uint32 level = 3;
+	uint32 level = 3; 
 	PRINTER_DRIVER_CTR drv_ctr_enum;
 	int d;
-
+	
 	ZERO_STRUCT(drv_ctr_enum);
 
 	printf("listing printer-drivers\n");
@@ -1122,19 +1109,20 @@
 
 		/* enum remote drivers */
 		if (!net_spoolss_enumprinterdrivers(pipe_hnd, mem_ctx, level,
-				archi_table[i].long_archi,
+				archi_table[i].long_archi, 
 				&num_drivers, &drv_ctr_enum)) {
+										
 			nt_status = NT_STATUS_UNSUCCESSFUL;
 			goto done;
 		}
 
 		if (num_drivers == 0) {
-			d_printf ("no drivers found on server for architecture: [%s].\n",
+			d_printf ("no drivers found on server for architecture: [%s].\n", 
 				archi_table[i].long_archi);
 			continue;
-		}
-
-		d_printf("got %d printer-drivers for architecture: [%s]\n",
+		} 
+		
+		d_printf("got %d printer-drivers for architecture: [%s]\n", 
 			num_drivers, archi_table[i].long_archi);
 
 
@@ -1143,7 +1131,7 @@
 			display_print_driver_3(&(drv_ctr_enum.info3[d]));
 		}
 	}
-
+	
 	nt_status = NT_STATUS_OK;
 
 done:
@@ -1151,7 +1139,7 @@
 
 }
 
-/**
+/** 
  * Publish print-queues with args-wrapper
  *
  * @param cli A cli_state connected to the server.
@@ -1165,18 +1153,18 @@
  **/
 
 static NTSTATUS rpc_printer_publish_internals_args(struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv,
 					uint32 action)
 {
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-	uint32 i, num_printers;
+	uint32 i, num_printers; 
 	uint32 level = 7;
 	char *printername, *sharename;
 	PRINTER_INFO_CTR ctr, ctr_pub;
 	POLICY_HND hnd;
-	bool got_hnd = false;
+	bool got_hnd = False;
 	WERROR result;
 	const char *action_str;
 
@@ -1201,13 +1189,13 @@
 
 		/* open printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-			PRINTER_ALL_ACCESS, pipe_hnd->auth->user_name, &hnd))
+			PRINTER_ALL_ACCESS, pipe_hnd->cli->user_name, &hnd)) 
 			goto done;
 
-		got_hnd = true;
+		got_hnd = True;
 
 		/* check for existing dst printer */
-		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd, level, &ctr_pub))
+		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd, level, &ctr_pub)) 
 			goto done;
 
 		/* check action and set string */
@@ -1241,55 +1229,51 @@
 	nt_status = NT_STATUS_OK;
 
 done:
-	if (got_hnd)
+	if (got_hnd) 
 		rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd);
-
+	
 	return nt_status;
 }
 
-NTSTATUS rpc_printer_publish_publish_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_publish_publish_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
 	return rpc_printer_publish_internals_args(pipe_hnd, mem_ctx, argc, argv, SPOOL_DS_PUBLISH);
 }
 
-NTSTATUS rpc_printer_publish_unpublish_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_publish_unpublish_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
 	return rpc_printer_publish_internals_args(pipe_hnd, mem_ctx, argc, argv, SPOOL_DS_UNPUBLISH);
 }
 
-NTSTATUS rpc_printer_publish_update_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_publish_update_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
 	return rpc_printer_publish_internals_args(pipe_hnd, mem_ctx, argc, argv, SPOOL_DS_UPDATE);
 }
 
-/**
+/** 
  * List print-queues w.r.t. their publishing state
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1300,23 +1284,22 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_publish_list_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_publish_list_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-	uint32 i, num_printers;
+	uint32 i, num_printers; 
 	uint32 level = 7;
 	char *printername, *sharename;
 	char *guid;
 	PRINTER_INFO_CTR ctr, ctr_pub;
 	POLICY_HND hnd;
-	bool got_hnd = false;
+	bool got_hnd = False;
 	int state;
 
 	if (!get_printer_info(pipe_hnd, mem_ctx, 2, argc, argv, &num_printers, &ctr))
@@ -1342,13 +1325,13 @@
 
 		/* open printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-			PRINTER_ALL_ACCESS, cli->user_name, &hnd))
+			PRINTER_ALL_ACCESS, cli->user_name, &hnd)) 
 			goto done;
 
-		got_hnd = true;
+		got_hnd = True;
 
 		/* check for existing dst printer */
-		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd, level, &ctr_pub))
+		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd, level, &ctr_pub)) 
 			goto done;
 
 		rpcstr_pull_talloc(mem_ctx,
@@ -1363,7 +1346,7 @@
 		switch (state) {
 			case SPOOL_DS_PUBLISH:
 				printf("printer [%s] is published", sharename);
-				if (c->opt_verbose)
+				if (opt_verbose)
 					printf(", guid: %s", guid);
 				printf("\n");
 				break;
@@ -1382,19 +1365,18 @@
 	nt_status = NT_STATUS_OK;
 
 done:
-	if (got_hnd)
+	if (got_hnd) 
 		rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd);
-
+	
 	return nt_status;
 }
 
-/**
+/** 
  * Migrate Printer-ACLs from a source server to the destination server
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1405,16 +1387,15 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_migrate_security_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_migrate_security_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
-	/* TODO: what now, info2 or info3 ?
+	/* TODO: what now, info2 or info3 ? 
 	   convince jerry that we should add clientside setacls level 3 at least
 	*/
 	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
@@ -1422,8 +1403,8 @@
 	uint32 num_printers;
 	uint32 level = 2;
 	char *printername, *sharename;
-	bool got_hnd_src = false;
-	bool got_hnd_dst = false;
+	bool got_hnd_src = False;
+	bool got_hnd_dst = False;
 	struct rpc_pipe_client *pipe_hnd_dst = NULL;
 	POLICY_HND hnd_src, hnd_dst;
 	PRINTER_INFO_CTR ctr_src, ctr_dst, ctr_enum;
@@ -1434,8 +1415,7 @@
 	DEBUG(3,("copying printer ACLs\n"));
 
 	/* connect destination PI_SPOOLSS */
-	nt_status = connect_dst_pipe(c, &cli_dst, &pipe_hnd_dst,
-				     &syntax_spoolss);
+	nt_status = connect_dst_pipe(&cli_dst, &pipe_hnd_dst, PI_SPOOLSS);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
@@ -1474,10 +1454,10 @@
 		   get any real NT_STATUS-codes anymore from now on */
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 
-		d_printf("migrating printer ACLs for:     [%s] / [%s]\n",
+		d_printf("migrating printer ACLs for:     [%s] / [%s]\n", 
 			printername, sharename);
 
-		/* according to msdn you have specify these access-rights
+		/* according to msdn you have specify these access-rights 
 		   to see the security descriptor
 			- READ_CONTROL (DACL)
 			- ACCESS_SYSTEM_SECURITY (SACL)
@@ -1485,54 +1465,54 @@
 
 		/* open src printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src))
+			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src)) 
 			goto done;
 
-		got_hnd_src = true;
+		got_hnd_src = True;
 
 		/* open dst printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd_dst, mem_ctx, sharename,
-			PRINTER_ALL_ACCESS, cli_dst->user_name, &hnd_dst))
+			PRINTER_ALL_ACCESS, cli_dst->user_name, &hnd_dst)) 
 			goto done;
 
-		got_hnd_dst = true;
+		got_hnd_dst = True;
 
 		/* check for existing dst printer */
-		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, level, &ctr_dst))
+		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, level, &ctr_dst)) 
 			goto done;
 
 		/* check for existing src printer */
-		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd_src, 3, &ctr_src))
+		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd_src, 3, &ctr_src)) 
 			goto done;
 
 		/* Copy Security Descriptor */
 
 		/* copy secdesc (info level 2) */
-		ctr_dst.printers_2->devmode = NULL;
+		ctr_dst.printers_2->devmode = NULL; 
 		ctr_dst.printers_2->secdesc = dup_sec_desc(mem_ctx, ctr_src.printers_3->secdesc);
 
-		if (c->opt_verbose)
+		if (opt_verbose)
 			display_sec_desc(ctr_dst.printers_2->secdesc);
-
-		if (!net_spoolss_setprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 2, &ctr_dst))
+		
+		if (!net_spoolss_setprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 2, &ctr_dst)) 
 			goto done;
-
+		
 		DEBUGADD(1,("\tSetPrinter of SECDESC succeeded\n"));
 
 
 		/* close printer handles here */
 		if (got_hnd_src) {
 			rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd_src);
-			got_hnd_src = false;
+			got_hnd_src = False;
 		}
 
 		if (got_hnd_dst) {
 			rpccli_spoolss_close_printer(pipe_hnd_dst, mem_ctx, &hnd_dst);
-			got_hnd_dst = false;
+			got_hnd_dst = False;
 		}
 
 	}
-
+	
 	nt_status = NT_STATUS_OK;
 
 done:
@@ -1551,13 +1531,12 @@
 	return nt_status;
 }
 
-/**
+/** 
  * Migrate printer-forms from a src server to the dst server
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1568,12 +1547,11 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_migrate_forms_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_migrate_forms_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -1583,8 +1561,8 @@
 	uint32 num_printers;
 	uint32 level = 1;
 	char *printername, *sharename;
-	bool got_hnd_src = false;
-	bool got_hnd_dst = false;
+	bool got_hnd_src = False;
+	bool got_hnd_dst = False;
 	struct rpc_pipe_client *pipe_hnd_dst = NULL;
 	POLICY_HND hnd_src, hnd_dst;
 	PRINTER_INFO_CTR ctr_enum, ctr_dst;
@@ -1597,8 +1575,7 @@
 	DEBUG(3,("copying forms\n"));
 
 	/* connect destination PI_SPOOLSS */
-	nt_status = connect_dst_pipe(c, &cli_dst, &pipe_hnd_dst,
-				     &syntax_spoolss);
+	nt_status = connect_dst_pipe(&cli_dst, &pipe_hnd_dst, PI_SPOOLSS);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
@@ -1641,22 +1618,22 @@
 
 		/* open src printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src))
+			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src)) 
 			goto done;
 
-		got_hnd_src = true;
+		got_hnd_src = True;
 
 
 		/* open dst printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd_dst, mem_ctx, sharename,
-			PRINTER_ALL_ACCESS, cli->user_name, &hnd_dst))
+			PRINTER_ALL_ACCESS, cli->user_name, &hnd_dst)) 
 			goto done;
 
-		got_hnd_dst = true;
+		got_hnd_dst = True;
 
 
 		/* check for existing dst printer */
-		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, level, &ctr_dst))
+		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, level, &ctr_dst)) 
 			goto done;
 
 		/* finally migrate forms */
@@ -1670,8 +1647,8 @@
 
 			FORM form;
 			fstring form_name;
-
-			/* only migrate FORM_PRINTER types, according to jerry
+			
+			/* only migrate FORM_PRINTER types, according to jerry 
 			   FORM_BUILTIN-types are hard-coded in samba */
 			if (forms[f].flag != FORM_PRINTER)
 				continue;
@@ -1680,8 +1657,8 @@
 				rpcstr_pull(form_name, forms[f].name.buffer,
 					sizeof(form_name), -1, STR_TERMINATE);
 
-			if (c->opt_verbose)
-				d_printf("\tmigrating form # %d [%s] of type [%d]\n",
+			if (opt_verbose)
+				d_printf("\tmigrating form # %d [%s] of type [%d]\n", 
 					f, form_name, forms[f].flag);
 
 			/* is there a more elegant way to do that ? */
@@ -1692,19 +1669,19 @@
 			form.top	= forms[f].top;
 			form.right	= forms[f].right;
 			form.bottom	= forms[f].bottom;
-
+			
 			init_unistr2(&form.name, form_name, UNI_STR_TERMINATE);
 
-			/* FIXME: there might be something wrong with samba's
+			/* FIXME: there might be something wrong with samba's 
 			   builtin-forms */
-			result = rpccli_spoolss_addform(pipe_hnd_dst, mem_ctx,
+			result = rpccli_spoolss_addform(pipe_hnd_dst, mem_ctx, 
 				&hnd_dst, 1, &form);
 			if (!W_ERROR_IS_OK(result)) {
-				d_printf("\tAddForm form %d: [%s] refused.\n",
+				d_printf("\tAddForm form %d: [%s] refused.\n", 
 					f, form_name);
 				continue;
 			}
-
+	
 			DEBUGADD(1,("\tAddForm of [%s] succeeded\n", form_name));
 		}
 
@@ -1712,12 +1689,12 @@
 		/* close printer handles here */
 		if (got_hnd_src) {
 			rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd_src);
-			got_hnd_src = false;
+			got_hnd_src = False;
 		}
 
 		if (got_hnd_dst) {
 			rpccli_spoolss_close_printer(pipe_hnd_dst, mem_ctx, &hnd_dst);
-			got_hnd_dst = false;
+			got_hnd_dst = False;
 		}
 	}
 
@@ -1737,13 +1714,12 @@
 	return nt_status;
 }
 
-/**
+/** 
  * Migrate printer-drivers from a src server to the dst server
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1754,12 +1730,11 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_migrate_drivers_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_migrate_drivers_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -1768,10 +1743,10 @@
 	uint32 num_printers;
 	uint32 level = 3;
 	char *printername, *sharename;
-	bool got_hnd_src = false;
-	bool got_hnd_dst = false;
-	bool got_src_driver_share = false;
-	bool got_dst_driver_share = false;
+	bool got_hnd_src = False;
+	bool got_hnd_dst = False;
+	bool got_src_driver_share = False;
+	bool got_dst_driver_share = False;
 	struct rpc_pipe_client *pipe_hnd_dst = NULL;
 	POLICY_HND hnd_src, hnd_dst;
 	PRINTER_DRIVER_CTR drv_ctr_src, drv_ctr_dst;
@@ -1788,27 +1763,26 @@
 
 	DEBUG(3,("copying printer-drivers\n"));
 
-	nt_status = connect_dst_pipe(c, &cli_dst, &pipe_hnd_dst,
-				     &syntax_spoolss);
+	nt_status = connect_dst_pipe(&cli_dst, &pipe_hnd_dst, PI_SPOOLSS);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
 	/* open print$-share on the src server */
-	nt_status = connect_to_service(c, &cli_share_src, &cli->dest_ss,
+	nt_status = connect_to_service(&cli_share_src, &cli->dest_ss,
 			cli->desthost, "print$", "A:");
 	if (!NT_STATUS_IS_OK(nt_status))
 		goto done;
 
-	got_src_driver_share = true;
+	got_src_driver_share = True;
 
 
 	/* open print$-share on the dst server */
-	nt_status = connect_to_service(c, &cli_share_dst, &cli_dst->dest_ss,
+	nt_status = connect_to_service(&cli_share_dst, &cli_dst->dest_ss,
 			cli_dst->desthost, "print$", "A:");
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
-	got_dst_driver_share = true;
+	got_dst_driver_share = True;
 
 
 	/* enum src printers */
@@ -1842,50 +1816,48 @@
 			goto done;
 		}
 
-		/* we can reset NT_STATUS here because we do not
+		/* we can reset NT_STATUS here because we do not 
 		   get any real NT_STATUS-codes anymore from now on */
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 
-		d_printf("migrating printer driver for:   [%s] / [%s]\n",
+		d_printf("migrating printer driver for:   [%s] / [%s]\n", 
 			printername, sharename);
 
 		/* open dst printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd_dst, mem_ctx, sharename,
-			PRINTER_ALL_ACCESS, cli->user_name, &hnd_dst))
+			PRINTER_ALL_ACCESS, cli->user_name, &hnd_dst)) 
 			goto done;
 
-		got_hnd_dst = true;
+		got_hnd_dst = True;
 
 		/* check for existing dst printer */
-		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 2, &info_ctr_dst))
+		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 2, &info_ctr_dst)) 
 			goto done;
 
 
 		/* open src printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-						 MAXIMUM_ALLOWED_ACCESS,
-						 pipe_hnd->auth->user_name,
-						 &hnd_src))
+			MAXIMUM_ALLOWED_ACCESS, pipe_hnd->cli->user_name, &hnd_src)) 
 			goto done;
 
-		got_hnd_src = true;
+		got_hnd_src = True;
 
 
 		/* in a first step call getdriver for each shared printer (per arch)
 		   to get a list of all files that have to be copied */
-
+		   
 	        for (i=0; archi_table[i].long_archi!=NULL; i++) {
 
 			/* getdriver src */
-			if (!net_spoolss_getprinterdriver(pipe_hnd, mem_ctx, &hnd_src,
-					level, archi_table[i].long_archi,
-					archi_table[i].version, &drv_ctr_src))
+			if (!net_spoolss_getprinterdriver(pipe_hnd, mem_ctx, &hnd_src, 
+					level, archi_table[i].long_archi, 
+					archi_table[i].version, &drv_ctr_src)) 
 				continue;
 
-			rpcstr_pull(drivername, drv_ctr_src.info3->name.buffer,
+			rpcstr_pull(drivername, drv_ctr_src.info3->name.buffer, 
 					sizeof(drivername), -1, STR_TERMINATE);
 
-			if (c->opt_verbose)
+			if (opt_verbose)
 				display_print_driver_3(drv_ctr_src.info3);
 
 
@@ -1896,20 +1868,20 @@
 
 
 			/* copy driver-files */
-			nt_status = copy_print_driver_3(c, mem_ctx, cli_share_src, cli_share_dst,
-							archi_table[i].short_archi,
+			nt_status = copy_print_driver_3(mem_ctx, cli_share_src, cli_share_dst, 
+							archi_table[i].short_archi, 
 							drv_ctr_src.info3);
 			if (!NT_STATUS_IS_OK(nt_status))
 				goto done;
 
 
 			/* adddriver dst */
-			if (!net_spoolss_addprinterdriver(pipe_hnd_dst, mem_ctx, level, &drv_ctr_src)) {
+			if (!net_spoolss_addprinterdriver(pipe_hnd_dst, mem_ctx, level, &drv_ctr_src)) { 
 				nt_status = NT_STATUS_UNSUCCESSFUL;
 				goto done;
 			}
-
-			DEBUGADD(1,("Sucessfully added driver [%s] for printer [%s]\n",
+				
+			DEBUGADD(1,("Sucessfully added driver [%s] for printer [%s]\n", 
 				drivername, printername));
 
 		}
@@ -1922,25 +1894,25 @@
 
 		/* setdriver dst */
 		init_unistr(&info_ctr_dst.printers_2->drivername, drivername);
-
-		if (!net_spoolss_setprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 2, &info_ctr_dst)) {
+		
+		if (!net_spoolss_setprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 2, &info_ctr_dst)) { 
 			nt_status = NT_STATUS_UNSUCCESSFUL;
 			goto done;
 		}
 
-		DEBUGADD(1,("Sucessfully set driver %s for printer %s\n",
+		DEBUGADD(1,("Sucessfully set driver %s for printer %s\n", 
 			drivername, printername));
 
 		/* close dst */
 		if (got_hnd_dst) {
 			rpccli_spoolss_close_printer(pipe_hnd_dst, mem_ctx, &hnd_dst);
-			got_hnd_dst = false;
+			got_hnd_dst = False;
 		}
 
 		/* close src */
 		if (got_hnd_src) {
 			rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd_src);
-			got_hnd_src = false;
+			got_hnd_src = False;
 		}
 	}
 
@@ -1968,14 +1940,13 @@
 
 }
 
-/**
+/** 
  * Migrate printer-queues from a src to the dst server
  * (requires a working "addprinter command" to be installed for the local smbd)
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -1986,12 +1957,11 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_migrate_printers_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_migrate_printers_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -2003,15 +1973,14 @@
 	struct cli_state *cli_dst = NULL;
 	POLICY_HND hnd_dst, hnd_src;
 	char *printername, *sharename;
-	bool got_hnd_src = false;
-	bool got_hnd_dst = false;
+	bool got_hnd_src = False;
+	bool got_hnd_dst = False;
 	struct rpc_pipe_client *pipe_hnd_dst = NULL;
 
 	DEBUG(3,("copying printers\n"));
 
 	/* connect destination PI_SPOOLSS */
-	nt_status = connect_dst_pipe(c, &cli_dst, &pipe_hnd_dst,
-				     &syntax_spoolss);
+	nt_status = connect_dst_pipe(&cli_dst, &pipe_hnd_dst, PI_SPOOLSS);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
@@ -2048,16 +2017,16 @@
 		   get any real NT_STATUS-codes anymore from now on */
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 
-		d_printf("migrating printer queue for:    [%s] / [%s]\n",
+		d_printf("migrating printer queue for:    [%s] / [%s]\n", 
 			printername, sharename);
 
 		/* open dst printer handle */
-		if (!net_spoolss_open_printer_ex(pipe_hnd_dst, mem_ctx, sharename,
+		if (!net_spoolss_open_printer_ex(pipe_hnd_dst, mem_ctx, sharename, 
 			PRINTER_ALL_ACCESS, cli->user_name, &hnd_dst)) {
-
+			
 			DEBUG(1,("could not open printer: %s\n", sharename));
 		} else {
-			got_hnd_dst = true;
+			got_hnd_dst = True;
 		}
 
 		/* check for existing dst printer */
@@ -2068,33 +2037,33 @@
 			/* close printer handle here - dst only, not got src yet. */
 			if (got_hnd_dst) {
 				rpccli_spoolss_close_printer(pipe_hnd_dst, mem_ctx, &hnd_dst);
-				got_hnd_dst = false;
+				got_hnd_dst = False;
 			}
 			continue;
 		}
 
-		/* now get again src printer ctr via getprinter,
+		/* now get again src printer ctr via getprinter, 
 		   we first need a handle for that */
 
 		/* open src printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src))
+			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src)) 
 			goto done;
 
-		got_hnd_src = true;
+		got_hnd_src = True;
 
 		/* getprinter on the src server */
-		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd_src, level, &ctr_src))
+		if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd_src, level, &ctr_src)) 
 			goto done;
 
-		/* copy each src printer to a dst printer 1:1,
+		/* copy each src printer to a dst printer 1:1, 
 		   maybe some values have to be changed though */
 		d_printf("creating printer: %s\n", printername);
 		result = rpccli_spoolss_addprinterex (pipe_hnd_dst, mem_ctx, level, &ctr_src);
 
 		if (W_ERROR_IS_OK(result))
 			d_printf ("printer [%s] successfully added.\n", printername);
-		else if (W_ERROR_V(result) == W_ERROR_V(WERR_PRINTER_ALREADY_EXISTS))
+		else if (W_ERROR_V(result) == W_ERROR_V(WERR_PRINTER_ALREADY_EXISTS)) 
 			d_fprintf (stderr, "printer [%s] already exists.\n", printername);
 		else {
 			d_fprintf (stderr, "could not create printer [%s]\n", printername);
@@ -2104,12 +2073,12 @@
 		/* close printer handles here */
 		if (got_hnd_src) {
 			rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd_src);
-			got_hnd_src = false;
+			got_hnd_src = False;
 		}
 
 		if (got_hnd_dst) {
 			rpccli_spoolss_close_printer(pipe_hnd_dst, mem_ctx, &hnd_dst);
-			got_hnd_dst = false;
+			got_hnd_dst = False;
 		}
 	}
 
@@ -2128,14 +2097,13 @@
 	return nt_status;
 }
 
-/**
+/** 
  * Migrate Printer-Settings from a src server to the dst server
  * (for this to work, printers and drivers already have to be migrated earlier)
  *
  * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
+ * argc, argv which are passed through. 
  *
- * @param c	A net_context structure
  * @param domain_sid The domain sid aquired from the remote server
  * @param cli A cli_state connected to the server.
  * @param mem_ctx Talloc context, destoyed on compleation of the function.
@@ -2146,12 +2114,11 @@
  * @return Normal NTSTATUS return.
  **/
 
-NTSTATUS rpc_printer_migrate_settings_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+NTSTATUS rpc_printer_migrate_settings_internals(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv)
 {
@@ -2164,8 +2131,8 @@
 	uint32 num_printers, val_needed, data_needed;
 	uint32 level = 2;
 	char *printername, *sharename;
-	bool got_hnd_src = false;
-	bool got_hnd_dst = false;
+	bool got_hnd_src = False;
+	bool got_hnd_dst = False;
 	struct rpc_pipe_client *pipe_hnd_dst = NULL;
 	POLICY_HND hnd_src, hnd_dst;
 	PRINTER_INFO_CTR ctr_enum, ctr_dst, ctr_dst_publish;
@@ -2181,8 +2148,7 @@
 	DEBUG(3,("copying printer settings\n"));
 
 	/* connect destination PI_SPOOLSS */
-	nt_status = connect_dst_pipe(c, &cli_dst, &pipe_hnd_dst,
-				     &syntax_spoolss);
+	nt_status = connect_dst_pipe(&cli_dst, &pipe_hnd_dst, PI_SPOOLSS);
 	if (!NT_STATUS_IS_OK(nt_status))
 		return nt_status;
 
@@ -2223,47 +2189,47 @@
 			nt_status = NT_STATUS_UNSUCCESSFUL;
 			goto done;
 		}
-		/* we can reset NT_STATUS here because we do not
+		/* we can reset NT_STATUS here because we do not 
 		   get any real NT_STATUS-codes anymore from now on */
 		nt_status = NT_STATUS_UNSUCCESSFUL;
 
-		d_printf("migrating printer settings for: [%s] / [%s]\n",
+		d_printf("migrating printer settings for: [%s] / [%s]\n", 
 			printername, sharename);
 
 
 		/* open src printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src))
+			MAXIMUM_ALLOWED_ACCESS, cli->user_name, &hnd_src)) 
 			goto done;
 
-		got_hnd_src = true;
+		got_hnd_src = True;
 
 
 		/* open dst printer handle */
 		if (!net_spoolss_open_printer_ex(pipe_hnd_dst, mem_ctx, sharename,
-			PRINTER_ALL_ACCESS, cli_dst->user_name, &hnd_dst))
+			PRINTER_ALL_ACCESS, cli_dst->user_name, &hnd_dst)) 
 			goto done;
 
-		got_hnd_dst = true;
+		got_hnd_dst = True;
 
 
 		/* check for existing dst printer */
-		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst,
-				level, &ctr_dst))
+		if (!net_spoolss_getprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 
+				level, &ctr_dst)) 
 			goto done;
 
 
-		/* STEP 1: COPY DEVICE-MODE and other
+		/* STEP 1: COPY DEVICE-MODE and other 
 			   PRINTER_INFO_2-attributes
 		*/
 
 		ctr_dst.printers_2 = &ctr_enum.printers_2[i];
 
-		/* why is the port always disconnected when the printer
+		/* why is the port always disconnected when the printer 
 		   is correctly installed (incl. driver ???) */
 		init_unistr( &ctr_dst.printers_2->portname, SAMBA_PRINTER_PORT_NAME);
 
-		/* check if printer is published */
+		/* check if printer is published */ 
 		if (ctr_enum.printers_2[i].attributes & PRINTER_ATTRIBUTE_PUBLISHED) {
 
 			/* check for existing dst printer */
@@ -2272,7 +2238,7 @@
 
 			ctr_dst_publish.printers_7->action = SPOOL_DS_PUBLISH;
 
-			/* ignore false from setprinter due to WERR_IO_PENDING */
+			/* ignore False from setprinter due to WERR_IO_PENDING */
 	 		net_spoolss_setprinter(pipe_hnd_dst, mem_ctx, &hnd_dst, 7, &ctr_dst_publish);
 
 			DEBUG(3,("republished printer\n"));
@@ -2298,21 +2264,21 @@
 			}
 
 			init_unistr(&ctr_dst.printers_2->devmode->devicename,
-				    devicename);
+				    devicename); 
 #endif
 			if (!net_spoolss_setprinter(pipe_hnd_dst, mem_ctx, &hnd_dst,
-						    level, &ctr_dst))
+						    level, &ctr_dst)) 
 				goto done;
-
+		
 			DEBUGADD(1,("\tSetPrinter of DEVICEMODE succeeded\n"));
 		}
 
 		/* STEP 2: COPY REGISTRY VALUES */
-
-		/* please keep in mind that samba parse_spools gives horribly
-		   crippled results when used to rpccli_spoolss_enumprinterdataex
+	
+		/* please keep in mind that samba parse_spools gives horribly 
+		   crippled results when used to rpccli_spoolss_enumprinterdataex 
 		   a win2k3-server.  (Bugzilla #1851)
-		   FIXME: IIRC I've seen it too on a win2k-server
+		   FIXME: IIRC I've seen it too on a win2k-server 
 		*/
 
 		/* enumerate data on src handle */
@@ -2321,9 +2287,9 @@
 
 		/* loop for all printerdata of "PrinterDriverData" */
 		while (W_ERROR_IS_OK(result)) {
-
+			
 			REGISTRY_VALUE value;
-
+			
 			result = rpccli_spoolss_enumprinterdata(
 				pipe_hnd, mem_ctx, &hnd_src, p++, val_needed,
 				data_needed, 0, 0, &value);
@@ -2332,24 +2298,24 @@
 			if (W_ERROR_IS_OK(result)) {
 
 				/* display_value */
-				if (c->opt_verbose)
+				if (opt_verbose) 
 					display_reg_value(SPOOL_PRINTERDATA_KEY, value);
 
 				/* set_value */
-				if (!net_spoolss_setprinterdata(pipe_hnd_dst, mem_ctx,
-								&hnd_dst, &value))
+				if (!net_spoolss_setprinterdata(pipe_hnd_dst, mem_ctx, 
+								&hnd_dst, &value)) 
 					goto done;
 
-				DEBUGADD(1,("\tSetPrinterData of [%s] succeeded\n",
+				DEBUGADD(1,("\tSetPrinterData of [%s] succeeded\n", 
 					value.valuename));
 			}
 		}
-
+		
 		/* STEP 3: COPY SUBKEY VALUES */
 
-		/* here we need to enum all printer_keys and then work
+		/* here we need to enum all printer_keys and then work 
 		   on the result with enum_printer_key_ex. nt4 does not
-		   respond to enumprinterkey, win2k does, so continue
+		   respond to enumprinterkey, win2k does, so continue 
 		   in case of an error */
 
 		if (!net_spoolss_enumprinterkey(pipe_hnd, mem_ctx, &hnd_src, "", &keylist)) {
@@ -2358,9 +2324,9 @@
 		}
 
 
-		/* work on a list of printer keys
+		/* work on a list of printer keys 
 		   each key has to be enumerated to get all required
-		   information.  information is then set via setprinterdataex-calls */
+		   information.  information is then set via setprinterdataex-calls */ 
 
 		if (keylist == NULL)
 			continue;
@@ -2383,34 +2349,34 @@
 				return NT_STATUS_NO_MEMORY;
 
 			/* enumerate all src subkeys */
-			if (!net_spoolss_enumprinterdataex(pipe_hnd, mem_ctx, 0,
-							   &hnd_src, subkey,
-							   reg_ctr))
+			if (!net_spoolss_enumprinterdataex(pipe_hnd, mem_ctx, 0, 
+							   &hnd_src, subkey, 
+							   reg_ctr)) 
 				goto done;
 
 			for (j=0; j < reg_ctr->num_values; j++) {
-
+			
 				REGISTRY_VALUE value;
 				UNISTR2 data;
-
-				/* although samba replies with sane data in most cases we
+			
+				/* although samba replies with sane data in most cases we 
 				   should try to avoid writing wrong registry data */
-
-				if (strequal(reg_ctr->values[j]->valuename, SPOOL_REG_PORTNAME) ||
+	
+				if (strequal(reg_ctr->values[j]->valuename, SPOOL_REG_PORTNAME) || 
 				    strequal(reg_ctr->values[j]->valuename, SPOOL_REG_UNCNAME) ||
 				    strequal(reg_ctr->values[j]->valuename, SPOOL_REG_URL) ||
 				    strequal(reg_ctr->values[j]->valuename, SPOOL_REG_SHORTSERVERNAME) ||
 				    strequal(reg_ctr->values[j]->valuename, SPOOL_REG_SERVERNAME)) {
 
 					if (strequal(reg_ctr->values[j]->valuename, SPOOL_REG_PORTNAME)) {
-
+				
 						/* although windows uses a multi-sz, we use a sz */
 						init_unistr2(&data, SAMBA_PRINTER_PORT_NAME, UNI_STR_TERMINATE);
 						fstrcpy(value.valuename, SPOOL_REG_PORTNAME);
 					}
-
+				
 					if (strequal(reg_ctr->values[j]->valuename, SPOOL_REG_UNCNAME)) {
-
+					
 						if (asprintf(&unc_name, "\\\\%s\\%s", longname, sharename) < 0) {
 							nt_status = NT_STATUS_NO_MEMORY;
 							goto done;
@@ -2454,27 +2420,27 @@
 						value.data_p = NULL;
 					}
 
-					if (c->opt_verbose)
+					if (opt_verbose) 
 						display_reg_value(subkey, value);
 
 					/* here we have to set all subkeys on the dst server */
-					if (!net_spoolss_setprinterdataex(pipe_hnd_dst, mem_ctx, &hnd_dst,
-							subkey, &value))
+					if (!net_spoolss_setprinterdataex(pipe_hnd_dst, mem_ctx, &hnd_dst, 
+							subkey, &value)) 
 						goto done;
-
+							
 				} else {
 
-					if (c->opt_verbose)
+					if (opt_verbose) 
 						display_reg_value(subkey, *(reg_ctr->values[j]));
 
 					/* here we have to set all subkeys on the dst server */
-					if (!net_spoolss_setprinterdataex(pipe_hnd_dst, mem_ctx, &hnd_dst,
-							subkey, reg_ctr->values[j]))
+					if (!net_spoolss_setprinterdataex(pipe_hnd_dst, mem_ctx, &hnd_dst, 
+							subkey, reg_ctr->values[j])) 
 						goto done;
 
 				}
 
-				DEBUGADD(1,("\tSetPrinterDataEx of key [%s\\%s] succeeded\n",
+				DEBUGADD(1,("\tSetPrinterDataEx of key [%s\\%s] succeeded\n", 
 						subkey, reg_ctr->values[j]->valuename));
 
 			}
@@ -2487,16 +2453,16 @@
 		/* close printer handles here */
 		if (got_hnd_src) {
 			rpccli_spoolss_close_printer(pipe_hnd, mem_ctx, &hnd_src);
-			got_hnd_src = false;
+			got_hnd_src = False;
 		}
 
 		if (got_hnd_dst) {
 			rpccli_spoolss_close_printer(pipe_hnd_dst, mem_ctx, &hnd_dst);
-			got_hnd_dst = false;
+			got_hnd_dst = False;
 		}
 
 	}
-
+	
 	nt_status = NT_STATUS_OK;
 
 done:

Modified: branches/samba/upstream/source/utils/net_rpc_registry.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_registry.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_registry.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -47,7 +47,7 @@
 	{
 		(*reg_type) = HKEY_LOCAL_MACHINE;
 	} else if (strequal(hivename, "HKCR") ||
-		   strequal(hivename, "HKEY_CLASSES_ROOT"))
+		   strequal(hivename, "HKEY_CLASSES_ROOT")) 
 	{
 		(*reg_type) = HKEY_CLASSES_ROOT;
 	} else if (strequal(hivename, "HKU") ||
@@ -172,7 +172,7 @@
 		status = rpccli_winreg_EnumKey(pipe_hnd, mem_ctx, key_hnd,
 					       i, &name_buf, &class_buf,
 					       &modtime, &werr);
-
+		
 		if (W_ERROR_EQUAL(werr,
 				  WERR_NO_MORE_ITEMS) ) {
 			status = NT_STATUS_OK;
@@ -369,12 +369,11 @@
 	return result;
 }
 
-static NTSTATUS rpc_registry_setvalue_internal(struct net_context *c,
-					       const DOM_SID *domain_sid,
-					       const char *domain_name,
+static NTSTATUS rpc_registry_setvalue_internal(const DOM_SID *domain_sid,
+					       const char *domain_name, 
 					       struct cli_state *cli,
 					       struct rpc_pipe_client *pipe_hnd,
-					       TALLOC_CTX *mem_ctx,
+					       TALLOC_CTX *mem_ctx, 
 					       int argc,
 					       const char **argv )
 {
@@ -382,7 +381,7 @@
 	NTSTATUS status;
 	struct registry_value value;
 
-	status = registry_openkey(mem_ctx, pipe_hnd, argv[0],
+	status = registry_openkey(mem_ctx, pipe_hnd, argv[0], 
 				  SEC_RIGHTS_MAXIMUM_ALLOWED,
 				  &hive_hnd, &key_hnd);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -426,25 +425,23 @@
 	return NT_STATUS_OK;
 }
 
-static int rpc_registry_setvalue(struct net_context *c, int argc,
-				 const char **argv )
+static int rpc_registry_setvalue( int argc, const char **argv )
 {
-	if (argc < 4 || c->display_usage) {
+	if (argc < 4) {
 		d_fprintf(stderr, "usage: net rpc registry setvalue <key> "
 			  "<valuename> <type> [<val>]+\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command( NULL, PI_WINREG, 0, 
 		rpc_registry_setvalue_internal, argc, argv );
 }
 
-static NTSTATUS rpc_registry_deletevalue_internal(struct net_context *c,
-						  const DOM_SID *domain_sid,
-						  const char *domain_name,
+static NTSTATUS rpc_registry_deletevalue_internal(const DOM_SID *domain_sid,
+						  const char *domain_name, 
 						  struct cli_state *cli,
 						  struct rpc_pipe_client *pipe_hnd,
-						  TALLOC_CTX *mem_ctx,
+						  TALLOC_CTX *mem_ctx, 
 						  int argc,
 						  const char **argv )
 {
@@ -479,26 +476,23 @@
 	return status;
 }
 
-static int rpc_registry_deletevalue(struct net_context *c, int argc,
-				    const char **argv )
+static int rpc_registry_deletevalue( int argc, const char **argv )
 {
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net rpc registry deletevalue <key> "
 			  "<valuename>\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command( NULL, PI_WINREG, 0, 
 		rpc_registry_deletevalue_internal, argc, argv );
 }
 
-static NTSTATUS rpc_registry_getvalue_internal(struct net_context *c,
-					       const DOM_SID *domain_sid,
+static NTSTATUS rpc_registry_getvalue_internal(const DOM_SID *domain_sid,
 					       const char *domain_name,
 					       struct cli_state *cli,
 					       struct rpc_pipe_client *pipe_hnd,
 					       TALLOC_CTX *mem_ctx,
-					       bool raw,
 					       int argc,
 					       const char **argv)
 {
@@ -569,7 +563,7 @@
 		goto done;
 	}
 
-	print_registry_value(value, raw);
+	print_registry_value(value);
 
 done:
 	rpccli_winreg_CloseKey(pipe_hnd, tmp_ctx, &key_hnd, NULL);
@@ -580,66 +574,23 @@
 	return status;
 }
 
-static NTSTATUS rpc_registry_getvalue_full(struct net_context *c,
-					   const DOM_SID *domain_sid,
-					   const char *domain_name,
-					   struct cli_state *cli,
-					   struct rpc_pipe_client *pipe_hnd,
-					   TALLOC_CTX *mem_ctx,
-					   int argc,
-					   const char **argv)
+static int rpc_registry_getvalue(int argc, const char **argv)
 {
-	return rpc_registry_getvalue_internal(c, domain_sid, domain_name,
-					      cli, pipe_hnd, mem_ctx, false,
-					      argc, argv);
-}
-
-static int rpc_registry_getvalue(struct net_context *c, int argc,
-				 const char **argv)
-{
-	if (argc != 2 || c->display_usage) {
-		d_fprintf(stderr, "usage: net rpc registry getvalue <key> "
+	if (argc != 2) {
+		d_fprintf(stderr, "usage: net rpc registry deletevalue <key> "
 			  "<valuename>\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
-		rpc_registry_getvalue_full, argc, argv);
+	return run_rpc_command(NULL, PI_WINREG, 0,
+		rpc_registry_getvalue_internal, argc, argv);
 }
 
-static NTSTATUS rpc_registry_getvalue_raw(struct net_context *c,
-					  const DOM_SID *domain_sid,
-					  const char *domain_name,
-					  struct cli_state *cli,
-					  struct rpc_pipe_client *pipe_hnd,
-					  TALLOC_CTX *mem_ctx,
-					  int argc,
-					  const char **argv)
-{
-	return rpc_registry_getvalue_internal(c, domain_sid, domain_name,
-					      cli, pipe_hnd, mem_ctx, true,
-					      argc, argv);
-}
-
-static int rpc_registry_getvalueraw(struct net_context *c, int argc,
-				    const char **argv)
-{
-	if (argc != 2 || c->display_usage) {
-		d_fprintf(stderr, "usage: net rpc registry getvalue <key> "
-			  "<valuename>\n");
-		return -1;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
-		rpc_registry_getvalue_raw, argc, argv);
-}
-
-static NTSTATUS rpc_registry_createkey_internal(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_registry_createkey_internal(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv )
 {
@@ -694,24 +645,22 @@
 	return status;
 }
 
-static int rpc_registry_createkey(struct net_context *c, int argc,
-				  const char **argv )
+static int rpc_registry_createkey( int argc, const char **argv )
 {
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net rpc registry createkey <key>\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command( NULL, PI_WINREG, 0, 
 		rpc_registry_createkey_internal, argc, argv );
 }
 
-static NTSTATUS rpc_registry_deletekey_internal(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_registry_deletekey_internal(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv )
 {
@@ -744,30 +693,29 @@
 	return status;
 }
 
-static int rpc_registry_deletekey(struct net_context *c, int argc, const char **argv )
+static int rpc_registry_deletekey( int argc, const char **argv )
 {
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net rpc registry deletekey <key>\n");
 		return -1;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command( NULL, PI_WINREG, 0, 
 		rpc_registry_deletekey_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_registry_enumerate_internal(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
+static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
+						const char *domain_name, 
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
+						TALLOC_CTX *mem_ctx, 
 						int argc,
 						const char **argv )
 {
-	POLICY_HND pol_hive, pol_key;
+	POLICY_HND pol_hive, pol_key; 
 	NTSTATUS status;
 	uint32 num_subkeys = 0;
 	uint32 num_values = 0;
@@ -775,9 +723,9 @@
 	NTTIME **modtimes = NULL;
 	uint32 i;
 	struct registry_value **values = NULL;
-
-	if (argc != 1 || c->display_usage) {
-		d_printf("Usage:    net rpc registry enumerate <path>\n");
+	
+	if (argc != 1 ) {
+		d_printf("Usage:    net rpc registry enumerate <path> [recurse]\n");
 		d_printf("Example:  net rpc registry enumerate 'HKLM\\Software\\Samba'\n");
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -823,35 +771,33 @@
 /********************************************************************
 ********************************************************************/
 
-static int rpc_registry_enumerate(struct net_context *c, int argc,
-				  const char **argv )
+static int rpc_registry_enumerate( int argc, const char **argv )
 {
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command( NULL, PI_WINREG, 0, 
 		rpc_registry_enumerate_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_registry_save_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_registry_save_internal(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv )
 {
 	WERROR result = WERR_GENERAL_FAILURE;
-	POLICY_HND pol_hive, pol_key;
+	POLICY_HND pol_hive, pol_key; 
 	NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 	struct winreg_String filename;
-
-	if (argc != 2 || c->display_usage) {
+	
+	if (argc != 2 ) {
 		d_printf("Usage:    net rpc registry backup <path> <file> \n");
 		return NT_STATUS_INVALID_PARAMETER;
 	}
-
+	
 	status = registry_openkey(mem_ctx, pipe_hnd, argv[0], REG_KEY_ALL,
 				  &pol_hive, &pol_key);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -865,9 +811,9 @@
 	if ( !W_ERROR_IS_OK(result) ) {
 		d_fprintf(stderr, "Unable to save [%s] to %s:%s\n", argv[0], cli->desthost, argv[1]);
 	}
-
+	
 	/* cleanup */
-
+	
 	rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &pol_key, NULL);
 	rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &pol_hive, NULL);
 
@@ -877,9 +823,9 @@
 /********************************************************************
 ********************************************************************/
 
-static int rpc_registry_save(struct net_context *c, int argc, const char **argv )
+static int rpc_registry_save( int argc, const char **argv )
 {
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command( NULL, PI_WINREG, 0, 
 		rpc_registry_save_internal, argc, argv );
 }
 
@@ -959,13 +905,13 @@
 		SAFE_FREE(regpath);
 	}
 
-	return true;
+	return True;
 }
 
 /********************************************************************
 ********************************************************************/
 
-static bool write_registry_tree( REGF_FILE *infile, REGF_NK_REC *nk,
+static bool write_registry_tree( REGF_FILE *infile, REGF_NK_REC *nk, 
                                  REGF_NK_REC *parent, REGF_FILE *outfile,
 			         const char *parentpath )
 {
@@ -977,13 +923,13 @@
 
 	if ( !( subkeys = TALLOC_ZERO_P( infile->mem_ctx, REGSUBKEY_CTR )) ) {
 		DEBUG(0,("write_registry_tree: talloc() failed!\n"));
-		return false;
+		return False;
 	}
 
 	if ( !(values = TALLOC_ZERO_P( subkeys, REGVAL_CTR )) ) {
 		DEBUG(0,("write_registry_tree: talloc() failed!\n"));
 		TALLOC_FREE(subkeys);
-		return false;
+		return False;
 	}
 
 	/* copy values into the REGVAL_CTR */
@@ -1021,31 +967,31 @@
 	d_printf("[%s]\n", path );
 	TALLOC_FREE(subkeys);
 
-	return true;
+	return True;
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_registry_dump(struct net_context *c, int argc, const char **argv)
+static int rpc_registry_dump( int argc, const char **argv )
 {
 	REGF_FILE   *registry;
 	REGF_NK_REC *nk;
-
-	if (argc != 1 || c->display_usage) {
+	
+	if (argc != 1 ) {
 		d_printf("Usage:    net rpc registry dump <file> \n");
 		return -1;
 	}
-
+	
 	d_printf("Opening %s....", argv[0]);
 	if ( !(registry = regfio_open( argv[0], O_RDONLY, 0)) ) {
 		d_fprintf(stderr, "Failed to open %s for reading\n", argv[0]);
 		return 1;
 	}
 	d_printf("ok\n");
-
+	
 	/* get the root of the registry file */
-
+	
 	if ((nk = regfio_rootkey( registry )) == NULL) {
 		d_fprintf(stderr, "Could not get rootkey\n");
 		regfio_close( registry );
@@ -1059,7 +1005,7 @@
 
 #if 0
 	talloc_report_full( registry->mem_ctx, stderr );
-#endif
+#endif	
 	d_printf("Closing registry...");
 	regfio_close( registry );
 	d_printf("ok\n");
@@ -1070,17 +1016,17 @@
 /********************************************************************
 ********************************************************************/
 
-static int rpc_registry_copy(struct net_context *c, int argc, const char **argv )
+static int rpc_registry_copy( int argc, const char **argv )
 {
 	REGF_FILE   *infile = NULL, *outfile = NULL;
 	REGF_NK_REC *nk;
 	int result = 1;
-
-	if (argc != 2 || c->display_usage) {
+	
+	if (argc != 2 ) {
 		d_printf("Usage:    net rpc registry copy <srcfile> <newfile>\n");
 		return -1;
 	}
-
+	
 	d_printf("Opening %s....", argv[0]);
 	if ( !(infile = regfio_open( argv[0], O_RDONLY, 0 )) ) {
 		d_fprintf(stderr, "Failed to open %s for reading\n", argv[0]);
@@ -1094,9 +1040,9 @@
 		goto out;
 	}
 	d_printf("ok\n");
-
+	
 	/* get the root of the registry file */
-
+	
 	if ((nk = regfio_rootkey( infile )) == NULL) {
 		d_fprintf(stderr, "Could not get rootkey\n");
 		goto out;
@@ -1127,8 +1073,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_registry_getsd_internal(struct net_context *c,
-					    const DOM_SID *domain_sid,
+static NTSTATUS rpc_registry_getsd_internal(const DOM_SID *domain_sid,
 					    const char *domain_name,
 					    struct cli_state *cli,
 					    struct rpc_pipe_client *pipe_hnd,
@@ -1147,7 +1092,7 @@
 			       SEC_RIGHT_MAXIMUM_ALLOWED |
 			       SEC_RIGHT_SYSTEM_SECURITY;
 
-	if (argc <1 || argc > 2 || c->display_usage) {
+	if (argc <1 || argc > 2) {
 		d_printf("Usage:    net rpc registry getsd <path> <secinfo>\n");
 		d_printf("Example:  net rpc registry getsd 'HKLM\\Software\\Samba'\n");
 		return NT_STATUS_INVALID_PARAMETER;
@@ -1204,108 +1149,40 @@
 }
 
 
-static int rpc_registry_getsd(struct net_context *c, int argc, const char **argv)
+static int rpc_registry_getsd(int argc, const char **argv)
 {
-	return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+	return run_rpc_command(NULL, PI_WINREG, 0,
 		rpc_registry_getsd_internal, argc, argv);
 }
 
 /********************************************************************
 ********************************************************************/
 
-int net_rpc_registry(struct net_context *c, int argc, const char **argv)
+int net_rpc_registry(int argc, const char **argv) 
 {
-	struct functable func[] = {
-		{
-			"enumerate",
-			rpc_registry_enumerate,
-			NET_TRANSPORT_RPC,
-			"Enumerate registry keys and values",
-			"net rpc registry enumerate\n"
-			"    Enumerate registry keys and values"
-		},
-		{
-			"createkey",
-			rpc_registry_createkey,
-			NET_TRANSPORT_RPC,
-			"Create a new registry key",
-			"net rpc registry createkey\n"
-			"    Create a new registry key"
-		},
-		{
-			"deletekey",
-			rpc_registry_deletekey,
-			NET_TRANSPORT_RPC,
-			"Delete a registry key",
-			"net rpc registry deletekey\n"
-			"    Delete a registry key"
-		},
-		{
-			"getvalue",
-			rpc_registry_getvalue,
-			NET_TRANSPORT_RPC,
-			"Print a registry value",
-			"net rpc registry getvalue\n"
-			"    Print a registry value"
-		},
-		{
-			"getvalueraw",
-			rpc_registry_getvalueraw,
-			NET_TRANSPORT_RPC,
-			"Print a registry value",
-			"net rpc registry getvalueraw\n"
-			"    Print a registry value (raw version)"
-		},
-		{
-			"setvalue",
-			rpc_registry_setvalue,
-			NET_TRANSPORT_RPC,
-			"Set a new registry value",
-			"net rpc registry setvalue\n"
-			"    Set a new registry value"
-		},
-		{
-			"deletevalue",
-			rpc_registry_deletevalue,
-			NET_TRANSPORT_RPC,
-			"Delete a registry value",
-			"net rpc registry deletevalue\n"
-			"    Delete a registry value"
-		},
-		{
-			"save",
-			rpc_registry_save,
-			NET_TRANSPORT_RPC,
-			"Save a registry file",
-			"net rpc registry save\n"
-			"    Save a registry file"
-		},
-		{
-			"dump",
-			rpc_registry_dump,
-			NET_TRANSPORT_RPC,
-			"Dump a registry file",
-			"net rpc registry dump\n"
-			"    Dump a registry file"
-		},
-		{
-			"copy",
-			rpc_registry_copy,
-			NET_TRANSPORT_RPC,
-			"Copy a registry file",
-			"net rpc registry copy\n"
-			"    Copy a registry file"
-		},
-		{
-			"getsd",
-			rpc_registry_getsd,
-			NET_TRANSPORT_RPC,
-			"Get security descriptor",
-			"net rpc registry getsd\n"
-			"    Get security descriptior"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+	struct functable2 func[] = {
+		{ "enumerate", rpc_registry_enumerate,
+		  "Enumerate registry keys and values" },
+		{ "createkey",  rpc_registry_createkey,
+		  "Create a new registry key" },
+		{ "deletekey",  rpc_registry_deletekey,
+		  "Delete a registry key" },
+		{ "getvalue", rpc_registry_getvalue,
+		  "Print a registry value" },
+		{ "setvalue",  rpc_registry_setvalue,
+		  "Set a new registry value" },
+		{ "deletevalue",  rpc_registry_deletevalue,
+		  "Delete a registry value" },
+		{ "save", rpc_registry_save,
+		  "Save a registry file" },
+		{ "dump", rpc_registry_dump,
+		  "Dump a registry file" },
+		{ "copy", rpc_registry_copy,
+		  "Copy a registry file" },
+		{ "getsd", rpc_registry_getsd,
+		  "Get security descriptor" },
+		{NULL, NULL, NULL}
 	};
-
-	return net_run_function(c, argc, argv, "net rpc registry", func);
+	
+	return net_run_function2(argc, argv, "net rpc registry", func);
 }

Modified: branches/samba/upstream/source/utils/net_rpc_rights.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_rights.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_rights.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,6 +1,6 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) Gerald (Jerry) Carter          2004
    Copyright (C) Guenther Deschner              2008
 
@@ -8,15 +8,15 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+ 
 #include "includes.h"
 #include "utils/net.h"
 
@@ -33,14 +33,14 @@
 	NTSTATUS result;
 	char **domains = NULL, **names = NULL;
 
-	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, true,
+	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, True, 
 		SEC_RIGHTS_MAXIMUM_ALLOWED, &pol);
-
+		
 	if ( !NT_STATUS_IS_OK(result) )
 		return result;
 
 	result = rpccli_lsa_lookup_sids(pipe_hnd, mem_ctx, &pol, 1, sid, &domains, &names, &sid_types);
-
+	
 	if ( NT_STATUS_IS_OK(result) ) {
 		if ( *domains[0] )
 			fstr_sprintf( name, "%s\\%s", domains[0], names[0] );
@@ -69,15 +69,15 @@
 		return NT_STATUS_OK;
 	}
 
-	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, true,
+	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, True, 
 		SEC_RIGHTS_MAXIMUM_ALLOWED, &pol);
-
+		
 	if ( !NT_STATUS_IS_OK(result) )
 		return result;
 
 	result = rpccli_lsa_lookup_names(pipe_hnd, mem_ctx, &pol, 1, &name,
 					 NULL, 1, &sids, &sid_types);
-
+	
 	if ( NT_STATUS_IS_OK(result) )
 		sid_copy( sid, &sids[0] );
 
@@ -232,7 +232,7 @@
 
 	if (!NT_STATUS_IS_OK(result))
 		return result;
-
+		
 	d_printf("%s:\n", privilege);
 
 	for ( i=0; i<sid_array.num_sids; i++ ) {
@@ -248,7 +248,7 @@
 			continue;
 		}
 
-		/* try to convert the SID to a name.  Fall back to
+		/* try to convert the SID to a name.  Fall back to 
 		   printing the raw SID if necessary */
 		result = sid_to_name( pipe_hnd, ctx, sid_array.sids[i].sid, name );
 		if ( !NT_STATUS_IS_OK (result) )
@@ -285,7 +285,7 @@
 
 	for ( i=0; i<sid_array.num_sids; i++ ) {
 
-		/* try to convert the SID to a name.  Fall back to
+		/* try to convert the SID to a name.  Fall back to 
 		   printing the raw SID if necessary */
 
 		result = sid_to_name(pipe_hnd, ctx, sid_array.sids[i].sid, name);
@@ -308,12 +308,11 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_rights_list_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_rights_list_internal(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv )
 {
@@ -326,15 +325,16 @@
 	uint16 lang_id = 0;
 	uint16 lang_id_sys = 0;
 	uint16 lang_id_desc;
-
-	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, true,
+	
+	
+	result = rpccli_lsa_open_policy(pipe_hnd, mem_ctx, True, 
 		SEC_RIGHTS_MAXIMUM_ALLOWED, &pol);
 
 	if ( !NT_STATUS_IS_OK(result) )
 		return result;
-
+	
 	/* backwards compatibility; just list available privileges if no arguement */
-
+	   
 	if (argc == 0) {
 		result = enum_privileges(pipe_hnd, mem_ctx, &pol );
 		goto done;
@@ -352,7 +352,7 @@
 			fstrcpy(privname, argv[i]);
 			init_lsa_String(&lsa_name, argv[i]);
 			i++;
-
+		
 			/* verify that this is a valid privilege for error reporting */
 			result = rpccli_lsa_LookupPrivDisplayName(pipe_hnd, mem_ctx,
 								  &pol,
@@ -369,7 +369,7 @@
 					d_fprintf(stderr, "Error resolving privilege display name [%s].\n", nt_errstr(result));
 				continue;
 			}
-
+			
 			result = enum_accounts_for_privilege(pipe_hnd, mem_ctx, &pol, privname);
 			if (!NT_STATUS_IS_OK(result)) {
 				d_fprintf(stderr, "Error enumerating accounts for privilege %s [%s].\n", 
@@ -381,7 +381,7 @@
 	}
 
 	/* special case to enumerate all privileged SIDs with associated rights */
-
+	
 	if (strequal( argv[0], "accounts")) {
 		int i = 1;
 
@@ -427,12 +427,11 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_rights_grant_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_rights_grant_internal(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv )
 {
@@ -450,14 +449,14 @@
 
 	result = name_to_sid(pipe_hnd, mem_ctx, &sid, argv[0]);
 	if (!NT_STATUS_IS_OK(result))
-		return result;
+		return result;	
 
-	result = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, true,
+	result = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, True, 
 				     SEC_RIGHTS_MAXIMUM_ALLOWED,
 				     &dom_pol);
 
 	if (!NT_STATUS_IS_OK(result))
-		return result;
+		return result;	
 
 	rights.count = argc-1;
 	rights.names = TALLOC_ARRAY(mem_ctx, struct lsa_StringLarge,
@@ -477,29 +476,28 @@
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
-
+		
 	d_printf("Successfully granted rights.\n");
 
  done:
 	if ( !NT_STATUS_IS_OK(result) ) {
-		d_fprintf(stderr, "Failed to grant privileges for %s (%s)\n",
+		d_fprintf(stderr, "Failed to grant privileges for %s (%s)\n", 
 			argv[0], nt_errstr(result));
 	}
-
+		
  	rpccli_lsa_Close(pipe_hnd, mem_ctx, &dom_pol);
-
+	
 	return result;
 }
 
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_rights_revoke_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
+static NTSTATUS rpc_rights_revoke_internal(const DOM_SID *domain_sid,
+					const char *domain_name, 
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
+					TALLOC_CTX *mem_ctx, 
 					int argc,
 					const char **argv )
 {
@@ -516,14 +514,14 @@
 
 	result = name_to_sid(pipe_hnd, mem_ctx, &sid, argv[0]);
 	if (!NT_STATUS_IS_OK(result))
-		return result;
+		return result;	
 
-	result = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, true,
+	result = rpccli_lsa_open_policy2(pipe_hnd, mem_ctx, True, 
 				     SEC_RIGHTS_MAXIMUM_ALLOWED,
 				     &dom_pol);
 
 	if (!NT_STATUS_IS_OK(result))
-		return result;
+		return result;	
 
 	rights.count = argc-1;
 	rights.names = TALLOC_ARRAY(mem_ctx, struct lsa_StringLarge,
@@ -549,155 +547,120 @@
 
 done:
 	if ( !NT_STATUS_IS_OK(result) ) {
-		d_fprintf(stderr, "Failed to revoke privileges for %s (%s)\n",
+		d_fprintf(stderr, "Failed to revoke privileges for %s (%s)\n", 
 			argv[0], nt_errstr(result));
 	}
-
+	
 	rpccli_lsa_Close(pipe_hnd, mem_ctx, &dom_pol);
 
 	return result;
-}
+}	
 
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_rights_list(struct net_context *c, int argc, const char **argv )
+static int rpc_rights_list( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc rights list [{accounts|privileges} "
-			 "[name|SID]]\n"
-			 "    View available/assigned privileges\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command( NULL, PI_LSARPC, 0, 
 		rpc_rights_list_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_rights_grant(struct net_context *c, int argc, const char **argv )
+static int rpc_rights_grant( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc rights grant <name|SID> <right>\n"
-			 "    Assign privilege[s]\n");
-		d_printf("For example:\n");
-		d_printf("    net rpc rights grant 'VALE\\biddle' "
-			 "SePrintOperatorPrivilege SeDiskOperatorPrivilege\n");
-		d_printf("    would grant the printer admin and disk manager "
-			 "rights to the user 'VALE\\biddle'\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command( NULL, PI_LSARPC, 0, 
 		rpc_rights_grant_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_rights_revoke(struct net_context *c, int argc, const char **argv)
+static int rpc_rights_revoke( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc rights revoke <name|SID> <right>\n"
-			 "    Revoke privilege[s]\n");
-		d_printf("For example:\n");
-		d_printf("    net rpc rights revoke 'VALE\\biddle' "
-			 "SePrintOperatorPrivilege SeDiskOperatorPrivilege\n");
-		d_printf("    would revoke the printer admin and disk manager "
-			 "rights from the user 'VALE\\biddle'\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+	return run_rpc_command( NULL, PI_LSARPC, 0, 
 		rpc_rights_revoke_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-int net_rpc_rights(struct net_context *c, int argc, const char **argv)
+static int net_help_rights( int argc, const char **argv )
 {
+	d_printf("net rpc rights list [{accounts|privileges} [name|SID]]   View available or assigned privileges\n");
+	d_printf("net rpc rights grant <name|SID> <right>                  Assign privilege[s]\n");
+	d_printf("net rpc rights revoke <name|SID> <right>                 Revoke privilege[s]\n");
+	
+	d_printf("\nBoth 'grant' and 'revoke' require a SID and a list of privilege names.\n");
+	d_printf("For example\n");
+	d_printf("\n  net rpc rights grant 'VALE\\biddle' SePrintOperatorPrivilege SeDiskOperatorPrivilege\n");
+	d_printf("\nwould grant the printer admin and disk manager rights to the user 'VALE\\biddle'\n\n");
+	
+	
+	return -1;
+}
+
+/********************************************************************
+********************************************************************/
+
+int net_rpc_rights(int argc, const char **argv) 
+{
 	struct functable func[] = {
-		{
-			"list",
-			rpc_rights_list,
-			NET_TRANSPORT_RPC,
-			"View available/assigned privileges",
-			"net rpc rights list\n"
-			"    View available/assigned privileges"
-		},
-		{
-			"grant",
-			rpc_rights_grant,
-			NET_TRANSPORT_RPC,
-			"Assign privilege[s]",
-			"net rpc rights grant\n"
-			"    Assign privilege[s]"
-		},
-		{
-			"revoke",
-			rpc_rights_revoke,
-			NET_TRANSPORT_RPC,
-			"Revoke privilege[s]",
-			"net rpc rights revoke\n"
-			"    Revoke privilege[s]"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"list", rpc_rights_list},
+		{"grant", rpc_rights_grant},
+		{"revoke", rpc_rights_revoke},
+		{NULL, NULL}
 	};
-
-	return net_run_function(c, argc, argv, "net rpc rights", func);
+	
+	if ( argc )
+		return net_run_function( argc, argv, func, net_help_rights );
+		
+	return net_help_rights( argc, argv );
 }
 
-static NTSTATUS rpc_sh_rights_list(struct net_context *c,
-				   TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
+static NTSTATUS rpc_sh_rights_list(TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
 				   struct rpc_pipe_client *pipe_hnd,
 				   int argc, const char **argv)
 {
-	return rpc_rights_list_internal(c, ctx->domain_sid, ctx->domain_name,
+	return rpc_rights_list_internal(ctx->domain_sid, ctx->domain_name,
 					ctx->cli, pipe_hnd, mem_ctx,
 					argc, argv);
 }
 
-static NTSTATUS rpc_sh_rights_grant(struct net_context *c,
-				    TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_rights_grant(TALLOC_CTX *mem_ctx,
 				    struct rpc_sh_ctx *ctx,
 				    struct rpc_pipe_client *pipe_hnd,
 				    int argc, const char **argv)
 {
-	return rpc_rights_grant_internal(c, ctx->domain_sid, ctx->domain_name,
+	return rpc_rights_grant_internal(ctx->domain_sid, ctx->domain_name,
 					 ctx->cli, pipe_hnd, mem_ctx,
 					 argc, argv);
 }
 
-static NTSTATUS rpc_sh_rights_revoke(struct net_context *c,
-				     TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_rights_revoke(TALLOC_CTX *mem_ctx,
 				     struct rpc_sh_ctx *ctx,
 				     struct rpc_pipe_client *pipe_hnd,
 				     int argc, const char **argv)
 {
-	return rpc_rights_revoke_internal(c, ctx->domain_sid, ctx->domain_name,
+	return rpc_rights_revoke_internal(ctx->domain_sid, ctx->domain_name,
 					  ctx->cli, pipe_hnd, mem_ctx,
 					  argc, argv);
 }
 
-struct rpc_sh_cmd *net_rpc_rights_cmds(struct net_context *c, TALLOC_CTX *mem_ctx,
+struct rpc_sh_cmd *net_rpc_rights_cmds(TALLOC_CTX *mem_ctx,
 				       struct rpc_sh_ctx *ctx)
 {
 	static struct rpc_sh_cmd cmds[] = {
 
-	{ "list", NULL, &ndr_table_lsarpc.syntax_id, rpc_sh_rights_list,
+	{ "list", NULL, PI_LSARPC, rpc_sh_rights_list,
 	  "View available or assigned privileges" },
 
-	{ "grant", NULL, &ndr_table_lsarpc.syntax_id, rpc_sh_rights_grant,
+	{ "grant", NULL, PI_LSARPC, rpc_sh_rights_grant,
 	  "Assign privilege[s]" },
 
-	{ "revoke", NULL, &ndr_table_lsarpc.syntax_id, rpc_sh_rights_revoke,
+	{ "revoke", NULL, PI_LSARPC, rpc_sh_rights_revoke,
 	  "Revoke privilege[s]" },
 
 	{ NULL, NULL, 0, NULL, NULL }

Modified: branches/samba/upstream/source/utils/net_rpc_samsync.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_samsync.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_samsync.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -26,69 +26,389 @@
 #include "includes.h"
 #include "utils/net.h"
 
-/* dump sam database via samsync rpc calls */
-NTSTATUS rpc_samdump_internals(struct net_context *c,
-				const DOM_SID *domain_sid,
-				const char *domain_name,
-				struct cli_state *cli,
-				struct rpc_pipe_client *pipe_hnd,
-				TALLOC_CTX *mem_ctx,
-				int argc,
-				const char **argv)
+/* uid's and gid's for writing deltas to ldif */
+static uint32 ldif_gid = 999;
+static uint32 ldif_uid = 999;
+/* Keep track of ldap initialization */
+static int init_ldap = 1;
+
+static void display_group_mem_info(uint32_t rid,
+				   struct netr_DELTA_GROUP_MEMBER *r)
 {
-	struct samsync_context *ctx = NULL;
+	int i;
+	d_printf("Group mem %u: ", rid);
+	for (i=0; i< r->num_rids; i++) {
+		d_printf("%u ", r->rids[i]);
+	}
+	d_printf("\n");
+}
+
+static void display_alias_info(uint32_t rid,
+			       struct netr_DELTA_ALIAS *r)
+{
+	d_printf("Alias '%s' ", r->alias_name.string);
+	d_printf("desc='%s' rid=%u\n", r->description.string, r->rid);
+}
+
+static void display_alias_mem(uint32_t rid,
+			      struct netr_DELTA_ALIAS_MEMBER *r)
+{
+	int i;
+	d_printf("Alias rid %u: ", rid);
+	for (i=0; i< r->sids.num_sids; i++) {
+		d_printf("%s ", sid_string_tos(r->sids.sids[i].sid));
+	}
+	d_printf("\n");
+}
+
+static void display_account_info(uint32_t rid,
+				 struct netr_DELTA_USER *r)
+{
+	fstring hex_nt_passwd, hex_lm_passwd;
+	uchar lm_passwd[16], nt_passwd[16];
+	static uchar zero_buf[16];
+
+	/* Decode hashes from password hash (if they are not NULL) */
+
+	if (memcmp(r->lmpassword.hash, zero_buf, 16) != 0) {
+		sam_pwd_hash(r->rid, r->lmpassword.hash, lm_passwd, 0);
+		pdb_sethexpwd(hex_lm_passwd, lm_passwd, r->acct_flags);
+	} else {
+		pdb_sethexpwd(hex_lm_passwd, NULL, 0);
+	}
+
+	if (memcmp(r->ntpassword.hash, zero_buf, 16) != 0) {
+		sam_pwd_hash(r->rid, r->ntpassword.hash, nt_passwd, 0);
+		pdb_sethexpwd(hex_nt_passwd, nt_passwd, r->acct_flags);
+	} else {
+		pdb_sethexpwd(hex_nt_passwd, NULL, 0);
+	}
+
+	printf("%s:%d:%s:%s:%s:LCT-0\n",
+		r->account_name.string,
+		r->rid, hex_lm_passwd, hex_nt_passwd,
+		pdb_encode_acct_ctrl(r->acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN));
+}
+
+static time_t uint64s_nt_time_to_unix_abs(const uint64 *src)
+{
+	NTTIME nttime;
+	nttime = *src;
+	return nt_time_to_unix_abs(&nttime);
+}
+
+static NTSTATUS pull_netr_AcctLockStr(TALLOC_CTX *mem_ctx,
+				      struct lsa_BinaryString *r,
+				      struct netr_AcctLockStr **str_p)
+{
+	struct netr_AcctLockStr *str;
+	enum ndr_err_code ndr_err;
+	DATA_BLOB blob;
+
+	if (!mem_ctx || !r || !str_p) {
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	*str_p = NULL;
+
+	str = TALLOC_ZERO_P(mem_ctx, struct netr_AcctLockStr);
+	if (!str) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	blob = data_blob_const(r->array, r->length);
+
+	ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, str,
+		       (ndr_pull_flags_fn_t)ndr_pull_netr_AcctLockStr);
+	data_blob_free(&blob);
+
+	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		return ndr_map_error2ntstatus(ndr_err);
+	}
+
+	*str_p = str;
+
+	return NT_STATUS_OK;
+}
+
+static void display_domain_info(struct netr_DELTA_DOMAIN *r)
+{
+	time_t u_logout;
+	struct netr_AcctLockStr *lockstr = NULL;
 	NTSTATUS status;
+	TALLOC_CTX *mem_ctx = talloc_tos();
 
-	status = libnet_samsync_init_context(mem_ctx,
-					     domain_sid,
-					     &ctx);
+	status = pull_netr_AcctLockStr(mem_ctx, &r->account_lockout,
+				       &lockstr);
 	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+		d_printf("failed to pull account lockout string: %s\n",
+			nt_errstr(status));
 	}
 
-	ctx->mode		= NET_SAMSYNC_MODE_DUMP;
-	ctx->cli		= pipe_hnd;
-	ctx->delta_fn		= display_sam_entries;
-	ctx->domain_name	= domain_name;
+	u_logout = uint64s_nt_time_to_unix_abs((const uint64 *)&r->force_logoff_time);
 
-	libnet_samsync(SAM_DATABASE_DOMAIN, ctx);
+	d_printf("Domain name: %s\n", r->domain_name.string);
 
-	libnet_samsync(SAM_DATABASE_BUILTIN, ctx);
+	d_printf("Minimal Password Length: %d\n", r->min_password_length);
+	d_printf("Password History Length: %d\n", r->password_history_length);
 
-	libnet_samsync(SAM_DATABASE_PRIVS, ctx);
+	d_printf("Force Logoff: %d\n", (int)u_logout);
 
-	TALLOC_FREE(ctx);
+	d_printf("Max Password Age: %s\n", display_time(r->max_password_age));
+	d_printf("Min Password Age: %s\n", display_time(r->min_password_age));
 
-	return NT_STATUS_OK;
+	if (lockstr) {
+		d_printf("Lockout Time: %s\n", display_time((NTTIME)lockstr->lockout_duration));
+		d_printf("Lockout Reset Time: %s\n", display_time((NTTIME)lockstr->reset_count));
+		d_printf("Bad Attempt Lockout: %d\n", lockstr->bad_attempt_lockout);
+	}
+
+	d_printf("User must logon to change password: %d\n", r->logon_to_chgpass);
 }
 
-/**
- * Basic usage function for 'net rpc vampire'
- *
- * @param c	A net_context structure
- * @param argc  Standard main() style argc
- * @param argc  Standard main() style argv.  Initial components are already
- *              stripped
- **/
+static void display_group_info(uint32_t rid, struct netr_DELTA_GROUP *r)
+{
+	d_printf("Group '%s' ", r->group_name.string);
+	d_printf("desc='%s', rid=%u\n", r->description.string, rid);
+}
 
-int rpc_vampire_usage(struct net_context *c, int argc, const char **argv)
+static void display_sam_entry(struct netr_DELTA_ENUM *r)
 {
-	d_printf("net rpc vampire ([ldif [<ldif-filename>] | [keytab] [<keytab-filename]) [options]\n"
-		 "\t to pull accounts from a remote PDC where we are a BDC\n"
-		 "\t\t no args puts accounts in local passdb from smb.conf\n"
-		 "\t\t ldif - put accounts in ldif format (file defaults to "
-		 "/tmp/tmp.ldif)\n"
-		 "\t\t keytab - put account passwords in krb5 keytab (defaults "
-		 "to system keytab)\n");
+	union netr_DELTA_UNION u = r->delta_union;
+	union netr_DELTA_ID_UNION id = r->delta_id_union;
 
-	net_common_flags_usage(c, argc, argv);
-	return -1;
+	switch (r->delta_type) {
+	case NETR_DELTA_DOMAIN:
+		display_domain_info(u.domain);
+		break;
+	case NETR_DELTA_GROUP:
+		display_group_info(id.rid, u.group);
+		break;
+#if 0
+	case NETR_DELTA_DELETE_GROUP:
+		printf("Delete Group: %d\n",
+			u.delete_account.unknown);
+		break;
+	case NETR_DELTA_RENAME_GROUP:
+		printf("Rename Group: %s -> %s\n",
+			u.rename_group->OldName.string,
+			u.rename_group->NewName.string);
+		break;
+#endif
+	case NETR_DELTA_USER:
+		display_account_info(id.rid, u.user);
+		break;
+#if 0
+	case NETR_DELTA_DELETE_USER:
+		printf("Delete User: %d\n",
+			id.rid);
+		break;
+	case NETR_DELTA_RENAME_USER:
+		printf("Rename user: %s -> %s\n",
+			u.rename_user->OldName.string,
+			u.rename_user->NewName.string);
+		break;
+#endif
+	case NETR_DELTA_GROUP_MEMBER:
+		display_group_mem_info(id.rid, u.group_member);
+		break;
+	case NETR_DELTA_ALIAS:
+		display_alias_info(id.rid, u.alias);
+		break;
+#if 0
+	case NETR_DELTA_DELETE_ALIAS:
+		printf("Delete Alias: %d\n",
+			id.rid);
+		break;
+	case NETR_DELTA_RENAME_ALIAS:
+		printf("Rename alias: %s -> %s\n",
+			u.rename_alias->OldName.string,
+			u.rename_alias->NewName.string);
+		break;
+#endif
+	case NETR_DELTA_ALIAS_MEMBER:
+		display_alias_mem(id.rid, u.alias_member);
+		break;
+#if 0
+	case NETR_DELTA_POLICY:
+		printf("Policy\n");
+		break;
+	case NETR_DELTA_TRUSTED_DOMAIN:
+		printf("Trusted Domain: %s\n",
+			u.trusted_domain->domain_name.string);
+		break;
+	case NETR_DELTA_DELETE_TRUST:
+		printf("Delete Trust: %d\n",
+			u.delete_trust.unknown);
+		break;
+	case NETR_DELTA_ACCOUNT:
+		printf("Account\n");
+		break;
+	case NETR_DELTA_DELETE_ACCOUNT:
+		printf("Delete Account: %d\n",
+			u.delete_account.unknown);
+		break;
+	case NETR_DELTA_SECRET:
+		printf("Secret\n");
+		break;
+	case NETR_DELTA_DELETE_SECRET:
+		printf("Delete Secret: %d\n",
+			u.delete_secret.unknown);
+		break;
+	case NETR_DELTA_DELETE_GROUP2:
+		printf("Delete Group2: %s\n",
+			u.delete_group->account_name);
+		break;
+	case NETR_DELTA_DELETE_USER2:
+		printf("Delete User2: %s\n",
+			u.delete_user->account_name);
+		break;
+	case NETR_DELTA_MODIFY_COUNT:
+		printf("sam sequence update: 0x%016llx\n",
+			(unsigned long long) *u.modified_count);
+		break;
+#endif
+	/* The following types are recognised but not handled */
+	case NETR_DELTA_RENAME_GROUP:
+		d_printf("NETR_DELTA_RENAME_GROUP not handled\n");
+		break;
+	case NETR_DELTA_RENAME_USER:
+		d_printf("NETR_DELTA_RENAME_USER not handled\n");
+		break;
+	case NETR_DELTA_RENAME_ALIAS:
+		d_printf("NETR_DELTA_RENAME_ALIAS not handled\n");
+		break;
+	case NETR_DELTA_POLICY:
+		d_printf("NETR_DELTA_POLICY not handled\n");
+		break;
+	case NETR_DELTA_TRUSTED_DOMAIN:
+		d_printf("NETR_DELTA_TRUSTED_DOMAIN not handled\n");
+		break;
+	case NETR_DELTA_ACCOUNT:
+		d_printf("NETR_DELTA_ACCOUNT not handled\n");
+		break;
+	case NETR_DELTA_SECRET:
+		d_printf("NETR_DELTA_SECRET not handled\n");
+		break;
+	case NETR_DELTA_DELETE_GROUP:
+		d_printf("NETR_DELTA_DELETE_GROUP not handled\n");
+		break;
+	case NETR_DELTA_DELETE_USER:
+		d_printf("NETR_DELTA_DELETE_USER not handled\n");
+		break;
+	case NETR_DELTA_MODIFY_COUNT:
+		d_printf("NETR_DELTA_MODIFY_COUNT not handled\n");
+		break;
+	case NETR_DELTA_DELETE_ALIAS:
+		d_printf("NETR_DELTA_DELETE_ALIAS not handled\n");
+		break;
+	case NETR_DELTA_DELETE_TRUST:
+		d_printf("NETR_DELTA_DELETE_TRUST not handled\n");
+		break;
+	case NETR_DELTA_DELETE_ACCOUNT:
+		d_printf("NETR_DELTA_DELETE_ACCOUNT not handled\n");
+		break;
+	case NETR_DELTA_DELETE_SECRET:
+		d_printf("NETR_DELTA_DELETE_SECRET not handled\n");
+		break;
+	case NETR_DELTA_DELETE_GROUP2:
+		d_printf("NETR_DELTA_DELETE_GROUP2 not handled\n");
+		break;
+	case NETR_DELTA_DELETE_USER2:
+		d_printf("NETR_DELTA_DELETE_USER2 not handled\n");
+		break;
+	default:
+		printf("unknown delta type 0x%02x\n",
+			r->delta_type);
+		break;
+	}
 }
 
+static void dump_database(struct rpc_pipe_client *pipe_hnd,
+			  enum netr_SamDatabaseID database_id)
+{
+        NTSTATUS result;
+	int i;
+        TALLOC_CTX *mem_ctx;
+	const char *logon_server = pipe_hnd->cli->desthost;
+	const char *computername = global_myname();
+	struct netr_Authenticator credential;
+	struct netr_Authenticator return_authenticator;
+	uint16_t restart_state = 0;
+	uint32_t sync_context = 0;
+	DATA_BLOB session_key;
 
+	ZERO_STRUCT(return_authenticator);
+
+	if (!(mem_ctx = talloc_init("dump_database"))) {
+		return;
+	}
+
+	switch(database_id) {
+	case SAM_DATABASE_DOMAIN:
+		d_printf("Dumping DOMAIN database\n");
+		break;
+	case SAM_DATABASE_BUILTIN:
+		d_printf("Dumping BUILTIN database\n");
+		break;
+	case SAM_DATABASE_PRIVS:
+		d_printf("Dumping PRIVS databases\n");
+		break;
+	default:
+		d_printf("Dumping unknown database type %u\n",
+			database_id);
+		break;
+	}
+
+	do {
+		struct netr_DELTA_ENUM_ARRAY *delta_enum_array = NULL;
+
+		netlogon_creds_client_step(pipe_hnd->dc, &credential);
+
+		result = rpccli_netr_DatabaseSync2(pipe_hnd, mem_ctx,
+						   logon_server,
+						   computername,
+						   &credential,
+						   &return_authenticator,
+						   database_id,
+						   restart_state,
+						   &sync_context,
+						   &delta_enum_array,
+						   0xffff);
+
+		/* Check returned credentials. */
+		if (!netlogon_creds_client_check(pipe_hnd->dc,
+						 &return_authenticator.cred)) {
+			DEBUG(0,("credentials chain check failed\n"));
+			return;
+		}
+
+		if (NT_STATUS_IS_ERR(result)) {
+			break;
+		}
+
+		session_key = data_blob_const(pipe_hnd->dc->sess_key, 16);
+
+		samsync_fix_delta_array(mem_ctx,
+					&session_key,
+					false,
+					database_id,
+					delta_enum_array);
+
+		/* Display results */
+		for (i = 0; i < delta_enum_array->num_deltas; i++) {
+			display_sam_entry(&delta_enum_array->delta_enum[i]);
+                }
+
+		TALLOC_FREE(delta_enum_array);
+
+	} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
+
+	talloc_destroy(mem_ctx);
+}
+
 /* dump sam database via samsync rpc calls */
-NTSTATUS rpc_vampire_internals(struct net_context *c,
-				const DOM_SID *domain_sid,
+NTSTATUS rpc_samdump_internals(const DOM_SID *domain_sid,
 				const char *domain_name,
 				struct cli_state *cli,
 				struct rpc_pipe_client *pipe_hnd,
@@ -96,267 +416,2007 @@
 				int argc,
 				const char **argv)
 {
-	NTSTATUS result;
-	struct samsync_context *ctx = NULL;
+#if 0
+	/* net_rpc.c now always tries to create an schannel pipe.. */
 
-	if (!sid_equal(domain_sid, get_global_sam_sid())) {
-		d_printf("Cannot import users from %s at this time, "
-			 "as the current domain:\n\t%s: %s\nconflicts "
-			 "with the remote domain\n\t%s: %s\n"
-			 "Perhaps you need to set: \n\n\tsecurity=user\n\t"
-			 "workgroup=%s\n\n in your smb.conf?\n",
-			 domain_name,
-			 get_global_sam_name(),
-			 sid_string_dbg(get_global_sam_sid()),
-			 domain_name,
-			 sid_string_dbg(domain_sid),
-			 domain_name);
+	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
+	uchar trust_password[16];
+	uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
+	uint32 sec_channel_type = 0;
+
+	if (!secrets_fetch_trust_account_password(domain_name,
+						  trust_password,
+						  NULL, &sec_channel_type)) {
+		DEBUG(0,("Could not fetch trust account password\n"));
+		goto fail;
+	}
+
+	nt_status = rpccli_netlogon_setup_creds(pipe_hnd,
+						cli->desthost,
+						domain_name,
+                                                global_myname(),
+                                                trust_password,
+                                                sec_channel_type,
+                                                &neg_flags);
+
+	if (!NT_STATUS_IS_OK(nt_status)) {
+		DEBUG(0,("Error connecting to NETLOGON pipe\n"));
+		goto fail;
+	}
+#endif
+
+	dump_database(pipe_hnd, SAM_DATABASE_DOMAIN);
+	dump_database(pipe_hnd, SAM_DATABASE_BUILTIN);
+	dump_database(pipe_hnd, SAM_DATABASE_PRIVS);
+
+	return NT_STATUS_OK;
+}
+
+/* Convert a struct samu_DELTA to a struct samu. */
+#define STRING_CHANGED (old_string && !new_string) ||\
+		    (!old_string && new_string) ||\
+		(old_string && new_string && (strcmp(old_string, new_string) != 0))
+
+#define STRING_CHANGED_NC(s1,s2) ((s1) && !(s2)) ||\
+		    (!(s1) && (s2)) ||\
+		((s1) && (s2) && (strcmp((s1), (s2)) != 0))
+
+static NTSTATUS sam_account_from_delta(struct samu *account,
+				       struct netr_DELTA_USER *r)
+{
+	const char *old_string, *new_string;
+	time_t unix_time, stored_time;
+	uchar lm_passwd[16], nt_passwd[16];
+	static uchar zero_buf[16];
+
+	/* Username, fullname, home dir, dir drive, logon script, acct
+	   desc, workstations, profile. */
+
+	if (r->account_name.string) {
+		old_string = pdb_get_nt_username(account);
+		new_string = r->account_name.string;
+
+		if (STRING_CHANGED) {
+			pdb_set_nt_username(account, new_string, PDB_CHANGED);
+		}
+
+		/* Unix username is the same - for sanity */
+		old_string = pdb_get_username( account );
+		if (STRING_CHANGED) {
+			pdb_set_username(account, new_string, PDB_CHANGED);
+		}
+	}
+
+	if (r->full_name.string) {
+		old_string = pdb_get_fullname(account);
+		new_string = r->full_name.string;
+
+		if (STRING_CHANGED)
+			pdb_set_fullname(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->home_directory.string) {
+		old_string = pdb_get_homedir(account);
+		new_string = r->home_directory.string;
+
+		if (STRING_CHANGED)
+			pdb_set_homedir(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->home_drive.string) {
+		old_string = pdb_get_dir_drive(account);
+		new_string = r->home_drive.string;
+
+		if (STRING_CHANGED)
+			pdb_set_dir_drive(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->logon_script.string) {
+		old_string = pdb_get_logon_script(account);
+		new_string = r->logon_script.string;
+
+		if (STRING_CHANGED)
+			pdb_set_logon_script(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->description.string) {
+		old_string = pdb_get_acct_desc(account);
+		new_string = r->description.string;
+
+		if (STRING_CHANGED)
+			pdb_set_acct_desc(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->workstations.string) {
+		old_string = pdb_get_workstations(account);
+		new_string = r->workstations.string;
+
+		if (STRING_CHANGED)
+			pdb_set_workstations(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->profile_path.string) {
+		old_string = pdb_get_profile_path(account);
+		new_string = r->profile_path.string;
+
+		if (STRING_CHANGED)
+			pdb_set_profile_path(account, new_string, PDB_CHANGED);
+	}
+
+	if (r->parameters.string) {
+		DATA_BLOB mung;
+		char *newstr;
+		old_string = pdb_get_munged_dial(account);
+		mung.length = r->parameters.length;
+		mung.data = (uint8 *) r->parameters.string;
+		newstr = (mung.length == 0) ? NULL :
+			base64_encode_data_blob(talloc_tos(), mung);
+
+		if (STRING_CHANGED_NC(old_string, newstr))
+			pdb_set_munged_dial(account, newstr, PDB_CHANGED);
+		TALLOC_FREE(newstr);
+	}
+
+	/* User and group sid */
+	if (pdb_get_user_rid(account) != r->rid)
+		pdb_set_user_sid_from_rid(account, r->rid, PDB_CHANGED);
+	if (pdb_get_group_rid(account) != r->primary_gid)
+		pdb_set_group_sid_from_rid(account, r->primary_gid, PDB_CHANGED);
+
+	/* Logon and password information */
+	if (!nt_time_is_zero(&r->last_logon)) {
+		unix_time = nt_time_to_unix(r->last_logon);
+		stored_time = pdb_get_logon_time(account);
+		if (stored_time != unix_time)
+			pdb_set_logon_time(account, unix_time, PDB_CHANGED);
+	}
+
+	if (!nt_time_is_zero(&r->last_logoff)) {
+		unix_time = nt_time_to_unix(r->last_logoff);
+		stored_time = pdb_get_logoff_time(account);
+		if (stored_time != unix_time)
+			pdb_set_logoff_time(account, unix_time,PDB_CHANGED);
+	}
+
+	/* Logon Divs */
+	if (pdb_get_logon_divs(account) != r->logon_hours.units_per_week)
+		pdb_set_logon_divs(account, r->logon_hours.units_per_week, PDB_CHANGED);
+
+#if 0
+	/* no idea what to do with this one - gd */
+	/* Max Logon Hours */
+	if (delta->unknown1 != pdb_get_unknown_6(account)) {
+		pdb_set_unknown_6(account, delta->unknown1, PDB_CHANGED);
+	}
+#endif
+	/* Logon Hours Len */
+	if (r->logon_hours.units_per_week/8 != pdb_get_hours_len(account)) {
+		pdb_set_hours_len(account, r->logon_hours.units_per_week/8, PDB_CHANGED);
+	}
+
+	/* Logon Hours */
+	if (r->logon_hours.bits) {
+		char oldstr[44], newstr[44];
+		pdb_sethexhours(oldstr, pdb_get_hours(account));
+		pdb_sethexhours(newstr, r->logon_hours.bits);
+		if (!strequal(oldstr, newstr))
+			pdb_set_hours(account, r->logon_hours.bits, PDB_CHANGED);
+	}
+
+	if (pdb_get_bad_password_count(account) != r->bad_password_count)
+		pdb_set_bad_password_count(account, r->bad_password_count, PDB_CHANGED);
+
+	if (pdb_get_logon_count(account) != r->logon_count)
+		pdb_set_logon_count(account, r->logon_count, PDB_CHANGED);
+
+	if (!nt_time_is_zero(&r->last_password_change)) {
+		unix_time = nt_time_to_unix(r->last_password_change);
+		stored_time = pdb_get_pass_last_set_time(account);
+		if (stored_time != unix_time)
+			pdb_set_pass_last_set_time(account, unix_time, PDB_CHANGED);
+	} else {
+		/* no last set time, make it now */
+		pdb_set_pass_last_set_time(account, time(NULL), PDB_CHANGED);
+	}
+
+	if (!nt_time_is_zero(&r->acct_expiry)) {
+		unix_time = nt_time_to_unix(r->acct_expiry);
+		stored_time = pdb_get_kickoff_time(account);
+		if (stored_time != unix_time)
+			pdb_set_kickoff_time(account, unix_time, PDB_CHANGED);
+	}
+
+	/* Decode hashes from password hash
+	   Note that win2000 may send us all zeros for the hashes if it doesn't
+	   think this channel is secure enough - don't set the passwords at all
+	   in that case
+	*/
+	if (memcmp(r->ntpassword.hash, zero_buf, 16) != 0) {
+		sam_pwd_hash(r->rid, r->ntpassword.hash, lm_passwd, 0);
+		pdb_set_lanman_passwd(account, lm_passwd, PDB_CHANGED);
+	}
+
+	if (memcmp(r->lmpassword.hash, zero_buf, 16) != 0) {
+		sam_pwd_hash(r->rid, r->lmpassword.hash, nt_passwd, 0);
+		pdb_set_nt_passwd(account, nt_passwd, PDB_CHANGED);
+	}
+
+	/* TODO: account expiry time */
+
+	pdb_set_acct_ctrl(account, r->acct_flags, PDB_CHANGED);
+
+	pdb_set_domain(account, lp_workgroup(), PDB_CHANGED);
+
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS fetch_account_info(uint32_t rid,
+				   struct netr_DELTA_USER *r)
+{
+
+	NTSTATUS nt_ret = NT_STATUS_UNSUCCESSFUL;
+	fstring account;
+	char *add_script = NULL;
+	struct samu *sam_account=NULL;
+	GROUP_MAP map;
+	struct group *grp;
+	DOM_SID user_sid;
+	DOM_SID group_sid;
+	struct passwd *passwd;
+	fstring sid_string;
+
+	fstrcpy(account, r->account_name.string);
+	d_printf("Creating account: %s\n", account);
+
+	if ( !(sam_account = samu_new( NULL )) ) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	if (!(passwd = Get_Pwnam_alloc(sam_account, account))) {
+		/* Create appropriate user */
+		if (r->acct_flags & ACB_NORMAL) {
+			add_script = talloc_strdup(sam_account,
+					lp_adduser_script());
+		} else if ( (r->acct_flags & ACB_WSTRUST) ||
+			    (r->acct_flags & ACB_SVRTRUST) ||
+			    (r->acct_flags & ACB_DOMTRUST) ) {
+			add_script = talloc_strdup(sam_account,
+					lp_addmachine_script());
+		} else {
+			DEBUG(1, ("Unknown user type: %s\n",
+				  pdb_encode_acct_ctrl(r->acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)));
+			nt_ret = NT_STATUS_UNSUCCESSFUL;
+			goto done;
+		}
+		if (!add_script) {
+			nt_ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+		if (*add_script) {
+			int add_ret;
+			add_script = talloc_all_string_sub(sam_account,
+					add_script,
+					"%u",
+					account);
+			if (!add_script) {
+				nt_ret = NT_STATUS_NO_MEMORY;
+				goto done;
+			}
+			add_ret = smbrun(add_script,NULL);
+			DEBUG(add_ret ? 0 : 1,("fetch_account: Running the command `%s' "
+				 "gave %d\n", add_script, add_ret));
+			if (add_ret == 0) {
+				smb_nscd_flush_user_cache();
+			}
+		}
+
+		/* try and find the possible unix account again */
+		if ( !(passwd = Get_Pwnam_alloc(sam_account, account)) ) {
+			d_fprintf(stderr, "Could not create posix account info for '%s'\n", account);
+			nt_ret = NT_STATUS_NO_SUCH_USER;
+			goto done;
+		}
+	}
+
+	sid_copy(&user_sid, get_global_sam_sid());
+	sid_append_rid(&user_sid, r->rid);
+
+	DEBUG(3, ("Attempting to find SID %s for user %s in the passdb\n",
+		  sid_to_fstring(sid_string, &user_sid), account));
+	if (!pdb_getsampwsid(sam_account, &user_sid)) {
+		sam_account_from_delta(sam_account, r);
+		DEBUG(3, ("Attempting to add user SID %s for user %s in the passdb\n",
+			  sid_to_fstring(sid_string, &user_sid),
+			  pdb_get_username(sam_account)));
+		if (!NT_STATUS_IS_OK(pdb_add_sam_account(sam_account))) {
+			DEBUG(1, ("SAM Account for %s failed to be added to the passdb!\n",
+				  account));
+			return NT_STATUS_ACCESS_DENIED;
+		}
+	} else {
+		sam_account_from_delta(sam_account, r);
+		DEBUG(3, ("Attempting to update user SID %s for user %s in the passdb\n",
+			  sid_to_fstring(sid_string, &user_sid),
+			  pdb_get_username(sam_account)));
+		if (!NT_STATUS_IS_OK(pdb_update_sam_account(sam_account))) {
+			DEBUG(1, ("SAM Account for %s failed to be updated in the passdb!\n",
+				  account));
+			TALLOC_FREE(sam_account);
+			return NT_STATUS_ACCESS_DENIED;
+		}
+	}
+
+	if (pdb_get_group_sid(sam_account) == NULL) {
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
-	result = libnet_samsync_init_context(mem_ctx,
-					     domain_sid,
-					     &ctx);
-	if (!NT_STATUS_IS_OK(result)) {
-		return result;
+	group_sid = *pdb_get_group_sid(sam_account);
+
+	if (!pdb_getgrsid(&map, group_sid)) {
+		DEBUG(0, ("Primary group of %s has no mapping!\n",
+			  pdb_get_username(sam_account)));
+	} else {
+		if (map.gid != passwd->pw_gid) {
+			if (!(grp = getgrgid(map.gid))) {
+				DEBUG(0, ("Could not find unix group %lu for user %s (group SID=%s)\n",
+					  (unsigned long)map.gid, pdb_get_username(sam_account), sid_string_tos(&group_sid)));
+			} else {
+				smb_set_primary_group(grp->gr_name, pdb_get_username(sam_account));
+			}
+		}
 	}
 
-	ctx->mode		= NET_SAMSYNC_MODE_FETCH_PASSDB;
-	ctx->cli		= pipe_hnd;
-	ctx->delta_fn		= fetch_sam_entries;
-	ctx->domain_name	= domain_name;
+	if ( !passwd ) {
+		DEBUG(1, ("No unix user for this account (%s), cannot adjust mappings\n",
+			pdb_get_username(sam_account)));
+	}
 
-	/* fetch domain */
-	result = libnet_samsync(SAM_DATABASE_DOMAIN, ctx);
+ done:
+	TALLOC_FREE(sam_account);
+	return nt_ret;
+}
 
-	if (!NT_STATUS_IS_OK(result) && ctx->error_message) {
-		d_fprintf(stderr, "%s\n", ctx->error_message);
-		goto fail;
+static NTSTATUS fetch_group_info(uint32_t rid,
+				 struct netr_DELTA_GROUP *r)
+{
+	fstring name;
+	fstring comment;
+	struct group *grp = NULL;
+	DOM_SID group_sid;
+	fstring sid_string;
+	GROUP_MAP map;
+	bool insert = True;
+
+	fstrcpy(name, r->group_name.string);
+	fstrcpy(comment, r->description.string);
+
+	/* add the group to the mapping table */
+	sid_copy(&group_sid, get_global_sam_sid());
+	sid_append_rid(&group_sid, rid);
+	sid_to_fstring(sid_string, &group_sid);
+
+	if (pdb_getgrsid(&map, group_sid)) {
+		if ( map.gid != -1 )
+			grp = getgrgid(map.gid);
+		insert = False;
 	}
 
-	if (ctx->result_message) {
-		d_fprintf(stdout, "%s\n", ctx->result_message);
+	if (grp == NULL) {
+		gid_t gid;
+
+		/* No group found from mapping, find it from its name. */
+		if ((grp = getgrnam(name)) == NULL) {
+
+			/* No appropriate group found, create one */
+
+			d_printf("Creating unix group: '%s'\n", name);
+
+			if (smb_create_group(name, &gid) != 0)
+				return NT_STATUS_ACCESS_DENIED;
+
+			if ((grp = getgrnam(name)) == NULL)
+				return NT_STATUS_ACCESS_DENIED;
+		}
 	}
 
-	/* fetch builtin */
-	ctx->domain_sid = sid_dup_talloc(mem_ctx, &global_sid_Builtin);
-	ctx->domain_sid_str = sid_string_talloc(mem_ctx, ctx->domain_sid);
-	result = libnet_samsync(SAM_DATABASE_BUILTIN, ctx);
+	map.gid = grp->gr_gid;
+	map.sid = group_sid;
+	map.sid_name_use = SID_NAME_DOM_GRP;
+	fstrcpy(map.nt_name, name);
+	if (r->description.string) {
+		fstrcpy(map.comment, comment);
+	} else {
+		fstrcpy(map.comment, "");
+	}
 
-	if (!NT_STATUS_IS_OK(result) && ctx->error_message) {
-		d_fprintf(stderr, "%s\n", ctx->error_message);
-		goto fail;
+	if (insert)
+		pdb_add_group_mapping_entry(&map);
+	else
+		pdb_update_group_mapping_entry(&map);
+
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS fetch_group_mem_info(uint32_t rid,
+				     struct netr_DELTA_GROUP_MEMBER *r)
+{
+	int i;
+	TALLOC_CTX *t = NULL;
+	char **nt_members = NULL;
+	char **unix_members;
+	DOM_SID group_sid;
+	GROUP_MAP map;
+	struct group *grp;
+
+	if (r->num_rids == 0) {
+		return NT_STATUS_OK;
 	}
 
-	if (ctx->result_message) {
-		d_fprintf(stdout, "%s\n", ctx->result_message);
+	sid_copy(&group_sid, get_global_sam_sid());
+	sid_append_rid(&group_sid, rid);
+
+	if (!get_domain_group_from_sid(group_sid, &map)) {
+		DEBUG(0, ("Could not find global group %d\n", rid));
+		return NT_STATUS_NO_SUCH_GROUP;
 	}
 
- fail:
-	TALLOC_FREE(ctx);
-	return result;
+	if (!(grp = getgrgid(map.gid))) {
+		DEBUG(0, ("Could not find unix group %lu\n", (unsigned long)map.gid));
+		return NT_STATUS_NO_SUCH_GROUP;
+	}
+
+	d_printf("Group members of %s: ", grp->gr_name);
+
+	if (!(t = talloc_init("fetch_group_mem_info"))) {
+		DEBUG(0, ("could not talloc_init\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	if (r->num_rids) {
+		if ((nt_members = TALLOC_ZERO_ARRAY(t, char *, r->num_rids)) == NULL) {
+			DEBUG(0, ("talloc failed\n"));
+			talloc_free(t);
+			return NT_STATUS_NO_MEMORY;
+		}
+	} else {
+		nt_members = NULL;
+	}
+
+	for (i=0; i < r->num_rids; i++) {
+		struct samu *member = NULL;
+		DOM_SID member_sid;
+
+		if ( !(member = samu_new(t)) ) {
+			talloc_destroy(t);
+			return NT_STATUS_NO_MEMORY;
+		}
+
+		sid_copy(&member_sid, get_global_sam_sid());
+		sid_append_rid(&member_sid, r->rids[i]);
+
+		if (!pdb_getsampwsid(member, &member_sid)) {
+			DEBUG(1, ("Found bogus group member: %d (member_sid=%s group=%s)\n",
+				  r->rids[i], sid_string_tos(&member_sid), grp->gr_name));
+			TALLOC_FREE(member);
+			continue;
+		}
+
+		if (pdb_get_group_rid(member) == rid) {
+			d_printf("%s(primary),", pdb_get_username(member));
+			TALLOC_FREE(member);
+			continue;
+		}
+
+		d_printf("%s,", pdb_get_username(member));
+		nt_members[i] = talloc_strdup(t, pdb_get_username(member));
+		TALLOC_FREE(member);
+	}
+
+	d_printf("\n");
+
+	unix_members = grp->gr_mem;
+
+	while (*unix_members) {
+		bool is_nt_member = False;
+		for (i=0; i < r->num_rids; i++) {
+			if (nt_members[i] == NULL) {
+				/* This was a primary group */
+				continue;
+			}
+
+			if (strcmp(*unix_members, nt_members[i]) == 0) {
+				is_nt_member = True;
+				break;
+			}
+		}
+		if (!is_nt_member) {
+			/* We look at a unix group member that is not
+			   an nt group member. So, remove it. NT is
+			   boss here. */
+			smb_delete_user_group(grp->gr_name, *unix_members);
+		}
+		unix_members += 1;
+	}
+
+	for (i=0; i < r->num_rids; i++) {
+		bool is_unix_member = False;
+
+		if (nt_members[i] == NULL) {
+			/* This was the primary group */
+			continue;
+		}
+
+		unix_members = grp->gr_mem;
+
+		while (*unix_members) {
+			if (strcmp(*unix_members, nt_members[i]) == 0) {
+				is_unix_member = True;
+				break;
+			}
+			unix_members += 1;
+		}
+
+		if (!is_unix_member) {
+			/* We look at a nt group member that is not a
+                           unix group member currently. So, add the nt
+                           group member. */
+			smb_add_user_group(grp->gr_name, nt_members[i]);
+		}
+	}
+
+	talloc_destroy(t);
+	return NT_STATUS_OK;
 }
 
-NTSTATUS rpc_vampire_ldif_internals(struct net_context *c,
-				    const DOM_SID *domain_sid,
-				    const char *domain_name,
-				    struct cli_state *cli,
-				    struct rpc_pipe_client *pipe_hnd,
-				    TALLOC_CTX *mem_ctx,
-				    int argc,
-				    const char **argv)
+static NTSTATUS fetch_alias_info(uint32_t rid,
+				 struct netr_DELTA_ALIAS *r,
+				 DOM_SID dom_sid)
 {
+	fstring name;
+	fstring comment;
+	struct group *grp = NULL;
+	DOM_SID alias_sid;
+	fstring sid_string;
+	GROUP_MAP map;
+	bool insert = True;
+
+	fstrcpy(name, r->alias_name.string);
+	fstrcpy(comment, r->description.string);
+
+	/* Find out whether the group is already mapped */
+	sid_copy(&alias_sid, &dom_sid);
+	sid_append_rid(&alias_sid, rid);
+	sid_to_fstring(sid_string, &alias_sid);
+
+	if (pdb_getgrsid(&map, alias_sid)) {
+		grp = getgrgid(map.gid);
+		insert = False;
+	}
+
+	if (grp == NULL) {
+		gid_t gid;
+
+		/* No group found from mapping, find it from its name. */
+		if ((grp = getgrnam(name)) == NULL) {
+			/* No appropriate group found, create one */
+			d_printf("Creating unix group: '%s'\n", name);
+			if (smb_create_group(name, &gid) != 0)
+				return NT_STATUS_ACCESS_DENIED;
+			if ((grp = getgrgid(gid)) == NULL)
+				return NT_STATUS_ACCESS_DENIED;
+		}
+	}
+
+	map.gid = grp->gr_gid;
+	map.sid = alias_sid;
+
+	if (sid_equal(&dom_sid, &global_sid_Builtin))
+		map.sid_name_use = SID_NAME_WKN_GRP;
+	else
+		map.sid_name_use = SID_NAME_ALIAS;
+
+	fstrcpy(map.nt_name, name);
+	fstrcpy(map.comment, comment);
+
+	if (insert)
+		pdb_add_group_mapping_entry(&map);
+	else
+		pdb_update_group_mapping_entry(&map);
+
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS fetch_alias_mem(uint32_t rid,
+				struct netr_DELTA_ALIAS_MEMBER *r,
+				DOM_SID dom_sid)
+{
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS fetch_domain_info(uint32_t rid,
+				  struct netr_DELTA_DOMAIN *r)
+{
+	time_t u_max_age, u_min_age, u_logout;
+	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
+	const char *domname;
+	struct netr_AcctLockStr *lockstr = NULL;
 	NTSTATUS status;
-	struct samsync_context *ctx = NULL;
+	TALLOC_CTX *mem_ctx = talloc_tos();
 
-	status = libnet_samsync_init_context(mem_ctx,
-					     domain_sid,
-					     &ctx);
+	status = pull_netr_AcctLockStr(mem_ctx, &r->account_lockout,
+				       &lockstr);
 	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+		d_printf("failed to pull account lockout string: %s\n",
+			nt_errstr(status));
 	}
 
-	if (argc >= 1) {
-		ctx->output_filename = argv[0];
+	u_max_age = uint64s_nt_time_to_unix_abs((uint64 *)&r->max_password_age);
+	u_min_age = uint64s_nt_time_to_unix_abs((uint64 *)&r->min_password_age);
+	u_logout = uint64s_nt_time_to_unix_abs((uint64 *)&r->force_logoff_time);
+
+	domname = r->domain_name.string;
+	if (!domname) {
+		return NT_STATUS_NO_MEMORY;
 	}
 
-	ctx->mode		= NET_SAMSYNC_MODE_FETCH_LDIF;
-	ctx->cli		= pipe_hnd;
-	ctx->delta_fn		= fetch_sam_entries_ldif;
-	ctx->domain_name	= domain_name;
+	/* we don't handle BUILTIN account policies */
+	if (!strequal(domname, get_global_sam_name())) {
+		printf("skipping SAM_DOMAIN_INFO delta for '%s' (is not my domain)\n", domname);
+		return NT_STATUS_OK;
+	}
 
-	/* fetch domain */
-	status = libnet_samsync(SAM_DATABASE_DOMAIN, ctx);
 
-	if (!NT_STATUS_IS_OK(status) && ctx->error_message) {
-		d_fprintf(stderr, "%s\n", ctx->error_message);
-		goto fail;
+	if (!pdb_set_account_policy(AP_PASSWORD_HISTORY,
+				    r->password_history_length))
+		return nt_status;
+
+	if (!pdb_set_account_policy(AP_MIN_PASSWORD_LEN,
+				    r->min_password_length))
+		return nt_status;
+
+	if (!pdb_set_account_policy(AP_MAX_PASSWORD_AGE, (uint32)u_max_age))
+		return nt_status;
+
+	if (!pdb_set_account_policy(AP_MIN_PASSWORD_AGE, (uint32)u_min_age))
+		return nt_status;
+
+	if (!pdb_set_account_policy(AP_TIME_TO_LOGOUT, (uint32)u_logout))
+		return nt_status;
+
+	if (lockstr) {
+		time_t u_lockoutreset, u_lockouttime;
+
+		u_lockoutreset = uint64s_nt_time_to_unix_abs(&lockstr->reset_count);
+		u_lockouttime = uint64s_nt_time_to_unix_abs((uint64_t *)&lockstr->lockout_duration);
+
+		if (!pdb_set_account_policy(AP_BAD_ATTEMPT_LOCKOUT,
+					    lockstr->bad_attempt_lockout))
+			return nt_status;
+
+		if (!pdb_set_account_policy(AP_RESET_COUNT_TIME, (uint32_t)u_lockoutreset/60))
+			return nt_status;
+
+		if (u_lockouttime != -1)
+			u_lockouttime /= 60;
+
+		if (!pdb_set_account_policy(AP_LOCK_ACCOUNT_DURATION, (uint32_t)u_lockouttime))
+			return nt_status;
 	}
 
-	if (ctx->result_message) {
-		d_fprintf(stdout, "%s\n", ctx->result_message);
+	if (!pdb_set_account_policy(AP_USER_MUST_LOGON_TO_CHG_PASS,
+				    r->logon_to_chgpass))
+		return nt_status;
+
+	return NT_STATUS_OK;
+}
+
+static void fetch_sam_entry(struct netr_DELTA_ENUM *r, DOM_SID dom_sid)
+{
+	switch(r->delta_type) {
+	case NETR_DELTA_USER:
+		fetch_account_info(r->delta_id_union.rid,
+				   r->delta_union.user);
+		break;
+	case NETR_DELTA_GROUP:
+		fetch_group_info(r->delta_id_union.rid,
+				 r->delta_union.group);
+		break;
+	case NETR_DELTA_GROUP_MEMBER:
+		fetch_group_mem_info(r->delta_id_union.rid,
+				     r->delta_union.group_member);
+		break;
+	case NETR_DELTA_ALIAS:
+		fetch_alias_info(r->delta_id_union.rid,
+				 r->delta_union.alias,
+				 dom_sid);
+		break;
+	case NETR_DELTA_ALIAS_MEMBER:
+		fetch_alias_mem(r->delta_id_union.rid,
+				r->delta_union.alias_member,
+				dom_sid);
+		break;
+	case NETR_DELTA_DOMAIN:
+		fetch_domain_info(r->delta_id_union.rid,
+				  r->delta_union.domain);
+		break;
+	/* The following types are recognised but not handled */
+	case NETR_DELTA_RENAME_GROUP:
+		d_printf("NETR_DELTA_RENAME_GROUP not handled\n");
+		break;
+	case NETR_DELTA_RENAME_USER:
+		d_printf("NETR_DELTA_RENAME_USER not handled\n");
+		break;
+	case NETR_DELTA_RENAME_ALIAS:
+		d_printf("NETR_DELTA_RENAME_ALIAS not handled\n");
+		break;
+	case NETR_DELTA_POLICY:
+		d_printf("NETR_DELTA_POLICY not handled\n");
+		break;
+	case NETR_DELTA_TRUSTED_DOMAIN:
+		d_printf("NETR_DELTA_TRUSTED_DOMAIN not handled\n");
+		break;
+	case NETR_DELTA_ACCOUNT:
+		d_printf("NETR_DELTA_ACCOUNT not handled\n");
+		break;
+	case NETR_DELTA_SECRET:
+		d_printf("NETR_DELTA_SECRET not handled\n");
+		break;
+	case NETR_DELTA_DELETE_GROUP:
+		d_printf("NETR_DELTA_DELETE_GROUP not handled\n");
+		break;
+	case NETR_DELTA_DELETE_USER:
+		d_printf("NETR_DELTA_DELETE_USER not handled\n");
+		break;
+	case NETR_DELTA_MODIFY_COUNT:
+		d_printf("NETR_DELTA_MODIFY_COUNT not handled\n");
+		break;
+	case NETR_DELTA_DELETE_ALIAS:
+		d_printf("NETR_DELTA_DELETE_ALIAS not handled\n");
+		break;
+	case NETR_DELTA_DELETE_TRUST:
+		d_printf("NETR_DELTA_DELETE_TRUST not handled\n");
+		break;
+	case NETR_DELTA_DELETE_ACCOUNT:
+		d_printf("NETR_DELTA_DELETE_ACCOUNT not handled\n");
+		break;
+	case NETR_DELTA_DELETE_SECRET:
+		d_printf("NETR_DELTA_DELETE_SECRET not handled\n");
+		break;
+	case NETR_DELTA_DELETE_GROUP2:
+		d_printf("NETR_DELTA_DELETE_GROUP2 not handled\n");
+		break;
+	case NETR_DELTA_DELETE_USER2:
+		d_printf("NETR_DELTA_DELETE_USER2 not handled\n");
+		break;
+	default:
+		d_printf("Unknown delta record type %d\n", r->delta_type);
+		break;
 	}
+}
 
-	/* fetch builtin */
-	ctx->domain_sid = sid_dup_talloc(mem_ctx, &global_sid_Builtin);
-	ctx->domain_sid_str = sid_string_talloc(mem_ctx, ctx->domain_sid);
-	status = libnet_samsync(SAM_DATABASE_BUILTIN, ctx);
+static NTSTATUS fetch_database(struct rpc_pipe_client *pipe_hnd, uint32 db_type, DOM_SID dom_sid)
+{
+        NTSTATUS result;
+	int i;
+        TALLOC_CTX *mem_ctx;
+	const char *logon_server = pipe_hnd->cli->desthost;
+	const char *computername = global_myname();
+	struct netr_Authenticator credential;
+	struct netr_Authenticator return_authenticator;
+	enum netr_SamDatabaseID database_id = db_type;
+	uint16_t restart_state = 0;
+	uint32_t sync_context = 0;
+	DATA_BLOB session_key;
 
-	if (!NT_STATUS_IS_OK(status) && ctx->error_message) {
-		d_fprintf(stderr, "%s\n", ctx->error_message);
-		goto fail;
+	if (!(mem_ctx = talloc_init("fetch_database")))
+		return NT_STATUS_NO_MEMORY;
+
+	switch( db_type ) {
+	case SAM_DATABASE_DOMAIN:
+		d_printf("Fetching DOMAIN database\n");
+		break;
+	case SAM_DATABASE_BUILTIN:
+		d_printf("Fetching BUILTIN database\n");
+		break;
+	case SAM_DATABASE_PRIVS:
+		d_printf("Fetching PRIVS databases\n");
+		break;
+	default:
+		d_printf("Fetching unknown database type %u\n", db_type );
+		break;
 	}
 
-	if (ctx->result_message) {
-		d_fprintf(stdout, "%s\n", ctx->result_message);
+	do {
+		struct netr_DELTA_ENUM_ARRAY *delta_enum_array = NULL;
+
+		netlogon_creds_client_step(pipe_hnd->dc, &credential);
+
+		result = rpccli_netr_DatabaseSync2(pipe_hnd, mem_ctx,
+						   logon_server,
+						   computername,
+						   &credential,
+						   &return_authenticator,
+						   database_id,
+						   restart_state,
+						   &sync_context,
+						   &delta_enum_array,
+						   0xffff);
+
+		/* Check returned credentials. */
+		if (!netlogon_creds_client_check(pipe_hnd->dc,
+						 &return_authenticator.cred)) {
+			DEBUG(0,("credentials chain check failed\n"));
+			return NT_STATUS_ACCESS_DENIED;
+		}
+
+		if (NT_STATUS_IS_ERR(result)) {
+			break;
+		}
+
+		session_key = data_blob_const(pipe_hnd->dc->sess_key, 16);
+
+		samsync_fix_delta_array(mem_ctx,
+					&session_key,
+					true,
+					database_id,
+					delta_enum_array);
+
+		for (i = 0; i < delta_enum_array->num_deltas; i++) {
+			fetch_sam_entry(&delta_enum_array->delta_enum[i], dom_sid);
+		}
+
+	} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
+
+	talloc_destroy(mem_ctx);
+
+	return result;
+}
+
+static NTSTATUS populate_ldap_for_ldif(fstring sid, const char *suffix, const char
+		       *builtin_sid, FILE *add_fd)
+{
+	const char *user_suffix, *group_suffix, *machine_suffix, *idmap_suffix;
+	char *user_attr=NULL, *group_attr=NULL;
+	char *suffix_attr;
+	int len;
+
+	/* Get the suffix attribute */
+	suffix_attr = sstring_sub(suffix, '=', ',');
+	if (suffix_attr == NULL) {
+		len = strlen(suffix);
+		suffix_attr = (char*)SMB_MALLOC(len+1);
+		memcpy(suffix_attr, suffix, len);
+		suffix_attr[len] = '\0';
 	}
 
- fail:
-	TALLOC_FREE(ctx);
-	return status;
+	/* Write the base */
+	fprintf(add_fd, "# %s\n", suffix);
+	fprintf(add_fd, "dn: %s\n", suffix);
+	fprintf(add_fd, "objectClass: dcObject\n");
+	fprintf(add_fd, "objectClass: organization\n");
+	fprintf(add_fd, "o: %s\n", suffix_attr);
+	fprintf(add_fd, "dc: %s\n", suffix_attr);
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	user_suffix = lp_ldap_user_suffix();
+	if (user_suffix == NULL) {
+		SAFE_FREE(suffix_attr);
+		return NT_STATUS_NO_MEMORY;
+	}
+	/* If it exists and is distinct from other containers,
+	   Write the Users entity */
+	if (*user_suffix && strcmp(user_suffix, suffix)) {
+		user_attr = sstring_sub(lp_ldap_user_suffix(), '=', ',');
+		fprintf(add_fd, "# %s\n", user_suffix);
+		fprintf(add_fd, "dn: %s\n", user_suffix);
+		fprintf(add_fd, "objectClass: organizationalUnit\n");
+		fprintf(add_fd, "ou: %s\n", user_attr);
+		fprintf(add_fd, "\n");
+		fflush(add_fd);
+	}
+
+
+	group_suffix = lp_ldap_group_suffix();
+	if (group_suffix == NULL) {
+		SAFE_FREE(suffix_attr);
+		SAFE_FREE(user_attr);
+		return NT_STATUS_NO_MEMORY;
+	}
+	/* If it exists and is distinct from other containers,
+	   Write the Groups entity */
+	if (*group_suffix && strcmp(group_suffix, suffix)) {
+		group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+		fprintf(add_fd, "# %s\n", group_suffix);
+		fprintf(add_fd, "dn: %s\n", group_suffix);
+		fprintf(add_fd, "objectClass: organizationalUnit\n");
+		fprintf(add_fd, "ou: %s\n", group_attr);
+		fprintf(add_fd, "\n");
+		fflush(add_fd);
+	}
+
+	/* If it exists and is distinct from other containers,
+	   Write the Computers entity */
+	machine_suffix = lp_ldap_machine_suffix();
+	if (machine_suffix == NULL) {
+		SAFE_FREE(suffix_attr);
+		SAFE_FREE(user_attr);
+		SAFE_FREE(group_attr);
+		return NT_STATUS_NO_MEMORY;
+	}
+	if (*machine_suffix && strcmp(machine_suffix, user_suffix) &&
+	    strcmp(machine_suffix, suffix)) {
+		char *machine_ou = NULL;
+		fprintf(add_fd, "# %s\n", machine_suffix);
+		fprintf(add_fd, "dn: %s\n", machine_suffix);
+		fprintf(add_fd, "objectClass: organizationalUnit\n");
+		/* this isn't totally correct as it assumes that
+		   there _must_ be an ou. just fixing memleak now. jmcd */
+		machine_ou = sstring_sub(lp_ldap_machine_suffix(), '=', ',');
+		fprintf(add_fd, "ou: %s\n", machine_ou);
+		SAFE_FREE(machine_ou);
+		fprintf(add_fd, "\n");
+		fflush(add_fd);
+	}
+
+	/* If it exists and is distinct from other containers,
+	   Write the IdMap entity */
+	idmap_suffix = lp_ldap_idmap_suffix();
+	if (idmap_suffix == NULL) {
+		SAFE_FREE(suffix_attr);
+		SAFE_FREE(user_attr);
+		SAFE_FREE(group_attr);
+		return NT_STATUS_NO_MEMORY;
+	}
+	if (*idmap_suffix &&
+	    strcmp(idmap_suffix, user_suffix) &&
+	    strcmp(idmap_suffix, suffix)) {
+		char *s;
+		fprintf(add_fd, "# %s\n", idmap_suffix);
+		fprintf(add_fd, "dn: %s\n", idmap_suffix);
+		fprintf(add_fd, "ObjectClass: organizationalUnit\n");
+		s = sstring_sub(lp_ldap_idmap_suffix(), '=', ',');
+		fprintf(add_fd, "ou: %s\n", s);
+		SAFE_FREE(s);
+		fprintf(add_fd, "\n");
+		fflush(add_fd);
+	}
+
+	/* Write the domain entity */
+	fprintf(add_fd, "# %s, %s\n", lp_workgroup(), suffix);
+	fprintf(add_fd, "dn: sambaDomainName=%s,%s\n", lp_workgroup(),
+		suffix);
+	fprintf(add_fd, "objectClass: sambaDomain\n");
+	fprintf(add_fd, "objectClass: sambaUnixIdPool\n");
+	fprintf(add_fd, "sambaDomainName: %s\n", lp_workgroup());
+	fprintf(add_fd, "sambaSID: %s\n", sid);
+	fprintf(add_fd, "uidNumber: %d\n", ++ldif_uid);
+	fprintf(add_fd, "gidNumber: %d\n", ++ldif_gid);
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Domain Admins entity */
+	fprintf(add_fd, "# Domain Admins, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Domain Admins,ou=%s,%s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "cn: Domain Admins\n");
+	fprintf(add_fd, "memberUid: Administrator\n");
+	fprintf(add_fd, "description: Netbios Domain Administrators\n");
+	fprintf(add_fd, "gidNumber: 512\n");
+	fprintf(add_fd, "sambaSID: %s-512\n", sid);
+	fprintf(add_fd, "sambaGroupType: 2\n");
+	fprintf(add_fd, "displayName: Domain Admins\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Domain Users entity */
+	fprintf(add_fd, "# Domain Users, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Domain Users,ou=%s,%s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "cn: Domain Users\n");
+	fprintf(add_fd, "description: Netbios Domain Users\n");
+	fprintf(add_fd, "gidNumber: 513\n");
+	fprintf(add_fd, "sambaSID: %s-513\n", sid);
+	fprintf(add_fd, "sambaGroupType: 2\n");
+	fprintf(add_fd, "displayName: Domain Users\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Domain Guests entity */
+	fprintf(add_fd, "# Domain Guests, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Domain Guests,ou=%s,%s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "cn: Domain Guests\n");
+	fprintf(add_fd, "description: Netbios Domain Guests\n");
+	fprintf(add_fd, "gidNumber: 514\n");
+	fprintf(add_fd, "sambaSID: %s-514\n", sid);
+	fprintf(add_fd, "sambaGroupType: 2\n");
+	fprintf(add_fd, "displayName: Domain Guests\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Domain Computers entity */
+	fprintf(add_fd, "# Domain Computers, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Domain Computers,ou=%s,%s\n",
+		group_attr, suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "gidNumber: 515\n");
+	fprintf(add_fd, "cn: Domain Computers\n");
+	fprintf(add_fd, "description: Netbios Domain Computers accounts\n");
+	fprintf(add_fd, "sambaSID: %s-515\n", sid);
+	fprintf(add_fd, "sambaGroupType: 2\n");
+	fprintf(add_fd, "displayName: Domain Computers\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Admininistrators Groups entity */
+	fprintf(add_fd, "# Administrators, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Administrators,ou=%s,%s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "gidNumber: 544\n");
+	fprintf(add_fd, "cn: Administrators\n");
+	fprintf(add_fd, "description: Netbios Domain Members can fully administer the computer/sambaDomainName\n");
+	fprintf(add_fd, "sambaSID: %s-544\n", builtin_sid);
+	fprintf(add_fd, "sambaGroupType: 5\n");
+	fprintf(add_fd, "displayName: Administrators\n");
+	fprintf(add_fd, "\n");
+
+	/* Write the Print Operator entity */
+	fprintf(add_fd, "# Print Operators, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Print Operators,ou=%s,%s\n",
+		group_attr, suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "gidNumber: 550\n");
+	fprintf(add_fd, "cn: Print Operators\n");
+	fprintf(add_fd, "description: Netbios Domain Print Operators\n");
+	fprintf(add_fd, "sambaSID: %s-550\n", builtin_sid);
+	fprintf(add_fd, "sambaGroupType: 5\n");
+	fprintf(add_fd, "displayName: Print Operators\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Backup Operators entity */
+	fprintf(add_fd, "# Backup Operators, %s, %s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "dn: cn=Backup Operators,ou=%s,%s\n",
+		group_attr, suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "gidNumber: 551\n");
+	fprintf(add_fd, "cn: Backup Operators\n");
+	fprintf(add_fd, "description: Netbios Domain Members can bypass file security to back up files\n");
+	fprintf(add_fd, "sambaSID: %s-551\n", builtin_sid);
+	fprintf(add_fd, "sambaGroupType: 5\n");
+	fprintf(add_fd, "displayName: Backup Operators\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Write the Replicators entity */
+	fprintf(add_fd, "# Replicators, %s, %s\n", group_attr, suffix);
+	fprintf(add_fd, "dn: cn=Replicators,ou=%s,%s\n", group_attr,
+		suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "gidNumber: 552\n");
+	fprintf(add_fd, "cn: Replicators\n");
+	fprintf(add_fd, "description: Netbios Domain Supports file replication in a sambaDomainName\n");
+	fprintf(add_fd, "sambaSID: %s-552\n", builtin_sid);
+	fprintf(add_fd, "sambaGroupType: 5\n");
+	fprintf(add_fd, "displayName: Replicators\n");
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Deallocate memory, and return */
+	SAFE_FREE(suffix_attr);
+	SAFE_FREE(user_attr);
+	SAFE_FREE(group_attr);
+	return NT_STATUS_OK;
 }
 
-int rpc_vampire_ldif(struct net_context *c, int argc, const char **argv)
+static NTSTATUS map_populate_groups(GROUPMAP *groupmap, ACCOUNTMAP *accountmap, fstring sid,
+		    const char *suffix, const char *builtin_sid)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc vampire ldif\n"
-			 "    Dump remote SAM database to LDIF file or stdout\n");
-		return 0;
+	char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+
+	/* Map the groups created by populate_ldap_for_ldif */
+	groupmap[0].rid = 512;
+	groupmap[0].gidNumber = 512;
+	snprintf(groupmap[0].sambaSID, sizeof(groupmap[0].sambaSID),
+			"%s-512", sid);
+	snprintf(groupmap[0].group_dn, sizeof(groupmap[0].group_dn),
+			"cn=Domain Admins,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[0].rid = 512;
+	snprintf(accountmap[0].cn, sizeof(accountmap[0].cn),
+			"%s", "Domain Admins");
+
+	groupmap[1].rid = 513;
+	groupmap[1].gidNumber = 513;
+	snprintf(groupmap[1].sambaSID, sizeof(groupmap[1].sambaSID),
+			"%s-513", sid);
+	snprintf(groupmap[1].group_dn, sizeof(groupmap[1].group_dn),
+			"cn=Domain Users,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[1].rid = 513;
+	snprintf(accountmap[1].cn, sizeof(accountmap[1].cn),
+			"%s", "Domain Users");
+
+	groupmap[2].rid = 514;
+	groupmap[2].gidNumber = 514;
+	snprintf(groupmap[2].sambaSID, sizeof(groupmap[2].sambaSID),
+			"%s-514", sid);
+	snprintf(groupmap[2].group_dn, sizeof(groupmap[2].group_dn),
+			"cn=Domain Guests,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[2].rid = 514;
+	snprintf(accountmap[2].cn, sizeof(accountmap[2].cn),
+			"%s", "Domain Guests");
+
+	groupmap[3].rid = 515;
+	groupmap[3].gidNumber = 515;
+	snprintf(groupmap[3].sambaSID, sizeof(groupmap[3].sambaSID),
+			"%s-515", sid);
+	snprintf(groupmap[3].group_dn, sizeof(groupmap[3].group_dn),
+			"cn=Domain Computers,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[3].rid = 515;
+	snprintf(accountmap[3].cn, sizeof(accountmap[3].cn),
+			"%s", "Domain Computers");
+
+	groupmap[4].rid = 544;
+	groupmap[4].gidNumber = 544;
+	snprintf(groupmap[4].sambaSID, sizeof(groupmap[4].sambaSID),
+			"%s-544", builtin_sid);
+	snprintf(groupmap[4].group_dn, sizeof(groupmap[4].group_dn),
+			"cn=Administrators,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[4].rid = 515;
+	snprintf(accountmap[4].cn, sizeof(accountmap[4].cn),
+			"%s", "Administrators");
+
+	groupmap[5].rid = 550;
+	groupmap[5].gidNumber = 550;
+	snprintf(groupmap[5].sambaSID, sizeof(groupmap[5].sambaSID),
+			"%s-550", builtin_sid);
+	snprintf(groupmap[5].group_dn, sizeof(groupmap[5].group_dn),
+			"cn=Print Operators,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[5].rid = 550;
+	snprintf(accountmap[5].cn, sizeof(accountmap[5].cn),
+			"%s", "Print Operators");
+
+	groupmap[6].rid = 551;
+	groupmap[6].gidNumber = 551;
+	snprintf(groupmap[6].sambaSID, sizeof(groupmap[6].sambaSID),
+			"%s-551", builtin_sid);
+	snprintf(groupmap[6].group_dn, sizeof(groupmap[6].group_dn),
+			"cn=Backup Operators,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[6].rid = 551;
+	snprintf(accountmap[6].cn, sizeof(accountmap[6].cn),
+			"%s", "Backup Operators");
+
+	groupmap[7].rid = 552;
+	groupmap[7].gidNumber = 552;
+	snprintf(groupmap[7].sambaSID, sizeof(groupmap[7].sambaSID),
+			"%s-552", builtin_sid);
+	snprintf(groupmap[7].group_dn, sizeof(groupmap[7].group_dn),
+			"cn=Replicators,ou=%s,%s",
+			group_attr, suffix);
+	accountmap[7].rid = 551;
+	snprintf(accountmap[7].cn, sizeof(accountmap[7].cn),
+			"%s", "Replicators");
+	SAFE_FREE(group_attr);
+	return NT_STATUS_OK;
+}
+
+/*
+ * This is a crap routine, but I think it's the quickest way to solve the
+ * UTF8->base64 problem.
+ */
+
+static int fprintf_attr(FILE *add_fd, const char *attr_name,
+			const char *fmt, ...)
+{
+	va_list ap;
+	char *value, *p, *base64;
+	DATA_BLOB base64_blob;
+	bool do_base64 = False;
+	int res;
+
+	va_start(ap, fmt);
+	value = talloc_vasprintf(NULL, fmt, ap);
+	va_end(ap);
+
+	SMB_ASSERT(value != NULL);
+
+	for (p=value; *p; p++) {
+		if (*p & 0x80) {
+			do_base64 = True;
+			break;
+		}
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id, 0,
-			       rpc_vampire_ldif_internals, argc, argv);
+	if (!do_base64) {
+		bool only_whitespace = True;
+		for (p=value; *p; p++) {
+			/*
+			 * I know that this not multibyte safe, but we break
+			 * on the first non-whitespace character anyway.
+			 */
+			if (!isspace(*p)) {
+				only_whitespace = False;
+				break;
+			}
+		}
+		if (only_whitespace) {
+			do_base64 = True;
+		}
+	}
+
+	if (!do_base64) {
+		res = fprintf(add_fd, "%s: %s\n", attr_name, value);
+		TALLOC_FREE(value);
+		return res;
+	}
+
+	base64_blob.data = (unsigned char *)value;
+	base64_blob.length = strlen(value);
+
+	base64 = base64_encode_data_blob(value, base64_blob);
+	SMB_ASSERT(base64 != NULL);
+
+	res = fprintf(add_fd, "%s:: %s\n", attr_name, base64);
+	TALLOC_FREE(value);
+	return res;
 }
 
+static NTSTATUS fetch_group_info_to_ldif(struct netr_DELTA_GROUP *r, GROUPMAP *groupmap,
+			 FILE *add_fd, fstring sid, char *suffix)
+{
+	fstring groupname;
+	uint32 grouptype = 0, g_rid = 0;
+	char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
 
-NTSTATUS rpc_vampire_keytab_internals(struct net_context *c,
-				      const DOM_SID *domain_sid,
-				      const char *domain_name,
-				      struct cli_state *cli,
-				      struct rpc_pipe_client *pipe_hnd,
-				      TALLOC_CTX *mem_ctx,
-				      int argc,
-				      const char **argv)
+	/* Get the group name */
+	fstrcpy(groupname, r->group_name.string);
+
+	/* Set up the group type (always 2 for group info) */
+	grouptype = 2;
+
+	/* These groups are entered by populate_ldap_for_ldif */
+	if (strcmp(groupname, "Domain Admins") == 0 ||
+            strcmp(groupname, "Domain Users") == 0 ||
+	    strcmp(groupname, "Domain Guests") == 0 ||
+	    strcmp(groupname, "Domain Computers") == 0 ||
+	    strcmp(groupname, "Administrators") == 0 ||
+	    strcmp(groupname, "Print Operators") == 0 ||
+	    strcmp(groupname, "Backup Operators") == 0 ||
+	    strcmp(groupname, "Replicators") == 0) {
+		SAFE_FREE(group_attr);
+		return NT_STATUS_OK;
+	} else {
+		/* Increment the gid for the new group */
+	        ldif_gid++;
+	}
+
+	/* Map the group rid, gid, and dn */
+	g_rid = r->rid;
+	groupmap->rid = g_rid;
+	groupmap->gidNumber = ldif_gid;
+	snprintf(groupmap->sambaSID, sizeof(groupmap->sambaSID),
+			"%s-%d", sid, g_rid);
+	snprintf(groupmap->group_dn, sizeof(groupmap->group_dn),
+		     "cn=%s,ou=%s,%s", groupname, group_attr, suffix);
+
+	/* Write the data to the temporary add ldif file */
+	fprintf(add_fd, "# %s, %s, %s\n", groupname, group_attr,
+		suffix);
+	fprintf_attr(add_fd, "dn", "cn=%s,ou=%s,%s", groupname, group_attr,
+		     suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf_attr(add_fd, "cn", "%s", groupname);
+	fprintf(add_fd, "gidNumber: %d\n", ldif_gid);
+	fprintf(add_fd, "sambaSID: %s\n", groupmap->sambaSID);
+	fprintf(add_fd, "sambaGroupType: %d\n", grouptype);
+	fprintf_attr(add_fd, "displayName", "%s", groupname);
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	SAFE_FREE(group_attr);
+	/* Return */
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS fetch_account_info_to_ldif(struct netr_DELTA_USER *r,
+					   GROUPMAP *groupmap,
+					   ACCOUNTMAP *accountmap,
+					   FILE *add_fd,
+					   fstring sid, char *suffix,
+					   int alloced)
 {
-	NTSTATUS status;
-	struct samsync_context *ctx = NULL;
+	fstring username, logonscript, homedrive, homepath = "", homedir = "";
+	fstring hex_nt_passwd, hex_lm_passwd;
+	fstring description, profilepath, fullname, sambaSID;
+	uchar lm_passwd[16], nt_passwd[16];
+	char *flags, *user_rdn;
+	const char *ou;
+	const char* nopasswd = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
+	static uchar zero_buf[16];
+	uint32 rid = 0, group_rid = 0, gidNumber = 0;
+	time_t unix_time;
+	int i;
 
-	status = libnet_samsync_init_context(mem_ctx,
-					     domain_sid,
-					     &ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	/* Get the username */
+	fstrcpy(username, r->account_name.string);
+
+	/* Get the rid */
+	rid = r->rid;
+
+	/* Map the rid and username for group member info later */
+	accountmap->rid = rid;
+	snprintf(accountmap->cn, sizeof(accountmap->cn), "%s", username);
+
+	/* Get the home directory */
+	if (r->acct_flags & ACB_NORMAL) {
+		fstrcpy(homedir, r->home_directory.string);
+		if (!*homedir) {
+			snprintf(homedir, sizeof(homedir), "/home/%s", username);
+		} else {
+			snprintf(homedir, sizeof(homedir), "/nobodyshomedir");
+		}
+		ou = lp_ldap_user_suffix();
+	} else {
+		ou = lp_ldap_machine_suffix();
+		snprintf(homedir, sizeof(homedir), "/machinehomedir");
 	}
 
-	if (argc >= 1) {
-		ctx->output_filename = argv[0];
+        /* Get the logon script */
+	fstrcpy(logonscript, r->logon_script.string);
+
+        /* Get the home drive */
+	fstrcpy(homedrive, r->home_drive.string);
+
+        /* Get the home path */
+	fstrcpy(homepath, r->home_directory.string);
+
+	/* Get the description */
+	fstrcpy(description, r->description.string);
+
+	/* Get the display name */
+	fstrcpy(fullname, r->full_name.string);
+
+	/* Get the profile path */
+	fstrcpy(profilepath, r->profile_path.string);
+
+	/* Get lm and nt password data */
+	if (memcmp(r->lmpassword.hash, zero_buf, 16) != 0) {
+		sam_pwd_hash(r->rid, r->lmpassword.hash, lm_passwd, 0);
+		pdb_sethexpwd(hex_lm_passwd, lm_passwd, r->acct_flags);
+	} else {
+		pdb_sethexpwd(hex_lm_passwd, NULL, 0);
 	}
+	if (memcmp(r->ntpassword.hash, zero_buf, 16) != 0) {
+		sam_pwd_hash(r->rid, r->ntpassword.hash, nt_passwd, 0);
+		pdb_sethexpwd(hex_nt_passwd, nt_passwd, r->acct_flags);
+	} else {
+		pdb_sethexpwd(hex_nt_passwd, NULL, 0);
+	}
+	unix_time = nt_time_to_unix(r->last_password_change);
 
-	ctx->mode		= NET_SAMSYNC_MODE_FETCH_KEYTAB;
-	ctx->cli		= pipe_hnd;
-	ctx->delta_fn		= fetch_sam_entries_keytab;
-	ctx->domain_name	= domain_name;
-	ctx->username		= c->opt_user_name;
-	ctx->password		= c->opt_password;
+	/* Increment the uid for the new user */
+	ldif_uid++;
 
-	/* fetch domain */
-	status = libnet_samsync(SAM_DATABASE_DOMAIN, ctx);
+	/* Set up group id and sambaSID for the user */
+	group_rid = r->primary_gid;
+	for (i=0; i<alloced; i++) {
+		if (groupmap[i].rid == group_rid) break;
+	}
+	if (i == alloced){
+		DEBUG(1, ("Could not find rid %d in groupmap array\n",
+			  group_rid));
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+	gidNumber = groupmap[i].gidNumber;
+	snprintf(sambaSID, sizeof(sambaSID), groupmap[i].sambaSID);
 
-	if (!NT_STATUS_IS_OK(status) && ctx->error_message) {
-		d_fprintf(stderr, "%s\n", ctx->error_message);
-		goto out;
+	/* Set up sambaAcctFlags */
+	flags = pdb_encode_acct_ctrl(r->acct_flags,
+				     NEW_PW_FORMAT_SPACE_PADDED_LEN);
+
+	/* Add the user to the temporary add ldif file */
+	/* this isn't quite right...we can't assume there's just OU=. jmcd */
+	user_rdn = sstring_sub(ou, '=', ',');
+	fprintf(add_fd, "# %s, %s, %s\n", username, user_rdn, suffix);
+	fprintf_attr(add_fd, "dn", "uid=%s,ou=%s,%s", username, user_rdn,
+		     suffix);
+	SAFE_FREE(user_rdn);
+	fprintf(add_fd, "ObjectClass: top\n");
+	fprintf(add_fd, "objectClass: inetOrgPerson\n");
+	fprintf(add_fd, "objectClass: posixAccount\n");
+	fprintf(add_fd, "objectClass: shadowAccount\n");
+	fprintf(add_fd, "objectClass: sambaSamAccount\n");
+	fprintf_attr(add_fd, "cn", "%s", username);
+	fprintf_attr(add_fd, "sn", "%s", username);
+	fprintf_attr(add_fd, "uid", "%s", username);
+	fprintf(add_fd, "uidNumber: %d\n", ldif_uid);
+	fprintf(add_fd, "gidNumber: %d\n", gidNumber);
+	fprintf_attr(add_fd, "homeDirectory", "%s", homedir);
+	if (*homepath)
+		fprintf_attr(add_fd, "sambaHomePath", "%s", homepath);
+        if (*homedrive)
+                fprintf_attr(add_fd, "sambaHomeDrive", "%s", homedrive);
+        if (*logonscript)
+                fprintf_attr(add_fd, "sambaLogonScript", "%s", logonscript);
+	fprintf(add_fd, "loginShell: %s\n",
+		((r->acct_flags & ACB_NORMAL) ?
+		 "/bin/bash" : "/bin/false"));
+	fprintf(add_fd, "gecos: System User\n");
+	if (*description)
+		fprintf_attr(add_fd, "description", "%s", description);
+	fprintf(add_fd, "sambaSID: %s-%d\n", sid, rid);
+	fprintf(add_fd, "sambaPrimaryGroupSID: %s\n", sambaSID);
+	if(*fullname)
+		fprintf_attr(add_fd, "displayName", "%s", fullname);
+	if(*profilepath)
+		fprintf_attr(add_fd, "sambaProfilePath", "%s", profilepath);
+	if (strcmp(nopasswd, hex_lm_passwd) != 0)
+		fprintf(add_fd, "sambaLMPassword: %s\n", hex_lm_passwd);
+	if (strcmp(nopasswd, hex_nt_passwd) != 0)
+		fprintf(add_fd, "sambaNTPassword: %s\n", hex_nt_passwd);
+	fprintf(add_fd, "sambaPwdLastSet: %d\n", (int)unix_time);
+	fprintf(add_fd, "sambaAcctFlags: %s\n", flags);
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	/* Return */
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS fetch_alias_info_to_ldif(struct netr_DELTA_ALIAS *r,
+					 GROUPMAP *groupmap,
+					 FILE *add_fd, fstring sid,
+					 char *suffix,
+					 unsigned db_type)
+{
+	fstring aliasname, description;
+	uint32 grouptype = 0, g_rid = 0;
+	char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+
+	/* Get the alias name */
+	fstrcpy(aliasname, r->alias_name.string);
+
+	/* Get the alias description */
+	fstrcpy(description, r->description.string);
+
+	/* Set up the group type */
+	switch (db_type) {
+	case SAM_DATABASE_DOMAIN:
+		grouptype = 4;
+		break;
+	case SAM_DATABASE_BUILTIN:
+		grouptype = 5;
+		break;
+	default:
+		grouptype = 4;
+		break;
 	}
 
-	if (ctx->result_message) {
-		d_fprintf(stdout, "%s\n", ctx->result_message);
+	/*
+	  These groups are entered by populate_ldap_for_ldif
+	  Note that populate creates a group called Relicators,
+	  but NT returns a group called Replicator
+	*/
+	if (strcmp(aliasname, "Domain Admins") == 0 ||
+	    strcmp(aliasname, "Domain Users") == 0 ||
+	    strcmp(aliasname, "Domain Guests") == 0 ||
+	    strcmp(aliasname, "Domain Computers") == 0 ||
+	    strcmp(aliasname, "Administrators") == 0 ||
+	    strcmp(aliasname, "Print Operators") == 0 ||
+	    strcmp(aliasname, "Backup Operators") == 0 ||
+	    strcmp(aliasname, "Replicator") == 0) {
+		SAFE_FREE(group_attr);
+		return NT_STATUS_OK;
+	} else {
+		/* Increment the gid for the new group */
+		ldif_gid++;
 	}
 
- out:
-	TALLOC_FREE(ctx);
+	/* Map the group rid and gid */
+	g_rid = r->rid;
+	groupmap->gidNumber = ldif_gid;
+	snprintf(groupmap->sambaSID, sizeof(groupmap->sambaSID),
+			"%s-%d", sid, g_rid);
 
-	return status;
+	/* Write the data to the temporary add ldif file */
+	fprintf(add_fd, "# %s, %s, %s\n", aliasname, group_attr,
+		suffix);
+	fprintf_attr(add_fd, "dn", "cn=%s,ou=%s,%s", aliasname, group_attr,
+		     suffix);
+	fprintf(add_fd, "objectClass: posixGroup\n");
+	fprintf(add_fd, "objectClass: sambaGroupMapping\n");
+	fprintf(add_fd, "cn: %s\n", aliasname);
+	fprintf(add_fd, "gidNumber: %d\n", ldif_gid);
+	fprintf(add_fd, "sambaSID: %s\n", groupmap->sambaSID);
+	fprintf(add_fd, "sambaGroupType: %d\n", grouptype);
+	fprintf_attr(add_fd, "displayName", "%s", aliasname);
+	if (description[0])
+		fprintf_attr(add_fd, "description", "%s", description);
+	fprintf(add_fd, "\n");
+	fflush(add_fd);
+
+	SAFE_FREE(group_attr);
+	/* Return */
+	return NT_STATUS_OK;
 }
 
-static NTSTATUS rpc_vampire_keytab_ds_internals(struct net_context *c,
-						const DOM_SID *domain_sid,
-						const char *domain_name,
-						struct cli_state *cli,
-						struct rpc_pipe_client *pipe_hnd,
-						TALLOC_CTX *mem_ctx,
-						int argc,
-						const char **argv)
+static NTSTATUS fetch_groupmem_info_to_ldif(struct netr_DELTA_GROUP_MEMBER *r,
+					    uint32_t id_rid,
+					    GROUPMAP *groupmap,
+					    ACCOUNTMAP *accountmap,
+					    FILE *mod_fd, int alloced)
 {
-	NTSTATUS status;
-	struct dssync_context *ctx = NULL;
+	fstring group_dn;
+	uint32 group_rid = 0, rid = 0;
+	int i, j, k;
 
-	status = libnet_dssync_init_context(mem_ctx,
-					    &ctx);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
+	/* Get the dn for the group */
+	if (r->num_rids > 0) {
+		group_rid = id_rid;
+		for (j=0; j<alloced; j++) {
+			if (groupmap[j].rid == group_rid) break;
+		}
+		if (j == alloced){
+			DEBUG(1, ("Could not find rid %d in groupmap array\n",
+				  group_rid));
+			return NT_STATUS_UNSUCCESSFUL;
+		}
+		snprintf(group_dn, sizeof(group_dn), "%s", groupmap[j].group_dn);
+		fprintf(mod_fd, "dn: %s\n", group_dn);
+
+		/* Get the cn for each member */
+		for (i=0; i < r->num_rids; i++) {
+			rid = r->rids[i];
+			for (k=0; k<alloced; k++) {
+				if (accountmap[k].rid == rid) break;
+			}
+			if (k == alloced){
+				DEBUG(1, ("Could not find rid %d in "
+					  "accountmap array\n", rid));
+				return NT_STATUS_UNSUCCESSFUL;
+			}
+			fprintf(mod_fd, "memberUid: %s\n", accountmap[k].cn);
+		}
+		fprintf(mod_fd, "\n");
 	}
+	fflush(mod_fd);
 
-	ctx->force_full_replication = c->opt_force_full_repl ? true : false;
-	ctx->clean_old_entries = c->opt_clean_old_entries ? true : false;
+	/* Return */
+	return NT_STATUS_OK;
+}
 
-	if (argc >= 1) {
-		ctx->output_filename = argv[0];
+static NTSTATUS fetch_database_to_ldif(struct rpc_pipe_client *pipe_hnd,
+				       uint32 db_type,
+				       DOM_SID dom_sid,
+				       const char *user_file)
+{
+	char *suffix;
+	const char *builtin_sid = "S-1-5-32";
+	char *add_name = NULL, *mod_filename = NULL;
+	const char *add_template = "/tmp/add.ldif.XXXXXX";
+	const char *mod_template = "/tmp/mod.ldif.XXXXXX";
+	fstring sid, domainname;
+	NTSTATUS ret = NT_STATUS_OK, result;
+	int k;
+	TALLOC_CTX *mem_ctx;
+	uint32 num_deltas;
+	FILE *add_file = NULL, *mod_file = NULL, *ldif_file = NULL;
+	int num_alloced = 0, g_index = 0, a_index = 0;
+	const char *logon_server = pipe_hnd->cli->desthost;
+	const char *computername = global_myname();
+	struct netr_Authenticator credential;
+	struct netr_Authenticator return_authenticator;
+	enum netr_SamDatabaseID database_id = db_type;
+	uint16_t restart_state = 0;
+	uint32_t sync_context = 0;
+	DATA_BLOB session_key;
+
+	/* Set up array for mapping accounts to groups */
+	/* Array element is the group rid */
+	GROUPMAP *groupmap = NULL;
+
+	/* Set up array for mapping account rid's to cn's */
+	/* Array element is the account rid */
+	ACCOUNTMAP *accountmap = NULL;
+
+	if (!(mem_ctx = talloc_init("fetch_database"))) {
+		return NT_STATUS_NO_MEMORY;
 	}
-	if (argc >= 2) {
-		ctx->object_dns = &argv[1];
-		ctx->object_count = argc - 1;
-		ctx->single_object_replication = c->opt_single_obj_repl ? true
-									: false;
+
+	/* Ensure we have an output file */
+	if (user_file)
+		ldif_file = fopen(user_file, "a");
+	else
+		ldif_file = stdout;
+
+	if (!ldif_file) {
+		fprintf(stderr, "Could not open %s\n", user_file);
+		DEBUG(1, ("Could not open %s\n", user_file));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
 	}
 
-	ctx->cli		= pipe_hnd;
-	ctx->domain_name	= domain_name;
-	ctx->ops		= &libnet_dssync_keytab_ops;
+	add_name = talloc_strdup(mem_ctx, add_template);
+	mod_filename = talloc_strdup(mem_ctx, mod_template);
+	if (!add_name || !mod_filename) {
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
 
-	status = libnet_dssync(mem_ctx, ctx);
-	if (!NT_STATUS_IS_OK(status) && ctx->error_message) {
-		d_fprintf(stderr, "%s\n", ctx->error_message);
-		goto out;
+	/* Open the add and mod ldif files */
+	if (!(add_file = fdopen(smb_mkstemp(add_name),"w"))) {
+		DEBUG(1, ("Could not open %s\n", add_name));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
 	}
+	if (!(mod_file = fdopen(smb_mkstemp(mod_filename),"w"))) {
+		DEBUG(1, ("Could not open %s\n", mod_filename));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
+	}
 
-	if (ctx->result_message) {
-		d_fprintf(stdout, "%s\n", ctx->result_message);
+	/* Get the sid */
+	sid_to_fstring(sid, &dom_sid);
+
+	/* Get the ldap suffix */
+	suffix = lp_ldap_suffix();
+	if (suffix == NULL || strcmp(suffix, "") == 0) {
+		DEBUG(0,("ldap suffix missing from smb.conf--exiting\n"));
+		exit(1);
 	}
 
- out:
-	TALLOC_FREE(ctx);
+	/* Get other smb.conf data */
+	if (!(lp_workgroup()) || !*(lp_workgroup())) {
+		DEBUG(0,("workgroup missing from smb.conf--exiting\n"));
+		exit(1);
+	}
 
-	return status;
+	/* Allocate initial memory for groupmap and accountmap arrays */
+	if (init_ldap == 1) {
+		groupmap = SMB_MALLOC_ARRAY(GROUPMAP, 8);
+		accountmap = SMB_MALLOC_ARRAY(ACCOUNTMAP, 8);
+		if (groupmap == NULL || accountmap == NULL) {
+			DEBUG(1,("GROUPMAP malloc failed\n"));
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+
+		/* Initialize the arrays */
+		memset(groupmap, 0, sizeof(GROUPMAP)*8);
+		memset(accountmap, 0, sizeof(ACCOUNTMAP)*8);
+
+		/* Remember how many we malloced */
+		num_alloced = 8;
+
+		/* Initial database population */
+		populate_ldap_for_ldif(sid, suffix, builtin_sid, add_file);
+		map_populate_groups(groupmap, accountmap, sid, suffix,
+				    builtin_sid);
+
+		/* Don't do this again */
+		init_ldap = 0;
+	}
+
+	/* Announce what we are doing */
+	switch( db_type ) {
+	case SAM_DATABASE_DOMAIN:
+		d_fprintf(stderr, "Fetching DOMAIN database\n");
+		break;
+	case SAM_DATABASE_BUILTIN:
+		d_fprintf(stderr, "Fetching BUILTIN database\n");
+		break;
+	case SAM_DATABASE_PRIVS:
+		d_fprintf(stderr, "Fetching PRIVS databases\n");
+		break;
+	default:
+		d_fprintf(stderr,
+			  "Fetching unknown database type %u\n",
+			  db_type );
+		break;
+	}
+
+	do {
+		struct netr_DELTA_ENUM_ARRAY *delta_enum_array = NULL;
+
+		netlogon_creds_client_step(pipe_hnd->dc, &credential);
+
+		result = rpccli_netr_DatabaseSync2(pipe_hnd, mem_ctx,
+						   logon_server,
+						   computername,
+						   &credential,
+						   &return_authenticator,
+						   database_id,
+						   restart_state,
+						   &sync_context,
+						   &delta_enum_array,
+						   0xffff);
+
+		/* Check returned credentials. */
+		if (!netlogon_creds_client_check(pipe_hnd->dc,
+						 &return_authenticator.cred)) {
+			DEBUG(0,("credentials chain check failed\n"));
+			return NT_STATUS_ACCESS_DENIED;
+		}
+
+		if (NT_STATUS_IS_ERR(result)) {
+			break;
+		}
+
+		session_key = data_blob_const(pipe_hnd->dc->sess_key, 16);
+
+		samsync_fix_delta_array(mem_ctx,
+					&session_key,
+					true,
+					database_id,
+					delta_enum_array);
+
+		num_deltas = delta_enum_array->num_deltas;
+
+		/* Re-allocate memory for groupmap and accountmap arrays */
+		groupmap = SMB_REALLOC_ARRAY(groupmap, GROUPMAP,
+					     num_deltas+num_alloced);
+		accountmap = SMB_REALLOC_ARRAY(accountmap, ACCOUNTMAP,
+					       num_deltas+num_alloced);
+		if (groupmap == NULL || accountmap == NULL) {
+			DEBUG(1,("GROUPMAP malloc failed\n"));
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+
+		/* Initialize the new records */
+		memset(&groupmap[num_alloced], 0,
+		       sizeof(GROUPMAP)*num_deltas);
+		memset(&accountmap[num_alloced], 0,
+		       sizeof(ACCOUNTMAP)*num_deltas);
+
+		/* Remember how many we alloced this time */
+		num_alloced += num_deltas;
+
+		/* Loop through the deltas */
+		for (k=0; k<num_deltas; k++) {
+
+			union netr_DELTA_UNION u =
+				delta_enum_array->delta_enum[k].delta_union;
+			union netr_DELTA_ID_UNION id =
+				delta_enum_array->delta_enum[k].delta_id_union;
+
+			switch(delta_enum_array->delta_enum[k].delta_type) {
+			case NETR_DELTA_DOMAIN:
+				/* Is this case needed? */
+				fstrcpy(domainname,
+					u.domain->domain_name.string);
+				break;
+
+			case NETR_DELTA_GROUP:
+				fetch_group_info_to_ldif(
+					u.group,
+					&groupmap[g_index],
+					add_file, sid, suffix);
+				g_index++;
+				break;
+
+			case NETR_DELTA_USER:
+				fetch_account_info_to_ldif(
+					u.user, groupmap,
+					&accountmap[a_index], add_file,
+					sid, suffix, num_alloced);
+				a_index++;
+				break;
+
+			case NETR_DELTA_ALIAS:
+				fetch_alias_info_to_ldif(
+					u.alias, &groupmap[g_index],
+					add_file, sid, suffix, db_type);
+				g_index++;
+				break;
+
+			case NETR_DELTA_GROUP_MEMBER:
+				fetch_groupmem_info_to_ldif(
+					u.group_member, id.rid,
+					groupmap, accountmap,
+					mod_file, num_alloced);
+				break;
+
+			case NETR_DELTA_ALIAS_MEMBER:
+			case NETR_DELTA_POLICY:
+			case NETR_DELTA_ACCOUNT:
+			case NETR_DELTA_TRUSTED_DOMAIN:
+			case NETR_DELTA_SECRET:
+			case NETR_DELTA_RENAME_GROUP:
+			case NETR_DELTA_RENAME_USER:
+			case NETR_DELTA_RENAME_ALIAS:
+			case NETR_DELTA_DELETE_GROUP:
+			case NETR_DELTA_DELETE_USER:
+			case NETR_DELTA_MODIFY_COUNT:
+			default:
+				break;
+			} /* end of switch */
+		} /* end of for loop */
+
+		/* Increment sync_context */
+		sync_context += 1;
+
+	} while (NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES));
+
+	/* Write ldif data to the user's file */
+	if (db_type == SAM_DATABASE_DOMAIN) {
+		fprintf(ldif_file,
+			"# SAM_DATABASE_DOMAIN: ADD ENTITIES\n");
+		fprintf(ldif_file,
+			"# =================================\n\n");
+		fflush(ldif_file);
+	} else if (db_type == SAM_DATABASE_BUILTIN) {
+		fprintf(ldif_file,
+			"# SAM_DATABASE_BUILTIN: ADD ENTITIES\n");
+		fprintf(ldif_file,
+			"# ==================================\n\n");
+		fflush(ldif_file);
+	}
+	fseek(add_file, 0, SEEK_SET);
+	transfer_file(fileno(add_file), fileno(ldif_file), (size_t) -1);
+
+	if (db_type == SAM_DATABASE_DOMAIN) {
+		fprintf(ldif_file,
+			"# SAM_DATABASE_DOMAIN: MODIFY ENTITIES\n");
+		fprintf(ldif_file,
+			"# ====================================\n\n");
+		fflush(ldif_file);
+	} else if (db_type == SAM_DATABASE_BUILTIN) {
+		fprintf(ldif_file,
+			"# SAM_DATABASE_BUILTIN: MODIFY ENTITIES\n");
+		fprintf(ldif_file,
+			"# =====================================\n\n");
+		fflush(ldif_file);
+	}
+	fseek(mod_file, 0, SEEK_SET);
+	transfer_file(fileno(mod_file), fileno(ldif_file), (size_t) -1);
+
+
+ done:
+	/* Close and delete the ldif files */
+	if (add_file) {
+		fclose(add_file);
+	}
+
+	if ((add_name != NULL) &&
+	    strcmp(add_name, add_template) && (unlink(add_name))) {
+		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
+			 add_name, strerror(errno)));
+	}
+
+	if (mod_file) {
+		fclose(mod_file);
+	}
+
+	if ((mod_filename != NULL) &&
+	    strcmp(mod_filename, mod_template) && (unlink(mod_filename))) {
+		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
+			 mod_filename, strerror(errno)));
+	}
+
+	if (ldif_file && (ldif_file != stdout)) {
+		fclose(ldif_file);
+	}
+
+	/* Deallocate memory for the mapping arrays */
+	SAFE_FREE(groupmap);
+	SAFE_FREE(accountmap);
+
+	/* Return */
+	talloc_destroy(mem_ctx);
+	return ret;
 }
 
 /**
- * Basic function for 'net rpc vampire keytab'
- *
- * @param c	A net_context structure
+ * Basic usage function for 'net rpc vampire'
  * @param argc  Standard main() style argc
  * @param argc  Standard main() style argv.  Initial components are already
  *              stripped
  **/
 
-int rpc_vampire_keytab(struct net_context *c, int argc, const char **argv)
+int rpc_vampire_usage(int argc, const char **argv)
 {
-	int ret = 0;
+	d_printf("net rpc vampire [ldif [<ldif-filename>] [options]\n"
+		 "\t to pull accounts from a remote PDC where we are a BDC\n"
+		 "\t\t no args puts accounts in local passdb from smb.conf\n"
+		 "\t\t ldif - put accounts in ldif format (file defaults to "
+		 "/tmp/tmp.ldif\n");
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc vampire keytab\n"
-			 "    Dump remote SAM database to Kerberos keytab file\n");
-		return 0;
+	net_common_flags_usage(argc, argv);
+	return -1;
+}
+
+
+/* dump sam database via samsync rpc calls */
+NTSTATUS rpc_vampire_internals(const DOM_SID *domain_sid,
+				const char *domain_name,
+				struct cli_state *cli,
+				struct rpc_pipe_client *pipe_hnd,
+				TALLOC_CTX *mem_ctx,
+				int argc,
+				const char **argv)
+{
+        NTSTATUS result;
+	fstring my_dom_sid_str;
+	fstring rem_dom_sid_str;
+
+	if (!sid_equal(domain_sid, get_global_sam_sid())) {
+		d_printf("Cannot import users from %s at this time, "
+			 "as the current domain:\n\t%s: %s\nconflicts "
+			 "with the remote domain\n\t%s: %s\n"
+			 "Perhaps you need to set: \n\n\tsecurity=user\n\t"
+			 "workgroup=%s\n\n in your smb.conf?\n",
+			 domain_name,
+			 get_global_sam_name(),
+			 sid_to_fstring(my_dom_sid_str,
+					get_global_sam_sid()),
+			 domain_name, sid_to_fstring(rem_dom_sid_str,
+						     domain_sid),
+			 domain_name);
+		return NT_STATUS_UNSUCCESSFUL;
 	}
 
-	ret = run_rpc_command(c, NULL, &ndr_table_drsuapi.syntax_id,
-			      NET_FLAGS_SEAL,
-			      rpc_vampire_keytab_ds_internals, argc, argv);
-	if (ret == 0) {
-		return 0;
+        if (argc >= 1 && (strcmp(argv[0], "ldif") == 0)) {
+		result = fetch_database_to_ldif(pipe_hnd, SAM_DATABASE_DOMAIN,
+						*domain_sid, argv[1]);
+        } else {
+		result = fetch_database(pipe_hnd, SAM_DATABASE_DOMAIN,
+					*domain_sid);
+        }
+
+	if (!NT_STATUS_IS_OK(result)) {
+		d_fprintf(stderr, "Failed to fetch domain database: %s\n",
+			  nt_errstr(result));
+		if (NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED))
+			d_fprintf(stderr, "Perhaps %s is a Windows 2000 "
+				  "native mode domain?\n", domain_name);
+		goto fail;
 	}
 
-	return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id, 0,
-			       rpc_vampire_keytab_internals,
-			       argc, argv);
+        if (argc >= 1 && (strcmp(argv[0], "ldif") == 0)) {
+		result = fetch_database_to_ldif(pipe_hnd, SAM_DATABASE_BUILTIN,
+						global_sid_Builtin, argv[1]);
+        } else {
+		result = fetch_database(pipe_hnd, SAM_DATABASE_BUILTIN,
+					global_sid_Builtin);
+        }
+
+	if (!NT_STATUS_IS_OK(result)) {
+		d_fprintf(stderr, "Failed to fetch builtin database: %s\n",
+			  nt_errstr(result));
+		goto fail;
+	}
+
+	/* Currently we crash on PRIVS somewhere in unmarshalling */
+	/* Dump_database(cli, SAM_DATABASE_PRIVS, &ret_creds); */
+
+ fail:
+	return result;
 }

Modified: branches/samba/upstream/source/utils/net_rpc_service.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_service.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_service.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -20,45 +20,12 @@
 #include "utils/net.h"
 
 
-struct svc_state_msg {
-	uint32 flag;
-	const char *message;
-};
+#define CLI_SERVER_NAME_SLASH(_ctx, _p, _cli) \
+	_p = talloc_asprintf(_ctx, "\\\\%s", _cli->cli->desthost);
 
-static struct svc_state_msg state_msg_table[] = {
-	{ SVCCTL_STOPPED,            "stopped" },
-	{ SVCCTL_START_PENDING,      "start pending" },
-	{ SVCCTL_STOP_PENDING,       "stop pending" },
-	{ SVCCTL_RUNNING,            "running" },
-	{ SVCCTL_CONTINUE_PENDING,   "resume pending" },
-	{ SVCCTL_PAUSE_PENDING,      "pause pending" },
-	{ SVCCTL_PAUSED,             "paused" },
-	{ 0,                          NULL }
-};
-
-
 /********************************************************************
 ********************************************************************/
-const char *svc_status_string( uint32 state )
-{
-	fstring msg;
-	int i;
 
-	fstr_sprintf( msg, "Unknown State [%d]", state );
-
-	for ( i=0; state_msg_table[i].message; i++ ) {
-		if ( state_msg_table[i].flag == state ) {
-			fstrcpy( msg, state_msg_table[i].message );
-			break;
-		}
-	}
-
-	return talloc_strdup(talloc_tos(), msg);
-}
-
-/********************************************************************
-********************************************************************/
-
 static WERROR query_service_state(struct rpc_pipe_client *pipe_hnd,
 				TALLOC_CTX *mem_ctx,
 				POLICY_HND *hSCM,
@@ -190,8 +157,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_service_list_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_service_list_internal(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -206,6 +172,7 @@
 	fstring servicename;
 	fstring displayname;
 	uint32 num_services = 0;
+	const char *server_name;
 	int i;
 
 	if (argc != 0 ) {
@@ -213,8 +180,11 @@
 		return NT_STATUS_OK;
 	}
 
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
-					      pipe_hnd->srv_name_slash,
+					      server_name,
 					      NULL,
 					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
 					      &hSCM,
@@ -251,8 +221,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_service_status_internal(struct net_context *c,
-						const DOM_SID *domain_sid,
+static NTSTATUS rpc_service_status_internal(const DOM_SID *domain_sid,
 						const char *domain_name,
 						struct cli_state *cli,
 						struct rpc_pipe_client *pipe_hnd,
@@ -266,6 +235,7 @@
 	SERVICE_STATUS service_status;
 	SERVICE_CONFIG config;
 	fstring ascii_string;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -273,8 +243,11 @@
 	}
 
 	/* Open the Service Control Manager */
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
-					      pipe_hnd->srv_name_slash,
+					      server_name,
 					      NULL,
 					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
 					      &hSCM,
@@ -364,8 +337,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_service_stop_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_service_stop_internal(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -377,6 +349,7 @@
 	WERROR result = WERR_GENERAL_FAILURE;
 	NTSTATUS status;
 	fstring servicename;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -386,8 +359,11 @@
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
-					      pipe_hnd->srv_name_slash,
+					      server_name,
 					      NULL,
 					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
 					      &hSCM,
@@ -408,8 +384,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_service_pause_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_service_pause_internal(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -421,6 +396,7 @@
 	WERROR result = WERR_GENERAL_FAILURE;
 	NTSTATUS status;
 	fstring servicename;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -430,8 +406,11 @@
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
-					      pipe_hnd->srv_name_slash,
+					      server_name,
 					      NULL,
 					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
 					      &hSCM,
@@ -452,8 +431,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_service_resume_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_service_resume_internal(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -465,6 +443,7 @@
 	WERROR result = WERR_GENERAL_FAILURE;
 	NTSTATUS status;
 	fstring servicename;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -474,8 +453,11 @@
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
-					      pipe_hnd->srv_name_slash,
+					      server_name,
 					      NULL,
 					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
 					      &hSCM,
@@ -496,8 +478,7 @@
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS rpc_service_start_internal(struct net_context *c,
-					const DOM_SID *domain_sid,
+static NTSTATUS rpc_service_start_internal(const DOM_SID *domain_sid,
 					const char *domain_name,
 					struct cli_state *cli,
 					struct rpc_pipe_client *pipe_hnd,
@@ -509,6 +490,7 @@
 	WERROR result = WERR_GENERAL_FAILURE;
 	NTSTATUS status;
 	uint32 state = 0;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -516,8 +498,11 @@
 	}
 
 	/* Open the Service Control Manager */
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
 	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
-					      pipe_hnd->srv_name_slash,
+					      server_name,
 					      NULL,
 					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
 					      &hSCM,
@@ -571,155 +556,89 @@
 /********************************************************************
 ********************************************************************/
 
-static int rpc_service_list(struct net_context *c, int argc, const char **argv )
+static int rpc_service_list( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc service list\n"
-			 "    View configured Win32 services\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_svcctl.syntax_id, 0,
+	return run_rpc_command( NULL, PI_SVCCTL, 0,
 		rpc_service_list_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_service_start(struct net_context *c, int argc, const char **argv )
+static int rpc_service_start( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc service start <service>\n"
-			 "    Start a Win32 service\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_svcctl.syntax_id, 0,
+	return run_rpc_command( NULL, PI_SVCCTL, 0,
 		rpc_service_start_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_service_stop(struct net_context *c, int argc, const char **argv )
+static int rpc_service_stop( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc service stop <service>\n"
-			 "    Stop a Win32 service\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_svcctl.syntax_id, 0,
+	return run_rpc_command( NULL, PI_SVCCTL, 0,
 		rpc_service_stop_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_service_resume(struct net_context *c, int argc, const char **argv )
+static int rpc_service_resume( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc service resume <service>\n"
-			 "    Resume a Win32 service\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_svcctl.syntax_id, 0,
+	return run_rpc_command( NULL, PI_SVCCTL, 0,
 		rpc_service_resume_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_service_pause(struct net_context *c, int argc, const char **argv )
+static int rpc_service_pause( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc service pause <service>\n"
-			 "    Pause a Win32 service\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_svcctl.syntax_id, 0,
+	return run_rpc_command( NULL, PI_SVCCTL, 0,
 		rpc_service_pause_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-static int rpc_service_status(struct net_context *c, int argc, const char **argv )
+static int rpc_service_status( int argc, const char **argv )
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc service status <service>\n"
-			 "     Show the current status of a service\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_svcctl.syntax_id, 0,
+	return run_rpc_command( NULL, PI_SVCCTL, 0,
 		rpc_service_status_internal, argc, argv );
 }
 
 /********************************************************************
 ********************************************************************/
 
-int net_rpc_service(struct net_context *c, int argc, const char **argv)
+static int net_help_service( int argc, const char **argv )
 {
+	d_printf("net rpc service list               View configured Win32 services\n");
+	d_printf("net rpc service start <service>    Start a service\n");
+	d_printf("net rpc service stop <service>     Stop a service\n");
+	d_printf("net rpc service pause <service>    Pause a service\n");
+	d_printf("net rpc service resume <service>   Resume a paused service\n");
+	d_printf("net rpc service status <service>   View the current status of a service\n");
+
+	return -1;
+}
+
+/********************************************************************
+********************************************************************/
+
+int net_rpc_service(int argc, const char **argv)
+{
 	struct functable func[] = {
-		{
-			"list",
-			rpc_service_list,
-			NET_TRANSPORT_RPC,
-			"View configured Win32 services",
-			"net rpc service list\n"
-			"    View configured Win32 services"
-		},
-		{
-			"start",
-			rpc_service_start,
-			NET_TRANSPORT_RPC,
-			"Start a service",
-			"net rpc service start\n"
-			"    Start a service"
-		},
-		{
-			"stop",
-			rpc_service_stop,
-			NET_TRANSPORT_RPC,
-			"Stop a service",
-			"net rpc service stop\n"
-			"    Stop a service"
-		},
-		{
-			"pause",
-			rpc_service_pause,
-			NET_TRANSPORT_RPC,
-			"Pause a service",
-			"net rpc service pause\n"
-			"    Pause a service"
-		},
-		{
-			"resume",
-			rpc_service_resume,
-			NET_TRANSPORT_RPC,
-			"Resume a paused service",
-			"net rpc service resume\n"
-			"    Resume a service"
-		},
-		{
-			"status",
-			rpc_service_status,
-			NET_TRANSPORT_RPC,
-			"View current status of a service",
-			"net rpc service status\n"
-			"    View current status of a service"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"list", rpc_service_list},
+		{"start", rpc_service_start},
+		{"stop", rpc_service_stop},
+		{"pause", rpc_service_pause},
+		{"resume", rpc_service_resume},
+		{"status", rpc_service_status},
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net rpc service",func);
+	if ( argc )
+		return net_run_function( argc, argv, func, net_help_service );
+
+	return net_help_service( argc, argv );
 }

Modified: branches/samba/upstream/source/utils/net_rpc_sh_acct.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_sh_acct.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_sh_acct.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,21 +1,21 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
    Copyright (C) 2006 Volker Lendecke (vl at samba.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; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+ 
 #include "includes.h"
 #include "utils/net.h"
 
@@ -25,13 +25,11 @@
  * it has modified, it can return 0 for no change.
  */
 
-static NTSTATUS rpc_sh_acct_do(struct net_context *c,
-			       TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_do(TALLOC_CTX *mem_ctx,
 			       struct rpc_sh_ctx *ctx,
 			       struct rpc_pipe_client *pipe_hnd,
 			       int argc, const char **argv,
-			       int (*fn)(struct net_context *c,
-					  TALLOC_CTX *mem_ctx,
+			       int (*fn)(TALLOC_CTX *mem_ctx,
 					  struct rpc_sh_ctx *ctx,
 					  struct samr_DomInfo1 *i1,
 					  struct samr_DomInfo3 *i3,
@@ -51,13 +49,13 @@
 	/* Get sam policy handle */
 
 	result = rpccli_samr_Connect2(pipe_hnd, mem_ctx,
-				      pipe_hnd->desthost,
+				      pipe_hnd->cli->desthost,
 				      MAXIMUM_ALLOWED_ACCESS,
 				      &connect_pol);
 	if (!NT_STATUS_IS_OK(result)) {
 		goto done;
 	}
-
+	
 	/* Get domain policy handle */
 
 	result = rpccli_samr_OpenDomain(pipe_hnd, mem_ctx,
@@ -102,7 +100,7 @@
 		goto done;
 	}
 
-	store = fn(c, mem_ctx, ctx, &info1->info1, &info3->info3,
+	store = fn(mem_ctx, ctx, &info1->info1, &info3->info3,
 		   &info12->info12, argc, argv);
 
 	if (store <= 0) {
@@ -146,8 +144,7 @@
 	return result;
 }
 
-static int account_show(struct net_context *c,
-			TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
+static int account_show(TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
 			struct samr_DomInfo1 *i1,
 			struct samr_DomInfo3 *i3,
 			struct samr_DomInfo12 *i12,
@@ -203,21 +200,19 @@
 
 	d_printf("User must logon to change password: %s\n",
 		 (i1->password_properties & 0x2) ? "yes" : "no");
-
+	
 	return 0;		/* Don't save */
 }
 
-static NTSTATUS rpc_sh_acct_pol_show(struct net_context *c,
-				     TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_pol_show(TALLOC_CTX *mem_ctx,
 				     struct rpc_sh_ctx *ctx,
 				     struct rpc_pipe_client *pipe_hnd,
 				     int argc, const char **argv) {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_show);
 }
 
-static int account_set_badpw(struct net_context *c,
-			     TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
+static int account_set_badpw(TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
 			     struct samr_DomInfo1 *i1,
 			     struct samr_DomInfo3 *i3,
 			     struct samr_DomInfo12 *i12,
@@ -235,18 +230,16 @@
 	return 12;
 }
 
-static NTSTATUS rpc_sh_acct_set_badpw(struct net_context *c,
-				      TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_badpw(TALLOC_CTX *mem_ctx,
 				      struct rpc_sh_ctx *ctx,
 				      struct rpc_pipe_client *pipe_hnd,
 				      int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_badpw);
 }
 
-static int account_set_lockduration(struct net_context *c,
-				    TALLOC_CTX *mem_ctx,
+static int account_set_lockduration(TALLOC_CTX *mem_ctx,
 				    struct rpc_sh_ctx *ctx,
 				    struct samr_DomInfo1 *i1,
 				    struct samr_DomInfo3 *i3,
@@ -265,18 +258,16 @@
 	return 12;
 }
 
-static NTSTATUS rpc_sh_acct_set_lockduration(struct net_context *c,
-					     TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_lockduration(TALLOC_CTX *mem_ctx,
 					     struct rpc_sh_ctx *ctx,
 					     struct rpc_pipe_client *pipe_hnd,
 					     int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_lockduration);
 }
 
-static int account_set_resetduration(struct net_context *c,
-				     TALLOC_CTX *mem_ctx,
+static int account_set_resetduration(TALLOC_CTX *mem_ctx,
 				     struct rpc_sh_ctx *ctx,
 				     struct samr_DomInfo1 *i1,
 				     struct samr_DomInfo3 *i3,
@@ -295,18 +286,16 @@
 	return 12;
 }
 
-static NTSTATUS rpc_sh_acct_set_resetduration(struct net_context *c,
-					      TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_resetduration(TALLOC_CTX *mem_ctx,
 					      struct rpc_sh_ctx *ctx,
 					      struct rpc_pipe_client *pipe_hnd,
 					      int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_resetduration);
 }
 
-static int account_set_minpwage(struct net_context *c,
-				TALLOC_CTX *mem_ctx,
+static int account_set_minpwage(TALLOC_CTX *mem_ctx,
 				struct rpc_sh_ctx *ctx,
 				struct samr_DomInfo1 *i1,
 				struct samr_DomInfo3 *i3,
@@ -325,18 +314,16 @@
 	return 1;
 }
 
-static NTSTATUS rpc_sh_acct_set_minpwage(struct net_context *c,
-					 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_minpwage(TALLOC_CTX *mem_ctx,
 					 struct rpc_sh_ctx *ctx,
 					 struct rpc_pipe_client *pipe_hnd,
 					 int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_minpwage);
 }
 
-static int account_set_maxpwage(struct net_context *c,
-				TALLOC_CTX *mem_ctx,
+static int account_set_maxpwage(TALLOC_CTX *mem_ctx,
 				struct rpc_sh_ctx *ctx,
 				struct samr_DomInfo1 *i1,
 				struct samr_DomInfo3 *i3,
@@ -355,18 +342,16 @@
 	return 1;
 }
 
-static NTSTATUS rpc_sh_acct_set_maxpwage(struct net_context *c,
-					 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_maxpwage(TALLOC_CTX *mem_ctx,
 					 struct rpc_sh_ctx *ctx,
 					 struct rpc_pipe_client *pipe_hnd,
 					 int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_maxpwage);
 }
 
-static int account_set_minpwlen(struct net_context *c,
-				TALLOC_CTX *mem_ctx,
+static int account_set_minpwlen(TALLOC_CTX *mem_ctx,
 				struct rpc_sh_ctx *ctx,
 				struct samr_DomInfo1 *i1,
 				struct samr_DomInfo3 *i3,
@@ -385,18 +370,16 @@
 	return 1;
 }
 
-static NTSTATUS rpc_sh_acct_set_minpwlen(struct net_context *c,
-					 TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_minpwlen(TALLOC_CTX *mem_ctx,
 					 struct rpc_sh_ctx *ctx,
 					 struct rpc_pipe_client *pipe_hnd,
 					 int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_minpwlen);
 }
 
-static int account_set_pwhistlen(struct net_context *c,
-				 TALLOC_CTX *mem_ctx,
+static int account_set_pwhistlen(TALLOC_CTX *mem_ctx,
 				 struct rpc_sh_ctx *ctx,
 				 struct samr_DomInfo1 *i1,
 				 struct samr_DomInfo3 *i3,
@@ -415,36 +398,35 @@
 	return 1;
 }
 
-static NTSTATUS rpc_sh_acct_set_pwhistlen(struct net_context *c,
-					  TALLOC_CTX *mem_ctx,
+static NTSTATUS rpc_sh_acct_set_pwhistlen(TALLOC_CTX *mem_ctx,
 					  struct rpc_sh_ctx *ctx,
 					  struct rpc_pipe_client *pipe_hnd,
 					  int argc, const char **argv)
 {
-	return rpc_sh_acct_do(c, mem_ctx, ctx, pipe_hnd, argc, argv,
+	return rpc_sh_acct_do(mem_ctx, ctx, pipe_hnd, argc, argv,
 			      account_set_pwhistlen);
 }
 
-struct rpc_sh_cmd *net_rpc_acct_cmds(struct net_context *c, TALLOC_CTX *mem_ctx,
+struct rpc_sh_cmd *net_rpc_acct_cmds(TALLOC_CTX *mem_ctx,
 				     struct rpc_sh_ctx *ctx)
 {
 	static struct rpc_sh_cmd cmds[9] = {
-		{ "show", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_pol_show,
+		{ "show", NULL, PI_SAMR, rpc_sh_acct_pol_show,
 		  "Show current account policy settings" },
-		{ "badpw", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_set_badpw,
+		{ "badpw", NULL, PI_SAMR, rpc_sh_acct_set_badpw,
 		  "Set bad password count before lockout" },
-		{ "lockduration", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_set_lockduration,
+		{ "lockduration", NULL, PI_SAMR, rpc_sh_acct_set_lockduration,
 		  "Set account lockout duration" },
-		{ "resetduration", NULL, &ndr_table_samr.syntax_id,
+		{ "resetduration", NULL, PI_SAMR,
 		  rpc_sh_acct_set_resetduration,
 		  "Set bad password count reset duration" },
-		{ "minpwage", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_set_minpwage,
+		{ "minpwage", NULL, PI_SAMR, rpc_sh_acct_set_minpwage,
 		  "Set minimum password age" },
-		{ "maxpwage", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_set_maxpwage,
+		{ "maxpwage", NULL, PI_SAMR, rpc_sh_acct_set_maxpwage,
 		  "Set maximum password age" },
-		{ "minpwlen", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_set_minpwlen,
+		{ "minpwlen", NULL, PI_SAMR, rpc_sh_acct_set_minpwlen,
 		  "Set minimum password length" },
-		{ "pwhistlen", NULL, &ndr_table_samr.syntax_id, rpc_sh_acct_set_pwhistlen,
+		{ "pwhistlen", NULL, PI_SAMR, rpc_sh_acct_set_pwhistlen,
 		  "Set the password history length" },
 		{ NULL, NULL, 0, NULL, NULL }
 	};

Modified: branches/samba/upstream/source/utils/net_rpc_shell.c
===================================================================
--- branches/samba/upstream/source/utils/net_rpc_shell.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_rpc_shell.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -21,12 +21,11 @@
 #include "includes.h"
 #include "utils/net.h"
 
-static NTSTATUS rpc_sh_info(struct net_context *c,
-			    TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
+static NTSTATUS rpc_sh_info(TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx,
 			    struct rpc_pipe_client *pipe_hnd,
 			    int argc, const char **argv)
 {
-	return rpc_info_internals(c, ctx->domain_sid, ctx->domain_name,
+	return rpc_info_internals(ctx->domain_sid, ctx->domain_name,
 				  ctx->cli, pipe_hnd, mem_ctx,
 				  argc, argv);
 }
@@ -64,8 +63,7 @@
 	return cmds;
 }
 
-static NTSTATUS net_sh_run(struct net_context *c,
-			   struct rpc_sh_ctx *ctx, struct rpc_sh_cmd *cmd,
+static NTSTATUS net_sh_run(struct rpc_sh_ctx *ctx, struct rpc_sh_cmd *cmd,
 			   int argc, const char **argv)
 {
 	TALLOC_CTX *mem_ctx;
@@ -78,33 +76,31 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	status = cli_rpc_pipe_open_noauth(ctx->cli, cmd->interface,
-					  &pipe_hnd);
-	if (!NT_STATUS_IS_OK(status)) {
+	pipe_hnd = cli_rpc_pipe_open_noauth(ctx->cli, cmd->pipe_idx, &status);
+	if (pipe_hnd == NULL) {
 		d_fprintf(stderr, "Could not open pipe: %s\n",
 			  nt_errstr(status));
 		return status;
 	}
 
-	status = cmd->fn(c, mem_ctx, ctx, pipe_hnd, argc, argv);
+	status = cmd->fn(mem_ctx, ctx, pipe_hnd, argc, argv);
 
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 
 	talloc_destroy(mem_ctx);
 
 	return status;
 }
 
-static bool net_sh_process(struct net_context *c,
-			   struct rpc_sh_ctx *ctx,
+static bool net_sh_process(struct rpc_sh_ctx *ctx,
 			   int argc, const char **argv)
 {
-	struct rpc_sh_cmd *cmd;
+	struct rpc_sh_cmd *c;
 	struct rpc_sh_ctx *new_ctx;
 	NTSTATUS status;
 
 	if (argc == 0) {
-		return true;
+		return True;
 	}
 
 	if (ctx == this_ctx) {
@@ -115,48 +111,48 @@
 			new_ctx = this_ctx->parent;
 			TALLOC_FREE(this_ctx);
 			this_ctx = new_ctx;
-			return true;
+			return True;
 		}
 	}
 
 	if (strequal(argv[0], "exit") || strequal(argv[0], "quit")) {
-		return false;
+		return False;
 	}
 
 	if (strequal(argv[0], "help") || strequal(argv[0], "?")) {
-		for (cmd = ctx->cmds; cmd->name != NULL; cmd++) {
+		for (c = ctx->cmds; c->name != NULL; c++) {
 			if (ctx != this_ctx) {
 				d_printf("%s ", ctx->whoami);
 			}
-			d_printf("%-15s %s\n", cmd->name, cmd->help);
+			d_printf("%-15s %s\n", c->name, c->help);
 		}
-		return true;
+		return True;
 	}
 
-	for (cmd = ctx->cmds; cmd->name != NULL; cmd++) {
-		if (strequal(cmd->name, argv[0])) {
+	for (c = ctx->cmds; c->name != NULL; c++) {
+		if (strequal(c->name, argv[0])) {
 			break;
 		}
 	}
 
-	if (cmd->name == NULL) {
+	if (c->name == NULL) {
 		/* None found */
 		d_fprintf(stderr, "%s: unknown cmd\n", argv[0]);
-		return true;
+		return True;
 	}
 
 	new_ctx = TALLOC_P(ctx, struct rpc_sh_ctx);
 	if (new_ctx == NULL) {
 		d_fprintf(stderr, "talloc failed\n");
-		return false;
+		return False;
 	}
 	new_ctx->cli = ctx->cli;
 	new_ctx->whoami = talloc_asprintf(new_ctx, "%s %s",
-					  ctx->whoami, cmd->name);
-	new_ctx->thiscmd = talloc_strdup(new_ctx, cmd->name);
+					  ctx->whoami, c->name);
+	new_ctx->thiscmd = talloc_strdup(new_ctx, c->name);
 
-	if (cmd->sub != NULL) {
-		new_ctx->cmds = cmd->sub(c, new_ctx, ctx);
+	if (c->sub != NULL) {
+		new_ctx->cmds = c->sub(new_ctx, ctx);
 	} else {
 		new_ctx->cmds = NULL;
 	}
@@ -168,27 +164,27 @@
 	argc -= 1;
 	argv += 1;
 
-	if (cmd->sub != NULL) {
+	if (c->sub != NULL) {
 		if (argc == 0) {
 			this_ctx = new_ctx;
-			return true;
+			return True;
 		}
-		return net_sh_process(c, new_ctx, argc, argv);
+		return net_sh_process(new_ctx, argc, argv);
 	}
 
-	status = net_sh_run(c, new_ctx, cmd, argc, argv);
+	status = net_sh_run(new_ctx, c, argc, argv);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		d_fprintf(stderr, "%s failed: %s\n", new_ctx->whoami,
 			  nt_errstr(status));
 	}
 
-	return true;
+	return True;
 }
 
 static struct rpc_sh_cmd sh_cmds[6] = {
 
-	{ "info", NULL, &ndr_table_samr.syntax_id, rpc_sh_info,
+	{ "info", NULL, PI_SAMR, rpc_sh_info,
 	  "Print information about the domain connected to" },
 
 	{ "rights", net_rpc_rights_cmds, 0, NULL,
@@ -206,33 +202,23 @@
 	{ NULL, NULL, 0, NULL, NULL }
 };
 
-int net_rpc_shell(struct net_context *c, int argc, const char **argv)
+int net_rpc_shell(int argc, const char **argv)
 {
 	NTSTATUS status;
 	struct rpc_sh_ctx *ctx;
 
-	if (argc != 0 || c->display_usage) {
-		d_printf("Usage:\n"
-			 "net rpc shell\n");
+	if (argc != 0) {
+		d_fprintf(stderr, "usage: net rpc shell\n");
 		return -1;
 	}
 
-	if (libnetapi_init(&c->netapi_ctx) != 0) {
-		return -1;
-	}
-	libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
-	libnetapi_set_password(c->netapi_ctx, c->opt_password);
-	if (c->opt_kerberos) {
-		libnetapi_set_use_kerberos(c->netapi_ctx);
-	}
-
 	ctx = TALLOC_P(NULL, struct rpc_sh_ctx);
 	if (ctx == NULL) {
 		d_fprintf(stderr, "talloc failed\n");
 		return -1;
 	}
 
-	status = net_make_ipc_connection(c, 0, &(ctx->cli));
+	status = net_make_ipc_connection(0, &(ctx->cli));
 	if (!NT_STATUS_IS_OK(status)) {
 		d_fprintf(stderr, "Could not open connection: %s\n",
 			  nt_errstr(status));
@@ -279,11 +265,11 @@
 			d_fprintf(stderr, "cmdline invalid: %s\n",
 				  poptStrerror(ret));
 			SAFE_FREE(line);
-			return false;
+			return False;
 		}
 
 		if ((line[0] != '\n') &&
-		    (!net_sh_process(c, this_ctx, argc, argv))) {
+		    (!net_sh_process(this_ctx, argc, argv))) {
 			SAFE_FREE(line);
 			break;
 		}

Modified: branches/samba/upstream/source/utils/net_sam.c
===================================================================
--- branches/samba/upstream/source/utils/net_sam.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_sam.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -25,8 +25,7 @@
  * Set a user's data
  */
 
-static int net_sam_userset(struct net_context *c, int argc, const char **argv,
-			   const char *field,
+static int net_sam_userset(int argc, const char **argv, const char *field,
 			   bool (*fn)(struct samu *, const char *,
 				      enum pdb_value_state))
 {
@@ -36,7 +35,7 @@
 	const char *dom, *name;
 	NTSTATUS status;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net sam set %s <user> <value>\n",
 			  field);
 		return -1;
@@ -82,45 +81,39 @@
 	return 0;
 }
 
-static int net_sam_set_fullname(struct net_context *c, int argc,
-				const char **argv)
+static int net_sam_set_fullname(int argc, const char **argv)
 {
-	return net_sam_userset(c, argc, argv, "fullname",
+	return net_sam_userset(argc, argv, "fullname",
 			       pdb_set_fullname);
 }
 
-static int net_sam_set_logonscript(struct net_context *c, int argc,
-				   const char **argv)
+static int net_sam_set_logonscript(int argc, const char **argv)
 {
-	return net_sam_userset(c, argc, argv, "logonscript",
+	return net_sam_userset(argc, argv, "logonscript",
 			       pdb_set_logon_script);
 }
 
-static int net_sam_set_profilepath(struct net_context *c, int argc,
-				   const char **argv)
+static int net_sam_set_profilepath(int argc, const char **argv)
 {
-	return net_sam_userset(c, argc, argv, "profilepath",
+	return net_sam_userset(argc, argv, "profilepath",
 			       pdb_set_profile_path);
 }
 
-static int net_sam_set_homedrive(struct net_context *c, int argc,
-				 const char **argv)
+static int net_sam_set_homedrive(int argc, const char **argv)
 {
-	return net_sam_userset(c, argc, argv, "homedrive",
+	return net_sam_userset(argc, argv, "homedrive",
 			       pdb_set_dir_drive);
 }
 
-static int net_sam_set_homedir(struct net_context *c, int argc,
-			       const char **argv)
+static int net_sam_set_homedir(int argc, const char **argv)
 {
-	return net_sam_userset(c, argc, argv, "homedir",
+	return net_sam_userset(argc, argv, "homedir",
 			       pdb_set_homedir);
 }
 
-static int net_sam_set_workstations(struct net_context *c, int argc,
-				    const char **argv)
+static int net_sam_set_workstations(int argc, const char **argv)
 {
-	return net_sam_userset(c, argc, argv, "workstations",
+	return net_sam_userset(argc, argv, "workstations",
 			       pdb_set_workstations);
 }
 
@@ -128,8 +121,7 @@
  * Set account flags
  */
 
-static int net_sam_set_userflag(struct net_context *c, int argc,
-				const char **argv, const char *field,
+static int net_sam_set_userflag(int argc, const char **argv, const char *field,
 				uint16 flag)
 {
 	struct samu *sam_acct = NULL;
@@ -139,9 +131,8 @@
 	NTSTATUS status;
 	uint16 acct_flags;
 
-	if ((argc != 2) || c->display_usage ||
-	    (!strequal(argv[1], "yes") &&
-	     !strequal(argv[1], "no"))) {
+	if ((argc != 2) || (!strequal(argv[1], "yes") &&
+			    !strequal(argv[1], "no"))) {
 		d_fprintf(stderr, "usage: net sam set %s <user> [yes|no]\n",
 			  field);
 		return -1;
@@ -193,36 +184,31 @@
 	return 0;
 }
 
-static int net_sam_set_disabled(struct net_context *c, int argc,
-				const char **argv)
+static int net_sam_set_disabled(int argc, const char **argv)
 {
-	return net_sam_set_userflag(c, argc, argv, "disabled", ACB_DISABLED);
+	return net_sam_set_userflag(argc, argv, "disabled", ACB_DISABLED);
 }
 
-static int net_sam_set_pwnotreq(struct net_context *c, int argc,
-				const char **argv)
+static int net_sam_set_pwnotreq(int argc, const char **argv)
 {
-	return net_sam_set_userflag(c, argc, argv, "pwnotreq", ACB_PWNOTREQ);
+	return net_sam_set_userflag(argc, argv, "pwnotreq", ACB_PWNOTREQ);
 }
 
-static int net_sam_set_autolock(struct net_context *c, int argc,
-				const char **argv)
+static int net_sam_set_autolock(int argc, const char **argv)
 {
-	return net_sam_set_userflag(c, argc, argv, "autolock", ACB_AUTOLOCK);
+	return net_sam_set_userflag(argc, argv, "autolock", ACB_AUTOLOCK);
 }
 
-static int net_sam_set_pwnoexp(struct net_context *c, int argc,
-			       const char **argv)
+static int net_sam_set_pwnoexp(int argc, const char **argv)
 {
-	return net_sam_set_userflag(c, argc, argv, "pwnoexp", ACB_PWNOEXP);
+	return net_sam_set_userflag(argc, argv, "pwnoexp", ACB_PWNOEXP);
 }
 
 /*
  * Set pass last change time, based on force pass change now
  */
 
-static int net_sam_set_pwdmustchangenow(struct net_context *c, int argc,
-					const char **argv)
+static int net_sam_set_pwdmustchangenow(int argc, const char **argv)
 {
 	struct samu *sam_acct = NULL;
 	DOM_SID sid;
@@ -230,9 +216,8 @@
 	const char *dom, *name;
 	NTSTATUS status;
 
-	if ((argc != 2) || c->display_usage ||
-	    (!strequal(argv[1], "yes") &&
-	     !strequal(argv[1], "no"))) {
+	if ((argc != 2) || (!strequal(argv[1], "yes") &&
+			    !strequal(argv[1], "no"))) {
 		d_fprintf(stderr, "usage: net sam set pwdmustchangenow <user> [yes|no]\n");
 		return -1;
 	}
@@ -284,8 +269,7 @@
  * Set a user's or a group's comment
  */
 
-static int net_sam_set_comment(struct net_context *c, int argc,
-			       const char **argv)
+static int net_sam_set_comment(int argc, const char **argv)
 {
 	GROUP_MAP map;
 	DOM_SID sid;
@@ -293,7 +277,7 @@
 	const char *dom, *name;
 	NTSTATUS status;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net sam set comment <name> "
 			  "<comment>\n");
 		return -1;
@@ -306,7 +290,7 @@
 	}
 
 	if (type == SID_NAME_USER) {
-		return net_sam_userset(c, argc, argv, "comment",
+		return net_sam_userset(argc, argv, "comment",
 				       pdb_set_acct_desc);
 	}
 
@@ -338,116 +322,44 @@
 	return 0;
 }
 
-static int net_sam_set(struct net_context *c, int argc, const char **argv)
+static int net_sam_set(int argc, const char **argv)
 {
-	struct functable func[] = {
-		{
-			"homedir",
-			net_sam_set_homedir,
-			NET_TRANSPORT_LOCAL,
-			"Change a user's home directory",
-			"net sam set homedir\n"
-			"    Change a user's home directory"
-		},
-		{
-			"profilepath",
-			net_sam_set_profilepath,
-			NET_TRANSPORT_LOCAL,
-			"Change a user's profile path",
-			"net sam set profilepath\n"
-			"    Change a user's profile path"
-		},
-		{
-			"comment",
-			net_sam_set_comment,
-			NET_TRANSPORT_LOCAL,
-			"Change a users or groups description",
-			"net sam set comment\n"
-			"    Change a users or groups description"
-		},
-		{
-			"fullname",
-			net_sam_set_fullname,
-			NET_TRANSPORT_LOCAL,
-			"Change a user's full name",
-			"net sam set fullname\n"
-			"    Change a user's full name"
-		},
-		{
-			"logonscript",
-			net_sam_set_logonscript,
-			NET_TRANSPORT_LOCAL,
-			"Change a user's logon script",
-			"net sam set logonscript\n"
-			"    Change a user's logon script"
-		},
-		{
-			"homedrive",
-			net_sam_set_homedrive,
-			NET_TRANSPORT_LOCAL,
-			"Change a user's home drive",
-			"net sam set homedrive\n"
-			"    Change a user's home drive"
-		},
-		{
-			"workstations",
-			net_sam_set_workstations,
-			NET_TRANSPORT_LOCAL,
-			"Change a user's allowed workstations",
-			"net sam set workstations\n"
-			"    Change a user's allowed workstations"
-		},
-		{
-			"disabled",
-			net_sam_set_disabled,
-			NET_TRANSPORT_LOCAL,
-			"Disable/Enable a user",
-			"net sam set disable\n"
-			"    Disable/Enable a user"
-		},
-		{
-			"pwnotreq",
-			net_sam_set_pwnotreq,
-			NET_TRANSPORT_LOCAL,
-			"Disable/Enable the password not required flag",
-			"net sam set pwnotreq\n"
-			"    Disable/Enable the password not required flag"
-		},
-		{
-			"autolock",
-			net_sam_set_autolock,
-			NET_TRANSPORT_LOCAL,
-			"Disable/Enable a user's lockout flag",
-			"net sam set autolock\n"
-			"    Disable/Enable a user's lockout flag"
-		},
-		{
-			"pwnoexp",
-			net_sam_set_pwnoexp,
-			NET_TRANSPORT_LOCAL,
-			"Disable/Enable whether a user's pw does not expire",
-			"net sam set pwnoexp\n"
-			"    Disable/Enable whether a user's pw does not expire"
-		},
-		{
-			"pwdmustchangenow",
-			net_sam_set_pwdmustchangenow,
-			NET_TRANSPORT_LOCAL,
-			"Force users password must change at next logon",
-			"net sam set pwdmustchangenow\n"
-			"    Force users password must change at next logon"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+	struct functable2 func[] = {
+		{ "homedir", net_sam_set_homedir,
+		  "Change a user's home directory" },
+		{ "profilepath", net_sam_set_profilepath,
+		  "Change a user's profile path" },
+		{ "comment", net_sam_set_comment,
+		  "Change a users or groups description" },
+		{ "fullname", net_sam_set_fullname,
+		  "Change a user's full name" },
+		{ "logonscript", net_sam_set_logonscript,
+		  "Change a user's logon script" },
+		{ "homedrive", net_sam_set_homedrive,
+		  "Change a user's home drive" },
+		{ "workstations", net_sam_set_workstations,
+		  "Change a user's allowed workstations" },
+		{ "disabled", net_sam_set_disabled,
+		  "Disable/Enable a user" },
+		{ "pwnotreq", net_sam_set_pwnotreq,
+		  "Disable/Enable the password not required flag" },
+		{ "autolock", net_sam_set_autolock,
+		  "Disable/Enable a user's lockout flag" },
+		{ "pwnoexp", net_sam_set_pwnoexp,
+		  "Disable/Enable whether a user's pw does not expire" },
+		{ "pwdmustchangenow", net_sam_set_pwdmustchangenow,
+		  "Force users password must change at next logon" },
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net sam set", func);
+	return net_run_function2(argc, argv, "net sam set", func);
 }
 
 /*
  * Manage account policies
  */
 
-static int net_sam_policy_set(struct net_context *c, int argc, const char **argv)
+static int net_sam_policy_set(int argc, const char **argv)
 {
 	const char *account_policy = NULL;
 	uint32 value = 0;
@@ -455,7 +367,7 @@
 	int field;
 	char *endptr;
 
-        if (argc != 2 || c->display_usage) {
+        if (argc != 2) {
                 d_fprintf(stderr, "usage: net sam policy set " 
 			  "\"<account policy>\" <value> \n");
                 return -1;
@@ -515,18 +427,18 @@
 	return 0;
 }
 
-static int net_sam_policy_show(struct net_context *c, int argc, const char **argv)
+static int net_sam_policy_show(int argc, const char **argv)
 {
 	const char *account_policy = NULL;
         uint32 old_value;
         int field;
 
-        if (argc != 1 || c->display_usage) {
+        if (argc != 1) {
                 d_fprintf(stderr, "usage: net sam policy show"
 			  " \"<account policy>\" \n");
                 return -1;
         }
-
+	
 	account_policy = argv[0];
         field = account_policy_name_to_fieldnum(account_policy);
 
@@ -552,7 +464,7 @@
                         "fetch value!\n");
                 return -1;
         }
-
+	
 	printf("Account policy \"%s\" description: %s\n",
 	       account_policy, account_policy_get_desc(field));
         printf("Account policy \"%s\" value is: %d\n", account_policy,
@@ -560,19 +472,11 @@
         return 0;
 }
 
-static int net_sam_policy_list(struct net_context *c, int argc, const char **argv)
+static int net_sam_policy_list(int argc, const char **argv)
 {
 	const char **names;
 	int count;
 	int i;
-
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net sam policy list\n"
-			 "    List account policies\n");
-		return 0;
-	}
-
 	account_policy_names_list(&names, &count);
         if (count != 0) {
         	d_fprintf(stderr, "Valid account policies "
@@ -585,47 +489,28 @@
         return -1;
 }
 
-static int net_sam_policy(struct net_context *c, int argc, const char **argv)
+static int net_sam_policy(int argc, const char **argv)
 {
-        struct functable func[] = {
-		{
-			"list",
-			net_sam_policy_list,
-			NET_TRANSPORT_LOCAL,
-			"List account policies",
-			"net sam policy list\n"
-			"    List account policies"
-		},
-                {
-			"show",
-			net_sam_policy_show,
-			NET_TRANSPORT_LOCAL,
-			"Show account policies",
-			"net sam policy show\n"
-			"    Show account policies"
-		},
-		{
-			"set",
-			net_sam_policy_set,
-			NET_TRANSPORT_LOCAL,
-			"Change account policies",
-			"net sam policy set\n"
-			"    Change account policies"
-		},
-                {NULL, NULL, 0, NULL, NULL}
+        struct functable2 func[] = {
+		{ "list", net_sam_policy_list,
+                  "List account policies" },
+                { "show", net_sam_policy_show,
+                  "Show account policies" },
+		{ "set", net_sam_policy_set,
+                  "Change account policies" },
+                {NULL, NULL}
         };
 
-        return net_run_function(c, argc, argv, "net sam policy", func);
+        return net_run_function2(argc, argv, "net sam policy", func);
 }
 
 extern PRIVS privs[];
 
-static int net_sam_rights_list(struct net_context *c, int argc,
-			       const char **argv)
+static int net_sam_rights_list(int argc, const char **argv)
 {
 	SE_PRIV mask;
 
-	if (argc > 1 || c->display_usage) {
+	if (argc > 1) {
 		d_fprintf(stderr, "usage: net sam rights list [privilege name]\n");
 		return -1;
 	}
@@ -671,15 +556,14 @@
 	return -1;
 }
 
-static int net_sam_rights_grant(struct net_context *c, int argc,
-				const char **argv)
+static int net_sam_rights_grant(int argc, const char **argv)
 {
 	DOM_SID sid;
 	enum lsa_SidType type;
 	const char *dom, *name;
 	SE_PRIV mask;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net sam rights grant <name> "
 			  "<right>\n");
 		return -1;
@@ -705,14 +589,14 @@
 	return 0;
 }
 
-static int net_sam_rights_revoke(struct net_context *c, int argc, const char **argv)
+static int net_sam_rights_revoke(int argc, const char **argv)
 {
 	DOM_SID sid;
 	enum lsa_SidType type;
 	const char *dom, *name;
 	SE_PRIV mask;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net sam rights revoke <name> "
 			  "<right>\n");
 		return -1;
@@ -738,36 +622,18 @@
 	return 0;
 }
 
-static int net_sam_rights(struct net_context *c, int argc, const char **argv)
+static int net_sam_rights(int argc, const char **argv)
 {
-	struct functable func[] = {
-		{
-			"list",
-			net_sam_rights_list,
-			NET_TRANSPORT_LOCAL,
-			"List possible user rights",
-			"net sam rights list\n"
-			"    List possible user rights"
-		},
-		{
-			"grant",
-			net_sam_rights_grant,
-			NET_TRANSPORT_LOCAL,
-			"Grant a right",
-			"net sam rights grant\n"
-			"    Grant a right"
-		},
-		{
-			"revoke",
-			net_sam_rights_revoke,
-			NET_TRANSPORT_LOCAL,
-			"Revoke a right",
-			"net sam rights revoke\n"
-			"    Revoke a right"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+	struct functable2 func[] = {
+		{ "list", net_sam_rights_list,
+		  "List possible user rights" },
+		{ "grant", net_sam_rights_grant,
+		  "Grant a right" },
+		{ "revoke", net_sam_rights_revoke,
+		  "Revoke a right" },
+		{ NULL }
 	};
-        return net_run_function(c, argc, argv, "net sam rights", func);
+        return net_run_function2(argc, argv, "net sam rights", func);
 }
 
 /*
@@ -829,13 +695,13 @@
 	return status;
 }
 
-static int net_sam_mapunixgroup(struct net_context *c, int argc, const char **argv)
+static int net_sam_mapunixgroup(int argc, const char **argv)
 {
 	NTSTATUS status;
 	GROUP_MAP map;
 	struct group *grp;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam mapunixgroup <name>\n");
 		return -1;
 	}
@@ -891,13 +757,13 @@
         return status;
 }
 
-static int net_sam_unmapunixgroup(struct net_context *c, int argc, const char **argv)
+static int net_sam_unmapunixgroup(int argc, const char **argv)
 {
 	NTSTATUS status;
 	GROUP_MAP map;
 	struct group *grp;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam unmapunixgroup <name>\n");
 		return -1;
 	}
@@ -925,12 +791,12 @@
  * Create a local group
  */
 
-static int net_sam_createlocalgroup(struct net_context *c, int argc, const char **argv)
+static int net_sam_createlocalgroup(int argc, const char **argv)
 {
 	NTSTATUS status;
 	uint32 rid;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam createlocalgroup <name>\n");
 		return -1;
 	}
@@ -958,14 +824,14 @@
  * Delete a local group
  */
 
-static int net_sam_deletelocalgroup(struct net_context *c, int argc, const char **argv)
+static int net_sam_deletelocalgroup(int argc, const char **argv)
 {
 	DOM_SID sid;
         enum lsa_SidType type;
         const char *dom, *name;
 	NTSTATUS status;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam deletelocalgroup <name>\n");
 		return -1;
 	}
@@ -996,10 +862,10 @@
 }
 
 /*
- * Create a builtin group
+ * Create a local group
  */
 
-static int net_sam_createbuiltingroup(struct net_context *c, int argc, const char **argv)
+static int net_sam_createbuiltingroup(int argc, const char **argv)
 {
 	NTSTATUS status;
 	uint32 rid;
@@ -1007,28 +873,28 @@
 	fstring groupname;
 	DOM_SID sid;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam createbuiltingroup <name>\n");
 		return -1;
 	}
 
 	if (!winbind_ping()) {
-		d_fprintf(stderr, "winbind seems not to run. createbuiltingroup "
+		d_fprintf(stderr, "winbind seems not to run. createlocalgroup "
 			  "only works when winbind runs.\n");
 		return -1;
 	}
 
 	/* validate the name and get the group */
-
+	
 	fstrcpy( groupname, "BUILTIN\\" );
 	fstrcat( groupname, argv[0] );
-
+	
 	if ( !lookup_name(talloc_tos(), groupname, LOOKUP_NAME_ALL, NULL,
 			  NULL, &sid, &type)) {
 		d_fprintf(stderr, "%s is not a BUILTIN group\n", argv[0]);
 		return -1;
 	}
-
+	
 	if ( !sid_peek_rid( &sid, &rid ) ) {
 		d_fprintf(stderr, "Failed to get RID for %s\n", argv[0]);
 		return -1;
@@ -1051,14 +917,14 @@
  * Add a group member
  */
 
-static int net_sam_addmem(struct net_context *c, int argc, const char **argv)
+static int net_sam_addmem(int argc, const char **argv)
 {
 	const char *groupdomain, *groupname, *memberdomain, *membername;
 	DOM_SID group, member;
 	enum lsa_SidType grouptype, membertype;
 	NTSTATUS status;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net sam addmem <group> <member>\n");
 		return -1;
 	}
@@ -1082,7 +948,7 @@
 		}
 
 		if ( !lookup_sid(talloc_tos(), &member, &memberdomain,
-			&membername, &membertype) )
+			&membername, &membertype) ) 
 		{
 			d_fprintf(stderr, "Could not resolve SID %s\n", argv[1]);
 			return -1;
@@ -1112,7 +978,7 @@
 		return -1;
 	}
 
-	d_printf("Added %s\\%s to %s\\%s\n", memberdomain, membername,
+	d_printf("Added %s\\%s to %s\\%s\n", memberdomain, membername, 
 		groupdomain, groupname);
 
 	return 0;
@@ -1122,7 +988,7 @@
  * Delete a group member
  */
 
-static int net_sam_delmem(struct net_context *c, int argc, const char **argv)
+static int net_sam_delmem(int argc, const char **argv)
 {
 	const char *groupdomain, *groupname;
 	const char *memberdomain = NULL;
@@ -1131,7 +997,7 @@
 	enum lsa_SidType grouptype;
 	NTSTATUS status;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc != 2) {
 		d_fprintf(stderr, "usage: net sam delmem <group> <member>\n");
 		return -1;
 	}
@@ -1182,14 +1048,14 @@
  * List group members
  */
 
-static int net_sam_listmem(struct net_context *c, int argc, const char **argv)
+static int net_sam_listmem(int argc, const char **argv)
 {
 	const char *groupdomain, *groupname;
 	DOM_SID group;
 	enum lsa_SidType grouptype;
 	NTSTATUS status;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam listmem <group>\n");
 		return -1;
 	}
@@ -1204,7 +1070,7 @@
 	    (grouptype == SID_NAME_WKN_GRP)) {
 		DOM_SID *members = NULL;
 		size_t i, num_members = 0;
-
+		
 		status = pdb_enum_aliasmem(&group, &members, &num_members);
 
 		if (!NT_STATUS_IS_OK(status)) {
@@ -1238,12 +1104,12 @@
 /*
  * Do the listing
  */
-static int net_sam_do_list(struct net_context *c, int argc, const char **argv,
+static int net_sam_do_list(int argc, const char **argv,
 			   struct pdb_search *search, const char *what)
 {
 	bool verbose = (argc == 1);
 
-	if ((argc > 1) || c->display_usage ||
+	if ((argc > 1) ||
 	    ((argc == 1) && !strequal(argv[0], "verbose"))) {
 		d_fprintf(stderr, "usage: net sam list %s [verbose]\n", what);
 		return -1;
@@ -1254,7 +1120,7 @@
 		return -1;
 	}
 
-	while (true) {
+	while (True) {
 		struct samr_displayentry entry;
 		if (!search->next_entry(search, &entry)) {
 			break;
@@ -1273,39 +1139,34 @@
 	return 0;
 }
 
-static int net_sam_list_users(struct net_context *c, int argc,
-			      const char **argv)
+static int net_sam_list_users(int argc, const char **argv)
 {
-	return net_sam_do_list(c, argc, argv, pdb_search_users(ACB_NORMAL),
+	return net_sam_do_list(argc, argv, pdb_search_users(ACB_NORMAL),
 			       "users");
 }
 
-static int net_sam_list_groups(struct net_context *c, int argc,
-			       const char **argv)
+static int net_sam_list_groups(int argc, const char **argv)
 {
-	return net_sam_do_list(c, argc, argv, pdb_search_groups(), "groups");
+	return net_sam_do_list(argc, argv, pdb_search_groups(), "groups");
 }
 
-static int net_sam_list_localgroups(struct net_context *c, int argc,
-				    const char **argv)
+static int net_sam_list_localgroups(int argc, const char **argv)
 {
-	return net_sam_do_list(c, argc, argv,
+	return net_sam_do_list(argc, argv,
 			       pdb_search_aliases(get_global_sam_sid()),
 			       "localgroups");
 }
 
-static int net_sam_list_builtin(struct net_context *c, int argc,
-				const char **argv)
+static int net_sam_list_builtin(int argc, const char **argv)
 {
-	return net_sam_do_list(c, argc, argv,
+	return net_sam_do_list(argc, argv,
 			       pdb_search_aliases(&global_sid_Builtin),
 			       "builtin");
 }
 
-static int net_sam_list_workstations(struct net_context *c, int argc,
-				     const char **argv)
+static int net_sam_list_workstations(int argc, const char **argv)
 {
-	return net_sam_do_list(c, argc, argv,
+	return net_sam_do_list(argc, argv,
 			       pdb_search_users(ACB_WSTRUST),
 			       "workstations");
 }
@@ -1314,66 +1175,36 @@
  * List stuff
  */
 
-static int net_sam_list(struct net_context *c, int argc, const char **argv)
+static int net_sam_list(int argc, const char **argv)
 {
-	struct functable func[] = {
-		{
-			"users",
-			net_sam_list_users,
-			NET_TRANSPORT_LOCAL,
-			"List SAM users",
-			"net sam list users\n"
-			"    List SAM users"
-		},
-		{
-			"groups",
-			net_sam_list_groups,
-			NET_TRANSPORT_LOCAL,
-			"List SAM groups",
-			"net sam list groups\n"
-			"    List SAM groups"
-		},
-		{
-			"localgroups",
-			net_sam_list_localgroups,
-			NET_TRANSPORT_LOCAL,
-			"List SAM local groups",
-			"net sam list localgroups\n"
-			"    List SAM local groups"
-		},
-		{
-			"builtin",
-			net_sam_list_builtin,
-			NET_TRANSPORT_LOCAL,
-			"List builtin groups",
-			"net sam list builtin\n"
-			"    List builtin groups"
-		},
-		{
-			"workstations",
-			net_sam_list_workstations,
-			NET_TRANSPORT_LOCAL,
-			"List domain member workstations",
-			"net sam list workstations\n"
-			"    List domain member workstations"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+	struct functable2 func[] = {
+		{ "users", net_sam_list_users,
+		  "List SAM users" },
+		{ "groups", net_sam_list_groups,
+		  "List SAM groups" },
+		{ "localgroups", net_sam_list_localgroups,
+		  "List SAM local groups" },
+		{ "builtin", net_sam_list_builtin,
+		  "List builtin groups" },
+		{ "workstations", net_sam_list_workstations,
+		  "List domain member workstations" },
+		{NULL, NULL}
 	};
 
-	return net_run_function(c, argc, argv, "net sam list", func);
+	return net_run_function2(argc, argv, "net sam list", func);
 }
 
 /*
  * Show details of SAM entries
  */
 
-static int net_sam_show(struct net_context *c, int argc, const char **argv)
+static int net_sam_show(int argc, const char **argv)
 {
 	DOM_SID sid;
 	enum lsa_SidType type;
 	const char *dom, *name;
 
-	if (argc != 1 || c->display_usage) {
+	if (argc != 1) {
 		d_fprintf(stderr, "usage: net sam show <name>\n");
 		return -1;
 	}
@@ -1397,7 +1228,7 @@
  * if ldapsam:editposix is enabled
  */
 
-static int net_sam_provision(struct net_context *c, int argc, const char **argv)
+static int net_sam_provision(int argc, const char **argv)
 {
 	TALLOC_CTX *tc;
 	char *ldap_bk;
@@ -1411,13 +1242,6 @@
 	struct samu *samuser;
 	struct passwd *pwd;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net sam provision\n"
-			 "    Init an LDAP tree with default users/groups\n");
-		return 0;
-	}
-
 	tc = talloc_new(NULL);
 	if (!tc) {
 		d_fprintf(stderr, "Out of Memory!\n");
@@ -1443,8 +1267,8 @@
 		goto failed;
 	}
 	
-	if (!lp_parm_bool(-1, "ldapsam", "trusted", false) ||
-	    !lp_parm_bool(-1, "ldapsam", "editposix", false)) {
+	if (!lp_parm_bool(-1, "ldapsam", "trusted", False) ||
+	    !lp_parm_bool(-1, "ldapsam", "editposix", False)) {
 
 		d_fprintf(stderr, "Provisioning works only if ldapsam:trusted"
 				  " and ldapsam:editposix are enabled.\n");
@@ -1806,133 +1630,47 @@
 /***********************************************************
  migrated functionality from smbgroupedit
  **********************************************************/
-int net_sam(struct net_context *c, int argc, const char **argv)
+int net_sam(int argc, const char **argv)
 {
-	struct functable func[] = {
-		{
-			"createbuiltingroup",
-			net_sam_createbuiltingroup,
-			NET_TRANSPORT_LOCAL,
-			"Create a new BUILTIN group",
-			"net sam createbuiltingroup\n"
-			"    Create a new BUILTIN group"
-		},
-		{
-			"createlocalgroup",
-			net_sam_createlocalgroup,
-			NET_TRANSPORT_LOCAL,
-			"Create a new local group",
-			"net sam createlocalgroup\n"
-			"    Create a new local group"
-		},
-		{
-			"deletelocalgroup",
-			net_sam_deletelocalgroup,
-			NET_TRANSPORT_LOCAL,
-			"Delete an existing local group",
-			"net sam deletelocalgroup\n"
-			"    Delete an existing local group"
-		},
-		{
-			"mapunixgroup",
-			net_sam_mapunixgroup,
-			NET_TRANSPORT_LOCAL,
-			"Map a unix group to a domain group",
-			"net sam mapunixgroup\n"
-			"    Map a unix group to a domain group"
-		},
-		{
-			"unmapunixgroup",
-			net_sam_unmapunixgroup,
-			NET_TRANSPORT_LOCAL,
-			"Remove a group mapping of an unix group to a domain "
-			"group",
-			"net sam unmapunixgroup\n"
-			"    Remove a group mapping of an unix group to a "
-			"domain group"
-		},
-		{
-			"addmem",
-			net_sam_addmem,
-			NET_TRANSPORT_LOCAL,
-			"Add a member to a group",
-			"net sam addmem\n"
-			"    Add a member to a group"
-		},
-		{
-			"delmem",
-			net_sam_delmem,
-			NET_TRANSPORT_LOCAL,
-			"Delete a member from a group",
-			"net sam delmem\n"
-			"    Delete a member from a group"
-		},
-		{
-			"listmem",
-			net_sam_listmem,
-			NET_TRANSPORT_LOCAL,
-			"List group members",
-			"net sam listmem\n"
-			"    List group members"
-		},
-		{
-			"list",
-			net_sam_list,
-			NET_TRANSPORT_LOCAL,
-			"List users, groups and local groups",
-			"net sam list\n"
-			"    List users, groups and local groups"
-		},
-		{
-			"show",
-			net_sam_show,
-			NET_TRANSPORT_LOCAL,
-			"Show details of a SAM entry",
-			"net sam show\n"
-			"    Show details of a SAM entry"
-		},
-		{
-			"set",
-			net_sam_set,
-			NET_TRANSPORT_LOCAL,
-			"Set details of a SAM account",
-			"net sam set\n"
-			"    Set details of a SAM account"
-		},
-		{
-			"policy",
-			net_sam_policy,
-			NET_TRANSPORT_LOCAL,
-			"Set account policies",
-			"net sam policy\n"
-			"    Set account policies"
-		},
-		{
-			"rights",
-			net_sam_rights,
-			NET_TRANSPORT_LOCAL,
-			"Manipulate user privileges",
-			"net sam rights\n"
-			"    Manipulate user privileges"
-		},
+	struct functable2 func[] = {
+		{ "createbuiltingroup", net_sam_createbuiltingroup,
+		  "Create a new BUILTIN group" },
+		{ "createlocalgroup", net_sam_createlocalgroup,
+		  "Create a new local group" },
+		{ "deletelocalgroup", net_sam_deletelocalgroup,
+		  "Delete an existing local group" },
+		{ "mapunixgroup", net_sam_mapunixgroup,
+		  "Map a unix group to a domain group" },
+		{ "unmapunixgroup", net_sam_unmapunixgroup,
+		  "Remove a group mapping of an unix group to a domain group" },
+		{ "addmem", net_sam_addmem,
+		  "Add a member to a group" },
+		{ "delmem", net_sam_delmem,
+		  "Delete a member from a group" },
+		{ "listmem", net_sam_listmem,
+		  "List group members" },
+		{ "list", net_sam_list,
+		  "List users, groups and local groups" },
+		{ "show", net_sam_show,
+		  "Show details of a SAM entry" },
+		{ "set", net_sam_set,
+		  "Set details of a SAM account" },
+		{ "policy", net_sam_policy,
+		  "Set account policies" },
+		{ "rights", net_sam_rights,
+		  "Manipulate user privileges" },
 #ifdef HAVE_LDAP
-		{
-			"provision",
-			net_sam_provision,
-			NET_TRANSPORT_LOCAL,
-			"Provision a clean user database",
-			"net sam privison\n"
-			"    Provision a clear user database"
-		},
+		{ "provision", net_sam_provision,
+		  "Provision a clean User Database" },
 #endif
-		{NULL, NULL, 0, NULL, NULL}
+		{ NULL, NULL, NULL }
 	};
 
 	if (getuid() != 0) {
 		d_fprintf(stderr, "You are not root, most things won't "
 			  "work\n");
 	}
-
-	return net_run_function(c, argc, argv, "net sam", func);
+	
+	return net_run_function2(argc, argv, "net sam", func);
 }
 

Deleted: branches/samba/upstream/source/utils/net_share.c
===================================================================
--- branches/samba/upstream/source/utils/net_share.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_share.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,77 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net share commands
-   Copyright (C) 2002  Andrew Tridgell  (tridge at samba.org)
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_share_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf(
-	 "\nnet [<method>] share [misc. options] [targets] \n"
-	 "\tenumerates all exported resources (network shares) "
-	 "on target server\n\n"
-	 "net [<method>] share ADD <name=serverpath> [misc. options] [targets]"
-	"\n\tadds a share from a server (makes the export active)\n\n"
-	"net [<method>] share DELETE <sharename> [misc. options] [targets]"
-	"\n\tdeletes a share from a server (makes the export inactive)\n\n"
-	"net [<method>] share ALLOWEDUSERS [<filename>] "
-	"[misc. options] [targets]"
-	"\n\tshows a list of all shares together with all users allowed to"
-	"\n\taccess them. This needs the output of 'net usersidlist' on"
-	"\n\tstdin or in <filename>.\n\n"
-	 "net [<method>] share MIGRATE FILES <sharename> [misc. options] [targets]"
-	 "\n\tMigrates files from remote to local server\n\n"
-	 "net [<method>] share MIGRATE SHARES <sharename> [misc. options] [targets]"
-	 "\n\tMigrates shares from remote to local server\n\n"
-	 "net [<method>] share MIGRATE SECURITY <sharename> [misc. options] [targets]"
-	 "\n\tMigrates share-ACLs from remote to local server\n\n"
-	 "net [<method>] share MIGRATE ALL <sharename> [misc. options] [targets]"
-	 "\n\tMigrates shares (including directories, files) from remote\n"
-	 "\tto local server\n\n"
-	);
-	net_common_methods_usage(c, argc, argv);
-	net_common_flags_usage(c, argc, argv);
-	d_printf(
-	 "\t-C or --comment=<comment>\tdescriptive comment (for add only)\n"
-	 "\t-M or --maxusers=<num>\t\tmax users allowed for share\n"
-	 "\t      --acls\t\t\tcopies ACLs as well\n"
-	 "\t      --attrs\t\t\tcopies DOS Attributes as well\n"
-	 "\t      --timestamps\t\tpreserve timestamps while copying files\n"
-	 "\t      --destination\t\tmigration target server (default: localhost)\n"
-	 "\t-e or --exclude\t\t\tlist of shares to be excluded from mirroring\n"
-	 "\t-v or --verbose\t\t\tgive verbose output\n");
-	return -1;
-}
-
-int net_share(struct net_context *c, int argc, const char **argv)
-{
-	if (argc < 1)
-		return net_share_usage(c, argc, argv);
-
-	if (StrCaseCmp(argv[0], "HELP") == 0) {
-		net_share_usage(c, argc, argv);
-		return 0;
-	}
-
-	if (net_rpc_check(c, 0))
-		return net_rpc_share(c, argc, argv);
-	return net_rap_share(c, argc, argv);
-}
-

Modified: branches/samba/upstream/source/utils/net_status.c
===================================================================
--- branches/samba/upstream/source/utils/net_status.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_status.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,5 +1,5 @@
-/*
-   Samba Unix/Linux SMB client library
+/* 
+   Samba Unix/Linux SMB client library 
    net status command -- possible replacement for smbstatus
    Copyright (C) 2003 Volker Lendecke (vl at samba.org)
 
@@ -7,27 +7,18 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "includes.h"
 #include "utils/net.h"
 
-int net_status_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("  net status sessions [parseable] "
-		 "Show list of open sessions\n");
-	d_printf("  net status shares [parseable]   "
-		 "Show list of open shares\n");
-	return -1;
-}
-
 static int show_session(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
 			void *state)
 {
@@ -46,38 +37,29 @@
 	if (*parseable) {
 		d_printf("%s\\%s\\%s\\%s\\%s\n",
 			 procid_str_static(&sessionid.pid), uidtoname(sessionid.uid),
-			 gidtoname(sessionid.gid),
+			 gidtoname(sessionid.gid), 
 			 sessionid.remote_machine, sessionid.hostname);
 	} else {
 		d_printf("%7s   %-12s  %-12s  %-12s (%s)\n",
 			 procid_str_static(&sessionid.pid), uidtoname(sessionid.uid),
-			 gidtoname(sessionid.gid),
+			 gidtoname(sessionid.gid), 
 			 sessionid.remote_machine, sessionid.hostname);
 	}
 
 	return 0;
 }
 
-static int net_status_sessions(struct net_context *c, int argc, const char **argv)
+static int net_status_sessions(int argc, const char **argv)
 {
 	TDB_CONTEXT *tdb;
 	bool parseable;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net status sessions [parseable]\n"
-			 "    Display open user sessions.\n"
-			 "    If parseable is specified, output is machine-"
-			 "readable.\n");
-		return 0;
-	}
-
 	if (argc == 0) {
-		parseable = false;
+		parseable = False;
 	} else if ((argc == 1) && strequal(argv[0], "parseable")) {
-		parseable = true;
+		parseable = True;
 	} else {
-		return net_status_usage(c, argc, argv);
+		return net_help_status(argc, argv);
 	}
 
 	if (!parseable) {
@@ -137,7 +119,7 @@
 
 	memcpy(&sessionid, dbuf.dptr, sizeof(sessionid));
 
-	if (!process_exists(sessionid.pid))
+	if (!process_exists(sessionid.pid)) 
 		return 0;
 
 	ids->num_entries += 1;
@@ -158,7 +140,7 @@
 {
 	struct sessionids *ids = (struct sessionids *)state;
 	int i;
-	bool guest = true;
+	bool guest = True;
 
 	if (crec->cnum == -1)
 		return 0;
@@ -170,7 +152,7 @@
 	for (i=0; i<ids->num_entries; i++) {
 		struct server_id id = ids->entries[i].pid;
 		if (procid_equal(&id, &crec->pid)) {
-			guest = false;
+			guest = False;
 			break;
 		}
 	}
@@ -179,14 +161,14 @@
 		 crec->servicename,procid_str_static(&crec->pid),
 		 guest ? "" : uidtoname(ids->entries[i].uid),
 		 guest ? "" : gidtoname(ids->entries[i].gid),
-		 crec->machine,
+		 crec->machine, 
 		 guest ? "" : ids->entries[i].hostname,
 		 time_to_asc(crec->start));
 
 	return 0;
 }
 
-static int net_status_shares_parseable(struct net_context *c, int argc, const char **argv)
+static int net_status_shares_parseable(int argc, const char **argv)
 {
 	struct sessionids ids;
 	TDB_CONTEXT *tdb;
@@ -212,17 +194,8 @@
 	return 0;
 }
 
-static int net_status_shares(struct net_context *c, int argc, const char **argv)
+static int net_status_shares(int argc, const char **argv)
 {
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net status shares [parseable]\n"
-			 "    Display open user shares.\n"
-			 "    If parseable is specified, output is machine-"
-			 "readable.\n");
-		return 0;
-	}
-
 	if (argc == 0) {
 
 		d_printf("\nService      pid     machine       "
@@ -236,34 +209,18 @@
 	}
 
 	if ((argc != 1) || !strequal(argv[0], "parseable")) {
-		return net_status_usage(c, argc, argv);
+		return net_help_status(argc, argv);
 	}
 
-	return net_status_shares_parseable(c, argc, argv);
+	return net_status_shares_parseable(argc, argv);
 }
 
-int net_status(struct net_context *c, int argc, const char **argv)
+int net_status(int argc, const char **argv)
 {
 	struct functable func[] = {
-		{
-			"sessions",
-			net_status_sessions,
-			NET_TRANSPORT_LOCAL,
-			"Show list of open sessions",
-			"net status sessions [parseable]\n"
-			"    If parseable is specified, output is presented "
-			"in a machine-parseable fashion."
-		},
-		{
-			"shares",
-			net_status_shares,
-			NET_TRANSPORT_LOCAL,
-			"Show list of open shares",
-			"net status shares [parseable]\n"
-			"    If parseable is specified, output is presented "
-			"in a machine-parseable fashion."
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"sessions", net_status_sessions},
+		{"shares", net_status_shares},
+		{NULL, NULL}
 	};
-	return net_run_function(c, argc, argv, "net status", func);
+	return net_run_function(argc, argv, func, net_help_status);
 }

Modified: branches/samba/upstream/source/utils/net_time.c
===================================================================
--- branches/samba/upstream/source/utils/net_time.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_time.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,5 +1,5 @@
-/*
-   Samba Unix/Linux SMB client library
+/* 
+   Samba Unix/Linux SMB client library 
    net time command
    Copyright (C) 2001 Andrew Tridgell (tridge at samba.org)
 
@@ -7,18 +7,19 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
 #include "includes.h"
 #include "utils/net.h"
 
+
 /*
   return the time on a server. This does not require any authentication
 */
@@ -67,10 +68,9 @@
 }
 
 /* find the servers time on the opt_host host */
-static time_t nettime(struct net_context *c, int *zone)
+static time_t nettime(int *zone)
 {
-	return cli_servertime(c->opt_host,
-			      c->opt_have_ip? &c->opt_dest_ip : NULL, zone);
+	return cli_servertime(opt_host, opt_have_ip? &opt_dest_ip : NULL, zone);
 }
 
 /* return a time as a string ready to be passed to /bin/date */
@@ -90,22 +90,22 @@
 	return s;
 }
 
-int net_time_usage(struct net_context *c, int argc, const char **argv)
+int net_time_usage(int argc, const char **argv)
 {
 	d_printf(
-"net time\n\tdisplays time on a server\n\n"
-"net time system\n\tdisplays time on a server in a format ready for /bin/date\n\n"
-"net time set\n\truns /bin/date with the time from the server\n\n"
-"net time zone\n\tdisplays the timezone in hours from GMT on the remote computer\n\n"
+"net time\n\tdisplays time on a server\n\n"\
+"net time system\n\tdisplays time on a server in a format ready for /bin/date\n\n"\
+"net time set\n\truns /bin/date with the time from the server\n\n"\
+"net time zone\n\tdisplays the timezone in hours from GMT on the remote computer\n\n"\
 "\n");
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
 /* try to set the system clock using /bin/date */
-static int net_time_set(struct net_context *c, int argc, const char **argv)
+static int net_time_set(int argc, const char **argv)
 {
-	time_t t = nettime(c, NULL);
+	time_t t = nettime(NULL);
 	char *cmd;
 	int result;
 
@@ -125,19 +125,10 @@
 }
 
 /* display the time on a remote box in a format ready for /bin/date */
-static int net_time_system(struct net_context *c, int argc, const char **argv)
+static int net_time_system(int argc, const char **argv)
 {
-	time_t t;
+	time_t t = nettime(NULL);
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net time system\n"
-			 "    Output remote time server time in a format ready "
-			 "for /bin/date\n");
-		return 0;
-	}
-
-	t = nettime(c, NULL);
 	if (t == 0) return -1;
 
 	printf("%s\n", systime(t));
@@ -145,23 +136,16 @@
 	return 0;
 }
 
-/* display the remote time server's offset to UTC */
-static int net_time_zone(struct net_context *c, int argc, const char **argv)
+/* display the time on a remote box in a format ready for /bin/date */
+static int net_time_zone(int argc, const char **argv)
 {
 	int zone = 0;
 	int hours, mins;
 	char zsign;
 	time_t t;
 
-	if (c->display_usage) {
-		d_printf("Usage:\n"
-			 "net time zone\n"
-			 "   Display the remote time server's offset to UTC\n");
-		return 0;
-	}
+	t = nettime(&zone);
 
-	t = nettime(c, &zone);
-
 	if (t == 0) return -1;
 
 	zsign = (zone > 0) ? '-' : '+';
@@ -177,60 +161,30 @@
 }
 
 /* display or set the time on a host */
-int net_time(struct net_context *c, int argc, const char **argv)
+int net_time(int argc, const char **argv)
 {
 	time_t t;
 	struct functable func[] = {
-		{
-			"system",
-			net_time_system,
-			NET_TRANSPORT_LOCAL,
-			"Display time ready for /bin/date",
-			"net time system\n"
-			"    Display time ready for /bin/date"
-		},
-		{
-			"set",
-			net_time_set,
-			NET_TRANSPORT_LOCAL,
-			"Set the system time from time server",
-			"net time set\n"
-			"    Set the system time from time server"
-		},
-		{
-			"zone",
-			net_time_zone,
-			NET_TRANSPORT_LOCAL,
-			"Display timezone offset from UTC",
-			"net time zone\n"
-			"    Display timezone offset from UTC"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"SYSTEM", net_time_system},
+		{"SET", net_time_set},
+		{"ZONE", net_time_zone},
+		{NULL, NULL}
 	};
 
-	if (argc != 0) {
-		return net_run_function(c, argc, argv, "net time", func);
-	}
-
-	if (c->display_usage) {
-		d_printf("Usage:\n");
-		d_printf("net time\n"
-			 "    Display the remote time server's time\n");
-		net_display_usage_from_functable(func);
-		return 0;
-	}
-
-	if (!c->opt_host && !c->opt_have_ip &&
-	    !find_master_ip(c->opt_target_workgroup, &c->opt_dest_ip)) {
-		d_fprintf(stderr, "Could not locate a time server.  Try "
+	if (!opt_host && !opt_have_ip && 
+	    !find_master_ip(opt_target_workgroup, &opt_dest_ip)) {
+		d_fprintf(stderr, "Could not locate a time server.  Try "\
 				 "specifying a target host.\n");
-		net_time_usage(c, argc,argv);
+		net_time_usage(argc,argv);
 		return -1;
 	}
 
+	if (argc != 0) {
+		return net_run_function(argc, argv, func, net_time_usage);
+	}
+
 	/* default - print the time */
-	t = cli_servertime(c->opt_host, c->opt_have_ip? &c->opt_dest_ip : NULL,
-			   NULL);
+	t = cli_servertime(opt_host, opt_have_ip? &opt_dest_ip : NULL, NULL);
 	if (t == 0) return -1;
 
 	d_printf("%s", ctime(&t));

Deleted: branches/samba/upstream/source/utils/net_user.c
===================================================================
--- branches/samba/upstream/source/utils/net_user.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_user.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,67 +0,0 @@
-/*
-   Samba Unix/Linux SMB client library
-   net user commands
-   Copyright (C) 2002  Jim McDonough  (jmcd at us.ibm.com)
-   Copyright (C) 2002  Andrew Tridgell  (tridge at samba.org)
-   Copyright (C) 2008  Kai Blin  (kai at samba.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; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "utils/net.h"
-
-int net_user_usage(struct net_context *c, int argc, const char **argv)
-{
-	d_printf("\nnet [<method>] user [misc. options] [targets]"\
-		 "\n\tList users\n\n");
-	d_printf("net [<method>] user DELETE <name> [misc. options] [targets]"\
-		 "\n\tDelete specified user\n");
-	d_printf("\nnet [<method>] user INFO <name> [misc. options] [targets]"\
-		 "\n\tList the domain groups of the specified user\n");
-	d_printf("\nnet [<method>] user ADD <name> [password] [-c container] "\
-		 "[-F user flags] [misc. options]"\
-		 " [targets]\n\tAdd specified user\n");
-	d_printf("\nnet [<method>] user RENAME <oldusername> <newusername>"\
-		 " [targets]\n\tRename specified user\n\n");
-
-	net_common_methods_usage(c, argc, argv);
-	net_common_flags_usage(c, argc, argv);
-	d_printf("\t-C or --comment=<comment>\tdescriptive comment "\
-		 "(for add only)\n");
-	d_printf("\t-c or --container=<container>\tLDAP container, defaults "\
-		 "to cn=Users (for add in ADS only)\n");
-	return -1;
-}
-
-int net_user(struct net_context *c, int argc, const char **argv)
-{
-	if (argc < 1)
-		return net_user_usage(c, argc, argv);
-
-	if (StrCaseCmp(argv[0], "HELP") == 0) {
-		net_user_usage(c, argc, argv);
-		return 0;
-	}
-
-	if (net_ads_check(c) == 0)
-		return net_ads_user(c, argc, argv);
-
-	/* if server is not specified, default to PDC? */
-	if (net_rpc_check(c, NET_FLAGS_PDC))
-		return net_rpc_user(c, argc, argv);
-
-	return net_rap_user(c, argc, argv);
-}
-

Modified: branches/samba/upstream/source/utils/net_usershare.c
===================================================================
--- branches/samba/upstream/source/utils/net_usershare.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_usershare.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,6 +1,6 @@
-/*
-   Samba Unix/Linux SMB client library
-   Distributed SMB/CIFS Server Management Utility
+/* 
+   Samba Unix/Linux SMB client library 
+   Distributed SMB/CIFS Server Management Utility 
 
    Copyright (C) Jeremy Allison (jra at samba.org) 2005
 
@@ -8,15 +8,14 @@
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "includes.h"
 #include "utils/net.h"
@@ -60,9 +59,9 @@
 
 /* The help subsystem for the USERSHARE subcommand */
 
-static int net_usershare_add_usage(struct net_context *c, int argc, const char **argv)
+static int net_usershare_add_usage(int argc, const char **argv)
 {
-	char chr = *lp_winbind_separator();
+	char c = *lp_winbind_separator();
 	d_printf(
 		"net usershare add [-l|--long] <sharename> <path> [<comment>] [<acl>] [<guest_ok=[y|n]>]\n"
 		"\tAdds the specified share name for this user.\n"
@@ -77,22 +76,22 @@
 		"instead of \"DOMAIN\"\n"
 		"\t\tThe default acl is \"Everyone:r\" which allows everyone read-only access.\n"
 		"\tAdd -l or --long to print the info on the newly added share.\n",
-		chr, chr );
+		c, c );
 	return -1;
 }
 
-static int net_usershare_delete_usage(struct net_context *c, int argc, const char **argv)
+static int net_usershare_delete_usage(int argc, const char **argv)
 {
 	d_printf(
-		"net usershare delete <sharename>\n"
+		"net usershare delete <sharename>\n"\
 		"\tdeletes the specified share name for this user.\n");
 	return -1;
 }
 
-static int net_usershare_info_usage(struct net_context *c, int argc, const char **argv)
+static int net_usershare_info_usage(int argc, const char **argv)
 {
 	d_printf(
-		"net usershare info [-l|--long] [wildcard sharename]\n"
+		"net usershare info [-l|--long] [wildcard sharename]\n"\
 		"\tPrints out the path, comment and acl elements of shares that match the wildcard.\n"
 		"\tBy default only gives info on shares owned by the current user\n"
 		"\tAdd -l or --long to apply this to all shares\n"
@@ -100,10 +99,10 @@
 	return -1;
 }
 
-static int net_usershare_list_usage(struct net_context *c, int argc, const char **argv)
+static int net_usershare_list_usage(int argc, const char **argv)
 {
 	d_printf(
-		"net usershare list [-l|--long] [wildcard sharename]\n"
+		"net usershare list [-l|--long] [wildcard sharename]\n"\
 		"\tLists the names of all shares that match the wildcard.\n"
 		"\tBy default only lists shares owned by the current user\n"
 		"\tAdd -l or --long to apply this to all shares\n"
@@ -111,17 +110,17 @@
 	return -1;
 }
 
-int net_usershare_usage(struct net_context *c, int argc, const char **argv)
+int net_usershare_usage(int argc, const char **argv)
 {
 	d_printf("net usershare add <sharename> <path> [<comment>] [<acl>] [<guest_ok=[y|n]>] to "
 				"add or change a user defined share.\n"
 		"net usershare delete <sharename> to delete a user defined share.\n"
 		"net usershare info [-l|--long] [wildcard sharename] to print info about a user defined share.\n"
 		"net usershare list [-l|--long] [wildcard sharename] to list user defined shares.\n"
-		"net usershare help\n"
+		"net usershare help\n"\
 		"\nType \"net usershare help <option>\" to get more information on that option\n\n");
 
-	net_common_flags_usage(c, argc, argv);
+	net_common_flags_usage(argc, argv);
 	return -1;
 }
 
@@ -145,13 +144,13 @@
  Delete a single userlevel share.
 ***************************************************************************/
 
-static int net_usershare_delete(struct net_context *c, int argc, const char **argv)
+static int net_usershare_delete(int argc, const char **argv)
 {
 	char *us_path;
 	char *sharename;
 
-	if (argc != 1 || c->display_usage) {
-		return net_usershare_delete_usage(c, argc, argv);
+	if (argc != 1) {
+		return net_usershare_delete_usage(argc, argv);
 	}
 
 	if ((sharename = strdup_lower(argv[0])) == NULL) {
@@ -288,7 +287,6 @@
 struct us_priv_info {
 	TALLOC_CTX *ctx;
 	enum us_priv_op op;
-	struct net_context *c;
 };
 
 /***************************************************************************
@@ -317,7 +315,6 @@
 	char **lines = NULL;
 	struct us_priv_info *pi = (struct us_priv_info *)priv;
 	TALLOC_CTX *ctx = pi->ctx;
-	struct net_context *c = pi->c;
 	int fd = -1;
 	int numlines = 0;
 	SEC_DESC *psd = NULL;
@@ -328,7 +325,7 @@
 	int num_aces;
 	char sep_str[2];
 	enum usershare_err us_err;
-	bool guest_ok = false;
+	bool guest_ok = False;
 
 	sep_str[0] = *lp_winbind_separator();
 	sep_str[1] = '\0';
@@ -405,9 +402,7 @@
 		const char *name;
 		NTSTATUS ntstatus;
 
-		ntstatus = net_lookup_name_from_sid(c, ctx,
-				                    &psd->dacl->aces[num_aces].trustee,
-						    &domain, &name);
+		ntstatus = net_lookup_name_from_sid(ctx, &psd->dacl->aces[num_aces].trustee, &domain, &name);
 
 		if (NT_STATUS_IS_OK(ntstatus)) {
 			if (domain && *domain) {
@@ -476,21 +471,18 @@
  Print out info (internal detail) on userlevel shares.
 ***************************************************************************/
 
-static int net_usershare_info(struct net_context *c, int argc, const char **argv)
+static int net_usershare_info(int argc, const char **argv)
 {
 	fstring wcard;
-	bool only_ours = true;
+	bool only_ours = True;
 	int ret = -1;
 	struct us_priv_info pi;
 	TALLOC_CTX *ctx;
 
 	fstrcpy(wcard, "*");
 
-	if (c->display_usage)
-		return net_usershare_info_usage(c, argc, argv);
-
-	if (c->opt_long_list_entries) {
-		only_ours = false;
+	if (opt_long_list_entries) {
+		only_ours = False;
 	}
 
 	switch (argc) {
@@ -500,7 +492,7 @@
 			fstrcpy(wcard, argv[0]);
 			break;
 		default:
-			return net_usershare_info_usage(c, argc, argv);
+			return net_usershare_info_usage(argc, argv);
 	}
 
 	strlower_m(wcard);
@@ -513,7 +505,6 @@
 
 	pi.ctx = ctx;
 	pi.op = US_INFO_OP;
-	pi.c = c;
 
 	ret = process_share_list(info_fn, &pi);
 	talloc_destroy(ctx);
@@ -590,7 +581,7 @@
  Add a single userlevel share.
 ***************************************************************************/
 
-static int net_usershare_add(struct net_context *c, int argc, const char **argv)
+static int net_usershare_add(int argc, const char **argv)
 {
 	TALLOC_CTX *ctx = talloc_stackframe();
 	SMB_STRUCT_STAT sbuf;
@@ -609,20 +600,17 @@
 	const char *pacl;
 	size_t to_write;
 	uid_t myeuid = geteuid();
-	bool guest_ok = false;
+	bool guest_ok = False;
 	int num_usershares;
 
 	us_comment = "";
 	arg_acl = "S-1-1-0:R";
 
-	if (c->display_usage)
-		return net_usershare_add_usage(c, argc, argv);
-
 	switch (argc) {
 		case 0:
 		case 1:
 		default:
-			return net_usershare_add_usage(c, argc, argv);
+			return net_usershare_add_usage(argc, argv);
 		case 2:
 			sharename = strdup_lower(argv[0]);
 			us_path = argv[1];
@@ -648,20 +636,20 @@
 			}
 			if (!strnequal(argv[4], "guest_ok=", 9)) {
 				TALLOC_FREE(ctx);
-				return net_usershare_add_usage(c, argc, argv);
+				return net_usershare_add_usage(argc, argv);
 			}
 			switch (argv[4][9]) {
 				case 'y':
 				case 'Y':
-					guest_ok = true;
+					guest_ok = True;
 					break;
 				case 'n':
 				case 'N':
-					guest_ok = false;
+					guest_ok = False;
 					break;
 				default:
 					TALLOC_FREE(ctx);
-					return net_usershare_add_usage(c, argc, argv);
+					return net_usershare_add_usage(argc, argv);
 			}
 			break;
 	}
@@ -752,7 +740,7 @@
 	if ((myeuid != 0) && lp_usershare_owner_only() && (myeuid != sbuf.st_uid)) {
 		d_fprintf(stderr, "net usershare add: cannot share path %s as "
 			"we are restricted to only sharing directories we own.\n"
-			"\tAsk the administrator to add the line \"usershare owner only = false\" \n"
+			"\tAsk the administrator to add the line \"usershare owner only = False\" \n"
 			"\tto the [global] section of the smb.conf to allow this.\n",
 			us_path );
 		TALLOC_FREE(ctx);
@@ -823,7 +811,7 @@
 		}
 		if (!string_to_sid(&sid, name)) {
 			/* Convert to a SID */
-			NTSTATUS ntstatus = net_lookup_sid_from_name(c, ctx, name, &sid);
+			NTSTATUS ntstatus = net_lookup_sid_from_name(ctx, name, &sid);
 			if (!NT_STATUS_IS_OK(ntstatus)) {
 				d_fprintf(stderr, "net usershare add: cannot convert name \"%s\" to a SID. %s.",
 					name, get_friendly_nt_error_msg(ntstatus) );
@@ -932,11 +920,11 @@
 
 	close(tmpfd);
 
-	if (c->opt_long_list_entries) {
+	if (opt_long_list_entries) {
 		const char *my_argv[2];
 		my_argv[0] = sharename;
 		my_argv[1] = NULL;
-		net_usershare_info(c, 1, my_argv);
+		net_usershare_info(1, my_argv);
 	}
 
 	SAFE_FREE(sharename);
@@ -960,22 +948,18 @@
  List userlevel shares.
 ***************************************************************************/
 
-static int net_usershare_list(struct net_context *c, int argc,
-			      const char **argv)
+static int net_usershare_list(int argc, const char **argv)
 {
 	fstring wcard;
-	bool only_ours = true;
+	bool only_ours = True;
 	int ret = -1;
 	struct us_priv_info pi;
 	TALLOC_CTX *ctx;
 
 	fstrcpy(wcard, "*");
 
-	if (c->display_usage)
-		return net_usershare_list_usage(c, argc, argv);
-
-	if (c->opt_long_list_entries) {
-		only_ours = false;
+	if (opt_long_list_entries) {
+		only_ours = False;
 	}
 
 	switch (argc) {
@@ -985,7 +969,7 @@
 			fstrcpy(wcard, argv[0]);
 			break;
 		default:
-			return net_usershare_list_usage(c, argc, argv);
+			return net_usershare_list_usage(argc, argv);
 	}
 
 	strlower_m(wcard);
@@ -1005,49 +989,38 @@
 }
 
 /***************************************************************************
+ Handle "net usershare help *" subcommands.
+***************************************************************************/
+
+int net_usershare_help(int argc, const char **argv)
+{
+	struct functable func[] = {
+		{"ADD", net_usershare_add_usage},
+		{"DELETE", net_usershare_delete_usage},
+		{"INFO", net_usershare_info_usage},
+		{"LIST", net_usershare_list_usage},
+		{NULL, NULL}};
+
+	return net_run_function(argc, argv, func, net_usershare_usage);
+}
+
+/***************************************************************************
  Entry-point for all the USERSHARE functions.
 ***************************************************************************/
 
-int net_usershare(struct net_context *c, int argc, const char **argv)
+int net_usershare(int argc, const char **argv)
 {
 	SMB_STRUCT_DIR *dp;
 
 	struct functable func[] = {
-		{
-			"add",
-			net_usershare_add,
-			NET_TRANSPORT_LOCAL,
-			"Add/modify user defined share",
-			"net usershare add\n"
-			"    Add/modify user defined share"
-		},
-		{
-			"delete",
-			net_usershare_delete,
-			NET_TRANSPORT_LOCAL,
-			"Delete user defined share",
-			"net usershare delete\n"
-			"    Delete user defined share"
-		},
-		{
-			"info",
-			net_usershare_info,
-			NET_TRANSPORT_LOCAL,
-			"Display information about a user defined share",
-			"net usershare info\n"
-			"    Display information about a user defined share"
-		},
-		{
-			"list",
-			net_usershare_list,
-			NET_TRANSPORT_LOCAL,
-			"List user defined shares",
-			"net usershare list\n"
-			"    List user defined shares"
-		},
-		{NULL, NULL, 0, NULL, NULL}
+		{"ADD", net_usershare_add},
+		{"DELETE", net_usershare_delete},
+		{"INFO", net_usershare_info},
+		{"LIST", net_usershare_list},
+		{"HELP", net_usershare_help},
+		{NULL, NULL}
 	};
-
+	
 	if (lp_usershare_max_shares() == 0) {
 		d_fprintf(stderr, "net usershare: usershares are currently disabled\n");
 		return -1;
@@ -1069,5 +1042,5 @@
 	}
 	sys_closedir(dp);
 
-	return net_run_function(c, argc, argv, "net usershare", func);
+	return net_run_function(argc, argv, func, net_usershare_usage);
 }

Modified: branches/samba/upstream/source/utils/net_util.c
===================================================================
--- branches/samba/upstream/source/utils/net_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/net_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -2,7 +2,6 @@
  *  Unix SMB/CIFS implementation.
  *  Helper routines for net
  *  Copyright (C) Volker Lendecke 2006
- *  Copyright (C) Kai Blin 2008
  *
  *  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
@@ -22,8 +21,7 @@
 #include "includes.h"
 #include "utils/net.h"
 
-NTSTATUS net_rpc_lookup_name(struct net_context *c,
-			     TALLOC_CTX *mem_ctx, struct cli_state *cli,
+NTSTATUS net_rpc_lookup_name(TALLOC_CTX *mem_ctx, struct cli_state *cli,
 			     const char *name, const char **ret_domain,
 			     const char **ret_name, DOM_SID *ret_sid,
 			     enum lsa_SidType *ret_type)
@@ -37,14 +35,13 @@
 
 	ZERO_STRUCT(pol);
 
-	result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &lsa_pipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	lsa_pipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
+	if (lsa_pipe == NULL) {
 		d_fprintf(stderr, "Could not initialise lsa pipe\n");
 		return result;
 	}
 
-	result = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, false,
+	result = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False, 
 					SEC_RIGHTS_MAXIMUM_ALLOWED,
 					&pol);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -78,532 +75,7 @@
 	if (is_valid_policy_hnd(&pol)) {
 		rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
 	}
-	TALLOC_FREE(lsa_pipe);
+	cli_rpc_pipe_close(lsa_pipe);
 
 	return result;
 }
-
-/****************************************************************************
- Connect to \\server\service.
-****************************************************************************/
-
-NTSTATUS connect_to_service(struct net_context *c,
-					struct cli_state **cli_ctx,
-					struct sockaddr_storage *server_ss,
-					const char *server_name,
-					const char *service_name,
-					const char *service_type)
-{
-	NTSTATUS nt_status;
-	int flags = 0;
-
-	c->opt_password = net_prompt_pass(c, c->opt_user_name);
-
-	if (c->opt_kerberos) {
-		flags |= CLI_FULL_CONNECTION_USE_KERBEROS;
-	}
-
-	if (c->opt_kerberos && c->opt_password) {
-		flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS;
-	}
-
-	nt_status = cli_full_connection(cli_ctx, NULL, server_name,
-					server_ss, c->opt_port,
-					service_name, service_type,
-					c->opt_user_name, c->opt_workgroup,
-					c->opt_password, flags, Undefined, NULL);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		d_fprintf(stderr, "Could not connect to server %s\n", server_name);
-
-		/* Display a nicer message depending on the result */
-
-		if (NT_STATUS_V(nt_status) ==
-		    NT_STATUS_V(NT_STATUS_LOGON_FAILURE))
-			d_fprintf(stderr, "The username or password was not correct.\n");
-
-		if (NT_STATUS_V(nt_status) ==
-		    NT_STATUS_V(NT_STATUS_ACCOUNT_LOCKED_OUT))
-			d_fprintf(stderr, "The account was locked out.\n");
-
-		if (NT_STATUS_V(nt_status) ==
-		    NT_STATUS_V(NT_STATUS_ACCOUNT_DISABLED))
-			d_fprintf(stderr, "The account was disabled.\n");
-		return nt_status;
-	}
-
-	if (c->smb_encrypt) {
-		nt_status = cli_force_encryption(*cli_ctx,
-					c->opt_user_name,
-					c->opt_password,
-					c->opt_workgroup);
-
-		if (NT_STATUS_EQUAL(nt_status,NT_STATUS_NOT_SUPPORTED)) {
-			d_printf("Encryption required and "
-				"server that doesn't support "
-				"UNIX extensions - failing connect\n");
-		} else if (NT_STATUS_EQUAL(nt_status,NT_STATUS_UNKNOWN_REVISION)) {
-			d_printf("Encryption required and "
-				"can't get UNIX CIFS extensions "
-				"version from server.\n");
-		} else if (NT_STATUS_EQUAL(nt_status,NT_STATUS_UNSUPPORTED_COMPRESSION)) {
-			d_printf("Encryption required and "
-				"share %s doesn't support "
-				"encryption.\n", service_name);
-		} else if (!NT_STATUS_IS_OK(nt_status)) {
-			d_printf("Encryption required and "
-				"setup failed with error %s.\n",
-				nt_errstr(nt_status));
-		}
-
-		if (!NT_STATUS_IS_OK(nt_status)) {
-			cli_shutdown(*cli_ctx);
-			*cli_ctx = NULL;
-		}
-	}
-
-	return nt_status;
-}
-
-/****************************************************************************
- Connect to \\server\ipc$.
-****************************************************************************/
-
-NTSTATUS connect_to_ipc(struct net_context *c,
-			struct cli_state **cli_ctx,
-			struct sockaddr_storage *server_ss,
-			const char *server_name)
-{
-	return connect_to_service(c, cli_ctx, server_ss, server_name, "IPC$",
-				  "IPC");
-}
-
-/****************************************************************************
- Connect to \\server\ipc$ anonymously.
-****************************************************************************/
-
-NTSTATUS connect_to_ipc_anonymous(struct net_context *c,
-				struct cli_state **cli_ctx,
-				struct sockaddr_storage *server_ss,
-				const char *server_name)
-{
-	NTSTATUS nt_status;
-
-	nt_status = cli_full_connection(cli_ctx, c->opt_requester_name,
-					server_name, server_ss, c->opt_port,
-					"IPC$", "IPC",
-					"", "",
-					"", 0, Undefined, NULL);
-
-	if (NT_STATUS_IS_OK(nt_status)) {
-		return nt_status;
-	} else {
-		DEBUG(1,("Cannot connect to server (anonymously).  Error was %s\n", nt_errstr(nt_status)));
-		return nt_status;
-	}
-}
-
-/****************************************************************************
- Return malloced user at realm for krb5 login.
-****************************************************************************/
-
-static char *get_user_and_realm(const char *username)
-{
-	char *user_and_realm = NULL;
-
-	if (!username) {
-		return NULL;
-	}
-	if (strchr_m(username, '@')) {
-		user_and_realm = SMB_STRDUP(username);
-	} else {
-		if (asprintf(&user_and_realm, "%s@%s", username, lp_realm()) == -1) {
-			user_and_realm = NULL;
-		}
-	}
-	return user_and_realm;
-}
-
-/****************************************************************************
- Connect to \\server\ipc$ using KRB5.
-****************************************************************************/
-
-NTSTATUS connect_to_ipc_krb5(struct net_context *c,
-			struct cli_state **cli_ctx,
-			struct sockaddr_storage *server_ss,
-			const char *server_name)
-{
-	NTSTATUS nt_status;
-	char *user_and_realm = NULL;
-
-	/* FIXME: Should get existing kerberos ticket if possible. */
-	c->opt_password = net_prompt_pass(c, c->opt_user_name);
-	if (!c->opt_password) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	user_and_realm = get_user_and_realm(c->opt_user_name);
-	if (!user_and_realm) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	nt_status = cli_full_connection(cli_ctx, NULL, server_name,
-					server_ss, c->opt_port,
-					"IPC$", "IPC",
-					user_and_realm, c->opt_workgroup,
-					c->opt_password,
-					CLI_FULL_CONNECTION_USE_KERBEROS,
-					Undefined, NULL);
-
-	SAFE_FREE(user_and_realm);
-
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(1,("Cannot connect to server using kerberos.  Error was %s\n", nt_errstr(nt_status)));
-		return nt_status;
-	}
-
-        if (c->smb_encrypt) {
-		nt_status = cli_cm_force_encryption(*cli_ctx,
-					user_and_realm,
-					c->opt_password,
-					c->opt_workgroup,
-                                        "IPC$");
-		if (!NT_STATUS_IS_OK(nt_status)) {
-			cli_shutdown(*cli_ctx);
-			*cli_ctx = NULL;
-		}
-	}
-
-	return nt_status;
-}
-
-/**
- * Connect a server and open a given pipe
- *
- * @param cli_dst		A cli_state
- * @param pipe			The pipe to open
- * @param got_pipe		boolean that stores if we got a pipe
- *
- * @return Normal NTSTATUS return.
- **/
-NTSTATUS connect_dst_pipe(struct net_context *c, struct cli_state **cli_dst,
-			  struct rpc_pipe_client **pp_pipe_hnd,
-			  const struct ndr_syntax_id *interface)
-{
-	NTSTATUS nt_status;
-	char *server_name = SMB_STRDUP("127.0.0.1");
-	struct cli_state *cli_tmp = NULL;
-	struct rpc_pipe_client *pipe_hnd = NULL;
-
-	if (server_name == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	if (c->opt_destination) {
-		SAFE_FREE(server_name);
-		if ((server_name = SMB_STRDUP(c->opt_destination)) == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-
-	/* make a connection to a named pipe */
-	nt_status = connect_to_ipc(c, &cli_tmp, NULL, server_name);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		SAFE_FREE(server_name);
-		return nt_status;
-	}
-
-	nt_status = cli_rpc_pipe_open_noauth(cli_tmp, interface,
-					     &pipe_hnd);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(0, ("couldn't not initialize pipe\n"));
-		cli_shutdown(cli_tmp);
-		SAFE_FREE(server_name);
-		return nt_status;
-	}
-
-	*cli_dst = cli_tmp;
-	*pp_pipe_hnd = pipe_hnd;
-	SAFE_FREE(server_name);
-
-	return nt_status;
-}
-
-/****************************************************************************
- Use the local machine account (krb) and password for this session.
-****************************************************************************/
-
-int net_use_krb_machine_account(struct net_context *c)
-{
-	char *user_name = NULL;
-
-	if (!secrets_init()) {
-		d_fprintf(stderr, "ERROR: Unable to open secrets database\n");
-		exit(1);
-	}
-
-	c->opt_password = secrets_fetch_machine_password(
-				c->opt_target_workgroup, NULL, NULL);
-	if (asprintf(&user_name, "%s$@%s", global_myname(), lp_realm()) == -1) {
-		return -1;
-	}
-	c->opt_user_name = user_name;
-	return 0;
-}
-
-/****************************************************************************
- Use the machine account name and password for this session.
-****************************************************************************/
-
-int net_use_machine_account(struct net_context *c)
-{
-	char *user_name = NULL;
-
-	if (!secrets_init()) {
-		d_fprintf(stderr, "ERROR: Unable to open secrets database\n");
-		exit(1);
-	}
-
-	c->opt_password = secrets_fetch_machine_password(
-				c->opt_target_workgroup, NULL, NULL);
-	if (asprintf(&user_name, "%s$", global_myname()) == -1) {
-		return -1;
-	}
-	c->opt_user_name = user_name;
-	return 0;
-}
-
-bool net_find_server(struct net_context *c,
-			const char *domain,
-			unsigned flags,
-			struct sockaddr_storage *server_ss,
-			char **server_name)
-{
-	const char *d = domain ? domain : c->opt_target_workgroup;
-
-	if (c->opt_host) {
-		*server_name = SMB_STRDUP(c->opt_host);
-	}
-
-	if (c->opt_have_ip) {
-		*server_ss = c->opt_dest_ip;
-		if (!*server_name) {
-			char addr[INET6_ADDRSTRLEN];
-			print_sockaddr(addr, sizeof(addr), &c->opt_dest_ip);
-			*server_name = SMB_STRDUP(addr);
-		}
-	} else if (*server_name) {
-		/* resolve the IP address */
-		if (!resolve_name(*server_name, server_ss, 0x20))  {
-			DEBUG(1,("Unable to resolve server name\n"));
-			return false;
-		}
-	} else if (flags & NET_FLAGS_PDC) {
-		fstring dc_name;
-		struct sockaddr_storage pdc_ss;
-
-		if (!get_pdc_ip(d, &pdc_ss)) {
-			DEBUG(1,("Unable to resolve PDC server address\n"));
-			return false;
-		}
-
-		if (is_zero_addr(&pdc_ss)) {
-			return false;
-		}
-
-		if (!name_status_find(d, 0x1b, 0x20, &pdc_ss, dc_name)) {
-			return false;
-		}
-
-		*server_name = SMB_STRDUP(dc_name);
-		*server_ss = pdc_ss;
-	} else if (flags & NET_FLAGS_DMB) {
-		struct sockaddr_storage msbrow_ss;
-		char addr[INET6_ADDRSTRLEN];
-
-		/*  if (!resolve_name(MSBROWSE, &msbrow_ip, 1)) */
-		if (!resolve_name(d, &msbrow_ss, 0x1B))  {
-			DEBUG(1,("Unable to resolve domain browser via name lookup\n"));
-			return false;
-		}
-		*server_ss = msbrow_ss;
-		print_sockaddr(addr, sizeof(addr), server_ss);
-		*server_name = SMB_STRDUP(addr);
-	} else if (flags & NET_FLAGS_MASTER) {
-		struct sockaddr_storage brow_ss;
-		char addr[INET6_ADDRSTRLEN];
-		if (!resolve_name(d, &brow_ss, 0x1D))  {
-				/* go looking for workgroups */
-			DEBUG(1,("Unable to resolve master browser via name lookup\n"));
-			return false;
-		}
-		*server_ss = brow_ss;
-		print_sockaddr(addr, sizeof(addr), server_ss);
-		*server_name = SMB_STRDUP(addr);
-	} else if (!(flags & NET_FLAGS_LOCALHOST_DEFAULT_INSANE)) {
-		if (!interpret_string_addr(server_ss,
-					"127.0.0.1", AI_NUMERICHOST)) {
-			DEBUG(1,("Unable to resolve 127.0.0.1\n"));
-			return false;
-		}
-		*server_name = SMB_STRDUP("127.0.0.1");
-	}
-
-	if (!*server_name) {
-		DEBUG(1,("no server to connect to\n"));
-		return false;
-	}
-
-	return true;
-}
-
-bool net_find_pdc(struct sockaddr_storage *server_ss,
-		fstring server_name,
-		const char *domain_name)
-{
-	if (!get_pdc_ip(domain_name, server_ss)) {
-		return false;
-	}
-	if (is_zero_addr(server_ss)) {
-		return false;
-	}
-
-	if (!name_status_find(domain_name, 0x1b, 0x20, server_ss, server_name)) {
-		return false;
-	}
-
-	return true;
-}
-
-NTSTATUS net_make_ipc_connection(struct net_context *c, unsigned flags,
-				 struct cli_state **pcli)
-{
-	return net_make_ipc_connection_ex(c, c->opt_workgroup, NULL, NULL, flags, pcli);
-}
-
-NTSTATUS net_make_ipc_connection_ex(struct net_context *c ,const char *domain,
-				    const char *server,
-				    struct sockaddr_storage *pss,
-				    unsigned flags, struct cli_state **pcli)
-{
-	char *server_name = NULL;
-	struct sockaddr_storage server_ss;
-	struct cli_state *cli = NULL;
-	NTSTATUS nt_status;
-
-	if ( !server || !pss ) {
-		if (!net_find_server(c, domain, flags, &server_ss,
-				     &server_name)) {
-			d_fprintf(stderr, "Unable to find a suitable server "
-				"for domain %s\n", domain);
-			nt_status = NT_STATUS_UNSUCCESSFUL;
-			goto done;
-		}
-	} else {
-		server_name = SMB_STRDUP( server );
-		server_ss = *pss;
-	}
-
-	if (flags & NET_FLAGS_ANONYMOUS) {
-		nt_status = connect_to_ipc_anonymous(c, &cli, &server_ss,
-						     server_name);
-	} else {
-		nt_status = connect_to_ipc(c, &cli, &server_ss,
-					   server_name);
-	}
-
-	/* store the server in the affinity cache if it was a PDC */
-
-	if ( (flags & NET_FLAGS_PDC) && NT_STATUS_IS_OK(nt_status) )
-		saf_store( cli->server_domain, cli->desthost );
-
-	SAFE_FREE(server_name);
-	if (!NT_STATUS_IS_OK(nt_status)) {
-		d_fprintf(stderr, "Connection failed: %s\n",
-			  nt_errstr(nt_status));
-		cli = NULL;
-	}
-
-done:
-	if (pcli != NULL) {
-		*pcli = cli;
-	}
-	return nt_status;
-}
-
-/****************************************************************************
-****************************************************************************/
-
-const char *net_prompt_pass(struct net_context *c, const char *user)
-{
-	char *prompt = NULL;
-	const char *pass = NULL;
-
-	if (c->opt_password) {
-		return c->opt_password;
-	}
-
-	if (c->opt_machine_pass) {
-		return NULL;
-	}
-
-	if (c->opt_kerberos && !c->opt_user_specified) {
-		return NULL;
-	}
-
-	asprintf(&prompt, "Enter %s's password:", user);
-	if (!prompt) {
-		return NULL;
-	}
-
-	pass = getpass(prompt);
-	SAFE_FREE(prompt);
-
-	return pass;
-}
-
-int net_run_function(struct net_context *c, int argc, const char **argv,
-		      const char *whoami, struct functable *table)
-{
-	int i;
-
-	if (argc != 0) {
-		for (i=0; table[i].funcname != NULL; i++) {
-			if (StrCaseCmp(argv[0], table[i].funcname) == 0)
-				return table[i].fn(c, argc-1, argv+1);
-		}
-	}
-
-	if (c->display_usage == false) {
-		d_fprintf(stderr, "Invalid command: %s %s\n", whoami,
-			  (argc > 0)?argv[0]:"");
-	}
-	d_printf("Usage:\n");
-	for (i=0; table[i].funcname != NULL; i++) {
-		if(c->display_usage == false)
-			d_printf("%s %-15s %s\n", whoami, table[i].funcname,
-				 table[i].description);
-		else
-			d_printf("%s\n", table[i].usage);
-	}
-
-	return c->display_usage?0:-1;
-}
-
-void net_display_usage_from_functable(struct functable *table)
-{
-	int i;
-	for (i=0; table[i].funcname != NULL; i++) {
-		d_printf("%s\n", table[i].usage);
-	}
-}
-
-const char *net_share_type_str(int num_type)
-{
-	switch(num_type) {
-		case 0: return "Disk";
-		case 1: return "Print";
-		case 2: return "Dev";
-		case 3: return "IPC";
-		default: return "Unknown";
-	}
-}

Modified: branches/samba/upstream/source/utils/netlookup.c
===================================================================
--- branches/samba/upstream/source/utils/netlookup.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/netlookup.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -53,8 +53,7 @@
  Create the connection to localhost.
 ********************************************************/
 
-static struct con_struct *create_cs(struct net_context *c,
-				    TALLOC_CTX *ctx, NTSTATUS *perr)
+static struct con_struct *create_cs(TALLOC_CTX *ctx, NTSTATUS *perr)
 {
 	NTSTATUS nt_status;
 	struct sockaddr_storage loopback_ss;
@@ -98,12 +97,12 @@
 					&loopback_ss, 0,
 					"IPC$", "IPC",
 #if 0
-					c->opt_user_name,
-					c->opt_workgroup,
-					c->opt_password,
+					opt_user_name,
+					opt_workgroup,
+					opt_password,
 #else
 					"",
-					c->opt_workgroup,
+					opt_workgroup,
 					"",
 #endif
 					0,
@@ -112,31 +111,31 @@
 
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(2,("create_cs: Connect failed. Error was %s\n", nt_errstr(nt_status)));
-		cs->failed_connect = true;
+		cs->failed_connect = True;
 		cs->err = nt_status;
 		*perr = nt_status;
 		return NULL;
 	}
 
-	nt_status = cli_rpc_pipe_open_noauth(cs->cli,
-					&ndr_table_lsarpc.syntax_id,
-					&cs->lsapipe);
+	cs->lsapipe = cli_rpc_pipe_open_noauth(cs->cli,
+					PI_LSARPC,
+					&nt_status);
 
-	if (!NT_STATUS_IS_OK(nt_status)) {
+	if (cs->lsapipe == NULL) {
 		DEBUG(2,("create_cs: open LSA pipe failed. Error was %s\n", nt_errstr(nt_status)));
-		cs->failed_connect = true;
+		cs->failed_connect = True;
 		cs->err = nt_status;
 		*perr = nt_status;
 		return NULL;
 	}
 
-	nt_status = rpccli_lsa_open_policy(cs->lsapipe, ctx, true,
+	nt_status = rpccli_lsa_open_policy(cs->lsapipe, ctx, True,
 				SEC_RIGHTS_MAXIMUM_ALLOWED,
 				&cs->pol);
 
 	if (!NT_STATUS_IS_OK(nt_status)) {
 		DEBUG(2,("create_cs: rpccli_lsa_open_policy failed. Error was %s\n", nt_errstr(nt_status)));
-		cs->failed_connect = true;
+		cs->failed_connect = True;
 		cs->err = nt_status;
 		*perr = nt_status;
 		return NULL;
@@ -153,8 +152,7 @@
  The local smbd will also ask winbindd for us, so we don't have to.
 ********************************************************/
 
-NTSTATUS net_lookup_name_from_sid(struct net_context *c,
-				TALLOC_CTX *ctx,
+NTSTATUS net_lookup_name_from_sid(TALLOC_CTX *ctx,
 				DOM_SID *psid,
 				const char **ppdomain,
 				const char **ppname)
@@ -168,7 +166,7 @@
 	*ppdomain = NULL;
 	*ppname = NULL;
 
-	csp = create_cs(c, ctx, &nt_status);
+	csp = create_cs(ctx, &nt_status);
 	if (csp == NULL) {
 		return nt_status;
 	}
@@ -196,15 +194,14 @@
  Do a lookup_names call to localhost.
 ********************************************************/
 
-NTSTATUS net_lookup_sid_from_name(struct net_context *c, TALLOC_CTX *ctx,
-				  const char *full_name, DOM_SID *pret_sid)
+NTSTATUS net_lookup_sid_from_name(TALLOC_CTX *ctx, const char *full_name, DOM_SID *pret_sid)
 {
 	NTSTATUS nt_status;
 	struct con_struct *csp = NULL;
 	DOM_SID *sids = NULL;
 	enum lsa_SidType *types = NULL;
 
-	csp = create_cs(c, ctx, &nt_status);
+	csp = create_cs(ctx, &nt_status);
 	if (csp == NULL) {
 		return nt_status;
 	}

Modified: branches/samba/upstream/source/utils/ntlm_auth_diagnostics.c
===================================================================
--- branches/samba/upstream/source/utils/ntlm_auth_diagnostics.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/ntlm_auth_diagnostics.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -445,7 +445,6 @@
 	DATA_BLOB lm_response = data_blob_null;
 	char *password;
 	smb_ucs2_t *nt_response_ucs2;
-	size_t converted_size;
 
 	uchar user_session_key[16];
 	uchar lm_key[16];
@@ -458,9 +457,7 @@
 	flags |= WBFLAG_PAM_LMKEY;
 	flags |= WBFLAG_PAM_USER_SESSION_KEY;
 
-	if (!push_ucs2_allocate(&nt_response_ucs2, opt_password,
-				&converted_size))
-	{
+	if ((push_ucs2_allocate(&nt_response_ucs2, opt_password)) == -1) {
 		DEBUG(0, ("push_ucs2_allocate failed!\n"));
 		exit(1);
 	}

Deleted: branches/samba/upstream/source/utils/ntlm_auth_proto.h
===================================================================
--- branches/samba/upstream/source/utils/ntlm_auth_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/ntlm_auth_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,48 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _NTLM_AUTH_PROTO_H_
-#define _NTLM_AUTH_PROTO_H_
-
-
-/* The following definitions come from utils/ntlm_auth.c  */
-
-const char *get_winbind_domain(void);
-const char *get_winbind_netbios_name(void);
-DATA_BLOB get_challenge(void) ;
-NTSTATUS contact_winbind_auth_crap(const char *username,
-				   const char *domain,
-				   const char *workstation,
-				   const DATA_BLOB *challenge,
-				   const DATA_BLOB *lm_response,
-				   const DATA_BLOB *nt_response,
-				   uint32 flags,
-				   uint8 lm_key[8],
-				   uint8 user_session_key[16],
-				   char **error_string,
-				   char **unix_name);
-
-/* The following definitions come from utils/ntlm_auth_diagnostics.c  */
-
-bool diagnose_ntlm_auth(void);
-
-#endif /*  _NTLM_AUTH_PROTO_H_  */

Deleted: branches/samba/upstream/source/utils/passwd_proto.h
===================================================================
--- branches/samba/upstream/source/utils/passwd_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/passwd_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,32 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _PASSWD_PROTO_H_
-#define _PASSWD_PROTO_H_
-
-
-/* The following definitions come from utils/passwd_util.c  */
-
-char *stdin_new_passwd( void);
-char *get_pass( const char *prompt, bool stdin_get);
-
-#endif /*  _PASSWD_PROTO_H_  */

Modified: branches/samba/upstream/source/utils/smbcacls.c
===================================================================
--- branches/samba/upstream/source/utils/smbcacls.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/smbcacls.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -80,9 +80,8 @@
 		return cli_nt_error(cli);
 	}
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &p);
-	if (!NT_STATUS_IS_OK(status)) {
+	p = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &status);
+	if (p == NULL) {
 		goto fail;
 	}
 
@@ -104,7 +103,9 @@
 
 	status = NT_STATUS_OK;
  fail:
-	TALLOC_FREE(p);
+	if (p != NULL) {
+		cli_rpc_pipe_close(p);
+	}
 	cli_tdis(cli);
 	cli->cnum = orig_cnum;
 	TALLOC_FREE(frame);
@@ -128,9 +129,8 @@
 		return cli_nt_error(cli);
 	}
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
-					  &p);
-	if (!NT_STATUS_IS_OK(status)) {
+	p = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &status);
+	if (p == NULL) {
 		goto fail;
 	}
 
@@ -151,7 +151,9 @@
 
 	status = NT_STATUS_OK;
  fail:
-	TALLOC_FREE(p);
+	if (p != NULL) {
+		cli_rpc_pipe_close(p);
+	}
 	cli_tdis(cli);
 	cli->cnum = orig_cnum;
 	TALLOC_FREE(frame);

Modified: branches/samba/upstream/source/utils/smbcontrol.c
===================================================================
--- branches/samba/upstream/source/utils/smbcontrol.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/smbcontrol.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -865,6 +865,13 @@
 		return False;
 	}
 
+	if (!lp_winbind_offline_logon()) {
+		fprintf(stderr, "The parameter \"winbind offline logon\" must "
+			"be set in the [global] section of smb.conf for this "
+			"command to be allowed.\n");
+		return False;
+	}
+
 	/* Remove the entry in the winbindd_cache tdb to tell a later
 	   starting winbindd that we're online. */
 
@@ -894,6 +901,13 @@
 		return False;
 	}
 
+	if (!lp_winbind_offline_logon()) {
+		fprintf(stderr, "The parameter \"winbind offline logon\" must "
+			"be set in the [global] section of smb.conf for this "
+			"command to be allowed.\n");
+		return False;
+	}
+
 	/* Create an entry in the winbindd_cache tdb to tell a later
 	   starting winbindd that we're offline. We may actually create
 	   it here... */
@@ -1228,9 +1242,9 @@
 	struct server_id result = {-1};
 	pid_t pid;
 
-	/* Zero is a special return value for broadcast to all processes */
+	/* Zero is a special return value for broadcast smbd */
 
-	if (strequal(dest, "all")) {
+	if (strequal(dest, "smbd")) {
 		return interpret_pid(MSG_BROADCAST_PID_STR);
 	}
 
@@ -1245,6 +1259,7 @@
 		dest = "winbindd";
 	}
 
+	
 	if (!(strequal(dest, "winbindd") || strequal(dest, "nmbd"))) {
 		/* Check for numeric pid number */
 
@@ -1265,7 +1280,7 @@
 	fprintf(stderr,"Can't find pid for destination '%s'\n", dest);
 
 	return result;
-}
+}	
 
 /* Execute smbcontrol command */
 

Modified: branches/samba/upstream/source/utils/smbcquotas.c
===================================================================
--- branches/samba/upstream/source/utils/smbcquotas.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/smbcquotas.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -49,10 +49,8 @@
 	if (!cli_ipc) {
 		NTSTATUS ret;
 		cli_ipc = connect_one("IPC$");
-		ret = cli_rpc_pipe_open_noauth(cli_ipc,
-					       &ndr_table_lsarpc.syntax_id,
-					       &global_pipe_hnd);
-		if (!NT_STATUS_IS_OK(ret)) {
+		global_pipe_hnd = cli_rpc_pipe_open_noauth(cli_ipc, PI_LSARPC, &ret);
+		if (!global_pipe_hnd) {
 				return False;
 		}
 	}

Modified: branches/samba/upstream/source/utils/smbtree.c
===================================================================
--- branches/samba/upstream/source/utils/smbtree.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/smbtree.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -163,10 +163,9 @@
 		return False;
 	}
 
-	status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc.syntax_id,
-					  &pipe_hnd);
+	pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &status);
 
-	if (!NT_STATUS_IS_OK(status)) {
+	if (pipe_hnd == NULL) {
 		DEBUG(10, ("Could not connect to srvsvc pipe: %s\n",
 			   nt_errstr(status)));
 		TALLOC_FREE(mem_ctx);
@@ -180,7 +179,7 @@
 	info_ctr.ctr.ctr1 = &ctr1;
 
 	status = rpccli_srvsvc_NetShareEnumAll(pipe_hnd, mem_ctx,
-					       pipe_hnd->desthost,
+					       pipe_hnd->cli->desthost,
 					       &info_ctr,
 					       0xffffffff,
 					       &total_entries,
@@ -189,7 +188,7 @@
 
 	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(werr)) {
 		TALLOC_FREE(mem_ctx);
-		TALLOC_FREE(pipe_hnd);
+		cli_rpc_pipe_close(pipe_hnd);
 		return False;
 	}
 
@@ -199,7 +198,7 @@
 	}
 
 	TALLOC_FREE(mem_ctx);
-	TALLOC_FREE(pipe_hnd);
+	cli_rpc_pipe_close(pipe_hnd);
 	return True;
 }
 

Modified: branches/samba/upstream/source/utils/status.c
===================================================================
--- branches/samba/upstream/source/utils/status.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/status.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -375,11 +375,7 @@
 	msg_ctx = messaging_init(NULL, procid_self(),
 				 event_context_init(NULL));
 
-	if (msg_ctx == NULL) {
-		fprintf(stderr, "messaging_init failed\n");
-		ret = -1;
-		goto done;
-	}
+	db_tdb2_setup_messaging(msg_ctx, true);
 
 	if (!lp_load(get_dyn_CONFIGFILE(),False,False,False,True)) {
 		fprintf(stderr, "Can't load %s - run testparm to debug it\n",

Modified: branches/samba/upstream/source/utils/status_profile.c
===================================================================
--- branches/samba/upstream/source/utils/status_profile.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/status_profile.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -356,6 +356,8 @@
 	d_printf("get_nt_acl_time:                %u\n", profile_p->get_nt_acl_time);
 	d_printf("fget_nt_acl_count:              %u\n", profile_p->fget_nt_acl_count);
 	d_printf("fget_nt_acl_time:               %u\n", profile_p->fget_nt_acl_time);
+	d_printf("set_nt_acl_count:               %u\n", profile_p->set_nt_acl_count);
+	d_printf("set_nt_acl_time:                %u\n", profile_p->set_nt_acl_time);
 	d_printf("fset_nt_acl_count:              %u\n", profile_p->fset_nt_acl_count);
 	d_printf("fset_nt_acl_time:               %u\n", profile_p->fset_nt_acl_time);
 	d_printf("chmod_acl_count:                %u\n", profile_p->chmod_acl_count);

Modified: branches/samba/upstream/source/utils/testparm.c
===================================================================
--- branches/samba/upstream/source/utils/testparm.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/utils/testparm.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -296,19 +296,12 @@
 		{"parameter-name", '\0', POPT_ARG_STRING, &parameter_name, 0, "Limit testparm to a named parameter" },
 		{"section-name", '\0', POPT_ARG_STRING, &section_name, 0, "Limit testparm to a named section" },
 		POPT_COMMON_VERSION
-		POPT_COMMON_DEBUGLEVEL
 		POPT_TABLEEND
 	};
 
 	TALLOC_CTX *frame = talloc_stackframe();
 
 	load_case_tables();
-	/*
-	 * Set the default debug level to 2.
-	 * Allow it to be overridden by the command line,
-	 * not by smb.conf.
-	 */
-	DEBUGLEVEL_CLASS[DBGC_ALL] = 2;
 
 	pc = poptGetContext(NULL, argc, argv, long_options, 
 			    POPT_CONTEXT_KEEP_FIRST);
@@ -339,7 +332,7 @@
 	}
 
 	dbf = x_stderr;
-	/* Don't let the debuglevel be changed by smb.conf. */
+	DEBUGLEVEL = 2;
 	AllowDebugChange = False;
 
 	fprintf(stderr,"Load smb config files from %s\n",config_file);

Modified: branches/samba/upstream/source/web/statuspage.c
===================================================================
--- branches/samba/upstream/source/web/statuspage.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/web/statuspage.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -43,10 +43,9 @@
 {
 	/* show machine name rather PID on table "Open Files"? */
 	if (PID_or_Machine) {
-		PIDMAP *p, *next;
+		PIDMAP *p;
 
-		for (p = pidmap; p != NULL; p = next) {
-			next = p->next;
+		for (p = pidmap; p != NULL; ) {
 			DLIST_REMOVE(pidmap, p);
 			SAFE_FREE(p->machine);
 			SAFE_FREE(p);
@@ -124,7 +123,6 @@
 {
 	char           *utf8_fname;
 	int deny_mode;
-	size_t converted_size;
 
 	if (!is_valid_share_mode_entry(e)) {
 		return;
@@ -171,7 +169,7 @@
 		printf("NONE            ");
 	printf("</td>");
 
-	push_utf8_allocate(&utf8_fname, fname, &converted_size);
+	push_utf8_allocate(&utf8_fname, fname);
 	printf("<td>%s</td><td>%s</td></tr>\n",
 	       utf8_fname,tstring(talloc_tos(),e->time.tv_sec));
 	SAFE_FREE(utf8_fname);

Modified: branches/samba/upstream/source/web/swat.c
===================================================================
--- branches/samba/upstream/source/web/swat.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/web/swat.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -228,7 +228,6 @@
 	int i;
 	void *ptr = parm->ptr;
 	char *utf8_s1, *utf8_s2;
-	size_t converted_size;
 	TALLOC_CTX *ctx = talloc_stackframe();
 
 	if (parm->p_class == P_LOCAL && snum >= 0) {
@@ -253,12 +252,12 @@
 			for (;*list;list++) {
 				/* enclose in HTML encoded quotes if the string contains a space */
 				if ( strchr_m(*list, ' ') ) {
-					push_utf8_allocate(&utf8_s1, *list, &converted_size);
-					push_utf8_allocate(&utf8_s2, ((*(list+1))?", ":""), &converted_size);
+					push_utf8_allocate(&utf8_s1, *list);
+					push_utf8_allocate(&utf8_s2, ((*(list+1))?", ":""));
 					printf("&quot;%s&quot;%s", utf8_s1, utf8_s2);
 				} else {
-					push_utf8_allocate(&utf8_s1, *list, &converted_size);
-					push_utf8_allocate(&utf8_s2, ((*(list+1))?", ":""), &converted_size);
+					push_utf8_allocate(&utf8_s1, *list);
+					push_utf8_allocate(&utf8_s2, ((*(list+1))?", ":""));
 					printf("%s%s", utf8_s1, utf8_s2);
 				}
 				SAFE_FREE(utf8_s1);
@@ -283,7 +282,7 @@
 
 	case P_STRING:
 	case P_USTRING:
-		push_utf8_allocate(&utf8_s1, *(char **)ptr, &converted_size);
+		push_utf8_allocate(&utf8_s1, *(char **)ptr);
 		printf("<input type=text size=40 name=\"parm_%s\" value=\"%s\">",
 		       make_parm_name(parm->label), fix_quotes(ctx, utf8_s1));
 		SAFE_FREE(utf8_s1);
@@ -897,7 +896,6 @@
 	int i;
 	int mode = 0;
 	unsigned int parm_filter = FLAG_BASIC;
-	size_t converted_size;
 
 	if (share)
 		snum = lp_servicenumber(share);
@@ -956,7 +954,7 @@
 	for (i=0;i<lp_numservices();i++) {
 		s = lp_servicename(i);
 		if (s && (*s) && strcmp(s,"IPC$") && !lp_print_ok(i)) {
-			push_utf8_allocate(&utf8_s, s, &converted_size);
+			push_utf8_allocate(&utf8_s, s);
 			printf("<option %s value=\"%s\">%s\n", 
 			       (share && strcmp(share,s)==0)?"SELECTED":"",
 			       utf8_s, utf8_s);

Deleted: branches/samba/upstream/source/web/swat_proto.h
===================================================================
--- branches/samba/upstream/source/web/swat_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/web/swat_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,70 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _SWAT_PROTO_H_
-#define _SWAT_PROTO_H_
-
-
-/* The following definitions come from web/cgi.c  */
-
-void cgi_load_variables(void);
-const char *cgi_variable(const char *name);
-const char *cgi_variable_nonull(const char *name);
-bool am_root(void);
-char *cgi_user_name(void);
-void cgi_setup(const char *rootdir, int auth_required);
-const char *cgi_baseurl(void);
-const char *cgi_pathinfo(void);
-const char *cgi_remote_host(void);
-const char *cgi_remote_addr(void);
-bool cgi_waspost(void);
-
-/* The following definitions come from web/diagnose.c  */
-
-bool winbindd_running(void);
-bool nmbd_running(void);
-bool smbd_running(void);
-
-/* The following definitions come from web/neg_lang.c  */
-
-int web_open(const char *fname, int flags, mode_t mode);
-void web_set_lang(const char *lang_string);
-
-/* The following definitions come from web/startstop.c  */
-
-void start_smbd(void);
-void start_nmbd(void);
-void start_winbindd(void);
-void stop_smbd(void);
-void stop_nmbd(void);
-void stop_winbindd(void);
-void kill_pid(struct server_id pid);
-
-/* The following definitions come from web/statuspage.c  */
-
-void status_page(void);
-
-/* The following definitions come from web/swat.c  */
-
-const char *lang_msg_rotate(TALLOC_CTX *ctx, const char *msgid);
-
-#endif /*  _SWAT_PROTO_H_  */

Modified: branches/samba/upstream/source/winbindd/idmap.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,59 +28,53 @@
 
 static_decl_idmap;
 
-/**
- * Pointer to the backend methods. Modules register themselves here via
- * smb_register_idmap.
- */
-
 struct idmap_backend {
 	const char *name;
 	struct idmap_methods *methods;
 	struct idmap_backend *prev, *next;
 };
-static struct idmap_backend *backends = NULL;
 
-/**
- * Pointer to the alloc backend methods. Modules register themselves here via
- * smb_register_idmap_alloc.
- */
 struct idmap_alloc_backend {
 	const char *name;
 	struct idmap_alloc_methods *methods;
 	struct idmap_alloc_backend *prev, *next;
 };
-static struct idmap_alloc_backend *alloc_backends = NULL;
 
-/**
- * The idmap alloc context that is configured via "idmap alloc
- * backend". Defaults to "idmap backend" in case the module (tdb, ldap) also
- * provides alloc methods.
- */
+struct idmap_cache_ctx;
+
 struct idmap_alloc_context {
+	const char *params;
 	struct idmap_alloc_methods *methods;
+	bool initialized;
 };
-static struct idmap_alloc_context *idmap_alloc_ctx = NULL;
 
-/**
- * Default idmap domain configured via "idmap backend".
- */
-static struct idmap_domain *default_idmap_domain;
+static TALLOC_CTX *idmap_ctx = NULL;
+static struct idmap_cache_ctx *idmap_cache;
 
-/**
- * Passdb idmap domain, not configurable. winbind must always give passdb a
- * chance to map ids.
- */
-static struct idmap_domain *passdb_idmap_domain;
-
-/**
- * List of specially configured idmap domains. This list is filled on demand
- * in the winbind idmap child when the parent winbind figures out via the
- * special range parameter or via the domain SID that a special "idmap config
- * domain" configuration is present.
- */
+static struct idmap_backend *backends = NULL;
 static struct idmap_domain **idmap_domains = NULL;
 static int num_domains = 0;
+static int pdb_dom_num = -1;
+static int def_dom_num = -1;
 
+static struct idmap_alloc_backend *alloc_backends = NULL;
+static struct idmap_alloc_context *idmap_alloc_ctx = NULL;
+
+#define IDMAP_CHECK_RET(ret) do { \
+	if ( ! NT_STATUS_IS_OK(ret)) { \
+		DEBUG(2, ("ERROR: NTSTATUS = 0x%08x\n", NT_STATUS_V(ret))); \
+			goto done; \
+	} } while(0)
+#define IDMAP_REPORT_RET(ret) do { \
+	if ( ! NT_STATUS_IS_OK(ret)) { \
+		DEBUG(2, ("ERROR: NTSTATUS = 0x%08x\n", NT_STATUS_V(ret))); \
+	} } while(0)
+#define IDMAP_CHECK_ALLOC(mem) do { \
+	if (!mem) { \
+		DEBUG(0, ("Out of memory!\n")); ret = NT_STATUS_NO_MEMORY; \
+		goto done; \
+	} } while(0)
+
 static struct idmap_methods *get_methods(const char *name)
 {
 	struct idmap_backend *b;
@@ -113,11 +107,6 @@
 	     get_global_winbindd_state_offline() );
 }
 
-bool idmap_is_online(void)
-{
-	return !idmap_is_offline();
-}
-
 /**********************************************************************
  Allow a module to register itself as a method.
 **********************************************************************/
@@ -125,8 +114,13 @@
 NTSTATUS smb_register_idmap(int version, const char *name,
 			    struct idmap_methods *methods)
 {
+	struct idmap_methods *test;
 	struct idmap_backend *entry;
 
+	if (!idmap_ctx) {
+		return NT_STATUS_INTERNAL_DB_ERROR;
+	}
+
  	if ((version != SMB_IDMAP_INTERFACE_VERSION)) {
 		DEBUG(0, ("Failed to register idmap module.\n"
 		          "The module was compiled against "
@@ -143,24 +137,20 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	for (entry = backends; entry != NULL; entry = entry->next) {
-		if (strequal(entry->name, name)) {
-			DEBUG(0,("Idmap module %s already registered!\n",
-				 name));
-			return NT_STATUS_OBJECT_NAME_COLLISION;
-		}
+	test = get_methods(name);
+	if (test) {
+		DEBUG(0,("Idmap module %s already registered!\n", name));
+		return NT_STATUS_OBJECT_NAME_COLLISION;
 	}
 
-	entry = talloc(NULL, struct idmap_backend);
+	entry = talloc(idmap_ctx, struct idmap_backend);
 	if ( ! entry) {
 		DEBUG(0,("Out of memory!\n"));
-		TALLOC_FREE(entry);
 		return NT_STATUS_NO_MEMORY;
 	}
-	entry->name = talloc_strdup(entry, name);
+	entry->name = talloc_strdup(idmap_ctx, name);
 	if ( ! entry->name) {
 		DEBUG(0,("Out of memory!\n"));
-		TALLOC_FREE(entry);
 		return NT_STATUS_NO_MEMORY;
 	}
 	entry->methods = methods;
@@ -171,7 +161,7 @@
 }
 
 /**********************************************************************
- Allow a module to register itself as an alloc method.
+ Allow a module to register itself as a method.
 **********************************************************************/
 
 NTSTATUS smb_register_idmap_alloc(int version, const char *name,
@@ -180,6 +170,10 @@
 	struct idmap_alloc_methods *test;
 	struct idmap_alloc_backend *entry;
 
+	if (!idmap_ctx) {
+		return NT_STATUS_INTERNAL_DB_ERROR;
+	}
+
  	if ((version != SMB_IDMAP_INTERFACE_VERSION)) {
 		DEBUG(0, ("Failed to register idmap alloc module.\n"
 		          "The module was compiled against "
@@ -202,12 +196,12 @@
 		return NT_STATUS_OBJECT_NAME_COLLISION;
 	}
 
-	entry = talloc(NULL, struct idmap_alloc_backend);
+	entry = talloc(idmap_ctx, struct idmap_alloc_backend);
 	if ( ! entry) {
 		DEBUG(0,("Out of memory!\n"));
 		return NT_STATUS_NO_MEMORY;
 	}
-	entry->name = talloc_strdup(entry, name);
+	entry->name = talloc_strdup(idmap_ctx, name);
 	if ( ! entry->name) {
 		DEBUG(0,("Out of memory!\n"));
 		return NT_STATUS_NO_MEMORY;
@@ -231,560 +225,1349 @@
 	return 0;
 }
 
-static bool parse_idmap_module(TALLOC_CTX *mem_ctx, const char *param,
-			       char **pmodulename, char **pargs)
+/**************************************************************************
+ Shutdown.
+**************************************************************************/
+
+NTSTATUS idmap_close(void)
 {
-	char *modulename;
-	char *args;
-
-	if (strncmp(param, "idmap_", 6) == 0) {
-		param += 6;
-		DEBUG(1, ("idmap_init: idmap backend uses deprecated "
-			  "'idmap_' prefix.  Please replace 'idmap_%s' by "
-			  "'%s'\n", param, param));
+	/* close the alloc backend first before freeing idmap_ctx */
+	if (idmap_alloc_ctx) {
+		idmap_alloc_ctx->methods->close_fn();
+		idmap_alloc_ctx->methods = NULL;
 	}
+	alloc_backends = NULL;
 
-	modulename = talloc_strdup(mem_ctx, param);
-	if (modulename == NULL) {
-		return false;
+	/* this talloc_free call will fire the talloc destructors
+	 * that will free all active backends resources */
+	TALLOC_FREE(idmap_ctx);
+	idmap_cache = NULL;
+	idmap_domains = NULL;
+	backends = NULL;
+
+	return NT_STATUS_OK;
+}
+
+/****************************************************************************
+ ****************************************************************************/
+
+NTSTATUS idmap_init_cache(void)
+{
+	/* Always initialize the cache.  We'll have to delay initialization
+	   of backends if we are offline */
+
+	if ( idmap_ctx ) {
+		return NT_STATUS_OK;
 	}
 
-	args = strchr(modulename, ':');
-	if (args == NULL) {
-		*pmodulename = modulename;
-		*pargs = NULL;
-		return true;
+	if ( (idmap_ctx = talloc_named_const(NULL, 0, "idmap_ctx")) == NULL ) {
+		return NT_STATUS_NO_MEMORY;
 	}
 
-	*args = '\0';
-
-	args = talloc_strdup(mem_ctx, args+1);
-	if (args == NULL) {
-		TALLOC_FREE(modulename);
-		return false;
+	if ( (idmap_cache = idmap_cache_init(idmap_ctx)) == NULL ) {
+		return NT_STATUS_UNSUCCESSFUL;
 	}
 
-	*pmodulename = modulename;
-	*pargs = args;
-	return true;
+	return NT_STATUS_OK;
 }
 
-/**
- * Initialize a domain structure
- * @param[in] mem_ctx		memory context for the result
- * @param[in] domainname	which domain is this for
- * @param[in] modulename	which backend module
- * @param[in] params		parameter to pass to the init function
- * @result The initialized structure
- */
-static struct idmap_domain *idmap_init_domain(TALLOC_CTX *mem_ctx,
-					      const char *domainname,
-					      const char *modulename,
-					      const char *params)
+/****************************************************************************
+ ****************************************************************************/
+
+NTSTATUS idmap_init(void)
 {
-	struct idmap_domain *result;
-	NTSTATUS status;
+	NTSTATUS ret;
+	static NTSTATUS idmap_init_status = NT_STATUS_UNSUCCESSFUL;
+	struct idmap_domain *dom;
+	char *compat_backend = NULL;
+	char *compat_params = NULL;
+	const char **dom_list = NULL;
+	const char *default_domain = NULL;
+	char *alloc_backend = NULL;
+	bool default_already_defined = False;
+	bool pri_dom_is_in_list = False;
+	int compat = 0;
+	int i;
 
-	result = talloc_zero(mem_ctx, struct idmap_domain);
-	if (result == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		return NULL;
+	ret = idmap_init_cache();
+	if (!NT_STATUS_IS_OK(ret))
+		return ret;
+
+	if (NT_STATUS_IS_OK(idmap_init_status)) {
+		return NT_STATUS_OK;
 	}
 
-	result->name = talloc_strdup(result, domainname);
-	if (result->name == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		goto fail;
+	/* We can't reliably call intialization code here unless
+	   we are online.  But return NT_STATUS_OK so the upper
+	   level code doesn't abort idmap lookups. */
+
+	if ( get_global_winbindd_state_offline() ) {
+		idmap_init_status = NT_STATUS_FILE_IS_OFFLINE;
+		return NT_STATUS_OK;
 	}
 
-	result->methods = get_methods(modulename);
-	if (result->methods == NULL) {
-		DEBUG(3, ("idmap backend %s not found\n", modulename));
+	static_init_idmap;
 
-		status = smb_probe_module("idmap", modulename);
-		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(3, ("Could not probe idmap module %s\n",
-				  modulename));
-			goto fail;
+	dom_list = lp_idmap_domains();
+
+	if ( lp_idmap_backend() ) {
+       		const char **compat_list = lp_idmap_backend();
+		char *p = NULL;
+		const char *q = NULL;
+
+		if ( dom_list ) {
+			DEBUG(0, ("WARNING: idmap backend and idmap domains are"
+				  " mutually exclusive!\n"));
+			DEBUGADD(0,("idmap backend option will be IGNORED!\n"));
+		} else {
+			compat = 1;
+
+			compat_backend = talloc_strdup(idmap_ctx, *compat_list);
+
+			/* strip any leading idmap_ prefix of */
+			if (strncmp(*compat_list, "idmap_", 6) == 0 ) {
+				q = *compat_list += 6;
+				DEBUG(0, ("WARNING: idmap backend uses obsolete"
+					  " and deprecated 'idmap_' prefix.\n"
+					  "Please replace 'idmap_%s' by '%s' in"
+					  " %s\n", q, q, get_dyn_CONFIGFILE()));
+				compat_backend = talloc_strdup(idmap_ctx, q);
+			} else {
+				compat_backend = talloc_strdup(idmap_ctx,
+							       *compat_list);
+			}
+
+			if (compat_backend == NULL ) {
+				ret = NT_STATUS_NO_MEMORY;
+				goto done;
+			}
+
+			/* separate the backend and module arguements */
+			if ((p = strchr(compat_backend, ':')) != NULL) {
+				*p = '\0';
+				compat_params = p + 1;
+			}
 		}
+	} else if ( !dom_list ) {
+		/* Back compatible: without idmap domains and explicit
+		   idmap backend.  Taking default idmap backend: tdb */
 
-		result->methods = get_methods(modulename);
+		compat = 1;
+		compat_backend = talloc_strdup( idmap_ctx, "tdb");
+		compat_params = compat_backend;
 	}
-	if (result->methods == NULL) {
-		DEBUG(1, ("idmap backend %s not found\n", modulename));
-		goto fail;
-	}
 
-	status = result->methods->init(result, params);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(1, ("idmap initialization returned %s\n",
-			  nt_errstr(status)));
-		goto fail;
+	if ( ! dom_list) {
+		/* generate a list with our main domain */
+		const char ** dl;
+
+		dl = talloc_array(idmap_ctx, const char *, 2);
+		if (dl == NULL) {
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+		dl[0] = talloc_strdup(dl, lp_workgroup());
+		if (dl[0] == NULL) {
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+
+		/* terminate */
+		dl[1] = NULL;
+
+		dom_list = dl;
+		default_domain = dl[0];
 	}
 
-	talloc_set_destructor(result, close_domain_destructor);
+	/***************************
+	 * initialize idmap domains
+	 */
+	DEBUG(1, ("Initializing idmap domains\n"));
 
-	return result;
+	for (i=0, num_domains=0; dom_list[i]; i++) {
+	       	const char *parm_backend;
+		char *config_option;
 
-fail:
-	TALLOC_FREE(result);
-	return NULL;
-}
+		/* ignore BUILTIN and local MACHINE domains */
+		if (strequal(dom_list[i], "BUILTIN")
+		     || strequal(dom_list[i], get_global_sam_name()))
+		{
+			DEBUG(0,("idmap_init: Ignoring domain %s\n",
+				 dom_list[i]));
+			continue;
+		}
 
-/**
- * Initialize the default domain structure
- * @param[in] mem_ctx		memory context for the result
- * @result The default domain structure
- *
- * This routine takes the module name from the "idmap backend" parameter,
- * passing a possible parameter like ldap:ldap://ldap-url/ to the module.
- */
+		if ((dom_list[i] != default_domain) &&
+		    strequal(dom_list[i], lp_workgroup())) {
+			pri_dom_is_in_list = True;
+		}
+		/* init domain */
 
-static struct idmap_domain *idmap_init_default_domain(TALLOC_CTX *mem_ctx)
-{
-	struct idmap_domain *result;
-	char *modulename;
-	char *params;
+		dom = TALLOC_ZERO_P(idmap_ctx, struct idmap_domain);
+		IDMAP_CHECK_ALLOC(dom);
 
-	DEBUG(10, ("idmap_init_default_domain: calling static_init_idmap\n"));
+		dom->name = talloc_strdup(dom, dom_list[i]);
+		IDMAP_CHECK_ALLOC(dom->name);
 
-	static_init_idmap;
+		config_option = talloc_asprintf(dom, "idmap config %s",
+						dom->name);
+		IDMAP_CHECK_ALLOC(config_option);
 
-	if (!parse_idmap_module(talloc_tos(), lp_idmap_backend(), &modulename,
-				&params)) {
-		DEBUG(1, ("parse_idmap_module failed\n"));
-		return NULL;
-	}
+		/* default or specific ? */
 
-	DEBUG(3, ("idmap_init: using '%s' as remote backend\n", modulename));
+		dom->default_domain = lp_parm_bool(-1, config_option,
+						   "default", False);
 
-	result = idmap_init_domain(mem_ctx, "*", modulename, params);
-	if (result == NULL) {
-		goto fail;
-	}
+		if (dom->default_domain ||
+		    (default_domain && strequal(dom_list[i], default_domain))) {
 
-	TALLOC_FREE(modulename);
-	TALLOC_FREE(params);
-	return result;
+			/* make sure this is set even when we match
+			 * default_domain */
+			dom->default_domain = True;
 
-fail:
-	TALLOC_FREE(modulename);
-	TALLOC_FREE(params);
-	TALLOC_FREE(result);
-	return NULL;
-}
+			if (default_already_defined) {
+				DEBUG(1, ("ERROR: Multiple domains defined as"
+					  " default!\n"));
+				ret = NT_STATUS_INVALID_PARAMETER;
+				goto done;
+			}
 
-/**
- * Initialize a named domain structure
- * @param[in] mem_ctx		memory context for the result
- * @param[in] domname		the domain name
- * @result The default domain structure
- *
- * This routine looks at the "idmap config <domname>" parameters to figure out
- * the configuration.
- */
+			default_already_defined = True;
 
-static struct idmap_domain *idmap_init_named_domain(TALLOC_CTX *mem_ctx,
-						    const char *domname)
-{
-	struct idmap_domain *result = NULL;
-	char *config_option;
-	const char *backend;
+		}
 
-	config_option = talloc_asprintf(talloc_tos(), "idmap config %s",
-					domname);
-	if (config_option == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		goto fail;
-	}
+		dom->readonly = lp_parm_bool(-1, config_option,
+					     "readonly", False);
 
-	backend = lp_parm_const_string(-1, config_option, "backend", NULL);
-	if (backend == NULL) {
-		DEBUG(1, ("no backend defined for %s\n", config_option));
-		goto fail;
-	}
+		/* find associated backend (default: tdb) */
+		if (compat) {
+			parm_backend = talloc_strdup(idmap_ctx, compat_backend);
+		} else {
+			parm_backend = talloc_strdup(idmap_ctx,
+						     lp_parm_const_string(
+							-1, config_option,
+							"backend", "tdb"));
+		}
+		IDMAP_CHECK_ALLOC(parm_backend);
 
-	result = idmap_init_domain(mem_ctx, domname, backend, NULL);
-	if (result == NULL) {
-		goto fail;
-	}
+		/* get the backend methods for this domain */
+		dom->methods = get_methods(parm_backend);
 
-	TALLOC_FREE(config_option);
-	return result;
+		if ( ! dom->methods) {
+			ret = smb_probe_module("idmap", parm_backend);
+			if (NT_STATUS_IS_OK(ret)) {
+				dom->methods = get_methods(parm_backend);
+			}
+		}
+		if ( ! dom->methods) {
+			DEBUG(0, ("ERROR: Could not get methods for "
+				  "backend %s\n", parm_backend));
+			ret = NT_STATUS_UNSUCCESSFUL;
+			goto done;
+		}
 
-fail:
-	TALLOC_FREE(config_option);
-	TALLOC_FREE(result);
-	return NULL;
-}
+		/* check the set_mapping function exists otherwise mark the
+		 * module as readonly */
+		if ( ! dom->methods->set_mapping) {
+			DEBUG(5, ("Forcing to readonly, as this module can't"
+				  " store arbitrary mappings.\n"));
+			dom->readonly = True;
+		}
 
-/**
- * Initialize the passdb domain structure
- * @param[in] mem_ctx		memory context for the result
- * @result The default domain structure
- *
- * No config, passdb has its own configuration.
- */
+		/* now that we have methods,
+		 * set the destructor for this domain */
+		talloc_set_destructor(dom, close_domain_destructor);
 
-static struct idmap_domain *idmap_init_passdb_domain(TALLOC_CTX *mem_ctx)
-{
-	if (passdb_idmap_domain != NULL) {
-		return passdb_idmap_domain;
-	}
+		if (compat_params) {
+			dom->params = talloc_strdup(dom, compat_params);
+			IDMAP_CHECK_ALLOC(dom->params);
+		} else {
+			dom->params = NULL;
+		}
 
-	passdb_idmap_domain = idmap_init_domain(NULL, get_global_sam_name(),
-						"passdb", NULL);
-	if (passdb_idmap_domain == NULL) {
-		DEBUG(1, ("Could not init passdb idmap domain\n"));
-	}
+		/* Finally instance a backend copy for this domain */
+		ret = dom->methods->init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			DEBUG(0, ("ERROR: Initialization failed for backend "
+				  "%s (domain %s), deferred!\n",
+				  parm_backend, dom->name));
+		}
+		idmap_domains = talloc_realloc(idmap_ctx, idmap_domains,
+						struct idmap_domain *, i+1);
+		if ( ! idmap_domains) {
+			DEBUG(0, ("Out of memory!\n"));
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+		idmap_domains[num_domains] = dom;
 
-	return passdb_idmap_domain;
-}
+		/* save default domain position for future uses */
+		if (dom->default_domain) {
+			def_dom_num = num_domains;
+		}
 
-/**
- * Find a domain struct according to a domain name
- * @param[in] domname		Domain name to get the config for
- * @result The default domain structure that fits
- *
- * This is the central routine in the winbindd-idmap child to pick the correct
- * domain for looking up IDs. If domname is NULL or empty, we use the default
- * domain. If it contains something, we try to use idmap_init_named_domain()
- * to fetch the correct backend.
- *
- * The choice about "domname" is being made by the winbind parent, look at the
- * "have_idmap_config" of "struct winbindd_domain" which is set in
- * add_trusted_domain.
- */
+		/* Bump counter to next available slot */
 
-static struct idmap_domain *idmap_find_domain(const char *domname)
-{
-	struct idmap_domain *result;
-	int i;
+		num_domains++;
 
-	/*
-	 * Always init the default domain, we can't go without one
-	 */
-	if (default_idmap_domain == NULL) {
-		default_idmap_domain = idmap_init_default_domain(NULL);
-	}
-	if (default_idmap_domain == NULL) {
-		return NULL;
-	}
+		DEBUG(10, ("Domain %s - Backend %s - %sdefault - %sreadonly\n",
+				dom->name, parm_backend,
+				dom->default_domain?"":"not ",
+				dom->readonly?"":"not "));
 
-	if ((domname == NULL) || (domname[0] == '\0')) {
-		return default_idmap_domain;
+		talloc_free(config_option);
 	}
 
-	for (i=0; i<num_domains; i++) {
-		if (strequal(idmap_domains[i]->name, domname)) {
-			return idmap_domains[i];
+	/* on DCs we need to add idmap_tdb as the default backend if compat is
+	 * defined (when the old implicit configuration is used)
+	 * This is not done in the previous loop a on member server we exclude
+	 * the local domain. But on a DC the local domain is the only domain
+	 * available therefore we are left with no default domain */
+	if (((lp_server_role() == ROLE_DOMAIN_PDC) ||
+	     (lp_server_role() == ROLE_DOMAIN_BDC)) &&
+            ((num_domains == 0) && (compat == 1))) {
+
+		dom = TALLOC_ZERO_P(idmap_ctx, struct idmap_domain);
+		IDMAP_CHECK_ALLOC(dom);
+
+		dom->name = talloc_strdup(dom, "__default__");
+		IDMAP_CHECK_ALLOC(dom->name);
+
+		dom->default_domain = True;
+		dom->readonly = False;
+
+		/* get the backend methods for this domain */
+		dom->methods = get_methods(compat_backend); 
+		if ( ! dom->methods) {
+			ret = smb_probe_module("idmap", compat_backend);
+			if (NT_STATUS_IS_OK(ret)) {
+				dom->methods = get_methods(compat_backend);
+			}
 		}
-	}
+		if ( ! dom->methods) {
+			DEBUG(0, ("ERROR: Could not get methods for "
+				  "backend %s\n", compat_backend));
+			ret = NT_STATUS_UNSUCCESSFUL;
+			goto done;
+		}
 
-	if (idmap_domains == NULL) {
-		/*
-		 * talloc context for all idmap domains
-		 */
-		idmap_domains = TALLOC_ARRAY(NULL, struct idmap_domain *, 1);
-	}
+		/* now that we have methods,
+		 * set the destructor for this domain */
+		talloc_set_destructor(dom, close_domain_destructor);
 
-	if (idmap_domains == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		return NULL;
-	}
+		dom->params = talloc_strdup(dom, compat_params);
+		IDMAP_CHECK_ALLOC(dom->params);
 
-	result = idmap_init_named_domain(idmap_domains, domname);
-	if (result == NULL) {
-		/*
-		 * Could not init that domain -- try the default one
-		 */
-		return default_idmap_domain;
+		/* Finally instance a backend copy for this domain */
+		ret = dom->methods->init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			DEBUG(0, ("ERROR: Initialization failed for backend "
+				  "%s (domain %s), deferred!\n",
+				  compat_backend, dom->name));
+		}
+		idmap_domains = talloc_realloc(idmap_ctx, idmap_domains,
+						struct idmap_domain *, 2);
+		if ( ! idmap_domains) {
+			DEBUG(0, ("Out of memory!\n"));
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+		idmap_domains[num_domains] = dom;
+
+		def_dom_num = num_domains;
+
+		/* Bump counter to next available slot */
+
+		num_domains++;
+
+		DEBUG(10, ("Domain %s - Backend %s - %sdefault - %sreadonly\n",
+				dom->name, compat_backend,
+				dom->default_domain?"":"not ",
+				dom->readonly?"":"not "));
 	}
 
-	ADD_TO_ARRAY(idmap_domains, struct idmap_domain *, result,
-		     &idmap_domains, &num_domains);
-	return result;
-}
+	/* automatically add idmap_nss backend if needed */
+	if ((lp_server_role() == ROLE_DOMAIN_MEMBER) &&
+	    ( ! pri_dom_is_in_list) &&
+	    lp_winbind_trusted_domains_only()) {
 
-void idmap_close(void)
-{
-        if (idmap_alloc_ctx) {
-                idmap_alloc_ctx->methods->close_fn();
-                idmap_alloc_ctx->methods = NULL;
-        }
-        alloc_backends = NULL;
-	TALLOC_FREE(default_idmap_domain);
-	TALLOC_FREE(passdb_idmap_domain);
-	TALLOC_FREE(idmap_domains);
-	num_domains = 0;
-}
+		dom = TALLOC_ZERO_P(idmap_ctx, struct idmap_domain);
+		IDMAP_CHECK_ALLOC(dom);
 
-/**
- * Initialize the idmap alloc backend
- * @param[out] ctx		Where to put the alloc_ctx?
- * @result Did it work fine?
- *
- * This routine first looks at "idmap alloc backend" and if that is not
- * defined, it uses "idmap backend" for the module name.
- */
-static NTSTATUS idmap_alloc_init(struct idmap_alloc_context **ctx)
-{
-	const char *backend;
-	char *modulename, *params;
-	NTSTATUS ret = NT_STATUS_NO_MEMORY;;
+		dom->name = talloc_strdup(dom, lp_workgroup());
+		IDMAP_CHECK_ALLOC(dom->name);
 
-	if (idmap_alloc_ctx != NULL) {
-		*ctx = idmap_alloc_ctx;
-		return NT_STATUS_OK;
+		dom->default_domain = False;
+		dom->readonly = True;
+
+		/* get the backend methods for nss */
+		dom->methods = get_methods("nss");
+
+		/* (the nss module is always statically linked) */
+		if ( ! dom->methods) {
+			DEBUG(0, ("ERROR: No methods for idmap_nss ?!\n"));
+			ret = NT_STATUS_UNSUCCESSFUL;
+			goto done;
+		}
+
+		/* now that we have methods,
+		 * set the destructor for this domain */
+		talloc_set_destructor(dom, close_domain_destructor);
+
+		if (compat_params) {
+			dom->params = talloc_strdup(dom, compat_params);
+			IDMAP_CHECK_ALLOC(dom->params);
+		} else {
+			dom->params = NULL;
+		}
+
+		/* Finally instance a backend copy for this domain */
+		ret = dom->methods->init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			DEBUG(0, ("ERROR: Init. failed for idmap_nss ?!\n"));
+			ret = NT_STATUS_UNSUCCESSFUL;
+			goto done;
+		}
+
+		idmap_domains = talloc_realloc(idmap_ctx,
+						idmap_domains,
+						struct idmap_domain *,
+						num_domains+1);
+		if ( ! idmap_domains) {
+			DEBUG(0, ("Out of memory!\n"));
+			ret = NT_STATUS_NO_MEMORY;
+			goto done;
+		}
+		idmap_domains[num_domains] = dom;
+
+		DEBUG(10, ("Domain %s - Backend nss - not default - readonly\n",
+			   dom->name ));
+
+		num_domains++;
 	}
 
-	idmap_alloc_ctx = talloc(NULL, struct idmap_alloc_context);
-	if (idmap_alloc_ctx == NULL) {
-		DEBUG(0, ("talloc failed\n"));
-		goto fail;
+	/**** automatically add idmap_passdb backend ****/
+	dom = TALLOC_ZERO_P(idmap_ctx, struct idmap_domain);
+	IDMAP_CHECK_ALLOC(dom);
+
+	dom->name = talloc_strdup(dom, get_global_sam_name());
+	IDMAP_CHECK_ALLOC(dom->name);
+
+	dom->default_domain = False;
+	dom->readonly = True;
+
+	/* get the backend methods for passdb */
+	dom->methods = get_methods("passdb");
+
+	/* (the passdb module is always statically linked) */
+	if ( ! dom->methods) {
+		DEBUG(0, ("ERROR: No methods for idmap_passdb ?!\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
 	}
 
-	backend = lp_idmap_alloc_backend();
-	if ((backend == NULL) || (backend[0] == '\0')) {
-		backend = lp_idmap_backend();
+	/* now that we have methods, set the destructor for this domain */
+	talloc_set_destructor(dom, close_domain_destructor);
+
+	if (compat_params) {
+		dom->params = talloc_strdup(dom, compat_params);
+		IDMAP_CHECK_ALLOC(dom->params);
+	} else {
+		dom->params = NULL;
 	}
 
-	if (backend == NULL) {
-		DEBUG(3, ("no idmap alloc backend defined\n"));
-		ret = NT_STATUS_INVALID_PARAMETER;
-		goto fail;
+	/* Finally instance a backend copy for this domain */
+	ret = dom->methods->init(dom);
+	if ( ! NT_STATUS_IS_OK(ret)) {
+		DEBUG(0, ("ERROR: Init. failed for idmap_passdb ?!\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
 	}
 
-	if (!parse_idmap_module(idmap_alloc_ctx, backend, &modulename,
-				&params)) {
-		DEBUG(1, ("parse_idmap_module %s failed\n", backend));
-		goto fail;
+	idmap_domains = talloc_realloc(idmap_ctx,
+					idmap_domains,
+					struct idmap_domain *,
+					num_domains+1);
+	if ( ! idmap_domains) {
+		DEBUG(0, ("Out of memory!\n"));
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
 	}
+	idmap_domains[num_domains] = dom;
 
-	idmap_alloc_ctx->methods = get_alloc_methods(modulename);
+	/* needed to handle special BUILTIN and wellknown SIDs cases */
+	pdb_dom_num = num_domains;
 
-	if (idmap_alloc_ctx->methods == NULL) {
-		ret = smb_probe_module("idmap", modulename);
-		if (NT_STATUS_IS_OK(ret)) {
-			idmap_alloc_ctx->methods =
-				get_alloc_methods(modulename);
+	DEBUG(10, ("Domain %s - Backend passdb - not default - readonly\n",
+		   dom->name));
+
+	num_domains++;
+	/**** finished adding idmap_passdb backend ****/
+
+	/* sort domains so that the default is the last one */
+	/* don't sort if no default domain defined */
+	if (def_dom_num != -1 && def_dom_num != num_domains-1) {
+		/* default is not last, move it */
+		struct idmap_domain *tmp;
+
+		if (pdb_dom_num > def_dom_num) {
+			pdb_dom_num --;
+
+		} else if (pdb_dom_num == def_dom_num) { /* ?? */
+			pdb_dom_num = num_domains - 1;
 		}
+
+		tmp = idmap_domains[def_dom_num];
+
+		for (i = def_dom_num; i < num_domains-1; i++) {
+			idmap_domains[i] = idmap_domains[i+1];
+		}
+		idmap_domains[i] = tmp;
+		def_dom_num = i;
 	}
 
-	if (idmap_alloc_ctx->methods == NULL) {
-		DEBUG(1, ("could not find idmap alloc module %s\n", backend));
-		ret = NT_STATUS_INVALID_PARAMETER;
-		goto fail;
+
+	/* Initialize alloc module */
+
+	DEBUG(3, ("Initializing idmap alloc module\n"));
+
+	alloc_backend = NULL;
+	if (compat) {
+		alloc_backend = talloc_strdup(idmap_ctx, compat_backend);
+	} else {
+		char *ab = lp_idmap_alloc_backend();
+
+		if (ab && (ab[0] != '\0')) {
+			alloc_backend = talloc_strdup(idmap_ctx,
+						      lp_idmap_alloc_backend());
+		}
 	}
 
-	ret = idmap_alloc_ctx->methods->init(params);
+	if ( alloc_backend ) {
 
-	if (!NT_STATUS_IS_OK(ret)) {
-		DEBUG(0, ("ERROR: Initialization failed for alloc "
-			  "backend, deferred!\n"));
-		goto fail;
+		idmap_alloc_ctx = TALLOC_ZERO_P(idmap_ctx,
+						struct idmap_alloc_context);
+		IDMAP_CHECK_ALLOC(idmap_alloc_ctx);
+
+		idmap_alloc_ctx->methods = get_alloc_methods(alloc_backend);
+		if ( ! idmap_alloc_ctx->methods) {
+			ret = smb_probe_module("idmap", alloc_backend);
+			if (NT_STATUS_IS_OK(ret)) {
+				idmap_alloc_ctx->methods =
+					get_alloc_methods(alloc_backend);
+			}
+		}
+		if (idmap_alloc_ctx->methods) {
+
+			if (compat_params) {
+				idmap_alloc_ctx->params =
+					talloc_strdup(idmap_alloc_ctx,
+						      compat_params);
+				IDMAP_CHECK_ALLOC(idmap_alloc_ctx->params);
+			} else {
+				idmap_alloc_ctx->params = NULL;
+			}
+
+			ret = idmap_alloc_ctx->methods->init(idmap_alloc_ctx->params);
+			if ( ! NT_STATUS_IS_OK(ret)) {
+				DEBUG(0, ("ERROR: Initialization failed for "
+					  "alloc backend %s, deferred!\n",
+					  alloc_backend));
+			} else {
+				idmap_alloc_ctx->initialized = True;
+			}
+		} else {
+			DEBUG(2, ("idmap_init: Unable to get methods for "
+				  "alloc backend %s\n",
+				  alloc_backend));
+			/* certain compat backends are just readonly */
+			if ( compat ) {
+				TALLOC_FREE(idmap_alloc_ctx);
+				ret = NT_STATUS_OK;
+			} else {
+				ret = NT_STATUS_UNSUCCESSFUL;
+			}
+		}
 	}
 
-	TALLOC_FREE(modulename);
-	TALLOC_FREE(params);
+	/* cleanup temporary strings */
+	TALLOC_FREE( compat_backend );
 
-	*ctx = idmap_alloc_ctx;
-	return NT_STATUS_OK;
+	idmap_init_status = NT_STATUS_OK;
 
-fail:
-	TALLOC_FREE(idmap_alloc_ctx);
 	return ret;
+
+done:
+	DEBUG(0, ("Aborting IDMAP Initialization ...\n"));
+	idmap_close();
+
+	return ret;
 }
 
+static NTSTATUS idmap_alloc_init(void)
+{
+	NTSTATUS ret;
+
+	if (! NT_STATUS_IS_OK(ret = idmap_init())) {
+		return ret;
+	}
+
+	if ( ! idmap_alloc_ctx) {
+		return NT_STATUS_NOT_SUPPORTED;
+	}
+
+	if ( ! idmap_alloc_ctx->initialized) {
+		ret = idmap_alloc_ctx->methods->init(idmap_alloc_ctx->params);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			DEBUG(0, ("ERROR: Initialization failed for alloc "
+				  "backend, deferred!\n"));
+			return ret;
+		} else {
+			idmap_alloc_ctx->initialized = True;
+		}
+	}
+
+	return NT_STATUS_OK;
+}
+
 /**************************************************************************
  idmap allocator interface functions
 **************************************************************************/
 
 NTSTATUS idmap_allocate_uid(struct unixid *id)
 {
-	struct idmap_alloc_context *ctx;
 	NTSTATUS ret;
 
-	if (!NT_STATUS_IS_OK(ret = idmap_alloc_init(&ctx))) {
+	if (! NT_STATUS_IS_OK(ret = idmap_alloc_init())) {
 		return ret;
 	}
 
 	id->type = ID_TYPE_UID;
-	return ctx->methods->allocate_id(id);
+	return idmap_alloc_ctx->methods->allocate_id(id);
 }
 
 NTSTATUS idmap_allocate_gid(struct unixid *id)
 {
-	struct idmap_alloc_context *ctx;
 	NTSTATUS ret;
 
-	if (!NT_STATUS_IS_OK(ret = idmap_alloc_init(&ctx))) {
+	if (! NT_STATUS_IS_OK(ret = idmap_alloc_init())) {
 		return ret;
 	}
 
 	id->type = ID_TYPE_GID;
-	return ctx->methods->allocate_id(id);
+	return idmap_alloc_ctx->methods->allocate_id(id);
 }
 
 NTSTATUS idmap_set_uid_hwm(struct unixid *id)
 {
-	struct idmap_alloc_context *ctx;
 	NTSTATUS ret;
 
-	if (!NT_STATUS_IS_OK(ret = idmap_alloc_init(&ctx))) {
+	if (! NT_STATUS_IS_OK(ret = idmap_alloc_init())) {
 		return ret;
 	}
 
 	id->type = ID_TYPE_UID;
-	return ctx->methods->set_id_hwm(id);
+	return idmap_alloc_ctx->methods->set_id_hwm(id);
 }
 
 NTSTATUS idmap_set_gid_hwm(struct unixid *id)
 {
-	struct idmap_alloc_context *ctx;
 	NTSTATUS ret;
 
-	if (!NT_STATUS_IS_OK(ret = idmap_alloc_init(&ctx))) {
+	if (! NT_STATUS_IS_OK(ret = idmap_alloc_init())) {
 		return ret;
 	}
 
 	id->type = ID_TYPE_GID;
-	return ctx->methods->set_id_hwm(id);
+	return idmap_alloc_ctx->methods->set_id_hwm(id);
 }
 
-NTSTATUS idmap_new_mapping(const struct dom_sid *psid, enum id_type type,
-			   struct unixid *pxid)
+/******************************************************************************
+ Lookup an idmap_domain give a full user or group SID
+ ******************************************************************************/
+
+static struct idmap_domain* find_idmap_domain_from_sid( DOM_SID *account_sid )
 {
-	struct dom_sid sid;
+	DOM_SID domain_sid;
+	uint32_t rid;
+	struct winbindd_domain *domain = NULL;
+	int i;
+
+	/* 1. Handle BUILTIN or Special SIDs and prevent them from
+	   falling into the default domain space (if we have a
+	   configured passdb backend. */
+
+	if ( (pdb_dom_num != -1) &&
+	     (sid_check_is_in_builtin(account_sid) ||
+	      sid_check_is_in_wellknown_domain(account_sid) ||
+	      sid_check_is_in_unix_groups(account_sid) ||
+	      sid_check_is_in_unix_users(account_sid)) )
+	{
+		return idmap_domains[pdb_dom_num];
+	}
+
+	/* 2. Lookup the winbindd_domain from the account_sid */
+
+	sid_copy( &domain_sid, account_sid );
+	sid_split_rid( &domain_sid, &rid );
+	domain = find_domain_from_sid_noinit( &domain_sid );
+
+	for (i = 0; domain && i < num_domains; i++) {
+		if ( strequal( idmap_domains[i]->name, domain->name ) ) {
+			return idmap_domains[i];
+		}
+	}
+
+	/* 3. Fall back to the default domain */
+
+	if ( def_dom_num != -1 ) {
+		return idmap_domains[def_dom_num];
+	}
+
+	return NULL;
+}
+
+/******************************************************************************
+ Lookup an index given an idmap_domain pointer
+ ******************************************************************************/
+
+static uint32_t find_idmap_domain_index( struct idmap_domain *id_domain)
+{
+	int i;
+
+	for (i = 0; i < num_domains; i++) {
+		if ( idmap_domains[i] == id_domain )
+			return i;
+	}
+
+	return -1;
+}
+
+
+/*********************************************************
+ Check if creating a mapping is permitted for the domain
+*********************************************************/
+
+static NTSTATUS idmap_can_map(const struct id_map *map,
+			      struct idmap_domain **ret_dom)
+{
 	struct idmap_domain *dom;
-	struct id_map map;
-	NTSTATUS status;
 
-	dom = idmap_find_domain(NULL);
-	if (dom == NULL) {
-		DEBUG(3, ("no default domain, no place to write\n"));
-		return NT_STATUS_ACCESS_DENIED;
+	/* Check we do not create mappings for our own local domain,
+	 * or BUILTIN or special SIDs */
+	if ((sid_compare_domain(map->sid, get_global_sam_sid()) == 0) ||
+	    sid_check_is_in_builtin(map->sid) ||
+	    sid_check_is_in_wellknown_domain(map->sid) ||
+	    sid_check_is_in_unix_users(map->sid) ||
+	    sid_check_is_in_unix_groups(map->sid) )
+	{
+		DEBUG(10, ("We are not supposed to create mappings for our own "
+			   "domains (local, builtin, specials)\n"));
+		return NT_STATUS_UNSUCCESSFUL;
 	}
-	if (dom->methods->set_mapping == NULL) {
-		DEBUG(3, ("default domain not writable\n"));
-		return NT_STATUS_MEDIA_WRITE_PROTECTED;
+
+	/* Special check for trusted domain only = Yes */
+	if (lp_winbind_trusted_domains_only()) {
+		struct winbindd_domain *wdom = find_our_domain();
+		if (wdom && (sid_compare_domain(map->sid, &wdom->sid) == 0)) {
+			DEBUG(10, ("We are not supposed to create mappings for "
+				   "our primary domain when <trusted domain "
+				   "only> is True\n"));
+			DEBUGADD(10, ("Leave [%s] unmapped\n",
+				      sid_string_dbg(map->sid)));
+			return NT_STATUS_UNSUCCESSFUL;
+		}
 	}
 
-	sid_copy(&sid, psid);
-	map.sid = &sid;
-	map.xid.type = type;
+	if ( (dom = find_idmap_domain_from_sid( map->sid )) == NULL ) {
+		/* huh, couldn't find a suitable domain,
+		 *  let's just leave it unmapped */
+		DEBUG(10, ("Could not find idmap backend for SID %s\n",
+			   sid_string_dbg(map->sid)));
+		return NT_STATUS_NO_SUCH_DOMAIN;
+	}
 
-	switch (type) {
+	if (dom->readonly) {
+		/* ouch the domain is read only,
+		 *  let's just leave it unmapped */
+		DEBUG(10, ("idmap backend for SID %s is READONLY!\n",
+			   sid_string_dbg(map->sid)));
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	*ret_dom = dom;
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS idmap_new_mapping(TALLOC_CTX *ctx, struct id_map *map)
+{
+	NTSTATUS ret;
+	struct idmap_domain *dom;
+
+	/* If we are offline we cannot lookup SIDs, deny mapping */
+	if (idmap_is_offline())	{
+		return NT_STATUS_FILE_IS_OFFLINE;
+	}
+
+	ret = idmap_can_map(map, &dom);
+	if ( ! NT_STATUS_IS_OK(ret)) {
+		return NT_STATUS_NONE_MAPPED;
+	}
+
+	/* check if this is a valid SID and then map it */
+	switch (map->xid.type) {
 	case ID_TYPE_UID:
-		status = idmap_allocate_uid(&map.xid);
+		ret = idmap_allocate_uid(&map->xid);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			/* can't allocate id, let's just leave it unmapped */
+			DEBUG(2, ("uid allocation failed! "
+				  "Can't create mapping\n"));
+			return NT_STATUS_NONE_MAPPED;
+		}
 		break;
 	case ID_TYPE_GID:
-		status = idmap_allocate_gid(&map.xid);
+		ret = idmap_allocate_gid(&map->xid);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			/* can't allocate id, let's just leave it unmapped */
+			DEBUG(2, ("gid allocation failed! "
+				  "Can't create mapping\n"));
+			return NT_STATUS_NONE_MAPPED;
+		}
 		break;
 	default:
-		status = NT_STATUS_INVALID_PARAMETER;
-		break;
+		/* invalid sid, let's just leave it unmapped */
+		DEBUG(3,("idmap_new_mapping: Refusing to create a "
+			 "mapping for an unspecified ID type.\n"));
+		return NT_STATUS_NONE_MAPPED;
 	}
 
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("Could not allocate id: %s\n", nt_errstr(status)));
-		return status;
-	}
+	/* ok, got a new id, let's set a mapping */
+	map->status = ID_MAPPED;
 
-	map.status = ID_MAPPED;
-
 	DEBUG(10, ("Setting mapping: %s <-> %s %lu\n",
-		   sid_string_dbg(map.sid),
-		   (map.xid.type == ID_TYPE_UID) ? "UID" : "GID",
-		   (unsigned long)map.xid.id));
+		   sid_string_dbg(map->sid),
+		   (map->xid.type == ID_TYPE_UID) ? "UID" : "GID",
+		   (unsigned long)map->xid.id));
+	ret = dom->methods->set_mapping(dom, map);
 
-	status = dom->methods->set_mapping(dom, &map);
+	if ( ! NT_STATUS_IS_OK(ret)) {
+		/* something wrong here :-( */
+		DEBUG(2, ("Failed to commit mapping\n!"));
 
-	if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) {
-		struct id_map *ids[2];
-		DEBUG(5, ("Mapping for %s exists - retrying to map sid\n",
-			  sid_string_dbg(map.sid)));
-		ids[0] = &map;
-		ids[1] = NULL;
-		status = dom->methods->sids_to_unixids(dom, ids);
+	/* TODO: would it make sense to have an "unalloc_id function?" */
+
+		return NT_STATUS_NONE_MAPPED;
 	}
 
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("Could not store the new mapping: %s\n",
-			  nt_errstr(status)));
-		return status;
+	return NT_STATUS_OK;
+}
+
+static NTSTATUS idmap_backends_set_mapping(const struct id_map *map)
+{
+	struct idmap_domain *dom;
+	NTSTATUS ret;
+
+	DEBUG(10, ("Setting mapping %s <-> %s %lu\n",
+		   sid_string_dbg(map->sid),
+		   (map->xid.type == ID_TYPE_UID) ? "UID" : "GID",
+		   (unsigned long)map->xid.id));
+
+	ret = idmap_can_map(map, &dom);
+	if ( ! NT_STATUS_IS_OK(ret)) {
+		return ret;
 	}
 
-	*pxid = map.xid;
+	DEBUG(10,("set_mapping for domain %s\n", dom->name ));
 
-	return NT_STATUS_OK;
+	return dom->methods->set_mapping(dom, map);
 }
 
-NTSTATUS idmap_backends_unixid_to_sid(const char *domname, struct id_map *id)
+static NTSTATUS idmap_backends_unixids_to_sids(struct id_map **ids)
 {
 	struct idmap_domain *dom;
-	struct id_map *maps[2];
+	struct id_map **unmapped;
+	struct id_map **_ids;
+	TALLOC_CTX *ctx;
+	NTSTATUS ret;
+	int i, u, n;
 
-	maps[0] = id;
-	maps[1] = NULL;
+	if (!ids || !*ids) {
+		DEBUG(1, ("Invalid list of maps\n"));
+		return NT_STATUS_INVALID_PARAMETER;
+	}
 
-	/*
-	 * Always give passdb a chance first
-	 */
+	ctx = talloc_named_const(NULL, 0, "idmap_backends_unixids_to_sids ctx");
+	if ( ! ctx) {
+		DEBUG(0, ("Out of memory!\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
 
-	dom = idmap_init_passdb_domain(NULL);
-	if ((dom != NULL)
-	    && NT_STATUS_IS_OK(dom->methods->unixids_to_sids(dom, maps))) {
-		return NT_STATUS_OK;
+	DEBUG(10, ("Query backends to map ids->sids\n"));
+
+	/* start from the default (the last one) and then if there are still
+	 * unmapped entries cycle through the others */
+
+	_ids = ids;
+
+	unmapped = NULL;
+	for (n = num_domains-1; n >= 0; n--) { /* cycle backwards */
+
+		dom = idmap_domains[n];
+
+		DEBUG(10, ("Query sids from domain %s\n", dom->name));
+
+		ret = dom->methods->unixids_to_sids(dom, _ids);
+		IDMAP_REPORT_RET(ret);
+
+		unmapped = NULL;
+
+		for (i = 0, u = 0; _ids[i]; i++) {
+			if (_ids[i]->status != ID_MAPPED) {
+				unmapped = talloc_realloc(ctx, unmapped,
+							struct id_map *, u + 2);
+				IDMAP_CHECK_ALLOC(unmapped);
+				unmapped[u] = _ids[i];
+				u++;
+			}
+		}
+		if (unmapped) {
+			/* terminate the unmapped list */
+			unmapped[u] = NULL;
+		} else { /* no more entries, get out */
+			break;
+		}
+
+		_ids = unmapped;
+
 	}
 
-	dom = idmap_find_domain(domname);
-	if (dom == NULL) {
-		return NT_STATUS_NONE_MAPPED;
+	if (unmapped) {
+		/* there are still unmapped ids,
+		 * map them to the unix users/groups domains */
+		/* except for expired entries,
+		 * these will be returned as valid (offline mode) */
+		for (i = 0; unmapped[i]; i++) {
+			if (unmapped[i]->status == ID_EXPIRED) continue;
+			switch (unmapped[i]->xid.type) {
+			case ID_TYPE_UID:
+				uid_to_unix_users_sid(
+						(uid_t)unmapped[i]->xid.id,
+						unmapped[i]->sid);
+				unmapped[i]->status = ID_MAPPED;
+				break;
+			case ID_TYPE_GID:
+				gid_to_unix_groups_sid(
+						(gid_t)unmapped[i]->xid.id,
+						unmapped[i]->sid);
+				unmapped[i]->status = ID_MAPPED;
+				break;
+			default: /* what?! */
+				unmapped[i]->status = ID_UNKNOWN;
+				break;
+			}
+		}
 	}
 
-	return dom->methods->unixids_to_sids(dom, maps);
+	ret = NT_STATUS_OK;
+
+done:
+	talloc_free(ctx);
+	return ret;
 }
 
-NTSTATUS idmap_backends_sid_to_unixid(const char *domain, struct id_map *id)
+static NTSTATUS idmap_backends_sids_to_unixids(struct id_map **ids)
 {
+	struct id_map ***dom_ids;
 	struct idmap_domain *dom;
-	struct id_map *maps[2];
+	TALLOC_CTX *ctx;
+	NTSTATUS ret;
+	int i, *counters;
 
-	maps[0] = id;
-	maps[1] = NULL;
+	if ( (ctx = talloc_named_const(NULL, 0, "be_sids_to_ids")) == NULL ) {
+		DEBUG(1, ("failed to allocate talloc context, OOM?\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
 
-	if (sid_check_is_in_builtin(id->sid)
-	    || (sid_check_is_in_our_domain(id->sid))) {
+	DEBUG(10, ("Query backends to map sids->ids\n"));
 
-		dom = idmap_init_passdb_domain(NULL);
-		if (dom == NULL) {
-			return NT_STATUS_NONE_MAPPED;
+	/* split list per domain */
+	if (num_domains == 0) {
+		DEBUG(1, ("No domains available?\n"));
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	dom_ids = TALLOC_ZERO_ARRAY(ctx, struct id_map **, num_domains);
+	IDMAP_CHECK_ALLOC(dom_ids);
+	counters = TALLOC_ZERO_ARRAY(ctx, int, num_domains);
+	IDMAP_CHECK_ALLOC(counters);
+
+	/* partition the requests by domain */
+
+	for (i = 0; ids[i]; i++) {
+		uint32_t idx;
+
+		if ((dom = find_idmap_domain_from_sid(ids[i]->sid)) == NULL) {
+			/* no available idmap_domain.  Move on */
+			continue;
 		}
-		return dom->methods->sids_to_unixids(dom, maps);
+
+		DEBUG(10,("SID %s is being handled by %s\n",
+			  sid_string_dbg(ids[i]->sid),
+			  dom ? dom->name : "none" ));
+
+		idx = find_idmap_domain_index( dom );
+		SMB_ASSERT( idx != -1 );
+
+		dom_ids[idx] = talloc_realloc(ctx, dom_ids[idx],
+					      struct id_map *,
+					      counters[idx] + 2);
+		IDMAP_CHECK_ALLOC(dom_ids[idx]);
+
+		dom_ids[idx][counters[idx]] = ids[i];
+		counters[idx]++;
+		dom_ids[idx][counters[idx]] = NULL;
 	}
 
-	dom = idmap_find_domain(domain);
-	if (dom == NULL) {
-		return NT_STATUS_NONE_MAPPED;
+	/* All the ids have been dispatched in the right queues.
+	   Let's cycle through the filled ones */
+
+	for (i = 0; i < num_domains; i++) {
+		if (dom_ids[i]) {
+			dom = idmap_domains[i];
+			DEBUG(10, ("Query ids from domain %s\n", dom->name));
+			ret = dom->methods->sids_to_unixids(dom, dom_ids[i]);
+			IDMAP_REPORT_RET(ret);
+		}
 	}
 
-	return dom->methods->sids_to_unixids(dom, maps);
+	/* ok all the backends have been contacted at this point */
+	/* let's see if we have any unmapped SID left and act accordingly */
+
+	for (i = 0; ids[i]; i++) {
+		/* NOTE: this will NOT touch ID_EXPIRED entries that the backend
+		 * was not able to confirm/deny (offline mode) */
+		if (ids[i]->status == ID_UNKNOWN ||
+			ids[i]->status == ID_UNMAPPED) {
+			/* ok this is an unmapped one, see if we can map it */
+			ret = idmap_new_mapping(ctx, ids[i]);
+			if (NT_STATUS_IS_OK(ret)) {
+				/* successfully mapped */
+				ids[i]->status = ID_MAPPED;
+			} else
+			if (NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED)) {
+				/* could not map it */
+				ids[i]->status = ID_UNMAPPED;
+			} else {
+				/* Something very bad happened down there
+				 * OR we are offline */
+				ids[i]->status = ID_UNKNOWN;
+			}
+		}
+	}
+
+	ret = NT_STATUS_OK;
+
+done:
+	talloc_free(ctx);
+	return ret;
 }
 
-NTSTATUS idmap_set_mapping(const struct id_map *map)
+/**************************************************************************
+ idmap interface functions
+**************************************************************************/
+
+NTSTATUS idmap_unixids_to_sids(struct id_map **ids)
 {
-	struct idmap_domain *dom;
+	TALLOC_CTX *ctx;
+	NTSTATUS ret;
+	struct id_map **bids;
+	int i, bi;
+	int bn = 0;
+	struct winbindd_domain *our_domain = find_our_domain();
 
-	dom = idmap_find_domain(NULL);
-	if (dom == NULL) {
-		DEBUG(3, ("no default domain, no place to write\n"));
-		return NT_STATUS_ACCESS_DENIED;
+	if (! NT_STATUS_IS_OK(ret = idmap_init())) {
+		return ret;
 	}
-	if (dom->methods->set_mapping == NULL) {
-		DEBUG(3, ("default domain not writable\n"));
-		return NT_STATUS_MEDIA_WRITE_PROTECTED;
+
+	if (!ids || !*ids) {
+		DEBUG(1, ("Invalid list of maps\n"));
+		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	return dom->methods->set_mapping(dom, map);
+	ctx = talloc_named_const(NULL, 0, "idmap_unixids_to_sids ctx");
+	if ( ! ctx) {
+		DEBUG(1, ("failed to allocate talloc context, OOM?\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	/* no ids to be asked to the backends by default */
+	bids = NULL;
+	bi = 0;
+
+	for (i = 0; ids[i]; i++) {
+
+		if ( ! ids[i]->sid) {
+			DEBUG(1, ("invalid null SID in id_map array"));
+			talloc_free(ctx);
+			return NT_STATUS_INVALID_PARAMETER;
+		}
+
+		ret = idmap_cache_map_id(idmap_cache, ids[i]);
+
+		if ( ! NT_STATUS_IS_OK(ret)) {
+
+			if ( ! bids) {
+				/* alloc space for ids to be resolved by
+				 * backends (realloc ten by ten) */
+				bids = TALLOC_ARRAY(ctx, struct id_map *, 10);
+				if ( ! bids) {
+					DEBUG(1, ("Out of memory!\n"));
+					talloc_free(ctx);
+					return NT_STATUS_NO_MEMORY;
+				}
+				bn = 10;
+			}
+
+			/* add this id to the ones to be retrieved
+			 * from the backends */
+			bids[bi] = ids[i];
+			bi++;
+
+			/* check if we need to allocate new space
+			 *  on the rids array */
+			if (bi == bn) {
+				bn += 10;
+				bids = talloc_realloc(ctx, bids,
+						      struct id_map *, bn);
+				if ( ! bids) {
+					DEBUG(1, ("Out of memory!\n"));
+					talloc_free(ctx);
+					return NT_STATUS_NO_MEMORY;
+				}
+			}
+
+			/* make sure the last element is NULL */
+			bids[bi] = NULL;
+		}
+	}
+
+	/* let's see if there is any id mapping to be retieved
+	 * from the backends */
+	if (bids) {
+		bool online;
+
+		/* Only do query if we are online */
+		online = !IS_DOMAIN_OFFLINE(our_domain);
+		if (online) {
+			ret = idmap_backends_unixids_to_sids(bids);
+			IDMAP_CHECK_RET(ret);
+		}
+
+		/* update the cache */
+		for (i = 0; i < bi; i++) {
+			if (bids[i]->status == ID_MAPPED) {
+				ret = idmap_cache_set(idmap_cache, bids[i]);
+			} else if (bids[i]->status == ID_EXPIRED) {
+				/* the cache returned an expired entry and the
+				 * backend was not able to clear the situation
+				 * (offline). This handles a previous
+				 * NT_STATUS_SYNCHRONIZATION_REQUIRED
+				 * for disconnected mode, */
+				bids[i]->status = ID_MAPPED;
+			} else if (bids[i]->status == ID_UNKNOWN) {
+				/* something bad here. We were not able to
+				 * handle this for some reason, mark it as
+				 * unmapped and hope next time things will
+				 * settle down. */
+				bids[i]->status = ID_UNMAPPED;
+			} else if (online) { /* unmapped */
+				ret = idmap_cache_set_negative_id(idmap_cache,
+								  bids[i]);
+			}
+			IDMAP_CHECK_RET(ret);
+		}
+	}
+
+	ret = NT_STATUS_OK;
+done:
+	talloc_free(ctx);
+	return ret;
 }
+
+NTSTATUS idmap_sids_to_unixids(struct id_map **ids)
+{
+	TALLOC_CTX *ctx;
+	NTSTATUS ret;
+	struct id_map **bids;
+	int i, bi;
+	int bn = 0;
+	struct winbindd_domain *our_domain = find_our_domain();
+
+	if (! NT_STATUS_IS_OK(ret = idmap_init())) {
+		return ret;
+	}
+
+	if (!ids || !*ids) {
+		DEBUG(1, ("Invalid list of maps\n"));
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	ctx = talloc_named_const(NULL, 0, "idmap_sids_to_unixids ctx");
+	if ( ! ctx) {
+		DEBUG(1, ("failed to allocate talloc context, OOM?\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	/* no ids to be asked to the backends by default */
+	bids = NULL;
+	bi = 0;
+
+	for (i = 0; ids[i]; i++) {
+
+		if ( ! ids[i]->sid) {
+			DEBUG(1, ("invalid null SID in id_map array\n"));
+			talloc_free(ctx);
+			return NT_STATUS_INVALID_PARAMETER;
+		}
+
+		ret = idmap_cache_map_sid(idmap_cache, ids[i]);
+
+		if ( ! NT_STATUS_IS_OK(ret)) {
+
+			if ( ! bids) {
+				/* alloc space for ids to be resolved
+				   by backends (realloc ten by ten) */
+				bids = TALLOC_ARRAY(ctx, struct id_map *, 10);
+				if ( ! bids) {
+					DEBUG(1, ("Out of memory!\n"));
+					talloc_free(ctx);
+					return NT_STATUS_NO_MEMORY;
+				}
+				bn = 10;
+			}
+
+			/* add this id to the ones to be retrieved
+			 * from the backends */
+			bids[bi] = ids[i];
+			bi++;
+
+			/* check if we need to allocate new space
+			 * on the ids array */
+			if (bi == bn) {
+				bn += 10;
+				bids = talloc_realloc(ctx, bids,
+						      struct id_map *, bn);
+				if ( ! bids) {
+					DEBUG(1, ("Out of memory!\n"));
+					talloc_free(ctx);
+					return NT_STATUS_NO_MEMORY;
+				}
+			}
+
+			/* make sure the last element is NULL */
+			bids[bi] = NULL;
+		}
+	}
+
+	/* let's see if there is any id mapping to be retieved
+	 * from the backends */
+	if (bids) {
+		bool online;
+
+		/* Only do query if we are online */
+		online = !IS_DOMAIN_OFFLINE(our_domain);
+		if (online) {
+			ret = idmap_backends_sids_to_unixids(bids);
+			IDMAP_CHECK_RET(ret);
+		}
+
+		/* update the cache */
+		for (i = 0; bids[i]; i++) {
+			if (bids[i]->status == ID_MAPPED) {
+				ret = idmap_cache_set(idmap_cache, bids[i]);
+			} else if (bids[i]->status == ID_EXPIRED) {
+				/* the cache returned an expired entry and the
+				 * backend was not able to clear the situation
+				 * (offline). This handles a previous
+				 * NT_STATUS_SYNCHRONIZATION_REQUIRED
+				 * for disconnected mode, */
+				bids[i]->status = ID_MAPPED;
+			} else if (bids[i]->status == ID_UNKNOWN) {
+				/* something bad here. We were not able to
+				 * handle this for some reason, mark it as
+				 * unmapped and hope next time things will
+				 * settle down. */
+				bids[i]->status = ID_UNMAPPED;
+			} else if (online) { /* unmapped */
+				ret = idmap_cache_set_negative_sid(idmap_cache,
+								   bids[i]);
+			}
+			IDMAP_CHECK_RET(ret);
+		}
+	}
+
+	ret = NT_STATUS_OK;
+done:
+	talloc_free(ctx);
+	return ret;
+}
+
+NTSTATUS idmap_set_mapping(const struct id_map *id)
+{
+	TALLOC_CTX *ctx;
+	NTSTATUS ret;
+
+	if (! NT_STATUS_IS_OK(ret = idmap_init())) {
+		return ret;
+	}
+
+	/* sanity checks */
+	if ((id->sid == NULL) || (id->status != ID_MAPPED)) {
+		DEBUG(1, ("NULL SID or unmapped entry\n"));
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	/* TODO: check uid/gid range ? */
+
+	ctx = talloc_named_const(NULL, 0, "idmap_set_mapping ctx");
+	if ( ! ctx) {
+		DEBUG(1, ("failed to allocate talloc context, OOM?\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	/* set the new mapping */
+	ret = idmap_backends_set_mapping(id);
+	IDMAP_CHECK_RET(ret);
+
+	/* set the mapping in the cache */
+	ret = idmap_cache_set(idmap_cache, id);
+	IDMAP_CHECK_RET(ret);
+
+done:
+	talloc_free(ctx);
+	return ret;
+}
+
+char *idmap_fetch_secret(const char *backend, bool alloc,
+			       const char *domain, const char *identity)
+{
+	char *tmp, *ret;
+	int r;
+
+	if (alloc) {
+		r = asprintf(&tmp, "IDMAP_ALLOC_%s", backend);
+	} else {
+		r = asprintf(&tmp, "IDMAP_%s_%s", backend, domain);
+	}
+
+	if (r < 0)
+		return NULL;
+
+	strupper_m(tmp); /* make sure the key is case insensitive */
+	ret = secrets_fetch_generic(tmp, identity);
+
+	SAFE_FREE(tmp);
+
+	return ret;
+}
+

Modified: branches/samba/upstream/source/winbindd/idmap_ad.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_ad.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_ad.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -160,8 +160,7 @@
 /************************************************************************
  ***********************************************************************/
 
-static NTSTATUS idmap_ad_initialize(struct idmap_domain *dom,
-				    const char *params)
+static NTSTATUS idmap_ad_initialize(struct idmap_domain *dom)
 {
 	struct idmap_ad_context *ctx;
 	char *config_option;
@@ -207,6 +206,7 @@
 	}
 
 	dom->private_data = ctx;
+	dom->initialized = True;
 
 	talloc_free(config_option);
 
@@ -277,6 +277,14 @@
 		return NT_STATUS_FILE_IS_OFFLINE;
 	}
 
+	/* Initilization my have been deferred because we were offline */
+	if ( ! dom->initialized) {
+		ret = idmap_ad_initialize(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_ad_context);
 
 	if ( (memctx = talloc_new(ctx)) == NULL ) {
@@ -488,6 +496,14 @@
 		return NT_STATUS_FILE_IS_OFFLINE;
 	}
 
+	/* Initilization my have been deferred because we were offline */
+	if ( ! dom->initialized) {
+		ret = idmap_ad_initialize(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_ad_context);	
 
 	if ( (memctx = talloc_new(ctx)) == NULL ) {		
@@ -818,159 +834,6 @@
 	return nt_status;
 }
 
-/**********************************************************************
- *********************************************************************/
-
-static NTSTATUS nss_ad_map_to_alias(TALLOC_CTX *mem_ctx,
-				    const char *domain,
-				    const char *name,
-				    char **alias)
-{
-	ADS_STRUCT *ads_internal = NULL;
-	const char *attrs[] = {NULL, /* attr_uid */
-			       NULL };
-	char *filter = NULL;
-	LDAPMessage *msg = NULL;
-	ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
-	/* Check incoming parameters */
-
-	if ( !domain || !name || !*alias) {
-		nt_status = NT_STATUS_INVALID_PARAMETER;
-		goto done;
-	}
-
-	/* Only do query if we are online */
-
-	if (idmap_is_offline())	{
-		nt_status = NT_STATUS_FILE_IS_OFFLINE;
-		goto done;
-	}
-
-	ads_internal = ad_idmap_cached_connection();
-
-	if (!ads_internal || !ad_schema) {
-		nt_status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
-		goto done;
-	}
-
-	attrs[0] = ad_schema->posix_uid_attr;
-
-	filter = talloc_asprintf(mem_ctx,
-				 "(sAMAccountName=%s)",
-				 name);
-	if (!filter) {
-		nt_status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	ads_status = ads_search_retry(ads_internal, &msg, filter, attrs);
-	if (!ADS_ERR_OK(ads_status)) {
-		nt_status = ads_ntstatus(ads_status);
-		goto done;
-	}
-
-	*alias = ads_pull_string(ads_internal, mem_ctx, msg, ad_schema->posix_uid_attr );
-
-	if (!*alias) {
-		return NT_STATUS_OBJECT_NAME_NOT_FOUND;
-	}
-
-	nt_status = NT_STATUS_OK;
-
-done:
-	if (filter) {
-		talloc_destroy(filter);
-	}
-	if (msg) {
-		ads_msgfree(ads_internal, msg);
-	}
-
-	return nt_status;
-}
-
-/**********************************************************************
- *********************************************************************/
-
-static NTSTATUS nss_ad_map_from_alias( TALLOC_CTX *mem_ctx,
-					     const char *domain,
-					     const char *alias,
-					     char **name )
-{
-	ADS_STRUCT *ads_internal = NULL;
-	const char *attrs[] = {"sAMAccountName",
-			       NULL };
-	char *filter = NULL;
-	LDAPMessage *msg = NULL;
-	ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-	char *username;
-
-	/* Check incoming parameters */
-
-	if ( !alias || !name) {
-		nt_status = NT_STATUS_INVALID_PARAMETER;
-		goto done;
-	}
-
-	/* Only do query if we are online */
-
-	if (idmap_is_offline())	{
-		nt_status = NT_STATUS_FILE_IS_OFFLINE;
-		goto done;
-	}
-
-	ads_internal = ad_idmap_cached_connection();
-
-	if (!ads_internal || !ad_schema) {
-		nt_status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
-		goto done;
-	}
-
-	filter = talloc_asprintf(mem_ctx,
-				 "(%s=%s)",
-				 ad_schema->posix_uid_attr,
-				 alias);
-	if (!filter) {
-		nt_status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	ads_status = ads_search_retry(ads_internal, &msg, filter, attrs);
-	if (!ADS_ERR_OK(ads_status)) {
-		nt_status = ads_ntstatus(ads_status);
-		goto done;
-	}
-
-      	username = ads_pull_string(ads_internal, mem_ctx, msg,
-				   "sAMAccountName");
-	if (!username) {
-		return NT_STATUS_OBJECT_NAME_NOT_FOUND;
-	}
-
-	*name = talloc_asprintf(mem_ctx, "%s\\%s",
-				lp_workgroup(),
-				username);
-	if (!*name) {
-		nt_status = NT_STATUS_NO_MEMORY;
-		goto done;
-	}
-
-	nt_status = NT_STATUS_OK;
-
-done:
-	if (filter) {
-		talloc_destroy(filter);
-	}
-	if (msg) {
-		ads_msgfree(ads_internal, msg);
-	}
-
-	return nt_status;
-}
-
-
 /************************************************************************
  ***********************************************************************/
 
@@ -996,27 +859,21 @@
    function which sets the intended schema model to use */
   
 static struct nss_info_methods nss_rfc2307_methods = {
-	.init           = nss_rfc2307_init,
-	.get_nss_info   = nss_ad_get_info,
-	.map_to_alias   = nss_ad_map_to_alias,
-	.map_from_alias = nss_ad_map_from_alias,
-	.close_fn       = nss_ad_close
+	.init         = nss_rfc2307_init,
+	.get_nss_info =	nss_ad_get_info,
+	.close_fn     = nss_ad_close
 };
 
 static struct nss_info_methods nss_sfu_methods = {
-	.init           = nss_sfu_init,
-	.get_nss_info   = nss_ad_get_info,
-	.map_to_alias   = nss_ad_map_to_alias,
-	.map_from_alias = nss_ad_map_from_alias,
-	.close_fn       = nss_ad_close
+	.init         = nss_sfu_init,
+	.get_nss_info =	nss_ad_get_info,
+	.close_fn     = nss_ad_close
 };
 
 static struct nss_info_methods nss_sfu20_methods = {
-	.init           = nss_sfu20_init,
-	.get_nss_info   = nss_ad_get_info,
-	.map_to_alias   = nss_ad_map_to_alias,
-	.map_from_alias = nss_ad_map_from_alias,
-	.close_fn       = nss_ad_close
+	.init         = nss_sfu20_init,
+	.get_nss_info =	nss_ad_get_info,
+	.close_fn     = nss_ad_close
 };
 
 

Copied: branches/samba/upstream/source/winbindd/idmap_cache.c (from rev 2163, branches/samba/upstream/source/winbindd/idmap_cache.c)
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_cache.c	                        (rev 0)
+++ branches/samba/upstream/source/winbindd/idmap_cache.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -0,0 +1,534 @@
+/* 
+   Unix SMB/CIFS implementation.
+   ID Mapping Cache
+
+   based on gencache
+
+   Copyright (C) Simo Sorce		2006
+   Copyright (C) Rafal Szczesniak	2002
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.*/
+
+#include "includes.h"
+#include "winbindd.h"
+
+#define TIMEOUT_LEN 12
+#define IDMAP_CACHE_DATA_FMT	"%12u/%s"
+#define IDMAP_READ_CACHE_DATA_FMT_TEMPLATE "%%12u/%%%us"
+
+struct idmap_cache_ctx {
+	TDB_CONTEXT *tdb;
+};
+
+static int idmap_cache_destructor(struct idmap_cache_ctx *cache)
+{
+	int ret = 0;
+
+	if (cache && cache->tdb) {
+		ret = tdb_close(cache->tdb);
+		cache->tdb = NULL;
+	}
+
+	return ret;
+}
+
+struct idmap_cache_ctx *idmap_cache_init(TALLOC_CTX *memctx)
+{
+	struct idmap_cache_ctx *cache;
+	char* cache_fname = NULL;
+
+	cache = talloc(memctx, struct idmap_cache_ctx);
+	if ( ! cache) {
+		DEBUG(0, ("Out of memory!\n"));
+		return NULL;
+	}
+
+	cache_fname = lock_path("idmap_cache.tdb");
+
+	DEBUG(10, ("Opening cache file at %s\n", cache_fname));
+
+	cache->tdb = tdb_open_log(cache_fname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+
+	if (!cache->tdb) {
+		DEBUG(5, ("Attempt to open %s has failed.\n", cache_fname));
+		return NULL;
+	}
+
+	talloc_set_destructor(cache, idmap_cache_destructor);
+
+	return cache;
+}
+
+void idmap_cache_shutdown(struct idmap_cache_ctx *cache)
+{
+	talloc_free(cache);
+}
+
+NTSTATUS idmap_cache_build_sidkey(TALLOC_CTX *ctx, char **sidkey, const struct id_map *id)
+{
+	fstring sidstr;
+
+	*sidkey = talloc_asprintf(ctx, "IDMAP/SID/%s",
+				  sid_to_fstring(sidstr, id->sid));
+	if ( ! *sidkey) {
+		DEBUG(1, ("failed to build sidkey, OOM?\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	return NT_STATUS_OK;
+}
+
+NTSTATUS idmap_cache_build_idkey(TALLOC_CTX *ctx, char **idkey, const struct id_map *id)
+{
+	*idkey = talloc_asprintf(ctx, "IDMAP/%s/%lu",
+				(id->xid.type==ID_TYPE_UID)?"UID":"GID",
+				(unsigned long)id->xid.id);
+	if ( ! *idkey) {
+		DEBUG(1, ("failed to build idkey, OOM?\n"));
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	return NT_STATUS_OK;
+}
+
+NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
+{
+	NTSTATUS ret;
+	time_t timeout = time(NULL) + lp_idmap_cache_time();
+	TDB_DATA databuf;
+	char *sidkey;
+	char *idkey;
+	char *valstr;
+
+	/* Don't cache lookups in the S-1-22-{1,2} domain */
+	if ( (id->xid.type == ID_TYPE_UID) && 
+	     sid_check_is_in_unix_users(id->sid) )
+	{
+		return NT_STATUS_OK;
+	}
+	if ( (id->xid.type == ID_TYPE_GID) && 
+	     sid_check_is_in_unix_groups(id->sid) )
+	{
+		return NT_STATUS_OK;
+	}
+	
+
+	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
+	if (!NT_STATUS_IS_OK(ret)) return ret;
+
+	/* use sidkey as the local memory ctx */
+	ret = idmap_cache_build_idkey(sidkey, &idkey, id);
+	if (!NT_STATUS_IS_OK(ret)) {
+		goto done;
+	}
+
+	/* save SID -> ID */
+
+	/* use sidkey as the local memory ctx */
+	valstr = talloc_asprintf(sidkey, IDMAP_CACHE_DATA_FMT, (int)timeout, idkey);
+	if (!valstr) {
+		DEBUG(0, ("Out of memory!\n"));
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
+
+	databuf = string_term_tdb_data(valstr);
+	DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
+	           " %s (%d seconds %s)\n", sidkey, valstr , ctime(&timeout),
+		   (int)(timeout - time(NULL)), 
+		   timeout > time(NULL) ? "ahead" : "in the past"));
+
+	if (tdb_store_bystring(cache->tdb, sidkey, databuf, TDB_REPLACE) != 0) {
+		DEBUG(3, ("Failed to store cache entry!\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
+	}
+
+	/* save ID -> SID */
+
+	/* use sidkey as the local memory ctx */
+	valstr = talloc_asprintf(sidkey, IDMAP_CACHE_DATA_FMT, (int)timeout, sidkey);
+	if (!valstr) {
+		DEBUG(0, ("Out of memory!\n"));
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
+
+	databuf = string_term_tdb_data(valstr);
+	DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
+	           " %s (%d seconds %s)\n", idkey, valstr, ctime(&timeout),
+		   (int)(timeout - time(NULL)), 
+		   timeout > time(NULL) ? "ahead" : "in the past"));
+
+	if (tdb_store_bystring(cache->tdb, idkey, databuf, TDB_REPLACE) != 0) {
+		DEBUG(3, ("Failed to store cache entry!\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
+	}
+
+	ret = NT_STATUS_OK;
+
+done:
+	talloc_free(sidkey);
+	return ret;
+}
+
+NTSTATUS idmap_cache_set_negative_sid(struct idmap_cache_ctx *cache, const struct id_map *id)
+{
+	NTSTATUS ret;
+	time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
+	TDB_DATA databuf;
+	char *sidkey;
+	char *valstr;
+
+	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
+	if (!NT_STATUS_IS_OK(ret)) return ret;
+
+	/* use sidkey as the local memory ctx */
+	valstr = talloc_asprintf(sidkey, IDMAP_CACHE_DATA_FMT, (int)timeout, "IDMAP/NEGATIVE");
+	if (!valstr) {
+		DEBUG(0, ("Out of memory!\n"));
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
+
+	databuf = string_term_tdb_data(valstr);
+	DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
+	           " %s (%d seconds %s)\n", sidkey, valstr, ctime(&timeout),
+		   (int)(timeout - time(NULL)), 
+		   timeout > time(NULL) ? "ahead" : "in the past"));
+
+	if (tdb_store_bystring(cache->tdb, sidkey, databuf, TDB_REPLACE) != 0) {
+		DEBUG(3, ("Failed to store cache entry!\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
+	}
+
+done:
+	talloc_free(sidkey);
+	return ret;
+}
+
+NTSTATUS idmap_cache_set_negative_id(struct idmap_cache_ctx *cache, const struct id_map *id)
+{
+	NTSTATUS ret;
+	time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
+	TDB_DATA databuf;
+	char *idkey;
+	char *valstr;
+
+	ret = idmap_cache_build_idkey(cache, &idkey, id);
+	if (!NT_STATUS_IS_OK(ret)) return ret;
+
+	/* use idkey as the local memory ctx */
+	valstr = talloc_asprintf(idkey, IDMAP_CACHE_DATA_FMT, (int)timeout, "IDMAP/NEGATIVE");
+	if (!valstr) {
+		DEBUG(0, ("Out of memory!\n"));
+		ret = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
+
+	databuf = string_term_tdb_data(valstr);
+	DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
+	           " %s (%d seconds %s)\n", idkey, valstr, ctime(&timeout),
+		   (int)(timeout - time(NULL)), 
+		   timeout > time(NULL) ? "ahead" : "in the past"));
+
+	if (tdb_store_bystring(cache->tdb, idkey, databuf, TDB_REPLACE) != 0) {
+		DEBUG(3, ("Failed to store cache entry!\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
+		goto done;
+	}
+
+done:
+	talloc_free(idkey);
+	return ret;
+}
+
+NTSTATUS idmap_cache_fill_map(struct id_map *id, const char *value)
+{
+	char *rem;
+
+	/* see if it is a sid */
+	if ( ! strncmp("IDMAP/SID/", value, 10)) {
+		
+		if ( ! string_to_sid(id->sid, &value[10])) {
+			goto failed;
+		}
+		
+		id->status = ID_MAPPED;
+
+		return NT_STATUS_OK;
+	}
+
+	/* not a SID see if it is an UID or a GID */
+	if ( ! strncmp("IDMAP/UID/", value, 10)) {
+		
+		/* a uid */
+		id->xid.type = ID_TYPE_UID;
+		
+	} else if ( ! strncmp("IDMAP/GID/", value, 10)) {
+		
+		/* a gid */
+		id->xid.type = ID_TYPE_GID;
+		
+	} else {
+		
+		/* a completely bogus value bail out */
+		goto failed;
+	}
+	
+	id->xid.id = strtol(&value[10], &rem, 0);
+	if (*rem != '\0') {
+		goto failed;
+	}
+
+	id->status = ID_MAPPED;
+
+	return NT_STATUS_OK;
+
+failed:
+	DEBUG(1, ("invalid value: %s\n", value));
+	id->status = ID_UNKNOWN;
+	return NT_STATUS_INTERNAL_DB_CORRUPTION;
+}
+
+bool idmap_cache_is_negative(const char *val)
+{
+	if ( ! strcmp("IDMAP/NEGATIVE", val)) {
+		return True;
+	}
+	return False;
+}
+
+/* search the cahce for the SID an return a mapping if found *
+ *
+ * 4 cases are possible
+ *
+ * 1 map found
+ * 	in this case id->status = ID_MAPPED and NT_STATUS_OK is returned
+ * 2 map not found
+ * 	in this case id->status = ID_UNKNOWN and NT_STATUS_NONE_MAPPED is returned
+ * 3 negative cache found
+ * 	in this case id->status = ID_UNMAPPED and NT_STATUS_OK is returned
+ * 4 map found but timer expired
+ *      in this case id->status = ID_EXPIRED and NT_STATUS_SYNCHRONIZATION_REQUIRED
+ *      is returned. In this case revalidation of the cache is needed.
+ */
+
+NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
+{
+	NTSTATUS ret;
+	TDB_DATA databuf;
+	time_t t;
+	char *sidkey;
+	char *endptr;
+	struct winbindd_domain *our_domain = find_our_domain();	
+	time_t now = time(NULL);	
+
+	/* make sure it is marked as not mapped by default */
+	id->status = ID_UNKNOWN;
+	
+	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
+	if (!NT_STATUS_IS_OK(ret)) return ret;
+
+	databuf = tdb_fetch_bystring(cache->tdb, sidkey);
+
+	if (databuf.dptr == NULL) {
+		DEBUG(10, ("Cache entry with key = %s couldn't be found\n", sidkey));
+		ret = NT_STATUS_NONE_MAPPED;
+		goto done;
+	}
+
+	t = strtol((const char *)databuf.dptr, &endptr, 10);
+
+	if ((endptr == NULL) || (*endptr != '/')) {
+		DEBUG(2, ("Invalid gencache data format: %s\n", (const char *)databuf.dptr));
+		/* remove the entry */
+		tdb_delete_bystring(cache->tdb, sidkey);
+		ret = NT_STATUS_NONE_MAPPED;
+		goto done;
+	}
+
+	/* check it is not negative */
+	if (strcmp("IDMAP/NEGATIVE", endptr+1) != 0) {
+
+		DEBUG(10, ("Returning %s cache entry: key = %s, value = %s, "
+			   "timeout = %s", t > now ? "valid" :
+			   "expired", sidkey, endptr+1, ctime(&t)));
+
+		/* this call if successful will also mark the entry as mapped */
+		ret = idmap_cache_fill_map(id, endptr+1);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			/* if not valid form delete the entry */
+			tdb_delete_bystring(cache->tdb, sidkey);
+			ret = NT_STATUS_NONE_MAPPED;
+			goto done;
+		}
+
+		/* here ret == NT_STATUS_OK and id->status = ID_MAPPED */
+
+		if (t <= now) {
+			/* If we've been told to be offline - stay in 
+			   that state... */
+			if ( IS_DOMAIN_OFFLINE(our_domain) ) {
+				DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
+				goto done;				
+			}
+				
+			/* We're expired, set an error code
+			   for upper layer */
+			ret = NT_STATUS_SYNCHRONIZATION_REQUIRED;
+		}
+
+		goto done;		
+	}
+
+	/* Was a negative cache hit */
+
+	/* Ignore the negative cache when offline */
+
+	if ( IS_DOMAIN_OFFLINE(our_domain) ) {
+		DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
+		goto done;
+	}
+
+
+	/* Check for valid or expired cache hits */
+		if (t <= now) {
+		/* We're expired. Return not mapped */
+			ret = NT_STATUS_NONE_MAPPED;
+		} else {
+			/* this is not mapped as it was a negative cache hit */
+			id->status = ID_UNMAPPED;
+			ret = NT_STATUS_OK;
+		}
+	
+done:
+	SAFE_FREE(databuf.dptr);
+	talloc_free(sidkey);
+	return ret;
+}
+
+/* search the cahce for the ID an return a mapping if found *
+ *
+ * 4 cases are possible
+ *
+ * 1 map found
+ * 	in this case id->status = ID_MAPPED and NT_STATUS_OK is returned
+ * 2 map not found
+ * 	in this case id->status = ID_UNKNOWN and NT_STATUS_NONE_MAPPED is returned
+ * 3 negative cache found
+ * 	in this case id->status = ID_UNMAPPED and NT_STATUS_OK is returned
+ * 4 map found but timer expired
+ *      in this case id->status = ID_EXPIRED and NT_STATUS_SYNCHRONIZATION_REQUIRED
+ *      is returned. In this case revalidation of the cache is needed.
+ */
+
+NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
+{
+	NTSTATUS ret;
+	TDB_DATA databuf;
+	time_t t;
+	char *idkey;
+	char *endptr;
+	struct winbindd_domain *our_domain = find_our_domain();	
+	time_t now = time(NULL);	
+
+	/* make sure it is marked as unknown by default */
+	id->status = ID_UNKNOWN;
+	
+	ret = idmap_cache_build_idkey(cache, &idkey, id);
+	if (!NT_STATUS_IS_OK(ret)) return ret;
+
+	databuf = tdb_fetch_bystring(cache->tdb, idkey);
+
+	if (databuf.dptr == NULL) {
+		DEBUG(10, ("Cache entry with key = %s couldn't be found\n", idkey));
+		ret = NT_STATUS_NONE_MAPPED;
+		goto done;
+	}
+
+	t = strtol((const char *)databuf.dptr, &endptr, 10);
+
+	if ((endptr == NULL) || (*endptr != '/')) {
+		DEBUG(2, ("Invalid gencache data format: %s\n", (const char *)databuf.dptr));
+		/* remove the entry */
+		tdb_delete_bystring(cache->tdb, idkey);
+		ret = NT_STATUS_NONE_MAPPED;
+		goto done;
+	}
+
+	/* check it is not negative */
+	if (strcmp("IDMAP/NEGATIVE", endptr+1) != 0) {
+		
+		DEBUG(10, ("Returning %s cache entry: key = %s, value = %s, "
+			   "timeout = %s", t > now ? "valid" :
+			   "expired", idkey, endptr+1, ctime(&t)));
+
+		/* this call if successful will also mark the entry as mapped */
+		ret = idmap_cache_fill_map(id, endptr+1);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			/* if not valid form delete the entry */
+			tdb_delete_bystring(cache->tdb, idkey);
+			ret = NT_STATUS_NONE_MAPPED;
+			goto done;
+		}
+
+		/* here ret == NT_STATUS_OK and id->mapped = ID_MAPPED */
+
+		if (t <= now) {
+			/* If we've been told to be offline - stay in
+			   that state... */
+			if ( IS_DOMAIN_OFFLINE(our_domain) ) {
+				DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
+				goto done;
+			}
+
+			/* We're expired, set an error code
+			   for upper layer */
+			ret = NT_STATUS_SYNCHRONIZATION_REQUIRED;
+		}
+
+		goto done;
+	}
+	
+	/* Was a negative cache hit */
+
+	/* Ignore the negative cache when offline */
+
+	if ( IS_DOMAIN_OFFLINE(our_domain) ) {
+		DEBUG(10,("idmap_cache_map_sid: idmap is offline\n"));
+		ret = NT_STATUS_NONE_MAPPED;
+		
+		goto done;
+	}
+
+	/* Process the negative cache hit */
+
+		if (t <= now) {
+		/* We're expired.  Return not mapped */
+			ret = NT_STATUS_NONE_MAPPED;
+		} else {
+		/* this is not mapped is it was a negative cache hit */
+			id->status = ID_UNMAPPED;
+			ret = NT_STATUS_OK;
+		}
+
+done:
+	SAFE_FREE(databuf.dptr);
+	talloc_free(idkey);
+	return ret;
+}
+

Modified: branches/samba/upstream/source/winbindd/idmap_ldap.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_ldap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_ldap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -33,29 +33,6 @@
 
 #include "smbldap.h"
 
-static char *idmap_fetch_secret(const char *backend, bool alloc,
-				const char *domain, const char *identity)
-{
-	char *tmp, *ret;
-	int r;
-
-	if (alloc) {
-		r = asprintf(&tmp, "IDMAP_ALLOC_%s", backend);
-	} else {
-		r = asprintf(&tmp, "IDMAP_%s_%s", backend, domain);
-	}
-
-	if (r < 0)
-		return NULL;
-
-	strupper_m(tmp); /* make sure the key is case insensitive */
-	ret = secrets_fetch_generic(tmp, identity);
-
-	SAFE_FREE(tmp);
-
-	return ret;
-}
-
 struct idmap_ldap_context {
 	struct smbldap_state *smbldap_state;
 	char *url;
@@ -246,6 +223,7 @@
 static NTSTATUS idmap_ldap_alloc_init(const char *params)
 {
 	NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
+	const char *range;
 	const char *tmp;
 	uid_t low_uid = 0;
 	uid_t high_uid = 0;
@@ -262,27 +240,50 @@
 
 	/* load ranges */
 
-	if (!lp_idmap_uid(&low_uid, &high_uid)
-	    || !lp_idmap_gid(&low_gid, &high_gid)) {
-		DEBUG(1, ("idmap uid or idmap gid missing\n"));
-		ret = NT_STATUS_UNSUCCESSFUL;
-		goto done;
+	idmap_alloc_ldap->low_uid = 0;
+	idmap_alloc_ldap->high_uid = 0;
+	idmap_alloc_ldap->low_gid = 0;
+	idmap_alloc_ldap->high_gid = 0;
+
+	range = lp_parm_const_string(-1, "idmap alloc config", "range", NULL);
+	if (range && range[0]) {
+		unsigned low_id, high_id;
+
+		if (sscanf(range, "%u - %u", &low_id, &high_id) == 2) {
+			if (low_id < high_id) {
+				idmap_alloc_ldap->low_gid = low_id;
+				idmap_alloc_ldap->low_uid = low_id;
+				idmap_alloc_ldap->high_gid = high_id;
+				idmap_alloc_ldap->high_uid = high_id;
+			} else {
+				DEBUG(1, ("ERROR: invalid idmap alloc range "
+					  "[%s]", range));
+			}
+		} else {
+			DEBUG(1, ("ERROR: invalid syntax for idmap alloc "
+				  "config:range [%s]", range));
+		}
 	}
 
-	idmap_alloc_ldap->low_uid = low_uid;
-	idmap_alloc_ldap->high_uid = high_uid;
-	idmap_alloc_ldap->low_gid = low_gid;
-	idmap_alloc_ldap->high_gid= high_gid;
+	if (lp_idmap_uid(&low_uid, &high_uid)) {
+		idmap_alloc_ldap->low_uid = low_uid;
+		idmap_alloc_ldap->high_uid = high_uid;
+	}
 
+	if (lp_idmap_gid(&low_gid, &high_gid)) {
+		idmap_alloc_ldap->low_gid = low_gid;
+		idmap_alloc_ldap->high_gid= high_gid;
+	}
+
 	if (idmap_alloc_ldap->high_uid <= idmap_alloc_ldap->low_uid) {
-		DEBUG(1, ("idmap uid range invalid\n"));
+		DEBUG(1, ("idmap uid range missing or invalid\n"));
 		DEBUGADD(1, ("idmap will be unable to map foreign SIDs\n"));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
 
 	if (idmap_alloc_ldap->high_gid <= idmap_alloc_ldap->low_gid) {
-		DEBUG(1, ("idmap gid range invalid\n"));
+		DEBUG(1, ("idmap gid range missing or invalid\n"));
 		DEBUGADD(1, ("idmap will be unable to map foreign SIDs\n"));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
@@ -759,8 +760,7 @@
  Initialise idmap database.
 ********************************/
 
-static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom,
-				   const char *params)
+static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
 {
 	NTSTATUS ret;
 	struct idmap_ldap_context *ctx = NULL;
@@ -798,9 +798,9 @@
 		}
 	}
 
-	if (params != NULL) {
+	if (dom->params && *(dom->params)) {
 		/* assume location is the only parameter */
-		ctx->url = talloc_strdup(ctx, params);
+		ctx->url = talloc_strdup(ctx, dom->params);
 	} else {
 		tmp = lp_parm_const_string(-1, config_option, "ldap_url", NULL);
 
@@ -848,6 +848,7 @@
 	talloc_set_destructor(ctx, idmap_ldap_close_destructor);
 
 	dom->private_data = ctx;
+	dom->initialized = True;
 
 	talloc_free(config_option);
 	return NT_STATUS_OK;
@@ -908,6 +909,14 @@
 		return NT_STATUS_FILE_IS_OFFLINE;
 	}
 
+	/* Initilization my have been deferred because we were offline */
+	if ( ! dom->initialized) {
+		ret = idmap_ldap_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
 
 	memctx = talloc_new(ctx);
@@ -1129,6 +1138,14 @@
 		return NT_STATUS_FILE_IS_OFFLINE;
 	}
 
+	/* Initilization my have been deferred because we were offline */
+	if ( ! dom->initialized) {
+		ret = idmap_ldap_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
 
 	memctx = talloc_new(ctx);
@@ -1333,6 +1350,14 @@
 		return NT_STATUS_FILE_IS_OFFLINE;
 	}
 
+	/* Initilization my have been deferred because we were offline */
+	if ( ! dom->initialized) {
+		ret = idmap_ldap_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);
 
 	switch(map->xid.type) {
@@ -1457,13 +1482,12 @@
 	/* .dump_data = TODO */
 };
 
-static NTSTATUS idmap_alloc_ldap_init(void)
+NTSTATUS idmap_alloc_ldap_init(void)
 {
 	return smb_register_idmap_alloc(SMB_IDMAP_INTERFACE_VERSION, "ldap",
 					&idmap_ldap_alloc_methods);
 }
 
-NTSTATUS idmap_ldap_init(void);
 NTSTATUS idmap_ldap_init(void)
 {
 	NTSTATUS ret;

Modified: branches/samba/upstream/source/winbindd/idmap_nss.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_nss.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_nss.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -29,9 +29,9 @@
  Initialise idmap database. 
 *****************************/
 
-static NTSTATUS idmap_nss_int_init(struct idmap_domain *dom,
-				   const char *params)
+static NTSTATUS idmap_nss_int_init(struct idmap_domain *dom)
 {	
+	dom->initialized = True;
 	return NT_STATUS_OK;
 }
 
@@ -44,6 +44,10 @@
 	TALLOC_CTX *ctx;
 	int i;
 
+	if (! dom->initialized) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
 	ctx = talloc_new(dom);
 	if ( ! ctx) {
 		DEBUG(0, ("Out of memory!\n"));
@@ -130,6 +134,10 @@
 	TALLOC_CTX *ctx;
 	int i;
 
+	if (! dom->initialized) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
 	ctx = talloc_new(dom);
 	if ( ! ctx) {
 		DEBUG(0, ("Out of memory!\n"));

Modified: branches/samba/upstream/source/winbindd/idmap_passdb.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_passdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_passdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -28,8 +28,9 @@
  Initialise idmap database. 
 *****************************/
 
-static NTSTATUS idmap_pdb_init(struct idmap_domain *dom, const char *params)
+static NTSTATUS idmap_pdb_init(struct idmap_domain *dom)
 {	
+	dom->initialized = True;
 	return NT_STATUS_OK;
 }
 
@@ -41,6 +42,10 @@
 {
 	int i;
 
+	if (! dom->initialized) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
 	for (i = 0; ids[i]; i++) {
 
 		/* unmapped by default */
@@ -73,6 +78,10 @@
 {
 	int i;
 
+	if (! dom->initialized) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
 	for (i = 0; ids[i]; i++) {
 		enum lsa_SidType type;
 		union unid_t id;

Modified: branches/samba/upstream/source/winbindd/idmap_rid.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_rid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_rid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -36,8 +36,7 @@
   we support multiple domains in the new idmap
  *****************************************************************************/
 
-static NTSTATUS idmap_rid_initialize(struct idmap_domain *dom,
-				     const char *params)
+static NTSTATUS idmap_rid_initialize(struct idmap_domain *dom)
 {
 	NTSTATUS ret;
 	struct idmap_rid_context *ctx;
@@ -96,6 +95,7 @@
 	ctx->domain_name = talloc_strdup( ctx, dom->name );
 	
 	dom->private_data = ctx;
+	dom->initialized = True;
 
 	talloc_free(config_option);
 	return NT_STATUS_OK;
@@ -171,6 +171,14 @@
 	NTSTATUS ret;
 	int i;
 
+	/* Initilization my have been deferred because of an error, retry or fail */
+	if ( ! dom->initialized) {
+		ret = idmap_rid_initialize(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ridctx = talloc_get_type(dom->private_data, struct idmap_rid_context);
 
 	ctx = talloc_new(dom);
@@ -205,6 +213,14 @@
 	NTSTATUS ret;
 	int i;
 
+	/* Initilization my have been deferred because of an error, retry or fail */
+	if ( ! dom->initialized) {
+		ret = idmap_rid_initialize(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ridctx = talloc_get_type(dom->private_data, struct idmap_rid_context);
 
 	ctx = talloc_new(dom);

Modified: branches/samba/upstream/source/winbindd/idmap_tdb.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_tdb.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_tdb.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -313,11 +313,11 @@
 {
 	NTSTATUS ret;
 	TALLOC_CTX *ctx;
+	const char *range;
 	uid_t low_uid = 0;
 	uid_t high_uid = 0;
 	gid_t low_gid = 0;
 	gid_t high_gid = 0;
-	uint32_t low_id;
 
 	/* use our own context here */
 	ctx = talloc_new(NULL);
@@ -335,50 +335,70 @@
 	talloc_free(ctx);
 
 	/* load ranges */
+	idmap_tdb_state.low_uid = 0;
+	idmap_tdb_state.high_uid = 0;
+	idmap_tdb_state.low_gid = 0;
+	idmap_tdb_state.high_gid = 0;
 
-	if (!lp_idmap_uid(&low_uid, &high_uid)
-	    || !lp_idmap_gid(&low_gid, &high_gid)) {
-		DEBUG(1, ("idmap uid or idmap gid missing\n"));
-		return NT_STATUS_UNSUCCESSFUL;
+	range = lp_parm_const_string(-1, "idmap alloc config", "range", NULL);
+	if (range && range[0]) {
+		unsigned low_id, high_id;
+
+		if (sscanf(range, "%u - %u", &low_id, &high_id) == 2) {
+			if (low_id < high_id) {
+				idmap_tdb_state.low_gid = idmap_tdb_state.low_uid = low_id;
+				idmap_tdb_state.high_gid = idmap_tdb_state.high_uid = high_id;
+			} else {
+				DEBUG(1, ("ERROR: invalid idmap alloc range [%s]", range));
+			}
+		} else {
+			DEBUG(1, ("ERROR: invalid syntax for idmap alloc config:range [%s]", range));
+		}
 	}
 
-	idmap_tdb_state.low_uid = low_uid;
-	idmap_tdb_state.high_uid = high_uid;
-	idmap_tdb_state.low_gid = low_gid;
-	idmap_tdb_state.high_gid = high_gid;
+	/* Create high water marks for group and user id */
+	if (lp_idmap_uid(&low_uid, &high_uid)) {
+		idmap_tdb_state.low_uid = low_uid;
+		idmap_tdb_state.high_uid = high_uid;
+	}
 
+	if (lp_idmap_gid(&low_gid, &high_gid)) {
+		idmap_tdb_state.low_gid = low_gid;
+		idmap_tdb_state.high_gid = high_gid;
+	}
+
 	if (idmap_tdb_state.high_uid <= idmap_tdb_state.low_uid) {
 		DEBUG(1, ("idmap uid range missing or invalid\n"));
 		DEBUGADD(1, ("idmap will be unable to map foreign SIDs\n"));
 		return NT_STATUS_UNSUCCESSFUL;
+	} else {
+		uint32 low_id;
+
+		if (((low_id = tdb_fetch_int32(idmap_alloc_tdb, HWM_USER)) == -1) ||
+		    (low_id < idmap_tdb_state.low_uid)) {
+			if (tdb_store_int32(idmap_alloc_tdb, HWM_USER, idmap_tdb_state.low_uid) == -1) {
+				DEBUG(0, ("Unable to initialise user hwm in idmap database\n"));
+				return NT_STATUS_INTERNAL_DB_ERROR;
+			}
+		}
 	}
 
 	if (idmap_tdb_state.high_gid <= idmap_tdb_state.low_gid) {
 		DEBUG(1, ("idmap gid range missing or invalid\n"));
 		DEBUGADD(1, ("idmap will be unable to map foreign SIDs\n"));
 		return NT_STATUS_UNSUCCESSFUL;
-	}
+	} else {
+		uint32 low_id;
 
-	if (((low_id = tdb_fetch_int32(idmap_alloc_tdb, HWM_USER)) == -1) ||
-	    (low_id < idmap_tdb_state.low_uid)) {
-		if (tdb_store_int32(idmap_alloc_tdb, HWM_USER,
-				    idmap_tdb_state.low_uid) == -1) {
-			DEBUG(0, ("Unable to initialise user hwm in idmap "
-				  "database\n"));
-			return NT_STATUS_INTERNAL_DB_ERROR;
+		if (((low_id = tdb_fetch_int32(idmap_alloc_tdb, HWM_GROUP)) == -1) ||
+		    (low_id < idmap_tdb_state.low_gid)) {
+			if (tdb_store_int32(idmap_alloc_tdb, HWM_GROUP, idmap_tdb_state.low_gid) == -1) {
+				DEBUG(0, ("Unable to initialise group hwm in idmap database\n"));
+				return NT_STATUS_INTERNAL_DB_ERROR;
+			}
 		}
 	}
 
-	if (((low_id = tdb_fetch_int32(idmap_alloc_tdb, HWM_GROUP)) == -1) ||
-	    (low_id < idmap_tdb_state.low_gid)) {
-		if (tdb_store_int32(idmap_alloc_tdb, HWM_GROUP,
-				    idmap_tdb_state.low_gid) == -1) {
-			DEBUG(0, ("Unable to initialise group hwm in idmap "
-				  "database\n"));
-			return NT_STATUS_INTERNAL_DB_ERROR;
-		}
-	}
-
 	return NT_STATUS_OK;
 }
 
@@ -565,7 +585,7 @@
  Initialise idmap database. 
 *****************************/
 
-static NTSTATUS idmap_tdb_db_init(struct idmap_domain *dom, const char *params)
+static NTSTATUS idmap_tdb_db_init(struct idmap_domain *dom)
 {
 	NTSTATUS ret;
 	struct idmap_tdb_context *ctx;
@@ -599,6 +619,7 @@
 	}
 
 	dom->private_data = ctx;
+	dom->initialized = True;
 
 	talloc_free(config_option);
 	return NT_STATUS_OK;
@@ -753,6 +774,14 @@
 	NTSTATUS ret;
 	int i;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_tdb_context);
 
 	for (i = 0; ids[i]; i++) {
@@ -791,6 +820,14 @@
 	NTSTATUS ret;
 	int i;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_tdb_context);
 
 	for (i = 0; ids[i]; i++) {
@@ -831,6 +868,14 @@
 	char *ksidstr, *kidstr;
 	fstring tmp;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	if (!map || !map->sid) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -938,6 +983,14 @@
 	char *ksidstr, *kidstr;
 	fstring tmp;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	if (!map || !map->sid) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -1118,6 +1171,14 @@
 	struct dump_data *data;
 	NTSTATUS ret = NT_STATUS_OK;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_tdb_context);
 
 	data = TALLOC_ZERO_P(ctx, struct dump_data);
@@ -1168,8 +1229,6 @@
 {
 	NTSTATUS ret;
 
-	DEBUG(10, ("calling idmap_tdb_init\n"));
-
 	/* FIXME: bad hack to actually register also the alloc_tdb module without changining configure.in */
 	ret = idmap_alloc_tdb_init();
 	if (! NT_STATUS_IS_OK(ret)) {

Modified: branches/samba/upstream/source/winbindd/idmap_tdb2.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_tdb2.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_tdb2.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -3,8 +3,9 @@
 
    idmap TDB2 backend, used for clustered Samba setups.
 
-   This uses dbwrap to access tdb files. The location can be set
-   using tdb:idmap2.tdb =" in smb.conf
+   This uses 2 tdb files. One is permanent, and is in shared storage
+   on the cluster (using "tdb:idmap2.tdb =" in smb.conf). The other is a
+   temporary cache tdb on local storage.
 
    Copyright (C) Andrew Tridgell 2007
 
@@ -49,19 +50,46 @@
 
 
 
+/* tdb context for the local cache tdb */
+static TDB_CONTEXT *idmap_tdb2_tmp;
+
 /* handle to the permanent tdb */
-static struct db_context *idmap_tdb2;
+static struct db_context *idmap_tdb2_perm;
 
+/*
+  open the cache tdb
+ */
+static NTSTATUS idmap_tdb2_open_cache_db(void)
+{
+	const char *db_path;
+
+	if (idmap_tdb2_tmp) {
+		/* its already open */
+		return NT_STATUS_OK;
+	}
+
+	db_path = lock_path("idmap2_cache.tdb");
+
+	/* Open idmap repository */
+	if (!(idmap_tdb2_tmp = tdb_open_log(db_path, 0, TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, 0644))) {
+		DEBUG(0, ("Unable to open cache idmap database '%s'\n", db_path));
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	return NT_STATUS_OK;
+}
+
+
 static NTSTATUS idmap_tdb2_alloc_load(void);
 
 /*
   open the permanent tdb
  */
-static NTSTATUS idmap_tdb2_open_db(void)
+static NTSTATUS idmap_tdb2_open_perm_db(void)
 {
 	char *db_path;
 	
-	if (idmap_tdb2) {
+	if (idmap_tdb2_perm) {
 		/* its already open */
 		return NT_STATUS_OK;
 	}
@@ -75,11 +103,12 @@
 	NT_STATUS_HAVE_NO_MEMORY(db_path);
 
 	/* Open idmap repository */
-	idmap_tdb2 = db_open(NULL, db_path, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0644);
+	idmap_tdb2_perm = db_open(NULL, db_path, 0, TDB_DEFAULT,
+				  O_RDWR|O_CREAT, 0644);
 	TALLOC_FREE(db_path);
 
-	if (idmap_tdb2 == NULL) {
-		DEBUG(0, ("Unable to open idmap_tdb2 database '%s'\n",
+	if (idmap_tdb2_perm == NULL) {
+		DEBUG(0, ("Unable to open permanent idmap database '%s'\n",
 			  db_path));
 		return NT_STATUS_UNSUCCESSFUL;
 	}
@@ -94,50 +123,67 @@
 */
 static NTSTATUS idmap_tdb2_alloc_load(void)
 {
+	const char *range;
 	uid_t low_uid = 0;
 	uid_t high_uid = 0;
 	gid_t low_gid = 0;
 	gid_t high_gid = 0;
-	uint32 low_id;
 
+	/* load ranges */
+	idmap_tdb2_state.low_uid = 0;
+	idmap_tdb2_state.high_uid = 0;
+	idmap_tdb2_state.low_gid = 0;
+	idmap_tdb2_state.high_gid = 0;
+
 	/* see if a idmap script is configured */
-	idmap_tdb2_state.idmap_script = lp_parm_const_string(-1, "idmap",
-							     "script", NULL);
+	idmap_tdb2_state.idmap_script = lp_parm_const_string(-1, "idmap", "script", NULL);
 
 	if (idmap_tdb2_state.idmap_script) {
-		DEBUG(1, ("using idmap script '%s'\n",
-			  idmap_tdb2_state.idmap_script));
+		DEBUG(1, ("using idmap script '%s'\n", idmap_tdb2_state.idmap_script));
 	}
 
-	/* load ranges */
+	range = lp_parm_const_string(-1, "idmap alloc config", "range", NULL);
+	if (range && range[0]) {
+		unsigned low_id, high_id;
+		if (sscanf(range, "%u - %u", &low_id, &high_id) == 2) {
+			if (low_id < high_id) {
+				idmap_tdb2_state.low_gid = idmap_tdb2_state.low_uid = low_id;
+				idmap_tdb2_state.high_gid = idmap_tdb2_state.high_uid = high_id;
+			} else {
+				DEBUG(1, ("ERROR: invalid idmap alloc range [%s]", range));
+			}
+		} else {
+			DEBUG(1, ("ERROR: invalid syntax for idmap alloc config:range [%s]", range));
+		}
+	}
 
 	/* Create high water marks for group and user id */
-	if (!lp_idmap_uid(&low_uid, &high_uid)
-	    || !lp_idmap_gid(&low_gid, &high_gid)) {
-		DEBUG(1, ("idmap uid or idmap gid missing\n"));
-		return NT_STATUS_UNSUCCESSFUL;
+	if (lp_idmap_uid(&low_uid, &high_uid)) {
+		idmap_tdb2_state.low_uid = low_uid;
+		idmap_tdb2_state.high_uid = high_uid;
 	}
 
-	idmap_tdb2_state.low_uid = low_uid;
-	idmap_tdb2_state.high_uid = high_uid;
-	idmap_tdb2_state.low_gid = low_gid;
-	idmap_tdb2_state.high_gid = high_gid;
+	if (lp_idmap_gid(&low_gid, &high_gid)) {
+		idmap_tdb2_state.low_gid = low_gid;
+		idmap_tdb2_state.high_gid = high_gid;
+	}
 
 	if (idmap_tdb2_state.high_uid <= idmap_tdb2_state.low_uid) {
 		DEBUG(1, ("idmap uid range missing or invalid\n"));
 		DEBUGADD(1, ("idmap will be unable to map foreign SIDs\n"));
 		return NT_STATUS_UNSUCCESSFUL;
-	}
+	} else {
+		uint32 low_id;
 
-	if (((low_id = dbwrap_fetch_int32(idmap_tdb2,
-					  HWM_USER)) == -1) ||
-	    (low_id < idmap_tdb2_state.low_uid)) {
-		if (!NT_STATUS_IS_OK(dbwrap_trans_store_int32(
-					     idmap_tdb2, HWM_USER,
-					     idmap_tdb2_state.low_uid))) {
-			DEBUG(0, ("Unable to initialise user hwm in idmap "
-				  "database\n"));
-			return NT_STATUS_INTERNAL_DB_ERROR;
+		if (((low_id = dbwrap_fetch_int32(idmap_tdb2_perm,
+						  HWM_USER)) == -1) ||
+		    (low_id < idmap_tdb2_state.low_uid)) {
+			if (dbwrap_store_int32(
+				    idmap_tdb2_perm, HWM_USER,
+				    idmap_tdb2_state.low_uid) == -1) {
+				DEBUG(0, ("Unable to initialise user hwm in idmap database\n"));
+				return NT_STATUS_INTERNAL_DB_ERROR;
+			}
 		}
 	}
 
@@ -145,17 +191,18 @@
 		DEBUG(1, ("idmap gid range missing or invalid\n"));
 		DEBUGADD(1, ("idmap will be unable to map foreign SIDs\n"));
 		return NT_STATUS_UNSUCCESSFUL;
-	}
+	} else {
+		uint32 low_id;
 
-	if (((low_id = dbwrap_fetch_int32(idmap_tdb2,
-					  HWM_GROUP)) == -1) ||
-	    (low_id < idmap_tdb2_state.low_gid)) {
-		if (!NT_STATUS_IS_OK(dbwrap_trans_store_int32(
-					     idmap_tdb2, HWM_GROUP,
-					     idmap_tdb2_state.low_gid))) {
-			DEBUG(0, ("Unable to initialise group hwm in idmap "
-				  "database\n"));
-			return NT_STATUS_INTERNAL_DB_ERROR;
+		if (((low_id = dbwrap_fetch_int32(idmap_tdb2_perm,
+						  HWM_GROUP)) == -1) ||
+		    (low_id < idmap_tdb2_state.low_gid)) {
+			if (dbwrap_store_int32(
+				    idmap_tdb2_perm, HWM_GROUP,
+				    idmap_tdb2_state.low_gid) == -1) {
+				DEBUG(0, ("Unable to initialise group hwm in idmap database\n"));
+				return NT_STATUS_INTERNAL_DB_ERROR;
+			}
 		}
 	}
 
@@ -185,10 +232,9 @@
 	const char *hwmtype;
 	uint32_t high_hwm;
 	uint32_t hwm;
-	int res;
 	NTSTATUS status;
 
-	status = idmap_tdb2_open_db();
+	status = idmap_tdb2_open_perm_db();
 	NT_STATUS_NOT_OK_RETURN(status);
 
 	/* Get current high water mark */
@@ -211,14 +257,7 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	res = idmap_tdb2->transaction_start(idmap_tdb2);
-	if (res != 0) {
-		DEBUG(1,(__location__ " Failed to start transaction\n"));
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	if ((hwm = dbwrap_fetch_int32(idmap_tdb2, hwmkey)) == -1) {
-		idmap_tdb2->transaction_cancel(idmap_tdb2);
+	if ((hwm = dbwrap_fetch_int32(idmap_tdb2_perm, hwmkey)) == -1) {
 		return NT_STATUS_INTERNAL_DB_ERROR;
 	}
 
@@ -226,15 +265,13 @@
 	if (hwm > high_hwm) {
 		DEBUG(1, ("Fatal Error: %s range full!! (max: %lu)\n", 
 			  hwmtype, (unsigned long)high_hwm));
-		idmap_tdb2->transaction_cancel(idmap_tdb2);
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
 	/* fetch a new id and increment it */
-	ret = dbwrap_change_uint32_atomic(idmap_tdb2, hwmkey, &hwm, 1);
+	ret = dbwrap_change_uint32_atomic(idmap_tdb2_perm, hwmkey, &hwm, 1);
 	if (ret == -1) {
 		DEBUG(1, ("Fatal error while fetching a new %s value\n!", hwmtype));
-		idmap_tdb2->transaction_cancel(idmap_tdb2);
 		return NT_STATUS_UNSUCCESSFUL;
 	}
 
@@ -242,15 +279,8 @@
 	if (hwm > high_hwm) {
 		DEBUG(1, ("Fatal Error: %s range full!! (max: %lu)\n", 
 			  hwmtype, (unsigned long)high_hwm));
-		idmap_tdb2->transaction_cancel(idmap_tdb2);
 		return NT_STATUS_UNSUCCESSFUL;
 	}
-
-	res = idmap_tdb2->transaction_commit(idmap_tdb2);
-	if (res != 0) {
-		DEBUG(1,(__location__ " Failed to commit transaction\n"));
-		return NT_STATUS_UNSUCCESSFUL;
-	}
 	
 	xid->id = hwm;
 	DEBUG(10,("New %s = %d\n", hwmtype, hwm));
@@ -267,11 +297,7 @@
 	const char *hwmtype;
 	uint32_t hwm;
 	uint32_t high_hwm;
-	NTSTATUS status;
 
-	status = idmap_tdb2_open_db();
-	NT_STATUS_NOT_OK_RETURN(status);
-
 	/* Get current high water mark */
 	switch (xid->type) {
 
@@ -291,7 +317,7 @@
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	if ((hwm = dbwrap_fetch_int32(idmap_tdb2, hwmkey)) == -1) {
+	if ((hwm = dbwrap_fetch_int32(idmap_tdb2_perm, hwmkey)) == -1) {
 		return NT_STATUS_INTERNAL_DB_ERROR;
 	}
 
@@ -335,10 +361,77 @@
 };
 
 /*
+  try fetching from the cache tdb, and if that fails then
+  fetch from the permanent tdb
+ */
+static TDB_DATA tdb2_fetch_bystring(TALLOC_CTX *mem_ctx, const char *keystr)
+{
+	TDB_DATA ret;
+	NTSTATUS status;
+
+	ret = tdb_fetch_bystring(idmap_tdb2_tmp, keystr);
+	if (ret.dptr != NULL) {
+		/* got it from cache */
+		unsigned char *tmp;
+
+		tmp = (unsigned char *)talloc_memdup(mem_ctx, ret.dptr,
+						     ret.dsize);
+		SAFE_FREE(ret.dptr);
+		ret.dptr = tmp;
+
+		if (ret.dptr == NULL) {
+			return make_tdb_data(NULL, 0);
+		}
+		return ret;
+	}
+	
+	status = idmap_tdb2_open_perm_db();
+	if (!NT_STATUS_IS_OK(status)) {
+		return ret;
+	}
+
+	/* fetch from the permanent tdb */
+	return dbwrap_fetch_bystring(idmap_tdb2_perm, mem_ctx, keystr);
+}
+
+/*
+  store into both databases
+ */
+static NTSTATUS tdb2_store_bystring(const char *keystr, TDB_DATA data, int flags)
+{
+	NTSTATUS ret;
+	NTSTATUS status = idmap_tdb2_open_perm_db();
+	if (!NT_STATUS_IS_OK(status)) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+	ret = dbwrap_store_bystring(idmap_tdb2_perm, keystr, data, flags);
+	if (!NT_STATUS_IS_OK(ret)) {
+		ret = tdb_store_bystring(idmap_tdb2_tmp, keystr, data, flags) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+	}
+	return ret;
+}
+
+/*
+  delete from both databases
+ */
+static NTSTATUS tdb2_delete_bystring(const char *keystr)
+{
+	NTSTATUS ret;
+	NTSTATUS status = idmap_tdb2_open_perm_db();
+	if (!NT_STATUS_IS_OK(status)) {
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+	ret = dbwrap_delete_bystring(idmap_tdb2_perm, keystr);
+	if (!NT_STATUS_IS_OK(ret)) {
+		ret = tdb_delete_bystring(idmap_tdb2_tmp, keystr)  ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+	}
+	return ret;
+}
+
+/*
   Initialise idmap database. 
 */
-static NTSTATUS idmap_tdb2_db_init(struct idmap_domain *dom,
-				   const char *params)
+static NTSTATUS idmap_tdb2_db_init(struct idmap_domain *dom)
 {
 	NTSTATUS ret;
 	struct idmap_tdb2_context *ctx;
@@ -346,7 +439,7 @@
 	const char *range;
 	NTSTATUS status;
 
-	status = idmap_tdb2_open_db();
+	status = idmap_tdb2_open_cache_db();
 	NT_STATUS_NOT_OK_RETURN(status);
 
 	ctx = talloc(dom, struct idmap_tdb2_context);
@@ -371,6 +464,7 @@
 	}
 
 	dom->private_data = ctx;
+	dom->initialized = True;
 
 	talloc_free(config_option);
 	return NT_STATUS_OK;
@@ -458,11 +552,7 @@
 	NTSTATUS ret;
 	TDB_DATA data;
 	char *keystr;
-	NTSTATUS status;
 
-	status = idmap_tdb2_open_db();
-	NT_STATUS_NOT_OK_RETURN(status);
-
 	if (!ctx || !map) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
@@ -502,7 +592,7 @@
 	DEBUG(10,("Fetching record %s\n", keystr));
 
 	/* Check if the mapping exists */
-	data = dbwrap_fetch_bystring(idmap_tdb2, keystr, keystr);
+	data = tdb2_fetch_bystring(keystr, keystr);
 
 	if (!data.dptr) {
 		fstring sidstr;
@@ -522,10 +612,10 @@
 
 		if (sid_to_fstring(sidstr, map->sid)) {
 			/* both forward and reverse mappings */
-			dbwrap_store_bystring(idmap_tdb2, keystr,
+			tdb2_store_bystring(keystr,
 					    string_term_tdb_data(sidstr), 
 					    TDB_REPLACE);
-			dbwrap_store_bystring(idmap_tdb2, sidstr,
+			tdb2_store_bystring(sidstr,
 					    string_term_tdb_data(keystr), 
 					    TDB_REPLACE);
 		}
@@ -557,11 +647,7 @@
 	TDB_DATA data;
 	char *keystr;
 	unsigned long rec_id = 0;
-	NTSTATUS status;
 
-	status = idmap_tdb2_open_db();
-	NT_STATUS_NOT_OK_RETURN(status);
-
 	if ((keystr = sid_string_talloc(ctx, map->sid)) == NULL) {
 		DEBUG(0, ("Out of memory!\n"));
 		ret = NT_STATUS_NO_MEMORY;
@@ -571,7 +657,7 @@
 	DEBUG(10,("Fetching record %s\n", keystr));
 
 	/* Check if sid is present in database */
-	data = dbwrap_fetch_bystring(idmap_tdb2, keystr, keystr);
+	data = tdb2_fetch_bystring(keystr, keystr);
 	if (!data.dptr) {
 		fstring idstr;
 
@@ -592,9 +678,9 @@
 			 map->xid.type == ID_TYPE_UID?'U':'G',
 			 (unsigned long)map->xid.id);
 		/* store both forward and reverse mappings */
-		dbwrap_store_bystring(idmap_tdb2, keystr, string_term_tdb_data(idstr),
+		tdb2_store_bystring(keystr, string_term_tdb_data(idstr),
 				    TDB_REPLACE);
-		dbwrap_store_bystring(idmap_tdb2, idstr, string_term_tdb_data(keystr),
+		tdb2_store_bystring(idstr, string_term_tdb_data(keystr),
 				    TDB_REPLACE);
 		goto done;
 	}
@@ -639,6 +725,14 @@
 	NTSTATUS ret;
 	int i;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb2_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_tdb2_context);
 
 	for (i = 0; ids[i]; i++) {
@@ -676,6 +770,14 @@
 	NTSTATUS ret;
 	int i;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb2_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	ctx = talloc_get_type(dom->private_data, struct idmap_tdb2_context);
 
 	for (i = 0; ids[i]; i++) {
@@ -714,14 +816,23 @@
 	NTSTATUS ret;
 	TDB_DATA data;
 	char *ksidstr, *kidstr;
-	int res;
-	bool started_transaction = false;
+	struct db_record *update_lock = NULL;
+	struct db_record *rec = NULL;
 
+	/* make sure we initialized */
+	if ( ! dom->initialized) {
+		ret = idmap_tdb2_db_init(dom);
+		if ( ! NT_STATUS_IS_OK(ret)) {
+			return ret;
+		}
+	}
+
 	if (!map || !map->sid) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
 	ksidstr = kidstr = NULL;
+	data.dptr = NULL;
 
 	/* TODO: should we filter a set_mapping using low/high filters ? */
 	
@@ -756,42 +867,78 @@
 
 	DEBUG(10, ("Storing %s <-> %s map\n", ksidstr, kidstr));
 
-	res = idmap_tdb2->transaction_start(idmap_tdb2);
-	if (res != 0) {
-		DEBUG(1,(__location__ " Failed to start transaction\n"));
+	/*
+	 * Get us the update lock. This is necessary to get the lock orders
+	 * right, we need to deal with two records under a lock.
+	 */
+
+	if (!(update_lock = idmap_tdb2_perm->fetch_locked(
+		      idmap_tdb2_perm, ctx,
+		      string_term_tdb_data("UPDATELOCK")))) {
+		DEBUG(10,("Failed to lock record %s\n", ksidstr));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
 
-	started_transaction = true;
-	
-	/* check wheter sid mapping is already present in db */
-	data = dbwrap_fetch_bystring(idmap_tdb2, ksidstr, ksidstr);
-	if (data.dptr) {
-		ret = NT_STATUS_OBJECT_NAME_COLLISION;
-		goto done;
+	/*
+	 * *DELETE* previous mappings if any. *
+	 */
+
+	/* First delete indexed on SID */
+
+	if (((rec = idmap_tdb2_perm->fetch_locked(
+		     idmap_tdb2_perm, update_lock,
+		     string_term_tdb_data(ksidstr))) != NULL)
+	    && (rec->value.dsize != 0)) {
+		struct db_record *rec2;
+
+		if ((rec2 = idmap_tdb2_perm->fetch_locked(
+			     idmap_tdb2_perm, update_lock, rec->value))
+		    != NULL) {
+			rec2->delete_rec(rec2);
+			TALLOC_FREE(rec2);
+		}
+
+		rec->delete_rec(rec);
+
+		tdb_delete(idmap_tdb2_tmp, rec->key);
+		tdb_delete(idmap_tdb2_tmp, rec->value);
 	}
+	TALLOC_FREE(rec);
 
-	ret = dbwrap_store_bystring(idmap_tdb2, ksidstr, string_term_tdb_data(kidstr),
-				  TDB_INSERT);
-	if (!NT_STATUS_IS_OK(ret)) {
-		DEBUG(0, ("Error storing SID -> ID: %s\n", nt_errstr(ret)));
+	/* Now delete indexed on unix ID */
+
+	if (((rec = idmap_tdb2_perm->fetch_locked(
+		     idmap_tdb2_perm, update_lock,
+		     string_term_tdb_data(kidstr))) != NULL)
+	    && (rec->value.dsize != 0)) {
+		struct db_record *rec2;
+
+		if ((rec2 = idmap_tdb2_perm->fetch_locked(
+			     idmap_tdb2_perm, update_lock, rec->value))
+		    != NULL) {
+			rec2->delete_rec(rec2);
+			TALLOC_FREE(rec2);
+		}
+
+		rec->delete_rec(rec);
+
+		tdb_delete(idmap_tdb2_tmp, rec->key);
+		tdb_delete(idmap_tdb2_tmp, rec->value);
+	}
+	TALLOC_FREE(rec);
+
+	if (!NT_STATUS_IS_OK(tdb2_store_bystring(ksidstr, string_term_tdb_data(kidstr),
+				TDB_INSERT))) {
+		DEBUG(0, ("Error storing SID -> ID\n"));
+		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
-	ret = dbwrap_store_bystring(idmap_tdb2, kidstr, string_term_tdb_data(ksidstr),
-				  TDB_INSERT);
-	if (!NT_STATUS_IS_OK(ret)) {
-		DEBUG(0, ("Error storing ID -> SID: %s\n", nt_errstr(ret)));
+	if (!NT_STATUS_IS_OK(tdb2_store_bystring(kidstr, string_term_tdb_data(ksidstr),
+				TDB_INSERT))) {
+		DEBUG(0, ("Error storing ID -> SID\n"));
 		/* try to remove the previous stored SID -> ID map */
-		dbwrap_delete_bystring(idmap_tdb2, ksidstr);
-		goto done;
-	}
-
-	started_transaction = false;
-
-	res = idmap_tdb2->transaction_commit(idmap_tdb2);
-	if (res != 0) {
-		DEBUG(1,(__location__ " Failed to commit transaction\n"));
+		tdb2_delete_bystring(ksidstr);
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
@@ -800,11 +947,10 @@
 	ret = NT_STATUS_OK;
 
 done:
-	if (started_transaction) {
-		idmap_tdb2->transaction_cancel(idmap_tdb2);
-	}
 	talloc_free(ksidstr);
 	talloc_free(kidstr);
+	SAFE_FREE(data.dptr);
+	TALLOC_FREE(update_lock);
 	return ret;
 }
 

Modified: branches/samba/upstream/source/winbindd/idmap_util.c
===================================================================
--- branches/samba/upstream/source/winbindd/idmap_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/idmap_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,50 +27,32 @@
  If mapping is not possible returns an error.
 *****************************************************************/  
 
-NTSTATUS idmap_uid_to_sid(const char *domname, DOM_SID *sid, uid_t uid)
+NTSTATUS idmap_uid_to_sid(DOM_SID *sid, uid_t uid)
 {
 	NTSTATUS ret;
 	struct id_map map;
-	bool expired;
+	struct id_map *maps[2];
 
 	DEBUG(10,("uid = [%lu]\n", (unsigned long)uid));
 
-	if (idmap_cache_find_uid2sid(uid, sid, &expired)) {
-		DEBUG(10, ("idmap_cache_find_uid2sid found %d%s\n", uid,
-			   expired ? " (expired)": ""));
-		if (expired && idmap_is_online()) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if (is_null_sid(sid)) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			return NT_STATUS_NONE_MAPPED;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		return NT_STATUS_OK;
-	}
-
-backend:
 	map.sid = sid;
 	map.xid.type = ID_TYPE_UID;
 	map.xid.id = uid;
 
-	ret = idmap_backends_unixid_to_sid(domname, &map);
+	maps[0] = &map;
+	maps[1] = NULL;
+	
+	ret = idmap_unixids_to_sids(maps);
 	if ( ! NT_STATUS_IS_OK(ret)) {
 		DEBUG(10, ("error mapping uid [%lu]\n", (unsigned long)uid));
 		return ret;
 	}
 
 	if (map.status != ID_MAPPED) {
-		struct dom_sid null_sid;
-		ZERO_STRUCT(null_sid);
-		idmap_cache_set_sid2uid(&null_sid, uid);
 		DEBUG(10, ("uid [%lu] not mapped\n", (unsigned long)uid));
 		return NT_STATUS_NONE_MAPPED;
 	}
 
-	idmap_cache_set_sid2uid(sid, uid);
-
 	return NT_STATUS_OK;
 }
 
@@ -79,50 +61,32 @@
  If mapping is not possible returns an error.
 *****************************************************************/  
 
-NTSTATUS idmap_gid_to_sid(const char *domname, DOM_SID *sid, gid_t gid)
+NTSTATUS idmap_gid_to_sid(DOM_SID *sid, gid_t gid)
 {
 	NTSTATUS ret;
 	struct id_map map;
-	bool expired;
+	struct id_map *maps[2];
 
 	DEBUG(10,("gid = [%lu]\n", (unsigned long)gid));
 
-	if (idmap_cache_find_gid2sid(gid, sid, &expired)) {
-		DEBUG(10, ("idmap_cache_find_gid2sid found %d%s\n", gid,
-			   expired ? " (expired)": ""));
-		if (expired && idmap_is_online()) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if (is_null_sid(sid)) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			return NT_STATUS_NONE_MAPPED;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		return NT_STATUS_OK;
-	}
-
-backend:
 	map.sid = sid;
 	map.xid.type = ID_TYPE_GID;
 	map.xid.id = gid;
 
-	ret = idmap_backends_unixid_to_sid(domname, &map);
+	maps[0] = &map;
+	maps[1] = NULL;
+	
+	ret = idmap_unixids_to_sids(maps);
 	if ( ! NT_STATUS_IS_OK(ret)) {
 		DEBUG(10, ("error mapping gid [%lu]\n", (unsigned long)gid));
 		return ret;
 	}
 
 	if (map.status != ID_MAPPED) {
-		struct dom_sid null_sid;
-		ZERO_STRUCT(null_sid);
-		idmap_cache_set_sid2uid(&null_sid, gid);
 		DEBUG(10, ("gid [%lu] not mapped\n", (unsigned long)gid));
 		return NT_STATUS_NONE_MAPPED;
 	}
 
-	idmap_cache_set_sid2gid(sid, gid);
-
 	return NT_STATUS_OK;
 }
 
@@ -131,70 +95,38 @@
  If mapping is not possible or SID maps to a GID returns an error.
 *****************************************************************/  
 
-NTSTATUS idmap_sid_to_uid(const char *dom_name, DOM_SID *sid, uid_t *uid)
+NTSTATUS idmap_sid_to_uid(DOM_SID *sid, uid_t *uid)
 {
 	NTSTATUS ret;
 	struct id_map map;
-	bool expired;
+	struct id_map *maps[2];
 
 	DEBUG(10,("idmap_sid_to_uid: sid = [%s]\n", sid_string_dbg(sid)));
 
-	if (idmap_cache_find_sid2uid(sid, uid, &expired)) {
-		DEBUG(10, ("idmap_cache_find_sid2uid found %d%s\n",
-			   (int)(*uid), expired ? " (expired)": ""));
-		if (expired && idmap_is_online()) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if ((*uid) == -1) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			return NT_STATUS_NONE_MAPPED;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		return NT_STATUS_OK;
-	}
-
-backend:
 	map.sid = sid;
 	map.xid.type = ID_TYPE_UID;	
-
-	ret = idmap_backends_sid_to_unixid(dom_name, &map);
-
-	if (NT_STATUS_IS_OK(ret) && (map.status == ID_MAPPED)) {
-		if (map.xid.type != ID_TYPE_UID) {
-			DEBUG(10, ("sid [%s] not mapped to a uid "
-				   "[%u,%u,%u]\n",
-				   sid_string_dbg(sid),
-				   map.status,
-				   map.xid.type,
-				   map.xid.id));
-			idmap_cache_set_sid2uid(sid, -1);
-			return NT_STATUS_NONE_MAPPED;
-		}
-		goto done;
+	
+	maps[0] = &map;
+	maps[1] = NULL;
+	
+	ret = idmap_sids_to_unixids(maps);
+	if ( ! NT_STATUS_IS_OK(ret)) {
+		DEBUG(10, ("error mapping sid [%s] to uid\n", 
+			   sid_string_dbg(sid)));
+		return ret;
 	}
 
-	if (dom_name[0] != '\0') {
-		/*
-		 * We had the task to go to a specific domain which
-		 * could not answer our request. Fail.
-		 */
-		idmap_cache_set_sid2uid(sid, -1);
+	if ((map.status != ID_MAPPED) || (map.xid.type != ID_TYPE_UID)) {
+		DEBUG(10, ("sid [%s] not mapped to an uid [%u,%u,%u]\n", 
+			   sid_string_dbg(sid),
+			   map.status, 
+			   map.xid.type, 
+			   map.xid.id));
 		return NT_STATUS_NONE_MAPPED;
 	}
 
-	ret = idmap_new_mapping(sid, ID_TYPE_UID, &map.xid);
+	*uid = map.xid.id;
 
-	if (!NT_STATUS_IS_OK(ret)) {
-		DEBUG(10, ("idmap_new_mapping failed: %s\n",
-			   nt_errstr(ret)));
-		idmap_cache_set_sid2uid(sid, -1);
-		return ret;
-	}
-
-done:
-	*uid = (uid_t)map.xid.id;
-	idmap_cache_set_sid2uid(sid, *uid);
 	return NT_STATUS_OK;
 }
 
@@ -203,68 +135,36 @@
  If mapping is not possible or SID maps to a UID returns an error.
 *****************************************************************/  
 
-NTSTATUS idmap_sid_to_gid(const char *domname, DOM_SID *sid, gid_t *gid)
+NTSTATUS idmap_sid_to_gid(DOM_SID *sid, gid_t *gid)
 {
 	NTSTATUS ret;
 	struct id_map map;
-	bool expired;
+	struct id_map *maps[2];
 
 	DEBUG(10,("idmap_sid_to_gid: sid = [%s]\n", sid_string_dbg(sid)));
 
-	if (idmap_cache_find_sid2gid(sid, gid, &expired)) {
-		DEBUG(10, ("idmap_cache_find_sid2gid found %d%s\n",
-			   (int)(*gid), expired ? " (expired)": ""));
-		if (expired && idmap_is_online()) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if ((*gid) == -1) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			return NT_STATUS_NONE_MAPPED;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		return NT_STATUS_OK;
-	}
-
-backend:
 	map.sid = sid;
 	map.xid.type = ID_TYPE_GID;
-
-	ret = idmap_backends_sid_to_unixid(domname, &map);
-	if (NT_STATUS_IS_OK(ret) && (map.status == ID_MAPPED)) {
-		if (map.xid.type != ID_TYPE_GID) {
-			DEBUG(10, ("sid [%s] not mapped to a gid "
-				   "[%u,%u,%u]\n",
-				   sid_string_dbg(sid),
-				   map.status,
-				   map.xid.type,
-				   map.xid.id));
-			idmap_cache_set_sid2gid(sid, -1);
-			return NT_STATUS_NONE_MAPPED;
-		}
-		goto done;
+	
+	maps[0] = &map;
+	maps[1] = NULL;
+	
+	ret = idmap_sids_to_unixids(maps);
+	if ( ! NT_STATUS_IS_OK(ret)) {
+		DEBUG(10, ("error mapping sid [%s] to gid\n", 
+			   sid_string_dbg(sid)));
+		return ret;
 	}
 
-	if (domname[0] != '\0') {
-		/*
-		 * We had the task to go to a specific domain which
-		 * could not answer our request. Fail.
-		 */
-		idmap_cache_set_sid2uid(sid, -1);
+	if ((map.status != ID_MAPPED) || (map.xid.type != ID_TYPE_GID)) {
+		DEBUG(10, ("sid [%s] not mapped to a gid [%u,%u]\n", 
+			   sid_string_dbg(sid),
+			   map.status, 
+			   map.xid.type));
 		return NT_STATUS_NONE_MAPPED;
 	}
 
-	ret = idmap_new_mapping(sid, ID_TYPE_GID, &map.xid);
-
-	if (!NT_STATUS_IS_OK(ret)) {
-		DEBUG(10, ("idmap_new_mapping failed: %s\n",
-			   nt_errstr(ret)));
-		idmap_cache_set_sid2gid(sid, -1);
-		return ret;
-	}
-
-done:
 	*gid = map.xid.id;
-	idmap_cache_set_sid2gid(sid, *gid);
+
 	return NT_STATUS_OK;
 }

Modified: branches/samba/upstream/source/winbindd/nss_info.c
===================================================================
--- branches/samba/upstream/source/winbindd/nss_info.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/nss_info.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -281,47 +281,6 @@
 /********************************************************************
  *******************************************************************/
 
- NTSTATUS nss_map_to_alias( TALLOC_CTX *mem_ctx, const char *domain,
-			    const char *name, char **alias )
-{
-	struct nss_domain_entry *p;
-	struct nss_info_methods *m;
-
-	if ( (p = find_nss_domain( domain )) == NULL ) {
-		DEBUG(4,("nss_map_to_alias: Failed to find nss domain pointer for %s\n",
-			 domain ));
-		return NT_STATUS_NOT_FOUND;
-	}
-
-	m = p->backend->methods;
-
-	return m->map_to_alias( mem_ctx, domain, name, alias );
-}
-
-
-/********************************************************************
- *******************************************************************/
-
- NTSTATUS nss_map_from_alias( TALLOC_CTX *mem_ctx, const char *domain,
-			      const char *alias, char **name )
-{
-	struct nss_domain_entry *p;
-	struct nss_info_methods *m;
-
-	if ( (p = find_nss_domain( domain )) == NULL ) {
-		DEBUG(4,("nss_map_from_alias: Failed to find nss domain pointer for %s\n",
-			 domain ));
-		return NT_STATUS_NOT_FOUND;
-	}
-
-	m = p->backend->methods;
-
-	return m->map_from_alias( mem_ctx, domain, alias, name );
-}
-
-/********************************************************************
- *******************************************************************/
-
  NTSTATUS nss_close( const char *parameters )
 {
 	struct nss_domain_entry *p = nss_domain_list;

Modified: branches/samba/upstream/source/winbindd/nss_info_template.c
===================================================================
--- branches/samba/upstream/source/winbindd/nss_info_template.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/nss_info_template.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -45,8 +45,6 @@
 	if ( !homedir || !shell || !gecos )
 		return NT_STATUS_INVALID_PARAMETER;
 	
-	/* protect against home directories using whitespace in the
-	  username */
 	*homedir = talloc_strdup( ctx, lp_template_homedir() );
 	*shell   = talloc_strdup( ctx, lp_template_shell() );
 	*gecos   = NULL;
@@ -58,28 +56,6 @@
 	return NT_STATUS_OK;
 }
 
-/**********************************************************************
- *********************************************************************/
-
-static NTSTATUS nss_template_map_to_alias( TALLOC_CTX *mem_ctx,
-					   const char *domain,
-					   const char *name,
-					   char **alias )
-{
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/**********************************************************************
- *********************************************************************/
-
-static NTSTATUS nss_template_map_from_alias( TALLOC_CTX *mem_ctx,
-					     const char *domain,
-					     const char *alias,
-					     char **name )
-{
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
 /************************************************************************
  ***********************************************************************/
 
@@ -93,11 +69,9 @@
  ***********************************************************************/
 
 static struct nss_info_methods nss_template_methods = {
-	.init           = nss_template_init,
-	.get_nss_info   = nss_template_get_info,
-	.map_to_alias   = nss_template_map_to_alias,
-	.map_from_alias = nss_template_map_from_alias,
-	.close_fn       = nss_template_close
+	.init         = nss_template_init,
+	.get_nss_info = nss_template_get_info,
+	.close_fn     = nss_template_close
 };
 		
 NTSTATUS nss_info_template_init( void )

Modified: branches/samba/upstream/source/winbindd/winbindd.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -47,13 +47,10 @@
 {
 	static struct messaging_context *ctx;
 
-	if (ctx == NULL) {
-		ctx = messaging_init(NULL, server_id_self(),
-				     winbind_event_context());
+	if (!ctx && !(ctx = messaging_init(NULL, server_id_self(),
+					   winbind_event_context()))) {
+		smb_panic("Could not init winbind messaging context");
 	}
-	if (ctx == NULL) {
-		DEBUG(0, ("Could not init winbind messaging context.\n"));
-	}
 	return ctx;
 }
 
@@ -340,6 +337,9 @@
 	{ WINBINDD_SID_TO_GID, winbindd_sid_to_gid, "SID_TO_GID" },
 	{ WINBINDD_UID_TO_SID, winbindd_uid_to_sid, "UID_TO_SID" },
 	{ WINBINDD_GID_TO_SID, winbindd_gid_to_sid, "GID_TO_SID" },
+#if 0   /* DISABLED until we fix the interface in Samba 3.0.26 --jerry */
+	{ WINBINDD_SIDS_TO_XIDS, winbindd_sids_to_unixids, "SIDS_TO_XIDS" },
+#endif  /* end DISABLED */
 	{ WINBINDD_ALLOCATE_UID, winbindd_allocate_uid, "ALLOCATE_UID" },
 	{ WINBINDD_ALLOCATE_GID, winbindd_allocate_gid, "ALLOCATE_GID" },
 	{ WINBINDD_SET_MAPPING, winbindd_set_mapping, "SET_MAPPING" },
@@ -534,6 +534,7 @@
 static void request_recv(void *private_data, bool success);
 static void request_main_recv(void *private_data, bool success);
 static void request_finished(struct winbindd_cli_state *state);
+void request_finished_cont(void *private_data, bool success);
 static void response_main_sent(void *private_data, bool success);
 static void response_extra_sent(void *private_data, bool success);
 
@@ -542,7 +543,10 @@
 	struct winbindd_cli_state *state =
 		talloc_get_type_abort(private_data, struct winbindd_cli_state);
 
-	TALLOC_FREE(state->mem_ctx);
+	if (state->mem_ctx != NULL) {
+		talloc_destroy(state->mem_ctx);
+		state->mem_ctx = NULL;
+	}
 
 	if (!success) {
 		state->finished = True;
@@ -566,7 +570,10 @@
 	}
 
 	if (state->response.length == sizeof(state->response)) {
-		TALLOC_FREE(state->mem_ctx);
+		if (state->mem_ctx != NULL) {
+			talloc_destroy(state->mem_ctx);
+			state->mem_ctx = NULL;
+		}
 
 		setup_async_read(&state->fd_event, &state->request,
 				 sizeof(uint32), request_len_recv, state);
@@ -600,6 +607,17 @@
 	request_finished(state);
 }
 
+void request_finished_cont(void *private_data, bool success)
+{
+	struct winbindd_cli_state *state =
+		talloc_get_type_abort(private_data, struct winbindd_cli_state);
+
+	if (success)
+		request_ok(state);
+	else
+		request_error(state);
+}
+
 static void request_len_recv(void *private_data, bool success)
 {
 	struct winbindd_cli_state *state =
@@ -747,7 +765,10 @@
 
 	SAFE_FREE(state->response.extra_data.data);
 
-	TALLOC_FREE(state->mem_ctx);
+	if (state->mem_ctx != NULL) {
+		talloc_destroy(state->mem_ctx);
+		state->mem_ctx = NULL;
+	}
 
 	remove_fd_event(&state->fd_event);
 		
@@ -1025,6 +1046,8 @@
 
 	load_case_tables();
 
+	db_tdb2_setup_messaging(NULL, false);
+
 	/* Initialise for running in non-root mode */
 
 	sec_init();
@@ -1112,9 +1135,12 @@
 	/* Initialise messaging system */
 
 	if (winbind_messaging_context() == NULL) {
+		DEBUG(0, ("unable to initialize messaging system\n"));
 		exit(1);
 	}
 
+	db_tdb2_setup_messaging(winbind_messaging_context(), true);
+
 	if (!reload_services_file(NULL)) {
 		DEBUG(0, ("error opening config file\n"));
 		exit(1);
@@ -1141,6 +1167,12 @@
 
 	namecache_enable();
 
+	/* Winbind daemon initialisation */
+
+	if ( ! NT_STATUS_IS_OK(idmap_init_cache()) ) {
+		DEBUG(1, ("Could not init idmap cache!\n"));		
+	}
+
 	/* Unblock all signals we are interested in as they may have been
 	   blocked by the parent process. */
 

Modified: branches/samba/upstream/source/winbindd/winbindd.h
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -24,7 +24,6 @@
 #define _WINBINDD_H
 
 #include "nsswitch/winbind_struct_protocol.h"
-#include "nsswitch/libwbclient/wbclient.h"
 
 #ifdef HAVE_LIBNSCD
 #include <libnscd.h>
@@ -196,15 +195,7 @@
 
 	void *private_data;
 
-	/*
-	 * idmap config settings, used to tell the idmap child which
-	 * special domain config to use for a mapping
-	 */
-	bool have_idmap_config;
-	uint32_t id_range_low, id_range_high;
-
 	/* A working DC */
-	pid_t dc_probe_pid; /* Child we're using to detect the DC. */
 	fstring dcname;
 	struct sockaddr_storage dcaddr;
 
@@ -387,6 +378,4 @@
 #define IS_DOMAIN_OFFLINE(x) ( lp_winbind_offline_logon() && \
 			       ( get_global_winbindd_state_offline() \
 				 || !(x)->online ) )
-#define IS_DOMAIN_ONLINE(x) (!IS_DOMAIN_OFFLINE(x))
-
 #endif /* _WINBINDD_H */

Modified: branches/samba/upstream/source/winbindd/winbindd_ads.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_ads.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_ads.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1195,7 +1195,7 @@
 	}
 
 	result = rpccli_netr_DsrEnumerateDomainTrusts(cli, mem_ctx,
-						      cli->desthost,
+						      cli->cli->desthost,
 						      flags,
 						      &trusts,
 						      NULL);

Modified: branches/samba/upstream/source/winbindd/winbindd_async.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_async.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_async.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -468,7 +468,7 @@
 	}
 
 	cont(private_data, True, response->data.name.dom_name,
-	     (char *)response->extra_data.data);
+	     response->extra_data.data);
 
 	SAFE_FREE(response->extra_data.data);
 }

Modified: branches/samba/upstream/source/winbindd/winbindd_cache.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_cache.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_cache.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -502,8 +502,14 @@
 	   mode domain or not.  And that we can contact it. */
 
 	if ( winbindd_can_contact_domain( domain ) ) {		
+		struct winbindd_methods *orig_backend = domain->backend;
 		status = domain->backend->sequence_number(domain, 
 							  &domain->sequence_number);
+		if (domain->backend != orig_backend) {
+			/* Try again. */
+			status = domain->backend->sequence_number(domain,
+                                                          &domain->sequence_number);
+		}
 	} else {
 		/* just use the current time */
 		status = NT_STATUS_OK;
@@ -934,8 +940,6 @@
 	centry_free(centry);
 }
 
-
-
 static void wcache_save_password_policy(struct winbindd_domain *domain,
 					NTSTATUS status,
 					struct samr_DomInfo1 *policy)
@@ -959,209 +963,6 @@
 	centry_free(centry);
 }
 
-/***************************************************************************
- ***************************************************************************/
-
-static void wcache_save_username_alias(struct winbindd_domain *domain,
-				       NTSTATUS status,
-				       const char *name, const char *alias)
-{
-	struct cache_entry *centry;
-	fstring uname;
-
-	if ( (centry = centry_start(domain, status)) == NULL )
-		return;
-
-	centry_put_string( centry, alias );
-
-	fstrcpy(uname, name);
-	strupper_m(uname);
-	centry_end(centry, "NSS/NA/%s", uname);
-
-	DEBUG(10,("wcache_save_username_alias: %s -> %s\n", name, alias ));
-
-	centry_free(centry);
-}
-
-static void wcache_save_alias_username(struct winbindd_domain *domain,
-				       NTSTATUS status,
-				       const char *alias, const char *name)
-{
-	struct cache_entry *centry;
-	fstring uname;
-
-	if ( (centry = centry_start(domain, status)) == NULL )
-		return;
-
-	centry_put_string( centry, name );
-
-	fstrcpy(uname, alias);
-	strupper_m(uname);
-	centry_end(centry, "NSS/AN/%s", uname);
-
-	DEBUG(10,("wcache_save_alias_username: %s -> %s\n", alias, name ));
-
-	centry_free(centry);
-}
-
-/***************************************************************************
- ***************************************************************************/
-
-NTSTATUS resolve_username_to_alias( TALLOC_CTX *mem_ctx,
-				    struct winbindd_domain *domain,
-				    const char *name, char **alias )
-{
-	struct winbind_cache *cache = get_cache(domain);
-	struct cache_entry *centry = NULL;
-	NTSTATUS status;
-	char *upper_name;
-
-	if ( domain->internal )
-		return NT_STATUS_NOT_SUPPORTED;
-
-	if (!cache->tdb)
-		goto do_query;
-
-	if ( (upper_name = SMB_STRDUP(name)) == NULL )
-		return NT_STATUS_NO_MEMORY;
-	strupper_m(upper_name);
-
-	centry = wcache_fetch(cache, domain, "NSS/NA/%s", upper_name);
-
-	SAFE_FREE( upper_name );
-
-	if (!centry)
-		goto do_query;
-
-	status = centry->status;
-
-	if (!NT_STATUS_IS_OK(status)) {
-		centry_free(centry);
-		return status;
-	}
-
-	*alias = centry_string( centry, mem_ctx );
-
-	centry_free(centry);
-
-	DEBUG(10,("resolve_username_to_alias: [Cached] - mapped %s to %s\n",
-		  name, *alias ? *alias : "(none)"));
-
-	return (*alias) ? NT_STATUS_OK : NT_STATUS_OBJECT_NAME_NOT_FOUND;
-
-do_query:
-
-	/* If its not in cache and we are offline, then fail */
-
-	if ( get_global_winbindd_state_offline() || !domain->online ) {
-		DEBUG(8,("resolve_username_to_alias: rejecting query "
-			 "in offline mode\n"));
-		return NT_STATUS_NOT_FOUND;
-	}
-
-	status = nss_map_to_alias( mem_ctx, domain->name, name, alias );
-
-	if ( NT_STATUS_IS_OK( status ) ) {
-		wcache_save_username_alias(domain, status, name, *alias);
-	}
-
-	if ( NT_STATUS_EQUAL( status, NT_STATUS_NONE_MAPPED ) ) {
-		wcache_save_username_alias(domain, status, name, "(NULL)");
-	}
-
-	DEBUG(5,("resolve_username_to_alias: backend query returned %s\n",
-		 nt_errstr(status)));
-
-	if ( NT_STATUS_EQUAL(status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND) ) {
-		set_domain_offline( domain );
-	}
-
-	return status;
-}
-
-/***************************************************************************
- ***************************************************************************/
-
-NTSTATUS resolve_alias_to_username( TALLOC_CTX *mem_ctx,
-				    struct winbindd_domain *domain,
-				    const char *alias, char **name )
-{
-	struct winbind_cache *cache = get_cache(domain);
-	struct cache_entry *centry = NULL;
-	NTSTATUS status;
-	char *upper_name;
-
-	if ( domain->internal )
-		return  NT_STATUS_NOT_SUPPORTED;
-
-	if (!cache->tdb)
-		goto do_query;
-
-	if ( (upper_name = SMB_STRDUP(alias)) == NULL )
-		return NT_STATUS_NO_MEMORY;
-	strupper_m(upper_name);
-
-	centry = wcache_fetch(cache, domain, "NSS/AN/%s", upper_name);
-
-	SAFE_FREE( upper_name );
-
-	if (!centry)
-		goto do_query;
-
-	status = centry->status;
-
-	if (!NT_STATUS_IS_OK(status)) {
-		centry_free(centry);
-		return status;
-	}
-
-	*name = centry_string( centry, mem_ctx );
-
-	centry_free(centry);
-
-	DEBUG(10,("resolve_alias_to_username: [Cached] - mapped %s to %s\n",
-		  alias, *name ? *name : "(none)"));
-
-	return (*name) ? NT_STATUS_OK : NT_STATUS_OBJECT_NAME_NOT_FOUND;
-
-do_query:
-
-	/* If its not in cache and we are offline, then fail */
-
-	if ( get_global_winbindd_state_offline() || !domain->online ) {
-		DEBUG(8,("resolve_alias_to_username: rejecting query "
-			 "in offline mode\n"));
-		return NT_STATUS_NOT_FOUND;
-	}
-
-	/* an alias cannot contain a domain prefix or '@' */
-
-	if (strchr(alias, '\\') || strchr(alias, '@')) {
-		DEBUG(10,("resolve_alias_to_username: skipping fully "
-			  "qualified name %s\n", alias));
-		return NT_STATUS_OBJECT_NAME_INVALID;
-	}
-
-	status = nss_map_from_alias( mem_ctx, domain->name, alias, name );
-
-	if ( NT_STATUS_IS_OK( status ) ) {
-		wcache_save_alias_username( domain, status, alias, *name );
-	}
-
-	if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) {
-		wcache_save_alias_username(domain, status, alias, "(NULL)");
-	}
-
-	DEBUG(5,("resolve_alias_to_username: backend query returned %s\n",
-		 nt_errstr(status)));
-
-	if ( NT_STATUS_EQUAL(status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND) ) {
-		set_domain_offline( domain );
-	}
-
-	return status;
-}
-
 NTSTATUS wcache_cached_creds_exist(struct winbindd_domain *domain, const DOM_SID *sid)
 {
 	struct winbind_cache *cache = get_cache(domain);
@@ -3462,48 +3263,6 @@
 	return 0;
 }
 
-static int validate_nss_an(TALLOC_CTX *mem_ctx, const char *keystr,
-			   TDB_DATA dbuf,
-			   struct tdb_validation_status *state)
-{
-	struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
-
-	if (!centry) {
-		return 1;
-	}
-
-	(void)centry_string( centry, mem_ctx );
-
-	centry_free(centry);
-
-	if (!(state->success)) {
-		return 1;
-	}
-	DEBUG(10,("validate_pwinfo: %s ok\n", keystr));
-	return 0;
-}
-
-static int validate_nss_na(TALLOC_CTX *mem_ctx, const char *keystr,
-			   TDB_DATA dbuf,
-			   struct tdb_validation_status *state)
-{
-	struct cache_entry *centry = create_centry_validate(keystr, dbuf, state);
-
-	if (!centry) {
-		return 1;
-	}
-
-	(void)centry_string( centry, mem_ctx );
-
-	centry_free(centry);
-
-	if (!(state->success)) {
-		return 1;
-	}
-	DEBUG(10,("validate_pwinfo: %s ok\n", keystr));
-	return 0;
-}
-
 static int validate_trustdoms(TALLOC_CTX *mem_ctx, const char *keystr, TDB_DATA dbuf,
 			      struct tdb_validation_status *state)
 {
@@ -3605,8 +3364,6 @@
 	{"NSS/PWINFO/", validate_pwinfo},
 	{"TRUSTDOMS/", validate_trustdoms},
 	{"TRUSTDOMCACHE/", validate_trustdomcache},
-	{"NSS/NA/", validate_nss_na},
-	{"NSS/AN/", validate_nss_an},
 	{"WINBINDD_OFFLINE", validate_offline},
 	{WINBINDD_CACHE_VERSION_KEYSTR, validate_cache_version},
 	{NULL, NULL}

Modified: branches/samba/upstream/source/winbindd/winbindd_cm.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_cm.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_cm.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -171,33 +171,20 @@
 	struct dc_name_ip *dcs = NULL;
 	int num_dcs = 0;
 	TALLOC_CTX *mem_ctx = NULL;
+	pid_t child_pid;
 	pid_t parent_pid = sys_getpid();
 
 	/* Stop zombies */
 	CatchChild();
 
-	if (domain->dc_probe_pid != (pid_t)-1) {
-		/*
-		 * We might already have a DC probe
-		 * child working, check.
-		 */
-		if (process_exists_by_pid(domain->dc_probe_pid)) {
-			DEBUG(10,("fork_child_dc_connect: pid %u already "
-				"checking for DC's.\n",
-				(unsigned int)domain->dc_probe_pid));
-			return true;
-		}
-		domain->dc_probe_pid = (pid_t)-1;
-	}
+	child_pid = sys_fork();
 
-	domain->dc_probe_pid = sys_fork();
-
-	if (domain->dc_probe_pid == (pid_t)-1) {
+	if (child_pid == -1) {
 		DEBUG(0, ("fork_child_dc_connect: Could not fork: %s\n", strerror(errno)));
 		return False;
 	}
 
-	if (domain->dc_probe_pid != (pid_t)0) {
+	if (child_pid != 0) {
 		/* Parent */
 		messaging_register(winbind_messaging_context(), NULL,
 				   MSG_WINBIND_TRY_TO_GO_ONLINE,
@@ -214,11 +201,6 @@
 
 	if (!reinit_after_fork(winbind_messaging_context(), true)) {
 		DEBUG(0,("reinit_after_fork() failed\n"));
-		messaging_send_buf(winbind_messaging_context(),
-				   pid_to_procid(parent_pid),
-				   MSG_WINBIND_FAILED_TO_GO_ONLINE,
-				   (uint8 *)domain->name,
-				   strlen(domain->name)+1);
 		_exit(0);
 	}
 
@@ -236,11 +218,6 @@
 	mem_ctx = talloc_init("fork_child_dc_connect");
 	if (!mem_ctx) {
 		DEBUG(0,("talloc_init failed.\n"));
-		messaging_send_buf(winbind_messaging_context(),
-				   pid_to_procid(parent_pid),
-				   MSG_WINBIND_FAILED_TO_GO_ONLINE,
-				   (uint8 *)domain->name,
-				   strlen(domain->name)+1);
 		_exit(0);
 	}
 
@@ -314,12 +291,12 @@
 
 static void calc_new_online_timeout_check(struct winbindd_domain *domain)
 {
-	int wbr = lp_winbind_reconnect_delay();
+	int wbc = lp_winbind_cache_time();
 
 	if (domain->startup) {
 		domain->check_online_timeout = 10;
-	} else if (domain->check_online_timeout < wbr) {
-		domain->check_online_timeout = wbr;
+	} else if (domain->check_online_timeout < wbc) {
+		domain->check_online_timeout = wbc;
 	}
 }
 
@@ -359,7 +336,7 @@
 	}
 
 	/* If we're in statup mode, check again in 10 seconds, not in
-	   lp_winbind_reconnect_delay() seconds (which is 30 seconds by default). */
+	   lp_winbind_cache_time() seconds (which is 5 mins by default). */
 
 	calc_new_online_timeout_check(domain);
 
@@ -621,7 +598,7 @@
 	/* This call can take a long time - allow the server to time out.
 	   35 seconds should do it. */
 
-	orig_timeout = rpccli_set_timeout(netlogon_pipe, 35000);
+	orig_timeout = cli_set_timeout(netlogon_pipe->cli, 35000);
 
 	if (our_domain->active_directory) {
 		struct netr_DsRGetDCNameInfo *domain_info = NULL;
@@ -661,7 +638,7 @@
 	}
 
 	/* And restore our original timeout. */
-	rpccli_set_timeout(netlogon_pipe, orig_timeout);
+	cli_set_timeout(netlogon_pipe->cli, orig_timeout);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		DEBUG(10,("rpccli_netr_GetAnyDCName failed: %s\n",
@@ -733,14 +710,8 @@
 
 	if (machine_krb5_principal != NULL)
 	{
-		struct winbindd_domain *our_domain = find_our_domain();
-
-		if (!our_domain) {
-			return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;			
-		}
-		
 		if (asprintf(machine_krb5_principal, "%s$@%s",
-			     account_name, our_domain->alt_name) == -1)
+			     account_name, lp_realm()) == -1)
 		{
 			return NT_STATUS_NO_MEMORY;
 		}
@@ -837,7 +808,7 @@
 		goto done;
 	}
 
-	if (!is_dc_trusted_domain_situation(domain->name) &&
+	if (!is_trusted_domain_situation(domain->name) &&
 	    (*cli)->protocol >= PROTOCOL_NT1 &&
 	    (*cli)->capabilities & CAP_EXTENDED_SECURITY)
 	{
@@ -1091,16 +1062,14 @@
 
 	if (lp_security() == SEC_ADS) {
 		ADS_STRUCT *ads;
-		ADS_STATUS ads_status;
 		char addr[INET6_ADDRSTRLEN];
 
 		print_sockaddr(addr, sizeof(addr), pss);
 
-		ads = ads_init(domain->alt_name, domain->name, addr);
+		ads = ads_init(domain->alt_name, domain->name, NULL);
 		ads->auth.flags |= ADS_AUTH_NO_BIND;
 
-		ads_status = ads_connect(ads);
-		if (ADS_ERR_OK(ads_status)) {
+		if (ads_try_connect(ads, addr)) {
 			/* We got a cldap packet. */
 			fstrcpy(name, ads->config.ldap_server_name);
 			namecache_store(name, 0x20, 1, &ip_list);
@@ -1535,27 +1504,33 @@
 	}
 
 	if (conn->samr_pipe != NULL) {
-		TALLOC_FREE(conn->samr_pipe);
-		/* Ok, it must be dead. Drop timeout to 0.5 sec. */
-		if (conn->cli) {
-			cli_set_timeout(conn->cli, 500);
+		if (!cli_rpc_pipe_close(conn->samr_pipe)) {
+			/* Ok, it must be dead. Drop timeout to 0.5 sec. */
+			if (conn->cli) {
+				cli_set_timeout(conn->cli, 500);
+			}
 		}
+		conn->samr_pipe = NULL;
 	}
 
 	if (conn->lsa_pipe != NULL) {
-		TALLOC_FREE(conn->lsa_pipe);
-		/* Ok, it must be dead. Drop timeout to 0.5 sec. */
-		if (conn->cli) {
-			cli_set_timeout(conn->cli, 500);
+		if (!cli_rpc_pipe_close(conn->lsa_pipe)) {
+			/* Ok, it must be dead. Drop timeout to 0.5 sec. */
+			if (conn->cli) {
+				cli_set_timeout(conn->cli, 500);
+			}
 		}
+		conn->lsa_pipe = NULL;
 	}
 
 	if (conn->netlogon_pipe != NULL) {
-		TALLOC_FREE(conn->netlogon_pipe);
-		/* Ok, it must be dead. Drop timeout to 0.5 sec. */
-		if (conn->cli) {
-			cli_set_timeout(conn->cli, 500);
+		if (!cli_rpc_pipe_close(conn->netlogon_pipe)) {
+			/* Ok, it must be dead. Drop timeout to 0.5 sec. */
+			if (conn->cli) {
+				cli_set_timeout(conn->cli, 500);
+			}
 		}
+		conn->netlogon_pipe = NULL;
 	}
 
 	if (conn->cli) {
@@ -1706,7 +1681,7 @@
 	}	
 
 	result = rpccli_netr_DsrEnumerateDomainTrusts(cli, mem_ctx,
-						      cli->desthost,
+						      cli->cli->desthost,
 						      flags,
 						      &trusts,
 						      NULL);
@@ -1789,11 +1764,10 @@
 
 	DEBUG(5, ("set_dc_type_and_flags_connect: domain %s\n", domain->name ));
 
-	result = cli_rpc_pipe_open_noauth(domain->conn.cli,
-					  &ndr_table_dssetup.syntax_id,
-					  &cli);
+	cli = cli_rpc_pipe_open_noauth(domain->conn.cli, PI_DSSETUP,
+				       &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (cli == NULL) {
 		DEBUG(5, ("set_dc_type_and_flags_connect: Could not bind to "
 			  "PI_DSSETUP on domain %s: (%s)\n",
 			  domain->name, nt_errstr(result)));
@@ -1809,7 +1783,7 @@
 								  DS_ROLE_BASIC_INFORMATION,
 								  &info,
 								  &werr);
-	TALLOC_FREE(cli);
+	cli_rpc_pipe_close(cli);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		DEBUG(5, ("set_dc_type_and_flags_connect: rpccli_ds_getprimarydominfo "
@@ -1837,14 +1811,13 @@
 	}
 
 no_dssetup:
-	result = cli_rpc_pipe_open_noauth(domain->conn.cli,
-					  &ndr_table_lsarpc.syntax_id, &cli);
+	cli = cli_rpc_pipe_open_noauth(domain->conn.cli, PI_LSARPC, &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (cli == NULL) {
 		DEBUG(5, ("set_dc_type_and_flags_connect: Could not bind to "
 			  "PI_LSARPC on domain %s: (%s)\n",
 			  domain->name, nt_errstr(result)));
-		TALLOC_FREE(cli);
+		cli_rpc_pipe_close(cli);
 		TALLOC_FREE(mem_ctx);
 		return;
 	}
@@ -1924,7 +1897,7 @@
 	DEBUG(5,("set_dc_type_and_flags_connect: domain %s is %srunning active directory.\n",
 		  domain->name, domain->active_directory ? "" : "NOT "));
 
-	TALLOC_FREE(cli);
+	cli_rpc_pipe_close(cli);
 
 	TALLOC_FREE(mem_ctx);
 
@@ -2044,15 +2017,14 @@
 
 	/* We have an authenticated connection. Use a NTLMSSP SPNEGO
 	   authenticated SAMR pipe with sign & seal. */
-	result = cli_rpc_pipe_open_spnego_ntlmssp(conn->cli,
-						  &ndr_table_samr.syntax_id,
-						  PIPE_AUTH_LEVEL_PRIVACY,
-						  domain_name,
-						  machine_account,
-						  machine_password,
-						  &conn->samr_pipe);
+	conn->samr_pipe =
+		cli_rpc_pipe_open_spnego_ntlmssp(conn->cli, PI_SAMR,
+						 PIPE_AUTH_LEVEL_PRIVACY,
+						 domain_name,
+						 machine_account,
+						 machine_password, &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (conn->samr_pipe == NULL) {
 		DEBUG(10,("cm_connect_sam: failed to connect to SAMR "
 			  "pipe for domain %s using NTLMSSP "
 			  "authenticated pipe: user %s\\%s. Error was "
@@ -2067,7 +2039,7 @@
 		  domain_name, machine_account));
 
 	result = rpccli_samr_Connect2(conn->samr_pipe, mem_ctx,
-				      conn->samr_pipe->desthost,
+				      conn->samr_pipe->cli->desthost,
 				      SEC_RIGHTS_MAXIMUM_ALLOWED,
 				      &conn->sam_connect_handle);
 	if (NT_STATUS_IS_OK(result)) {
@@ -2076,7 +2048,7 @@
 	DEBUG(10,("cm_connect_sam: ntlmssp-sealed rpccli_samr_Connect2 "
 		  "failed for domain %s, error was %s. Trying schannel\n",
 		  domain->name, nt_errstr(result) ));
-	TALLOC_FREE(conn->samr_pipe);
+	cli_rpc_pipe_close(conn->samr_pipe);
 
  schannel:
 
@@ -2088,11 +2060,11 @@
 			   "for domain %s, trying anon\n", domain->name));
 		goto anonymous;
 	}
-	result = cli_rpc_pipe_open_schannel_with_key
-		(conn->cli, &ndr_table_samr.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
-		 domain->name, p_dcinfo, &conn->samr_pipe);
+	conn->samr_pipe = cli_rpc_pipe_open_schannel_with_key
+		(conn->cli, PI_SAMR, PIPE_AUTH_LEVEL_PRIVACY,
+		 domain->name, p_dcinfo, &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (conn->samr_pipe == NULL) {
 		DEBUG(10,("cm_connect_sam: failed to connect to SAMR pipe for "
 			  "domain %s using schannel. Error was %s\n",
 			  domain->name, nt_errstr(result) ));
@@ -2102,7 +2074,7 @@
 		  "schannel.\n", domain->name ));
 
 	result = rpccli_samr_Connect2(conn->samr_pipe, mem_ctx,
-				      conn->samr_pipe->desthost,
+				      conn->samr_pipe->cli->desthost,
 				      SEC_RIGHTS_MAXIMUM_ALLOWED,
 				      &conn->sam_connect_handle);
 	if (NT_STATUS_IS_OK(result)) {
@@ -2111,20 +2083,21 @@
 	DEBUG(10,("cm_connect_sam: schannel-sealed rpccli_samr_Connect2 failed "
 		  "for domain %s, error was %s. Trying anonymous\n",
 		  domain->name, nt_errstr(result) ));
-	TALLOC_FREE(conn->samr_pipe);
+	cli_rpc_pipe_close(conn->samr_pipe);
 
  anonymous:
 
 	/* Finally fall back to anonymous. */
-	result = cli_rpc_pipe_open_noauth(conn->cli, &ndr_table_samr.syntax_id,
-					  &conn->samr_pipe);
+	conn->samr_pipe = cli_rpc_pipe_open_noauth(conn->cli, PI_SAMR,
+						   &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (conn->samr_pipe == NULL) {
+		result = NT_STATUS_PIPE_NOT_AVAILABLE;
 		goto done;
 	}
 
 	result = rpccli_samr_Connect2(conn->samr_pipe, mem_ctx,
-				      conn->samr_pipe->desthost,
+				      conn->samr_pipe->cli->desthost,
 				      SEC_RIGHTS_MAXIMUM_ALLOWED,
 				      &conn->sam_connect_handle);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -2185,13 +2158,11 @@
 
 	/* We have an authenticated connection. Use a NTLMSSP SPNEGO
 	 * authenticated LSA pipe with sign & seal. */
-	result = cli_rpc_pipe_open_spnego_ntlmssp
-		(conn->cli, &ndr_table_lsarpc.syntax_id,
-		 PIPE_AUTH_LEVEL_PRIVACY,
-		 conn->cli->domain, conn->cli->user_name, conn_pwd,
-		 &conn->lsa_pipe);
+	conn->lsa_pipe = cli_rpc_pipe_open_spnego_ntlmssp
+		(conn->cli, PI_LSARPC, PIPE_AUTH_LEVEL_PRIVACY,
+		 conn->cli->domain, conn->cli->user_name, conn_pwd, &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (conn->lsa_pipe == NULL) {
 		DEBUG(10,("cm_connect_lsa: failed to connect to LSA pipe for "
 			  "domain %s using NTLMSSP authenticated pipe: user "
 			  "%s\\%s. Error was %s. Trying schannel.\n",
@@ -2214,7 +2185,7 @@
 	DEBUG(10,("cm_connect_lsa: rpccli_lsa_open_policy failed, trying "
 		  "schannel\n"));
 
-	TALLOC_FREE(conn->lsa_pipe);
+	cli_rpc_pipe_close(conn->lsa_pipe);
 
  schannel:
 
@@ -2226,12 +2197,11 @@
 			   "for domain %s, trying anon\n", domain->name));
 		goto anonymous;
 	}
-	result = cli_rpc_pipe_open_schannel_with_key
-		(conn->cli, &ndr_table_lsarpc.syntax_id,
-		 PIPE_AUTH_LEVEL_PRIVACY,
-		 domain->name, p_dcinfo, &conn->lsa_pipe);
+	conn->lsa_pipe = cli_rpc_pipe_open_schannel_with_key
+		(conn->cli, PI_LSARPC, PIPE_AUTH_LEVEL_PRIVACY,
+		 domain->name, p_dcinfo, &result);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (conn->lsa_pipe == NULL) {
 		DEBUG(10,("cm_connect_lsa: failed to connect to LSA pipe for "
 			  "domain %s using schannel. Error was %s\n",
 			  domain->name, nt_errstr(result) ));
@@ -2250,14 +2220,13 @@
 	DEBUG(10,("cm_connect_lsa: rpccli_lsa_open_policy failed, trying "
 		  "anonymous\n"));
 
-	TALLOC_FREE(conn->lsa_pipe);
+	cli_rpc_pipe_close(conn->lsa_pipe);
 
  anonymous:
 
-	result = cli_rpc_pipe_open_noauth(conn->cli,
-					  &ndr_table_lsarpc.syntax_id,
-					  &conn->lsa_pipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	conn->lsa_pipe = cli_rpc_pipe_open_noauth(conn->cli, PI_LSARPC,
+						  &result);
+	if (conn->lsa_pipe == NULL) {
 		result = NT_STATUS_PIPE_NOT_AVAILABLE;
 		goto done;
 	}
@@ -2307,10 +2276,9 @@
 		return NT_STATUS_OK;
 	}
 
-	result = cli_rpc_pipe_open_noauth(conn->cli,
-					  &ndr_table_netlogon.syntax_id,
-					  &netlogon_pipe);
-	if (!NT_STATUS_IS_OK(result)) {
+	netlogon_pipe = cli_rpc_pipe_open_noauth(conn->cli, PI_NETLOGON,
+						 &result);
+	if (netlogon_pipe == NULL) {
 		return result;
 	}
 
@@ -2327,7 +2295,7 @@
 	if (!get_trust_pw_hash(domain->name, mach_pwd, &account_name,
 			       &sec_chan_type))
 	{
-		TALLOC_FREE(netlogon_pipe);
+		cli_rpc_pipe_close(netlogon_pipe);
 		return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
 	}
 
@@ -2342,14 +2310,14 @@
 		 &neg_flags);
 
 	if (!NT_STATUS_IS_OK(result)) {
-		TALLOC_FREE(netlogon_pipe);
+		cli_rpc_pipe_close(netlogon_pipe);
 		return result;
 	}
 
 	if ((lp_client_schannel() == True) &&
 			((neg_flags & NETLOGON_NEG_SCHANNEL) == 0)) {
 		DEBUG(3, ("Server did not offer schannel\n"));
-		TALLOC_FREE(netlogon_pipe);
+		cli_rpc_pipe_close(netlogon_pipe);
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
@@ -2373,15 +2341,18 @@
 	   part of the new pipe auth struct.
 	*/
 
-	result = cli_rpc_pipe_open_schannel_with_key(
-		conn->cli, &ndr_table_netlogon.syntax_id,
-		PIPE_AUTH_LEVEL_PRIVACY, domain->name, netlogon_pipe->dc,
-		&conn->netlogon_pipe);
+	conn->netlogon_pipe =
+		cli_rpc_pipe_open_schannel_with_key(conn->cli,
+						    PI_NETLOGON,
+						    PIPE_AUTH_LEVEL_PRIVACY,
+						    domain->name,
+						    netlogon_pipe->dc,
+						    &result);
 
 	/* We can now close the initial netlogon pipe. */
-	TALLOC_FREE(netlogon_pipe);
+	cli_rpc_pipe_close(netlogon_pipe);
 
-	if (!NT_STATUS_IS_OK(result)) {
+	if (conn->netlogon_pipe == NULL) {
 		DEBUG(3, ("Could not open schannel'ed NETLOGON pipe. Error "
 			  "was %s\n", nt_errstr(result)));
 			  

Modified: branches/samba/upstream/source/winbindd/winbindd_dual.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_dual.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_dual.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -196,12 +196,10 @@
 
 	TALLOC_FREE(state->reply_timeout_event);
 
-	/* If child exists and is not already reaped,
-	   send kill signal to child. */
+	SMB_ASSERT(state->child_pid != (pid_t)0);
 
-	if ((state->child->pid != (pid_t)0) &&
-			(state->child->pid != (pid_t)-1) &&
-			(state->child->pid == state->child_pid)) {
+	/* If not already reaped, send kill signal to child. */
+	if (state->child->pid == state->child_pid) {
 		kill(state->child_pid, SIGTERM);
 
 		/* 
@@ -297,14 +295,12 @@
 	}
 
 	if ((child->pid == 0) && (!fork_domain_child(child))) {
-		/* fork_domain_child failed.
-		   Cancel all outstanding requests */
+		/* Cancel all outstanding requests */
 
 		while (request != NULL) {
 			/* request might be free'd in the continuation */
 			struct winbindd_async_request *next = request->next;
-
-			async_request_fail(request);
+			request->continuation(request->private_data, False);
 			request = next;
 		}
 		return;
@@ -1037,8 +1033,6 @@
 
 	/* Child */
 
-	DEBUG(10, ("Child process %d\n", (int)sys_getpid()));
-
 	/* Stop zombies in children */
 	CatchChild();
 
@@ -1111,10 +1105,6 @@
 		}
 	}
 
-	if (primary_domain == NULL) {
-		smb_panic("no primary domain found");
-	}
-
 	/* Ensure we're not handling an event inherited from
 	   our parent. */
 

Modified: branches/samba/upstream/source/winbindd/winbindd_group.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_group.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_group.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -45,9 +45,7 @@
  Add member users resulting from sid. Expand if it is a domain group.
 **********************************************************************/
 
-static void add_expanded_sid(const DOM_SID *sid,
-			     char **pp_members,
-			     size_t *p_num_members)
+static void add_expanded_sid(const DOM_SID *sid, char **pp_members, size_t *p_num_members)
 {
 	DOM_SID dom_sid;
 	uint32 rid;
@@ -145,8 +143,8 @@
 }
 
 static bool fill_passdb_alias_grmem(struct winbindd_domain *domain,
-				    DOM_SID *group_sid, size_t *num_gr_mem,
-				    char **gr_mem, size_t *gr_mem_len)
+			     DOM_SID *group_sid, 
+			     size_t *num_gr_mem, char **gr_mem, size_t *gr_mem_len)
 {
 	DOM_SID *members;
 	size_t i, num_members;
@@ -179,37 +177,17 @@
 
 /* Fill a grent structure from various other information */
 
-static bool fill_grent(TALLOC_CTX *mem_ctx, struct winbindd_gr *gr,
-		       const char *dom_name,
-		       char *gr_name, gid_t unix_gid)
+static bool fill_grent(struct winbindd_gr *gr, const char *dom_name, 
+		       const char *gr_name, gid_t unix_gid)
 {
 	fstring full_group_name;
-	char *mapped_name = NULL;
-	struct winbindd_domain *domain = find_domain_from_name_noinit(dom_name);
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 
-	nt_status = normalize_name_map(mem_ctx, domain, gr_name,
-				       &mapped_name);
+	fill_domain_username( full_group_name, dom_name, gr_name, True );
 
-	/* Basic whitespace replacement */
-	if (NT_STATUS_IS_OK(nt_status)) {
-		fill_domain_username(full_group_name, dom_name,
-				     mapped_name, true);
-	}
-	/* Mapped to an aliase */
-	else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) {
-		fstrcpy(full_group_name, mapped_name);
-	}
-	/* no change */
-	else {
-		fill_domain_username( full_group_name, dom_name,
-				      gr_name, True );
-	}
-
 	gr->gr_gid = unix_gid;
-
+    
 	/* Group name and password */
-
+    
 	safe_strcpy(gr->gr_name, full_group_name, sizeof(gr->gr_name) - 1);
 	safe_strcpy(gr->gr_passwd, "x", sizeof(gr->gr_passwd) - 1);
 
@@ -230,7 +208,7 @@
 				     struct winbindd_cli_state *state,
 				     DOM_SID *group_sid,
 				     enum lsa_SidType group_name_type,
-				     size_t *num_gr_mem, char **gr_mem,
+				     size_t *num_gr_mem, char **gr_mem, 
 				     size_t *gr_mem_len)
 {
 	DOM_SID querying_user_sid;
@@ -251,12 +229,10 @@
 		if (sys_getpeereid(state->sock, &ret_uid)==0) {
 			/* We know who's asking - look up their SID if
 			   it's one we've mapped before. */
-			status = idmap_uid_to_sid(domain->name,
-						  &querying_user_sid, ret_uid);
+			status = idmap_uid_to_sid(&querying_user_sid, ret_uid);
 			if (NT_STATUS_IS_OK(status)) {
 				pquerying_user_sid = &querying_user_sid;
-				DEBUG(10,("fill_grent_mem_domain_users: "
-					  "querying uid %u -> %s\n",
+				DEBUG(10,("fill_grent_mem_domain_users: querying uid %u -> %s\n",
 					  (unsigned int)ret_uid,
 					  sid_string_dbg(pquerying_user_sid)));
 			}
@@ -266,23 +242,22 @@
 	/* Only look up if it was a winbindd user in this domain. */
 	if (pquerying_user_sid &&
 	    (sid_compare_domain(pquerying_user_sid, &domain->sid) == 0)) {
-
+		
 		DEBUG(10,("fill_grent_mem_domain_users: querying user = %s\n",
 			  sid_string_dbg(pquerying_user_sid) ));
-
+		
 		status = domain->methods->lookup_usergroups(domain,
 							    mem_ctx,
 							    pquerying_user_sid,
 							    &num_groups,
 							    &user_sids);
 		if (!NT_STATUS_IS_OK(status)) {
-			DEBUG(1, ("fill_grent_mem_domain_users: "
-				  "lookup_usergroups failed "
-				  "for sid %s in domain %s (error: %s)\n",
+			DEBUG(1, ("fill_grent_mem_domain_users: lookup_usergroups failed "
+				  "for sid %s in domain %s (error: %s)\n", 
 				  sid_string_dbg(pquerying_user_sid),
 				  domain->name,
 				  nt_errstr(status)));
-		        return False;
+		        return False;			
 		}
 
 		for (i = 0; i < num_groups; i++) {
@@ -294,22 +269,18 @@
 			}
 		}
 	}
-
+	
 	if (u_in_group) {
 		size_t len = 0;
 		char *domainname = NULL;
 		char *username = NULL;
 		fstring name;
-		char *mapped_name = NULL;
 		enum lsa_SidType type;
-		struct winbindd_domain *target_domain = NULL;
-		NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
-
-		DEBUG(10,("fill_grent_mem_domain_users: "
-			  "sid %s in 'Domain Users' in domain %s\n",
+		
+		DEBUG(10,("fill_grent_mem_domain_users: sid %s in 'Domain Users' in domain %s\n",
 			  sid_string_dbg(pquerying_user_sid),
 			  domain->name ));
-
+		
 		status = domain->methods->sid_to_name(domain, mem_ctx,
 						      pquerying_user_sid,
 						      &domainname,
@@ -317,56 +288,38 @@
 						      &type);
 		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(1, ("could not lookup username for user "
-				  "sid %s in domain %s (error: %s)\n",
+				  "sid %s in domain %s (error: %s)\n", 
 				  sid_string_dbg(pquerying_user_sid),
 				  domain->name,
 				  nt_errstr(status)));
-			return False;
+			return False;			
 		}
-
-		target_domain = find_domain_from_name_noinit(domainname);
-		name_map_status = normalize_name_map(mem_ctx, target_domain,
-						     username, &mapped_name);
-
-		/* Basic whitespace replacement */
-		if (NT_STATUS_IS_OK(name_map_status)) {
-			fill_domain_username(name, domainname, mapped_name, true);
-		}
-		/* Mapped to an alias */
-		else if (NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED)) {
-			fstrcpy(name, mapped_name);
-		}
-		/* no mapping done...use original name */
-		else {
-			fill_domain_username(name, domainname, username, true);
-		}
-
+		fill_domain_username(name, domain->name, username, True);
 		len = strlen(name);
 		buf_len = len + 1;
 		if (!(buf = (char *)SMB_MALLOC(buf_len))) {
 			DEBUG(1, ("out of memory\n"));
-			return False;
+			return False;			
 		}
 		memcpy(buf, name, buf_len);
-
+		
 		DEBUG(10,("fill_grent_mem_domain_users: user %s in "
 			  "'Domain Users' in domain %s\n",
 			  name, domain->name ));
-
+		
 		/* user is the only member */
 		*num_gr_mem = 1;
 	}
-
+		
 	*gr_mem = buf;
 	*gr_mem_len = buf_len;
+	
+	DEBUG(10, ("fill_grent_mem_domain_users: num_mem = %u, len = %u, mem = %s\n", 
+		   (unsigned int)*num_gr_mem, 
+		   (unsigned int)buf_len, *num_gr_mem ? buf : "NULL")); 
 
-	DEBUG(10, ("fill_grent_mem_domain_users: "
-		   "num_mem = %u, len = %u, mem = %s\n",
-		   (unsigned int)*num_gr_mem,
-		   (unsigned int)buf_len, *num_gr_mem ? buf : "NULL"));
-
 	return True;
-}
+}					 
 
 /***********************************************************************
  Add names to a list.  Assumes  a canonical version of the string
@@ -375,29 +328,28 @@
 
 static int namecmp( const void *a, const void *b )
 {
-	return StrCaseCmp( * (char * const *) a, * (char * const *) b);
+	return StrCaseCmp( * (char * const *) a, * (char * const *) b);	
 }
 
-static NTSTATUS add_names_to_list( TALLOC_CTX *ctx,
-				   char ***list, uint32 *n_list,
+static NTSTATUS add_names_to_list( TALLOC_CTX *ctx, 
+				   char ***list, uint32 *n_list, 
 				   char **names, uint32 n_names )
 {
-	char **new_list = NULL;
-	uint32 n_new_list = 0;
-	int i, j;
+	char **new_list = NULL;	
+	uint32 n_new_list = 0;	
+	int i, j;	
 
 	if ( !names || (n_names == 0) )
 		return NT_STATUS_OK;
-
+	
 	/* Alloc the maximum size we'll need */
 
         if ( *list == NULL ) {
-		if ((new_list = TALLOC_ARRAY(ctx, char *, n_names)) == NULL) {
+		if ( (new_list = TALLOC_ARRAY( ctx, char *, n_names )) == NULL ) 
 			return NT_STATUS_NO_MEMORY;
-		}
-		n_new_list = n_names;
+		n_new_list = n_names;		
 	} else {
-		new_list = TALLOC_REALLOC_ARRAY( ctx, *list, char *,
+		new_list = TALLOC_REALLOC_ARRAY( ctx, *list, char *, 
 						 (*n_list) + n_names );
 		if ( !new_list )
 			return NT_STATUS_NO_MEMORY;
@@ -412,33 +364,33 @@
 
 	/* search for duplicates for sorting and looking for matching
 	   neighbors */
-
+	
 	qsort( new_list, n_new_list, sizeof(char*), QSORT_CAST namecmp );
-
+	
 	for ( i=1; i<n_new_list; i++ ) {
-		if ( strcmp( new_list[i-1], new_list[i] ) == 0 ) {
-			memmove( &new_list[i-1], &new_list[i],
+		if ( strcmp( new_list[i-1], new_list[i] ) == 0 ) {			
+			memmove( &new_list[i-1], &new_list[i], 
 				 sizeof(char*)*(n_new_list-i) );
 			n_new_list--;
 		}
 	}
 
 	*list = new_list;
-	*n_list = n_new_list;
+	*n_list = n_new_list;	
 
-	return NT_STATUS_OK;
+	return NT_STATUS_OK;	
 }
 
 /***********************************************************************
 ***********************************************************************/
 
-static NTSTATUS expand_groups( TALLOC_CTX *ctx,
+static NTSTATUS expand_groups( TALLOC_CTX *ctx, 
 			       struct winbindd_domain *d,
 			       DOM_SID *glist, uint32 n_glist,
 			       DOM_SID **new_glist, uint32 *n_new_glist,
 			       char ***members, uint32 *n_members )
 {
-	int i, j;
+	int i, j;	
 	NTSTATUS status = NT_STATUS_OK;
 	uint32 num_names = 0;
 	uint32 *name_types = NULL;
@@ -446,25 +398,25 @@
 	DOM_SID *sid_mem = NULL;
 	TALLOC_CTX *tmp_ctx = NULL;
 	DOM_SID *new_groups = NULL;
-	size_t new_groups_size = 0;
-
+	size_t new_groups_size = 0;	
+	
 	*members = NULL;
-	*n_members = 0;
+	*n_members = 0;	
 	*new_glist = NULL;
-	*n_new_glist = 0;
-
+	*n_new_glist = 0;	
+	
 	for ( i=0; i<n_glist; i++ ) {
 		tmp_ctx = talloc_new( ctx );
 
 		/* Lookup the group membership */
 
-		status = d->methods->lookup_groupmem(d, tmp_ctx,
+		status = d->methods->lookup_groupmem(d, tmp_ctx, 
 						     &glist[i], &num_names,
-						     &sid_mem, &names,
+						     &sid_mem, &names, 
 						     &name_types);
-		if ( !NT_STATUS_IS_OK(status) )
+		if ( !NT_STATUS_IS_OK(status) ) 
 			goto out;
-
+				
 		/* Separate users and groups into two lists */
 
 		for ( j=0; j<num_names; j++ ) {
@@ -473,14 +425,14 @@
 			if ( name_types[j] == SID_NAME_USER ||
 			     name_types[j] == SID_NAME_COMPUTER )
 			{
-				status = add_names_to_list( ctx, members,
+				status = add_names_to_list( ctx, members, 
 							    n_members,
 							    names+j, 1 );
 				if ( !NT_STATUS_IS_OK(status) )
 					goto out;
 
-				continue;
-			}
+				continue;				
+			} 
 
 			/* Groups */
 			if ( name_types[j] == SID_NAME_DOM_GRP ||
@@ -502,12 +454,12 @@
 	}
 
 	*new_glist = new_groups;
-	*n_new_glist = (uint32)new_groups_size;
-
+	*n_new_glist = (uint32)new_groups_size;	
+	
  out:
 	TALLOC_FREE( tmp_ctx );
-
-	return status;
+	
+	return status;	
 }
 
 /***********************************************************************
@@ -516,10 +468,9 @@
 
 static bool fill_grent_mem(struct winbindd_domain *domain,
 			   struct winbindd_cli_state *state,
-			   DOM_SID *group_sid,
-			   enum lsa_SidType group_name_type,
-			   size_t *num_gr_mem, char **gr_mem,
-			   size_t *gr_mem_len)
+			   DOM_SID *group_sid, 
+			   enum lsa_SidType group_name_type, 
+			   size_t *num_gr_mem, char **gr_mem, size_t *gr_mem_len)
 {
 	uint32 num_names = 0;
 	unsigned int buf_len = 0, buf_ndx = 0, i;
@@ -529,8 +480,8 @@
 	uint32 group_rid;
 	DOM_SID *glist = NULL;
 	DOM_SID *new_glist = NULL;
-	uint32 n_glist, n_new_glist;
-	int max_depth = lp_winbind_expand_groups();
+	uint32 n_glist, n_new_glist;	
+	int max_depth = lp_winbind_expand_groups();	
 
 	if (!(mem_ctx = talloc_init("fill_grent_mem(%s)", domain->name)))
 		return False;
@@ -557,7 +508,7 @@
 	if ( !((group_name_type==SID_NAME_DOM_GRP) ||
 	       ((group_name_type==SID_NAME_ALIAS) && domain->primary)) )
 	{
-		DEBUG(1, ("SID %s in domain %s isn't a domain group (%d)\n",
+		DEBUG(1, ("SID %s in domain %s isn't a domain group (%d)\n", 
 			  sid_string_dbg(group_sid),
 			  domain->name, group_name_type));
                 goto done;
@@ -568,15 +519,15 @@
 
 	sid_peek_rid( group_sid, &group_rid );
 	if (!lp_winbind_enum_users() && group_rid == DOMAIN_GROUP_RID_USERS) {
-		result = fill_grent_mem_domusers( mem_ctx, domain, state,
+		result = fill_grent_mem_domusers( mem_ctx, domain, state, 
 						  group_sid, group_name_type,
 						  num_gr_mem, gr_mem,
 						  gr_mem_len );
-		goto done;
+		goto done;		
 	}
 
 	/* Real work goes here.  Create a list of group names to
-	   expand startign with the initial one.  Pass that to
+	   expand startign with the initial one.  Pass that to 
 	   expand_groups() which returns a list of more group names
 	   to expand.  Do this up to the max search depth. */
 
@@ -585,67 +536,34 @@
 		DEBUG(0,("fill_grent_mem: talloc failure!\n"));
 		goto done;
 	}
-	sid_copy( &glist[0], group_sid );
-	n_glist = 1;
+	sid_copy( &glist[0], group_sid );	
+	n_glist = 1;	
 
 	for ( i=0; i<max_depth && glist; i++ ) {
 		uint32 n_members = 0;
 		char **members = NULL;
-		NTSTATUS nt_status;
-		int j;
+		NTSTATUS nt_status;		
 
 		nt_status = expand_groups( mem_ctx, domain,
-					   glist, n_glist,
+					   glist, n_glist, 
 					   &new_glist, &n_new_glist,
 					   &members, &n_members);
 		if ( !NT_STATUS_IS_OK(nt_status) ) {
-			result = False;
+			result = False;			
 			goto done;
-		}
+		}		
+		
+		/* Add new group members to list */
 
-		/* Add new group members to list.  Pass through the
-		   alias mapping function */
-
-		for (j=0; j<n_members; j++) {
-			fstring name_domain, name_acct;
-			fstring qualified_name;
-			char *mapped_name = NULL;
-			NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
-			struct winbindd_domain *target_domain = NULL;
-
-			if (parse_domain_user(members[j], name_domain, name_acct)) {
-				target_domain = find_domain_from_name_noinit(name_domain);
-				/* NOW WHAT ? */
-			}
-			if (!target_domain) {
-				target_domain = domain;
-			}
-
-			name_map_status = normalize_name_map(members, target_domain,
-							     name_acct, &mapped_name);
-
-			/* Basic whitespace replacement */
-			if (NT_STATUS_IS_OK(name_map_status)) {
-				fill_domain_username(qualified_name, name_domain,
-						     mapped_name, true);
-				mapped_name = qualified_name;
-			}
-			/* no mapping at all */
-			else if (!NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED)) {
-				mapped_name = members[j];
-			}
-
-			nt_status = add_names_to_list( mem_ctx, &names,
-						       &num_names,
-						       &mapped_name, 1);
-			if ( !NT_STATUS_IS_OK(nt_status) ) {
-				result = False;
-				goto done;
-			}
+		nt_status = add_names_to_list( mem_ctx, &names, &num_names, 
+					       members, n_members );
+		if ( !NT_STATUS_IS_OK(nt_status) ) {
+			result = False;			
+			goto done;
 		}
+		
+		TALLOC_FREE( members );		
 
-		TALLOC_FREE( members );
-
 		/* If we have no more groups to expand, break out
 		   early */
 
@@ -657,8 +575,8 @@
 		glist = new_glist;
 		n_glist = n_new_glist;
 	}
-	TALLOC_FREE( glist );
-
+	TALLOC_FREE( glist );	
+	 
 	DEBUG(10, ("looked up %d names\n", num_names));
 
  again:
@@ -666,11 +584,11 @@
 
 	for (i = 0; i < num_names; i++) {
 		int len;
-
+			
 		DEBUG(10, ("processing name %s\n", names[i]));
 
 		len = strlen(names[i]);
-
+		
 		/* Add to list or calculate buffer length */
 
 		if (!buf) {
@@ -708,27 +626,26 @@
 	*gr_mem = buf;
 	*gr_mem_len = buf_len;
 
-	DEBUG(10, ("num_mem = %u, len = %u, mem = %s\n",
-		   (unsigned int)*num_gr_mem,
-		   (unsigned int)buf_len, *num_gr_mem ? buf : "NULL"));
+	DEBUG(10, ("num_mem = %u, len = %u, mem = %s\n", (unsigned int)*num_gr_mem, 
+		   (unsigned int)buf_len, *num_gr_mem ? buf : "NULL")); 
 	result = True;
 
 done:
 
 	talloc_destroy(mem_ctx);
-
+	
 	DEBUG(10, ("fill_grent_mem returning %d\n", result));
 
 	return result;
 }
 
-static void winbindd_getgrsid(struct winbindd_cli_state *state, DOM_SID group_sid);
+static void winbindd_getgrsid( struct winbindd_cli_state *state, DOM_SID group_sid );
 
-static void getgrnam_recv( void *private_data, bool success, const DOM_SID *sid,
+static void getgrnam_recv( void *private_data, bool success, const DOM_SID *sid, 
 			   enum lsa_SidType type )
 {
 	struct winbindd_cli_state *state = (struct winbindd_cli_state*)private_data;
-
+	
 	if (!success) {
 		DEBUG(5,("getgrnam_recv: lookupname failed!\n"));
 		request_error(state);
@@ -739,12 +656,12 @@
 		DEBUG(5,("getgrnam_recv: not a group!\n"));
 		request_error(state);
 		return;
-	}
+	}	
 
 	winbindd_getgrsid( state, *sid );
 }
 
-
+	
 /* Return a group structure from a group name */
 
 void winbindd_getgrnam(struct winbindd_cli_state *state)
@@ -752,32 +669,22 @@
 	struct winbindd_domain *domain;
 	fstring name_domain, name_group;
 	char *tmp;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
+	
 	/* Ensure null termination */
 	state->request.data.groupname[sizeof(state->request.data.groupname)-1]='\0';
 
 	DEBUG(3, ("[%5lu]: getgrnam %s\n", (unsigned long)state->pid,
 		  state->request.data.groupname));
 
-	nt_status = normalize_name_unmap(state->mem_ctx,
-					 state->request.data.groupname,
-					 &tmp);
-	/* If we didn't map anything in the above call, just reset the
-	   tmp pointer to the original string */
-	if (!NT_STATUS_IS_OK(nt_status) &&
-	    !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED))
-	{
-		tmp = state->request.data.groupname;
-	}
-
 	/* Parse domain and groupname */
+	
+	memset(name_group, 0, sizeof(fstring));
 
-	memset(name_group, 0, sizeof(name_group));
+	tmp = state->request.data.groupname;
 
 	name_domain[0] = '\0';
 	name_group[0] = '\0';
-
+	
 	parse_domain_user(tmp, name_domain, name_group);
 
 	/* if no domain or our local domain and no local tdb group, default to
@@ -796,7 +703,7 @@
 		return;
 	}
 	/* should we deal with users for our domain? */
-
+	
 	if ( lp_winbind_trusted_domains_only() && domain->primary) {
 		DEBUG(7,("winbindd_getgrnam: My domain -- rejecting "
 			 "getgrnam() for %s\\%s.\n", name_domain, name_group));
@@ -806,8 +713,8 @@
 
 	/* Get rid and name type from name */
 
-	fstrcpy( name_group, tmp );
-
+	ws_name_replace( name_group, WB_REPLACE_CHAR );
+        
 	winbindd_lookupname_async( state->mem_ctx, domain->name, name_group,
 				   getgrnam_recv, WINBINDD_GETGRNAM, state );
 }
@@ -816,7 +723,7 @@
 	struct winbindd_cli_state *state;
 	struct winbindd_domain *domain;
 	char *group_name;
-	enum lsa_SidType group_type;
+	enum lsa_SidType group_type;	
 	uid_t gid;
 	DOM_SID group_sid;
 };
@@ -829,7 +736,7 @@
 	size_t gr_mem_len;
 	size_t num_gr_mem;
 	char *gr_mem;
-	fstring dom_name, group_name;
+	fstring dom_name, group_name;	
 
 	if (!success) {
 		DEBUG(5,("getgrsid_sid2gid_recv: sid2gid failed!\n"));
@@ -845,7 +752,7 @@
 		return;
 	}
 
-
+	
 	/* Fill in group structure */
 
 	if ( (domain = find_domain_from_name_noinit(dom_name)) == NULL ) {
@@ -854,10 +761,9 @@
 		return;
 	}
 
-	if (!fill_grent(s->state->mem_ctx, &s->state->response.data.gr,
-			dom_name, group_name, gid) ||
+	if (!fill_grent(&s->state->response.data.gr, dom_name, group_name, gid) ||
 	    !fill_grent_mem(domain, s->state, &s->group_sid, s->group_type,
-			    &num_gr_mem, &gr_mem, &gr_mem_len))
+			    &num_gr_mem, &gr_mem, &gr_mem_len)) 
 	{
 		request_error(s->state);
 		return;
@@ -872,7 +778,7 @@
 	s->state->response.length += gr_mem_len;
 	s->state->response.extra_data.data = gr_mem;
 
-	request_ok(s->state);
+	request_ok(s->state);	
 	}
 
 static void getgrsid_lookupsid_recv( void *private_data, bool success,
@@ -880,9 +786,6 @@
 				     enum lsa_SidType name_type )
 {
 	struct getgrsid_state *s = (struct getgrsid_state *)private_data;
-	char *mapped_name = NULL;
-	fstring raw_name;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 
 	if (!success) {
 		DEBUG(5,("getgrsid_lookupsid_recv: lookupsid failed!\n"));
@@ -894,46 +797,22 @@
 	   local group in an internal domain */
 
  	if ( !( (name_type==SID_NAME_DOM_GRP) ||
-	        ((name_type==SID_NAME_ALIAS) &&
+	        ((name_type==SID_NAME_ALIAS) && 
 		 (s->domain->primary || s->domain->internal)) ) )
 	{
-		DEBUG(1, ("name '%s\\%s' is not a local or domain group: %d\n",
+		DEBUG(1, ("name '%s\\%s' is not a local or domain group: %d\n", 
 			  dom_name, name, name_type));
 		request_error(s->state);
 		return;
-	}
+}
 
-	/* normalize the name and ensure that we have the DOM\name
-	  coming out of here */
-
-	fstrcpy(raw_name, name);
-
-	nt_status = normalize_name_unmap(s->state->mem_ctx, raw_name,
-					 &mapped_name);
-
-	/* basiuc whitespace reversal */
-	if (NT_STATUS_IS_OK(nt_status)) {
-		s->group_name = talloc_asprintf(s->state->mem_ctx,
-						"%s%c%s",
-						dom_name,
-						*lp_winbind_separator(),
-						mapped_name);
-	}
-	/* mapped from alias */
-	else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) {
-		s->group_name = mapped_name;
-	}
-	/* no mapping at all.  use original string */
-	else {
-		s->group_name = talloc_asprintf(s->state->mem_ctx,
-						"%s%c%s",
-						dom_name,
-						*lp_winbind_separator(),
-						raw_name);
-	}
-
-	if (s->group_name == NULL) {
-		DEBUG(1, ("getgrsid_lookupsid_recv: group_name is NULL!\n"));
+	if ( (s->group_name = talloc_asprintf( s->state->mem_ctx, 
+                                               "%s%c%s",
+                                               dom_name,
+					       *lp_winbind_separator(),
+                                               name)) == NULL )
+{
+		DEBUG(1, ("getgrsid_lookupsid_recv: talloc_asprintf() Failed!\n"));
 		request_error(s->state);
 		return;
 	}
@@ -942,10 +821,10 @@
 
 	winbindd_sid2gid_async(s->state->mem_ctx, &s->group_sid,
 			       getgrsid_sid2gid_recv, s);
-}
+	}
 
 static void winbindd_getgrsid( struct winbindd_cli_state *state, const DOM_SID group_sid )
-{
+	{
 	struct getgrsid_state *s;
 
 	if ( (s = TALLOC_ZERO_P(state->mem_ctx, struct getgrsid_state)) == NULL ) {
@@ -965,7 +844,7 @@
 
 	sid_copy(&s->group_sid, &group_sid);
 
-	winbindd_lookupsid_async( s->state->mem_ctx,  &group_sid,
+	winbindd_lookupsid_async( s->state->mem_ctx,  &group_sid, 
 				  getgrsid_lookupsid_recv, s );
 }
 
@@ -996,7 +875,7 @@
 		return;
 	}
 
-	DEBUG(1, ("could not convert gid %lu to sid\n",
+	DEBUG(1, ("could not convert gid %lu to sid\n", 
 		  (unsigned long)state->request.data.gid));
 	request_error(state);
 }
@@ -1004,14 +883,11 @@
 /* Return a group structure from a gid number */
 void winbindd_getgrgid(struct winbindd_cli_state *state)
 {
-	gid_t gid = state->request.data.gid;
+	DEBUG(3, ("[%5lu]: getgrgid %lu\n", (unsigned long)state->pid, 
+		  (unsigned long)state->request.data.gid));
 
-	DEBUG(3, ("[%5lu]: getgrgid %lu\n",
-		  (unsigned long)state->pid,
-		  (unsigned long)gid));
-
 	/* always use the async interface */
-	winbindd_gid2sid_async(state->mem_ctx, gid, getgrgid_recv, state);
+	winbindd_gid2sid_async(state->mem_ctx, state->request.data.gid, getgrgid_recv, state);
 }
 
 /*
@@ -1030,46 +906,45 @@
 
 	if (!lp_winbind_enum_groups()) {
 		return False;
-	}
+	}		
 
 	/* Free old static data if it exists */
-
+	
 	if (state->getgrent_state != NULL) {
 		free_getent_state(state->getgrent_state);
 		state->getgrent_state = NULL;
 	}
-
+	
 	/* Create sam pipes for each domain we know about */
-
+	
 	for (domain = domain_list(); domain != NULL; domain = domain->next) {
 		struct getent_state *domain_state;
-
+		
 		/* Create a state record for this domain */
 
-		/* don't add our domaina if we are a PDC or if we
+		/* don't add our domaina if we are a PDC or if we 
 		   are a member of a Samba domain */
-
+		
 		if ( lp_winbind_trusted_domains_only() && domain->primary )
 		{
 			continue;
 		}
-
-		domain_state = SMB_MALLOC_P(struct getent_state);
-		if (!domain_state) {
-			DEBUG(1, ("winbindd_setgrent: "
-				  "malloc failed for domain_state!\n"));
+						
+		
+		if ((domain_state = SMB_MALLOC_P(struct getent_state)) == NULL) {
+			DEBUG(1, ("winbindd_setgrent: malloc failed for domain_state!\n"));
 			return False;
 		}
-
+		
 		ZERO_STRUCTP(domain_state);
-
+		
 		fstrcpy(domain_state->domain_name, domain->name);
 
 		/* Add to list of open domains */
-
+		
 		DLIST_ADD(state->getgrent_state, domain_state);
 	}
-
+	
 	state->getgrent_initialized = True;
 	return True;
 }
@@ -1096,7 +971,7 @@
 }
 
 /* Get the list of domain groups and domain aliases for a domain.  We fill in
-   the sam_entries and num_sam_entries fields with domain group information.
+   the sam_entries and num_sam_entries fields with domain group information.  
    Return True if some groups were returned, False otherwise. */
 
 bool get_sam_group_entries(struct getent_state *ent)
@@ -1108,17 +983,16 @@
 	bool result = False;
 	struct acct_info *sam_grp_entries = NULL;
 	struct winbindd_domain *domain;
-
+        
 	if (ent->got_sam_entries)
 		return False;
 
 	if (!(mem_ctx = talloc_init("get_sam_group_entries(%s)",
 					  ent->domain_name))) {
-		DEBUG(1, ("get_sam_group_entries: "
-			  "could not create talloc context!\n"));
+		DEBUG(1, ("get_sam_group_entries: could not create talloc context!\n")); 
 		return False;
 	}
-
+		
 	/* Free any existing group info */
 
 	SAFE_FREE(ent->sam_entries);
@@ -1130,20 +1004,16 @@
 	num_entries = 0;
 
 	if (!(domain = find_domain_from_name(ent->domain_name))) {
-		DEBUG(3, ("no such domain %s in get_sam_group_entries\n",
-			  ent->domain_name));
+		DEBUG(3, ("no such domain %s in get_sam_group_entries\n", ent->domain_name));
 		goto done;
 	}
 
 	/* always get the domain global groups */
 
-	status = domain->methods->enum_dom_groups(domain, mem_ctx, &num_entries,
-						  &sam_grp_entries);
-
+	status = domain->methods->enum_dom_groups(domain, mem_ctx, &num_entries, &sam_grp_entries);
+	
 	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("get_sam_group_entries: "
-			  "could not enumerate domain groups! Error: %s\n",
-			  nt_errstr(status)));
+		DEBUG(3, ("get_sam_group_entries: could not enumerate domain groups! Error: %s\n", nt_errstr(status)));
 		result = False;
 		goto done;
 	}
@@ -1151,36 +1021,29 @@
 	/* Copy entries into return buffer */
 
 	if (num_entries) {
-		name_list = SMB_MALLOC_ARRAY(struct acct_info, num_entries);
-		if (!name_list) {
-			DEBUG(0,("get_sam_group_entries: Failed to malloc "
-				 "memory for %d domain groups!\n",
-				 num_entries));
+		if ( !(name_list = SMB_MALLOC_ARRAY(struct acct_info, num_entries)) ) {
+			DEBUG(0,("get_sam_group_entries: Failed to malloc memory for %d domain groups!\n", 
+				num_entries));
 			result = False;
 			goto done;
 		}
-		memcpy(name_list, sam_grp_entries,
-			num_entries * sizeof(struct acct_info));
+		memcpy( name_list, sam_grp_entries, num_entries * sizeof(struct acct_info) );
 	}
-
+	
 	ent->num_sam_entries = num_entries;
-
-	/* get the domain local groups if we are a member of a native win2k
-	 * domain and are not using LDAP to get the groups */
-
-	if ( ( lp_security() != SEC_ADS && domain->native_mode
+	
+	/* get the domain local groups if we are a member of a native win2k domain
+	   and are not using LDAP to get the groups */
+	   
+	if ( ( lp_security() != SEC_ADS && domain->native_mode 
 		&& domain->primary) || domain->internal )
 	{
-		DEBUG(4,("get_sam_group_entries: %s domain; "
-			 "enumerating local groups as well\n",
-			 domain->native_mode ? "Native Mode 2k":
-						"BUILTIN or local"));
-
-		status = domain->methods->enum_local_groups(domain, mem_ctx,
-							    &num_entries,
-							    &sam_grp_entries);
-
-		if ( !NT_STATUS_IS_OK(status) ) {
+		DEBUG(4,("get_sam_group_entries: %s domain; enumerating local groups as well\n", 
+			domain->native_mode ? "Native Mode 2k":"BUILTIN or local"));
+		
+		status = domain->methods->enum_local_groups(domain, mem_ctx, &num_entries, &sam_grp_entries);
+		
+		if ( !NT_STATUS_IS_OK(status) ) { 
 			DEBUG(3,("get_sam_group_entries: "
 				"Failed to enumerate "
 				"domain local groups with error %s!\n",
@@ -1188,35 +1051,27 @@
 			num_entries = 0;
 		}
 		else
-			DEBUG(4,("get_sam_group_entries: "
-				 "Returned %d local groups\n",
-				 num_entries));
-
+			DEBUG(4,("get_sam_group_entries: Returned %d local groups\n", num_entries));
+		
 		/* Copy entries into return buffer */
 
 		if ( num_entries ) {
-			name_list = SMB_REALLOC_ARRAY(name_list,
-						      struct acct_info,
-						      ent->num_sam_entries+
-							num_entries);
-			if (!name_list) {
-				DEBUG(0,("get_sam_group_entries: "
-					 "Failed to realloc more memory "
-					 "for %d local groups!\n",
-					 num_entries));
+			if ( !(name_list = SMB_REALLOC_ARRAY( name_list, struct acct_info, ent->num_sam_entries+num_entries)) )
+			{
+				DEBUG(0,("get_sam_group_entries: Failed to realloc more memory for %d local groups!\n", 
+					num_entries));
 				result = False;
 				goto done;
 			}
-
-			memcpy(&name_list[ent->num_sam_entries],
-				sam_grp_entries,
-				num_entries * sizeof(struct acct_info));
+			
+			memcpy( &name_list[ent->num_sam_entries], sam_grp_entries, 
+				num_entries * sizeof(struct acct_info) );
 		}
-
+	
 		ent->num_sam_entries += num_entries;
 	}
-
-
+	
+		
 	/* Fill in remaining fields */
 
 	ent->sam_entries = name_list;
@@ -1257,19 +1112,18 @@
 		return;
 	}
 
-	group_list = SMB_MALLOC_ARRAY(struct winbindd_gr, num_groups);
-	if (!group_list) {
+	if ((state->response.extra_data.data = SMB_MALLOC_ARRAY(struct winbindd_gr, num_groups)) == NULL) {
 		request_error(state);
 		return;
 	}
-	/* will be freed by process_request() */
-	state->response.extra_data.data = group_list;
 
 	memset(state->response.extra_data.data, '\0',
 		num_groups * sizeof(struct winbindd_gr) );
 
 	state->response.data.num_entries = 0;
 
+	group_list = (struct winbindd_gr *)state->response.extra_data.data;
+
 	if (!state->getgrent_initialized)
 		winbindd_setgrent_internal(state);
 
@@ -1289,7 +1143,7 @@
 		char *gr_mem;
 		DOM_SID group_sid;
 		struct winbindd_domain *domain;
-
+				
 		/* Do we need to fetch another chunk of groups? */
 
 	tryagain:
@@ -1302,8 +1156,7 @@
 			while(ent && !get_sam_group_entries(ent)) {
 				struct getent_state *next_ent;
 
-				DEBUG(10, ("freeing state info for domain %s\n",
-					   ent->domain_name));
+				DEBUG(10, ("freeing state info for domain %s\n", ent->domain_name)); 
 
 				/* Free state information for this domain */
 
@@ -1311,33 +1164,32 @@
 
 				next_ent = ent->next;
 				DLIST_REMOVE(state->getgrent_state, ent);
-
+				
 				SAFE_FREE(ent);
 				ent = next_ent;
 			}
 
 			/* No more domains */
 
-			if (!ent)
+			if (!ent) 
                                 break;
 		}
-
+		
 		name_list = (struct acct_info *)ent->sam_entries;
-
-		if (!(domain = find_domain_from_name(ent->domain_name))) {
-			DEBUG(3, ("No such domain %s in winbindd_getgrent\n",
-				  ent->domain_name));
+		
+		if (!(domain = 
+		      find_domain_from_name(ent->domain_name))) {
+			DEBUG(3, ("No such domain %s in winbindd_getgrent\n", ent->domain_name));
 			result = False;
 			goto done;
 		}
 
 		/* Lookup group info */
-
+		
 		sid_copy(&group_sid, &domain->sid);
 		sid_append_rid(&group_sid, name_list[ent->sam_entry_index].rid);
 
-		if (!NT_STATUS_IS_OK(idmap_sid_to_gid(domain->name, &group_sid,
-						      &group_gid))) {
+		if (!NT_STATUS_IS_OK(idmap_sid_to_gid(&group_sid, &group_gid))) {
 			union unid_t id;
 			enum lsa_SidType type;
 
@@ -1345,8 +1197,9 @@
 				   sid_string_dbg(&group_sid)));
 
 			if (!pdb_sid_to_id(&group_sid, &id, &type)) {
-				DEBUG(1,("could not look up gid for group %s\n",
-					 name_list[ent->sam_entry_index].acct_name));
+				DEBUG(1, ("could not look up gid for group "
+					  "%s\n", 
+					  name_list[ent->sam_entry_index].acct_name));
 				ent->sam_entry_index++;
 				goto tryagain;
 			}
@@ -1363,16 +1216,15 @@
 			group_gid = id.gid;
 		}
 
-		DEBUG(10, ("got gid %lu for group %lu\n",
-			   (unsigned long)group_gid,
+		DEBUG(10, ("got gid %lu for group %lu\n", (unsigned long)group_gid,
 			   (unsigned long)name_list[ent->sam_entry_index].rid));
-
+		
 		/* Fill in group entry */
 
-		fill_domain_username(domain_group_name, ent->domain_name,
+		fill_domain_username(domain_group_name, ent->domain_name, 
 			 name_list[ent->sam_entry_index].acct_name, True);
 
-		result = fill_grent(state->mem_ctx, &group_list[group_list_ndx],
+		result = fill_grent(&group_list[group_list_ndx], 
 				    ent->domain_name,
 				    name_list[ent->sam_entry_index].acct_name,
 				    group_gid);
@@ -1385,8 +1237,8 @@
 			group_list[group_list_ndx].num_gr_mem = 0;
 			gr_mem = NULL;
 			gr_mem_len = 0;
-
-			/* Get group membership */
+			
+			/* Get group membership */			
 			if (state->request.cmd == WINBINDD_GETGRLST) {
 				result = True;
 			} else {
@@ -1409,8 +1261,7 @@
 			gr_mem_list = (char *)SMB_REALLOC(
 				gr_mem_list, gr_mem_list_len + gr_mem_len);
 
-			if (!gr_mem_list &&
-			    (group_list[group_list_ndx].num_gr_mem != 0)) {
+			if (!gr_mem_list && (group_list[group_list_ndx].num_gr_mem != 0)) {
 				DEBUG(0, ("out of memory\n"));
 				gr_mem_list_len = 0;
 				break;
@@ -1424,16 +1275,16 @@
 
 			SAFE_FREE(gr_mem);
 
-			group_list[group_list_ndx].gr_mem_ofs =
+			group_list[group_list_ndx].gr_mem_ofs = 
 				gr_mem_list_len;
 
 			gr_mem_list_len += gr_mem_len;
 		}
 
 		ent->sam_entry_index++;
-
+		
 		/* Add group to return list */
-
+		
 		if (result) {
 
 			DEBUG(10, ("adding group num_entries = %d\n",
@@ -1441,12 +1292,12 @@
 
 			group_list_ndx++;
 			state->response.data.num_entries++;
-
+			
 			state->response.length +=
 				sizeof(struct winbindd_gr);
-
+			
 		} else {
-			DEBUG(0, ("could not lookup domain group %s\n",
+			DEBUG(0, ("could not lookup domain group %s\n", 
 				  domain_group_name));
 		}
 	}
@@ -1469,7 +1320,7 @@
 	}
 
 	memcpy(&((char *)state->response.extra_data.data)
-	       [group_list_ndx * sizeof(struct winbindd_gr)],
+	       [group_list_ndx * sizeof(struct winbindd_gr)], 
 	       gr_mem_list, gr_mem_list_len);
 
 	state->response.length += gr_mem_list_len;
@@ -1524,8 +1375,6 @@
 void winbindd_getgroups(struct winbindd_cli_state *state)
 {
 	struct getgroups_state *s;
-	char *real_name = NULL;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 
 	/* Ensure null termination */
 	state->request.data.username
@@ -1545,22 +1394,13 @@
 
 	s->state = state;
 
-	nt_status = normalize_name_unmap(state->mem_ctx,
-					 state->request.data.username,
-					 &real_name);
+	ws_name_return( state->request.data.username, WB_REPLACE_CHAR );
 
-	/* Reset the real_name pointer if we didn't do anything
-	   productive in the above call */
-	if (!NT_STATUS_IS_OK(nt_status) &&
-	    !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED))
-	{
-		real_name = state->request.data.username;
-	}
-
-	if (!parse_domain_user_talloc(state->mem_ctx, real_name,
+	if (!parse_domain_user_talloc(state->mem_ctx,
+				      state->request.data.username,
 				      &s->domname, &s->username)) {
 		DEBUG(5, ("Could not parse domain user: %s\n",
-			  real_name));
+			  state->request.data.username));
 
 		/* error out if we do not have nested group support */
 
@@ -1569,27 +1409,25 @@
 			return;
 		}
 
-		s->domname = talloc_strdup(state->mem_ctx,
-					   get_global_sam_name());
-		s->username = talloc_strdup(state->mem_ctx,
-					    state->request.data.username);
+		s->domname = talloc_strdup( state->mem_ctx, get_global_sam_name() );
+		s->username = talloc_strdup( state->mem_ctx, state->request.data.username );
 	}
-
-	/* Get info for the domain (either by short domain name or
+	
+	/* Get info for the domain (either by short domain name or 
 	   DNS name in the case of a UPN) */
 
 	s->domain = find_domain_from_name_noinit(s->domname);
 	if (!s->domain) {
 		char *p = strchr(s->username, '@');
-
+		
 		if (p) {
-			s->domain = find_domain_from_name_noinit(p+1);
+			s->domain = find_domain_from_name_noinit(p+1);			
 		}
-
+		
 	}
 
 	if (s->domain == NULL) {
-		DEBUG(7, ("could not find domain entry for domain %s\n",
+		DEBUG(7, ("could not find domain entry for domain %s\n", 
 			  s->domname));
 		request_error(state);
 		return;
@@ -1601,14 +1439,12 @@
 			 s->username));
 		request_error(state);
 		return;
-	}
+	}	
 
 	/* Get rid and name type from name.  The following costs 1 packet */
 
-	winbindd_lookupname_async(state->mem_ctx,
-				  s->domname, s->username,
-				  getgroups_usersid_recv,
-				  WINBINDD_GETGROUPS, s);
+	winbindd_lookupname_async(state->mem_ctx, s->domname, s->username,
+				  getgroups_usersid_recv, WINBINDD_GETGROUPS, s);
 }
 
 static void getgroups_usersid_recv(void *private_data, bool success,
@@ -1683,9 +1519,7 @@
 	s->state->response.data.num_entries = s->num_token_gids;
 	if (s->num_token_gids) {
 		/* s->token_gids are talloced */
-		s->state->response.extra_data.data =
-			smb_xmemdup(s->token_gids,
-					s->num_token_gids * sizeof(gid_t));
+		s->state->response.extra_data.data = smb_xmemdup(s->token_gids, s->num_token_gids * sizeof(gid_t));
 		s->state->response.length += s->num_token_gids * sizeof(gid_t);
 	}
 	request_ok(s->state);
@@ -1696,7 +1530,7 @@
    rather than a NAME->SID->SIDS->GIDS mapping, which means we avoid
    idmap. This call is designed to be used with applications that need
    to do ACL evaluation themselves. Note that the cached info3 data is
-   not used
+   not used 
 
    this function assumes that the SID that comes in is a user SID. If
    you pass in another type of SID then you may get unpredictable
@@ -1789,9 +1623,9 @@
 		return;
 	}
 
-	/* Get info for the domain */
+	/* Get info for the domain */	
 	if ((domain = find_domain_from_sid_noinit(&user_sid)) == NULL) {
-		DEBUG(0,("could not find domain entry for sid %s\n",
+		DEBUG(0,("could not find domain entry for sid %s\n", 
 			 sid_string_dbg(&user_sid)));
 		request_error(state);
 		return;
@@ -1832,9 +1666,7 @@
 		return WINBINDD_OK;
 	}
 
-	if (!print_sidlist(state->mem_ctx,
-			   groups, num_groups,
-			   &sidstring, &len)) {
+	if (!print_sidlist(state->mem_ctx, groups, num_groups, &sidstring, &len)) {
 		DEBUG(0, ("talloc failed\n"));
 		return WINBINDD_ERROR;
 	}

Modified: branches/samba/upstream/source/winbindd/winbindd_idmap.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_idmap.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_idmap.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -170,6 +170,108 @@
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }
 
+static void winbindd_sids2xids_recv(TALLOC_CTX *mem_ctx, bool success,
+			       struct winbindd_response *response,
+			       void *c, void *private_data)
+{
+	void (*cont)(void *priv, bool succ, void *, int) =
+		(void (*)(void *, bool, void *, int))c;
+
+	if (!success) {
+		DEBUG(5, ("Could not trigger sids2xids\n"));
+		cont(private_data, False, NULL, 0);
+		return;
+	}
+
+	if (response->result != WINBINDD_OK) {
+		DEBUG(5, ("sids2xids returned an error\n"));
+		cont(private_data, False, NULL, 0);
+		return;
+	}
+
+	cont(private_data, True, response->extra_data.data, response->length - sizeof(response));
+}
+
+void winbindd_sids2xids_async(TALLOC_CTX *mem_ctx, void *sids, int size,
+			 void (*cont)(void *private_data, bool success, void *data, int len),
+			 void *private_data)
+{
+	struct winbindd_request request;
+	ZERO_STRUCT(request);
+	request.cmd = WINBINDD_DUAL_SIDS2XIDS;
+	request.extra_data.data = (char *)sids;
+	request.extra_len = size;
+	do_async(mem_ctx, idmap_child(), &request, winbindd_sids2xids_recv,
+		 (void *)cont, private_data);
+}
+
+enum winbindd_result winbindd_dual_sids2xids(struct winbindd_domain *domain,
+					   struct winbindd_cli_state *state)
+{
+	DOM_SID *sids;
+	struct unixid *xids;
+	struct id_map **ids;
+	NTSTATUS result;
+	int num, i;
+
+	DEBUG(3, ("[%5lu]: sids to unix ids\n", (unsigned long)state->pid));
+
+	if (state->request.extra_len == 0) {
+		DEBUG(0, ("Invalid buffer size!\n"));
+		return WINBINDD_ERROR;
+	}
+
+	sids = (DOM_SID *)state->request.extra_data.data;
+	num = state->request.extra_len / sizeof(DOM_SID);
+
+	ids = TALLOC_ZERO_ARRAY(state->mem_ctx, struct id_map *, num + 1);
+	if ( ! ids) {
+		DEBUG(0, ("Out of memory!\n"));
+		return WINBINDD_ERROR;
+	}
+	for (i = 0; i < num; i++) {
+		ids[i] = TALLOC_P(ids, struct id_map);
+		if ( ! ids[i]) {
+			DEBUG(0, ("Out of memory!\n"));
+			talloc_free(ids);
+			return WINBINDD_ERROR;
+		}
+		ids[i]->sid = &sids[i];
+	}
+
+	result = idmap_sids_to_unixids(ids);
+
+	if (NT_STATUS_IS_OK(result)) {
+
+		xids = SMB_MALLOC_ARRAY(struct unixid, num);
+		if ( ! xids) {
+			DEBUG(0, ("Out of memory!\n"));
+			talloc_free(ids);
+			return WINBINDD_ERROR;
+		}
+
+		for (i = 0; i < num; i++) {
+			if (ids[i]->status == ID_MAPPED) {
+				xids[i].type = ids[i]->xid.type;
+				xids[i].id = ids[i]->xid.id;
+			} else {
+				xids[i].type = -1;
+			}
+		}
+
+		state->response.length = sizeof(state->response) + (sizeof(struct unixid) * num);
+		state->response.extra_data.data = xids;
+
+	} else {
+		DEBUG (2, ("idmap_sids_to_unixids returned an error: 0x%08x\n", NT_STATUS_V(result)));
+		talloc_free(ids);
+		return WINBINDD_ERROR;
+	}
+
+	talloc_free(ids);
+	return WINBINDD_OK;
+}
+
 static void winbindd_sid2uid_recv(TALLOC_CTX *mem_ctx, bool success,
 			       struct winbindd_response *response,
 			       void *c, void *private_data)
@@ -197,28 +299,8 @@
 			 void *private_data)
 {
 	struct winbindd_request request;
-	struct winbindd_domain *domain;
-
 	ZERO_STRUCT(request);
 	request.cmd = WINBINDD_DUAL_SID2UID;
-
-	domain = find_domain_from_sid(sid);
-
-	if (domain != NULL) {
-		DEBUG(10, ("winbindd_sid2uid_async found domain %s, "
-			   "have_idmap_config = %d\n", domain->name,
-			   (int)domain->have_idmap_config));
-
-	}
-	else {
-		DEBUG(10, ("winbindd_sid2uid_async did not find a domain for "
-			   "%s\n", sid_string_dbg(sid)));
-	}
-
-	if ((domain != NULL) && (domain->have_idmap_config)) {
-		fstrcpy(request.domain_name, domain->name);
-	}
-
 	sid_to_fstring(request.data.dual_sid2id.sid, sid);
 	do_async(mem_ctx, idmap_child(), &request, winbindd_sid2uid_recv,
 		 (void *)cont, private_data);
@@ -239,12 +321,9 @@
 		return WINBINDD_ERROR;
 	}
 
-	result = idmap_sid_to_uid(state->request.domain_name, &sid,
-				  &state->response.data.uid);
+	/* Find uid for this sid and return it, possibly ask the slow remote idmap */
 
-	DEBUG(10, ("winbindd_dual_sid2uid: 0x%08x - %s - %u\n",
-		   NT_STATUS_V(result), sid_string_dbg(&sid),
-		   state->response.data.uid));
+	result = idmap_sid_to_uid(&sid, &(state->response.data.uid));
 
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }
@@ -276,16 +355,8 @@
 			 void *private_data)
 {
 	struct winbindd_request request;
-	struct winbindd_domain *domain;
-
 	ZERO_STRUCT(request);
 	request.cmd = WINBINDD_DUAL_SID2GID;
-
-	domain = find_domain_from_sid(sid);
-	if ((domain != NULL) && (domain->have_idmap_config)) {
-		fstrcpy(request.domain_name, domain->name);
-	}
-
 	sid_to_fstring(request.data.dual_sid2id.sid, sid);
 
 	DEBUG(7,("winbindd_sid2gid_async: Resolving %s to a gid\n",
@@ -312,8 +383,7 @@
 
 	/* Find gid for this sid and return it, possibly ask the slow remote idmap */
 
-	result = idmap_sid_to_gid(state->request.domain_name, &sid,
-				  &state->response.data.gid);
+	result = idmap_sid_to_gid(&sid, &state->response.data.gid);
 
 	DEBUG(10, ("winbindd_dual_sid2gid: 0x%08x - %s - %u\n",
 		   NT_STATUS_V(result), sid_string_dbg(&sid),
@@ -351,21 +421,11 @@
 			    void (*cont)(void *private_data, bool success, const char *sid),
 			    void *private_data)
 {
-	struct winbindd_domain *domain;
 	struct winbindd_request request;
 
 	ZERO_STRUCT(request);
 	request.cmd = WINBINDD_DUAL_UID2SID;
 	request.data.uid = uid;
-
-	for (domain = domain_list(); domain != NULL; domain = domain->next) {
-		if (domain->have_idmap_config
-		    && (uid >= domain->id_range_low)
-		    && (uid <= domain->id_range_high)) {
-			fstrcpy(request.domain_name, domain->name);
-		}
-	}
-
 	do_async(mem_ctx, idmap_child(), &request, winbindd_uid2sid_recv,
 		 (void *)cont, private_data);
 }
@@ -381,8 +441,7 @@
 		 (unsigned long) state->request.data.uid));
 
 	/* Find sid for this uid and return it, possibly ask the slow remote idmap */
-	result = idmap_uid_to_sid(state->request.domain_name, &sid,
-				  state->request.data.uid);
+	result = idmap_uid_to_sid(&sid, state->request.data.uid);
 
 	if (NT_STATUS_IS_OK(result)) {
 		sid_to_fstring(state->response.data.sid.sid, &sid);
@@ -419,21 +478,11 @@
 			    void (*cont)(void *private_data, bool success, const char *sid),
 			    void *private_data)
 {
-	struct winbindd_domain *domain;
 	struct winbindd_request request;
 
 	ZERO_STRUCT(request);
 	request.cmd = WINBINDD_DUAL_GID2SID;
 	request.data.gid = gid;
-
-	for (domain = domain_list(); domain != NULL; domain = domain->next) {
-		if (domain->have_idmap_config
-		    && (gid >= domain->id_range_low)
-		    && (gid <= domain->id_range_high)) {
-			fstrcpy(request.domain_name, domain->name);
-		}
-	}
-
 	do_async(mem_ctx, idmap_child(), &request, winbindd_gid2sid_recv,
 		 (void *)cont, private_data);
 }
@@ -449,8 +498,7 @@
 		(unsigned long) state->request.data.gid));
 
 	/* Find sid for this gid and return it, possibly ask the slow remote idmap */
-	result = idmap_gid_to_sid(state->request.domain_name, &sid,
-				  state->request.data.gid);
+	result = idmap_gid_to_sid(&sid, state->request.data.gid);
 
 	if (NT_STATUS_IS_OK(result)) {
 		sid_to_fstring(state->response.data.sid.sid, &sid);
@@ -473,7 +521,13 @@
 		.name		= "DUAL_SID2GID",
 		.struct_cmd	= WINBINDD_DUAL_SID2GID,
 		.struct_fn	= winbindd_dual_sid2gid,
+#if 0   /* DISABLED until we fix the interface in Samba 3.0.26 --jerry */
 	},{
+		.name		= "DUAL_SIDS2XIDS",
+		.struct_cmd	= WINBINDD_DUAL_SIDS2XIDS,
+		.struct_fn	= winbindd_dual_sids2xids,
+#endif  /* end DISABLED */
+	},{
 		.name		= "DUAL_UID2SID",
 		.struct_cmd	= WINBINDD_DUAL_UID2SID,
 		.struct_fn	= winbindd_dual_uid2sid,

Modified: branches/samba/upstream/source/winbindd/winbindd_locator.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_locator.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_locator.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -54,54 +54,12 @@
 	sendto_child(state, locator_child());
 }
 
-struct wbc_flag_map {
-	uint32_t wbc_dc_flag;
-	uint32_t ds_dc_flags;
-};
-
-static uint32_t get_dsgetdc_flags(uint32_t wbc_flags)
-{
-	struct wbc_flag_map lookup_dc_flags[] = {
-		{ WBC_LOOKUP_DC_FORCE_REDISCOVERY, DS_FORCE_REDISCOVERY },
-		{ WBC_LOOKUP_DC_DS_REQUIRED, DS_DIRECTORY_SERVICE_REQUIRED },
-		{ WBC_LOOKUP_DC_DS_PREFERRED, DS_DIRECTORY_SERVICE_PREFERRED},
-		{ WBC_LOOKUP_DC_GC_SERVER_REQUIRED, DS_GC_SERVER_REQUIRED },
-		{ WBC_LOOKUP_DC_PDC_REQUIRED,  DS_PDC_REQUIRED},
-		{ WBC_LOOKUP_DC_BACKGROUND_ONLY, DS_BACKGROUND_ONLY  },
-		{ WBC_LOOKUP_DC_IP_REQUIRED, DS_IP_REQUIRED },
-		{ WBC_LOOKUP_DC_KDC_REQUIRED, DS_KDC_REQUIRED },
-		{ WBC_LOOKUP_DC_TIMESERV_REQUIRED, DS_TIMESERV_REQUIRED },
-		{ WBC_LOOKUP_DC_WRITABLE_REQUIRED,  DS_WRITABLE_REQUIRED },
-		{ WBC_LOOKUP_DC_GOOD_TIMESERV_PREFERRED, DS_GOOD_TIMESERV_PREFERRED },
-		{ WBC_LOOKUP_DC_AVOID_SELF, DS_AVOID_SELF },
-		{ WBC_LOOKUP_DC_ONLY_LDAP_NEEDED, DS_ONLY_LDAP_NEEDED },
-		{ WBC_LOOKUP_DC_IS_FLAT_NAME, DS_IS_FLAT_NAME },
-		{ WBC_LOOKUP_DC_IS_DNS_NAME, DS_IS_DNS_NAME },
-		{ WBC_LOOKUP_DC_TRY_NEXTCLOSEST_SITE, DS_TRY_NEXTCLOSEST_SITE },
-		{ WBC_LOOKUP_DC_DS_6_REQUIRED, DS_DIRECTORY_SERVICE_6_REQUIRED },
-		{ WBC_LOOKUP_DC_RETURN_DNS_NAME, DS_RETURN_DNS_NAME },
-		{ WBC_LOOKUP_DC_RETURN_FLAT_NAME, DS_RETURN_FLAT_NAME }
-	};
-	uint32_t ds_flags = 0;
-	int i = 0 ;
-	int num_entries = sizeof(lookup_dc_flags) / sizeof(struct wbc_flag_map);
-
-	for (i=0; i<num_entries; i++) {
-		if (wbc_flags & lookup_dc_flags[i].wbc_dc_flag)
-			ds_flags |= lookup_dc_flags[i].ds_dc_flags;
-	}
-
-	return ds_flags;
-}
-
-
 static enum winbindd_result dual_dsgetdcname(struct winbindd_domain *domain,
 					     struct winbindd_cli_state *state)
 {
 	NTSTATUS result;
 	struct netr_DsRGetDCNameInfo *info = NULL;
 	const char *dc = NULL;
-	uint32_t ds_flags = 0;
 
 	state->request.domain_name
 		[sizeof(state->request.domain_name)-1] = '\0';
@@ -109,11 +67,9 @@
 	DEBUG(3, ("[%5lu]: dsgetdcname for %s\n", (unsigned long)state->pid,
 		  state->request.domain_name));
 
-	ds_flags = get_dsgetdc_flags(state->request.flags);
-
 	result = dsgetdcname(state->mem_ctx, winbind_messaging_context(),
 			     state->request.domain_name,
-			     NULL, NULL, ds_flags, &info);
+			     NULL, NULL, state->request.flags, &info);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		return WINBINDD_ERROR;

Modified: branches/samba/upstream/source/winbindd/winbindd_misc.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_misc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_misc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -86,7 +86,10 @@
                   "good" : "bad"));
 
  done:
-	set_auth_errors(&state->response, result);
+	state->response.data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(state->response.data.auth.nt_status_string, nt_errstr(result));
+	fstrcpy(state->response.data.auth.error_string, nt_errstr(result));
+	state->response.data.auth.pam_error = nt_status_to_pam(result);
 
 	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Checking the trust account password returned %s\n", 
 						state->response.data.auth.nt_status_string));
@@ -463,7 +466,7 @@
 	/* This call can take a long time - allow the server to time out.
 	   35 seconds should do it. */
 
-	orig_timeout = rpccli_set_timeout(netlogon_pipe, 35000);
+	orig_timeout = cli_set_timeout(netlogon_pipe->cli, 35000);
 
 	req_domain = find_domain_from_name_noinit(state->request.domain_name);
 	if (req_domain == domain) {
@@ -482,7 +485,7 @@
 						  &werr);
 	}
 	/* And restore our original timeout. */
-	rpccli_set_timeout(netlogon_pipe, orig_timeout);
+	cli_set_timeout(netlogon_pipe->cli, orig_timeout);
 
 	if (!NT_STATUS_IS_OK(result)) {
 		DEBUG(5,("Error requesting DCname for domain %s: %s\n",

Modified: branches/samba/upstream/source/winbindd/winbindd_pam.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_pam.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_pam.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -176,7 +176,7 @@
 	}
 
 	fill_domain_username(state->response.data.auth.unix_username,
-			     nt_domain, nt_username, true);
+			     nt_domain, nt_username, True);
 
 	DEBUG(5,("Setting unix username to [%s]\n",
 		state->response.data.auth.unix_username));
@@ -310,8 +310,8 @@
 
 	TALLOC_FREE(frame);
 
-	status = sid_array_from_info3(mem_ctx, info3,
-				      &token->user_sids,
+	status = sid_array_from_info3(mem_ctx, info3, 
+				      &token->user_sids, 
 				      &token->num_sids,
 				      true, false);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -338,13 +338,13 @@
 			return NT_STATUS_OK;
 		}
 	}
-
+	
 	/* Do not distinguish this error from a wrong username/pw */
 
 	return NT_STATUS_LOGON_FAILURE;
 }
 
-struct winbindd_domain *find_auth_domain(struct winbindd_cli_state *state,
+struct winbindd_domain *find_auth_domain(struct winbindd_cli_state *state, 
 					const char *domain_name)
 {
 	struct winbindd_domain *domain;
@@ -353,7 +353,7 @@
 		domain = find_domain_from_name_noinit(domain_name);
 		if (domain == NULL) {
 			DEBUG(3, ("Authentication for domain [%s] refused "
-				  "as it is not a trusted domain\n",
+				  "as it is not a trusted domain\n", 
 				  domain_name));
 		}
 		return domain;
@@ -370,30 +370,27 @@
 	if (state->request.flags & WBFLAG_PAM_CONTACT_TRUSTDOM) {
 		domain = find_domain_from_name_noinit(domain_name);
 		if (domain == NULL) {
-			DEBUG(3, ("Authentication for domain [%s] skipped "
-				  "as it is not a trusted domain\n",
+			DEBUG(3, ("Authentication for domain [%s] skipped " 
+				  "as it is not a trusted domain\n", 
 				  domain_name));
 		} else {
 			return domain;
-		}
+		} 
 	}
 
 	return find_our_domain();
 }
 
-static void fill_in_password_policy(struct winbindd_response *r,
-				    const struct samr_DomInfo1 *p)
+static void set_auth_errors(struct winbindd_response *resp, NTSTATUS result)
 {
-	r->data.auth.policy.min_length_password =
-		p->min_password_length;
-	r->data.auth.policy.password_history =
-		p->password_history_length;
-	r->data.auth.policy.password_properties =
-		p->password_properties;
-	r->data.auth.policy.expire	=
-		nt_time_to_unix_abs((NTTIME *)&(p->max_password_age));
-	r->data.auth.policy.min_passwordage =
-		nt_time_to_unix_abs((NTTIME *)&(p->min_password_age));
+	resp->data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(resp->data.auth.nt_status_string, nt_errstr(result));
+
+	/* we might have given a more useful error above */
+	if (*resp->data.auth.error_string == '\0') 
+		fstrcpy(resp->data.auth.error_string,
+			get_friendly_nt_error_msg(result));
+	resp->data.auth.pam_error = nt_status_to_pam(result);
 }
 
 static NTSTATUS fillup_password_policy(struct winbindd_domain *domain,
@@ -405,9 +402,9 @@
 
 	if ( !winbindd_can_contact_domain( domain ) ) {
 		DEBUG(5,("fillup_password_policy: No inbound trust to "
-			 "contact domain %s\n", domain->name));
+			 "contact domain %s\n", domain->name));		
 		return NT_STATUS_NOT_SUPPORTED;
-	}
+	}	
 
 	methods = domain->methods;
 
@@ -416,13 +413,22 @@
 		return status;
 	}
 
-	fill_in_password_policy(&state->response, &password_policy);
+	state->response.data.auth.policy.min_length_password =
+		password_policy.min_password_length;
+	state->response.data.auth.policy.password_history =
+		password_policy.password_history_length;
+	state->response.data.auth.policy.password_properties =
+		password_policy.password_properties;
+	state->response.data.auth.policy.expire	=
+		nt_time_to_unix_abs((NTTIME *)&(password_policy.max_password_age));
+	state->response.data.auth.policy.min_passwordage =
+		nt_time_to_unix_abs((NTTIME *)&(password_policy.min_password_age));
 
 	return NT_STATUS_OK;
 }
 
-static NTSTATUS get_max_bad_attempts_from_lockout_policy(struct winbindd_domain *domain,
-							 TALLOC_CTX *mem_ctx,
+static NTSTATUS get_max_bad_attempts_from_lockout_policy(struct winbindd_domain *domain, 
+							 TALLOC_CTX *mem_ctx, 
 							 uint16 *lockout_threshold)
 {
 	struct winbindd_methods *methods;
@@ -443,8 +449,8 @@
 	return NT_STATUS_OK;
 }
 
-static NTSTATUS get_pwd_properties(struct winbindd_domain *domain,
-				   TALLOC_CTX *mem_ctx,
+static NTSTATUS get_pwd_properties(struct winbindd_domain *domain, 
+				   TALLOC_CTX *mem_ctx, 
 				   uint32 *password_properties)
 {
 	struct winbindd_methods *methods;
@@ -467,7 +473,7 @@
 
 #ifdef HAVE_KRB5
 
-static const char *generate_krb5_ccache(TALLOC_CTX *mem_ctx,
+static const char *generate_krb5_ccache(TALLOC_CTX *mem_ctx, 
 					const char *type,
 					uid_t uid,
 					bool *internal_ccache)
@@ -478,7 +484,7 @@
 
 	const char *gen_cc = NULL;
 
-	*internal_ccache = true;
+	*internal_ccache = True;
 
 	if (uid == -1) {
 		goto memory_ccache;
@@ -497,7 +503,7 @@
 		goto memory_ccache;
 	}
 
-	*internal_ccache = false;
+	*internal_ccache = False;
 	goto done;
 
   memory_ccache:
@@ -526,11 +532,11 @@
 
 	if (!strequal(type, "FILE") &&
 	    !strequal(type, "WRFILE")) {
-		DEBUG(10,("won't return krbccname for a %s type ccache\n",
+	    	DEBUG(10,("won't return krbccname for a %s type ccache\n", 
 			type));
 		return;
 	}
-
+	
 	fstrcpy(state->response.data.auth.krb5ccname, cc);
 }
 
@@ -571,13 +577,13 @@
 	uid_t uid = -1;
 	ADS_STRUCT *ads;
 	time_t time_offset = 0;
-	bool internal_ccache = true;
+	bool internal_ccache = True;
 
 	ZERO_STRUCTP(info3);
 
 	*info3 = NULL;
-
-	/* 1st step:
+	
+	/* 1st step: 
 	 * prepare a krb5_cc_cache string for the user */
 
 	uid = get_uid_from_state(state);
@@ -587,31 +593,31 @@
 
 	cc = generate_krb5_ccache(state->mem_ctx,
 				  state->request.data.auth.krb5_cc_type,
-				  state->request.data.auth.uid,
+				  state->request.data.auth.uid, 
 				  &internal_ccache);
 	if (cc == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
 
 
-	/* 2nd step:
+	/* 2nd step: 
 	 * get kerberos properties */
-
+	
 	if (domain->private_data) {
 		ads = (ADS_STRUCT *)domain->private_data;
-		time_offset = ads->auth.time_offset;
+		time_offset = ads->auth.time_offset; 
 	}
 
 
-	/* 3rd step:
+	/* 3rd step: 
 	 * do kerberos auth and setup ccache as the user */
 
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 	realm = domain->alt_name;
 	strupper_m(realm);
-
-	principal_s = talloc_asprintf(state->mem_ctx, "%s@%s", name_user, realm);
+	
+	principal_s = talloc_asprintf(state->mem_ctx, "%s@%s", name_user, realm); 
 	if (principal_s == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -638,8 +644,8 @@
 						&ticket_lifetime,
 						&renewal_until,
 						cc,
-						true,
-						true,
+						True,
+						True,
 						WINBINDD_PAM_AUTH_KRB5_RENEW_TIME,
 						info3);
 	if (!internal_ccache) {
@@ -659,7 +665,7 @@
 	 * environment */
 
 	if (!internal_ccache) {
-
+		
 		setup_return_cc_name(state, cc);
 
 		result = add_ccache_to_list(principal_s,
@@ -670,11 +676,11 @@
 					    uid,
 					    time(NULL),
 					    ticket_lifetime,
-					    renewal_until,
-					    false);
+					    renewal_until, 
+					    False);
 
 		if (!NT_STATUS_IS_OK(result)) {
-			DEBUG(10,("winbindd_raw_kerberos_login: failed to add ccache to list: %s\n",
+			DEBUG(10,("winbindd_raw_kerberos_login: failed to add ccache to list: %s\n", 
 				nt_errstr(result)));
 		}
 	} else {
@@ -731,12 +737,12 @@
 	     ( (flags & flags_edata) == WBFLAG_PAM_INFO3_NDR) ||
 	     ( (flags & flags_edata) == WBFLAG_PAM_INFO3_TEXT)||
 	      !(flags & flags_edata) ) {
-		return true;
+		return True;
 	}
 
 	DEBUG(1,("check_request_flags: invalid request flags[0x%08X]\n",flags));
 
-	return false;
+	return False;
 }
 
 /****************************************************************
@@ -811,9 +817,7 @@
 {
 	struct winbindd_domain *domain;
 	fstring name_domain, name_user;
-	char *mapped_user = NULL;
 	NTSTATUS result;
-	NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
 
 	/* Ensure null termination */
 	state->request.data.auth.user
@@ -832,21 +836,11 @@
 	}
 
 	/* Parse domain and username */
+	
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
 
-	name_map_status = normalize_name_unmap(state->mem_ctx,
-					       state->request.data.auth.user,
-					       &mapped_user);
-
-	/* If the name normalization didnt' actually do anything,
-	   just use the original name */
-
-	if (!NT_STATUS_IS_OK(name_map_status) &&
-	    !NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED))
-	{
-		mapped_user = state->request.data.auth.user;
-	}
-
-	if (!canonicalize_username(mapped_user, name_domain, name_user)) {
+	if (!canonicalize_username(state->request.data.auth.user,
+			       name_domain, name_user)) {
 		result = NT_STATUS_NO_SUCH_USER;
 		goto done;
 	}
@@ -875,7 +869,7 @@
 				       struct netr_SamInfo3 **info3)
 {
 	NTSTATUS result = NT_STATUS_LOGON_FAILURE;
-	uint16 max_allowed_bad_attempts;
+	uint16 max_allowed_bad_attempts; 
 	fstring name_domain, name_user;
 	DOM_SID sid;
 	enum lsa_SidType type;
@@ -884,7 +878,7 @@
 	const uint8 *cached_salt;
 	struct netr_SamInfo3 *my_info3;
 	time_t kickoff_time, must_change_time;
-	bool password_good = false;
+	bool password_good = False;
 #ifdef HAVE_KRB5
 	struct winbindd_tdc_domain *tdc_domain = NULL;
 #endif
@@ -896,7 +890,7 @@
 	DEBUG(10,("winbindd_dual_pam_auth_cached\n"));
 
 	/* Parse domain and username */
-
+	
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 
@@ -914,10 +908,10 @@
 		return NT_STATUS_LOGON_FAILURE;
 	}
 
-	result = winbindd_get_creds(domain,
-				    state->mem_ctx,
-				    &sid,
-				    &my_info3,
+	result = winbindd_get_creds(domain, 
+				    state->mem_ctx, 
+				    &sid, 
+				    &my_info3, 
 				    &cached_nt_pass,
 				    &cached_salt);
 	if (!NT_STATUS_IS_OK(result)) {
@@ -942,42 +936,42 @@
 		E_md5hash(cached_salt, new_nt_pass, salted_hash);
 
 		password_good = (memcmp(cached_nt_pass, salted_hash, NT_HASH_LEN) == 0) ?
-			true : false;
+			True : False;
 	} else {
 		/* Old cached cred - direct store of nt_hash (bad bad bad !). */
 		password_good = (memcmp(cached_nt_pass, new_nt_pass, NT_HASH_LEN) == 0) ?
-			true : false;
+			True : False;
 	}
 
 	if (password_good) {
 
 		/* User *DOES* know the password, update logon_time and reset
 		 * bad_pw_count */
-
+	
 		my_info3->base.user_flags |= NETLOGON_CACHED_ACCOUNT;
-
+	
 		if (my_info3->base.acct_flags & ACB_AUTOLOCK) {
 			return NT_STATUS_ACCOUNT_LOCKED_OUT;
 		}
-
+	
 		if (my_info3->base.acct_flags & ACB_DISABLED) {
 			return NT_STATUS_ACCOUNT_DISABLED;
 		}
-
+	
 		if (my_info3->base.acct_flags & ACB_WSTRUST) {
 			return NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT;
 		}
-
+	
 		if (my_info3->base.acct_flags & ACB_SVRTRUST) {
 			return NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT;
 		}
-
+	
 		if (my_info3->base.acct_flags & ACB_DOMTRUST) {
 			return NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT;
 		}
 
 		if (!(my_info3->base.acct_flags & ACB_NORMAL)) {
-			DEBUG(0,("winbindd_dual_pam_auth_cached: whats wrong with that one?: 0x%08x\n",
+			DEBUG(0,("winbindd_dual_pam_auth_cached: whats wrong with that one?: 0x%08x\n", 
 				my_info3->base.acct_flags));
 			return NT_STATUS_LOGON_FAILURE;
 		}
@@ -994,7 +988,7 @@
 			/* return NT_STATUS_PASSWORD_EXPIRED; */
 			goto success;
 		}
-
+	
 #ifdef HAVE_KRB5
 		if ((state->request.flags & WBFLAG_PAM_KRB5) &&
 		    ((tdc_domain = wcache_tdc_fetch_domain(state->mem_ctx, name_domain)) != NULL) &&
@@ -1005,7 +999,7 @@
 			char *realm = NULL;
 			const char *principal_s = NULL;
 			const char *service = NULL;
-			bool internal_ccache = false;
+			bool internal_ccache = False;
 
 			uid = get_uid_from_state(state);
 			if (uid == -1) {
@@ -1047,7 +1041,7 @@
 							    time(NULL),
 							    time(NULL) + lp_winbind_cache_time(),
 							    time(NULL) + WINBINDD_PAM_AUTH_KRB5_RENEW_TIME,
-							    true);
+							    True);
 
 				if (!NT_STATUS_IS_OK(result)) {
 					DEBUG(10,("winbindd_dual_pam_auth_cached: failed "
@@ -1119,7 +1113,7 @@
 						my_info3);
 
 	if (!NT_STATUS_IS_OK(result)) {
-		DEBUG(0,("winbindd_dual_pam_auth_cached: failed to update creds %s\n",
+		DEBUG(0,("winbindd_dual_pam_auth_cached: failed to update creds %s\n", 
 			nt_errstr(result)));
 	}
 
@@ -1127,7 +1121,7 @@
 }
 
 NTSTATUS winbindd_dual_pam_auth_kerberos(struct winbindd_domain *domain,
-					 struct winbindd_cli_state *state,
+					 struct winbindd_cli_state *state, 
 					 struct netr_SamInfo3 **info3)
 {
 	struct winbindd_domain *contact_domain;
@@ -1135,38 +1129,38 @@
 	NTSTATUS result;
 
 	DEBUG(10,("winbindd_dual_pam_auth_kerberos\n"));
-
+	
 	/* Parse domain and username */
-
+	
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 	/* what domain should we contact? */
-
+	
 	if ( IS_DC ) {
 		if (!(contact_domain = find_domain_from_name(name_domain))) {
-			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n",
-				  state->request.data.auth.user, name_domain, name_user, name_domain));
+			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", 
+				  state->request.data.auth.user, name_domain, name_user, name_domain)); 
 			result = NT_STATUS_NO_SUCH_USER;
 			goto done;
 		}
-
+		
 	} else {
 		if (is_myname(name_domain)) {
 			DEBUG(3, ("Authentication for domain %s (local domain to this server) not supported at this stage\n", name_domain));
 			result =  NT_STATUS_NO_SUCH_USER;
 			goto done;
 		}
-
+		
 		contact_domain = find_domain_from_name(name_domain);
 		if (contact_domain == NULL) {
-			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n",
-				  state->request.data.auth.user, name_domain, name_user, name_domain));
+			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", 
+				  state->request.data.auth.user, name_domain, name_user, name_domain)); 
 
 			contact_domain = find_our_domain();
 		}
 	}
 
-	if (contact_domain->initialized &&
+	if (contact_domain->initialized && 
 	    contact_domain->active_directory) {
 	    	goto try_login;
 	}
@@ -1185,18 +1179,6 @@
 	return result;
 }
 
-typedef	NTSTATUS (*netlogon_fn_t)(struct rpc_pipe_client *cli,
-				  TALLOC_CTX *mem_ctx,
-				  uint32 logon_parameters,
-				  const char *server,
-				  const char *username,
-				  const char *domain,
-				  const char *workstation,
-				  const uint8 chal[8],
-				  DATA_BLOB lm_response,
-				  DATA_BLOB nt_response,
-				  struct netr_SamInfo3 **info3);
-
 NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain,
 					 struct winbindd_cli_state *state,
 					 struct netr_SamInfo3 **info3)
@@ -1218,31 +1200,31 @@
 	*info3 = NULL;
 
 	DEBUG(10,("winbindd_dual_pam_auth_samlogon\n"));
-
+	
 	/* Parse domain and username */
-
+	
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 	/* do password magic */
+	
 
-
 	generate_random_buffer(chal, 8);
 	if (lp_client_ntlmv2_auth()) {
 		DATA_BLOB server_chal;
 		DATA_BLOB names_blob;
 		DATA_BLOB nt_response;
 		DATA_BLOB lm_response;
-		server_chal = data_blob_talloc(state->mem_ctx, chal, 8);
-
+		server_chal = data_blob_talloc(state->mem_ctx, chal, 8); 
+		
 		/* note that the 'workgroup' here is a best guess - we don't know
 		   the server's domain at this point.  The 'server name' is also
-		   dodgy...
+		   dodgy... 
 		*/
 		names_blob = NTLMv2_generate_names_blob(global_myname(), lp_workgroup());
-
-		if (!SMBNTLMv2encrypt(name_user, name_domain,
-				      state->request.data.auth.pass,
-				      &server_chal,
+		
+		if (!SMBNTLMv2encrypt(name_user, name_domain, 
+				      state->request.data.auth.pass, 
+				      &server_chal, 
 				      &names_blob,
 				      &lm_response, &nt_response, NULL)) {
 			data_blob_free(&names_blob);
@@ -1261,35 +1243,35 @@
 		data_blob_free(&nt_response);
 
 	} else {
-		if (lp_client_lanman_auth()
-		    && SMBencrypt(state->request.data.auth.pass,
-				  chal,
+		if (lp_client_lanman_auth() 
+		    && SMBencrypt(state->request.data.auth.pass, 
+				  chal, 
 				  local_lm_response)) {
-			lm_resp = data_blob_talloc(state->mem_ctx,
-						   local_lm_response,
+			lm_resp = data_blob_talloc(state->mem_ctx, 
+						   local_lm_response, 
 						   sizeof(local_lm_response));
 		} else {
 			lm_resp = data_blob_null;
 		}
-		SMBNTencrypt(state->request.data.auth.pass,
+		SMBNTencrypt(state->request.data.auth.pass, 
 			     chal,
 			     local_nt_response);
 
-		nt_resp = data_blob_talloc(state->mem_ctx,
-					   local_nt_response,
+		nt_resp = data_blob_talloc(state->mem_ctx, 
+					   local_nt_response, 
 					   sizeof(local_nt_response));
 	}
-
+	
 	/* what domain should we contact? */
-
+	
 	if ( IS_DC ) {
 		if (!(contact_domain = find_domain_from_name(name_domain))) {
-			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n",
-				  state->request.data.auth.user, name_domain, name_user, name_domain));
+			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", 
+				  state->request.data.auth.user, name_domain, name_user, name_domain)); 
 			result = NT_STATUS_NO_SUCH_USER;
 			goto done;
 		}
-
+		
 	} else {
 		if (is_myname(name_domain)) {
 			DEBUG(3, ("Authentication for domain %s (local domain to this server) not supported at this stage\n", name_domain));
@@ -1303,10 +1285,20 @@
 	/* check authentication loop */
 
 	do {
-		netlogon_fn_t logon_fn;
+		NTSTATUS (*logon_fn)(struct rpc_pipe_client *cli,
+				     TALLOC_CTX *mem_ctx,
+				     uint32 logon_parameters,
+				     const char *server,
+				     const char *username,
+				     const char *domain,
+				     const char *workstation,
+				     const uint8 chal[8],
+				     DATA_BLOB lm_response,
+				     DATA_BLOB nt_response,
+				     struct netr_SamInfo3 **info3);
 
 		ZERO_STRUCTP(my_info3);
-		retry = false;
+		retry = False;
 
 		result = cm_connect_netlogon(contact_domain, &netlogon_pipe);
 
@@ -1318,7 +1310,7 @@
 		/* It is really important to try SamLogonEx here,
 		 * because in a clustered environment, we want to use
 		 * one machine account from multiple physical
-		 * computers.
+		 * computers.  
 		 *
 		 * With a normal SamLogon call, we must keep the
 		 * credentials chain updated and intact between all
@@ -1332,7 +1324,7 @@
 		 * When using SamLogonEx, the credentials are not
 		 * supplied, but the session key is implied by the
 		 * wrapping SamLogon context.
-		 *
+		 * 
 		 *  -- abartlet 21 April 2008
 		 */
 
@@ -1357,8 +1349,8 @@
 		    && contact_domain->can_do_samlogon_ex) {
 			DEBUG(3, ("Got a DC that can not do NetSamLogonEx, "
 				  "retrying with NetSamLogon\n"));
-			contact_domain->can_do_samlogon_ex = false;
-			retry = true;
+			contact_domain->can_do_samlogon_ex = False;
+			retry = True;
 			continue;
 		}
 
@@ -1367,15 +1359,15 @@
 		   our connection. */
 
 		if (NT_STATUS_EQUAL(result, NT_STATUS_UNSUCCESSFUL)) {
-			retry = true;
+			retry = True;
 			continue;
 		}
-
+		
 		/* if we get access denied, a possible cause was that we had
 		   and open connection to the DC, but someone changed our
 		   machine account password out from underneath us using 'net
 		   rpc changetrustpw' */
-
+		   
 		if ( NT_STATUS_EQUAL(result, NT_STATUS_ACCESS_DENIED) ) {
 			DEBUG(3,("winbindd_pam_auth: sam_logon returned "
 				 "ACCESS_DENIED.  Maybe the trust account "
@@ -1383,16 +1375,16 @@
 				 "Killing connections to domain %s\n",
 				name_domain));
 			invalidate_cm_connection(&contact_domain->conn);
-			retry = true;
-		}
-
+			retry = True;
+		} 
+		
 	} while ( (attempts < 2) && retry );
 
 	/* handle the case where a NT4 DC does not fill in the acct_flags in
 	 * the samlogon reply info3. When accurate info3 is required by the
 	 * caller, we look up the account flags ourselve - gd */
 
-	if ((state->request.flags & WBFLAG_PAM_INFO3_TEXT) &&
+	if ((state->request.flags & WBFLAG_PAM_INFO3_TEXT) && 
 	    NT_STATUS_IS_OK(result) && (my_info3->base.acct_flags == 0)) {
 
 		struct rpc_pipe_client *samr_pipe;
@@ -1401,11 +1393,11 @@
 		NTSTATUS status_tmp;
 		uint32 acct_flags;
 
-		status_tmp = cm_connect_sam(contact_domain, state->mem_ctx,
+		status_tmp = cm_connect_sam(contact_domain, state->mem_ctx, 
 					    &samr_pipe, &samr_domain_handle);
 
 		if (!NT_STATUS_IS_OK(status_tmp)) {
-			DEBUG(3, ("could not open handle to SAMR pipe: %s\n",
+			DEBUG(3, ("could not open handle to SAMR pipe: %s\n", 
 				nt_errstr(status_tmp)));
 			goto done;
 		}
@@ -1454,15 +1446,12 @@
 }
 
 enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain,
-					    struct winbindd_cli_state *state)
+					    struct winbindd_cli_state *state) 
 {
 	NTSTATUS result = NT_STATUS_LOGON_FAILURE;
-	NTSTATUS krb5_result = NT_STATUS_OK;
+	NTSTATUS krb5_result = NT_STATUS_OK;	
 	fstring name_domain, name_user;
-	char *mapped_user;
-	fstring domain_user;
 	struct netr_SamInfo3 *info3 = NULL;
-	NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
 
 	/* Ensure null termination */
 	state->request.data.auth.user[sizeof(state->request.data.auth.user)-1]='\0';
@@ -1479,29 +1468,12 @@
 	}
 
 	/* Parse domain and username */
+	
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
 
-	name_map_status = normalize_name_unmap(state->mem_ctx,
-					       state->request.data.auth.user,
-					       &mapped_user);
+	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
-	/* If the name normalization didnt' actually do anything,
-	   just use the original name */
-
-	if (!NT_STATUS_IS_OK(name_map_status) &&
-	    !NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED))
-	{
-		mapped_user = state->request.data.auth.user;
-	}
-
-	parse_domain_user(mapped_user, name_domain, name_user);
-
-	if ( mapped_user != state->request.data.auth.user ) {
-		fstr_sprintf( domain_user, "%s\\%s", name_domain, name_user );
-		safe_strcpy( state->request.data.auth.user, domain_user,
-			     sizeof(state->request.data.auth.user)-1 );
-	}
-
-	if (domain->online == false) {
+	if (domain->online == False) {
 		result = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
 		if (domain->startup) {
 			/* Logons are very important to users. If we're offline and
@@ -1520,12 +1492,12 @@
 
 	/* Check for Kerberos authentication */
 	if (domain->online && (state->request.flags & WBFLAG_PAM_KRB5)) {
-
+	
 		result = winbindd_dual_pam_auth_kerberos(domain, state, &info3);
 		/* save for later */
 		krb5_result = result;
+		
 
-
 		if (NT_STATUS_IS_OK(result)) {
 			DEBUG(10,("winbindd_dual_pam_auth_kerberos succeeded\n"));
 			goto process_result;
@@ -1538,7 +1510,7 @@
 		    NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND)) {
 			DEBUG(10,("winbindd_dual_pam_auth_kerberos setting domain to offline\n"));
 			set_domain_offline( domain );
-			goto cached_logon;
+			goto cached_logon;			
 		}
 
 		/* there are quite some NT_STATUS errors where there is no
@@ -1557,7 +1529,7 @@
 		    NT_STATUS_EQUAL(result, NT_STATUS_WRONG_PASSWORD)) {
 			goto process_result;
 		}
-
+		
 		if (state->request.flags & WBFLAG_PAM_FALLBACK_AFTER_KRB5) {
 			DEBUG(3,("falling back to samlogon\n"));
 			goto sam_logon;
@@ -1570,7 +1542,7 @@
 	/* Check for Samlogon authentication */
 	if (domain->online) {
 		result = winbindd_dual_pam_auth_samlogon(domain, state, &info3);
-
+	
 		if (NT_STATUS_IS_OK(result)) {
 			DEBUG(10,("winbindd_dual_pam_auth_samlogon succeeded\n"));
 			/* add the Krb5 err if we have one */
@@ -1578,18 +1550,18 @@
 				info3->base.user_flags |= LOGON_KRB5_FAIL_CLOCK_SKEW;
 			}
 			goto process_result;
-		}
+		} 
 
-		DEBUG(10,("winbindd_dual_pam_auth_samlogon failed: %s\n",
+       		DEBUG(10,("winbindd_dual_pam_auth_samlogon failed: %s\n", 
 			  nt_errstr(result)));
 
 		if (NT_STATUS_EQUAL(result, NT_STATUS_NO_LOGON_SERVERS) ||
 		    NT_STATUS_EQUAL(result, NT_STATUS_IO_TIMEOUT) ||
-		    NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND))
+		    NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND)) 
 		{
 			DEBUG(10,("winbindd_dual_pam_auth_samlogon setting domain to offline\n"));
 			set_domain_offline( domain );
-			goto cached_logon;
+			goto cached_logon;			
 		}
 
 			if (domain->online) {
@@ -1600,9 +1572,9 @@
 
 cached_logon:
 	/* Check for Cached logons */
-	if (!domain->online && (state->request.flags & WBFLAG_PAM_CACHED_LOGIN) &&
+	if (!domain->online && (state->request.flags & WBFLAG_PAM_CACHED_LOGIN) && 
 	    lp_winbind_offline_logon()) {
-
+	
 		result = winbindd_dual_pam_auth_cached(domain, state, &info3);
 
 		if (NT_STATUS_IS_OK(result)) {
@@ -1617,7 +1589,7 @@
 process_result:
 
 	if (NT_STATUS_IS_OK(result)) {
-
+	
 		DOM_SID user_sid;
 
 		/* In all codepaths where result == NT_STATUS_OK info3 must have
@@ -1634,19 +1606,19 @@
 		   this is our primary domain so we don't invalidate
 		   the cache entry by storing the seq_num for the wrong
 		   domain). */
-		if ( domain->primary ) {
+		if ( domain->primary ) {			
 			sid_compose(&user_sid, info3->base.domain_sid,
 				    info3->base.rid);
-			cache_name2sid(domain, name_domain, name_user,
+			cache_name2sid(domain, name_domain, name_user, 
 				       SID_NAME_USER, &user_sid);
 		}
-
+		
 		/* Check if the user is in the right group */
 
 		if (!NT_STATUS_IS_OK(result = check_info3_in_group(state->mem_ctx, info3,
 					state->request.data.auth.require_membership_of_sid))) {
 			DEBUG(3, ("User %s is not in the required group (%s), so plaintext authentication is rejected\n",
-				  state->request.data.auth.user,
+				  state->request.data.auth.user, 
 				  state->request.data.auth.require_membership_of_sid));
 			goto done;
 		}
@@ -1691,8 +1663,8 @@
 
 			/* This is not entirely correct I believe, but it is
 			   consistent.  Only apply the password policy settings
-			   too warn users for our own domain.  Cannot obtain these
-			   from trusted DCs all the  time so don't do it at all.
+			   too warn users for our own domain.  Cannot obtain these 
+			   from trusted DCs all the  time so don't do it at all. 
 			   -- jerry */
 
 			result = NT_STATUS_NOT_SUPPORTED;
@@ -1700,16 +1672,16 @@
 				result = fillup_password_policy(our_domain, state);
 			}
 
-			if (!NT_STATUS_IS_OK(result)
-			    && !NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED) )
+			if (!NT_STATUS_IS_OK(result) 
+			    && !NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED) ) 
 			{
-				DEBUG(10,("Failed to get password policies for domain %s: %s\n",
+				DEBUG(10,("Failed to get password policies for domain %s: %s\n", 
 					  domain->name, nt_errstr(result)));
 				goto done;
 			}
 		}
 
-		result = NT_STATUS_OK;
+		result = NT_STATUS_OK;		
 	}
 
 done:
@@ -1718,20 +1690,26 @@
 	    (NT_STATUS_EQUAL(result, NT_STATUS_UNSUCCESSFUL)))) {
 		result = NT_STATUS_NO_LOGON_SERVERS;
 	}
+	
+	state->response.data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(state->response.data.auth.nt_status_string, nt_errstr(result));
 
-	set_auth_errors(&state->response, result);
+	/* we might have given a more useful error above */
+	if (!*state->response.data.auth.error_string) 
+		fstrcpy(state->response.data.auth.error_string, get_friendly_nt_error_msg(result));
+	state->response.data.auth.pam_error = nt_status_to_pam(result);
 
-	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Plain-text authentication for user %s returned %s (PAM: %d)\n",
-	      state->request.data.auth.user,
+	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, ("Plain-text authentication for user %s returned %s (PAM: %d)\n", 
+	      state->request.data.auth.user, 
 	      state->response.data.auth.nt_status_string,
-	      state->response.data.auth.pam_error));
+	      state->response.data.auth.pam_error));	      
 
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }
 
 
 /**********************************************************************
- Challenge Response Authentication Protocol
+ Challenge Response Authentication Protocol 
 **********************************************************************/
 
 void winbindd_pam_auth_crap(struct winbindd_cli_state *state)
@@ -1795,7 +1773,7 @@
 	set_auth_errors(&state->response, result);
 	DEBUG(5, ("CRAP authentication for %s\\%s returned %s (PAM: %d)\n",
 		  state->request.data.auth_crap.domain,
-		  state->request.data.auth_crap.user,
+		  state->request.data.auth_crap.user, 
 		  state->response.data.auth.nt_status_string,
 		  state->response.data.auth.pam_error));
 	request_error(state);
@@ -1804,7 +1782,7 @@
 
 
 enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
-						 struct winbindd_cli_state *state)
+						 struct winbindd_cli_state *state) 
 {
 	NTSTATUS result;
 	struct netr_SamInfo3 *info3 = NULL;
@@ -1837,7 +1815,7 @@
 	} else if (lp_winbind_use_default_domain()) {
 		name_domain = lp_workgroup();
 	} else {
-		DEBUG(5,("no domain specified with username (%s) - failing auth\n",
+		DEBUG(5,("no domain specified with username (%s) - failing auth\n", 
 			 name_user));
 		result = NT_STATUS_NO_SUCH_USER;
 		goto done;
@@ -1845,7 +1823,7 @@
 
 	DEBUG(3, ("[%5lu]: pam auth crap domain: %s user: %s\n", (unsigned long)state->pid,
 		  name_domain, name_user));
-
+	   
 	if (*state->request.data.auth_crap.workstation) {
 		workstation = state->request.data.auth_crap.workstation;
 	} else {
@@ -1854,8 +1832,8 @@
 
 	if (state->request.data.auth_crap.lm_resp_len > sizeof(state->request.data.auth_crap.lm_resp)
 		|| state->request.data.auth_crap.nt_resp_len > sizeof(state->request.data.auth_crap.nt_resp)) {
-		DEBUG(0, ("winbindd_pam_auth_crap: invalid password length %u/%u\n",
-			  state->request.data.auth_crap.lm_resp_len,
+		DEBUG(0, ("winbindd_pam_auth_crap: invalid password length %u/%u\n", 
+			  state->request.data.auth_crap.lm_resp_len, 
 			  state->request.data.auth_crap.nt_resp_len));
 		result = NT_STATUS_INVALID_PARAMETER;
 		goto done;
@@ -1867,11 +1845,11 @@
 					state->request.data.auth_crap.nt_resp_len);
 
 	/* what domain should we contact? */
-
+	
 	if ( IS_DC ) {
 		if (!(contact_domain = find_domain_from_name(name_domain))) {
-			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n",
-				  state->request.data.auth_crap.user, name_domain, name_user, name_domain));
+			DEBUG(3, ("Authentication for domain for [%s] -> [%s]\\[%s] failed as %s is not a trusted domain\n", 
+				  state->request.data.auth_crap.user, name_domain, name_user, name_domain)); 
 			result = NT_STATUS_NO_SUCH_USER;
 			goto done;
 		}
@@ -1885,9 +1863,19 @@
 	}
 
 	do {
-		netlogon_fn_t logon_fn;
+		NTSTATUS (*logon_fn)(struct rpc_pipe_client *cli,
+				     TALLOC_CTX *mem_ctx,
+				     uint32 logon_parameters,
+				     const char *server,
+				     const char *username,
+				     const char *domain,
+				     const char *workstation,
+				     const uint8 chal[8],
+				     DATA_BLOB lm_response,
+				     DATA_BLOB nt_response,
+				     struct netr_SamInfo3 **info3);
 
-		retry = false;
+		retry = False;
 
 		netlogon_pipe = NULL;
 		result = cm_connect_netlogon(contact_domain, &netlogon_pipe);
@@ -1907,7 +1895,7 @@
 				  state->request.data.auth_crap.logon_parameters,
 				  contact_domain->dcname,
 				  name_user,
-				  name_domain,
+				  name_domain, 
 				  /* Bug #3248 - found by Stefan Burkei. */
 				  workstation, /* We carefully set this above so use it... */
 				  state->request.data.auth_crap.chal,
@@ -1919,8 +1907,8 @@
 		    && contact_domain->can_do_samlogon_ex) {
 			DEBUG(3, ("Got a DC that can not do NetSamLogonEx, "
 				  "retrying with NetSamLogon\n"));
-			contact_domain->can_do_samlogon_ex = false;
-			retry = true;
+			contact_domain->can_do_samlogon_ex = False;
+			retry = True;
 			continue;
 		}
 
@@ -1931,14 +1919,14 @@
 		   our connection. */
 
 		if (NT_STATUS_EQUAL(result, NT_STATUS_UNSUCCESSFUL)) {
-			retry = true;
+			retry = True;
 			continue;
 		}
 
 		/* if we get access denied, a possible cause was that we had and open
 		   connection to the DC, but someone changed our machine account password
 		   out from underneath us using 'net rpc changetrustpw' */
-
+		   
 		if ( NT_STATUS_EQUAL(result, NT_STATUS_ACCESS_DENIED) ) {
 			DEBUG(3,("winbindd_pam_auth: sam_logon returned "
 				 "ACCESS_DENIED.  Maybe the trust account "
@@ -1946,8 +1934,8 @@
 				 "Killing connections to domain %s\n",
 				name_domain));
 			invalidate_cm_connection(&contact_domain->conn);
-			retry = true;
-		}
+			retry = True;
+		} 
 
 	} while ( (attempts < 2) && retry );
 
@@ -1962,7 +1950,7 @@
 							state->request.data.auth_crap.require_membership_of_sid))) {
 			DEBUG(3, ("User %s is not in the required group (%s), so "
 				  "crap authentication is rejected\n",
-				  state->request.data.auth_crap.user,
+				  state->request.data.auth_crap.user, 
 				  state->request.data.auth_crap.require_membership_of_sid));
 			goto done;
 		}
@@ -1985,14 +1973,21 @@
 		result = nt_status_squash(result);
 	}
 
-	set_auth_errors(&state->response, result);
+	state->response.data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(state->response.data.auth.nt_status_string, nt_errstr(result));
 
-	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2,
-	      ("NTLM CRAP authentication for user [%s]\\[%s] returned %s (PAM: %d)\n",
+	/* we might have given a more useful error above */
+	if (!*state->response.data.auth.error_string) {
+		fstrcpy(state->response.data.auth.error_string, get_friendly_nt_error_msg(result));
+	}
+	state->response.data.auth.pam_error = nt_status_to_pam(result);
+
+	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, 
+	      ("NTLM CRAP authentication for user [%s]\\[%s] returned %s (PAM: %d)\n", 
 	       name_domain,
 	       name_user,
 	       state->response.data.auth.nt_status_string,
-	       state->response.data.auth.pam_error));
+	       state->response.data.auth.pam_error));	      
 
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }
@@ -2002,36 +1997,20 @@
 void winbindd_pam_chauthtok(struct winbindd_cli_state *state)
 {
 	fstring domain, user;
-	char *mapped_user;
 	struct winbindd_domain *contact_domain;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 
 	DEBUG(3, ("[%5lu]: pam chauthtok %s\n", (unsigned long)state->pid,
 		state->request.data.chauthtok.user));
 
 	/* Setup crap */
 
-	nt_status = normalize_name_unmap(state->mem_ctx,
-					 state->request.data.chauthtok.user,
-					 &mapped_user);
+	ws_name_return( state->request.data.auth.user, WB_REPLACE_CHAR );
 
-	/* Update the chauthtok name if we did any mapping */
-
-	if (NT_STATUS_IS_OK(nt_status) ||
-	    NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED))
-	{
-		fstrcpy(state->request.data.chauthtok.user, mapped_user);
-	}
-
-	/* Must pass in state->...chauthtok.user because
-	   canonicalize_username() assumes an fstring().  Since
-	   we have already copied it (if necessary), this is ok. */
-
 	if (!canonicalize_username(state->request.data.chauthtok.user, domain, user)) {
 		set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
 		DEBUG(5, ("winbindd_pam_chauthtok: canonicalize_username %s failed with %s"
 			  "(PAM: %d)\n",
-			  state->request.data.auth.user,
+			  state->request.data.auth.user, 
 			  state->response.data.auth.nt_status_string,
 			  state->response.data.auth.pam_error));
 		request_error(state);
@@ -2041,8 +2020,8 @@
 	contact_domain = find_domain_from_name(domain);
 	if (!contact_domain) {
 		set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
-		DEBUG(3, ("Cannot change password for [%s] -> [%s]\\[%s] as %s is not a trusted domain\n",
-			  state->request.data.chauthtok.user, domain, user, domain));
+		DEBUG(3, ("Cannot change password for [%s] -> [%s]\\[%s] as %s is not a trusted domain\n", 
+			  state->request.data.chauthtok.user, domain, user, domain)); 
 		request_error(state);
 		return;
 	}
@@ -2057,7 +2036,7 @@
 	char *newpass = NULL;
 	POLICY_HND dom_pol;
 	struct rpc_pipe_client *cli;
-	bool got_info = false;
+	bool got_info = False;
 	struct samr_DomInfo1 *info = NULL;
 	struct samr_ChangeReject *reject = NULL;
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
@@ -2087,44 +2066,52 @@
 		goto done;
 	}
 
-	result = rpccli_samr_chgpasswd_user3(cli, state->mem_ctx,
-					     user,
-					     newpass,
-					     oldpass,
-					     &info,
-					     &reject);
+	result = rpccli_samr_chgpasswd3(cli, state->mem_ctx,
+					user,
+					newpass,
+					oldpass,
+					&info,
+					&reject);
 
  	/* Windows 2003 returns NT_STATUS_PASSWORD_RESTRICTION */
 
 	if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION) ) {
+		state->response.data.auth.policy.min_length_password =
+			info->min_password_length;
+		state->response.data.auth.policy.password_history =
+			info->password_history_length;
+		state->response.data.auth.policy.password_properties =
+			info->password_properties;
+		state->response.data.auth.policy.expire =
+			nt_time_to_unix_abs((NTTIME *)&info->max_password_age);
+		state->response.data.auth.policy.min_passwordage =
+			nt_time_to_unix_abs((NTTIME *)&info->min_password_age);
 
-		fill_in_password_policy(&state->response, info);
-
 		state->response.data.auth.reject_reason =
 			reject->reason;
 
-		got_info = true;
+		got_info = True;
 	}
 
-	/* only fallback when the chgpasswd_user3 call is not supported */
+	/* only fallback when the chgpasswd3 call is not supported */
 	if ((NT_STATUS_EQUAL(result, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR))) ||
 		   (NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED)) ||
 		   (NT_STATUS_EQUAL(result, NT_STATUS_NOT_IMPLEMENTED))) {
 
-		DEBUG(10,("Password change with chgpasswd_user3 failed with: %s, retrying chgpasswd_user2\n",
+		DEBUG(10,("Password change with chgpasswd3 failed with: %s, retrying chgpasswd_user\n", 
 			nt_errstr(result)));
+		
+		result = rpccli_samr_chgpasswd_user(cli, state->mem_ctx, user, newpass, oldpass);
 
-		result = rpccli_samr_chgpasswd_user2(cli, state->mem_ctx, user, newpass, oldpass);
-
 		/* Windows 2000 returns NT_STATUS_ACCOUNT_RESTRICTION.
 		   Map to the same status code as Windows 2003. */
 
 		if ( NT_STATUS_EQUAL(NT_STATUS_ACCOUNT_RESTRICTION, result ) ) {
-			result = NT_STATUS_PASSWORD_RESTRICTION;
+			result = NT_STATUS_PASSWORD_RESTRICTION;			
 		}
 	}
 
-done:
+done: 
 
 	if (NT_STATUS_IS_OK(result) && (state->request.flags & WBFLAG_PAM_CACHED_LOGIN)) {
 
@@ -2172,7 +2159,7 @@
 	if (!NT_STATUS_IS_OK(result) && !got_info && contact_domain) {
 
 		NTSTATUS policy_ret;
-
+		
 		policy_ret = fillup_password_policy(contact_domain, state);
 
 		/* failure of this is non critical, it will just provide no
@@ -2187,14 +2174,17 @@
 
 process_result:
 
-	set_auth_errors(&state->response, result);
+	state->response.data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(state->response.data.auth.nt_status_string, nt_errstr(result));
+	fstrcpy(state->response.data.auth.error_string, get_friendly_nt_error_msg(result));
+	state->response.data.auth.pam_error = nt_status_to_pam(result);
 
-	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2,
-	      ("Password change for user [%s]\\[%s] returned %s (PAM: %d)\n",
+	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, 
+	      ("Password change for user [%s]\\[%s] returned %s (PAM: %d)\n", 
 	       domain,
 	       user,
 	       state->response.data.auth.nt_status_string,
-	       state->response.data.auth.pam_error));
+	       state->response.data.auth.pam_error));	      
 
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }
@@ -2229,7 +2219,7 @@
 	}
 
 	if ((sys_getpeereid(state->sock, &caller_uid)) != 0) {
-		DEBUG(1,("winbindd_pam_logoff: failed to check peerid: %s\n",
+		DEBUG(1,("winbindd_pam_logoff: failed to check peerid: %s\n", 
 			strerror(errno)));
 		goto failed;
 	}
@@ -2265,7 +2255,7 @@
 }
 
 enum winbindd_result winbindd_dual_pam_logoff(struct winbindd_domain *domain,
-					      struct winbindd_cli_state *state)
+					      struct winbindd_cli_state *state) 
 {
 	NTSTATUS result = NT_STATUS_NOT_SUPPORTED;
 
@@ -2283,7 +2273,7 @@
 	}
 
 #ifdef HAVE_KRB5
-
+	
 	if (state->request.data.logoff.uid < 0) {
 		DEBUG(0,("winbindd_pam_logoff: invalid uid\n"));
 		goto process_result;
@@ -2298,7 +2288,7 @@
 		goto process_result;
 	}
 
-	if (!ccache_entry_identical(state->request.data.logoff.user,
+	if (!ccache_entry_identical(state->request.data.logoff.user, 
 					state->request.data.logoff.uid,
 					state->request.data.logoff.krb5ccname)) {
 		DEBUG(0,("winbindd_pam_logoff: cached entry differs.\n"));
@@ -2320,7 +2310,10 @@
 
 	winbindd_delete_memory_creds(state->request.data.logoff.user);
 
-	set_auth_errors(&state->response, result);
+	state->response.data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(state->response.data.auth.nt_status_string, nt_errstr(result));
+	fstrcpy(state->response.data.auth.error_string, get_friendly_nt_error_msg(result));
+	state->response.data.auth.pam_error = nt_status_to_pam(result);
 
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }
@@ -2337,12 +2330,12 @@
 		sizeof(state->request.data.chng_pswd_auth_crap.user)-1]=0;
 	state->request.data.chng_pswd_auth_crap.domain[
 		sizeof(state->request.data.chng_pswd_auth_crap.domain)-1]=0;
-
+	
 	DEBUG(3, ("[%5lu]: pam change pswd auth crap domain: %s user: %s\n",
 		  (unsigned long)state->pid,
 		  state->request.data.chng_pswd_auth_crap.domain,
 		  state->request.data.chng_pswd_auth_crap.user));
-
+	
 	if (*state->request.data.chng_pswd_auth_crap.domain != '\0') {
 		domain_name = state->request.data.chng_pswd_auth_crap.domain;
 	} else if (lp_winbind_use_default_domain()) {
@@ -2362,7 +2355,7 @@
 	set_auth_errors(&state->response, NT_STATUS_NO_SUCH_USER);
 	DEBUG(5, ("CRAP change password  for %s\\%s returned %s (PAM: %d)\n",
 		  state->request.data.chng_pswd_auth_crap.domain,
-		  state->request.data.chng_pswd_auth_crap.user,
+		  state->request.data.chng_pswd_auth_crap.user, 
 		  state->response.data.auth.nt_status_string,
 		  state->response.data.auth.pam_error));
 	request_error(state);
@@ -2388,7 +2381,7 @@
 		sizeof(state->request.data.chng_pswd_auth_crap.domain)-1]=0;
 	*domain = 0;
 	*user = 0;
-
+	
 	DEBUG(3, ("[%5lu]: pam change pswd auth crap domain: %s user: %s\n",
 		  (unsigned long)state->pid,
 		  state->request.data.chng_pswd_auth_crap.domain,
@@ -2426,7 +2419,7 @@
 
 	DEBUG(3, ("[%5lu]: pam auth crap domain: %s user: %s\n",
 		  (unsigned long)state->pid, domain, user));
-
+	
 	/* Change password */
 	new_nt_password = data_blob_talloc(
 		state->mem_ctx,
@@ -2465,15 +2458,18 @@
 		cli, state->mem_ctx, user, new_nt_password, old_nt_hash_enc,
 		new_lm_password, old_lm_hash_enc);
 
- done:
+ done:    
+	state->response.data.auth.nt_status = NT_STATUS_V(result);
+	fstrcpy(state->response.data.auth.nt_status_string, nt_errstr(result));
+	fstrcpy(state->response.data.auth.error_string,
+		get_friendly_nt_error_msg(result));
+	state->response.data.auth.pam_error = nt_status_to_pam(result);
 
-	set_auth_errors(&state->response, result);
-
-	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2,
-	      ("Password change for user [%s]\\[%s] returned %s (PAM: %d)\n",
+	DEBUG(NT_STATUS_IS_OK(result) ? 5 : 2, 
+	      ("Password change for user [%s]\\[%s] returned %s (PAM: %d)\n", 
 	       domain, user,
 	       state->response.data.auth.nt_status_string,
-	       state->response.data.auth.pam_error));
+	       state->response.data.auth.pam_error));	      
 
 	return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
 }

Deleted: branches/samba/upstream/source/winbindd/winbindd_proto.h
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_proto.h	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_proto.h	2008-11-01 11:09:46 UTC (rev 2200)
@@ -1,615 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * collected prototypes header
- *
- * frozen from "make proto" in May 2008
- *
- * Copyright (C) Michael Adam 2008
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _WINBINDD_PROTO_H_
-#define _WINBINDD_PROTO_H_
-
-
-/* The following definitions come from auth/token_util.c  */
-
-bool nt_token_check_sid ( const DOM_SID *sid, const NT_USER_TOKEN *token );
-bool nt_token_check_domain_rid( NT_USER_TOKEN *token, uint32 rid );
-NT_USER_TOKEN *get_root_nt_token( void );
-NTSTATUS add_aliases(const DOM_SID *domain_sid,
-		     struct nt_user_token *token);
-struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx,
-					    const DOM_SID *user_sid,
-					    bool is_guest,
-					    int num_groupsids,
-					    const DOM_SID *groupsids);
-void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token);
-void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid,
-			   int n_groups, gid_t *groups);
-
-/* The following definitions come from smbd/connection.c  */
-
-bool yield_connection(connection_struct *conn, const char *name);
-int count_current_connections( const char *sharename, bool clear  );
-int count_all_current_connections(void);
-bool claim_connection(connection_struct *conn, const char *name,
-		      uint32 msg_flags);
-bool register_message_flags(bool doreg, uint32 msg_flags);
-bool store_pipe_opendb( smb_np_struct *p );
-bool delete_pipe_opendb( smb_np_struct *p );
-
-/* The following definitions come from winbindd/winbindd.c  */
-
-struct event_context *winbind_event_context(void);
-struct messaging_context *winbind_messaging_context(void);
-void add_fd_event(struct fd_event *ev);
-void remove_fd_event(struct fd_event *ev);
-void setup_async_read(struct fd_event *event, void *data, size_t length,
-		      void (*finished)(void *private_data, bool success),
-		      void *private_data);
-void setup_async_write(struct fd_event *event, void *data, size_t length,
-		       void (*finished)(void *private_data, bool success),
-		       void *private_data);
-void request_error(struct winbindd_cli_state *state);
-void request_ok(struct winbindd_cli_state *state);
-void winbind_check_sighup(const char *logfile);
-void winbind_check_sigterm(bool in_parent);
-int main(int argc, char **argv, char **envp);
-
-/* The following definitions come from winbindd/winbindd_ads.c  */
-
-
-/* The following definitions come from winbindd/winbindd_async.c  */
-
-void do_async(TALLOC_CTX *mem_ctx, struct winbindd_child *child,
-	      const struct winbindd_request *request,
-	      void (*cont)(TALLOC_CTX *mem_ctx, bool success,
-			   struct winbindd_response *response,
-			   void *c, void *private_data),
-	      void *c, void *private_data);
-void do_async_domain(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain,
-		     const struct winbindd_request *request,
-		     void (*cont)(TALLOC_CTX *mem_ctx, bool success,
-				  struct winbindd_response *response,
-				  void *c, void *private_data),
-		     void *c, void *private_data);
-void winbindd_lookupsid_async(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-			      void (*cont)(void *private_data, bool success,
-					   const char *dom_name,
-					   const char *name,
-					   enum lsa_SidType type),
-			      void *private_data);
-enum winbindd_result winbindd_dual_lookupsid(struct winbindd_domain *domain,
-					     struct winbindd_cli_state *state);
-void winbindd_lookupname_async(TALLOC_CTX *mem_ctx,
-			       const char *dom_name, const char *name,
-			       void (*cont)(void *private_data, bool success,
-					    const DOM_SID *sid,
-					    enum lsa_SidType type),
-			       enum winbindd_cmd orig_cmd,
-			       void *private_data);
-enum winbindd_result winbindd_dual_lookupname(struct winbindd_domain *domain,
-					      struct winbindd_cli_state *state);
-void winbindd_listent_async(TALLOC_CTX *mem_ctx,
-	                       struct winbindd_domain *domain,
-	                       void (*cont)(void *private_data, bool success,
-				     fstring dom_name, char* extra_data),
-			       void *private_data, enum ent_type type);
-enum winbindd_result winbindd_dual_list_users(struct winbindd_domain *domain,
-                                              struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_list_groups(struct winbindd_domain *domain,
-                                               struct winbindd_cli_state *state);
-bool print_sidlist(TALLOC_CTX *mem_ctx, const DOM_SID *sids,
-		   size_t num_sids, char **result, ssize_t *len);
-enum winbindd_result winbindd_dual_lookuprids(struct winbindd_domain *domain,
-					      struct winbindd_cli_state *state);
-void winbindd_getsidaliases_async(struct winbindd_domain *domain,
-				  TALLOC_CTX *mem_ctx,
-				  const DOM_SID *sids, size_t num_sids,
-			 	  void (*cont)(void *private_data,
-				 	       bool success,
-					       const DOM_SID *aliases,
-					       size_t num_aliases),
-				  void *private_data);
-enum winbindd_result winbindd_dual_getsidaliases(struct winbindd_domain *domain,
-						 struct winbindd_cli_state *state);
-void winbindd_gettoken_async(TALLOC_CTX *mem_ctx, const DOM_SID *user_sid,
-			     void (*cont)(void *private_data, bool success,
-					  DOM_SID *sids, size_t num_sids),
-			     void *private_data);
-void query_user_async(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain,
-		      const DOM_SID *sid,
-		      void (*cont)(void *private_data, bool success,
-				   const char *acct_name,
-				   const char *full_name,
-				   const char *homedir,
-				   const char *shell,
-				   gid_t gid,
-				   uint32 group_rid),
-		      void *private_data);
-
-/* The following definitions come from winbindd/winbindd_cache.c  */
-
-void winbindd_check_cache_size(time_t t);
-struct cache_entry *centry_start(struct winbindd_domain *domain, NTSTATUS status);
-NTSTATUS wcache_cached_creds_exist(struct winbindd_domain *domain, const DOM_SID *sid);
-NTSTATUS wcache_get_creds(struct winbindd_domain *domain, 
-			  TALLOC_CTX *mem_ctx, 
-			  const DOM_SID *sid,
-			  const uint8 **cached_nt_pass,
-			  const uint8 **cached_salt);
-NTSTATUS wcache_save_creds(struct winbindd_domain *domain, 
-			   TALLOC_CTX *mem_ctx, 
-			   const DOM_SID *sid, 
-			   const uint8 nt_pass[NT_HASH_LEN]);
-void wcache_invalidate_samlogon(struct winbindd_domain *domain, 
-				struct netr_SamInfo3 *info3);
-bool wcache_invalidate_cache(void);
-bool init_wcache(void);
-bool initialize_winbindd_cache(void);
-void close_winbindd_cache(void);
-void cache_store_response(pid_t pid, struct winbindd_response *response);
-bool cache_retrieve_response(pid_t pid, struct winbindd_response * response);
-void cache_cleanup_response(pid_t pid);
-bool lookup_cached_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-		       char **domain_name, char **name,
-		       enum lsa_SidType *type);
-bool lookup_cached_name(TALLOC_CTX *mem_ctx,
-			const char *domain_name,
-			const char *name,
-			DOM_SID *sid,
-			enum lsa_SidType *type);
-void cache_name2sid(struct winbindd_domain *domain, 
-		    const char *domain_name, const char *name,
-		    enum lsa_SidType type, const DOM_SID *sid);
-void wcache_flush_cache(void);
-NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count);
-NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const DOM_SID *sid) ;
-bool set_global_winbindd_state_offline(void);
-void set_global_winbindd_state_online(void);
-bool get_global_winbindd_state_offline(void);
-int winbindd_validate_cache(void);
-int winbindd_validate_cache_nobackup(void);
-bool winbindd_cache_validate_and_initialize(void);
-bool wcache_tdc_fetch_list( struct winbindd_tdc_domain **domains, size_t *num_domains );
-bool wcache_tdc_add_domain( struct winbindd_domain *domain );
-struct winbindd_tdc_domain * wcache_tdc_fetch_domain( TALLOC_CTX *ctx, const char *name );
-void wcache_tdc_clear( void );
-NTSTATUS nss_get_info_cached( struct winbindd_domain *domain, 
-			      const DOM_SID *user_sid,
-			      TALLOC_CTX *ctx,
-			      ADS_STRUCT *ads, LDAPMessage *msg,
-			      char **homedir, char **shell, char **gecos,
-			      gid_t *p_gid);
-
-/* The following definitions come from winbindd/winbindd_ccache_access.c  */
-
-void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *domain,
-						struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_cm.c  */
-
-void set_domain_offline(struct winbindd_domain *domain);
-void set_domain_online_request(struct winbindd_domain *domain);
-void winbind_add_failed_connection_entry(const struct winbindd_domain *domain,
-					const char *server,
-					NTSTATUS result);
-void invalidate_cm_connection(struct winbindd_cm_conn *conn);
-void close_conns_after_fork(void);
-NTSTATUS init_dc_connection(struct winbindd_domain *domain);
-NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
-			struct rpc_pipe_client **cli, POLICY_HND *sam_handle);
-NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
-			struct rpc_pipe_client **cli, POLICY_HND *lsa_policy);
-NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
-			     struct rpc_pipe_client **cli);
-
-/* The following definitions come from winbindd/winbindd_cred_cache.c  */
-
-bool ccache_entry_exists(const char *username);
-bool ccache_entry_identical(const char *username,
-			    uid_t uid,
-			    const char *ccname);
-NTSTATUS add_ccache_to_list(const char *princ_name,
-			    const char *ccname,
-			    const char *service,
-			    const char *username,
-			    const char *realm,
-			    uid_t uid,
-			    time_t create_time,
-			    time_t ticket_end,
-			    time_t renew_until,
-			    bool postponed_request);
-NTSTATUS remove_ccache(const char *username);
-struct WINBINDD_MEMORY_CREDS *find_memory_creds_by_name(const char *username);
-NTSTATUS winbindd_add_memory_creds(const char *username,
-				   uid_t uid,
-				   const char *pass);
-NTSTATUS winbindd_delete_memory_creds(const char *username);
-NTSTATUS winbindd_replace_memory_creds(const char *username,
-				       const char *pass);
-
-/* The following definitions come from winbindd/winbindd_creds.c  */
-
-NTSTATUS winbindd_get_creds(struct winbindd_domain *domain,
-			    TALLOC_CTX *mem_ctx,
-			    const DOM_SID *sid,
-			    struct netr_SamInfo3 **info3,
-			    const uint8 *cached_nt_pass[NT_HASH_LEN],
-			    const uint8 *cred_salt[NT_HASH_LEN]);
-NTSTATUS winbindd_store_creds(struct winbindd_domain *domain,
-			      TALLOC_CTX *mem_ctx, 
-			      const char *user, 
-			      const char *pass, 
-			      struct netr_SamInfo3 *info3,
-			      const DOM_SID *user_sid);
-NTSTATUS winbindd_update_creds_by_info3(struct winbindd_domain *domain,
-				        TALLOC_CTX *mem_ctx,
-				        const char *user,
-				        const char *pass,
-				        struct netr_SamInfo3 *info3);
-NTSTATUS winbindd_update_creds_by_sid(struct winbindd_domain *domain,
-				      TALLOC_CTX *mem_ctx,
-				      const DOM_SID *sid,
-				      const char *pass);
-NTSTATUS winbindd_update_creds_by_name(struct winbindd_domain *domain,
-				       TALLOC_CTX *mem_ctx,
-				       const char *user,
-				       const char *pass);
-
-/* The following definitions come from winbindd/winbindd_domain.c  */
-
-void setup_domain_child(struct winbindd_domain *domain,
-			struct winbindd_child *child);
-
-/* The following definitions come from winbindd/winbindd_dual.c  */
-
-void async_request(TALLOC_CTX *mem_ctx, struct winbindd_child *child,
-		   struct winbindd_request *request,
-		   struct winbindd_response *response,
-		   void (*continuation)(void *private_data, bool success),
-		   void *private_data);
-void async_domain_request(TALLOC_CTX *mem_ctx,
-			  struct winbindd_domain *domain,
-			  struct winbindd_request *request,
-			  struct winbindd_response *response,
-			  void (*continuation)(void *private_data_data, bool success),
-			  void *private_data_data);
-void sendto_child(struct winbindd_cli_state *state,
-		  struct winbindd_child *child);
-void sendto_domain(struct winbindd_cli_state *state,
-		   struct winbindd_domain *domain);
-void setup_child(struct winbindd_child *child,
-		 const struct winbindd_child_dispatch_table *table,
-		 const char *logprefix,
-		 const char *logname);
-void winbind_child_died(pid_t pid);
-void winbindd_flush_negative_conn_cache(struct winbindd_domain *domain);
-void winbind_msg_debug(struct messaging_context *msg_ctx,
-			 void *private_data,
-			 uint32_t msg_type,
-			 struct server_id server_id,
-			 DATA_BLOB *data);
-void winbind_msg_offline(struct messaging_context *msg_ctx,
-			 void *private_data,
-			 uint32_t msg_type,
-			 struct server_id server_id,
-			 DATA_BLOB *data);
-void winbind_msg_online(struct messaging_context *msg_ctx,
-			void *private_data,
-			uint32_t msg_type,
-			struct server_id server_id,
-			DATA_BLOB *data);
-void winbind_msg_onlinestatus(struct messaging_context *msg_ctx,
-			      void *private_data,
-			      uint32_t msg_type,
-			      struct server_id server_id,
-			      DATA_BLOB *data);
-void winbind_msg_dump_event_list(struct messaging_context *msg_ctx,
-				 void *private_data,
-				 uint32_t msg_type,
-				 struct server_id server_id,
-				 DATA_BLOB *data);
-void winbind_msg_dump_domain_list(struct messaging_context *msg_ctx,
-				  void *private_data,
-				  uint32_t msg_type,
-				  struct server_id server_id,
-				  DATA_BLOB *data);
-
-/* The following definitions come from winbindd/winbindd_group.c  */
-
-void winbindd_getgrnam(struct winbindd_cli_state *state);
-void winbindd_getgrgid(struct winbindd_cli_state *state);
-void winbindd_setgrent(struct winbindd_cli_state *state);
-void winbindd_endgrent(struct winbindd_cli_state *state);
-void winbindd_getgrent(struct winbindd_cli_state *state);
-void winbindd_list_groups(struct winbindd_cli_state *state);
-void winbindd_getgroups(struct winbindd_cli_state *state);
-void winbindd_getusersids(struct winbindd_cli_state *state);
-void winbindd_getuserdomgroups(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_getuserdomgroups(struct winbindd_domain *domain,
-						    struct winbindd_cli_state *state);
-bool get_sam_group_entries(struct getent_state *ent);
-
-
-/* The following definitions come from winbindd/winbindd_idmap.c  */
-
-void init_idmap_child(void);
-struct winbindd_child *idmap_child(void);
-void winbindd_set_mapping_async(TALLOC_CTX *mem_ctx, const struct id_map *map,
-			     void (*cont)(void *private_data, bool success),
-			     void *private_data);
-enum winbindd_result winbindd_dual_set_mapping(struct winbindd_domain *domain,
-					    struct winbindd_cli_state *state);
-void winbindd_set_hwm_async(TALLOC_CTX *mem_ctx, const struct unixid *xid,
-			     void (*cont)(void *private_data, bool success),
-			     void *private_data);
-enum winbindd_result winbindd_dual_set_hwm(struct winbindd_domain *domain,
-					    struct winbindd_cli_state *state);
-void winbindd_sids2xids_async(TALLOC_CTX *mem_ctx, void *sids, int size,
-			 void (*cont)(void *private_data, bool success, void *data, int len),
-			 void *private_data);
-enum winbindd_result winbindd_dual_sids2xids(struct winbindd_domain *domain,
-					   struct winbindd_cli_state *state);
-void winbindd_sid2uid_async(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-			 void (*cont)(void *private_data, bool success, uid_t uid),
-			 void *private_data);
-enum winbindd_result winbindd_dual_sid2uid(struct winbindd_domain *domain,
-					   struct winbindd_cli_state *state);
-void winbindd_sid2gid_async(TALLOC_CTX *mem_ctx, const DOM_SID *sid,
-			 void (*cont)(void *private_data, bool success, gid_t gid),
-			 void *private_data);
-enum winbindd_result winbindd_dual_sid2gid(struct winbindd_domain *domain,
-					   struct winbindd_cli_state *state);
-void winbindd_uid2sid_async(TALLOC_CTX *mem_ctx, uid_t uid,
-			    void (*cont)(void *private_data, bool success, const char *sid),
-			    void *private_data);
-enum winbindd_result winbindd_dual_uid2sid(struct winbindd_domain *domain,
-					   struct winbindd_cli_state *state);
-void winbindd_gid2sid_async(TALLOC_CTX *mem_ctx, gid_t gid,
-			    void (*cont)(void *private_data, bool success, const char *sid),
-			    void *private_data);
-enum winbindd_result winbindd_dual_gid2sid(struct winbindd_domain *domain,
-					   struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_locator.c  */
-
-void init_locator_child(void);
-struct winbindd_child *locator_child(void);
-void winbindd_dsgetdcname(struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_misc.c  */
-
-void winbindd_check_machine_acct(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_check_machine_acct(struct winbindd_domain *domain,
-						      struct winbindd_cli_state *state);
-void winbindd_list_ent(struct winbindd_cli_state *state, enum ent_type type);
-void winbindd_list_trusted_domains(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *domain,
-							struct winbindd_cli_state *state);
-void winbindd_getdcname(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain,
-					     struct winbindd_cli_state *state);
-void winbindd_show_sequence(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_show_sequence(struct winbindd_domain *domain,
-						 struct winbindd_cli_state *state);
-void winbindd_domain_info(struct winbindd_cli_state *state);
-void winbindd_ping(struct winbindd_cli_state *state);
-void winbindd_info(struct winbindd_cli_state *state);
-void winbindd_interface_version(struct winbindd_cli_state *state);
-void winbindd_domain_name(struct winbindd_cli_state *state);
-void winbindd_netbios_name(struct winbindd_cli_state *state);
-void winbindd_priv_pipe_dir(struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_ndr.c  */
-
-void ndr_print_winbindd_child(struct ndr_print *ndr,
-			      const char *name,
-			      const struct winbindd_child *r);
-void ndr_print_winbindd_cm_conn(struct ndr_print *ndr,
-				const char *name,
-				const struct winbindd_cm_conn *r);
-void ndr_print_winbindd_methods(struct ndr_print *ndr,
-				const char *name,
-				const struct winbindd_methods *r);
-void ndr_print_winbindd_domain(struct ndr_print *ndr,
-			       const char *name,
-			       const struct winbindd_domain *r);
-
-/* The following definitions come from winbindd/winbindd_pam.c  */
-
-struct winbindd_domain *find_auth_domain(struct winbindd_cli_state *state, 
-					const char *domain_name);
-void winbindd_pam_auth(struct winbindd_cli_state *state);
-NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain,
-				       struct winbindd_cli_state *state,
-				       struct netr_SamInfo3 **info3);
-NTSTATUS winbindd_dual_pam_auth_kerberos(struct winbindd_domain *domain,
-					 struct winbindd_cli_state *state, 
-					 struct netr_SamInfo3 **info3);
-NTSTATUS winbindd_dual_pam_auth_samlogon(struct winbindd_domain *domain,
-					 struct winbindd_cli_state *state,
-					 struct netr_SamInfo3 **info3);
-enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain,
-					    struct winbindd_cli_state *state) ;
-void winbindd_pam_auth_crap(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
-						 struct winbindd_cli_state *state) ;
-void winbindd_pam_chauthtok(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact_domain,
-						 struct winbindd_cli_state *state);
-void winbindd_pam_logoff(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_pam_logoff(struct winbindd_domain *domain,
-					      struct winbindd_cli_state *state) ;
-void winbindd_pam_chng_pswd_auth_crap(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domain *domainSt, struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_passdb.c  */
-
-
-/* The following definitions come from winbindd/winbindd_reconnect.c  */
-
-
-/* The following definitions come from winbindd/winbindd_rpc.c  */
-
-NTSTATUS msrpc_name_to_sid(struct winbindd_domain *domain,
-			   TALLOC_CTX *mem_ctx,
-			   enum winbindd_cmd original_cmd,
-			   const char *domain_name,
-			   const char *name,
-			   DOM_SID *sid,
-			   enum lsa_SidType *type);
-NTSTATUS msrpc_sid_to_name(struct winbindd_domain *domain,
-			    TALLOC_CTX *mem_ctx,
-			    const DOM_SID *sid,
-			    char **domain_name,
-			    char **name,
-			    enum lsa_SidType *type);
-NTSTATUS msrpc_rids_to_names(struct winbindd_domain *domain,
-			     TALLOC_CTX *mem_ctx,
-			     const DOM_SID *sid,
-			     uint32 *rids,
-			     size_t num_rids,
-			     char **domain_name,
-			     char ***names,
-			     enum lsa_SidType **types);
-NTSTATUS msrpc_lookup_useraliases(struct winbindd_domain *domain,
-				  TALLOC_CTX *mem_ctx,
-				  uint32 num_sids, const DOM_SID *sids,
-				  uint32 *num_aliases, uint32 **alias_rids);
-NTSTATUS msrpc_lockout_policy(struct winbindd_domain *domain,
-			      TALLOC_CTX *mem_ctx,
-			      struct samr_DomInfo12 *lockout_policy);
-NTSTATUS msrpc_password_policy(struct winbindd_domain *domain,
-			       TALLOC_CTX *mem_ctx,
-			       struct samr_DomInfo1 *password_policy);
-
-/* The following definitions come from winbindd/winbindd_sid.c  */
-
-void winbindd_lookupsid(struct winbindd_cli_state *state);
-void winbindd_lookupname(struct winbindd_cli_state *state);
-void winbindd_lookuprids(struct winbindd_cli_state *state);
-void winbindd_sid_to_uid(struct winbindd_cli_state *state);
-void winbindd_sid_to_gid(struct winbindd_cli_state *state);
-void winbindd_sids_to_unixids(struct winbindd_cli_state *state);
-void winbindd_set_mapping(struct winbindd_cli_state *state);
-void winbindd_set_hwm(struct winbindd_cli_state *state);
-void winbindd_uid_to_sid(struct winbindd_cli_state *state);
-void winbindd_gid_to_sid(struct winbindd_cli_state *state);
-void winbindd_allocate_uid(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_allocate_uid(struct winbindd_domain *domain,
-						struct winbindd_cli_state *state);
-void winbindd_allocate_gid(struct winbindd_cli_state *state);
-enum winbindd_result winbindd_dual_allocate_gid(struct winbindd_domain *domain,
-						struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_user.c  */
-
-enum winbindd_result winbindd_dual_userinfo(struct winbindd_domain *domain,
-					    struct winbindd_cli_state *state);
-void winbindd_getpwnam(struct winbindd_cli_state *state);
-void winbindd_getpwuid(struct winbindd_cli_state *state);
-void winbindd_setpwent(struct winbindd_cli_state *state);
-void winbindd_endpwent(struct winbindd_cli_state *state);
-void winbindd_getpwent(struct winbindd_cli_state *state);
-void winbindd_list_users(struct winbindd_cli_state *state);
-
-/* The following definitions come from winbindd/winbindd_util.c  */
-
-struct winbindd_domain *domain_list(void);
-void free_domain_list(void);
-void rescan_trusted_domains( void );
-enum winbindd_result init_child_connection(struct winbindd_domain *domain,
-					   void (*continuation)(void *private_data,
-								bool success),
-					   void *private_data);
-enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domain,
-						   struct winbindd_cli_state *state);
-bool init_domain_list(void);
-void check_domain_trusted( const char *name, const DOM_SID *user_sid );
-struct winbindd_domain *find_domain_from_name_noinit(const char *domain_name);
-struct winbindd_domain *find_domain_from_name(const char *domain_name);
-struct winbindd_domain *find_domain_from_sid_noinit(const DOM_SID *sid);
-struct winbindd_domain *find_domain_from_sid(const DOM_SID *sid);
-struct winbindd_domain *find_our_domain(void);
-struct winbindd_domain *find_root_domain(void);
-struct winbindd_domain *find_builtin_domain(void);
-struct winbindd_domain *find_lookup_domain_from_sid(const DOM_SID *sid);
-struct winbindd_domain *find_lookup_domain_from_name(const char *domain_name);
-bool winbindd_lookup_sid_by_name(TALLOC_CTX *mem_ctx,
-				 enum winbindd_cmd orig_cmd,
-				 struct winbindd_domain *domain, 
-				 const char *domain_name,
-				 const char *name, DOM_SID *sid, 
-				 enum lsa_SidType *type);
-bool winbindd_lookup_name_by_sid(TALLOC_CTX *mem_ctx,
-				 struct winbindd_domain *domain,
-				 DOM_SID *sid,
-				 char **dom_name,
-				 char **name,
-				 enum lsa_SidType *type);
-void free_getent_state(struct getent_state *state);
-bool parse_domain_user(const char *domuser, fstring domain, fstring user);
-bool parse_domain_user_talloc(TALLOC_CTX *mem_ctx, const char *domuser,
-			      char **domain, char **user);
-void parse_add_domuser(void *buf, char *domuser, int *len);
-bool canonicalize_username(fstring username_inout, fstring domain, fstring user);
-void fill_domain_username(fstring name, const char *domain, const char *user, bool can_assume);
-const char *get_winbind_pipe_dir(void) ;
-char *get_winbind_priv_pipe_dir(void) ;
-int open_winbindd_socket(void);
-int open_winbindd_priv_socket(void);
-void close_winbindd_socket(void);
-struct winbindd_cli_state *winbindd_client_list(void);
-void winbindd_add_client(struct winbindd_cli_state *cli);
-void winbindd_remove_client(struct winbindd_cli_state *cli);
-void winbindd_kill_all_clients(void);
-int winbindd_num_clients(void);
-NTSTATUS lookup_usergroups_cached(struct winbindd_domain *domain,
-				  TALLOC_CTX *mem_ctx,
-				  const DOM_SID *user_sid,
-				  uint32 *p_num_groups, DOM_SID **user_sids);
-
-NTSTATUS normalize_name_map(TALLOC_CTX *mem_ctx,
-			    struct winbindd_domain *domain,
-			    char *name,
-			    char **normalized);
-NTSTATUS normalize_name_unmap(TALLOC_CTX *mem_ctx,
-			      char *name,
-			      char **normalized);
-
-NTSTATUS resolve_username_to_alias(TALLOC_CTX *mem_ctx,
-				   struct winbindd_domain *domain,
-				   const char *name, char **alias);
-NTSTATUS resolve_alias_to_username(TALLOC_CTX *mem_ctx,
-				   struct winbindd_domain *domain,
-				   const char *alias, char **name);
-
-bool winbindd_can_contact_domain(struct winbindd_domain *domain);
-bool winbindd_internal_child(struct winbindd_child *child);
-void winbindd_set_locator_kdc_envs(const struct winbindd_domain *domain);
-void winbindd_unset_locator_kdc_env(const struct winbindd_domain *domain);
-void winbindd_set_locator_kdc_envs(const struct winbindd_domain *domain);
-void winbindd_unset_locator_kdc_env(const struct winbindd_domain *domain);
-void set_auth_errors(struct winbindd_response *resp, NTSTATUS result);
-
-/* The following definitions come from winbindd/winbindd_wins.c  */
-
-void winbindd_wins_byip(struct winbindd_cli_state *state);
-void winbindd_wins_byname(struct winbindd_cli_state *state);
-
-#endif /*  _WINBINDD_PROTO_H_  */

Modified: branches/samba/upstream/source/winbindd/winbindd_rpc.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_rpc.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_rpc.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -279,8 +279,6 @@
 	char *full_name = NULL;
 	struct rpc_pipe_client *cli;
 	POLICY_HND lsa_policy;
-	NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
-	char *mapped_name = NULL;
 
 	if (name == NULL || *name=='\0') {
 		full_name = talloc_asprintf(mem_ctx, "%s", domain_name);
@@ -296,20 +294,10 @@
 
 	DEBUG(3,("rpc: name_to_sid name=%s\n", full_name));
 
-	name_map_status = normalize_name_unmap(mem_ctx, full_name,
-					       &mapped_name);
+	ws_name_return( full_name, WB_REPLACE_CHAR );
 
-	/* Reset the full_name pointer if we mapped anytthing */
+	DEBUG(3,("name_to_sid [rpc] %s for domain %s\n", full_name?full_name:"", domain_name ));
 
-	if (NT_STATUS_IS_OK(name_map_status) ||
-	    NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED))
-	{
-		full_name = mapped_name;
-	}
-
-	DEBUG(3,("name_to_sid [rpc] %s for domain %s\n",
-		 full_name?full_name:"", domain_name ));
-
 	result = cm_connect_lsa(domain, mem_ctx, &cli, &lsa_policy);
 	if (!NT_STATUS_IS_OK(result))
 		return result;
@@ -344,8 +332,6 @@
 	NTSTATUS result;
 	struct rpc_pipe_client *cli;
 	POLICY_HND lsa_policy;
-	NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
-	char *mapped_name = NULL;
 
 	DEBUG(3,("sid_to_name [rpc] %s for domain %s\n", sid_string_dbg(sid),
 		 domain->name ));
@@ -370,17 +356,9 @@
 	*domain_name = domains[0];
 	*name = names[0];
 
+	ws_name_replace( *name, WB_REPLACE_CHAR );	
+		
 	DEBUG(5,("Mapped sid to [%s]\\[%s]\n", domains[0], *name));
-
-	name_map_status = normalize_name_map(mem_ctx, domain, *name,
-					     &mapped_name);
-	if (NT_STATUS_IS_OK(name_map_status) ||
-	    NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED))
-	{
-		*name = mapped_name;
-		DEBUG(5,("returning mapped name -- %s\n", *name));
-	}
-
 	return NT_STATUS_OK;
 }
 
@@ -433,20 +411,8 @@
 
 	ret_names = *names;
 	for (i=0; i<num_rids; i++) {
-		NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
-		char *mapped_name = NULL;
-
 		if ((*types)[i] != SID_NAME_UNKNOWN) {
-			name_map_status = normalize_name_map(mem_ctx,
-							     domain,
-							     ret_names[i],
-							     &mapped_name);
-			if (NT_STATUS_IS_OK(name_map_status) ||
-			    NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED))
-			{
-				ret_names[i] = mapped_name;
-			}
-
+			ws_name_replace( ret_names[i], WB_REPLACE_CHAR );
 			*domain_name = domains[i];
 		}
 	}
@@ -784,14 +750,14 @@
 	/* This call can take a long time - allow the server to time out.
 	   35 seconds should do it. */
 
-	orig_timeout = rpccli_set_timeout(cli, 35000);
+	orig_timeout = cli_set_timeout(cli->cli, 35000);
 
         result = rpccli_samr_QueryGroupMember(cli, mem_ctx,
 					      &group_pol,
 					      &rids);
 
 	/* And restore our original timeout. */
-	rpccli_set_timeout(cli, orig_timeout);
+	cli_set_timeout(cli->cli, orig_timeout);
 
 	rpccli_samr_Close(cli, mem_ctx, &group_pol);
 

Modified: branches/samba/upstream/source/winbindd/winbindd_sid.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_sid.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_sid.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -159,10 +159,7 @@
 {
 	struct winbindd_cli_state *state =
 		talloc_get_type_abort(private_data, struct winbindd_cli_state);
-	struct dom_sid sid;
 
-	string_to_sid(&sid, state->request.data.sid);
-
 	if (!success) {
 		DEBUG(5, ("Could not convert sid %s\n",
 			  state->request.data.sid));
@@ -183,44 +180,34 @@
 		talloc_get_type_abort(private_data, struct winbindd_cli_state);
 	DOM_SID sid;
 
-	if (!string_to_sid(&sid, state->request.data.sid)) {
-		DEBUG(1, ("sid2uid_lookupsid_recv: Could not get convert sid "
-			  "%s from string\n", state->request.data.sid));
-		request_error(state);
-		return;
-	}
-
 	if (!success) {
 		DEBUG(5, ("sid2uid_lookupsid_recv Could not convert get sid type for %s\n",
 			  state->request.data.sid));
-		goto fail;
+		request_error(state);
+		return;
 	}
 
 	if ( (type!=SID_NAME_USER) && (type!=SID_NAME_COMPUTER) ) {
 		DEBUG(5,("sid2uid_lookupsid_recv: Sid %s is not a user or a computer.\n", 
 			 state->request.data.sid));
-		goto fail;
+		request_error(state);
+		return;		
 	}
 
+	if (!string_to_sid(&sid, state->request.data.sid)) {
+		DEBUG(1, ("sid2uid_lookupsid_recv: Could not get convert sid %s from string\n",
+			  state->request.data.sid));
+		request_error(state);
+		return;
+	}
+	
 	/* always use the async interface (may block) */
 	winbindd_sid2uid_async(state->mem_ctx, &sid, sid2uid_recv, state);
-	return;
-
- fail:
-	/*
-	 * We have to set the cache ourselves here, the child which is
-	 * normally responsible was not queried yet.
-	 */
-	idmap_cache_set_sid2uid(&sid, -1);
-	request_error(state);
-	return;
 }
 
 void winbindd_sid_to_uid(struct winbindd_cli_state *state)
 {
 	DOM_SID sid;
-	uid_t uid;
-	bool expired;
 
 	/* Ensure null termination */
 	state->request.data.sid[sizeof(state->request.data.sid)-1]='\0';
@@ -235,29 +222,10 @@
 		return;
 	}
 
-	if (idmap_cache_find_sid2uid(&sid, &uid, &expired)) {
-		DEBUG(10, ("idmap_cache_find_sid2uid found %d%s\n",
-			   (int)uid, expired ? " (expired)": ""));
-		if (expired && IS_DOMAIN_ONLINE(find_our_domain())) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if (uid == -1) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			request_error(state);
-			return;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		state->response.data.uid = uid;
-		request_ok(state);
-		return;
-	}
-
 	/* Validate the SID as a user.  Hopefully this will hit cache.
 	   Needed to prevent DoS by exhausting the uid allocation
 	   range from random SIDs. */
 
- backend:
 	winbindd_lookupsid_async( state->mem_ctx, &sid, sid2uid_lookupsid_recv, state );
 }
 
@@ -268,10 +236,7 @@
 {
 	struct winbindd_cli_state *state =
 		talloc_get_type_abort(private_data, struct winbindd_cli_state);
-	struct dom_sid sid;
 
-	string_to_sid(&sid, state->request.data.sid);
-
 	if (!success) {
 		DEBUG(5, ("Could not convert sid %s\n",
 			  state->request.data.sid));
@@ -292,17 +257,11 @@
 		talloc_get_type_abort(private_data, struct winbindd_cli_state);
 	DOM_SID sid;
 
-	if (!string_to_sid(&sid, state->request.data.sid)) {
-		DEBUG(1, ("sid2gid_lookupsid_recv: Could not get convert sid "
-			  "%s from string\n", state->request.data.sid));
-		request_error(state);
-		return;
-	}
-
 	if (!success) {
 		DEBUG(5, ("sid2gid_lookupsid_recv: Could not get sid type for %s\n",
 			  state->request.data.sid));
-		goto fail;
+		request_error(state);
+		return;
 	}
 
 	if ( (type!=SID_NAME_DOM_GRP) &&
@@ -311,28 +270,24 @@
 	{
 		DEBUG(5,("sid2gid_lookupsid_recv: Sid %s is not a group.\n", 
 			 state->request.data.sid));
-		goto fail;
+		request_error(state);
+		return;		
 	}
 
+	if (!string_to_sid(&sid, state->request.data.sid)) {
+		DEBUG(1, ("sid2gid_lookupsid_recv: Could not get convert sid %s from string\n",
+			  state->request.data.sid));
+		request_error(state);
+		return;
+	}
+	
 	/* always use the async interface (may block) */
 	winbindd_sid2gid_async(state->mem_ctx, &sid, sid2gid_recv, state);
-	return;
-
- fail:
-	/*
-	 * We have to set the cache ourselves here, the child which is
-	 * normally responsible was not queried yet.
-	 */
-	idmap_cache_set_sid2gid(&sid, -1);
-	request_error(state);
-	return;
 }
 
 void winbindd_sid_to_gid(struct winbindd_cli_state *state)
 {
 	DOM_SID sid;
-	gid_t gid;
-	bool expired;
 
 	/* Ensure null termination */
 	state->request.data.sid[sizeof(state->request.data.sid)-1]='\0';
@@ -347,32 +302,39 @@
 		return;
 	}
 
-	if (idmap_cache_find_sid2gid(&sid, &gid, &expired)) {
-		DEBUG(10, ("idmap_cache_find_sid2gid found %d%s\n",
-			   (int)gid, expired ? " (expired)": ""));
-		if (expired && IS_DOMAIN_ONLINE(find_our_domain())) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if (gid == -1) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			request_error(state);
-			return;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		state->response.data.gid = gid;
-		request_ok(state);
-		return;
-	}
-
 	/* Validate the SID as a group.  Hopefully this will hit cache.
 	   Needed to prevent DoS by exhausting the uid allocation
 	   range from random SIDs. */
 
- backend:
 	winbindd_lookupsid_async( state->mem_ctx, &sid, sid2gid_lookupsid_recv, state );	
 }
 
+static void sids2xids_recv(void *private_data, bool success, void *data, int len)
+{
+	struct winbindd_cli_state *state =
+		talloc_get_type_abort(private_data, struct winbindd_cli_state);
+
+	if (!success) {
+		DEBUG(5, ("Could not convert sids to xids\n"));
+		request_error(state);
+		return;
+	}
+
+	state->response.extra_data.data = data;
+	state->response.length = sizeof(state->response) + len;
+	request_ok(state);
+}
+
+void winbindd_sids_to_unixids(struct winbindd_cli_state *state)
+{
+	DEBUG(3, ("[%5lu]: sids to xids\n", (unsigned long)state->pid));
+
+	winbindd_sids2xids_async(state->mem_ctx,
+			state->request.extra_data.data,
+			state->request.extra_len,
+			sids2xids_recv, state);
+}
+
 static void set_mapping_recv(void *private_data, bool success)
 {
 	struct winbindd_cli_state *state =
@@ -449,117 +411,60 @@
 
 /* Convert a uid to a sid */
 
-static void uid2sid_recv(void *private_data, bool success, const char *sidstr)
+static void uid2sid_recv(void *private_data, bool success, const char *sid)
 {
 	struct winbindd_cli_state *state =
 		(struct winbindd_cli_state *)private_data;
-	struct dom_sid sid;
 
-	if (!success || !string_to_sid(&sid, sidstr)) {
-		ZERO_STRUCT(sid);
-		idmap_cache_set_sid2uid(&sid, state->request.data.uid);
-		request_error(state);
+	if (success) {
+		DEBUG(10,("uid2sid: uid %lu has sid %s\n",
+			  (unsigned long)(state->request.data.uid), sid));
+		fstrcpy(state->response.data.sid.sid, sid);
+		state->response.data.sid.type = SID_NAME_USER;
+		request_ok(state);
 		return;
 	}
 
-	DEBUG(10,("uid2sid: uid %lu has sid %s\n",
-		  (unsigned long)(state->request.data.uid), sidstr));
-
-	idmap_cache_set_sid2uid(&sid, state->request.data.uid);
-	fstrcpy(state->response.data.sid.sid, sidstr);
-	state->response.data.sid.type = SID_NAME_USER;
-	request_ok(state);
+	request_error(state);
 	return;
 }
 
 void winbindd_uid_to_sid(struct winbindd_cli_state *state)
 {
-	struct dom_sid sid;
-	bool expired;
-
 	DEBUG(3, ("[%5lu]: uid to sid %lu\n", (unsigned long)state->pid, 
 		  (unsigned long)state->request.data.uid));
 
-	if (idmap_cache_find_uid2sid(state->request.data.uid, &sid,
-				     &expired)) {
-		DEBUG(10, ("idmap_cache_find_uid2sid found %d%s\n",
-			   (int)state->request.data.uid,
-			   expired ? " (expired)": ""));
-		if (expired && IS_DOMAIN_ONLINE(find_our_domain())) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if (is_null_sid(&sid)) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			request_error(state);
-			return;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		sid_to_fstring(state->response.data.sid.sid, &sid);
-		request_ok(state);
-		return;
-	}
-
 	/* always go via the async interface (may block) */
- backend:
 	winbindd_uid2sid_async(state->mem_ctx, state->request.data.uid, uid2sid_recv, state);
 }
 
 /* Convert a gid to a sid */
 
-static void gid2sid_recv(void *private_data, bool success, const char *sidstr)
+static void gid2sid_recv(void *private_data, bool success, const char *sid)
 {
 	struct winbindd_cli_state *state =
 		(struct winbindd_cli_state *)private_data;
-	struct dom_sid sid;
 
-	if (!success || !string_to_sid(&sid, sidstr)) {
-		ZERO_STRUCT(sid);
-		idmap_cache_set_sid2gid(&sid, state->request.data.gid);
-		request_error(state);
+	if (success) {
+		DEBUG(10,("gid2sid: gid %lu has sid %s\n",
+			  (unsigned long)(state->request.data.gid), sid));
+		fstrcpy(state->response.data.sid.sid, sid);
+		state->response.data.sid.type = SID_NAME_DOM_GRP;
+		request_ok(state);
 		return;
 	}
-	DEBUG(10,("gid2sid: gid %lu has sid %s\n",
-		  (unsigned long)(state->request.data.gid), sidstr));
 
-	idmap_cache_set_sid2gid(&sid, state->request.data.gid);
-	fstrcpy(state->response.data.sid.sid, sidstr);
-	state->response.data.sid.type = SID_NAME_DOM_GRP;
-	request_ok(state);
+	request_error(state);
 	return;
 }
 
 
 void winbindd_gid_to_sid(struct winbindd_cli_state *state)
 {
-	struct dom_sid sid;
-	bool expired;
-
 	DEBUG(3, ("[%5lu]: gid to sid %lu\n", (unsigned long)state->pid, 
 		  (unsigned long)state->request.data.gid));
 
-	if (idmap_cache_find_gid2sid(state->request.data.gid, &sid,
-				     &expired)) {
-		DEBUG(10, ("idmap_cache_find_gid2sid found %d%s\n",
-			   (int)state->request.data.gid,
-			   expired ? " (expired)": ""));
-		if (expired && IS_DOMAIN_ONLINE(find_our_domain())) {
-			DEBUG(10, ("revalidating expired entry\n"));
-			goto backend;
-		}
-		if (is_null_sid(&sid)) {
-			DEBUG(10, ("Returning negative cache entry\n"));
-			request_error(state);
-			return;
-		}
-		DEBUG(10, ("Returning positive cache entry\n"));
-		sid_to_fstring(state->response.data.sid.sid, &sid);
-		request_ok(state);
-		return;
-	}
-
 	/* always use async calls (may block) */
- backend:
 	winbindd_gid2sid_async(state->mem_ctx, state->request.data.gid, gid2sid_recv, state);
 }
 

Modified: branches/samba/upstream/source/winbindd/winbindd_user.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_user.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_user.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -27,12 +27,12 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 
-static bool fillup_pw_field(const char *lp_template,
-			    const char *username,
+static bool fillup_pw_field(const char *lp_template, 
+			    const char *username, 
 			    const char *domname,
 			    uid_t uid,
 			    gid_t gid,
-			    const char *in,
+			    const char *in, 
 			    fstring out)
 {
 	char *templ;
@@ -40,59 +40,54 @@
 	if (out == NULL)
 		return False;
 
-	/* The substitution of %U and %D in the 'template
+	/* The substitution of %U and %D in the 'template 
 	   homedir' is done by talloc_sub_specified() below.
 	   If we have an in string (which means the value has already
 	   been set in the nss_info backend), then use that.
 	   Otherwise use the template value passed in. */
 
 	if ( in && !strequal(in,"") && lp_security() == SEC_ADS ) {
-		templ = talloc_sub_specified(NULL, in,
+		templ = talloc_sub_specified(NULL, in, 
 					     username, domname,
 				     uid, gid);
 	} else {
-		templ = talloc_sub_specified(NULL, lp_template,
+		templ = talloc_sub_specified(NULL, lp_template, 
 					     username, domname,
-					     uid, gid);
+					     uid, gid);		
 	}
-
+		
 	if (!templ)
 		return False;
 
 	safe_strcpy(out, templ, sizeof(fstring) - 1);
 	TALLOC_FREE(templ);
-
+		
 	return True;
-
+	
 }
 /* Fill a pwent structure with information we have obtained */
 
-static bool winbindd_fill_pwent(TALLOC_CTX *ctx, char *dom_name, char *user_name,
+static bool winbindd_fill_pwent(char *dom_name, char *user_name, 
 				DOM_SID *user_sid, DOM_SID *group_sid,
 				char *full_name, char *homedir, char *shell,
 				struct winbindd_pw *pw)
 {
 	fstring output_username;
-	char *mapped_name = NULL;
-	struct winbindd_domain *domain = NULL;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
+	
 	if (!pw || !dom_name || !user_name)
 		return False;
-
+	
 	/* Resolve the uid number */
 
-	if (!NT_STATUS_IS_OK(idmap_sid_to_uid(dom_name, user_sid,
-					      &pw->pw_uid))) {
+	if (!NT_STATUS_IS_OK(idmap_sid_to_uid(user_sid, &pw->pw_uid))) {
 		DEBUG(1, ("error getting user id for sid %s\n",
 			  sid_string_dbg(user_sid)));
 		return False;
 	}
+	
+	/* Resolve the gid number */   
 
-	/* Resolve the gid number */
-
-	if (!NT_STATUS_IS_OK(idmap_sid_to_gid(dom_name, group_sid,
-					      &pw->pw_gid))) {
+	if (!NT_STATUS_IS_OK(idmap_sid_to_gid(group_sid, &pw->pw_gid))) {
 		DEBUG(1, ("error getting group id for sid %s\n",
 			  sid_string_dbg(group_sid)));
 		return False;
@@ -102,42 +97,21 @@
 
 	/* Username */
 
-	domain = find_domain_from_name_noinit(dom_name);
-	if (domain) {
-		nt_status = normalize_name_map(ctx, domain, user_name,
-					       &mapped_name);
-	} else {
-		DEBUG(5,("winbindd_fill_pwent: Failed to find domain for %s.  "
-			 "Disabling name alias support\n", dom_name));
-		nt_status = NT_STATUS_NO_SUCH_DOMAIN;
-	}
+	fill_domain_username(output_username, dom_name, user_name, True); 
 
-	/* Basic removal of whitespace */
-	if (NT_STATUS_IS_OK(nt_status)) {
-		fill_domain_username(output_username, dom_name, mapped_name, True);
-	}
-	/* Complete name replacement */
-	else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) {
-		fstrcpy(output_username, mapped_name);
-	}
-	/* No change at all */
-	else {
-		fill_domain_username(output_username, dom_name, user_name, True);
-	}
-
 	safe_strcpy(pw->pw_name, output_username, sizeof(pw->pw_name) - 1);
-
+	
 	/* Full name (gecos) */
-
+	
 	safe_strcpy(pw->pw_gecos, full_name, sizeof(pw->pw_gecos) - 1);
 
 	/* Home directory and shell */
-
-	if (!fillup_pw_field(lp_template_homedir(), user_name, dom_name,
+	
+	if (!fillup_pw_field(lp_template_homedir(), user_name, dom_name, 
 			     pw->pw_uid, pw->pw_gid, homedir, pw->pw_dir))
 		return False;
 
-	if (!fillup_pw_field(lp_template_shell(), user_name, dom_name,
+	if (!fillup_pw_field(lp_template_shell(), user_name, dom_name, 
 			     pw->pw_uid, pw->pw_gid, shell, pw->pw_shell))
 		return False;
 
@@ -161,7 +135,7 @@
 	/* Ensure null termination */
 	state->request.data.sid[sizeof(state->request.data.sid)-1]='\0';
 
-	DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid,
+	DEBUG(3, ("[%5lu]: lookupsid %s\n", (unsigned long)state->pid, 
 		  state->request.data.sid));
 
 	if (!string_to_sid(&sid, state->request.data.sid)) {
@@ -181,7 +155,7 @@
 	fstrcpy(state->response.data.user_info.full_name, user_info.full_name);
 	fstrcpy(state->response.data.user_info.homedir, user_info.homedir);
 	fstrcpy(state->response.data.user_info.shell, user_info.shell);
-	state->response.data.user_info.primary_gid = user_info.primary_gid;
+	state->response.data.user_info.primary_gid = user_info.primary_gid;	
 	if (!sid_peek_check_rid(&domain->sid, &user_info.group_sid,
 				&state->response.data.user_info.group_rid)) {
 		DEBUG(1, ("Could not extract group rid out of %s\n",
@@ -203,12 +177,11 @@
 	uid_t uid;
 	DOM_SID group_sid;
 	gid_t gid;
-	bool username_mapped;
 };
 
 static void getpwsid_queryuser_recv(void *private_data, bool success,
 				    const char *acct_name,
-				    const char *full_name,
+				    const char *full_name, 
 				    const char *homedir,
 				    const char *shell,
 				    gid_t gid,
@@ -244,10 +217,10 @@
  error:
 	request_error(state);
 }
-
+	
 static void getpwsid_queryuser_recv(void *private_data, bool success,
 				    const char *acct_name,
-				    const char *full_name,
+				    const char *full_name, 
 				    const char *homedir,
 				    const char *shell,
 				    gid_t gid,
@@ -256,8 +229,6 @@
 	fstring username;
 	struct getpwsid_state *s =
 		talloc_get_type_abort(private_data, struct getpwsid_state);
-	char *mapped_name;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 
 	if (!success) {
 		DEBUG(5, ("Could not query domain %s SID %s\n",
@@ -268,59 +239,43 @@
 
 	if ( acct_name && *acct_name ) {
 	fstrcpy( username, acct_name );
-	} else {
+	} else {		
 		char *domain_name = NULL;
 		enum lsa_SidType type;
 		char *user_name = NULL;
 		struct winbindd_domain *domain = NULL;
-
+		
 		domain = find_lookup_domain_from_sid(&s->user_sid);
 		if (domain == NULL) {
 			DEBUG(5, ("find_lookup_domain_from_sid(%s) failed\n",
 				  sid_string_dbg(&s->user_sid)));
 			request_error(s->state);
-			return;
+			return;			
 		}
 		winbindd_lookup_name_by_sid(s->state->mem_ctx, domain,
 					    &s->user_sid, &domain_name,
-					    &user_name, &type );
+					    &user_name, &type );		
 
 		/* If this still fails we ar4e done.  Just error out */
 		if ( !user_name ) {
 			DEBUG(5,("Could not obtain a name for SID %s\n",
 				 sid_string_dbg(&s->user_sid)));
 			request_error(s->state);
-			return;
+			return;			
 		}
 
-		fstrcpy( username, user_name );
+		fstrcpy( username, user_name );		
 	}
 
 	strlower_m( username );
 	s->username = talloc_strdup(s->state->mem_ctx, username);
 
-	nt_status = normalize_name_map(s->state->mem_ctx, s->domain,
-				       s->username, &mapped_name);
-
-	/* Basic removal of whitespace */
-	if (NT_STATUS_IS_OK(nt_status)) {
-		s->username = mapped_name;
-		s->username_mapped = false;
-	}
-	/* Complete name replacement */
-	else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED)) {
-		s->username = mapped_name;
-		s->username_mapped = true;
-	}
-	/* No change at all */
-	else {
-		s->username_mapped = false;
-	}
-
+	ws_name_replace( s->username, WB_REPLACE_CHAR );
+	 
 	s->fullname = talloc_strdup(s->state->mem_ctx, full_name);
 	s->homedir = talloc_strdup(s->state->mem_ctx, homedir);
 	s->shell = talloc_strdup(s->state->mem_ctx, shell);
-	s->gid = gid;
+	s->gid = gid;	
 	sid_copy(&s->group_sid, &s->domain->sid);
 	sid_append_rid(&s->group_sid, group_rid);
 
@@ -373,29 +328,18 @@
 	pw = &s->state->response.data.pw;
 	pw->pw_uid = s->uid;
 	pw->pw_gid = s->gid;
-
-	/* allow username to be overridden by the alias mapping */
-
-	if ( s->username_mapped ) {
-		fstrcpy( output_username, s->username );
-	} else {
-	fill_domain_username(output_username, s->domain->name,
-			     s->username, True);
-	}
-
+	fill_domain_username(output_username, s->domain->name, s->username, True); 
 	safe_strcpy(pw->pw_name, output_username, sizeof(pw->pw_name) - 1);
 	safe_strcpy(pw->pw_gecos, s->fullname, sizeof(pw->pw_gecos) - 1);
 
-	if (!fillup_pw_field(lp_template_homedir(), s->username,
-			     s->domain->name, pw->pw_uid, pw->pw_gid,
-			     s->homedir, pw->pw_dir)) {
+	if (!fillup_pw_field(lp_template_homedir(), s->username, s->domain->name, 
+			     pw->pw_uid, pw->pw_gid, s->homedir, pw->pw_dir)) {
 		DEBUG(5, ("Could not compose homedir\n"));
 		goto failed;
 	}
 
-	if (!fillup_pw_field(lp_template_shell(), s->username,
-			     s->domain->name, pw->pw_uid, pw->pw_gid,
-			     s->shell, pw->pw_shell)) {
+	if (!fillup_pw_field(lp_template_shell(), s->username, s->domain->name, 
+			     pw->pw_uid, pw->pw_gid, s->shell, pw->pw_shell)) {
 		DEBUG(5, ("Could not compose shell\n"));
 		goto failed;
 	}
@@ -421,39 +365,23 @@
 {
 	struct winbindd_domain *domain;
 	fstring domname, username;
-	char *mapped_user = NULL;
-	char *domuser;
-	size_t dusize;
-	NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
 
-	domuser = state->request.data.username;
-	dusize = sizeof(state->request.data.username);
+	/* Ensure null termination */
+	state->request.data.username[sizeof(state->request.data.username)-1]='\0';
 
-	/* Ensure null termination (it's an fstring) */
-	domuser[dusize-1] = '\0';
+	DEBUG(3, ("[%5lu]: getpwnam %s\n", (unsigned long)state->pid,
+		  state->request.data.username));
 
-	DEBUG(3, ("[%5lu]: getpwnam %s\n",
-		  (unsigned long)state->pid,
-		  domuser));
+	ws_name_return( state->request.data.username, WB_REPLACE_CHAR );
 
-	nt_status = normalize_name_unmap(state->mem_ctx, domuser,
-					 &mapped_user);
-
-	/* If we could not convert from an aliased name or a
-	   normalized name, then just use the original name */
-
-	if (!NT_STATUS_IS_OK(nt_status) &&
-	    !NT_STATUS_EQUAL(nt_status, NT_STATUS_FILE_RENAMED))
-	{
-		mapped_user = domuser;
-	}
-
-	if (!parse_domain_user(mapped_user, domname, username)) {
-		DEBUG(5, ("Could not parse domain user: %s\n", domuser));
+	if (!parse_domain_user(state->request.data.username, domname,
+			       username)) {
+		DEBUG(5, ("Could not parse domain user: %s\n",
+			  state->request.data.username));
 		request_error(state);
 		return;
 	}
-
+	
 	/* Get info for the domain */
 
 	domain = find_domain_from_name(domname);
@@ -463,24 +391,22 @@
 			  "Using primary domain\n", domname));
 		if ( (domain = find_our_domain()) == NULL ) {
 			DEBUG(0,("Cannot find my primary domain structure!\n"));
-			request_error(state);
-			return;
-		}
+		request_error(state);
+		return;
 	}
+	}
 
-	if (strequal(domname, lp_workgroup()) &&
-	    lp_winbind_trusted_domains_only() ) {
-		DEBUG(7,("winbindd_getpwnam: My domain -- "
-			 "rejecting getpwnam() for %s\\%s.\n",
-			 domname, username));
+	if ( strequal(domname, lp_workgroup()) && lp_winbind_trusted_domains_only() ) {
+		DEBUG(7,("winbindd_getpwnam: My domain -- rejecting getpwnam() for %s\\%s.\n", 
+			domname, username));
 		request_error(state);
 		return;
-	}
+	}	
 
 	/* Get rid and name type from name.  The following costs 1 packet */
 
 	winbindd_lookupname_async(state->mem_ctx, domname, username,
-				  getpwnam_name2sid_recv, WINBINDD_GETPWNAM,
+				  getpwnam_name2sid_recv, WINBINDD_GETPWNAM, 
 				  state);
 }
 
@@ -489,25 +415,27 @@
 {
 	struct winbindd_cli_state *state =
 		(struct winbindd_cli_state *)private_data;
-	fstring domname, username;
-	char *domuser = state->request.data.username;
+	fstring domname, username;	
 
 	if (!success) {
-		DEBUG(5, ("Could not lookup name for user %s\n", domuser));
+		DEBUG(5, ("Could not lookup name for user %s\n",
+			  state->request.data.username));
 		request_error(state);
 		return;
 	}
 
 	if ((type != SID_NAME_USER) && (type != SID_NAME_COMPUTER)) {
-		DEBUG(5, ("%s is not a user\n", domuser));
+		DEBUG(5, ("%s is not a user\n", state->request.data.username));
 		request_error(state);
 		return;
 	}
 
-	if (parse_domain_user(domuser, domname, username)) {
-		check_domain_trusted(domname, sid);
+	if ( parse_domain_user(state->request.data.username, domname, username) ) {
+		check_domain_trusted( domname, sid );	
 	}
 
+
+
 	winbindd_getpwsid(state, sid);
 }
 
@@ -523,7 +451,7 @@
 		request_error(state);
 		return;
 	}
-
+	
 	DEBUG(10,("uid2sid_recv: uid %lu has sid %s\n",
 		  (unsigned long)(state->request.data.uid), sid));
 
@@ -534,16 +462,12 @@
 /* Return a password structure given a uid number */
 void winbindd_getpwuid(struct winbindd_cli_state *state)
 {
-	uid_t uid = state->request.data.uid;
+	DEBUG(3, ("[%5lu]: getpwuid %lu\n", (unsigned long)state->pid, 
+		  (unsigned long)state->request.data.uid));
 
-	DEBUG(3, ("[%5lu]: getpwuid %lu\n",
-		  (unsigned long)state->pid,
-		  (unsigned long)uid));
-
 	/* always query idmap via the async interface */
-	/* if this turns to be too slow we will add here
-	 * a direct query to the cache */
-	winbindd_uid2sid_async(state->mem_ctx, uid, getpwuid_recv, state);
+	/* if this turns to be too slow we will add here a direct query to the cache */
+	winbindd_uid2sid_async(state->mem_ctx, state->request.data.uid, getpwuid_recv, state);
 }
 
 /*
@@ -555,53 +479,66 @@
 static bool winbindd_setpwent_internal(struct winbindd_cli_state *state)
 {
 	struct winbindd_domain *domain;
-
+        
 	DEBUG(3, ("[%5lu]: setpwent\n", (unsigned long)state->pid));
-
+        
 	/* Check user has enabled this */
-
+        
 	if (!lp_winbind_enum_users()) {
 		return False;
 	}
 
 	/* Free old static data if it exists */
-
+        
 	if (state->getpwent_state != NULL) {
 		free_getent_state(state->getpwent_state);
 		state->getpwent_state = NULL;
 	}
 
-	/* Create sam pipes for each domain we know about */
+#if 0	/* JERRY */
+	/* add any local users we have */
+	        
+	if ( (domain_state = (struct getent_state *)malloc(sizeof(struct getent_state))) == NULL )
+		return False;
+                
+	ZERO_STRUCTP(domain_state);
 
+	/* Add to list of open domains */
+                
+	DLIST_ADD(state->getpwent_state, domain_state);
+#endif
+        
+	/* Create sam pipes for each domain we know about */
+        
 	for(domain = domain_list(); domain != NULL; domain = domain->next) {
 		struct getent_state *domain_state;
-
-
-		/* don't add our domaina if we are a PDC or if we
+                
+		
+		/* don't add our domaina if we are a PDC or if we 
 		   are a member of a Samba domain */
-
-		if ((IS_DC || lp_winbind_trusted_domains_only())
-			&& strequal(domain->name, lp_workgroup())) {
+		
+		if ( (IS_DC || lp_winbind_trusted_domains_only())
+			&& strequal(domain->name, lp_workgroup()) )
+		{
 			continue;
 		}
-
+						
 		/* Create a state record for this domain */
-
-		domain_state = SMB_MALLOC_P(struct getent_state);
-		if (!domain_state) {
+                
+		if ((domain_state = SMB_MALLOC_P(struct getent_state)) == NULL) {
 			DEBUG(0, ("malloc failed\n"));
 			return False;
 		}
-
+                
 		ZERO_STRUCTP(domain_state);
 
 		fstrcpy(domain_state->domain_name, domain->name);
 
 		/* Add to list of open domains */
-
+                
 		DLIST_ADD(state->getpwent_state, domain_state);
 	}
-
+        
 	state->getpwent_initialized = True;
 	return True;
 }
@@ -621,7 +558,7 @@
 {
 	DEBUG(3, ("[%5lu]: endpwent\n", (unsigned long)state->pid));
 
-	free_getent_state(state->getpwent_state);
+	free_getent_state(state->getpwent_state);    
 	state->getpwent_initialized = False;
 	state->getpwent_state = NULL;
 	request_ok(state);
@@ -657,23 +594,23 @@
 
 	SAFE_FREE(ent->sam_entries);
 	ent->num_sam_entries = 0;
-
+	
 	/* Call query_user_list to get a list of usernames and user rids */
 
 	num_entries = 0;
 
-	status = methods->query_user_list(domain, mem_ctx, &num_entries, &info);
-
+	status = methods->query_user_list(domain, mem_ctx, &num_entries, 
+					  &info);
+		
 	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(10,("get_sam_user_entries: "
-			  "query_user_list failed with %s\n",
-			  nt_errstr(status)));
+		DEBUG(10,("get_sam_user_entries: query_user_list failed with %s\n",
+			nt_errstr(status) ));
 		return False;
 	}
 
 	if (num_entries) {
-		name_list = SMB_REALLOC_ARRAY(name_list, struct getpwent_user,
-					    ent->num_sam_entries + num_entries);
+		name_list = SMB_REALLOC_ARRAY(name_list, struct getpwent_user, ent->num_sam_entries + num_entries);
+		
 		if (!name_list) {
 			DEBUG(0,("get_sam_user_entries realloc failed.\n"));
 			return False;
@@ -685,40 +622,40 @@
 		if (!info[i].acct_name) {
 			fstrcpy(name_list[ent->num_sam_entries + i].name, "");
 		} else {
-			fstrcpy(name_list[ent->num_sam_entries + i].name,
-				info[i].acct_name);
+			fstrcpy(name_list[ent->num_sam_entries + i].name, 
+				info[i].acct_name); 
 		}
 		if (!info[i].full_name) {
 			fstrcpy(name_list[ent->num_sam_entries + i].gecos, "");
 		} else {
-			fstrcpy(name_list[ent->num_sam_entries + i].gecos,
-				info[i].full_name);
+			fstrcpy(name_list[ent->num_sam_entries + i].gecos, 
+				info[i].full_name); 
 		}
 		if (!info[i].homedir) {
-			fstrcpy(name_list[ent->num_sam_entries + i].homedir,"");
+			fstrcpy(name_list[ent->num_sam_entries + i].homedir, "");
 		} else {
-			fstrcpy(name_list[ent->num_sam_entries + i].homedir,
-				info[i].homedir);
+			fstrcpy(name_list[ent->num_sam_entries + i].homedir, 
+				info[i].homedir); 
 		}
 		if (!info[i].shell) {
 			fstrcpy(name_list[ent->num_sam_entries + i].shell, "");
 		} else {
-			fstrcpy(name_list[ent->num_sam_entries + i].shell,
-				info[i].shell);
+			fstrcpy(name_list[ent->num_sam_entries + i].shell, 
+				info[i].shell); 
 		}
-
-
+	
+	
 		/* User and group ids */
 		sid_copy(&name_list[ent->num_sam_entries+i].user_sid,
 			 &info[i].user_sid);
 		sid_copy(&name_list[ent->num_sam_entries+i].group_sid,
 			 &info[i].group_sid);
 	}
-
+		
 	ent->num_sam_entries += num_entries;
-
+	
 	/* Fill in remaining fields */
-
+	
 	ent->sam_entries = name_list;
 	ent->sam_entry_index = 0;
 	return ent->num_sam_entries > 0;
@@ -751,20 +688,20 @@
 		request_error(state);
 		return;
 	}
-
-	user_list = SMB_MALLOC_ARRAY(struct winbindd_pw, num_users);
-	if (!user_list) {
+	
+	if ((state->response.extra_data.data = SMB_MALLOC_ARRAY(struct winbindd_pw, num_users)) == NULL) {
 		request_error(state);
 		return;
 	}
-	/* will be freed by process_request() */
-	state->response.extra_data.data = user_list;
 
-	memset(user_list, 0, num_users * sizeof(struct winbindd_pw));
+	memset(state->response.extra_data.data, 0, num_users * 
+	       sizeof(struct winbindd_pw));
 
+	user_list = (struct winbindd_pw *)state->response.extra_data.data;
+
 	if (!state->getpwent_initialized)
 		winbindd_setpwent_internal(state);
-
+	
 	if (!(ent = state->getpwent_state)) {
 		request_error(state);
 		return;
@@ -794,20 +731,19 @@
 				SAFE_FREE(ent);
 				ent = next_ent;
 			}
-
+ 
 			/* No more domains */
 
-			if (!ent)
+			if (!ent) 
 				break;
 		}
 
 		name_list = (struct getpwent_user *)ent->sam_entries;
 
 		/* Lookup user info */
-
+		
 		result = winbindd_fill_pwent(
-			state->mem_ctx,
-			ent->domain_name,
+			ent->domain_name, 
 			name_list[ent->sam_entry_index].name,
 			&name_list[ent->sam_entry_index].user_sid,
 			&name_list[ent->sam_entry_index].group_sid,
@@ -815,21 +751,22 @@
 			name_list[ent->sam_entry_index].homedir,
 			name_list[ent->sam_entry_index].shell,
 			&user_list[user_list_ndx]);
-
+		
 		/* Add user to return list */
-
+		
 		if (result) {
-
+				
 			user_list_ndx++;
 			state->response.data.num_entries++;
-			state->response.length += sizeof(struct winbindd_pw);
+			state->response.length += 
+				sizeof(struct winbindd_pw);
 
 		} else
 			DEBUG(1, ("could not lookup domain user %s\n",
 				  name_list[ent->sam_entry_index].name));
 
 		ent->sam_entry_index++;
-
+		
 	}
 
 	/* Out of domains */

Modified: branches/samba/upstream/source/winbindd/winbindd_util.c
===================================================================
--- branches/samba/upstream/source/winbindd/winbindd_util.c	2008-10-31 23:49:02 UTC (rev 2199)
+++ branches/samba/upstream/source/winbindd/winbindd_util.c	2008-11-01 11:09:46 UTC (rev 2200)
@@ -109,18 +109,7 @@
 {
 	struct winbindd_domain *domain;
 	const char *alternative_name = NULL;
-	char *idmap_config_option;
-	const char *param;
-	const char **ignored_domains, **dom;
 	
-	ignored_domains = lp_parm_string_list(-1, "winbind", "ignore domains", NULL);
-	for (dom=ignored_domains; dom && *dom; dom++) {
-		if (gen_fnmatch(*dom, domain_name) == 0) {
-			DEBUG(2,("Ignoring domain '%s'\n", domain_name));
-			return NULL;
-		}
-	}
-
 	/* ignore alt_name if we are not in an AD domain */
 	
 	if ( (lp_security() == SEC_ADS) && alt_name && *alt_name) {
@@ -189,47 +178,15 @@
 	domain->initialized = False;
 	domain->online = is_internal_domain(sid);
 	domain->check_online_timeout = 0;
-	domain->dc_probe_pid = (pid_t)-1;
 	if (sid) {
 		sid_copy(&domain->sid, sid);
 	}
-
+	
 	/* Link to domain list */
 	DLIST_ADD_END(_domain_list, domain, struct winbindd_domain *);
         
 	wcache_tdc_add_domain( domain );
         
-	idmap_config_option = talloc_asprintf(talloc_tos(), "idmap config %s",
-					      domain->name);
-	if (idmap_config_option == NULL) {
-		DEBUG(0, ("talloc failed, not looking for idmap config\n"));
-		goto done;
-	}
-
-	param = lp_parm_const_string(-1, idmap_config_option, "range", NULL);
-
-	DEBUG(10, ("%s : range = %s\n", idmap_config_option,
-		   param ? param : "not defined"));
-
-	if (param != NULL) {
-		unsigned low_id, high_id;
-		if (sscanf(param, "%u - %u", &low_id, &high_id) != 2) {
-			DEBUG(1, ("invalid range syntax in %s: %s\n",
-				  idmap_config_option, param));
-			goto done;
-		}
-		if (low_id > high_id) {
-			DEBUG(1, ("invalid range in %s: %s\n",
-				  idmap_config_option, param));
-			goto done;
-		}
-		domain->have_idmap_config = true;
-		domain->id_range_low = low_id;
-		domain->id_range_high = high_id;
-	}
-
-done:
-
 	DEBUG(2,("Added domain %s %s %s\n", 
 		 domain->name, domain->alt_name,
 		 &domain->sid?sid_string_dbg(&domain->sid):""));
@@ -445,10 +402,6 @@
 						&dom_list[i].sid );
 		}
 
-		if (d == NULL) {
-			continue;
-		}
-
        		DEBUG(10,("rescan_forest_root_trusts: Following trust path "
 			  "for domain tree root %s (%s)\n",
 	       		  d->name, d->alt_name ));
@@ -513,10 +466,6 @@
 							&cache_methods,
 							&dom_list[i].sid );
 			}
-
-			if (d == NULL) {
-				continue;
-			}
 			
 			DEBUG(10,("Following trust path for domain %s (%s)\n",
 				  d->name, d->alt_name ));
@@ -1075,12 +1024,13 @@
 	temp = state;
 
 	while(temp != NULL) {
-		struct getent_state *next = temp->next;
+		struct getent_state *next;
 
 		/* Free sam entries then list entry */
 
 		SAFE_FREE(state->sam_entries);
 		DLIST_REMOVE(state, state);
+		next = temp->next;
 
 		SAFE_FREE(temp);
 		temp = next;
@@ -1394,107 +1344,34 @@
  We use this to remove spaces from user and group names
 ********************************************************************/
 
-NTSTATUS normalize_name_map(TALLOC_CTX *mem_ctx,
-			     struct winbindd_domain *domain,
-			     char *name,
-			     char **normalized)
+void ws_name_replace( char *name, char replace )
 {
-	NTSTATUS nt_status;
+	char replace_char[2] = { 0x0, 0x0 };
+    
+	if ( !lp_winbind_normalize_names() || (replace == '\0') ) 
+		return;
 
-	if (!name || !normalized) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
+	replace_char[0] = replace;	
+	all_string_sub( name, " ", replace_char, 0 );
 
-	if (!lp_winbind_normalize_names()) {
-		return NT_STATUS_PROCEDURE_NOT_FOUND;
-	}
-
-	/* Alias support and whitespace replacement are mutually
-	   exclusive */
-
-	nt_status = resolve_username_to_alias(mem_ctx, domain,
-					      name, normalized );
-	if (NT_STATUS_IS_OK(nt_status)) {
-		/* special return code to let the caller know we
-		   mapped to an alias */
-		return NT_STATUS_FILE_RENAMED;
-	}
-
-	/* check for an unreachable domain */
-
-	if (NT_STATUS_EQUAL(nt_status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND)) {
-		DEBUG(5,("normalize_name_map: Setting domain %s offline\n",
-			 domain->name));
-		set_domain_offline(domain);
-		return nt_status;
-	}
-
-	/* deal with whitespace */
-
-	*normalized = talloc_strdup(mem_ctx, name);
-	if (!(*normalized)) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	all_string_sub( *normalized, " ", "_", 0 );
-
-	return NT_STATUS_OK;
+	return;	
 }
 
 /*********************************************************************
- We use this to do the inverse of normalize_name_map()
+ We use this to do the inverse of ws_name_replace()
 ********************************************************************/
 
-NTSTATUS normalize_name_unmap(TALLOC_CTX *mem_ctx,
-			      char *name,
-			      char **normalized)
+void ws_name_return( char *name, char replace )
 {
-	NTSTATUS nt_status;
-	struct winbindd_domain *domain = find_our_domain();
-
-	if (!name || !normalized) {
-		return NT_STATUS_INVALID_PARAMETER;
-	}
+	char replace_char[2] = { 0x0, 0x0 };
+    
+	if ( !lp_winbind_normalize_names() || (replace == '\0') ) 
+		return;
 	
-	if (!lp_winbind_normalize_names()) {
-		return NT_STATUS_PROCEDURE_NOT_FOUND;
-	}
+	replace_char[0] = replace;	
+	all_string_sub( name, replace_char, " ", 0 );
 
-	/* Alias support and whitespace replacement are mutally
-	   exclusive */
-
-	/* When mapping from an alias to a username, we don't know the
-	   domain.  But we only need a domain structure to cache
-	   a successful lookup , so just our own domain structure for
-	   the seqnum. */
-
-	nt_status = resolve_alias_to_username(mem_ctx, domain,
-					      name, normalized);
-	if (NT_STATUS_IS_OK(nt_status)) {
-		/* Special return code to let the caller know we mapped
-		   from an alias */
-		return NT_STATUS_FILE_RENAMED;
-	}
-
-	/* check for an unreachable domain */
-
-	if (NT_STATUS_EQUAL(nt_status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND)) {
-		DEBUG(5,("normalize_name_unmap: Setting domain %s offline\n",
-			 domain->name));
-		set_domain_offline(domain);
-		return nt_status;
-	}
-
-	/* deal with whitespace */
-
-	*normalized = talloc_strdup(mem_ctx, name);
-	if (!(*normalized)) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	all_string_sub(*normalized, "_", " ", 0);
-
-	return NT_STATUS_OK;
+	return;	
 }
 
 /*********************************************************************
@@ -1658,15 +1535,3 @@
 }
 
 #endif /* HAVE_KRB5_LOCATE_PLUGIN_H */
-
-void set_auth_errors(struct winbindd_response *resp, NTSTATUS result)
-{
-	resp->data.auth.nt_status = NT_STATUS_V(result);
-	fstrcpy(resp->data.auth.nt_status_string, nt_errstr(result));
-
-	/* we might have given a more useful error above */
-	if (*resp->data.auth.error_string == '\0')
-		fstrcpy(resp->data.auth.error_string,
-			get_friendly_nt_error_msg(result));
-	resp->data.auth.pam_error = nt_status_to_pam(result);
-}




More information about the Pkg-samba-maint mailing list